Top secrets sources NedoPC pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?


;LAST UPDATE: 05.05.2011 savelij

KEYBOARDS       PUSH HL
                PUSH DE
                PUSH BC
                PUSH AF
                CALL KEYBOARD
                POP AF
                POP BC
                POP DE
                POP HL
                EI
EMPTY           RET

KEY_SCAN        LD L,0X2F
                LD DE,0XFFFF
                LD BC,0XFEFE
KEY_LINE        IN A,(C)
                CPL
                AND 0X1F
                JR Z,KEY_DONE
                LD H,A
                LD A,L
KEY_3KEYS       INC D
                RET NZ
KEY_BITS        SUB 8
                SRL H
                JR NC,KEY_BITS
                LD D,E
                LD E,A
                JR NZ,KEY_3KEYS
KEY_DONE        DEC L
                RLC B
                JR C,KEY_LINE
                LD A,D
                INC A
                RET Z
                CP 0X28
                RET Z
                CP 0X19
                RET Z
                LD A,E
                LD E,D
                LD D,A
                CP 0X18
                RET

K_TEST          LD B,D
                LD D,0
                LD A,E
                CP 0X27
                RET NC
                CP 0X18
                JR NZ,K_MAIN
                BIT 7,B
                RET NZ
K_MAIN          LD HL,TABL_KEYS
                ADD HL,DE
                LD A,(HL)
                SCF
                RET

K_DECODE        LD A,E
                CP 0X3A
                JR C,K_DIGIT
                DEC C
                JP M,K_KLC_LET
                ADD A,0X4F
                RET

K_LOOK_UP       LD D,0
                ADD HL,DE
                LD A,(HL)
                RET

K_KLC_LET       LD HL,TABL_KEYD
                BIT 0,B
                JR Z,K_LOOK_UP
                PUSH HL
                LD HL,FLAGS_KEY1
                BIT 3,(HL)
                POP HL
                RET NZ
                INC B
                RET NZ
                ADD A,0X20
                RET

K_DIGIT         CP 0X30
                RET C
                DEC C
K_KLC_DGT       INC B
                RET Z
                BIT 5,B
                LD HL,TABL_KEYC-0X30
                JR NZ,K_LOOK_UP
                SUB 0X10
                CP 0X22
                JR Z,K_GAW_CHAR
                CP 0X20
                RET NZ
                LD A,0X5F
                RET

K_GAW_CHAR      LD A,0X40
                RET

KEYBOARD        CALL KEY_SCAN
                RET NZ
                LD HL,KSTATE0
K_ST_LOOP       BIT 7,(HL)
                JR NZ,K_CH_SET
                INC HL
                DEC (HL)
                DEC HL
                JR NZ,K_CH_SET
                LD (HL),0XFF
K_CH_SET        LD A,L
                LD HL,KSTATE4
                CP L
                JR NZ,K_ST_LOOP
                CALL K_TEST
                RET NC
                LD HL,KSTATE0
                CP (HL)
                JR Z,K_REPEAT
                EX DE,HL
                LD HL,KSTATE4
                CP (HL)
                JR Z,K_REPEAT
                BIT 7,(HL)
                JR NZ,K_NEW
                EX DE,HL
                BIT 7,(HL)
                RET Z
K_NEW           LD E,A
                LD (HL),A
                INC HL
                LD (HL),5
                INC HL
                LD A,(REPDEL)
                LD (HL),A
                INC HL
                LD C,0                          ;(MODE)
                LD A,(FLAGS_KEY)
                LD D,A
                PUSH HL
                CALL K_DECODE
                POP HL
                LD (HL),A
K_END           LD (LAST_K),A
                PUSH HL
                LD HL,FLAGS_KEY
                SET 5,(HL)
                POP HL
                RET

K_REPEAT        INC HL
                LD (HL),5
                INC HL
                DEC (HL)
                RET NZ
                LD A,(REPPER)
                LD (HL),A
                INC HL
                LD A,(HL)
                JR K_END

TABL_KEYS       DB 0X42,0X48,0X59,0X36,0X35,0X54,0X47,0X56      ;        B H Y 6 5 T G V
                DB 0X4E,0X4A,0X55,0X37,0X34,0X52,0X46,0X43      ;        N J U 7 4 R F C
                DB 0X4D,0X4B,0X49,0X38,0X33,0X45,0X44,0X58      ;        M K I 8 3 E D X
                DB 0X0E,0X4C,0X4F,0X39,0X32,0X57,0X53,0X5A      ;       SS L 0 9 2 W S Z
                DB 0X20,0X0D,0X50,0X30,0X31,0X51,0X41           ;SPACE ENTER P 0 1 Q A
TABL_KEYD       EQU $-3

TABL_KEYC       DB 0X0C,0X07,0X06,0X04,0X05
                DB 0X08,0X0A,0X0B,0X09,0X0F