INT 09h (9)              Keyboard

The keyboard generates an INT 9 every time a key is pushed or
released.

Notes:         This is a hardware interrupt (IRQ 1) activated by
the make or break of every keystroke.

The default INT 9 handler in the ROM reads the make and break scan
codes from the keyboard and converts them into actions or key codes as
follows:

    For ASCII keys, when a make code is encountered, the ASCII code
and the scan code for the key are placed in the 32-byte keyboard
buffer, which is located at 0:41Eh. The ASCII code and scan code
are placed in the buffer at the location addressed by the
Keyboard Buffer Tail Pointer (0:041Ch). The Keyboard Buffer Tail
Pointer is then incremented by 2, and if it points past the end
of the buffer, it is adjusted so that it points to the beginning
of the buffer.

    If Ctrl, Alt, or Shift has been pressed, the Shift Status
(0:0417h) and Extended Shift Status (0:0418h) bytes are updated.

    If the Ctrl-Alt-Del combination has been pressed, the Reset
Flag (0:0472h) is set to 1234h and control is given to the
power-on self test (POST). Because the Reset Flag is 1234h, the
POST routine bypasses the memory test.

    If the Pause key sequence has been entered, this interrupt
enters an indefinite loop. The loop is broken as soon as a valid
ASCII keystroke is entered. (The PC Convertible issues an INT
15h, Service 41h (Wait on External Event), to execute its pause
loop.)

    If the Print Screen key sequence is entered, an INT 05h (Print
Screen) is executed.

    If the Control-Break key sequence is entered, an INT 1Bh
(Control-Break) is executed.

    For XTs dated 1/10/86 and after, ATs, XT-286s, and PC
Convertibles, the INT 9h handler generates an INT 15h, function
91h (Interrupt Complete) to signal that a keystroke is
available. Also, on these machines, a make or break of the Sys
Req key generates an INT 15h, function 85h (System Request Key
Pressed).

    For ATs dated 6/10/85 and after, XT-286s, and PC Convertibles,
an INT 15h, function 4Fh (Keyboard Intercept) is executed after
the scan code has been read from the keyboard port (60h). This
allows the user to redefine or remove a keystroke.

INT 16 provides a standard way to read characters from the keyboard
buffer that have been placed there by the INT 9 handler in ROM.

See also: INT 16h, 00h
See also: INT 1Bh
See also: 0:417h
See also: 0:41Eh
See also: Scan Codes

INT 09h (9) Keyboard