Hi Andy,

Looking at the original code I think at least one problem is the presense of the PAUSE in main routine.

When using ON INTERRUPT the interrupt flag is checked in between each PBP statement. If characters start to come in while the PIC is exectuing a PAUSE 150 satements you're going to flood the USART buffer since the interrupt isn't serviced untill after the PAUSE 150 finishes.

Same thing with the LCDOUT and PAUSE statements and in the master. They takes some time to execute and the interrupt flag is checked ONLY in between each statement so if the slave starts responding while the master is in the middle of printing to the LCD or executing a PAUSE the slave is going to flood the buffer of the master.

That's the downside of ON INTERRUPT.

/Henrik.