[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]

    { > how do I get the f11 and f12 keys? }

    Program ReadF11F12Keys;
    { Written by Andrew Eigus of 2:5100/33@fidonet.org }
    { SWAG donation... }

    const
      F11 = #$85;
      F12 = #$86;

    Function ReadKey : char; assembler;
    Asm
      mov ah,08h
      int 21h
    End; { ReadKey }

    var
      Ch : char;
      Extended : boolean;

    Begin
      Write('Press F11 or F12 to quit... ');
      repeat
        Ch := ReadKey;
        if Ch = #0 then
        begin
          Extended := True;
          Ch := ReadKey
        end else Extended := False;
      until (Ch in [F11,F12]) and Extended;
      WriteLn('Done.')
    End.
    {
    > ALSO!  What is bit 8 in that address?

    Two bytes at address 0:0417 and 0:0418 identify the status of the keyboard
    shift keys and keyboard toggles.  INT 16H returns the first byte in AL.

    ÖÄ7ÂÄ6ÂÄ5ÂÄ4ÂÄ3ÂÄ2ÂÄ1ÂÄ0·     Perform INT 16H Fn 02H
    ºI ³C ³N ³S ³a ³c ³sL³sRº     or fetch AL=byte at 0:0417
    ÓÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒ½ bit
      º  º  º  º  º  º  º  ÈÍ 0: alpha-shift (right side) DOWN (AL & 01H)
      º  º  º  º  º  º  ÈÍÍÍÍ 1: alpha-shift (left side) DOWN  (AL & 02H)
      º  º  º  º  º  ÈÍÍÍÍÍÍÍ 2: Ctrl-shift (either side) DOWN (AL & 04H)
      º  º  º  º  ÈÍÍÍÍÍÍÍÍÍÍ 3: Alt-shift  (either side) DOWN (AL & 08H)
      º  º  º  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍ 4: ScrollLock state              (AL & 10H)
      º  º  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 5: NumLock state                 (AL & 20H)
      º  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 6: CapsLock state                (AL & 40H)
      ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 7: Insert state                  (AL & 80H)

    ÖÄ7ÂÄ6ÂÄ5ÂÄ4ÂÄ3ÂÄ2ÂÄ1ÂÄ0·
    ºi ³c ³n ³s ³  ³sy³aL³cLº    fetch AL=byte at 0:0418
    ÓÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒ½ bit
      º  º  º  º  º  º  º  ÈÍ 0: Ctrl-shift (left side) DOWN (AL & 01H)
      º  º  º  º  º  º  ÈÍÍÍÍ 1: Alt-shift (left side) DOWN  (AL & 02H)
      º  º  º  º  º  ÈÍÍÍÍÍÍÍ 2: SysReq DOWN                 (AL & 04H)
      º  º  º  º  ÈÍÍÍÍÍÍÍÍÍÍ 3: hold/pause state            (AL & 08H)
      º  º  º  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍ 4: ScrollLock DOWN             (AL & 10H)
      º  º  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 5: NumLock DOWN                (AL & 20H)
      º  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 6: CapsLock DOWN               (AL & 40H)
      ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 7: Insert DOWN                 (AL & 80H)

    Notes: Bits 0-2 of 0:0418 are defined only for the 101-key enhanced keyboard.

           The 101-key BIOS INT 16H Fn 12H returns AL as with Fn 02, but AH is
           returned with the following bit-flag layout:

           ÖÄ7ÂÄ6ÂÄ5ÂÄ4ÂÄ3ÂÄ2ÂÄ1ÂÄ0·
           ºsy³c ³n ³s ³aR³cR³aL³cLº    Perform INT 16H Fn 12H (101-key BIOS only)
           ÓÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒÁÄÒ½ bit
             º  º  º  º  º  º  º  ÈÍ 0: Ctrl-shift (left side) DOWN  (AH & 01H)
             º  º  º  º  º  º  ÈÍÍÍÍ 1: Alt-shift (left side) DOWN   (AH & 02H)
             º  º  º  º  º  ÈÍÍÍÍÍÍÍ 2: Ctrl-shift (right side) DOWN (AH & 04H)
             º  º  º  º  ÈÍÍÍÍÍÍÍÍÍÍ 3: Alt-shift (right side) DOWN  (AH & 08H)
             º  º  º  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍ 4: ScrollLock DOWN              (AH & 10H)
             º  º  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 5: NumLock DOWN                 (AH & 20H)
             º  ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 6: CapsLock DOWN                (AH & 40H)
             ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 7: SysReq DOWN                  (AH & 80H)

           Some older programs change the values of NumLock and CapsLock state
           bits (at 0:0417) to force a known status.  This is unwise because
           modern keyboards have indicator lights which will get out of sync with
           the status. See AT Keyboard for more information on the lock-key LEDs.

           PCjr status bytes at 0:0488 are omitted for lack of interest [mineÄDR].
    }

[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]