Dem "Ischarwaiting" entspricht dieser Vergleich:
If Rdpnt = Wrpnt Then ..

Das interrupt-disablen ist, weil bei eine 2-byte vergleich ein Durcheinander rauskommen kann. Aber ich glaub, das wußtest du eh.

Btw: Wenn deine Frames ein definiertes Ende haben, würde ich den Check, ob das Frame komplett ist, in die ISR legen und dann einen speziellen Flag für das HauptProgramm setzen. Das wäre effizienter