;LAST UPDATE: 31.07.2017 savelij
PC_KEY_X EQU 1 ;КООРДИНАТА ВЫВОДА РАМКИ
PC_KEY_Y EQU 5 ;КООРДИНАТА ВЫВОДА РАМКИ
PRT_PCKEY_X EQU 16
PRT_PCKEY_Y EQU 22
PR_COL EQU %00111000
UPR_COL EQU %01000100
PC_KEYS_TEST DI
LD A,%01000010
CALL CLEAR_TXTSCR
CALL TXTMODE_ON
LD H,CMOS_BYTE_00
CALL READCMOS
AND M_TYPE_FONT
LD (TYPEFONT),A
LD DE,PC_KEY_X*0X100+PC_KEY_Y
LD BC,0X4E10
CALL RAMKA4TXTSCR
LD HL,PC_KEYS
CALL PRT4TXTMODE
LD DE,PRT_PCKEY_X*0X100+PRT_PCKEY_Y
CALL PRINT_EMPTY
LD HL,TXT4TESTERPC
CALL PRT4TXTMODE
CALL SYSTEM_KEYS
LD HL,0XC000
LD DE,0XC001
LD BC,0XFF
LD (HL),L
LDIR
PKT_05 LD H,0X0C
CALL READCMOS ;ПРОЧИТАЛИ РЕГИСТР 0X0C CMOS
SET 0,L ;БИТ 0=1 СБРОС БУФЕРА КЛАВИАТУРЫ
CALL WRITECMOS ;ЗАПИСАЛИ ОБРАТНО
LD HL,0XF002
CALL WRITECMOS ;ВКЛЮЧИЛИ ДОСТУП К БУФЕРУ КЛАВИАТУРЫ
LD DE,PRT_PCKEY_X*0X100+PRT_PCKEY_Y
LD B,0
PKT_04 EI
HALT
DI
CALL EXIT_ALT_F4
JR NZ,EXIT_TESTER
CALL EXIT_LCTRL_X
JR NZ,EXIT_TESTER
LD H,0XF0
CALL READCMOS ;ЧТЕНИЕ БАЙТА ИЗ БУФЕРА КЛАВИАТУРЫ
AND A
JR Z,PKT_04 ;ЕСЛИ НОЛЬ ТО ЖДЕМ
INC A
JR Z,PKT_05 ;ЕСЛИ FF ТО ИНИТИМ ЛОГ
LD A,L
CP 0XE0
JR NZ,PKT_06
SET 7,B ;НАЖАТА КНОПКА С ДОП КОДОМ
JR PKT_0D
PKT_06 CP 0XF0
JR NZ,PKT_07
SET 6,B ;ОТПУЩЕНА КЛАВИША
JR PKT_0D
PKT_07 CP 0X58
CALL Z,CAPSLOCKLED
LD H,0XC0
LD C,1 ;НАЖАТА КНОПКА
BIT 7,B
JR Z,PKT_0C
LD C,2 ;НАЖАТА КНОПКА С ДОП КОДОМ
LD A,0XE0
CALL PRTT_A_
LD A,","
CALL PRTSYMTXTMODE
PKT_0C BIT 6,B
JR Z,PKT_08
LD C,3 ;ОТПУЩЕНА КНОПКА
LD A,0XF0
CALL PRTT_A_
LD A,","
CALL PRTSYMTXTMODE
PKT_08 LD (HL),C
LD A,L
CALL PRTT_A_
CALL DRAW_COLOR
LD A,3
LD B,0
SUB C
JR NZ,PKT_00
LD H,0XC0
LD (HL),B
PKT_00 CALL PRINT_EMPTY ;ПЕЧАТЬ ПУСТОЙ СТРОКИ
PKT_0D LD DE,PRT_PCKEY_X*0X100+PRT_PCKEY_Y
JR PKT_04
CAPSLOCKLED LD A,B
AND 0XC0
RET NZ
PUSH HL
LD H,0X0C
CALL READCMOS
LD A,2
XOR L
LD L,A
CALL WRITECMOS
POP HL
RET
EXIT_TESTER CALL TXTMODE_OFF
LD A,0X10
CALL SET_7FFD
JP RESTART
;ВЫХОД ПО ALT+F4
EXIT_ALT_F4 LD HL,0XC011
LD A,(HL)
AND A
RET Z
LD L,0X0C
LD A,(HL)
AND A
RET
;ВЫХОД ПО LEFT CONTROL+X
EXIT_LCTRL_X LD HL,0XC014
LD A,(HL)
AND A
RET Z
LD L,0X22
LD A,(HL)
AND A
RET
;РИСОВАНИЕ ЦВЕТНОГО КВАДРАТИКА НАЖАТОЙ ИЛИ ОТПУЩЕНОЙ КНОПКИ
DRAW_COLOR PUSH BC
PUSH DE
PUSH HL
BIT 7,B
LD DE,TABL_PR_COL ;ТАБЛИЦА ОСНОВНЫХ КОДОВ
JR Z,DRAWC1
LD DE,EXTTBL_PR_COL ;ТАБЛИЦА КОДОВ С 0XE0
DRAWC1 LD B,(HL) ;ВЗЯЛИ КОД КНОПКИ
LD H,0
ADD HL,HL
ADD HL,HL
ADD HL,DE
LD D,(HL) ;КООРДИНАТА X
INC D
INC D
INC HL
LD E,(HL) ;КООРДИНАТА Y
INC E
INC HL
LD C,(HL) ;ВЫСОТА
INC HL
LD A,C
OR (HL)
JR Z,DRAWC3
LD A,B
CP 3
LD A,PR_COL ;ЦВЕТ НАЖАТОЙ КНОПКИ
JR NZ,DRAWC2
LD A,UPR_COL ;ЦВЕТ ОТПУЩЕНОЙ КНОПКИ
DRAWC2 LD B,(HL) ;ШИРИНА
DEC B
INC B
CALL NZ,COL_KVAD ;РИСОВАТЬ ЦВЕТНОЙ КВАДРАТ
DRAWC3 POP HL
POP DE
POP BC
RET
PRINT_EMPTY PUSH BC
LD B,0X10
PRINT_EMPTY1 LD A," "
CALL PRTSYMTXTMODE
DJNZ PRINT_EMPTY1
POP BC
RET
PRT4TXTMODE LD A,(HL)
INC HL
AND A
RET Z
CALL PRTSYM4TXTMOD
JR PRT4TXTMODE
PRTSYM4TXTMOD CP 0X20
JP NC,PRTSYMTXTMODE
CP 0X16
RET NZ
LD E,(HL)
INC HL
LD D,(HL)
INC HL
RET
SYSTEM_KEYS LD DE,(PC_KEY_X+0X2E)*0X100+PC_KEY_Y+1
LD BC,0X1203
LD A,%01000011
COL_KVAD PUSH DE
PUSH BC
COL_KVAD2 PUSH DE
PUSH BC
COL_KVAD1 CALL SET_COL
DJNZ COL_KVAD1
POP BC
POP DE
INC E
DEC C
JR NZ,COL_KVAD2
POP BC
POP DE
RET
SET_COL PUSH DE
PUSH BC
PUSH AF
LD A,0X1B
CALL SET_7FFD
LD L,E
LD A,D
LD H,0
LD D,H
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD E,A
SRL E
ADD HL,DE
AND 1
RRCA
RRCA
RRCA
OR 0XC1
LD D,A
LD E,0XC0
ADD HL,DE
POP AF
PUSH AF
LD (HL),A
LD A,0X1F
CALL SET_7FFD
POP AF
POP BC
POP DE
INC D
RET
;X,Y,V,H
TABL_PR_COL DUPL 4,0 ;00
DB PC_KEY_X+32,PC_KEY_Y,3,4 ;01 F9
DUPL 4,0 ;02
DB PC_KEY_X+19,PC_KEY_Y,3,4 ;03 F5
DB PC_KEY_X+12,PC_KEY_Y,3,4 ;04 F3
DB PC_KEY_X+6,PC_KEY_Y,3,4 ;05 F1
DB PC_KEY_X+9,PC_KEY_Y,3,4 ;06 F2
DB PC_KEY_X+43,PC_KEY_Y,3,5 ;07 F12
DUPL 4,0 ;08
DB PC_KEY_X+35,PC_KEY_Y,3,5 ;09 F10
DB PC_KEY_X+28,PC_KEY_Y,3,4 ;0A F8
DB PC_KEY_X+22,PC_KEY_Y,3,4 ;0B F6
DB PC_KEY_X+15,PC_KEY_Y,3,4 ;0C F4
DB PC_KEY_X,PC_KEY_Y+5,3,6 ;0D TAB
DB PC_KEY_X,PC_KEY_Y+3,3,4 ;0E `
DUPL 8,0 ;0F
DB PC_KEY_X+11,PC_KEY_Y+11,3,5 ;11 L ALT
DB PC_KEY_X,PC_KEY_Y+9,3,10 ;12 L SHIFT
DUPL 4,0 ;13
DB PC_KEY_X,PC_KEY_Y+11,3,8 ;14 L CTRL
DB PC_KEY_X+5,PC_KEY_Y+5,3,4 ;15 Q
DB PC_KEY_X+3,PC_KEY_Y+3,3,4 ;16 1
DUPL 12,0 ;17
DB PC_KEY_X+9,PC_KEY_Y+9,3,4 ;1A Z
DB PC_KEY_X+10,PC_KEY_Y+7,3,4 ;1B S
DB PC_KEY_X+7,PC_KEY_Y+7,3,4 ;1C A
DB PC_KEY_X+8,PC_KEY_Y+5,3,4 ;1D W
DB PC_KEY_X+6,PC_KEY_Y+3,3,4 ;1E 2
DUPL 8,0 ;1F
DB PC_KEY_X+15,PC_KEY_Y+9,3,4 ;21 C
DB PC_KEY_X+12,PC_KEY_Y+9,3,4 ;22 X
DB PC_KEY_X+13,PC_KEY_Y+7,3,4 ;23 D
DB PC_KEY_X+11,PC_KEY_Y+5,3,4 ;24 E
DB PC_KEY_X+12,PC_KEY_Y+3,3,4 ;25 4
DB PC_KEY_X+9,PC_KEY_Y+3,3,4 ;26 3
DUPL 8,0 ;27
DB PC_KEY_X+15,PC_KEY_Y+11,3,13 ;29 SPACE
DB PC_KEY_X+18,PC_KEY_Y+9,3,4 ;2A V
DB PC_KEY_X+16,PC_KEY_Y+7,3,4 ;2B F
DB PC_KEY_X+17,PC_KEY_Y+5,3,4 ;2C T
DB PC_KEY_X+14,PC_KEY_Y+5,3,4 ;2D R
DB PC_KEY_X+15,PC_KEY_Y+3,3,4 ;2E 5
DUPL 8,0 ;2F
DB PC_KEY_X+24,PC_KEY_Y+9,3,4 ;31 N
DB PC_KEY_X+21,PC_KEY_Y+9,3,4 ;32 B
DB PC_KEY_X+22,PC_KEY_Y+7,3,4 ;33 H
DB PC_KEY_X+19,PC_KEY_Y+7,3,4 ;34 G
DB PC_KEY_X+20,PC_KEY_Y+5,3,4 ;35 Y
DB PC_KEY_X+18,PC_KEY_Y+3,3,4 ;36 6
DUPL 12,0 ;37
DB PC_KEY_X+27,PC_KEY_Y+9,3,4 ;3A M
DB PC_KEY_X+25,PC_KEY_Y+7,3,4 ;3B J
DB PC_KEY_X+23,PC_KEY_Y+5,3,4 ;3C U
DB PC_KEY_X+21,PC_KEY_Y+3,3,4 ;3D 7
DB PC_KEY_X+24,PC_KEY_Y+3,3,4 ;3E 8
DUPL 8,0 ;3F
DB PC_KEY_X+30,PC_KEY_Y+9,3,4 ;41 ,
DB PC_KEY_X+28,PC_KEY_Y+7,3,4 ;42 K
DB PC_KEY_X+26,PC_KEY_Y+5,3,4 ;43 I
DB PC_KEY_X+29,PC_KEY_Y+5,3,4 ;44 O
DB PC_KEY_X+30,PC_KEY_Y+3,3,4 ;45 0
DB PC_KEY_X+27,PC_KEY_Y+3,3,4 ;46 9
DUPL 8,0 ;47
DB PC_KEY_X+33,PC_KEY_Y+9,3,4 ;49 .
DB PC_KEY_X+36,PC_KEY_Y+9,3,4 ;4A /
DB PC_KEY_X+31,PC_KEY_Y+7,3,4 ;4B L
DB PC_KEY_X+34,PC_KEY_Y+7,3,4 ;4C ;
DB PC_KEY_X+32,PC_KEY_Y+5,3,4 ;4D P
DB PC_KEY_X+33,PC_KEY_Y+3,3,4 ;4E -
DUPL 12,0 ;4F
DB PC_KEY_X+37,PC_KEY_Y+7,3,5 ;52 '
DUPL 4,0 ;53
DB PC_KEY_X+35,PC_KEY_Y+5,3,4 ;54 [
DB PC_KEY_X+36,PC_KEY_Y+3,3,4 ;55 =
DUPL 8,0 ;56
DB PC_KEY_X,PC_KEY_Y+7,3,8 ;58 CAPS LOCK
DB PC_KEY_X+39,PC_KEY_Y+9,3,9 ;59 R SHIFT
DB PC_KEY_X+41,PC_KEY_Y+5,5,7 ;5A ENTER
DB PC_KEY_X+38,PC_KEY_Y+5,3,4 ;5B ]
DUPL 4,0 ;5C
DB PC_KEY_X+39,PC_KEY_Y+3,3,4 ;5D BACK /
DUPL 32,0 ;5E
DB PC_KEY_X+42,PC_KEY_Y+3,3,6 ;66 BACKSPACE
DUPL 8,0 ;67
DB PC_KEY_X+63,PC_KEY_Y+9,3,4 ;69 KP 1
DUPL 4,0 ;6A
DB PC_KEY_X+63,PC_KEY_Y+7,3,4 ;6B KP 4
DB PC_KEY_X+63,PC_KEY_Y+5,3,4 ;6C KP 7
DUPL 12,0 ;6D
DB PC_KEY_X+63,PC_KEY_Y+11,3,7 ;70 KP 0
DB PC_KEY_X+69,PC_KEY_Y+11,3,4 ;71 KP .
DB PC_KEY_X+66,PC_KEY_Y+9,3,4 ;72 KP 2
DB PC_KEY_X+66,PC_KEY_Y+7,3,4 ;73 KP 5
DB PC_KEY_X+69,PC_KEY_Y+7,3,4 ;74 KP 6
DB PC_KEY_X+66,PC_KEY_Y+5,3,4 ;75 KP 8
DB PC_KEY_X,PC_KEY_Y,3,5 ;76 ESC
DB PC_KEY_X+63,PC_KEY_Y+3,3,4 ;77 NUM LOCK
DB PC_KEY_X+39,PC_KEY_Y,3,5 ;78 F11
DB PC_KEY_X+72,PC_KEY_Y+5,5,4 ;79 KP +
DB PC_KEY_X+69,PC_KEY_Y+9,3,4 ;7A KP 3
DB PC_KEY_X+72,PC_KEY_Y+3,3,4 ;7B KP -
DB PC_KEY_X+69,PC_KEY_Y+3,3,4 ;7C KP *
DB PC_KEY_X+69,PC_KEY_Y+5,3,4 ;7D KP 9
DB PC_KEY_X+53,PC_KEY_Y,3,5 ;7E SCROLL
DUPL 16,0 ;7F
DB PC_KEY_X+25,PC_KEY_Y,3,4 ;83 F7
EXTTBL_PR_COL DUPL 68,0 ;00
DB PC_KEY_X+27,PC_KEY_Y+11,3,5 ;11 R ALT
DUPL 8,0 ;12
DB PC_KEY_X+40,PC_KEY_Y+11,3,8 ;14 R CTRL
DUPL 40,0 ;15
DB PC_KEY_X+7,PC_KEY_Y+11,3,5 ;1F L WIN
DUPL 28,0 ;20
DB PC_KEY_X+31,PC_KEY_Y+11,3,5 ;27 R WIN
DUPL 28,0 ;28
DB PC_KEY_X+35,PC_KEY_Y+11,3,6 ;2F MENU
DUPL 104,0 ;30
DB PC_KEY_X+66,PC_KEY_Y+3,3,4 ;4A KP /
DUPL 60,0 ;4B
DB PC_KEY_X+72,PC_KEY_Y+9,5,4 ;5A KP ENTER
DUPL 56,0 ;5B
DB PC_KEY_X+53,PC_KEY_Y+5,3,5 ;69 END
DUPL 4,0 ;6A
DB PC_KEY_X+49,PC_KEY_Y+11,3,5 ;6B LEFT ARROW
DB PC_KEY_X+53,PC_KEY_Y+3,3,5 ;6C HOME
DUPL 12,0 ;6D
DB PC_KEY_X+49,PC_KEY_Y+3,3,5 ;70 INSERT
DB PC_KEY_X+49,PC_KEY_Y+5,3,5 ;71 DELETE
DB PC_KEY_X+53,PC_KEY_Y+11,3,5 ;72 DOWN ARROW
DUPL 4,0 ;73
DB PC_KEY_X+57,PC_KEY_Y+11,3,5 ;74 RIGHT ARROW
DB PC_KEY_X+53,PC_KEY_Y+9,3,5 ;75 UP ARROW
DUPL 16,0 ;76
DB PC_KEY_X+57,PC_KEY_Y+5,3,5 ;7A PAGE DOWN
DUPL 8,0 ;7B
DB PC_KEY_X+57,PC_KEY_Y+3,3,5 ;7D PAGE UP
DUPL 24,0 ;7E
;01234567890123456789012345678901234567890123456789012345678901234567890123456789
;┌───┐ ┌──┬──┬──┬──┐┌──┬──┬──┬──┐┌──┬───┬───┬───┐ ┌───┬───┬───┐ 00
;│ESC│ │F1│F2│F3│F4││F5│F6│F7│F8││F9│F10│F11│F12│ │PRT│SCL│PAU│ 01
;└───┘ └──┴──┴──┴──┘└──┴──┴──┴──┘└──┴───┴───┴───┘ └───┴───┴───┘ 02
;┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬────┐ ┌───┬───┬───┐ ┌──┬──┬──┬──┐ 03
;│ ~│ 1│ 2│ 3│ 4│ 5│ 6│ 7│ 8│ 9│ 0│ -│ =│ |│ BS │ │INS│HOM│PUp│ │NM│ /│ *│ -│ 04
;├──┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴────┤ ├───┼───┼───┤ ├──┼──┼──┼──┤ 05
;│ TAB│ Q│ W│ E│ R│ T│ Y│ U│ I│ O│ P│ [│ ]│ │ │DEL│END│PDn│ │ 7│ 8│ 9│ │ 06
;├────┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴──┤ENTER│ └───┴───┴───┘ ├──┼──┼──┤ +│ 07
;│CSLOCK│ A│ S│ D│ F│ G│ H│ J│ K│ L│ ;│ ' │ │ │ 4│ 5│ 6│ │ 08
;├──────┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬─┴─────┤ ┌───┐ ├──┼──┼──┼──┤ 09
;│ SHIFT │ Z│ X│ C│ V│ B│ N│ M│ ,│ .│ /│ SHIFT │ │ UP│ │ 1│ 2│ 3│ E│ 0A
;├──────┬─┴─┬┴──┼──┴──┴──┴──┼──┴┬─┴─┬┴──┴┬──────┤ ┌───┼───┼───┐ ├──┴──┼──┤ N│ 0B
;│ CTRL │WIN│ALT│ SPACE │ALT│WIN│MENU│ CTRL │ │ LF│DWN│RT │ │ 0 │ .│ T│ 0C
;└──────┴───┴───┴───────────┴───┴───┴────┴──────┘ └───┴───┴───┘ └─────┴──┴──┘ 0D
;01234567890123456789012345678901234567890123456789012345678901234567890123456789
PC_KEYS DB 0X16,PC_KEY_Y+1,PC_KEY_X+1, "┌───┐ ┌──┬──┬──┬──┐┌──┬──┬──┬──┐┌──┬───┬───┬───┐ ┌───┬───┬───┐"
DB 0X16,PC_KEY_Y+2,PC_KEY_X+1, "│ESC│ │F1│F2│F3│F4││F5│F6│F7│F8││F9│F10│F11│F12│ │PRT│SCL│PAU│"
DB 0X16,PC_KEY_Y+3,PC_KEY_X+1, "└───┘ └──┴──┴──┴──┘└──┴──┴──┴──┘└──┴───┴───┴───┘ └───┴───┴───┘"
DB 0X16,PC_KEY_Y+4,PC_KEY_X+1, "┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬────┐ ┌───┬───┬───┐ ┌──┬──┬──┬──┐"
DB 0X16,PC_KEY_Y+5,PC_KEY_X+1, "│ ~│ 1│ 2│ 3│ 4│ 5│ 6│ 7│ 8│ 9│ 0│ -│ =│ ",0X5C,"│ BS │ │INS│HOM│PUp│ │NM│ /│ *│ -│"
DB 0X16,PC_KEY_Y+6,PC_KEY_X+1, "├──┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴────┤ ├───┼───┼───┤ ├──┼──┼──┼──┤"
DB 0X16,PC_KEY_Y+7,PC_KEY_X+1, "│ TAB│ Q│ W│ E│ R│ T│ Y│ U│ I│ O│ P│ [│ ]│ │ │DEL│END│PDn│ │ 7│ 8│ 9│ │"
DB 0X16,PC_KEY_Y+8,PC_KEY_X+1, "├────┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴──┤ENTER│ └───┴───┴───┘ ├──┼──┼──┤ +│"
DB 0X16,PC_KEY_Y+9,PC_KEY_X+1, "│CSLOCK│ A│ S│ D│ F│ G│ H│ J│ K│ L│ ;│ ' │ │ │ 4│ 5│ 6│ │"
DB 0X16,PC_KEY_Y+10,PC_KEY_X+1,"├──────┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬─┴─────┤ ┌───┐ ├──┼──┼──┼──┤"
DB 0X16,PC_KEY_Y+11,PC_KEY_X+1,"│ SHIFT │ Z│ X│ C│ V│ B│ N│ M│ ,│ .│ /│ SHIFT │ │ UP│ │ 1│ 2│ 3│ E│"
DB 0X16,PC_KEY_Y+12,PC_KEY_X+1,"├──────┬─┴─┬┴──┼──┴──┴──┴──┼──┴┬─┴─┬┴──┴┬──────┤ ┌───┼───┼───┐ ├──┴──┼──┤ N│"
DB 0X16,PC_KEY_Y+13,PC_KEY_X+1,"│ CTRL │WIN│ALT│ SPACE │ALT│WIN│MENU│ CTRL │ │ LF│DWN│RT │ │ 0 │ .│ T│"
DB 0X16,PC_KEY_Y+14,PC_KEY_X+1,"└──────┴───┴───┴───────────┴───┴───┴────┴──────┘ └───┴───┴───┘ └─────┴──┴──┘",0
;1C A 45 0 04 F3 7D KP 9 1F LGUI
;32 B 16 1 0C F4 5B ] 14 RCTRL
;21 C 1E 2 03 F5 4C ; 27 RGUI
;23 D 26 3 0B F6 52 ' 11 RALT
;24 E 25 4 83 F7 41 , 2F APPS
;2B F 2E 5 0A F8 49 . 70 INSERT
;34 G 36 6 01 F9 4A / 6C HOME
;33 H 3D 7 09 F10 7D PG UP
;43 I 3E 8 78 F11 71 DELETE
;3B J 46 9 07 F12 69 END
;42 K 0E ` 7E SCROLL 7A PG DN
;4B L 4E - 54 [ 75 U ARROW
;3A M 55 = 77 NUM 6B L ARROW
;31 N 5D \ 7C KP * 72 D ARROW
;44 O 66 BKSP 7B KP - 74 R ARROW
;4D P 29 SPACE 79 KP + 4A KP /
;15 Q 0D TAB 71 KP . 5A KP ENTER
;2D R 58 CAPS 70 KP 0
;1B S 12 LSHIFT 69 KP 1
;2C T 14 LCTRL 72 KP 2
;3C U 11 LALT 7A KP 3
;2A V 59 RSHIFT 6B KP 4
;1D W 5A ENTER 73 KP 5
;22 X 76 ESC 74 KP 6
;35 Y 05 F1 6C KP 7
;1A Z 06 F2 75 KP 8
TXT4TESTERPC DB 0X16,0,31,"PC keyboard tester",0X16,24,(80-(TXT4TESTERPC2-TXT4TESTERPC1))/2
TXT4TESTERPC1 DB "EXIT - press ALT+F4 or Left CTRL+X"
TXT4TESTERPC2 DB 0X16,22,2,"Read codes:",0