Interrupt 09h Keyboard (0:0024h) Taken whenever a key is pressed or released. This is normally a scan IRQ1 code, but may also be an ACK or NAK of a command on AT-type keyboards. Stores characters/scan-codes in status at [0040:0017,18] (internal) math unit protection fault (80286 protected mode) entry AH 09h return at absolute memory addresses: 40:17 bit BIOS\Address -40:17 0 right shift key depressed 1 left shift key depressed 2 control key depressed 3 alt key depressed 4 ScrollLock state has been toggled 5 NumLock state has been toggled 6 CapsLock state has been toggled 7 insert state is active Interrupt 09h Keyboard return at absolute memory addresses: 40:18 bit BIOS\Address -40:18 0 left control key depressed 1 left alt key depressed 2 SysReq key depressed 3 Pause key has been toggled 4 ScrollLock key is depressed 5 NumLock key is depressed 6 CapsLock key is depressed 7 Insert key is depressed 40:96 bit BIOS\Address -40:96 0 last code was the E1h hidden code 1 last code was the E0h hidden code 2 right control key down 3 right alt key down 4 101 key Enhanced keyboard installed 5 force NumLock if rd ID & kbx 6 last character was first ID character 7 doing a read ID (must be bit 0) Interrupt 09h Keyboard return at absolute memory addresses: 40:97 bit BIOS\Address -40:97 0 ScrollLock indicator 1 NumLock indicator 2 CapsLock indicator 3 circus system indicator 4 ACK received 5 resend received flag 6 mode indicator update 7 keyboard transmit error flag 40:1E keyboard buffer (20h bytes) BIOS\Address -40:1E 40:1C buffer tail pointer BIOS\Address -40:1C 40:72 1234h if ctrl-alt-del pressed BIOS\Address -40:72 AL scan code note 1) Int\05 invoked if PrtSc key pressed 2) Int\1B invoked if Ctrl-Break key sequence pressed 3) Int\15f\85 invoked on AT and after if SysReq key is pressed 4) Int\15f\4F invoked on machines after AT 5) Int\16, BIOS keyboard functions, uses this interrupt. 6 Sample BIOS listing Int\09.ASM