INT 09H: Keyboard Interrupt

 This hardware-generated interrupt (IRQ 1) is executed upon each press and
 release of a key.  The ROM-BIOS code interprets the keystroke, storing
 values into the keyboard buffer at 0040:001e.  It also handles the special
 cases of the PrtSc, SysReq, Ctrl+Alt+Del, Ctrl+NumLock (or Pause) keys,
 and tracks the status of the shift and case-lock keys.

 See:  INT 16H  ......... BIOS service to access keys stored in the buffer
                          and obtain status of the certain shift keys.
       Scan Codes ....... a list of the values of each possible keystroke
                          as it is received by INT 09H.
       ASCII Table
       Extended ASCII ... a summary of the values that BIOS stores into the
                          keyboard buffer after it translates a scan code.
       Keyboard Flags ... a summary of how to obtain, test for, and modify
                          the bit-settings of shift and case-lock flags.

 TSRs that have a hot-key to trigger a popup usually intercept INT 09H and
 test for a certain key with a sequence such as this:

         push    ax
         in      al,60H             ;read the key
         cmp     al,POP_KEY         ;is this the hot key?
         je      do_pop             ; yes, trigger the popup
                                    ;  no, drop through to original driver
         pop     ax
         jmp     cs:[int9_vect]     ;just hop out to original int handler

 do_pop: ;------ following housekeeping is needed to satisfy the hdwr int

         in      al,61H             ;get value of keyboard control lines
         mov     ah,al              ; save it
         or      al,80h             ;set the "enable kbd" bit
         out     61H,al             ; and write it out the control port
         xchg    ah,al              ;fetch the original control port value
         out     61H,al             ; and write it back

         mov     al,20H             ;send End-Of-Interrupt signal
         out     20H,al             ; to the 8259 Interrupt Controller
         ;------ other code handles other tests and finally triggers popup

Ř›CPU Exception InterruptřŘ
  286+ computer execute INT 09H when the math coprocessor encounters an
  Segment Overrun exception.

See Also: IRQs: Hardware Interrupts
          TSR Functions
          BIOS Data Area
          I/O Port Map
          ROM-BIOS Functions
          DOS Functions
                                    -*-