From 2d04cacc5322951f187bb17e017c12920ac8ebe2 Mon Sep 17 00:00:00 2001 From: Mark Zbikowski Date: Thu, 25 Apr 2024 21:24:10 +0100 Subject: MZ is back! --- v4.0/src/DEV/KEYBOARD/KDFNOW.ASM | 507 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 507 insertions(+) create mode 100644 v4.0/src/DEV/KEYBOARD/KDFNOW.ASM (limited to 'v4.0/src/DEV/KEYBOARD/KDFNOW.ASM') diff --git a/v4.0/src/DEV/KEYBOARD/KDFNOW.ASM b/v4.0/src/DEV/KEYBOARD/KDFNOW.ASM new file mode 100644 index 0000000..ac2ea78 --- /dev/null +++ b/v4.0/src/DEV/KEYBOARD/KDFNOW.ASM @@ -0,0 +1,507 @@ + + + PAGE ,132 + TITLE DOS - Keyboard Definition File + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; DOS - - NLS Support - Keyboard Definition File +;; (c) Copyright 1988 Microsoft +;; +;; This the file header and table pointers ONLY. +;; The actual tables are contained in seperate source files. +;; These are: +;; KDFSP.ASM - Spanish +;; KDFPO.ASM - Portuguese +;; KDFGR.ASM - German +;; KDFIT142.ASM - Italian +;; KDFIT.ASM - Italian +;; KDFFR189.ASM - French +;; KDFFR.ASM - French +;; KDFSG.ASM - Swiss German +;; KDFSF.ASM - Swiss French +;; KDFDK.ASM - Danish +;; KDFUK168.ASM - English +;; KDFUK.ASM - English +;; KDFBE.ASM - Belgium +;; KDFNL.ASM - Netherlands +;; KDFNO.ASM - Norway +;; KDFLA.ASM - Latin American +;; KDFSV.ASM - SWEDEN -----> This moddule is used for both Sweden +;; and Finland - exact same template +;; KDFSU.ASM - Finland -----> Same module as Sweden eliminated +;; Dummy US - US +;; Linkage Instructions: +;; The following instructions are contained in KDFLINK.BAT: +;; +;; LINK KDF+KDFSP+KDFGE+KDFFR+KDFIT+KDFPO+KDFUK+KDFSG+KDFDK+KDFEOF; +;; EXE2BIN KDF.EXE KEYBOARD.SYS +;; +;; DCL, March 8, 1988 - swapped 437/850 to 850/437 for SG & SF +;; DCL, March 8, 1988 - uncommented SU(finland)& swapped 437/850 to 850/437 +;; as the Finnish want 850/437 vs. 437/850 for Sweden +;; did not alter the pointer to kbid 153 to Sweden +;; CNS April 14 1988 - swapped 437/850 to 850/437 for SP & LA +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; + ;; +CODE SEGMENT PUBLIC 'CODE' ;; + ASSUME CS:CODE,DS:CODE ;; + ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;*************************************** +;; File Header +;;*************************************** +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; +DB 0FFh,'KEYB ' ;; signature +DB 8 DUP(0) ;; reserved +DW 650 ;; maximum size of Common Xlat Sect +DW 350 ;; max size of Specific Xlat Sect +DW 400 ;; max size of State Logic +DW 0 ;;AC000;reserved +DW 19 ;;AC000 number of IDs +DW 17 ;;AC000 number of languages +DB 'GR' ;; LANGUAGE CODE TABLE +DW OFFSET GE_LANG_ENT,0 ;; +DB 'SP' ;; +DW OFFSET SP_LANG_ENT,0 ;; +DB 'PO' ;; +DW OFFSET PO_LANG_ENT,0 ;; +DB 'FR' ;; +DW OFFSET FR2_LANG_ENT,0 ;; +DB 'DK' ;; +DW OFFSET DK_LANG_ENT,0 ;; +DB 'SG' ;; +DW OFFSET SG_LANG_ENT,0 ;; +DB 'IT' ;; +DW OFFSET IT2_LANG_ENT,0 ;; +DB 'UK' ;; +DW OFFSET UK2_LANG_ENT,0 ;; +DB 'SF' ;; +DW OFFSET SF_LANG_ENT,0 ;; +DB 'BE' ;; +DW OFFSET BE_LANG_ENT,0 ;; +DB 'NL' ;; +DW OFFSET NL_LANG_ENT,0 ;; +DB 'NO' ;; +DW OFFSET NO_LANG_ENT,0 ;; +DB 'CF' ;; +DW OFFSET CF_LANG_ENT,0 ;; +DB 'SV' ;; +DW OFFSET SV_LANG_ENT,0 ;; +DB 'SU' ;; +DW OFFSET Su_LANG_ENT,0 ;; +DB 'LA' ;; +DW OFFSET LA_LANG_ENT,0 ;; +DB 'US' ;; +DW OFFSET DUMMY_ENT,0 ;; +DW 172 ;;AN000;ID CODE TABLE *************************** +DW OFFSET SP_LANG_ENT,0 ;;AN000; +DW 163 ;;AN000; +DW OFFSET PO_LANG_ENT,0 ;;AN000; +DW 120 ;;AN000; +DW OFFSET FR1_LANG_ENT,0 ;;AN000; +DW 189 ;;AN000; +DW OFFSET FR2_LANG_ENT,0 ;;AN000; +DW 159 ;;AN000; +DW OFFSET DK_LANG_ENT,0 ;;AN000; +DW 000 ;;AN000; +DW OFFSET SG_LANG_ENT,0 ;;AN000; +DW 129 ;;AN000; +DW OFFSET GE_LANG_ENT,0 ;;AN000; +DW 142 ;;AN000; +DW OFFSET IT1_LANG_ENT,0 ;;AN000; +DW 141 ;;AN000; +DW OFFSET IT2_LANG_ENT,0 ;;AN000; +DW 168 ;;AN000; +DW OFFSET UK1_LANG_ENT,0 ;;AN000; +DW 166 ;;AN000; +DW OFFSET UK2_LANG_ENT,0 ;;AN000; +DW 150 ;;AN000; +DW OFFSET SF_LANG_ENT,0 ;;AN000; +DW 120 ;;AN000; +DW OFFSET BE_LANG_ENT,0 ;;AN000; +DW 143 ;;AN000; +DW OFFSET NL_LANG_ENT,0 ;;AN000; +DW 155 ;;AN000; +DW OFFSET NO_LANG_ENT,0 ;;AN000; +DW 058 ;;AN000; +DW OFFSET CF_LANG_ENT,0 ;;AN000; +DW 153 ;;AN000; +DW OFFSET SV_LANG_ENT,0 ;;AN000; +DW 171 ;;AN000; +DW OFFSET LA_LANG_ENT,0 ;;AN000; +DW 103 ;;AN000; +DW OFFSET DUMMY_ENT,0 ;;AN000; +; ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;*************************************** +;; Language Entries +;;*************************************** +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; + EXTRN SP_LOGIC:NEAR ;; + EXTRN SP_437_XLAT:NEAR ;; + EXTRN SP_850_XLAT:NEAR ;; + ;; +SP_LANG_ENT: ;; language entry for SPANISH + DB 'SP' ;; + DW 172 ;; AN000;ID entry (ID CODE) + DW OFFSET SP_LOGIC,0 ;; pointer to LANG kb table + DB 1 ;; AN000;number of IDs + DB 2 ;; number of code pages + DW 850 ;; code page + DW OFFSET SP_850_XLAT,0 ;; table pointer + DW 437 ;; code page + DW OFFSET SP_437_XLAT,0 ;; table pointer + ;; +;***************************************************************************** + EXTRN FR1_LOGIC:NEAR ;;AN000; + EXTRN FR1_437_XLAT:NEAR ;;AN000; + EXTRN FR1_850_XLAT:NEAR ;;AN000; + ;; + FR1_LANG_ENT: ;;AN000; language entry for FRANCE + DB 'FR' ;;AN000; SECONDARY KEYBOARD ID VALUE + DW 120 ;;AN000; ID entry + DW OFFSET FR1_LOGIC,0 ;;AN000; pointer to LANG kb table + DB 2 ;;AN000; number of code pages + DB 2 ;;AN000; number of ids + DW 437 ;;AN000; code page + DW OFFSET FR1_437_XLAT,0 ;;AN000; table pointer + DW 850 ;;AN000; code page + DW OFFSET FR1_850_XLAT,0 ;;AN000; table pointer + ;;AN000; +;***************************************************************************** + EXTRN FR2_LOGIC:NEAR ;;AC000; + EXTRN FR2_437_XLAT:NEAR ;;AC000; + EXTRN FR2_850_XLAT:NEAR ;;AC000; + ;; + FR2_LANG_ENT: ;; language entry for FRANCE + DB 'FR' ;; PRIMARY KEYBOARD ID VALUE + DW 189 ;;AC000; ID entry + DW OFFSET FR2_LOGIC,0 ;;AC000; pointer to LANG kb table + DB 1 ;;AC000; number of ids + DB 2 ;;AC000; number of code pages + DW 437 ;;AC000; code page + DW OFFSET FR2_437_XLAT,0 ;;AC000; table pointer + DW 850 ;;AC000; code page + DW OFFSET FR2_850_XLAT,0 ;;AC000; table pointer + ;; +;**************************************************************************** + EXTRN PO_LOGIC:NEAR ;;AC000; + EXTRN PO_850_XLAT:NEAR ;;AC000; + EXTRN PO_860_XLAT:NEAR ;;AC000; + ;; +PO_LANG_ENT: ;; language entry for PORTUGAL + DB 'PO' ;; + DW 163 ;;AN000; ID entry + DW OFFSET PO_LOGIC,0 ;; pointer to LANG kb table + DB 1 ;;AC000; number of ids + DB 2 ;;AC000; number of code pages + DW 850 ;;AC000; code page + DW OFFSET PO_850_XLAT,0 ;;AC000; table pointer + DW 860 ;;AC000; code page + DW OFFSET PO_860_XLAT,0 ;;AC000; table pointer + ;; +;***************************************************************************** + EXTRN DK_LOGIC:NEAR ;; + EXTRN DK_850_XLAT:NEAR ;;AC000; + EXTRN DK_865_XLAT:NEAR ;;AC000; + ;; + DK_LANG_ENT: ;; language entry for DENMARK + DB 'DK' ;; + DW 159 ;;AN000; ID entry + DW OFFSET DK_LOGIC,0 ;; pointer to LANG kb table + DB 1 ;;AN000;number of ids + DB 2 ;;AC000; number of code pages + DW 850 ;;AC000; code page + DW OFFSET DK_850_XLAT,0 ;;AC000; table pointer + DW 865 ;;AC000; code page + DW OFFSET DK_865_XLAT,0 ;;AC000; table pointer + ;; +;***************************************************************************** + EXTRN SG_LOGIC:NEAR ;; + EXTRN SG_850_XLAT:NEAR ;; + EXTRN SG_437_XLAT:NEAR ;; + ;; +SG_LANG_ENT: ;; language entry for SWISS GERMAN + DB 'SG' ;; + DW 000 ;;AN001; ID entry + DW OFFSET SG_LOGIC,0 ;; pointer to LANG kb table + DB 1 ;;AN000; number of ids + DB 2 ;;AC000; number of code pages + DW 850 ;; code page ;;;dcl 850 now default March 8, 1988 + DW OFFSET SG_850_XLAT,0 ;; table pointer + DW 437 ;; code page + DW OFFSET SG_437_XLAT,0 ;; table pointer + ;; +;***************************************************************************** + EXTRN SF_LOGIC:NEAR ;; + EXTRN SF_850_XLAT:NEAR ;; + EXTRN SF_437_XLAT:NEAR ;; + ;; +SF_LANG_ENT: ;; language entry for SWISS FRENCH + DB 'SF' ;; + DW 150 ;;AN000; ID entry + DW OFFSET SF_LOGIC,0 ;; pointer to LANG kb table + DB 1 ;;AN000; number of ids + DB 2 ;;AC000; number of code pages + DW 850 ;; code page ;;;dcl 850 now default March 8, 1988 + DW OFFSET SF_850_XLAT,0 ;; table pointer + DW 437 ;; code page + DW OFFSET SF_437_XLAT,0 ;; table pointer + ;; +;***************************************************************************** + EXTRN GE_LOGIC:NEAR ;; + EXTRN GE_437_XLAT:NEAR ;; + EXTRN GE_850_XLAT:NEAR ;; + ;; +GE_LANG_ENT: ;; language entry for GERMANY + DB 'GR' ;; + DW 129 ;;AN000; ID entry + DW OFFSET GE_LOGIC,0 ;; pointer to LANG kb table + DB 1 ;;AN000; number of ids + DB 2 ;;AC000; number of code pages + DW 437 ;; code page + DW OFFSET GE_437_XLAT,0 ;; table pointer + DW 850 ;; code page + DW OFFSET GE_850_XLAT,0 ;; table pointer + ;; +;***************************************************************************** + EXTRN IT1_LOGIC:NEAR ;;AN000; + EXTRN IT1_437_XLAT:NEAR ;;AN000; + EXTRN IT1_850_XLAT:NEAR ;;AN000; + ;; + IT1_LANG_ENT: ;;AN000; language entry for ITALY + DB 'IT' ;;AN000; SECONDARY KEYBOARD ID VALUE + DW 142 ;;AN000; ID entry + DW OFFSET IT1_LOGIC,0 ;;AN000; pointer to LANG kb table + DB 2 ;;AN000;number of ids + DB 2 ;;AN000; number of code pages + DW 437 ;;AN000; code page + DW OFFSET IT1_437_XLAT,0 ;;AN000; table pointer + DW 850 ;;AN000; code page + DW OFFSET IT1_850_XLAT,0 ;;AN000; table pointer + ;; +;***************************************************************************** + EXTRN IT2_LOGIC:NEAR ;; + EXTRN IT2_437_XLAT:NEAR ;; + EXTRN IT2_850_XLAT:NEAR ;; + ;; + IT2_LANG_ENT: ;;AC000; language entry for ITALY + DB 'IT' ;;AC000; PRIMARY KEYBOARD ID VALUE + DW 141 ;;AN000; ID entry + DW OFFSET IT2_LOGIC,0 ;;AN000; pointer to LANG kb table + DB 1 ;;AC000; number of ids + DB 2 ;;AC000; number of code pages + DW 437 ;;AC000; code page + DW OFFSET IT2_437_XLAT,0 ;;AC000; table pointer + DW 850 ;;AC000; code page + DW OFFSET IT2_850_XLAT,0 ;;AC000; table pointer + ;; +;***************************************************************************** + EXTRN UK1_LOGIC:FAR ;;AN000; + EXTRN UK1_437_XLAT:FAR ;;AN000; + EXTRN UK1_850_XLAT:FAR ;;AN000; + ;; + UK1_LANG_ENT: ;;AN000; language entry for UNITED KINGDOM + DB 'UK' ;;AN000; SECONDARY KEYBOARD ID VALUE + DW 168 ;;AN000; ID entry + DW OFFSET UK1_LOGIC,0 ;;AN000; pointer to LANG kb table + DB 2 ;;AN000; number of ids + DB 2 ;;AN000; number of code pages + DW 437 ;;AN000; code page + DW OFFSET UK1_437_XLAT,0 ;;AN000; table pointer + DW 850 ;;AN000; code page + DW OFFSET UK1_850_XLAT,0 ;;AN000; table pointer + ;; +;***************************************************************************** + EXTRN UK2_LOGIC:FAR ;;AC000; + EXTRN UK2_437_XLAT:FAR ;;AC000; + EXTRN UK2_850_XLAT:FAR ;;AC000; + ;; + UK2_LANG_ENT: ;;AN000; language entry for UNITED KINGDOM + DB 'UK' ;;AC000; PRIMARY KEYBOARD ID VALUE + DW 166 ;;AC000; ID entry + DW OFFSET UK2_LOGIC,0 ;;AC000; pointer to LANG kb table + DB 1 ;; AN000;number of ids + DB 2 ;;AN000; number of code pages + DW 437 ;;AC000; code page + DW OFFSET UK2_437_XLAT,0 ;;AC000; table pointer + DW 850 ;;AC000; code page + DW OFFSET UK2_850_XLAT,0 ;;AC000; table pointer + ;; +;***************************************************************************** + EXTRN BE_LOGIC:NEAR ;; + EXTRN BE_437_XLAT:NEAR ;; + EXTRN BE_850_XLAT:NEAR ;; + ;; +BE_LANG_ENT: ;; language entry for BELGIUM + DB 'BE' ;; + DW 120 ;;AN000; ID entry + DW OFFSET BE_LOGIC,0 ;; pointer to LANG kb table + DB 1 ;;AN000; number of ids + DB 2 ;;AN000; number of code pages + DW 850 ;; code page ;; default to 850 - same as country.sys + DW OFFSET BE_850_XLAT,0 ;; table pointer + DW 437 ;; code page + DW OFFSET BE_437_XLAT,0 ;; table pointer + ;; +;***************************************************************************** +;***************************************************************************** + EXTRN NL_LOGIC:NEAR ;; + EXTRN NL_437_XLAT:NEAR ;; + EXTRN NL_850_XLAT:NEAR ;; + ;; + NL_LANG_ENT: ;; language entry for NETHERLANDS + DB 'NL' ;; + DW 143 ;;AN000; ID entry + DW OFFSET NL_LOGIC,0 ;; pointer to LANG kb table + DB 1 ;;AN000; number of ids + DB 2 ;;AN000; number of code pages + DW 437 ;; code page + DW OFFSET NL_437_XLAT,0 ;; table pointer + DW 850 ;; code page + DW OFFSET NL_850_XLAT,0 ;; table pointer + ;; +;***************************************************************************** +;***************************************************************************** + EXTRN NO_LOGIC:NEAR ;; + EXTRN NO_850_XLAT:NEAR ;;AC000; + EXTRN NO_865_XLAT:NEAR ;;AC000; + ;; + NO_LANG_ENT: ;; language entry for NORWAY + DB 'NO' ;; + DW 155 ;;AN000; ID entry + DW OFFSET NO_LOGIC,0 ;; pointer to LANG kb table + DB 1 ;;AN000; number of ids + DB 2 ;;AN000; number of code pages + DW 850 ;;AC000; code page + DW OFFSET NO_850_XLAT,0 ;;AC000; table pointer + DW 865 ;;AC000; code page + DW OFFSET NO_865_XLAT,0 ;;AC000; table pointer + ;; +;***************************************************************************** +;***************************************************************************** + EXTRN SV_LOGIC:NEAR ;; + EXTRN SV_437_XLAT:NEAR ;; + EXTRN SV_850_XLAT:NEAR ;; + ;; + SV_LANG_ENT: ;; language entry for SWEDEN + DB 'SV' ;; + DW 153 ;;AN000; ID entry + DW OFFSET SV_LOGIC,0 ;; pointer to LANG kb table + DB 1 ;;AN000; number of ids + DB 2 ;;AN000; number of code pages + DW 437 ;; code page + DW OFFSET SV_437_XLAT,0 ;; table pointer + DW 850 ;; code page + DW OFFSET SV_850_XLAT,0 ;; table pointer + ;; +;***************************************************************************** +;***************************************************************************** +;; Already declared external above +;; EXTRN Sv_LOGIC:NEAR ;; Finland & Sweden have same layout, +;; EXTRN Sv_437_XLAT:NEAR ;; but different code page defaults, +;; EXTRN Sv_850_XLAT:NEAR ;; use Sweden data for Finland + ;; + SU_LANG_ENT: ;; language entry for FINLAND + DB 'SU' ;; + DW 153 ;; ID entry + DW OFFSET Sv_LOGIC,0 ;; pointer to LANG kb table + DB 1 ;; number of ids + DB 2 ;; number of code pages + DW 850 ;; code page ;;;dcl 850 now default, March 8, 1988 + DW OFFSET Sv_850_XLAT,0 ;; table pointer + DW 437 ;; code page + DW OFFSET Sv_437_XLAT,0 ;; table pointer + ;; +;***************************************************************************** +;***************************************************************************** + EXTRN CF_LOGIC:NEAR ;; + EXTRN CF_863_XLAT:NEAR ;; + EXTRN CF_850_XLAT:NEAR ;; + ;; + CF_LANG_ENT: ;; language entry for Canadian-French + DB 'CF' ;; + DW 058 ;; ID entry + DW OFFSET CF_LOGIC,0 ;; pointer to LANG kb table + DB 1 ;; number of ids + DB 2 ;; number of code pages + DW 863 ;; code page + DW OFFSET CF_863_XLAT,0 ;; table pointer + DW 850 ;; code page + DW OFFSET CF_850_XLAT,0 ;; table pointer + ;; +;***************************************************************************** + EXTRN LA_LOGIC:NEAR ;; + EXTRN LA_850_XLAT:NEAR ;; + EXTRN LA_437_XLAT:NEAR ;; + ;; + LA_LANG_ENT: ;; language entry for LATIN AMERICAN + DB 'LA' ;; + DW 171 ;;AN000; ID entry + DW OFFSET LA_LOGIC,0 ;; pointer to LANG kb table + DB 1 ;;AN000; number of ids + DB 2 ;;AN000; number of code pages + DW 850 ;; code page + DW OFFSET LA_850_XLAT,0 ;; table pointer + DW 437 ;; code page ; default to 437 -same as country.sys + DW OFFSET LA_437_XLAT,0 ;; table pointer + ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; +DUMMY_ENT: ;; language entry + DB 'XX' ;; + DW 103 ;;AC000; ID entry + DW OFFSET DUMMY_LOGIC,0 ;; pointer to LANG kb table + DB 1 ;;AC000; number of ids + DB 5 ;;AC000; number of code pages + DW 437 ;; code page + DW OFFSET DUMMY_XLAT_437,0 ;; table pointer + DW 850 ;; code page + DW OFFSET DUMMY_XLAT_850,0 ;; table pointer + DW 860 ;; code page + DW OFFSET DUMMY_XLAT_860,0 ;; table pointer + DW 863 ;; code page + DW OFFSET DUMMY_XLAT_863,0 ;; table pointer + DW 865 ;; code page + DW OFFSET DUMMY_XLAT_865,0 ;; table pointer + ;; +DUMMY_LOGIC: ;; + DW LOGIC_END-$ ;; length + DW 0 ;; special features + DB 92H,0,0 ;; EXIT_STATE_LOGIC_COMMAND +LOGIC_END: ;; + ;; +DUMMY_XLAT_437: ;; + DW 6 ;; length of section + DW 437 ;; code page + DW 0 ;; LAST STATE + ;; +DUMMY_XLAT_850: ;; + DW 6 ;; length of section + DW 850 ;; code page + DW 0 ;; LAST STATE + ;; +DUMMY_XLAT_860: ;; + DW 6 ;; length of section + DW 860 ;; code page + DW 0 ;; LAST STATE + ;; +DUMMY_XLAT_865: ;; + DW 6 ;; length of section + DW 865 ;; code page + DW 0 ;; LAST STATE + ;; +DUMMY_XLAT_863: ;; + DW 6 ;; length of section + DW 863 ;; code page + DW 0 ;; LAST STATE + ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;***************************************************************************** +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;; +CODE ENDS ;; + END ;; -- cgit v1.2.3