Hallo Accenter,
dein Code ist nur sehr schwer zu lesen, weil keine Einrückungen drin sind.
Warum hast du die abgeschaltet? Dein Code wird auch leichter lesbar, wenn du bestimmte Blöcke wie Config, Dims, Konstanten und Alias usw. zusammenhältst. Versetze dich mal in unsere Situation. Wir kennen den Code nicht und so ist es zeitraubend, ihn richtig zu verstehen. Ich war schon kurz davor, einfach rauszugehen und nicht zu antworten.

In deiner Serial1CharMatch Routine machst du gleich zu Anfang ein Pushall und dann mittendrin ein Popall. Wieso steht das nicht am Ende der Sub?
Da diese Routine kein Interrupt ist, kann sie jederzeit von Interrupts unterbrochen werden. Den Int1 hast du ja disabled, aber die Timer Ints unterbrechen trotzdem. Speziell, wo du so lange Wartezeiten drin hast.