;/*                      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 - type 275
;;
;; Linkage Instructions:
;;      Refer to KDF.ASM.
;;
;; Author:     BILL DEVLIN  - IBM Canada Laboratory - May 1986
;;             Adapted for Brazil by Mihindu Senanayake (Microsoft) - Oct 1990
;;             Adapted for IBM Brazil by Vera Vaitekunas (Microsoft - verav) - January 92
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
	INCLUDE KEYBSHAR.INC           ;;
	INCLUDE POSTEQU.INC            ;;
	INCLUDE KEYBMAC.INC            ;;
				       ;;
	PUBLIC BR_LOGIC                ;;
	PUBLIC BR_437_XLAT             ;;
	PUBLIC BR_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
;;***************************************
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
BR_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                   ;; 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.
	  XLATT NON_ALPHA_UPPER        ;;
	  IFF CAPS_STATE               ;;
	      XLATT ALPHA_LOWER        ;;
	  ELSEF                        ;;
	      XLATT ALPHA_UPPER        ;;
	  ENDIFF                       ;;
      ELSEF                            ;;
	  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                   ;;
     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
	    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 BR_COMMON_XLAT_275             ;;
BR_COMMON_XLAT_275:                    ;;
				       ;;
   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                           ;;    
   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
   FLAG  CIRCUMFLEX                    ;; flag bit to set
   DB    7                             ;;
   FLAG  DIARESIS                      ;;
   DB    1ah                           ;;
   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,'�'                        ;; scan code,ASCII - e
   DB    22,'�'                        ;; scan code,ASCII - u
   DB    23,'�'                        ;; scan code,ASCII - i
   DB    24,'�'                        ;; scan code,ASCII - o
   DB    30,'�'                        ;; scan code,ASCII - a
				       ;;
COM_GR_LO_T1_END:                      ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_GR_LO_END:                         ;; length of state section
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Grave Space Bar
;; KEYBOARD TYPES: Any,
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_GR_SP_END-$               ;; length of state section
   DB    GRAVE_SPACE                   ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    96,0                          ;; error character = standalone accent
				       ;;
   DW    COM_GR_SP_T1_END-$            ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    1                             ;; number of scans
   DB    57,96                         ;; STANDALONE GRAVE
				       ;;
COM_GR_SP_T1_END:                      ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_GR_SP_END:                         ;; length of state section
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Grave Twice
;; KEYBOARD TYPES: Any,
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_GR_GR_END-$               ;; length of state section
   DB    GRAVE_GRAVE                   ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    96,0                          ;; error character = standalone accent
				       ;;
   DW    COM_GR_GR_T1_END-$            ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    1                             ;; number of scans
   DB    54h,96                        ;; STANDALONE GRAVE     <verav>
				       ;;
COM_GR_GR_T1_END:                      ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_GR_GR_END:                         ;; length of state section
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Circumflex Lower
;; KEYBOARD TYPES: Any,
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_CI_LO_END-$               ;; length of state section
   DB    CIRCUMFLEX_LOWER              ;; State ID
   DW    ANY_KB             ;; Keyboard Type
   DB    94,0                          ;; error character = standalone accent
				       ;;
   DW    COM_CI_LO_T1_END-$            ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    5                             ;; number of scans
   DB    18,'�'                        ;; scan code,ASCII - e
   DB    22,'�'                        ;; scan code,ASCII - u
   DB    23,'�'                        ;; scan code,ASCII - i
   DB    24,'�'                        ;; scan code,ASCII - o
   DB    30,'�'                        ;; scan code,ASCII - a
				       ;;
COM_CI_LO_T1_END:                      ;;
				       ;;
   DW    0                             ;;
				       ;;
COM_CI_LO_END:                         ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Circumflex Space Bar
;; KEYBOARD TYPES: Any,
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_CI_SP_END-$               ;; length of state section
   DB    CIRCUMFLEX_SPACE              ;; State ID
   DW    ANY_KB             ;; Keyboard Type
   DB    94,0                          ;; error character = standalone accent
				       ;;
   DW    COM_CI_SP_T1_END-$            ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    1                             ;; number of scans
   DB    57,94                         ;; STANDALONE CIRCUMFLEX
				       ;;
COM_CI_SP_T1_END:                      ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_CI_SP_END:                         ;; length of state section
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Circumflex Twice
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_CI_CI_END-$               ;; length of state section
   DB    CIRCUMFLEX_CIRCUMFLEX              ;; State ID
   DW    ANY_KB             ;; Keyboard Type
   DB    94,0                          ;; error character = standalone accent
				       ;;
   DW    COM_CI_CI_T1_END-$            ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    1                             ;; number of scans
   DB    7,94                          ;; STANDALONE CIRCUMFLEX
				       ;;
COM_CI_CI_T1_END:                      ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_CI_CI_END:                         ;; length of state section
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Tilde Lower
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_TI_LO_K1_END-$            ;; length of state section
   DB    TILDE_LOWER                   ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    07EH,0                        ;; error character = standalone accent
				       ;;
   DW    COM_TI_LO_K1_T1_END-$         ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    1                             ;; number of scans
   DB    49,0A4H                       ;; scan code,ASCII - �
				       ;;
COM_TI_LO_K1_T1_END:                   ;;
				       ;;
   DW    0                             ;;
				       ;;
COM_TI_LO_K1_END:                      ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Tilde Upper Case
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_TI_UP_K1_END-$            ;; length of state section
   DB    TILDE_UPPER                   ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    07EH,0                        ;; error character = standalone accent
				       ;;
   DW    COM_TI_UP_K1_T1_END-$         ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    1                             ;; number of scans
   DB    49,0A5H                       ;; scan code,ASCII - �
				       ;;
COM_TI_UP_K1_T1_END:                   ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_TI_UP_K1_END:                      ;; length of state section
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Tilde Space Bar
;; KEYBOARD TYPES: Any,
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_TI_SP_END-$               ;; length of state section
   DB    TILDE_SPACE                   ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    07EH,0                        ;; error character = standalone accent
				       ;;
   DW    COM_TI_SP_T1_END-$            ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    1                             ;; number of scans
   DB    57,07EH                       ;; STANDALONE TILDE
				       ;;
COM_TI_SP_T1_END:                      ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_TI_SP_END:                         ;; length of state section
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Tilde Twice
;; KEYBOARD TYPES: Any,
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_TI_TI_END-$               ;; length of state section
   DB    TILDE_TILDE                   ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    07EH,0                        ;; error character = standalone accent
				       ;;
   DW    COM_TI_TI_T1_END-$            ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    1                             ;; number of scans
   DB    54h,07EH                      ;; STANDALONE TILDE   <verav>
				       ;;
COM_TI_TI_T1_END:                      ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_TI_TI_END:                         ;; length of state section
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Acute Lower Case
;; KEYBOARD TYPES: Any,
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_AC_LO_END-$               ;; length of state section
   DB    ACUTE_LOWER                   ;; State ID
   DW    ANY_KB             ;; Keyboard Type
   DB    39,0                          ;; error character = standalone accent
				       ;;
   DW    COM_AC_LO_T1_END-$            ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    6                             ;; number of scans
   DB    18,'�'                        ;; scan code,ASCII - e
   DB    22,'�'                        ;; scan code,ASCII - u
   DB    23,'�'                        ;; scan code,ASCII - i
   DB    24,'�'                        ;; scan code,ASCII - o
   DB    30,'�'                        ;; scan code,ASCII - a
   DB    46,'�'                        ;; scan code,ASCII - c-cedilla
				       ;;
COM_AC_LO_T1_END:                      ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_AC_LO_END:                         ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Acute Upper Case
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_AC_UP_END-$             ;; length of state section
   DB    ACUTE_UPPER                   ;; State ID
   DW    ANY_KB             ;; Keyboard Type
   DB    39,0                          ;; error character = standalone accent
				       ;;
   DW    COM_AC_UP_T1_END-$          ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    2                             ;; number of scans
   DB    18,090H                       ;; scan code,ASCII - E
   DB    46,080H                       ;; C cedilla
				       ;;
COM_AC_UP_T1_END:                      ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_AC_UP_END:                         ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Acute Space Bar
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_AC_SP_END-$               ;; length of state section
   DB    ACUTE_SPACE                   ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    39,0                          ;; error character = standalone accent
				       ;;
   DW    COM_AC_SP_T1_END-$            ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    1                            ;; number of scans
   DB    57,39                         ;; scan code,ASCII - SPACE
				       ;;
COM_AC_SP_T1_END:                      ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_AC_SP_END:                         ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Acute Twice
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_AC_AC_END-$               ;; length of state section
   DB    ACUTE_ACUTE                   ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    39,0                          ;; error character = standalone accent
				       ;;
   DW    COM_AC_AC_T1_END-$            ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    1                             ;; number of scans
   DB    1ah,39                        ;; scan code,ASCII - ACUTE 
				       ;;
COM_AC_AC_T1_END:                      ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_AC_AC_END:                         ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Diaresis Lower
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_DI_LO_END-$               ;; length of state section
   DB    DIARESIS_LOWER                ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    '�',0                         ;; error character = standalone accent
				       ;;
   DW    COM_DI_LO_T1_END-$            ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    6                             ;; number of scans
   DB    18,089H                       ;;    e diaeresis
   DB    21,098H                       ;;    y diaeresis
   DB    22,081H                       ;;    u diaeresis
   DB    23,08BH                       ;;    i diaeresis
   DB    24,094H                       ;;    o diaeresis
   DB    30,084H                       ;;    a diaeresis
				       ;;
COM_DI_LO_T1_END:                      ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_DI_LO_END:                         ;; length of state section
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Diaresis Upper
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_DI_UP_END-$               ;; length of state section
   DB    DIARESIS_UPPER                ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    -1,-1                         ;; error character = standalone accent
				       ;;
   DW    COM_DI_UP_T1_END-$            ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    3                             ;; number of scans
   DB    22,09AH                       ;;    U diaeresis
   DB    24,099H                       ;;    O diaeresis
   DB    30,08EH                       ;;    A diaeresis
				       ;;
COM_DI_UP_T1_END:                      ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_DI_UP_END:                         ;; length of state section

				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Diaresis Space Bar
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
;   DW    COM_DI_SP_END-$               ;; length of state section
;   DB    DIARESIS_SPACE                ;; State ID
;   DW    ANY_KB                        ;; Keyboard Type
;   DB    '�',0                         ;; error character = standalone accent
				       ;;
;   DW    COM_DI_SP_T1_END-$            ;; Size of xlat table
;   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
;   DB    1                             ;; number of scans
;   DB    7,'"'                         ;; scan code,ASCII - SPACE
				       ;;
;COM_DI_SP_T1_END:                      ;;
				       ;;
;   DW    0                             ;; Size of xlat table - null table
				       ;;
;COM_DI_SP_END:                         ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Diaresis Twice
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_DI_DI_END-$               ;; length of state section
   DB    DIARESIS_DIARESIS             ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    '�',0                         ;; error character = standalone accent
				       ;;
   DW    COM_DI_DI_T1_END-$            ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    1                             ;; number of scans
   DB    1ah,'�'     ;; scan code,ASCII - SPACE      <verav>
				       ;;
COM_DI_DI_T1_END:                      ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_DI_DI_END:                         ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Alpha lower case
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_ALC_END-$                 ;; length of state section
   DB    ALPHA_LOWER                   ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    -1,-1                         ;; error character - buffer entry
				       ;;
   DW    COM_ALC_T1_END-$              ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    1                             ;; number of scans
   db    27h,'�'                       ;; cedilha
COM_ALC_T1_END:                        ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_ALC_END:                           ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Alpha Upper case
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_AUC_END-$                 ;; length of state section
   DB    ALPHA_UPPER                   ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    -1,-1                         ;; error character - buffer entry
				       ;;
   DW    COM_AUC_T1_END-$              ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    1                             ;; number of scans
   db    27h,80h                       ;; cedilha
COM_AUC_T1_END:                        ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_AUC_END:                           ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Non-Alpha lower case
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_NALC_END-$                ;; length of state section
   DB    NON_ALPHA_LOWER               ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    -1,-1                         ;; error character - buffer entry
				       ;;
   DW    COM_NALC_T1_END-$             ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    7                             ;; number of scans
   DB    29h,27h                       ;; apostrofe
   db    35h,';'                       ;; ponto e virgula
   db    73h,'/'                       ;; barra
   db    7eh,'.'                       ;; (decimal point)
   db    1bh,5bh                       ;; abre colchete
   db    2bh,5dh                       ;; fecha colchete
   db    53h,','                       ;; decimal comma
COM_NALC_T1_END:                       ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_NALC_END:                          ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: NON-Alpha UPPER case
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    COM_NAUC_END-$                ;; length of state section
   DB    NON_ALPHA_UPPER               ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    -1,-1                         ;; error character - buffer entry
				       ;;
   DW    COM_NAUC_T1_END-$             ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    7                             ;; number of scans
   DB    29h,22h                       ;; ASPAS
   db    35h,3AH                       ;; DOIS PONTOS
   db    73h,3FH                       ;; INTERROGACAO
   db    7eh,'.'                       ;; (decimal point)
   db    1bh,7bh                       ;; abre chaves
   db    2bh,7dh                       ;; fecha chaves
   db    53h,','                       ;; virgula no teclado numerico
COM_NAUC_T1_END:                       ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
COM_NAUC_END:                          ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: Common
;; STATE: Third Shift
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                       ;;
   DW    COM_THIRD_K1_END-$            ;; length of state section
   DB    THIRD_SHIFT                   ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    -1,-1                         ;; Buffer entry for error character
                                       ;;
   DW    COM_THIRD_K1_T1_END-$         ;; Size of xlat table
   DB    STANDARD_TABLE                ;; xlat options:
   DB    3                             ;; number of entries
   DB    16,'/'                         ; AltGr + Q = slash
   DB    17,'?'                         ; AltGr + W = question mark
   DB    18,0f8h                        ; AltGr + E = degree sign
COM_THIRD_K1_T1_END:                   ;;
                                       ;;
   DW    0                             ;; Last xlat table
COM_THIRD_K1_END:                      ;;
                                       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   
   DW    0                             ;; Last State
COMMON_XLAT_END:                       ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;***************************************
;; BR Specific Translate Section for 437
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
 PUBLIC BR_437_XLAT                    ;;
BR_437_XLAT:                           ;;
				       ;;
   DW     CP437_XLAT_END-$             ;; length of section
   DW     437                          ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   DW     0                            ;; LAST STATE
				       ;;
CP437_XLAT_END:                        ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; BR Specific Translate Section for 850
;;***************************************
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
 PUBLIC BR_850_XLAT                    ;;
BR_850_XLAT:                           ;;
				       ;;
   DW     CP850_XLAT_END-$             ;; length of section
   DW     850                          ;;
				       ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: 850
;; STATE: Alt Case
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    CP850_ALT_K1_END-$               ;; length of state section
   DB    ALT_CASE                      ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    -1,-1                         ;; error character = standalone accent
				       ;;
   DW    CP850_ALT_K1_T1_END-$         ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
; Atencao! esta tecla esta apenas programada para permitir
; a utilizacao do "?"
   DB    1                             ;; number of scans      
   DB    2,'?'                         ;; scan code for '!', question mark
CP850_ALT_K1_T1_END:                   ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
CP850_ALT_K1_END:                      ;; length of state section
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: 850
;; STATE: Third Shift
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    CP850_THIRD_K1_END-$               ;; length of state section
   DB    THIRD_SHIFT                   ;; State ID
   DW    ANY_KB             ;; Keyboard Type
   DB    -1,-1                         ;; Buffer entry for error character
				       ;;
   DW    CP850_THIRD_K1_T1_END-$       ;; Size of xlat table
   DB    STANDARD_TABLE                ;; xlat options:
   DB    10                            ;; number of entries
;   DB    1ah,0F9H                      ;; scan code, diaresis   <verav>
   db    2,0fbh                        ; exp 1       �
   db    3,0fdh                        ; exp 2       �     
   db    4,0fch                        ; exp 3       �
   db    5,09ch                        ; libra
   db    6,0bdh                        ; cent
   db    7,0aah                        ; not
   db    1bh,0a6h                      ; primeira
   db    2bh,0a7h                      ; primeiro
   db    73h,0f8h                      ; grau
   db    0dh,0f5h
CP850_THIRD_K1_T1_END:                 ;;
				       ;;
   DW    0                             ;; Last xlat table
CP850_THIRD_K1_END:                         ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: 850
;; STATE: Acute Lower Case
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    CP850_AC_LO_END-$             ;; length of state section
   DB    ACUTE_LOWER                   ;; State ID
   DW    ANY_KB             ;; Keyboard Type
   DB    39,0                          ;; error character = standalone accent
				       ;;
   DW    CP850_AC_LO_T1_END-$          ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    1                             ;; number of scans
   DB    21,0ECH                       ;; y acute
				       ;;
CP850_AC_LO_T1_END:                    ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
CP850_AC_LO_END:                       ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: 850
;; STATE: Acute Upper Case
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    CP850_AC_UP_END-$             ;; length of state section
   DB    ACUTE_UPPER                   ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    39,0                          ;; error character = standalone accent
				       ;;
   DW    CP850_AC_UP_T1_END-$          ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    5                             ;; number of scans
   DB    21,0EDH                       ;;    Y acute
   DB    22,0E9H                       ;;    U acute
   DB    23,0D6H                       ;;    I acute
   DB    24,0E0H                       ;;    O acute
   DB    30,0B5H                       ;;    A acute
				       ;;
CP850_AC_UP_T1_END:                    ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
CP850_AC_UP_END:                       ;;
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: 850
;; STATE: Diaresis Lower
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    CP850_DI_LO_END-$             ;; length of state section
   DB    DIARESIS_LOWER                ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    '"',0			                      ;; error character = standalone accent
				       ;;
   DW    CP850_DI_LO_T1_END-$          ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    0                             ;; number of scans
				       ;;
CP850_DI_LO_T1_END:                    ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
CP850_DI_LO_END:                       ;; length of state section
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: 850
;; STATE: Diaresis Upper
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    CP850_DI_UP_END-$             ;; length of state section
   DB    DIARESIS_UPPER                ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    '"',0                         ;; error character = standalone accent
				       ;;
   DW    CP850_DI_UP_T1_END-$          ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    2                             ;; number of scans
   DB    18,0D3H                       ;;    E diaeresis
   DB    23,0D8H                       ;;    I diaeresis
				       ;;
CP850_DI_UP_T1_END:                    ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
CP850_DI_UP_END:                       ;; length of state section
				       ;;
;;;   Esta' Certo?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: 850
;; STATE: Diaresis Space Bar
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    cp850_DI_SP_END-$               ;; length of state section
   DB    DIARESIS_SPACE                ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    '�',0                         ;; error character = standalone accent
				       ;;
   DW    cp850_DI_SP_T1_END-$            ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    1                             ;; number of scans
   DB    7,'�'                         ;; scan code,ASCII - SPACE
				       ;;
Cp850_DI_SP_T1_END:                      ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
cp850_DI_SP_END:                       ;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: 850
;; STATE: Grave Upper
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    CP850_GR_UP_END-$             ;; length of state section
   DB    GRAVE_UPPER                   ;; State ID
   DW    ANY_KB             ;; Keyboard Type
   DB    96,0                          ;; error character = standalone accent
				       ;;
   DW    CP850_GR_UP_T1_END-$          ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    5                             ;; number of scans
   DB    30,0B7H                       ;;    A grave
   DB    18,0D4H                       ;;    E grave
   DB    23,0DEH                       ;;    I grave
   DB    24,0E3H                       ;;    O grave
   DB    22,0EBH                       ;;    U grave
CP850_GR_UP_T1_END:                    ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
CP850_GR_UP_END:                       ;; length of state section
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: 850
;; STATE: Tilde Lower
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
					;;
    DW    CP850_TI_LO_END-$               ;; length of state section
    DB    TILDE_LOWER                   ;; State ID
    DW    ANY_KB             ;; Keyboard Type
    DB    07EH,0                        ;; error character = standalone accent
					;;
    DW    CP850_TI_LO_T1_END-$            ;; Size of xlat table
    DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
    DB    2                             ;; number of scans
    DB    30,0C6H                       ;; scan code,ASCII - a tilde
    DB    24,0E4H                       ;; scan code,ASCII - o tilde
					;;
 CP850_TI_LO_T1_END:                      ;;
					;;
    DW    0                             ;;
					;;
 CP850_TI_LO_END:                         ;;
					;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: 850
;; STATE: Tilde Upper Case
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
    DW    CP850_TI_UP_END-$            ;; length of state section
    DB    TILDE_UPPER                  ;; State ID
    DW    ANY_KB                       ;; Keyboard Type
    DB    07eH,0                       ;; error character = standalone accent
				       ;;
    DW    CP850_TI_UP_T1_END-$          ;; Size of xlat table
    DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
    DB    2                             ;; number of scans
    DB    30,0C7H                       ;; scan code,ASCII - A tilde
    DB    24,0E5H                       ;; scan code,ASCII - O tilde
					;;
 CP850_TI_UP_T1_END:                    ;;
					;;
    DW    0                             ;; Size of xlat table - null table
					;;
 CP850_TI_UP_END:                         ;; length of state section
					;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; CODE PAGE: 850
;; STATE: Circumflex Upper
;; KEYBOARD TYPES: Any
;; TABLE TYPE: Translate
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    CP850_CI_UP_END-$             ;; length of state section
   DB    CIRCUMFLEX_UPPER              ;; State ID
   DW    ANY_KB                        ;; Keyboard Type
   DB    94,0                          ;; error character = standalone accent
				       ;;
   DW    CP850_CI_UP_T1_END-$          ;; Size of xlat table
   DB    STANDARD_TABLE+ZERO_SCAN      ;; xlat options:
   DB    5                             ;; number of scans
   DB    30,0B6H                       ;;    A circumflex
   DB    18,0D2H                       ;;    E circumflex
   DB    23,0D7H                       ;;    I circumflex
   DB    24,0E2H                       ;;    O circumflex
   DB    22,0EAH                       ;;    U circumflex
				       ;;
CP850_CI_UP_T1_END:                    ;;
				       ;;
   DW    0                             ;; Size of xlat table - null table
				       ;;
CP850_CI_UP_END:                       ;; length of state section
				       ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
   DW    0                             ;; LAST STATE
				       ;;
CP850_XLAT_END:                        ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
				       ;;
CODE     ENDS                          ;;
	 END                           ;;