1 ;CODE to be deleted has a double ;; followed by actual asm code....****
2 ;; LATEST CHANGE ALT & CTL
7 TITLE DOS
- Keyboard Definition
File
9 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
10 ;; DOS - - NLS Support - Keyboard Defintion File
11 ;; (c) Copyright 1988 Microsoft
13 ;; This file contains the keyboard tables for Spanish.
15 ;; Linkage Instructions:
18 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
20 INCLUDE KEYBSHAR
.INC ;;
21 INCLUDE POSTEQU
.INC ;;
22 INCLUDE KEYBMAC
.INC ;;
28 CODE SEGMENT PUBLIC 'CODE' ;;
29 ASSUME
CS:CODE,DS:CODE ;;
31 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
32 ;; Standard translate table options are a liner search table
33 ;; (TYPE_2_TAB) and ASCII entries ONLY (ASCII_ONLY)
34 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
36 STANDARD_TABLE EQU TYPE_2_TAB
+ASCII_ONLY
38 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
39 ;;***************************************
41 ;;***************************************
42 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
47 DW LOGIC_END
-$ ;; length
49 DW 0 ;; special features
51 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; COMMANDS START HERE
53 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
54 ;; OPTIONS: If we find a scan match in
55 ;; an XLATT or SET_FLAG operation then
57 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
59 OPTION EXIT_IF_FOUND
;;
62 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
63 ;; Dead key definitions must come before
64 ;; dead key translations to handle
65 ;; dead key + dead key.
66 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
69 ANDF EITHER_CTL
,NOT ;;
71 SET_FLAG DEAD_UPPER
;;
73 SET_FLAG DEAD_LOWER
;;
77 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
78 ;; ACUTE ACCENT TRANSLATIONS
79 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
88 IFF R_ALT_SHIFT
,NOT ;;
92 ANDF EITHER_ALT
,NOT ;;
109 PUT_ERROR_CHAR ACUTE_LOWER
;; If we get here then either the XLATT
110 BEEP
;; failed or we are ina bad shift state.
111 GOTO NON_DEAD
;; Either is invalid so BEEP and fall
112 ;; through to generate the second char.
113 ;; Note that the dead key flag will be
114 ;; reset before we get here.
116 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
117 ;; DIARESIS ACCENT TRANSLATIONS
118 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
127 IFF R_ALT_SHIFT
,NOT ;;
128 XLATT DIARESIS_SPACE
;; exist for 437 so beep for
130 IFF EITHER_CTL
,NOT ;;
131 ANDF EITHER_ALT
,NOT ;;
134 XLATT DIARESIS_LOWER
;;
136 XLATT DIARESIS_UPPER
;;
140 XLATT DIARESIS_UPPER
;;
142 XLATT DIARESIS_LOWER
;;
148 PUT_ERROR_CHAR DIARESIS_SPACE
;; standalone accent
149 BEEP
;; Invalid dead key combo.
152 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
153 ;; GRAVE ACCENT TRANSLATIONS
154 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
159 GOTO CIRCUMFLEX_PROC
;;
163 IFF R_ALT_SHIFT
,NOT ;;
166 IFF EITHER_CTL
,NOT ;;
167 ANDF EITHER_ALT
,NOT ;;
175 IFF CAPS_STATE
,NOT ;;
184 PUT_ERROR_CHAR GRAVE_LOWER
;; standalone accent
185 BEEP
;; Invalid dead key combo.
188 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
189 ;; CIRCUMFLEX ACCENT TRANSLATIONS
190 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
194 IFF CIRCUMFLEX
,NOT ;;
199 IFF R_ALT_SHIFT
,NOT ;;
200 XLATT CIRCUMFLEX_SPACE
;;
202 IFF EITHER_CTL
,NOT ;;
203 ANDF EITHER_ALT
,NOT ;;
206 XLATT CIRCUMFLEX_LOWER
;;
208 XLATT CIRCUMFLEX_UPPER
;;
211 IFF CAPS_STATE
,NOT ;;
212 XLATT CIRCUMFLEX_LOWER
;;
214 XLATT CIRCUMFLEX_UPPER
;;
219 INVALID_CIRCUMFLEX: ;;
220 PUT_ERROR_CHAR CIRCUMFLEX_LOWER
;; standalone accent
221 BEEP
;; Invalid dead key combo.
225 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
226 ;; Upper, lower and third shifts
227 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
231 IFKBD G_KB
+P12_KB
;; Avoid accidentally translating
232 ANDF LC_E0
;; the "/" on the numeric pad of the
233 EXIT_STATE_LOGIC
;; G keyboard
235 ;;***BD ADDED FOR ALT, CTRL CASES ;;
236 IFF EITHER_CTL
,NOT ;;
237 IFF ALT_SHIFT
;; ALT - case
238 ANDF R_ALT_SHIFT
,NOT ;;
242 IFF EITHER_ALT
,NOT ;; CTRL - case
246 ;;***BD END OF ADDITION
248 IFF EITHER_ALT
,NOT ;; Lower and upper case. Alphabetic
249 ANDF EITHER_CTL
,NOT ;; keys are affected by CAPS LOCK.
250 IFF EITHER_SHIFT
;; Numeric keys are not.
251 ;;***BD ADDED FOR NUMERIC PAD
255 ;;***BD END OF ADDITION
256 XLATT NON_ALPHA_UPPER
;;
263 ;;***BD ADDED FOR NUMERIC PAD
267 ;;***BD END OF ADDITION
268 XLATT NON_ALPHA_LOWER
;;
276 IFF EITHER_SHIFT
,NOT ;;
283 IFF EITHER_CTL
,NOT ;;
296 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
297 ;;***************************************
298 ;; UK Common Translate Section
299 ;; This section contains translations for the lower 128 characters
300 ;; only since these will never change from code page to code page.
301 ;; In addition the dead key "Set Flag" tables are here since the
302 ;; dead keys are on the same keytops for all code pages.
303 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
305 PUBLIC UK_COMMON_XLAT
;;
308 DW COMMON_XLAT_END
-$ ;; length of section
312 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
313 ;;***************************************
314 ;;***BD - ADDED FOR ALT CASE
315 ;;******************************
316 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
319 ;; KEYBOARD TYPES: All
320 ;; TABLE TYPE: Translate
321 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
323 DW COM_ALT_K2_END
-$ ;; length of state section
324 DB ALT_CASE
;; State ID
325 DW ANY_KB
;; Keyboard Type
326 DB -1,-1 ;; Buffer entry for error character
328 DW COM_ALT_K2_T1_END
-$ ;; Size of xlat table
329 DB TYPE_2_TAB
;; xlat options:
330 DB 0 ;; number of entries
331 ;;***BD THIS ENTRY IS A TEST ENTRY
332 ;; DB 53,225,0 ;; TEST ENTRY
333 COM_ALT_K2_T1_END: ;;
335 DW 0 ;; Size of xlat table - null table
339 ;;******************************
340 ;;***BD - ADDED FOR CTRL CASE
341 ;;******************************
342 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
345 ;; KEYBOARD TYPES: G_KB+P12_KB+AT
346 ;; TABLE TYPE: Translate
347 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
349 DW COM_CTRL_K2_END
-$ ;; length of state section
350 DB CTRL_CASE
;; State ID
351 DW G_KB
+P12_KB
+AT_KB
;; Keyboard Type
352 DB -1,-1 ;; Buffer entry for error character
354 DW COM_CTRL_K2_T1_END
-$ ;; Size of xlat table
355 DB TYPE_2_TAB
;; xlat options:
356 DB 2 ;; number of entries
357 ;;***BD THIS ENTRY IS A TEST ENTRY
358 ;; DB 53,226,0 ;; TEST ENTRY
359 DB 43,-1,-1 ;; invalid slash
360 DB 41,28,41 ;; valid slash
361 COM_CTRL_K2_T1_END: ;;
363 DW 0 ;; Size of xlat table - null table
367 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
369 ;; STATE: Non-Alpha Lower Case
370 ;; KEYBOARD TYPES: G_KB+P12_KB
371 ;; TABLE TYPE: Translate
372 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
374 DW COM_NA_LO_K1_END
-$ ;; length of state section
375 DB NON_ALPHA_LOWER
;; State ID
376 DW G_KB
+P12_KB
;; Keyboard Type
377 DB -1,-1 ;; Buffer entry for error character
379 DW COM_NA_LO_K1_T1_END
-$ ;; Size of xlat table
380 DB STANDARD_TABLE
;; xlat options:
381 DB 2 ;; number of entries
384 COM_NA_LO_K1_T1_END: ;;
386 DW 0 ;; Size of xlat table - null table
390 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
391 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
393 ;; STATE: Non-Alpha Lower Case
394 ;; KEYBOARD TYPES: AT
395 ;; TABLE TYPE: Translate
396 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
398 DW COM_NA_LO_K2_END
-$ ;; length of state section
399 DB NON_ALPHA_LOWER
;; State ID
400 DW AT_KB
;; Keyboard Type
401 DB -1,-1 ;; Buffer entry for error character
403 DW COM_NA_LO_K2_T1_END
-$ ;; Size of xlat table
404 DB STANDARD_TABLE
;; xlat options:
405 DB 3 ;; number of entries
409 COM_NA_LO_K2_T1_END: ;;
411 DW 0 ;; Size of xlat table - null table
415 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
416 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
418 ;; STATE: Non-Alpha Lower Case
419 ;; KEYBOARD TYPES: XT_KB
420 ;; TABLE TYPE: Translate
421 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
423 DW COM_NA_LO_K3_END
-$ ;; length of state section
424 DB NON_ALPHA_LOWER
;; State ID
425 DW XT_KB
;; Keyboard Type
426 DB -1,-1 ;; Buffer entry for error character
428 DW COM_NA_LO_K3_T1_END
-$ ;; Size of xlat table
429 DB STANDARD_TABLE
;; xlat options:
430 DB 2 ;; number of entries
434 COM_NA_LO_K3_T1_END: ;;
436 DW 0 ;; Size of xlat table - null table
440 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
442 ;; STATE: Non-Alpha Upper Case
443 ;; KEYBOARD TYPES: G_KB+P12_KB+
444 ;; TABLE TYPE: Translate
445 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
447 DW COM_NA_UP_K1_END-$ ;; length of state section
448 DB NON_ALPHA_UPPER ;; State ID
449 DW G_KB+P12_KB ;; Keyboard Type
450 DB -1,-1 ;; Buffer entry for error character
452 DW COM_NA_UP_T1_K1_END-$ ;; Size of xlat table
453 DB STANDARD_TABLE ;; xlat options:
454 DB 5 ;; number of entries
460 COM_NA_UP_T1_K1_END: ;;
462 DW 0 ;; Size of xlat table - null table
467 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
468 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
470 ;; STATE: Non-Alpha Upper Case
471 ;; KEYBOARD TYPES: XT_KB
472 ;; TABLE TYPE: Translate
473 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
475 DW COM_NA_UP_K2_END
-$ ;; length of state section
476 DB NON_ALPHA_UPPER
;; State ID
477 DW XT_KB
;; Keyboard Type
478 DB -1,-1 ;; Buffer entry for error character
480 DW COM_NA_UP_T1_K2_END
-$ ;; Size of xlat table
481 DB STANDARD_TABLE
;; xlat options:
482 DB 5 ;; number of entries
487 DB 43,07CH ;; Broken vertical bar
488 COM_NA_UP_T1_K2_END: ;;
490 DW 0 ;; Size of xlat table - null table
495 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
496 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
498 ;; STATE: Non-Alpha Upper Case
499 ;; KEYBOARD TYPES: AT_KB
500 ;; TABLE TYPE: Translate
501 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
503 DW COM_NA_UP_K3_END
-$ ;; length of state section
504 DB NON_ALPHA_UPPER
;; State ID
505 DW AT_KB
;; Keyboard Type
506 DB -1,-1 ;; Buffer entry for error character
508 DW COM_NA_UP_T1_K3_END
-$ ;; Size of xlat table
509 DB STANDARD_TABLE
;; xlat options:
510 DB 5 ;; number of entries
516 COM_NA_UP_T1_K3_END: ;;
518 DW 0 ;; Size of xlat table - null table
528 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
529 ;;***************************************
530 ;; UK Specific Translate Section for 437
531 ;; 437 IS COMPLETELY COVERED BY THE COMMON TABLE.
532 ;;***************************************
533 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
535 PUBLIC UK_437_XLAT
;;
538 DW CP437_XLAT_END
-$ ;; length of section
540 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
542 ;; STATE: Third Shift
543 ;; KEYBOARD TYPES: G_KB+P12_KB
544 ;; TABLE TYPE: Translate
545 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
547 DW CP437_THIRD_K1_END
-$ ;; length of state section
548 DB THIRD_SHIFT
;; State ID
549 DW G_KB
+P12_KB
;; Keyboard Type
550 DB -1,-1 ;; Buffer entry for error character
552 DW CP437_THIRD_K1_T1_END
-$ ;; Size of xlat table
553 DB STANDARD_TABLE
;; xlat options:
554 DB 1 ;; number of entries
555 DB 41,0DDH ;; Solid vertical bar - graphics block
556 CP437_THIRD_K1_T1_END: ;;
558 DW 0 ;; Last xlat table
559 CP437_THIRD_K1_END: ;;
561 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
562 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
564 ;; STATE: Non-Alpha Upper Case
565 ;; KEYBOARD TYPES: G_KB+P12_KB+
566 ;; TABLE TYPE: Translate
567 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
569 DW CP437_NA_UP_K1_END
-$ ;; length of state section
570 DB NON_ALPHA_UPPER
;; State ID
571 DW G_KB
+P12_KB
;; Keyboard Type
572 DB -1,-1 ;; Buffer entry for error character
574 DW CP437_NA_UP_T1_K1_END
-$ ;; Size of xlat table
575 DB STANDARD_TABLE
;; xlat options:
576 DB 1 ;; number of entries
577 DB 86,07ch ;; vertical bar
578 CP437_NA_UP_T1_K1_END: ;;
580 DW 0 ;; Size of xlat table - null table
582 CP437_NA_UP_K1_END: ;;
585 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
590 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
591 ;;***************************************
592 ;; UK Specific Translate Section for 850
593 ;;***************************************
594 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
596 PUBLIC UK_850_XLAT
;;
599 DW CP850_XLAT_END
-$ ;; length of section
602 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
604 ;; STATE: Third Shift
605 ;; KEYBOARD TYPES: G_KB+P12_KB
606 ;; TABLE TYPE: Translate
607 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
609 DW CP850_THIRD_K1_END
-$ ;; length of state section
610 DB THIRD_SHIFT
;; State ID
611 DW G_KB
+P12_KB
;; Keyboard Type
612 DB -1,-1 ;; Buffer entry for error character
614 DW CP850_THIRD_K1_T1_END
-$ ;; Size of xlat table
615 DB STANDARD_TABLE
;; xlat options:
616 DB 1 ;; number of entries
617 DB 41,07CH ;; Solid vertical bar - |
618 CP850_THIRD_K1_T1_END: ;;
620 DW 0 ;; Last xlat table
621 CP850_THIRD_K1_END: ;;
623 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
624 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
626 ;; STATE: Non-Alpha Upper Case
627 ;; KEYBOARD TYPES: G_KB+P12_KB+
628 ;; TABLE TYPE: Translate
629 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
631 DW CP850_NA_UP_K1_END
-$ ;; length of state section
632 DB NON_ALPHA_UPPER
;; State ID
633 DW G_KB
+P12_KB
;; Keyboard Type
634 DB -1,-1 ;; Buffer entry for error character
636 DW CP850_NA_UP_T1_K1_END
-$ ;; Size of xlat table
637 DB STANDARD_TABLE
;; xlat options:
638 DB 1 ;; number of entries
639 DB 86,0DDh ;; broken vertical
640 CP850_NA_UP_T1_K1_END: ;;
642 DW 0 ;; Size of xlat table - null table
644 CP850_NA_UP_K1_END: ;;
647 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
649 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
653 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;