Your intimate knowledge the machine machine betrays a deep, but
forbidden love for it. ;-)
Tony Duell wrote:
shortcoming that I should have mentioned was having the
keyboard using the NMI interrupt instead of IRQ1. I forget the exact
reason for this, but it resulted in a lot of lost keystrokes an annoying
There was a reasonable reason for this.
The PC keyboard is farily hardware-intensive. The keyboard sends a serial
data stream that goes into a shfit register on the PC mainboard. When a
character has been received (IIRC), ther hardware generates an IRQ1 and
holds the keyboard clock line, preventing the keyboard from sending
another character until the first one has been read by the 8088
The PCjr keyboard is software-intensive. Whether you use the IR link or
the cable, the serial data stream is decoded by the 8088, there is no
shift register on the PCjr mainboard. Also, in the PCjr, there's no way
to tell the keyboard to stop sending because the main processor hasn't
read the character yet.
Therefore in the PCjr, you need a high-priorty interrupt (i.e, NMI) which
is generated when the keyboard sends a bit, The 8088 takes over then,
reads in the character from the keyboard and processes it. Otherwise
you'd loose or mangle an awful lot of keypresses.