home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 June
/
SIMTEL_0692.cdr
/
msdos
/
keyboard
/
enhanced.arc
/
ENHANCED.DOC
< prev
Wrap
Text File
|
1988-03-24
|
6KB
|
102 lines
TITLE ENHANCED.ASM (24 March 1988 - Rufus S. Hendon)
;=============================================================================
; ENHANCED.ASM is adapted from the procedure called NewInt16 in ENHKBD.ASM
; Version 1.2 (2/23/88), written by Tim Kokkonen (with help from Brian Foley).
; ENHKBD is part of a Turbo Pascal 4.0 unit that makes it possible for Turbo
; Pascal programs to turn the enhanced keyboard on for the duration of the
; program, restoring the standard keyboard when the program terminates.
; ENHANCED, on the other hand, is independent of Turbo Pascal, and the .COM
; file produced from it is meant to be invoked from AUTOEXEC.BAT in order to
; make a permanent switch to the enhanced keyboard. Like ENHKBD.ASM,
; ENHANCED.ASM is released to the public domain.
;=============================================================================
; This is a terminate-and-stay-resident replacement for the handler for type
; 16H interrupts. It activates the enhanced keyboard as implemented by the
; Phoenix 80286 ROM BIOS Version 3.02 used in the AST Premium/286 computer.
;
; Among other reasons for activating the enhanced keyboard is the fact that
; the enhanced keyboard processes ALT-224 correctly, generating the code for
; the ordinary character alpha (code 224 = E0H). The standard keyboard as
; implemented by the Phoenix BIOS incorrectly generates a null character
; (character code and scan code both = 00H) when ALT-224 is typed.
;
; The new handler for type 16H interrupts does two things: (1) It changes
; functions 00H and 01H (in AH) to 10H and 11H respectively, which are the
; enhanced-keyboard functions. It then calls the original handler. (2) Upon
; return from the original handler, a check is made for cases in which an
; extended code (in AH) is paired with "character" code E0H (in AL) instead
; of 00H. Such codes are generated for the keys that are specific to the
; enhanced keyboard, such as the cursor-movement keys that are separate from
; the numeric keypad. To prevent these from being interpreted by application
; programs as the ordinary character with the code E0H (224), the E0H is
; replaced by 00H before return is made to the interrupter.
;=============================================================================
; The following table summarizes the keys which are affected by using this
; unit. The entries are the values of the scan word in hex. The high byte of
; the scan word is the scan code, the low byte the ASCII character. See
; Notes, following the table, for the key to special symbols. [Kokkonen's
; table has been modified to reflect the operation of NewInt16 with the
; enhanced-keyboard implementation in the Phoenix 80286 ROM BIOS Version 3.02,
; without the replacement for interrupt 9H included in his ENHKBD.ASM.]
;
; Plain Shift Control Alt
; ----- ----- ------- ----
; F11 8500% 8700% 8900% 8B00%
; F12 8600% 8800% 8A00% 8C00%
; Esc 011B 011B 011B 0100*
; Backquote 2960 297E - 2900*
; Backspace 0E08 0E08 0E7F 0E00*
; Tab 0F09 0F00 9400* A500*
; Left Brack 1A5B 1A7B 1A1B 1A00*
; Right Brack 1B5D 1B7D 1B1D 1B00*
; Backslash 2B5C 2B7C 2B1C 2B00*
; Semicolon 273B 273A - 2700*
; Quote 2827 2822 - 2800*
; Enter 1C0D 1C0D 1C0A 1C00*
; Comma 332C 333C - 3300*
; Period 342E 343E - 3400*
; Slash 352F 353F - 3500*
;-------------------------------------------------
; Numeric keypad keys:
; Insert 5200 5230 9200* -
; Del 5300 532E 9300* -
; Home 4700 4737 7700 -
; End 4F00 4F31 7500 -
; PgUp 4900 4939 8400 -
; PgDn 5100 5133 7600 -
; Up 4800 4838 8D00* -
; Down 5000 5032 9100* -
; Left 4B00 4B34 7300 -
; Right 4D00 4D36 7400 -
; Pad-Asterisk 372A ! ! 3700
; Pad-Minus 4A2D 4A2D 8E00* 4A00
; Pad-Plus 4E2B 4E2B 9000* 4E00
; Pad-5 4C00* 4C35 8F00* -
;-------------------------------------------------
; Separate cursor-movement keys:
; Insert 5200 5200 9200* A200*
; Del 5300 5300 9300* A300*
; Home 4700 4700 7700 9700*
; End 4F00 4F00 7500 9F00*
; PgUp 4900 4900 8400 9900*
; PgDn 5100 5100 7600 A100*
; Up 4800 4800 8D00* 9800*
; Down 5000 5000 9100* A000*
; Left 4B00 4B00 7300 9B00*
; Right 4D00 4D00 7400 9D00*
;
; Notes:
; - These keystrokes are ignored.
; * These keystrokes are not normally returned by the non-enhanced keyboard.
; ! These keystrokes control printscreen and print echoing. They cannot
; simulate the effect of the enhanced keyboard, which has the Asterisk and
; PrtSc keys separated.
; % The F11 and F12 keys are returned only if they actually exist on the
; keyboard.
;
; With a few exceptions, NewInt16 returns results identical to those of the
; enhanced keyboard BIOS. One difference makes the enhanced keyboard simpler
; to use in a program: those scan words which normally contain E0 in the low
; byte to indicate that the key is specific to the enhanced keyboard (like the
; dedicated cursor keys) will have the low cleared to zero by NewInt16.