451 lines
12 KiB
PHP
451 lines
12 KiB
PHP
;/*
|
||
; * Microsoft Confidential
|
||
; * Copyright (C) Microsoft Corporation 1991
|
||
; * All Rights Reserved.
|
||
; */
|
||
.XLIST
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
;; MS DOS 3.3 - NLS Support - Keyboard Definition File
|
||
;;
|
||
;; File Name: KEYBMAC.INC
|
||
;; ----------
|
||
;;
|
||
;; Author: Bill Devlin - IBM Canada Laboratory - May 1986
|
||
;; ------- ???????????
|
||
;;
|
||
;; Description:
|
||
;; ------------
|
||
;; Include file containing macros for the Keyboard Definition File.
|
||
;;
|
||
;; Change History:
|
||
;; ---------------
|
||
;;
|
||
;;
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
;;
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
;; Dead key flags
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
;;
|
||
ACUTE EQU 80H ;; NLS_FLAG_1
|
||
GRAVE EQU 40H ;;
|
||
DIARESIS EQU 20H ;;
|
||
CIRCUMFLEX EQU 10H ;;
|
||
CEDILLA EQU 08H ;;
|
||
TILDE EQU 04H ;;
|
||
RUS_MODE EQU 01H ;; added by YST for cryillic keyboard
|
||
LAT_MODE EQU 00H ;; 1/21/91
|
||
;; NLS_FLAG_2 : nothing defined yet
|
||
CARON EQU 80H ;;
|
||
BREVE EQU 40H ;;
|
||
OVERCIRCLE EQU 20H ;;
|
||
OGONEK EQU 10H ;;
|
||
OVERDOT EQU 08H ;;
|
||
DOUBLEACUTE EQU 04H ;;
|
||
ACUTE_DIAR EQU 02h ;; Greek dead key combo
|
||
ACUTE_SEC EQU 01h ;; Greek
|
||
DIARESIS_SEC EQU 10h ;; Greek-BUG-BUG instead of making a NLS_FLAG_3 we
|
||
;; use 10h, which is not used in the Greek keyboard
|
||
;; and the Greek keyboard is the only one that uses
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DIARESIS_SEC.
|
||
;; State IDs
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
;;
|
||
DEAD_LOWER EQU 1 ;; dead keys on lower shift
|
||
DEAD_UPPER EQU 2 ;;
|
||
ALPHA_LOWER EQU 3 ;;
|
||
ALPHA_UPPER EQU 4 ;;
|
||
NON_ALPHA_LOWER EQU 5 ;;
|
||
NON_ALPHA_UPPER EQU 6 ;;
|
||
THIRD_SHIFT EQU 7 ;;
|
||
ACUTE_LOWER EQU 8 ;;
|
||
ACUTE_UPPER EQU 9 ;;
|
||
ACUTE_SPACE EQU 10 ;;
|
||
GRAVE_LOWER EQU 11 ;;
|
||
GRAVE_UPPER EQU 12 ;;
|
||
GRAVE_SPACE EQU 13 ;;
|
||
DIARESIS_LOWER EQU 14 ;;
|
||
DIARESIS_UPPER EQU 15 ;;
|
||
DIARESIS_SPACE EQU 16 ;;
|
||
CIRCUMFLEX_LOWER EQU 17 ;;
|
||
CIRCUMFLEX_UPPER EQU 18 ;;
|
||
CIRCUMFLEX_SPACE EQU 19 ;;
|
||
CEDILLA_LOWER EQU 20 ;;
|
||
CEDILLA_UPPER EQU 21 ;;
|
||
CEDILLA_SPACE EQU 22 ;;
|
||
CEDILLA_CEDILLA EQU 23 ;;
|
||
DEAD_THIRD EQU 24 ;;
|
||
ACUTE_ACUTE EQU 25 ;;
|
||
GRAVE_GRAVE EQU 26 ;;
|
||
DIARESIS_DIARESIS EQU 27 ;;
|
||
CIRCUMFLEX_CIRCUMFLEX EQU 28 ;;
|
||
FOURTH_SHIFT EQU 29 ;;
|
||
DEAD_FOURTH EQU 30 ;;
|
||
TILDE_LOWER EQU 31 ;;
|
||
TILDE_UPPER EQU 32 ;;
|
||
TILDE_SPACE EQU 33 ;;
|
||
TILDE_TILDE EQU 34 ;;
|
||
ALT_CASE EQU 35 ;;
|
||
CTRL_CASE EQU 36 ;;
|
||
NUMERIC_PAD EQU 37 ;;
|
||
DIVIDE_SIGN EQU 38 ;;
|
||
BOTLH_CAPS EQU 39 ;;
|
||
BOTRH_CAPS EQU 40 ;;
|
||
BOTLH_F_CAPS EQU 41 ;;
|
||
BOTRH_F_CAPS EQU 42 ;;
|
||
RUS_MODE_SET EQU 143 ;; Added for FR-CAN
|
||
LAT_MODE_SET EQU 144 ;; Added for FR-CAN
|
||
|
||
|
||
;************************************************
|
||
; Mihindu 11/30/90 - Added Eastern Europe support
|
||
;************************************************
|
||
CARON_SPACE EQU 43
|
||
CARON_LOWER EQU 44
|
||
CARON_UPPER EQU 45
|
||
BREVE_SPACE EQU 46
|
||
BREVE_LOWER EQU 47
|
||
BREVE_UPPER EQU 48
|
||
OVERCIRCLE_SPACE EQU 49
|
||
OVERCIRCLE_LOWER EQU 50
|
||
OVERCIRCLE_UPPER EQU 51
|
||
OGONEK_SPACE EQU 52
|
||
OGONEK_LOWER EQU 53
|
||
OGONEK_UPPER EQU 54
|
||
OVERDOT_SPACE EQU 55
|
||
OVERDOT_LOWER EQU 56
|
||
OVERDOT_UPPER EQU 57
|
||
DOUBLEACUTE_SPACE EQU 58
|
||
DOUBLEACUTE_LOWER EQU 59
|
||
DOUBLEACUTE_UPPER EQU 60
|
||
|
||
;******************************************************
|
||
; M000 --- new state for KDFJP.ASM (Kermit) *******
|
||
;******************************************************
|
||
|
||
DBCS_OLD_A EQU 61 ; M000 (JP9009)
|
||
|
||
NON_ALPHA_LOWER_SEC EQU 62 ;; Added for FR-CAN
|
||
NON_ALPHA_UPPER_SEC EQU 63 ;; For secondary keyboard on Dual Mode
|
||
ALPHA_LOWER_SEC EQU 64 ;; keyboard systems
|
||
ALPHA_UPPER_SEC EQU 65 ;;
|
||
DEAD_LOWER_SEC EQU 66 ;; Added for FR-CAN
|
||
DEAD_THIRD_SEC EQU 67 ;; Greek
|
||
DEAD_UPPER_SEC EQU 68 ;; Greek
|
||
ACUTE_SPACE_SEC EQU 69 ;; Greek
|
||
ACUTE_LOWER_SEC EQU 70 ;; Greek
|
||
ACUTE_UPPER_SEC EQU 71 ;; Greek
|
||
ACDI_SPACE_SEC EQU 72 ;; Greek Acute-diaresis combo
|
||
ACDI_LOWER_SEC EQU 73 ;; Greek
|
||
ACDI_UPPER_SEC EQU 74 ;; Greek
|
||
DIARESIS_LOWER_SEC EQU 75 ;; Greek
|
||
DIARESIS_UPPER_SEC EQU 76 ;; Greek
|
||
DIARESIS_SPACE_SEC EQU 77 ;; Greek
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
;; Logic Macros
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
;;
|
||
|
||
UNKNOWN = 255
|
||
|
||
FIND_FLAG MACRO FLAG_MASK
|
||
IFIDN <FLAG_MASK>,<SCAN_MATCH>
|
||
FLAG_ID = EXT_KB_FLAG_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<EITHER_SHIFT>
|
||
FLAG_ID = EXT_KB_FLAG_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<CAPS_STATE>
|
||
FLAG_ID = KB_FLAG_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<NUM_STATE>
|
||
FLAG_ID = KB_FLAG_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<EITHER_CTL>
|
||
FLAG_ID = EXT_KB_FLAG_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<EITHER_ALT>
|
||
FLAG_ID = EXT_KB_FLAG_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<LEFT_SHIFT>
|
||
FLAG_ID = KB_FLAG_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<RIGHT_SHIFT>
|
||
FLAG_ID = KB_FLAG_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<ALT_SHIFT>
|
||
FLAG_ID = KB_FLAG_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<CTL_SHIFT>
|
||
FLAG_ID = KB_FLAG_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<R_ALT_SHIFT>
|
||
FLAG_ID = KB_FLAG_3_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<R_CTL_SHIFT>
|
||
FLAG_ID = KB_FLAG_3_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<TILDE>
|
||
FLAG_ID = NLS_FLAG_1_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<ACUTE>
|
||
FLAG_ID = NLS_FLAG_1_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<GRAVE>
|
||
FLAG_ID = NLS_FLAG_1_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<DIARESIS>
|
||
FLAG_ID = NLS_FLAG_1_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<CEDILLA>
|
||
FLAG_ID = NLS_FLAG_1_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<CIRCUMFLEX>
|
||
FLAG_ID = NLS_FLAG_1_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<CARON>
|
||
FLAG_ID = NLS_FLAG_2_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<BREVE>
|
||
FLAG_ID = NLS_FLAG_2_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<OVERCIRCLE>
|
||
FLAG_ID = NLS_FLAG_2_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<OGONEK>
|
||
FLAG_ID = NLS_FLAG_2_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<OVERDOT>
|
||
FLAG_ID = NLS_FLAG_2_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<DOUBLEACUTE>
|
||
FLAG_ID = NLS_FLAG_2_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<ACUTE_DIAR>
|
||
FLAG_ID = NLS_FLAG_2_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<ACUTE_SEC>
|
||
FLAG_ID = NLS_FLAG_2_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<DIARESIS_SEC>
|
||
FLAG_ID = NLS_FLAG_2_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<LC_E0>
|
||
FLAG_ID = KB_FLAG_3_ID
|
||
ELSE
|
||
;; ============================================================
|
||
;; For FR-CAN Dual mode
|
||
;; ============================================================
|
||
IFIDN <FLAG_MASK>,<SHIFTS_PRESSED>
|
||
FLAG_ID = EXT_KB_FLAG_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<RUS_MODE>
|
||
FLAG_ID = NLS_FLAG_1_ID
|
||
ELSE
|
||
IFIDN <FLAG_MASK>,<LAT_MODE>
|
||
FLAG_ID = NLS_FLAG_1_ID
|
||
ELSE
|
||
;; ============================================================
|
||
;; End of FR-CAN dual mode
|
||
;; ============================================================
|
||
FLAG_ID = UNKNOWN
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
FLAG MACRO FLAG_MASK
|
||
FIND_FLAG FLAG_MASK
|
||
IF (FLAG_ID EQ UNKNOWN)
|
||
IF2
|
||
%OUT Unknown parameter FLAG_MASK on FLAG MACRO
|
||
ENDIF
|
||
ELSE
|
||
DB FLAG_ID
|
||
DB FLAG_MASK
|
||
ENDIF
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
IFF MACRO FLAG_MASK,MASK_TYPE
|
||
MAC_OK = 1
|
||
IFB <MASK_TYPE>
|
||
NOT_BIT = 00000000B
|
||
ELSE
|
||
IFIDN <MASK_TYPE>,<NOT>
|
||
NOT_BIT = 00001000B
|
||
ELSE
|
||
MAC_OK = 0
|
||
IF2
|
||
%OUT Unknown parameter MASK_TYPE on IFF MACRO
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
IF MAC_OK
|
||
FIND_FLAG FLAG_MASK
|
||
IF (FLAG_ID EQ UNKNOWN)
|
||
IF2
|
||
%OUT Unknown parameter FLAG_MASK on IFF MACRO
|
||
ENDIF
|
||
ELSE
|
||
DB IFF_COMMAND+NOT_BIT+FLAG_ID
|
||
DB FLAG_MASK
|
||
ENDIF
|
||
ENDIF
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
IFKBD MACRO SYS
|
||
DB IFKBD_COMMAND
|
||
DW SYS
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
ANDF MACRO FLAG_MASK,MASK_TYPE
|
||
MAC_OK = 1
|
||
IFB <MASK_TYPE>
|
||
NOT_BIT = 00000000B
|
||
ELSE
|
||
IFIDN <MASK_TYPE>,<NOT>
|
||
NOT_BIT = 00001000B
|
||
ELSE
|
||
MAC_OK = 0
|
||
IF2
|
||
%OUT Unknown parameter MASK_TYPE on ANDF MACRO
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
IF MAC_OK
|
||
FIND_FLAG FLAG_MASK
|
||
IF (FLAG_ID EQ UNKNOWN)
|
||
IF2
|
||
%OUT Unknown parameter FLAG_MASK on ANDF MACRO
|
||
ENDIF
|
||
ELSE
|
||
DB ANDF_COMMAND+NOT_BIT+FLAG_ID
|
||
DB FLAG_MASK
|
||
ENDIF
|
||
ENDIF
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
ELSEF MACRO
|
||
DB ELSEF_COMMAND
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
ENDIFF MACRO
|
||
DB ENDIFF_COMMAND
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
XLATT MACRO STATE
|
||
DB XLATT_COMMAND
|
||
DB STATE
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
PUT_ERROR_CHAR MACRO STATE
|
||
DB PUT_ERROR_COMMAND
|
||
DB STATE
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
OPTION MACRO MASK,MASK_TYPE
|
||
MAC_OK = 1
|
||
IFB <MASK_TYPE>
|
||
NOT_BIT = 00000000B
|
||
ELSE
|
||
IFIDN <MASK_TYPE>,<NOT>
|
||
NOT_BIT = 00001000B
|
||
ELSE
|
||
MAC_OK = 0
|
||
IF2
|
||
%OUT Unknown parameter MASK_TYPE on OPTION MACRO
|
||
ENDIF
|
||
ENDIF
|
||
ENDIF
|
||
IF MAC_OK
|
||
DB OPTION_COMMAND+NOT_BIT
|
||
DB MASK
|
||
ENDIF
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
SET_FLAG MACRO STATE
|
||
DB SET_FLAG_COMMAND
|
||
DB STATE
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
RESET_NLS MACRO
|
||
DB RESET_NLS_COMMAND
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
RESET_NLS1 MACRO
|
||
DB RESET_NLS1_COMMAND
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
BEEP MACRO
|
||
DB BEEP_COMMAND
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
GOTO MACRO GOTO_OFFSET
|
||
DB GOTO_COMMAND
|
||
DW GOTO_OFFSET-$-2
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
EXIT_INT_9 MACRO
|
||
DB GOTO_COMMAND+EXIT_INT_9_FLAG
|
||
DW 0
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
EXIT_STATE_LOGIC MACRO
|
||
DB GOTO_COMMAND+EXIT_STATE_LOGIC_FLAG
|
||
DW 0
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
CHECK_FOR_CORE_KEY MACRO
|
||
DB CHECK_CORE_COMMAND
|
||
ENDM
|
||
|
||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
.LIST
|
||
|