Subversion Repositories pentevo

Rev

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

  1.  
  2. ;LAST UPDATE: 31.07.2017 savelij
  3.  
  4. PC_KEY_X        EQU 1                           ;КООРДИНАТА ВЫВОДА РАМКИ
  5. PC_KEY_Y        EQU 5                           ;КООРДИНАТА ВЫВОДА РАМКИ
  6. PRT_PCKEY_X     EQU 16
  7. PRT_PCKEY_Y     EQU 22
  8. PR_COL          EQU %00111000
  9. UPR_COL         EQU %01000100
  10.  
  11. PC_KEYS_TEST    DI
  12.                 LD A,%01000010
  13.                 CALL CLEAR_TXTSCR
  14.                 CALL TXTMODE_ON
  15.                 LD H,CMOS_BYTE_00
  16.                 CALL READCMOS
  17.                 AND M_TYPE_FONT
  18.                 LD (TYPEFONT),A
  19.                 LD DE,PC_KEY_X*0X100+PC_KEY_Y
  20.                 LD BC,0X4E10
  21.                 CALL RAMKA4TXTSCR
  22.                 LD HL,PC_KEYS
  23.                 CALL PRT4TXTMODE
  24.                 LD DE,PRT_PCKEY_X*0X100+PRT_PCKEY_Y
  25.                 CALL PRINT_EMPTY
  26.                 LD HL,TXT4TESTERPC
  27.                 CALL PRT4TXTMODE
  28.                 CALL SYSTEM_KEYS
  29.                 LD HL,0XC000
  30.                 LD DE,0XC001
  31.                 LD BC,0XFF
  32.                 LD (HL),L
  33.                 LDIR
  34. PKT_05          LD H,0X0C
  35.                 CALL READCMOS                   ;ПРОЧИТАЛИ РЕГИСТР 0X0C CMOS
  36.                 SET 0,L                         ;БИТ 0=1 СБРОС БУФЕРА КЛАВИАТУРЫ
  37.                 CALL WRITECMOS                  ;ЗАПИСАЛИ ОБРАТНО
  38.                 LD HL,0XF002
  39.                 CALL WRITECMOS                  ;ВКЛЮЧИЛИ ДОСТУП К БУФЕРУ КЛАВИАТУРЫ
  40.                 LD DE,PRT_PCKEY_X*0X100+PRT_PCKEY_Y
  41.                 LD B,0
  42. PKT_04          EI
  43.                 HALT
  44.                 DI
  45.                 CALL EXIT_ALT_F4
  46.                 JR NZ,EXIT_TESTER
  47.                 CALL EXIT_LCTRL_X
  48.                 JR NZ,EXIT_TESTER
  49.                 LD H,0XF0
  50.                 CALL READCMOS                   ;ЧТЕНИЕ БАЙТА ИЗ БУФЕРА КЛАВИАТУРЫ
  51.                 AND A
  52.                 JR Z,PKT_04                     ;ЕСЛИ НОЛЬ ТО ЖДЕМ
  53.                 INC A
  54.                 JR Z,PKT_05                     ;ЕСЛИ FF ТО ИНИТИМ ЛОГ
  55.                 LD A,L
  56.                 CP 0XE0
  57.                 JR NZ,PKT_06
  58.                 SET 7,B                         ;НАЖАТА КНОПКА С ДОП КОДОМ
  59.                 JR PKT_0D
  60.  
  61. PKT_06          CP 0XF0
  62.                 JR NZ,PKT_07
  63.                 SET 6,B                         ;ОТПУЩЕНА КЛАВИША
  64.                 JR PKT_0D
  65.  
  66. PKT_07          CP 0X58
  67.                 CALL Z,CAPSLOCKLED
  68.                 LD H,0XC0
  69.                 LD C,1                          ;НАЖАТА КНОПКА
  70.                 BIT 7,B
  71.                 JR Z,PKT_0C
  72.                 LD C,2                          ;НАЖАТА КНОПКА С ДОП КОДОМ
  73.                 LD A,0XE0
  74.                 CALL PRTT_A_
  75.                 LD A,","
  76.                 CALL PRTSYMTXTMODE
  77. PKT_0C          BIT 6,B
  78.                 JR Z,PKT_08
  79.                 LD C,3                          ;ОТПУЩЕНА КНОПКА
  80.                 LD A,0XF0
  81.                 CALL PRTT_A_
  82.                 LD A,","
  83.                 CALL PRTSYMTXTMODE
  84. PKT_08          LD (HL),C
  85.                 LD A,L
  86.                 CALL PRTT_A_
  87.                 CALL DRAW_COLOR
  88.                 LD A,3
  89.                 LD B,0
  90.                 SUB C
  91.                 JR NZ,PKT_00
  92.                 LD H,0XC0
  93.                 LD (HL),B
  94. PKT_00          CALL PRINT_EMPTY                ;ПЕЧАТЬ ПУСТОЙ СТРОКИ
  95. PKT_0D          LD DE,PRT_PCKEY_X*0X100+PRT_PCKEY_Y
  96.                 JR PKT_04
  97.  
  98. CAPSLOCKLED     LD A,B
  99.                 AND 0XC0
  100.                 RET NZ
  101.                 PUSH HL
  102.                 LD H,0X0C
  103.                 CALL READCMOS
  104.                 LD A,2
  105.                 XOR L
  106.                 LD L,A
  107.                 CALL WRITECMOS
  108.                 POP HL
  109.                 RET
  110.  
  111. EXIT_TESTER     CALL TXTMODE_OFF
  112.                 LD A,0X10
  113.                 CALL SET_7FFD
  114.                 JP RESTART
  115.  
  116. ;ВЫХОД ПО ALT+F4
  117. EXIT_ALT_F4     LD HL,0XC011
  118.                 LD A,(HL)
  119.                 AND A
  120.                 RET Z
  121.                 LD L,0X0C
  122.                 LD A,(HL)
  123.                 AND A
  124.                 RET
  125.  
  126. ;ВЫХОД ПО LEFT CONTROL+X
  127. EXIT_LCTRL_X    LD HL,0XC014
  128.                 LD A,(HL)
  129.                 AND A
  130.                 RET Z
  131.                 LD L,0X22
  132.                 LD A,(HL)
  133.                 AND A
  134.                 RET
  135.  
  136. ;РИСОВАНИЕ ЦВЕТНОГО КВАДРАТИКА НАЖАТОЙ ИЛИ ОТПУЩЕНОЙ КНОПКИ
  137. DRAW_COLOR      PUSH BC
  138.                 PUSH DE
  139.                 PUSH HL
  140.                 BIT 7,B
  141.                 LD DE,TABL_PR_COL               ;ТАБЛИЦА ОСНОВНЫХ КОДОВ
  142.                 JR Z,DRAWC1
  143.                 LD DE,EXTTBL_PR_COL             ;ТАБЛИЦА КОДОВ С 0XE0
  144. DRAWC1          LD B,(HL)                       ;ВЗЯЛИ КОД КНОПКИ
  145.                 LD H,0
  146.                 ADD HL,HL
  147.                 ADD HL,HL
  148.                 ADD HL,DE
  149.                 LD D,(HL)                       ;КООРДИНАТА X
  150.                 INC D
  151.                 INC D
  152.                 INC HL
  153.                 LD E,(HL)                       ;КООРДИНАТА Y
  154.                 INC E
  155.                 INC HL
  156.                 LD C,(HL)                       ;ВЫСОТА
  157.                 INC HL
  158.                 LD A,C
  159.                 OR (HL)
  160.                 JR Z,DRAWC3
  161.                 LD A,B
  162.                 CP 3
  163.                 LD A,PR_COL                     ;ЦВЕТ НАЖАТОЙ КНОПКИ
  164.                 JR NZ,DRAWC2
  165.                 LD A,UPR_COL                    ;ЦВЕТ ОТПУЩЕНОЙ КНОПКИ
  166. DRAWC2          LD B,(HL)                       ;ШИРИНА
  167.                 DEC B
  168.                 INC B
  169.                 CALL NZ,COL_KVAD                ;РИСОВАТЬ ЦВЕТНОЙ КВАДРАТ
  170. DRAWC3          POP HL
  171.                 POP DE
  172.                 POP BC
  173.                 RET
  174.  
  175. PRINT_EMPTY     PUSH BC
  176.                 LD B,0X10
  177. PRINT_EMPTY1    LD A," "
  178.                 CALL PRTSYMTXTMODE
  179.                 DJNZ PRINT_EMPTY1
  180.                 POP BC
  181.                 RET
  182.  
  183. PRT4TXTMODE     LD A,(HL)
  184.                 INC HL
  185.                 AND A
  186.                 RET Z
  187.                 CALL PRTSYM4TXTMOD
  188.                 JR PRT4TXTMODE
  189.  
  190. PRTSYM4TXTMOD   CP 0X20
  191.                 JP NC,PRTSYMTXTMODE
  192.                 CP 0X16
  193.                 RET NZ
  194.                 LD E,(HL)
  195.                 INC HL
  196.                 LD D,(HL)
  197.                 INC HL
  198.                 RET
  199.  
  200. SYSTEM_KEYS     LD DE,(PC_KEY_X+0X2E)*0X100+PC_KEY_Y+1
  201.                 LD BC,0X1203
  202.                 LD A,%01000011
  203.  
  204. COL_KVAD        PUSH DE
  205.                 PUSH BC
  206. COL_KVAD2       PUSH DE
  207.                 PUSH BC
  208. COL_KVAD1       CALL SET_COL
  209.                 DJNZ COL_KVAD1
  210.                 POP BC
  211.                 POP DE
  212.                 INC E
  213.                 DEC C
  214.                 JR NZ,COL_KVAD2
  215.                 POP BC
  216.                 POP DE
  217.                 RET
  218.  
  219. SET_COL         PUSH DE
  220.                 PUSH BC
  221.                 PUSH AF
  222.                 LD A,0X1B
  223.                 CALL SET_7FFD
  224.                 LD L,E
  225.                 LD A,D
  226.                 LD H,0
  227.                 LD D,H
  228.                 ADD HL,HL
  229.                 ADD HL,HL
  230.                 ADD HL,HL
  231.                 ADD HL,HL
  232.                 ADD HL,HL
  233.                 ADD HL,HL
  234.                 LD E,A
  235.                 SRL E
  236.                 ADD HL,DE
  237.                 AND 1
  238.                 RRCA
  239.                 RRCA
  240.                 RRCA
  241.                 OR 0XC1
  242.                 LD D,A
  243.                 LD E,0XC0
  244.                 ADD HL,DE
  245.                 POP AF
  246.                 PUSH AF
  247.                 LD (HL),A
  248.                 LD A,0X1F
  249.                 CALL SET_7FFD
  250.                 POP AF
  251.                 POP BC
  252.                 POP DE
  253.                 INC D
  254.                 RET
  255.  
  256. ;X,Y,V,H
  257. TABL_PR_COL     DUPL 4,0                        ;00
  258.                 DB PC_KEY_X+32,PC_KEY_Y,3,4     ;01 F9
  259.                 DUPL 4,0                        ;02
  260.                 DB PC_KEY_X+19,PC_KEY_Y,3,4     ;03 F5
  261.                 DB PC_KEY_X+12,PC_KEY_Y,3,4     ;04 F3
  262.                 DB PC_KEY_X+6,PC_KEY_Y,3,4      ;05 F1
  263.                 DB PC_KEY_X+9,PC_KEY_Y,3,4      ;06 F2
  264.                 DB PC_KEY_X+43,PC_KEY_Y,3,5     ;07 F12
  265.                 DUPL 4,0                        ;08
  266.                 DB PC_KEY_X+35,PC_KEY_Y,3,5     ;09 F10
  267.                 DB PC_KEY_X+28,PC_KEY_Y,3,4     ;0A F8
  268.                 DB PC_KEY_X+22,PC_KEY_Y,3,4     ;0B F6
  269.                 DB PC_KEY_X+15,PC_KEY_Y,3,4     ;0C F4
  270.                 DB PC_KEY_X,PC_KEY_Y+5,3,6      ;0D TAB
  271.                 DB PC_KEY_X,PC_KEY_Y+3,3,4      ;0E `
  272.                 DUPL 8,0                        ;0F
  273.                 DB PC_KEY_X+11,PC_KEY_Y+11,3,5  ;11 L ALT
  274.                 DB PC_KEY_X,PC_KEY_Y+9,3,10     ;12 L SHIFT
  275.                 DUPL 4,0                        ;13
  276.                 DB PC_KEY_X,PC_KEY_Y+11,3,8     ;14 L CTRL
  277.                 DB PC_KEY_X+5,PC_KEY_Y+5,3,4    ;15 Q
  278.                 DB PC_KEY_X+3,PC_KEY_Y+3,3,4    ;16 1
  279.                 DUPL 12,0                       ;17
  280.                 DB PC_KEY_X+9,PC_KEY_Y+9,3,4    ;1A Z
  281.                 DB PC_KEY_X+10,PC_KEY_Y+7,3,4   ;1B S
  282.                 DB PC_KEY_X+7,PC_KEY_Y+7,3,4    ;1C A
  283.                 DB PC_KEY_X+8,PC_KEY_Y+5,3,4    ;1D W
  284.                 DB PC_KEY_X+6,PC_KEY_Y+3,3,4    ;1E 2
  285.                 DUPL 8,0                        ;1F
  286.                 DB PC_KEY_X+15,PC_KEY_Y+9,3,4   ;21 C
  287.                 DB PC_KEY_X+12,PC_KEY_Y+9,3,4   ;22 X
  288.                 DB PC_KEY_X+13,PC_KEY_Y+7,3,4   ;23 D
  289.                 DB PC_KEY_X+11,PC_KEY_Y+5,3,4   ;24 E
  290.                 DB PC_KEY_X+12,PC_KEY_Y+3,3,4   ;25 4
  291.                 DB PC_KEY_X+9,PC_KEY_Y+3,3,4    ;26 3
  292.                 DUPL 8,0                        ;27
  293.                 DB PC_KEY_X+15,PC_KEY_Y+11,3,13 ;29 SPACE
  294.                 DB PC_KEY_X+18,PC_KEY_Y+9,3,4   ;2A V
  295.                 DB PC_KEY_X+16,PC_KEY_Y+7,3,4   ;2B F
  296.                 DB PC_KEY_X+17,PC_KEY_Y+5,3,4   ;2C T
  297.                 DB PC_KEY_X+14,PC_KEY_Y+5,3,4   ;2D R
  298.                 DB PC_KEY_X+15,PC_KEY_Y+3,3,4   ;2E 5
  299.                 DUPL 8,0                        ;2F
  300.                 DB PC_KEY_X+24,PC_KEY_Y+9,3,4   ;31 N
  301.                 DB PC_KEY_X+21,PC_KEY_Y+9,3,4   ;32 B
  302.                 DB PC_KEY_X+22,PC_KEY_Y+7,3,4   ;33 H
  303.                 DB PC_KEY_X+19,PC_KEY_Y+7,3,4   ;34 G
  304.                 DB PC_KEY_X+20,PC_KEY_Y+5,3,4   ;35 Y
  305.                 DB PC_KEY_X+18,PC_KEY_Y+3,3,4   ;36 6
  306.                 DUPL 12,0                       ;37
  307.                 DB PC_KEY_X+27,PC_KEY_Y+9,3,4   ;3A M
  308.                 DB PC_KEY_X+25,PC_KEY_Y+7,3,4   ;3B J
  309.                 DB PC_KEY_X+23,PC_KEY_Y+5,3,4   ;3C U
  310.                 DB PC_KEY_X+21,PC_KEY_Y+3,3,4   ;3D 7
  311.                 DB PC_KEY_X+24,PC_KEY_Y+3,3,4   ;3E 8
  312.                 DUPL 8,0                        ;3F
  313.                 DB PC_KEY_X+30,PC_KEY_Y+9,3,4   ;41 ,
  314.                 DB PC_KEY_X+28,PC_KEY_Y+7,3,4   ;42 K
  315.                 DB PC_KEY_X+26,PC_KEY_Y+5,3,4   ;43 I
  316.                 DB PC_KEY_X+29,PC_KEY_Y+5,3,4   ;44 O
  317.                 DB PC_KEY_X+30,PC_KEY_Y+3,3,4   ;45 0
  318.                 DB PC_KEY_X+27,PC_KEY_Y+3,3,4   ;46 9
  319.                 DUPL 8,0                        ;47
  320.                 DB PC_KEY_X+33,PC_KEY_Y+9,3,4   ;49 .
  321.                 DB PC_KEY_X+36,PC_KEY_Y+9,3,4   ;4A /
  322.                 DB PC_KEY_X+31,PC_KEY_Y+7,3,4   ;4B L
  323.                 DB PC_KEY_X+34,PC_KEY_Y+7,3,4   ;4C ;
  324.                 DB PC_KEY_X+32,PC_KEY_Y+5,3,4   ;4D P
  325.                 DB PC_KEY_X+33,PC_KEY_Y+3,3,4   ;4E -
  326.                 DUPL 12,0                       ;4F
  327.                 DB PC_KEY_X+37,PC_KEY_Y+7,3,5   ;52 '
  328.                 DUPL 4,0                        ;53
  329.                 DB PC_KEY_X+35,PC_KEY_Y+5,3,4   ;54 [
  330.                 DB PC_KEY_X+36,PC_KEY_Y+3,3,4   ;55 =
  331.                 DUPL 8,0                        ;56
  332.                 DB PC_KEY_X,PC_KEY_Y+7,3,8      ;58 CAPS LOCK
  333.                 DB PC_KEY_X+39,PC_KEY_Y+9,3,9   ;59 R SHIFT
  334.                 DB PC_KEY_X+41,PC_KEY_Y+5,5,7   ;5A ENTER
  335.                 DB PC_KEY_X+38,PC_KEY_Y+5,3,4   ;5B ]
  336.                 DUPL 4,0                        ;5C
  337.                 DB PC_KEY_X+39,PC_KEY_Y+3,3,4   ;5D BACK /
  338.                 DUPL 32,0                       ;5E
  339.                 DB PC_KEY_X+42,PC_KEY_Y+3,3,6   ;66 BACKSPACE
  340.                 DUPL 8,0                        ;67
  341.                 DB PC_KEY_X+63,PC_KEY_Y+9,3,4   ;69 KP 1
  342.                 DUPL 4,0                        ;6A
  343.                 DB PC_KEY_X+63,PC_KEY_Y+7,3,4   ;6B KP 4
  344.                 DB PC_KEY_X+63,PC_KEY_Y+5,3,4   ;6C KP 7
  345.                 DUPL 12,0                       ;6D
  346.                 DB PC_KEY_X+63,PC_KEY_Y+11,3,7  ;70 KP 0
  347.                 DB PC_KEY_X+69,PC_KEY_Y+11,3,4  ;71 KP .
  348.                 DB PC_KEY_X+66,PC_KEY_Y+9,3,4   ;72 KP 2
  349.                 DB PC_KEY_X+66,PC_KEY_Y+7,3,4   ;73 KP 5
  350.                 DB PC_KEY_X+69,PC_KEY_Y+7,3,4   ;74 KP 6
  351.                 DB PC_KEY_X+66,PC_KEY_Y+5,3,4   ;75 KP 8
  352.                 DB PC_KEY_X,PC_KEY_Y,3,5        ;76 ESC
  353.                 DB PC_KEY_X+63,PC_KEY_Y+3,3,4   ;77 NUM LOCK
  354.                 DB PC_KEY_X+39,PC_KEY_Y,3,5     ;78 F11
  355.                 DB PC_KEY_X+72,PC_KEY_Y+5,5,4   ;79 KP +
  356.                 DB PC_KEY_X+69,PC_KEY_Y+9,3,4   ;7A KP 3
  357.                 DB PC_KEY_X+72,PC_KEY_Y+3,3,4   ;7B KP -
  358.                 DB PC_KEY_X+69,PC_KEY_Y+3,3,4   ;7C KP *
  359.                 DB PC_KEY_X+69,PC_KEY_Y+5,3,4   ;7D KP 9
  360.                 DB PC_KEY_X+53,PC_KEY_Y,3,5     ;7E SCROLL
  361.                 DUPL 16,0                       ;7F
  362.                 DB PC_KEY_X+25,PC_KEY_Y,3,4     ;83 F7
  363.  
  364. EXTTBL_PR_COL   DUPL 68,0                       ;00
  365.                 DB PC_KEY_X+27,PC_KEY_Y+11,3,5  ;11 R ALT
  366.                 DUPL 8,0                        ;12
  367.                 DB PC_KEY_X+40,PC_KEY_Y+11,3,8  ;14 R CTRL
  368.                 DUPL 40,0                       ;15
  369.                 DB PC_KEY_X+7,PC_KEY_Y+11,3,5   ;1F L WIN
  370.                 DUPL 28,0                       ;20
  371.                 DB PC_KEY_X+31,PC_KEY_Y+11,3,5  ;27 R WIN
  372.                 DUPL 28,0                       ;28
  373.                 DB PC_KEY_X+35,PC_KEY_Y+11,3,6  ;2F MENU
  374.                 DUPL 104,0                      ;30
  375.                 DB PC_KEY_X+66,PC_KEY_Y+3,3,4   ;4A KP /
  376.                 DUPL 60,0                       ;4B
  377.                 DB PC_KEY_X+72,PC_KEY_Y+9,5,4   ;5A KP ENTER
  378.                 DUPL 56,0                       ;5B
  379.                 DB PC_KEY_X+53,PC_KEY_Y+5,3,5   ;69 END
  380.                 DUPL 4,0                        ;6A
  381.                 DB PC_KEY_X+49,PC_KEY_Y+11,3,5  ;6B LEFT ARROW
  382.                 DB PC_KEY_X+53,PC_KEY_Y+3,3,5   ;6C HOME
  383.                 DUPL 12,0                       ;6D
  384.                 DB PC_KEY_X+49,PC_KEY_Y+3,3,5   ;70 INSERT
  385.                 DB PC_KEY_X+49,PC_KEY_Y+5,3,5   ;71 DELETE
  386.                 DB PC_KEY_X+53,PC_KEY_Y+11,3,5  ;72 DOWN ARROW
  387.                 DUPL 4,0                        ;73
  388.                 DB PC_KEY_X+57,PC_KEY_Y+11,3,5  ;74 RIGHT ARROW
  389.                 DB PC_KEY_X+53,PC_KEY_Y+9,3,5   ;75 UP ARROW
  390.                 DUPL 16,0                       ;76
  391.                 DB PC_KEY_X+57,PC_KEY_Y+5,3,5   ;7A PAGE DOWN
  392.                 DUPL 8,0                        ;7B
  393.                 DB PC_KEY_X+57,PC_KEY_Y+3,3,5   ;7D PAGE UP
  394.                 DUPL 24,0                       ;7E
  395.  
  396. ;01234567890123456789012345678901234567890123456789012345678901234567890123456789
  397. ;┌───┐ ┌──┬──┬──┬──┐┌──┬──┬──┬──┐┌──┬───┬───┬───┐ ┌───┬───┬───┐                 00
  398. ;│ESC│ │F1│F2│F3│F4││F5│F6│F7│F8││F9│F10│F11│F12│ │PRT│SCL│PAU│                 01
  399. ;└───┘ └──┴──┴──┴──┘└──┴──┴──┴──┘└──┴───┴───┴───┘ └───┴───┴───┘                 02
  400. ;┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬────┐ ┌───┬───┬───┐ ┌──┬──┬──┬──┐   03
  401. ;│ ~│ 1│ 2│ 3│ 4│ 5│ 6│ 7│ 8│ 9│ 0│ -│ =│ |│ BS │ │INS│HOM│PUp│ │NM│ /│ *│ -│   04
  402. ;├──┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴────┤ ├───┼───┼───┤ ├──┼──┼──┼──┤   05
  403. ;│ TAB│ Q│ W│ E│ R│ T│ Y│ U│ I│ O│ P│ [│ ]│     │ │DEL│END│PDn│ │ 7│ 8│ 9│  │   06
  404. ;├────┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴──┤ENTER│ └───┴───┴───┘ ├──┼──┼──┤ +│   07
  405. ;│CSLOCK│ A│ S│ D│ F│ G│ H│ J│ K│ L│ ;│ ' │     │               │ 4│ 5│ 6│  │   08
  406. ;├──────┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬─┴─────┤     ┌───┐     ├──┼──┼──┼──┤   09
  407. ;│  SHIFT │ Z│ X│ C│ V│ B│ N│ M│ ,│ .│ /│ SHIFT │     │ UP│     │ 1│ 2│ 3│ E│   0A
  408. ;├──────┬─┴─┬┴──┼──┴──┴──┴──┼──┴┬─┴─┬┴──┴┬──────┤ ┌───┼───┼───┐ ├──┴──┼──┤ N│   0B
  409. ;│ CTRL │WIN│ALT│   SPACE   │ALT│WIN│MENU│ CTRL │ │ LF│DWN│RT │ │  0  │ .│ T│   0C
  410. ;└──────┴───┴───┴───────────┴───┴───┴────┴──────┘ └───┴───┴───┘ └─────┴──┴──┘   0D
  411. ;01234567890123456789012345678901234567890123456789012345678901234567890123456789
  412.  
  413. PC_KEYS         DB 0X16,PC_KEY_Y+1,PC_KEY_X+1, "┌───┐ ┌──┬──┬──┬──┐┌──┬──┬──┬──┐┌──┬───┬───┬───┐ ┌───┬───┬───┐"
  414.                 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│"
  415.                 DB 0X16,PC_KEY_Y+3,PC_KEY_X+1, "└───┘ └──┴──┴──┴──┘└──┴──┴──┴──┘└──┴───┴───┴───┘ └───┴───┴───┘"
  416.                 DB 0X16,PC_KEY_Y+4,PC_KEY_X+1, "┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬────┐ ┌───┬───┬───┐ ┌──┬──┬──┬──┐"
  417.                 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│ /│ *│ -│"
  418.                 DB 0X16,PC_KEY_Y+6,PC_KEY_X+1, "├──┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴────┤ ├───┼───┼───┤ ├──┼──┼──┼──┤"
  419.                 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│  │"
  420.                 DB 0X16,PC_KEY_Y+8,PC_KEY_X+1, "├────┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴──┤ENTER│ └───┴───┴───┘ ├──┼──┼──┤ +│"
  421.                 DB 0X16,PC_KEY_Y+9,PC_KEY_X+1, "│CSLOCK│ A│ S│ D│ F│ G│ H│ J│ K│ L│ ;│ ' │     │               │ 4│ 5│ 6│  │"
  422.                 DB 0X16,PC_KEY_Y+10,PC_KEY_X+1,"├──────┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬┴─┬─┴─────┤     ┌───┐     ├──┼──┼──┼──┤"
  423.                 DB 0X16,PC_KEY_Y+11,PC_KEY_X+1,"│  SHIFT │ Z│ X│ C│ V│ B│ N│ M│ ,│ .│ /│ SHIFT │     │ UP│     │ 1│ 2│ 3│ E│"
  424.                 DB 0X16,PC_KEY_Y+12,PC_KEY_X+1,"├──────┬─┴─┬┴──┼──┴──┴──┴──┼──┴┬─┴─┬┴──┴┬──────┤ ┌───┼───┼───┐ ├──┴──┼──┤ N│"
  425.                 DB 0X16,PC_KEY_Y+13,PC_KEY_X+1,"│ CTRL │WIN│ALT│   SPACE   │ALT│WIN│MENU│ CTRL │ │ LF│DWN│RT │ │  0  │ .│ T│"
  426.                 DB 0X16,PC_KEY_Y+14,PC_KEY_X+1,"└──────┴───┴───┴───────────┴───┴───┴────┴──────┘ └───┴───┴───┘ └─────┴──┴──┘",0
  427.  
  428. ;1C     A       45      0       04      F3      7D      KP 9    1F      LGUI
  429. ;32     B       16      1       0C      F4      5B      ]       14      RCTRL  
  430. ;21     C       1E      2       03      F5      4C      ;       27      RGUI
  431. ;23     D       26      3       0B      F6      52      '       11      RALT
  432. ;24     E       25      4       83      F7      41      ,       2F      APPS
  433. ;2B     F       2E      5       0A      F8      49      .       70      INSERT
  434. ;34     G       36      6       01      F9      4A      /       6C      HOME
  435. ;33     H       3D      7       09      F10                     7D      PG UP
  436. ;43     I       3E      8       78      F11                     71      DELETE
  437. ;3B     J       46      9       07      F12                     69      END
  438. ;42     K       0E      `       7E      SCROLL                  7A      PG DN
  439. ;4B     L       4E      -       54      [                       75      U ARROW
  440. ;3A     M       55      =       77      NUM                     6B      L ARROW
  441. ;31     N       5D      \       7C      KP *                    72      D ARROW
  442. ;44     O       66      BKSP    7B      KP -                    74      R ARROW
  443. ;4D     P       29      SPACE   79      KP +                    4A      KP /
  444. ;15     Q       0D      TAB     71      KP .                    5A      KP ENTER
  445. ;2D     R       58      CAPS    70      KP 0
  446. ;1B     S       12      LSHIFT  69      KP 1
  447. ;2C     T       14      LCTRL   72      KP 2
  448. ;3C     U       11      LALT    7A      KP 3
  449. ;2A     V       59      RSHIFT  6B      KP 4
  450. ;1D     W       5A      ENTER   73      KP 5
  451. ;22     X       76      ESC     74      KP 6
  452. ;35     Y       05      F1      6C      KP 7
  453. ;1A     Z       06      F2      75      KP 8
  454.  
  455. TXT4TESTERPC    DB 0X16,0,31,"PC keyboard tester",0X16,24,(80-(TXT4TESTERPC2-TXT4TESTERPC1))/2
  456. TXT4TESTERPC1   DB "EXIT - press ALT+F4 or Left CTRL+X"
  457. TXT4TESTERPC2   DB 0X16,22,2,"Read codes:",0
  458.