1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
|
.XLIST
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; DOS - - NLS Support - Keyboard Definition File
;; (C) Copyright 1988 Microsoft
;;
;; File Name: KEYBMAC.INC
;; ----------
;;
;; 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 ;;
;; NLS_FLAG_2 : nothing defined yet
;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 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 ;;
ALT_CASE EQU 34 ;;
CTRL_CASE EQU 35 ;;
NUMERIC_PAD EQU 36 ;;
DIVIDE_SIGN EQU 37 ;;
BOTLH_CAPS EQU 38 ;;
BOTRH_CAPS EQU 39 ;;
BOTLH_F_CAPS EQU 40 ;;
BOTRH_F_CAPS EQU 41 ;;
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 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>,<LC_E0>
FLAG_ID = KB_FLAG_3_ID
ELSE
FLAG_ID = UNKNOWN
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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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
|