home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 June / SIMTEL_0692.cdr / msdos / keyboard / enhanced.arc / ENHANCED.DOC < prev   
Text File  |  1988-03-24  |  6KB  |  102 lines

  1.            TITLE ENHANCED.ASM (24 March 1988 - Rufus S. Hendon)
  2. ;=============================================================================
  3. ; ENHANCED.ASM is adapted from the procedure called NewInt16 in ENHKBD.ASM
  4. ; Version 1.2 (2/23/88), written by Tim Kokkonen (with help from Brian Foley).
  5. ; ENHKBD is part of a Turbo Pascal 4.0 unit that makes it possible for Turbo
  6. ; Pascal programs to turn the enhanced keyboard on for the duration of the
  7. ; program, restoring the standard keyboard when the program terminates.
  8. ; ENHANCED, on the other hand, is independent of Turbo Pascal, and the .COM
  9. ; file produced from it is meant to be invoked from AUTOEXEC.BAT in order to
  10. ; make a permanent switch to the enhanced keyboard.  Like ENHKBD.ASM,
  11. ; ENHANCED.ASM is released to the public domain.
  12. ;=============================================================================
  13. ; This is a terminate-and-stay-resident replacement for the handler for type
  14. ; 16H interrupts.  It activates the enhanced keyboard as implemented by the
  15. ; Phoenix 80286 ROM BIOS Version 3.02 used in the AST Premium/286 computer.
  16. ;
  17. ; Among other reasons for activating the enhanced keyboard is the fact that
  18. ; the enhanced keyboard processes ALT-224 correctly, generating the code for
  19. ; the ordinary character alpha (code 224 = E0H).  The standard keyboard as
  20. ; implemented by the Phoenix BIOS incorrectly generates a null character
  21. ; (character code and scan code both = 00H) when ALT-224 is typed.
  22. ;
  23. ; The new handler for type 16H interrupts does two things:  (1) It changes
  24. ; functions 00H and 01H (in AH) to 10H and 11H respectively, which are the
  25. ; enhanced-keyboard functions.  It then calls the original handler.  (2) Upon
  26. ; return from the original handler, a check is made for cases in which an
  27. ; extended code (in AH) is paired with "character" code E0H (in AL) instead
  28. ; of 00H.  Such codes are generated for the keys that are specific to the
  29. ; enhanced keyboard, such as the cursor-movement keys that are separate from
  30. ; the numeric keypad.  To prevent these from being interpreted by application
  31. ; programs as the ordinary character with the code E0H (224), the E0H is
  32. ; replaced by 00H before return is made to the interrupter.
  33. ;=============================================================================
  34. ; The following table summarizes the keys which are affected by using this
  35. ; unit. The entries are the values of the scan word in hex.  The high byte of
  36. ; the scan word is the scan code, the low byte the ASCII character.  See
  37. ; Notes, following the table, for the key to special symbols.  [Kokkonen's
  38. ; table has been modified to reflect the operation of NewInt16 with the
  39. ; enhanced-keyboard implementation in the Phoenix 80286 ROM BIOS Version 3.02,
  40. ; without the replacement for interrupt 9H included in his ENHKBD.ASM.]
  41. ;
  42. ;               Plain     Shift     Control   Alt
  43. ;               -----     -----     -------   ----
  44. ; F11           8500%     8700%     8900%     8B00%
  45. ; F12           8600%     8800%     8A00%     8C00%
  46. ; Esc           011B      011B      011B      0100*
  47. ; Backquote     2960      297E       -        2900*
  48. ; Backspace     0E08      0E08      0E7F      0E00*
  49. ; Tab           0F09      0F00      9400*     A500*
  50. ; Left Brack    1A5B      1A7B      1A1B      1A00*
  51. ; Right Brack   1B5D      1B7D      1B1D      1B00*
  52. ; Backslash     2B5C      2B7C      2B1C      2B00*
  53. ; Semicolon     273B      273A       -        2700*
  54. ; Quote         2827      2822       -        2800*
  55. ; Enter         1C0D      1C0D      1C0A      1C00*
  56. ; Comma         332C      333C       -        3300*
  57. ; Period        342E      343E       -        3400*
  58. ; Slash         352F      353F       -        3500*
  59. ;-------------------------------------------------
  60. ; Numeric keypad keys:
  61. ; Insert        5200      5230      9200*      -
  62. ; Del           5300      532E      9300*      -
  63. ; Home          4700      4737      7700       -
  64. ; End           4F00      4F31      7500       -
  65. ; PgUp          4900      4939      8400       -
  66. ; PgDn          5100      5133      7600       -
  67. ; Up            4800      4838      8D00*      -
  68. ; Down          5000      5032      9100*      -
  69. ; Left          4B00      4B34      7300       -
  70. ; Right         4D00      4D36      7400       -
  71. ; Pad-Asterisk  372A       !         !        3700
  72. ; Pad-Minus     4A2D      4A2D      8E00*     4A00
  73. ; Pad-Plus      4E2B      4E2B      9000*     4E00
  74. ; Pad-5         4C00*     4C35      8F00*      -
  75. ;-------------------------------------------------
  76. ; Separate cursor-movement keys:
  77. ; Insert        5200      5200      9200*     A200*
  78. ; Del           5300      5300      9300*     A300*
  79. ; Home          4700      4700      7700      9700*
  80. ; End           4F00      4F00      7500      9F00*
  81. ; PgUp          4900      4900      8400      9900*
  82. ; PgDn          5100      5100      7600      A100*
  83. ; Up            4800      4800      8D00*     9800*
  84. ; Down          5000      5000      9100*     A000*
  85. ; Left          4B00      4B00      7300      9B00*
  86. ; Right         4D00      4D00      7400      9D00*
  87. ;
  88. ; Notes:
  89. ; - These keystrokes are ignored.
  90. ; * These keystrokes are not normally returned by the non-enhanced keyboard.
  91. ; ! These keystrokes control printscreen and print echoing. They cannot
  92. ;   simulate the effect of the enhanced keyboard, which has the Asterisk and
  93. ;   PrtSc keys separated.
  94. ; % The F11 and F12 keys are returned only if they actually exist on the
  95. ;   keyboard.
  96. ;
  97. ; With a few exceptions, NewInt16 returns results identical to those of the
  98. ; enhanced keyboard BIOS. One difference makes the enhanced keyboard simpler
  99. ; to use in a program: those scan words which normally contain E0 in the low
  100. ; byte to indicate that the key is specific to the enhanced keyboard (like the
  101. ; dedicated cursor keys) will have the low cleared to zero by NewInt16.
  102.