tergav17 / IshkurCPM

An open source, modular CP/M distribution for the NABU computer
GNU General Public License v3.0
23 stars 3 forks source link

Spontaneous line feeds #14

Open snhirsch opened 1 year ago

snhirsch commented 1 year ago

At first I thought this was my imagination, but it's really happening. At intervals the CP/M screen shifts upward by 2 or 3 lines, leaving prompts and a solid, static cursor on those lines. The real prompt and cursor appears below and the system is still functional. When it happened a few minutes ago it coincided with communications activity on the RS422 link. The end result looks like (# = cursor block):

A0>#  < - solid
A0># <- solid
A0>
A0># <- flashing
tergav17 commented 1 year ago

This is caused by the interrupt hardware of the physical NABU behaving strangely under certain circumstances. For whatever reason, there are edge cases where the interrupt vector circuitry behaves slightly differently on real hardware versus what the documentation and emulator says. One of the results of this is sporadic corruption on the terminal emulator / crashes during long prints.

I thought I got it fixed yesterday, but I was wrong. Turns out the issue is a lot more subtle than I was expecting. Something about changing the interrupt mask through the AY-3-8910 generates "ghost" interrupts with undefined IM2 vectors. The solution I am going with right now involves temporarily changing to IM1 while updating the interrupt mask, which is able to catch any of these "ghost" interrupts. So far I haven't ran into any more bizarre terminal behavior (yet)...

Thank you for all the bugs you have been pointing out to me btw. You have been a great help over the last couple of days.

snhirsch commented 1 year ago

You are welcome! I am very, very good at breaking things. Don't know if that's fortunate or unfortunate. The folks over on the Tandy Troubleshooting Discord gave me an avatar with the motto: "You only thought it was unbreakable".