If I use HSEROUT near the end of a program, and follow it closely with an "END" statement, the output gets truncated. Sometimes it doesn't display at all.

Since the USART only contains two possible bytes - one in the TXReg and one in the send buffer, I would think that at most two bytes would be "chopped off". But instead, sometimes whole lines fail to display. Does anyone know why this happens?

Another HSEROUT issue (possibly related): When I have a timer interrupt running
(a pure assembler routine) and an interrupt occurs, it crashes the HSEROUT string. In the ISR, I save and restore STATUS,W,BSR and FSR. All the other changed variables are local. Is there some software timing loop hidden within the HSEROUT routine, or is something else going on? Are there other registers that I should save and restore?