Subversion Repositories pentevo

Rev

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

  1.  
  2. ;LAST UPDATE: 05.05.2011 savelij
  3.  
  4. KEYBOARDS       PUSH HL
  5.                 PUSH DE
  6.                 PUSH BC
  7.                 PUSH AF
  8.                 CALL KEYBOARD
  9.                 POP AF
  10.                 POP BC
  11.                 POP DE
  12.                 POP HL
  13.                 EI
  14. EMPTY           RET
  15.  
  16. KEY_SCAN        LD L,0X2F
  17.                 LD DE,0XFFFF
  18.                 LD BC,0XFEFE
  19. KEY_LINE        IN A,(C)
  20.                 CPL
  21.                 AND 0X1F
  22.                 JR Z,KEY_DONE
  23.                 LD H,A
  24.                 LD A,L
  25. KEY_3KEYS       INC D
  26.                 RET NZ
  27. KEY_BITS        SUB 8
  28.                 SRL H
  29.                 JR NC,KEY_BITS
  30.                 LD D,E
  31.                 LD E,A
  32.                 JR NZ,KEY_3KEYS
  33. KEY_DONE        DEC L
  34.                 RLC B
  35.                 JR C,KEY_LINE
  36.                 LD A,D
  37.                 INC A
  38.                 RET Z
  39.                 CP 0X28
  40.                 RET Z
  41.                 CP 0X19
  42.                 RET Z
  43.                 LD A,E
  44.                 LD E,D
  45.                 LD D,A
  46.                 CP 0X18
  47.                 RET
  48.  
  49. K_TEST          LD B,D
  50.                 LD D,0
  51.                 LD A,E
  52.                 CP 0X27
  53.                 RET NC
  54.                 CP 0X18
  55.                 JR NZ,K_MAIN
  56.                 BIT 7,B
  57.                 RET NZ
  58. K_MAIN          LD HL,TABL_KEYS
  59.                 ADD HL,DE
  60.                 LD A,(HL)
  61.                 SCF
  62.                 RET
  63.  
  64. K_DECODE        LD A,E
  65.                 CP 0X3A
  66.                 JR C,K_DIGIT
  67.                 DEC C
  68.                 JP M,K_KLC_LET
  69.                 ADD A,0X4F
  70.                 RET
  71.  
  72. K_LOOK_UP       LD D,0
  73.                 ADD HL,DE
  74.                 LD A,(HL)
  75.                 RET
  76.  
  77. K_KLC_LET       LD HL,TABL_KEYD
  78.                 BIT 0,B
  79.                 JR Z,K_LOOK_UP
  80.                 PUSH HL
  81.                 LD HL,FLAGS_KEY1
  82.                 BIT 3,(HL)
  83.                 POP HL
  84.                 RET NZ
  85.                 INC B
  86.                 RET NZ
  87.                 ADD A,0X20
  88.                 RET
  89.  
  90. K_DIGIT         CP 0X30
  91.                 RET C
  92.                 DEC C
  93. K_KLC_DGT       INC B
  94.                 RET Z
  95.                 BIT 5,B
  96.                 LD HL,TABL_KEYC-0X30
  97.                 JR NZ,K_LOOK_UP
  98.                 SUB 0X10
  99.                 CP 0X22
  100.                 JR Z,K_GAW_CHAR
  101.                 CP 0X20
  102.                 RET NZ
  103.                 LD A,0X5F
  104.                 RET
  105.  
  106. K_GAW_CHAR      LD A,0X40
  107.                 RET
  108.  
  109. KEYBOARD        CALL KEY_SCAN
  110.                 RET NZ
  111.                 LD HL,KSTATE0
  112. K_ST_LOOP       BIT 7,(HL)
  113.                 JR NZ,K_CH_SET
  114.                 INC HL
  115.                 DEC (HL)
  116.                 DEC HL
  117.                 JR NZ,K_CH_SET
  118.                 LD (HL),0XFF
  119. K_CH_SET        LD A,L
  120.                 LD HL,KSTATE4
  121.                 CP L
  122.                 JR NZ,K_ST_LOOP
  123.                 CALL K_TEST
  124.                 RET NC
  125.                 LD HL,KSTATE0
  126.                 CP (HL)
  127.                 JR Z,K_REPEAT
  128.                 EX DE,HL
  129.                 LD HL,KSTATE4
  130.                 CP (HL)
  131.                 JR Z,K_REPEAT
  132.                 BIT 7,(HL)
  133.                 JR NZ,K_NEW
  134.                 EX DE,HL
  135.                 BIT 7,(HL)
  136.                 RET Z
  137. K_NEW           LD E,A
  138.                 LD (HL),A
  139.                 INC HL
  140.                 LD (HL),5
  141.                 INC HL
  142.                 LD A,(REPDEL)
  143.                 LD (HL),A
  144.                 INC HL
  145.                 LD C,0                          ;(MODE)
  146.                 LD A,(FLAGS_KEY)
  147.                 LD D,A
  148.                 PUSH HL
  149.                 CALL K_DECODE
  150.                 POP HL
  151.                 LD (HL),A
  152. K_END           LD (LAST_K),A
  153.                 PUSH HL
  154.                 LD HL,FLAGS_KEY
  155.                 SET 5,(HL)
  156.                 POP HL
  157.                 RET
  158.  
  159. K_REPEAT        INC HL
  160.                 LD (HL),5
  161.                 INC HL
  162.                 DEC (HL)
  163.                 RET NZ
  164.                 LD A,(REPPER)
  165.                 LD (HL),A
  166.                 INC HL
  167.                 LD A,(HL)
  168.                 JR K_END
  169.  
  170. TABL_KEYS       DB 0X42,0X48,0X59,0X36,0X35,0X54,0X47,0X56      ;        B H Y 6 5 T G V
  171.                 DB 0X4E,0X4A,0X55,0X37,0X34,0X52,0X46,0X43      ;        N J U 7 4 R F C
  172.                 DB 0X4D,0X4B,0X49,0X38,0X33,0X45,0X44,0X58      ;        M K I 8 3 E D X
  173.                 DB 0X0E,0X4C,0X4F,0X39,0X32,0X57,0X53,0X5A      ;       SS L 0 9 2 W S Z
  174.                 DB 0X20,0X0D,0X50,0X30,0X31,0X51,0X41           ;SPACE ENTER P 0 1 Q A
  175. TABL_KEYD       EQU $-3
  176.  
  177. TABL_KEYC       DB 0X0C,0X07,0X06,0X04,0X05
  178.                 DB 0X08,0X0A,0X0B,0X09,0X0F
  179.