kdfbr2.asm
资源名称:DOS系统的源代码.rar [点击查看]
上传用户:xiaoan1112
上传日期:2013-04-11
资源大小:19621k
文件大小:53k
源码类别:
操作系统开发
开发平台:
Visual C++
- ;/* Microsoft Confidential
- ; * Copyright (C) Microsoft Corporation 1991
- ; * All Rights Reserved.
- ; */
- ;; XT section enabled
- ;; ************* CNS 12/18/86
- PAGE ,132
- TITLE MS-DOS 5.0 Keyboard Definition File
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; MS-DOS 5.0 - NLS Support - Keyboard Defintion File
- ;;
- ;; This file contains the keyboard tables for Brazil
- ;;
- ;; Linkage Instructions:
- ;; Refer to KDF.ASM.
- ;;
- ;; Author: BILL DEVLIN - IBM Canada Laboratory - May 1986
- ;; Adapted for Brazil by Mihindu Senanayake (Microsoft) - Oct 1990
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- INCLUDE KEYBSHAR.INC ;;
- INCLUDE POSTEQU.INC ;;
- INCLUDE KEYBMAC.INC ;;
- ;;
- PUBLIC BR2_LOGIC ;;
- PUBLIC BR2_437_XLAT ;;
- PUBLIC BR2_850_XLAT ;;
- ;;
- CODE SEGMENT PUBLIC 'CODE' ;;
- ASSUME CS:CODE,DS:CODE ;;
- ;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; Standard translate table options are a linear search table
- ;; (TYPE_2_TAB) and ASCII entries ONLY (ASCII_ONLY)
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- STANDARD_TABLE EQU TYPE_2_TAB+ASCII_ONLY
- ;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; BR State Logic
- ;;***************************************
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- BR2_LOGIC:
- DW LOGIC_END-$ ;; length
- ;;
- DW 0 ;; special features
- ;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; COMMANDS START HERE
- ;; OPTIONS: If we find a scan match in
- ;; an XLATT or SET_FLAG operation then
- ;; exit from INT 9.
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- OPTION EXIT_IF_FOUND ;;
- ;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; Dead key definitions must come before
- ;; dead key translations to handle
- ;; dead key + dead key.
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- IFF EITHER_ALT,NOT ;;
- ANDF EITHER_CTL,NOT ;;
- IFF EITHER_SHIFT ;;
- IFF CIRCUMFLEX ;;
- RESET_NLS ;;
- XLATT CIRCUMFLEX_CIRCUMFLEX ;;
- SET_FLAG DEAD_UPPER ;;
- GOTO CIRCUMFLEX_ON ;;
- ENDIFF ;;
- IFF TILDE ;;
- RESET_NLS ;;
- XLATT TILDE_TILDE ;;
- SET_FLAG DEAD_UPPER ;;
- GOTO TILDE_ON ;;
- ENDIFF ;;
- IFF DIARESIS ;;
- RESET_NLS ;;
- XLATT DIARESIS_DIARESIS ;;
- SET_FLAG DEAD_UPPER ;;
- GOTO DIARESIS_ON ;;
- ENDIFF ;;
- SET_FLAG DEAD_UPPER ;;
- ELSEF
- IFF GRAVE ;;
- RESET_NLS ;;
- XLATT GRAVE_GRAVE ;;
- SET_FLAG DEAD_LOWER
- GOTO GRAVE_ON ;;
- ENDIFF ;;
- IFF ACUTE ;;
- RESET_NLS ;;
- XLATT ACUTE_ACUTE ;;
- SET_FLAG DEAD_LOWER
- GOTO ACUTE_ON ;;
- ENDIFF ;;
- SET_FLAG DEAD_LOWER
- ENDIFF ;;
- ENDIFF ;;
- ;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; ACUTE ACCENT TRANSLATIONS
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- ACUTE_PROC:
- ;;
- IFF ACUTE,NOT ;;
- GOTO DIARESIS_PROC ;;
- ENDIFF ;;
- ;;
- RESET_NLS ;;
- ACUTE_ON: ;;
- IFF R_ALT_SHIFT,NOT ;;
- XLATT ACUTE_SPACE ;;
- ENDIFF ;;
- IFF EITHER_CTL,NOT ;;
- ANDF EITHER_ALT,NOT ;;
- IFF EITHER_SHIFT ;;
- IFF CAPS_STATE ;;
- XLATT ACUTE_LOWER ;;
- ELSEF ;;
- XLATT ACUTE_UPPER ;;
- ENDIFF ;;
- ELSEF ;;
- IFF CAPS_STATE ;;
- XLATT ACUTE_UPPER ;;
- ELSEF ;;
- XLATT ACUTE_LOWER ;;
- ENDIFF ;;
- ENDIFF ;;
- ENDIFF ;;
- ;;
- INVALID_ACUTE: ;;
- PUT_ERROR_CHAR ACUTE_LOWER ;; If we get here then either the XLATT
- BEEP ;; failed or we are ina bad shift state.
- GOTO NON_DEAD ;; Either is invalid so BEEP and fall
- ;; through to generate the second char.
- ;; Note that the dead key flag will be
- ;; reset before we get here.
- ;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; DIARESIS ACCENT TRANSLATIONS
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- DIARESIS_PROC: ;;
- ;;
- IFF DIARESIS,NOT ;;
- GOTO GRAVE_PROC ;;
- ENDIFF ;;
- ;;
- RESET_NLS ;;
- DIARESIS_ON: ;;
- IFF R_ALT_SHIFT,NOT ;;
- XLATT DIARESIS_SPACE ;;
- ENDIFF ;;
- IFF EITHER_CTL,NOT ;;
- ANDF EITHER_ALT,NOT ;;
- IFF EITHER_SHIFT ;;
- IFF CAPS_STATE ;;
- XLATT DIARESIS_LOWER ;;
- ELSEF ;;
- XLATT DIARESIS_UPPER ;;
- ENDIFF ;;
- ELSEF ;;
- IFF CAPS_STATE ;;
- XLATT DIARESIS_UPPER ;;
- ELSEF ;;
- XLATT DIARESIS_LOWER ;;
- ENDIFF ;;
- ENDIFF ;;
- ENDIFF ;;
- ;;
- INVALID_DIARESIS: ;;
- PUT_ERROR_CHAR DIARESIS_LOWER ;; standalone accent
- BEEP ;; Invalid dead key combo.
- GOTO NON_DEAD ;;
- ;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; GRAVE ACCENT TRANSLATIONS
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- GRAVE_PROC: ;;
- ;;
- IFF GRAVE,NOT ;;
- GOTO TILDE_PROC ;;
- ENDIFF ;;
- ;;
- RESET_NLS ;;
- GRAVE_ON: ;;
- IFF R_ALT_SHIFT,NOT ;;
- XLATT GRAVE_SPACE ;;
- ENDIFF ;;
- IFF EITHER_CTL,NOT ;;
- ANDF EITHER_ALT,NOT ;;
- IFF EITHER_SHIFT ;;
- IFF CAPS_STATE ;;
- XLATT GRAVE_LOWER ;;
- ELSEF ;;
- XLATT GRAVE_UPPER ;;
- ENDIFF ;;
- ELSEF ;;
- IFF CAPS_STATE,NOT ;;
- XLATT GRAVE_LOWER ;;
- ELSEF ;;
- XLATT GRAVE_UPPER ;;
- ENDIFF ;;
- ENDIFF ;;
- ENDIFF ;;
- ;;
- INVALID_GRAVE: ;;
- PUT_ERROR_CHAR GRAVE_LOWER ;; standalone accent
- BEEP ;; Invalid dead key combo.
- GOTO NON_DEAD ;;
- ;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; TILDE ACCENT TRANSLATIONS
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- TILDE_PROC: ;;
- ;;
- IFF TILDE,NOT ;;
- GOTO CIRCUMFLEX_PROC ;;
- ENDIFF ;;
- ;;
- RESET_NLS ;;
- TILDE_ON: ;;
- IFF R_ALT_SHIFT,NOT ;;
- XLATT TILDE_SPACE ;;
- ENDIFF ;;
- IFF EITHER_CTL,NOT ;;
- ANDF EITHER_ALT,NOT ;;
- IFF EITHER_SHIFT ;;
- IFF CAPS_STATE ;;
- XLATT TILDE_LOWER ;;
- ELSEF ;;
- XLATT TILDE_UPPER ;;
- ENDIFF ;;
- ELSEF ;;
- IFF CAPS_STATE ;;
- XLATT TILDE_UPPER ;;
- ELSEF ;;
- XLATT TILDE_LOWER ;;
- ENDIFF ;;
- ENDIFF ;;
- ENDIFF ;;
- ;;
- INVALID_TILDE: ;;
- PUT_ERROR_CHAR TILDE_LOWER ;; standalone accent
- BEEP ;; Invalid dead key combo.
- GOTO NON_DEAD ;;
- ;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; CIRCUMFLEX ACCENT TRANSLATIONS
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- CIRCUMFLEX_PROC: ;;
- ;;
- IFF CIRCUMFLEX,NOT ;;
- GOTO NON_DEAD ;;
- ENDIFF ;;
- ;;
- RESET_NLS ;;
- CIRCUMFLEX_ON: ;;
- IFF R_ALT_SHIFT,NOT ;;
- XLATT CIRCUMFLEX_SPACE ;;
- ENDIFF ;;
- IFF EITHER_CTL,NOT ;;
- ANDF EITHER_ALT,NOT ;;
- IFF EITHER_SHIFT ;;
- IFF CAPS_STATE ;;
- XLATT CIRCUMFLEX_LOWER ;;
- ELSEF ;;
- XLATT CIRCUMFLEX_UPPER ;;
- ENDIFF ;;
- ELSEF ;;
- IFF CAPS_STATE,NOT ;;
- XLATT CIRCUMFLEX_LOWER ;;
- ELSEF ;;
- XLATT CIRCUMFLEX_UPPER ;;
- ENDIFF ;;
- ENDIFF ;;
- ENDIFF ;;
- ;;
- INVALID_CIRCUMFLEX: ;;
- PUT_ERROR_CHAR CIRCUMFLEX_LOWER ;; standalone accent
- BEEP ;; Invalid dead key combo.
- GOTO NON_DEAD ;;
- ;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; Upper, lower and third shifts
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- NON_DEAD: ;;
- IFKBD G_KB+P12_KB+XT_KB ;; Avoid accidentally translating
- ANDF LC_E0 ;; the "/" on the numeric pad of the
- EXIT_STATE_LOGIC ;; G keyboard
- ENDIFF ;;
- ;;
- IFF EITHER_ALT,NOT ;; Lower and upper case. Alphabetic
- ANDF EITHER_CTL,NOT ;; keys are affected by CAPS LOCK.
- IFF EITHER_SHIFT ;; Numeric keys are not.
- ; <verav>: support for numeric pad comma/del key ;;
- iff NUM_STATE,NOT ;;
- xlatt NUMERIC_PAD ;;
- endiff ;;
- ; <verav> ;;
- XLATT NON_ALPHA_UPPER ;;
- IFF CAPS_STATE ;;
- XLATT ALPHA_LOWER ;;
- ELSEF ;;
- XLATT ALPHA_UPPER ;;
- ENDIFF ;;
- ELSEF ;;
- ; <verav>: support for numeric pad comma/del key ;;
- iff NUM_STATE ;;
- xlatt NUMERIC_PAD ;;
- endiff ;;
- ; <verav> ;;
- XLATT NON_ALPHA_LOWER ;;
- IFF CAPS_STATE ;;
- XLATT ALPHA_UPPER ;;
- ELSEF ;;
- XLATT ALPHA_LOWER ;;
- ENDIFF ;;
- ENDIFF ;;
- ELSEF ;;
- ; IFF EITHER_SHIFT,NOT ;;
- ; IFKBD XT_KB+AT_KB ;;
- ; IFF EITHER_CTL ;;
- ; ANDF ALT_SHIFT ;;
- ; XLATT THIRD_SHIFT ;;
- ; ENDIFF ;;
- ; ELSEF ;;
- IFF EITHER_CTL,NOT ;;
- ANDF R_ALT_SHIFT ;;
- XLATT THIRD_SHIFT ;;
- ENDIFF ;;
- ; ENDIFF ;;
- ; ENDIFF ;;
- ENDIFF ;;
- ;**************************************;;
- ; IFF EITHER_SHIFT,NOT ;;
- ; IFKBD XT_KB+AT_KB ;;
- ; IFF EITHER_CTL ;;
- ; ANDF ALT_SHIFT ;;
- ; XLATT ALT_CASE ;;
- ; ENDIFF ;;
- ; ENDIFF ;;
- ; IFKBD G_KB+P12_KB ;; retirei o bloco
- ; IFF EITHER_CTL ;;
- ; ANDF ALT_SHIFT ;;
- ; IFF R_ALT_SHIFT,NOT ;;
- ; XLATT ALT_CASE ;;
- ; ENDIFF ;;
- ; ENDIFF ;;
- ; ENDIFF ;;
- ; ENDIFF ;;
- ;**************************************;;
- ; IFKBD AT_KB+XT_KB ;;
- ; IFF EITHER_CTL,NOT ;;
- ; IFF ALT_SHIFT ;; ALT - case
- ; XLATT ALT_CASE ;;
- ; ENDIFF ;;
- ; ELSEF ;;
- ; IFF EITHER_ALT,NOT ;; CTRL - case
- ;
- ; XLATT CTRL_CASE ;;
- ; ENDIFF ;;
- ; ENDIFF ;;
- ; ENDIFF ;;
- ;;
- ; IFKBD G_KB+P12_KB ;;
- ; IFF EITHER_CTL,NOT ;;
- ; IFF ALT_SHIFT ;; ALT - case
- ; ANDF R_ALT_SHIFT,NOT ;;
- ; XLATT ALT_CASE ;;
- ; ENDIFF ;;
- ; ELSEF ;;
- IFF EITHER_ALT,NOT ;; CTRL - case
- andf EITHER_CTL ;; Cuidado!!!!!!
- XLATT CTRL_CASE ;;
- ENDIFF ;;
- ; ENDIFF ;;
- ; IFF EITHER_CTL ;;
- ; ANDF ALT_SHIFT ;;
- ; ANDF R_ALT_SHIFT,NOT ;;
- ; XLATT ALT_CASE ;;
- ; ENDIFF ;;
- ; ENDIFF ;;
- ;;
- EXIT_STATE_LOGIC ;;
- ;;
- LOGIC_END: ;;
- ;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; BR Common Translate Section
- ;; This section contains translations for the lower 128 characters
- ;; only since these will never change from code page to code page.
- ;; In addition the dead key "Set Flag" tables are here since the
- ;; dead keys are on the same keytops for all code pages.
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- PUBLIC BR2_COMMON_XLAT ;;
- BR2_COMMON_XLAT: ;;
- ;;
- DW COMMON_XLAT_END-$ ;; length of section
- DW -1 ;; code page
- ;;
- ;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; CODE PAGE: Common
- ;; STATE: Lower Shift Dead Key
- ;; KEYBOARD TYPES: Any
- ;; TABLE TYPE: Flag Table
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- DW COM_DK_LO_K1_END-$ ;; length of state section
- DB DEAD_LOWER ;; State ID
- DW ANY_KB ;; Keyboard Type
- DB -1,-1 ;; Buffer entry for error character
- ;; Set Flag Table
- DW 2 ;; number of entries
- DB 1ah ;; scan code
- FLAG ACUTE ;; flag bit to set
- DB 28H ;; <verav 12/91>
- FLAG TILDE ;;
- COM_DK_LO_K1_END: ;;
- ;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; CODE PAGE: Common
- ;; STATE: Upper Shift Dead Key
- ;; KEYBOARD TYPES: Any,
- ;; TABLE TYPE: Flag Table
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- DW COM_DK_UP_K1_END-$ ;; length of state section
- DB DEAD_UPPER ;; State ID
- DW ANY_KB ;; Keyboard Type
- DB -1,-1 ;; Buffer entry for error character
- ;; Set Flag Table
- DW 3 ;; number of entries
- DB 28h ;; scan code <verav 12/91>
- FLAG CIRCUMFLEX ;; flag bit to set
- DB 7 ;; <verav 12/91>
- FLAG DIARESIS ;;
- DB 1ah ;; <verav 12/91>
- FLAG GRAVE ;;
- ;;
- COM_DK_UP_K1_END: ;;
- ;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; CODE PAGE: Common
- ;; STATE: Grave Lower
- ;; KEYBOARD TYPES: Any,
- ;; TABLE TYPE: Translate
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- DW COM_GR_LO_END-$ ;; length of state section
- DB GRAVE_LOWER ;; State ID
- DW ANY_KB ;; Keyboard Type
- DB 96,0 ;; error character = standalone accent
- ;;
- DW COM_GR_LO_T1_END-$ ;; Size of xlat table
- DB STANDARD_TABLE+ZERO_SCAN ;; xlat options:
- DB 5 ;; number of scans
- DB 18,'