How can I control when data is incoming? I have a pcb with Max232 and it sends/receive data, this is a portion of the code:

Code:
'Waits 200ms until 129 is received, then store next byte in I, if timeout jump to M2
           SERIN SERIAL_IN,BPS,200,M2,[129],I
This works ok but I loose 200ms waiting for data and that PCB needs to control more things, so it becomes slooooooooow. If I change it to 100ms it loose commands, if I use 500ms it works perfect, but then the rest of the code has no time to do its job.

I can't use interrupts because the PCB uses PORTB.7 for SERIAL_IN.

I've tried a "stupid way" (and obviosly it does not works):

Code:
     if SERIAL_IN=0 then       'something is changin in the RX PORT
'Waits 200ms until 129 is received, then store next byte in I, if timeout jump to M2
           SERIN SERIAL_IN,BPS,200,M2,[129],I
    endif
but the data received usually is corrupted. Then I've tried to repeat the commands from the PC (129-22-129-22) but also does not works ok.

Any idea of how can I make this works better?

Regards