Hi Les,
I agree, we need to see something he writes. I did not go through your code very carefully but did notice absence of context saving. Of course, your display routine did not check on STATUS (as far as I could tell), but your routine did use w. Since display routines are usually quite slow relative to other parts of the code, it seemed to me that an interrupt would occasionally hit that routine. That is why I suggested at least saving w and restoring it upon exit from the interrupt.
John