You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
450 lines
12 KiB
450 lines
12 KiB
;/*
|
|
; * 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
|
|
|