; > scsi::Perth.PerKbSW.KbdTran
; *****************************************************************************
; Keyboard Translation Table for Perth 80C51-based keyboard
;
; Author:       Alex Bienek (modified from A3000 code by Tim Dobson)
; Version:      See below
; Status:       Development
; Started:      23-Aug-90
; Last updated:
; Notes:-
;
;     3.20 - Set LTID and PCID to &82 
;            Give function keys F3 thru F10 FN-mode codes
;     
;     3.21 - 3/2/92 Remove flag ARKBenable and ID associated code.
;                   (Code was occasionally returning ARID instead of LTID)
;                   ARID also removed.
;                   Mouse buttons moved from FN- 1 2 3 to FN- Q W E, this
;                   removes ghosting of COPY by FN, 1, Cursor Left, which
;                   caused problems in draw when dragging selected objects.
;
;     3.22 - 19/2/92 Mods to main code for modulated LEDs problem.
;                                                                 
;     3.23 - 20/2/92 Correct |\ UK PC key code translation
;                    Code for key $61 changes from $1D to $4D
;
; *****************************************************************************
KBDTran
     
; Perth layout (normal mode)
;               &00  &10  &20  &30  &40  &50  &60  &70 
        =       &FF, &FF, &3B, &FF, &FF, &FF, &FF, &FF  ; row   0
        =       &FF, &4C, &FF, &FF, &FF, &FF, &58, &FF  ;       1
        =       &04, &03, &02, &13, &29, &3E, &50, &FF  ;       2
        =       &4D, &5D, &01, &12, &28, &3D, &4F, &FF  ;       3
        =       &00, &26, &10, &11, &27, &3C, &4E, &7F  ;       4
        =       &40, &2B, &15, &14, &2A, &3F, &51, &52  ;       5
        =       &05, &1E, &09, &0A, &22, &FF, &47, &5F  ;       6
        =       &06, &32, &1C, &18, &2E, &43, &55, &FF  ;       7
        =       &41, &2C, &16, &17, &2D, &42, &54, &53  ;       8
        =       &FF, &07, &08, &19, &2F, &44, &56, &FF  ;       9
        =       &46, &31, &1B, &1A, &30, &45, &33, &57  ;       A
        =       &FF, &FF, &34, &FF, &FF, &FF, &FF, &63  ;       B
        =       &FF, &FF, &1F, &FF, &FF, &FF, &FF, &64  ;       C
        =       &FF, &FF, &21, &FF, &FF, &FF, &FF, &36  ;       D
        =       &59, &FF, &20, &35, &FF, &FF, &0F, &62  ;       E
        =       &5E, &FF, &FF, &0D, &0E, &FF, &FF, &FF  ;       F
        =       &FF, &FF, &FF, &FF, &FF, &70, &71, &72  ;       (mouse buts)

FNTran
; FN mode
;               &00  &10  &20  &30  &40  &50  &60  &70 
        =       &FF, &FF, &61, &FF, &FF, &FF, &FF, &FF  ; row   0
        =       &FF, &4C, &FF, &FF, &FF, &FF, &58, &FF  ;       1
        =       &78, &77, &0C, &FF, &72, &3E, &50, &FF  ;       2
        =       &4D, &5D, &0B, &FF, &71, &3D, &4F, &FF  ;       3
        =       &00, &26, &10, &FF, &70, &3C, &4E, &7F  ;       4
        =       &40, &2B, &15, &1D, &2A, &3F, &51, &52  ;       5
        =       &79, &1E, &7D, &7E, &84, &FF, &67, &5F  ;       6
        =       &7A, &32, &1C, &38, &49, &5B, &55, &FF  ;       7
        =       &41, &2C, &16, &37, &48, &5A, &65, &53  ;       8
        =       &FF, &7B, &7C, &39, &4A, &5C, &66, &FF  ;       9
        =       &46, &25, &24, &23, &3A, &4B, &33, &57  ;       A
        =       &FF, &FF, &34, &FF, &FF, &FF, &FF, &81  ;       B
        =       &FF, &FF, &1F, &FF, &FF, &FF, &FF, &82  ;       C
        =       &FF, &FF, &21, &FF, &FF, &FF, &FF, &36  ;       D
        =       &80, &FF, &20, &35, &FF, &FF, &0F, &83  ;       E
        =       &60, &FF, &FF, &0D, &0E, &FF, &FF, &FF  ;       F
        =       &FF, &FF, &FF, &FF, &FF, &70, &71, &72  ;       (mouse buts)

FNMask
; Mask for bit map of keys changed when in FN mode
        =       &01, &02, &04, &08, &10, &20, &40, &80 

; New tables for mouse movement
NewXYTable
; XYDir is zero
        =       &00, &02, &FE, &00  ;
        =       &FE, &00, &00, &02  ;
        =       &02, &00, &00, &FE  ;
        =       &00, &FE, &02, &00  ;
; XYDir is -VE
        =       &00, &02, &FE, &FC  ;
        =       &FE, &00, &FC, &02  ;
        =       &02, &FC, &00, &FE  ;
        =       &FC, &FE, &02, &00  ;
; XYDir is +VE
        =       &00, &02, &FE, &04  ;
        =       &FE, &00, &04, &02  ;
        =       &02, &04, &00, &FE  ;
        =       &04, &FE, &02, &00  ;

USATPS2
; AT/PS2 translation table
        =       &FF, &09, &FF, &05, &03, &01, &02, &0C     ;
        =       &FF, &0A, &08, &06, &04, &26, &10, &FF     ;

        =       &FF, &5E, &4C, &FF, &3B, &27, &11, &FF     ;
        =       &FF, &FF, &4E, &3D, &3C, &28, &12, &FF     ;

        =       &FF, &50, &4F, &3E, &29, &14, &13, &FF     ;
        =       &FF, &5F, &51, &3F, &2B, &2A, &15, &FF     ;

        =       &FF, &53, &52, &41, &40, &2C, &16, &FF     ;
        =       &FF, &FF, &54, &42, &2D, &17, &18, &FF     ;

        =       &FF, &55, &43, &2E, &2F, &1A, &19, &FF     ;
        =       &FF, &56, &57, &44, &45, &30, &1B, &FF     ;

        =       &FF, &FF, &46, &FF, &31, &1C, &FF, &FF     ;
        =       &5D, &58, &47, &32, &FF, &33, &FF, &FF     ;

        =       &FF, &4D, &FF, &FF, &FF, &FF, &1E, &FF     ;
        =       &FF, &5A, &FF, &48, &37, &FF, &FF, &FF     ;

        =       &65, &66, &5B, &49, &4A, &38, &00, &22     ;
        =       &0B, &4B, &5C, &3A, &24, &39, &0E, &FF     ;
; Translation for codes prefixed by E0
        =       &FF, &FF, &FF, &07, &0D, &FF, &FF, &FF     ; This is key code 83 & 84.
        =       &FF, &FF, &FF, &FF, &FF, &FF, &FF, &FF     ;
                                                           ;
        =       &FF, &60, &FF, &FF, &61, &FF, &FF, &FF     ; 
        =       &FF, &FF, &FF, &FF, &FF, &FF, &FF, &FF     ;

        =       &FF, &FF, &FF, &FF, &FF, &FF, &FF, &FF     ;
        =       &FF, &FF, &0D, &FF, &FF, &FF, &FF, &FF     ;

        =       &FF, &FF, &FF, &FF, &FF, &FF, &FF, &FF     ;
        =       &FF, &FF, &FF, &FF, &FF, &FF, &FF, &FF     ;

        =       &FF, &FF, &FF, &FF, &FF, &FF, &FF, &FF     ;
        =       &FF, &FF, &23, &FF, &FF, &FF, &FF, &FF     ;

        =       &FF, &FF, &FF, &FF, &FF, &FF, &FF, &FF     ;
        =       &FF, &FF, &67, &FF, &FF, &FF, &FF, &FF     ;

        =       &FF, &FF, &FF, &FF, &FF, &FF, &FF, &FF     ;
        =       &FF, &35, &FF, &62, &20, &FF, &FF, &FF     ;

        =       &1F, &34, &63, &FF, &64, &59, &FF, &FF     ;
        =       &FF, &FF, &36, &FF, &0D, &21, &0F, &FF     ;

        END
