I'm monitoring two lots of serial data using a 8mhz 16F886

The first lot 9600,8,N,1 is sent automatically by an external device and by using the USART and DT interrupt driven buffer I can capture that data and send it out of the USART again nicely. This must continue in the background and it works well.

Now I have some other 10400,8,N,1 serial data on another line coming into a normal pin so I'm limited to the serin/serin2/debugin commands. This data only appears on the line in response to a command I send out.

I can send the command using serout2 and a for/next loop to send the packet byte by byte disabling the interrupt whilst each byte is sent, and servicing the interrupt between bytes. That works fine and the main data is still OK.

Now I have tried recieving the response packet using serin2 and a for next loop and disabling the interrupt response whilst each byte arrives. But as i service the interrupt inbetween bytes the data is arriving too fast for the serin2 to keep up and after about two bytes it is corrupted as you can see the bits getting further to the left.

There isnt much time between the incoming bytes for this new data and if i don't service the background interrupt for the other data between bytes then the usart overflows. Hmm?

I can't crank up the clock speed on the 16F886 as it running on the int clock on a pcb

I could substitue a 18F2620 which i have tried but I haven't got the clock speed/usart settings or anything right with that :?
It worked at 8mhz but not at 32mhz.
I did set the osc define to 32.

Just after general brilliant ideas.

I did try debug in that was fractionally better but corrupt after three bytes instead of two.