
        NAM     DECODE
        
***     [Sub]routine that checks incoming key-value
*       against key-code-table and delivers
*       corresponding definition-value.
*
*       Version 1.1
*       hjoel   1987-12-31
*
*       Entry:  Coded key-value in AccA.
*               Possible one-more-key-scanning-
*                 lap-addr in IY.
*       Exit:   Decoded key-value in AccA.
*       IX changed during operation.
*       All other registers unchanged.
***

        ORG     $A070
        
KEYCOD  FCB     $77,$7B,$7D,$7E         Table of
        FCB     $B7,$BB,$BD,$BE         coded key-
        FCB     $D7,$DB,$DD,$DE         pad key-
        FCB     $E7,$EB,$ED,$EE         values.
        
KEYDEF  FCB     $07,$08,$09,$80         Table of
        FCB     $04,$05,$06,$0F         defined
        FCB     $01,$02,$03,$0F         key-values.
        FCB     $0F,$00,$D0,$C0
        
DECODE  LDX     #KEYCOD
WUNMOR  CMPA    ,X+             Which key was pressed?
        BEQ     FOUND
        CMPX    #KEYDEF         Keycode-table covered?
        BNE     WUNMOR          If not, 1 more round.
        LEAS    2,S             Adjust system stack
        TFR     Y,PC            before scanning keys again.
        
FOUND   LDA     15,X            Decoded key-value.
        RTS
        
        END     DECODE                
        
