Subversion Repositories pentevo

Rev

Rev 290 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1. ;
  2. ;
  3. ;   0                                   4
  4. ;   5                                   1
  5. ; ┌─────────────────────────────────────────────┐
  6. ; │                                             │
  7. ; │ e   1 2 3 4 5 6 7 8 9 0 1 2  p s p  . . .   │07
  8. ; │                                             │
  9. ; │ ` 1 2 3 4 5 6 7 8 9 0 - = <  i h u  n / * - │
  10. ; │ t Q W E R T Y U I O P [ ] \  d e d  7 8 9   │
  11. ; │ c A S D F G H J K L ; '   e         4 5 6 + │
  12. ; │ s Z X C V B N M , . /     s        1 2 3   │
  13. ; │ c w a       s       a w m c  <  >  0   . e │
  14. ; │                                             │
  15. ; │─────────────────────────────────────────────│
  16. ; │ Raw data:                                   │16
  17. ; │  00 00 00 00 00 00 00 00 00 00 00 00 00 00  │17
  18. ; │                                             │
  19. ; │ Трёхкратное нажатие <ESC> - выход из теста  │19
  20. ; └─────────────────────────────────────────────┘
  21. ;
  22. ;
  23. ;--------------------------------------
  24. ;
  25. .EQU    TPSK_PTR        =0
  26. .EQU    TPSK_TEMP       =1
  27. .EQU    TPSK_COUNT      =2
  28. .EQU    TPSK_FLAGS      =3
  29. .EQU    TPSK_LEDS       =4
  30. ;
  31. ;--------------------------------------
  32. ;
  33. ;TESTPS2KEYB_NOEXIT:
  34. ;        GETMEM  5
  35. ;        STH     TPSK_FLAGS,FF
  36. ;
  37. ;        LDIZ    WIND_T_PS2K*2
  38. ;        CALL    WINDOW
  39. ;        RJMP    T_PSK00
  40. ;
  41. ; - - - - - - - - - - - - - - - - - - -
  42. ;
  43. TESTPS2KEYB:
  44.         GETMEM  5
  45.         STH     TPSK_FLAGS,NULL
  46.  
  47.         LDIZ    WIND_T_PS2K*2
  48.         CALL    WINDOW
  49.         LDIZ    MLMSG_TPS2K_0*2
  50.         RCALL   SCR_PRINTMLSTR
  51. T_PSK00:LDI     TEMP,$80
  52.         STH     TPSK_LEDS,TEMP
  53.  
  54.         LDIZ    MSG_TPS2K_1*2
  55.         RCALL   SCR_PRINTSTRZ
  56.         LDI     DATA,$C4        ;"─"
  57.         LDI     COUNT,45
  58.         RCALL   SCR_FILL_CHAR
  59.  
  60.         LDIZ    MEGABUFFER+16
  61. T_PSK01:ST      -Z,NULL
  62.         TST     ZL
  63.         BRNE    T_PSK01
  64.         STS     PS2K_RAW_READY,NULL
  65.         STH     TPSK_PTR,NULL
  66.  
  67. T_PSK10:
  68.         LDS     DATA,PS2K_RAW_READY
  69.         TST     DATA
  70.         BREQ    T_PSK11
  71.         LDS     DATA,PS2K_RAW_CODE
  72.         RCALL   T_PSK80
  73. T_PSK11:
  74.         LDH     DATA,TPSK_LEDS
  75.         SBRS    DATA,7
  76.         RJMP    T_PSK1L
  77.         ANDI    DATA,$07
  78.         STH     TPSK_LEDS,DATA
  79.         LDI     DATA,$ED
  80.         RCALL   T_PSK80
  81.         RCALL   PS2K_SEND_BYTE
  82.         BREQ    T_PSK1_SETLED_FAIL
  83.         RCALL   PS2K_RECEIVE_BYTE
  84.         BREQ    T_PSK1_SETLED_FAIL
  85.         RCALL   T_PSK80
  86.         CPI     DATA,$FA
  87.         BRNE    T_PSK1_SETLED_FAIL
  88.         LDH     DATA,TPSK_LEDS
  89.         RCALL   T_PSK80
  90.         RCALL   PS2K_SEND_BYTE
  91.         BREQ    T_PSK1_SETLED_FAIL
  92.         RCALL   PS2K_RECEIVE_BYTE
  93.         BREQ    T_PSK1_SETLED_FAIL
  94.         RCALL   T_PSK80
  95.         CPI     DATA,$FA
  96.         BRNE    T_PSK1_SETLED_FAIL
  97.         RCALL   T_PSK7_SHOW_LEDS
  98. T_PSK1_SETLED_FAIL:
  99.  
  100. T_PSK1L:
  101.         LDS     TEMP,PS2K_KEY_FLAGS
  102.         SBRS    TEMP,PS2K_BIT_READY
  103.         RJMP    T_PSK10
  104. ;
  105.         STS     PS2K_KEY_FLAGS,NULL
  106.         LDS     DATA,PS2K_KEY_CODE
  107.         STH     TPSK_TEMP,TEMP
  108.  
  109.         LDH     COUNT,TPSK_FLAGS
  110. ;        TST     COUNT
  111. ;        BRMI    T_PSK21
  112.         SBRS    TEMP,PS2K_BIT_RELEASE
  113.         RJMP    T_PSK21
  114.         SBRC    TEMP,PS2K_BIT_EXTKEY
  115.         RJMP    T_PSK22
  116.         CPI     DATA,KEY_ESC
  117.         BRNE    T_PSK22
  118.         INC     COUNT
  119.         STH     TPSK_FLAGS,COUNT
  120.         CPI     COUNT,3
  121.         BRCS    T_PSK21
  122.  
  123.         RCALL   SCR_KBDSETLED
  124.         FREEMEM 5
  125.         RET
  126. ;
  127. T_PSK22:STH     TPSK_FLAGS,NULL
  128. T_PSK21:SBRC    TEMP,PS2K_BIT_EXTKEY
  129.         RJMP    T_PSK12
  130.         SBRC    TEMP,PS2K_BIT_RELEASE
  131.         RJMP    T_PSK26
  132.  
  133.         LDH     XL,TPSK_LEDS
  134.         LDI     XH,$01
  135.         CPI     DATA,KEY_SCROLLLOCK
  136.         BRNE    T_PSK23
  137.         EOR     XL,XH
  138.         ORI     XL,$80
  139. T_PSK23:LSL     XH
  140.         CPI     DATA,KEY_NUMLOCK
  141.         BRNE    T_PSK24
  142.         EOR     XL,XH
  143.         ORI     XL,$80
  144. T_PSK24:LSL     XH
  145.         CPI     DATA,KEY_CAPSLOCK
  146.         BRNE    T_PSK25
  147.         EOR     XL,XH
  148.         ORI     XL,$80
  149. T_PSK25:STH     TPSK_LEDS,XL
  150. T_PSK26:
  151.  
  152.         CPI     DATA,$83        ;F7
  153.         BRNE    T_PSK12
  154.         LDI     XL,(9<<3)|0
  155.         RJMP    T_PSK14
  156. T_PSK12:CPI     DATA,$84        ;SysReg
  157.         BRNE    T_PSK13
  158.         LDI     XL,(15<<3)|0
  159.         RJMP    T_PSK14
  160. T_PSK13:
  161.         CPI     DATA,$80
  162.         BRCC    T_PSK10_A
  163.         LSL     DATA
  164.         SBRC    TEMP,PS2K_BIT_EXTKEY
  165.         ORI     DATA,$01
  166.         LDIZ    TPSK_TAB*2
  167.         ADD     ZL,DATA
  168.         ADC     ZH,NULL
  169.         LPM     XL,Z
  170.         TST     XL
  171.         BREQ    T_PSK10_A
  172. T_PSK14:MOV     XH,XL
  173.         ANDI    XH,0B00000111
  174.         TST     XH
  175.         BREQ    T_PSK15
  176.         INC     XH
  177. T_PSK15:LSR     XL
  178.         LSR     XL
  179.         ANDI    XL,0B00111110
  180.         CPI     XL,36
  181.         BRCS    T_PSK16
  182.         INC     XL
  183. T_PSK16:CPI     XL,30
  184.         BRCS    T_PSK17
  185.         INC     XL
  186. T_PSK17:ADDI    XL,3
  187.         ADDI    XH,7
  188.         RCALL   SCR_SET_CURSOR
  189.         LDH     DATA,TPSK_TEMP
  190.         LDI     TEMP,$AE
  191.         SBRC    DATA,PS2K_BIT_RELEASE
  192.         LDI     TEMP,$D1
  193.         LDI     COUNT,1
  194.         RCALL   SCR_FILL_ATTR
  195. T_PSK10_A:
  196.         RJMP    T_PSK10
  197. ;
  198. ;
  199. T_PSK80:PUSH    DATA
  200.         STS     PS2K_RAW_READY,NULL
  201.  
  202.         LDH     ZL,TPSK_PTR
  203.         LDI     ZH,HIGH(MEGABUFFER)
  204.         ST      Z+,DATA
  205.         ANDI    ZL,$0F
  206.         STH     TPSK_PTR,ZL
  207.  
  208.         ANDI    FLAGS1,0B11111100       ;!!!
  209.         LDI     XL,5
  210.         LDI     XH,17
  211.         RCALL   SCR_SET_CURSOR
  212.         LDH     ZL,TPSK_PTR
  213.         INC     ZL
  214.         LDI     COUNT,13
  215.  
  216. T_PSK81:STH     TPSK_COUNT,COUNT
  217.         LDI     ZH,HIGH(MEGABUFFER)
  218.         INC     ZL
  219.         ANDI    ZL,$0F
  220.         STH     TPSK_TEMP,ZL
  221.         LD      DATA,Z
  222.         PUSH    DATA
  223.         LDI     TEMP,$0E
  224.         CPI     DATA,$E0
  225.         BREQ    T_PSK82
  226.         CPI     DATA,$E1
  227.         BREQ    T_PSK82
  228.         LDI     TEMP,$0D
  229.         CPI     DATA,$F0
  230.         BREQ    T_PSK82
  231.         LDI     TEMP,$0B
  232.         CPI     DATA,$ED
  233.         BREQ    T_PSK82
  234.         LDI     TEMP,$0A
  235.         CPI     DATA,$85
  236.         BRCC    T_PSK82
  237.         LDI     TEMP,$0F
  238. T_PSK82:RCALL   SCR_SET_ATTR
  239.         LDI     DATA,$20
  240.         RCALL   SCR_PUTCHAR
  241.         POP     DATA
  242.         LDH     COUNT,TPSK_COUNT
  243.         TST     COUNT
  244.         BREQ    T_PSK83
  245.         RCALL   HEXBYTE
  246.         LDH     ZL,TPSK_TEMP
  247.         LDH     COUNT,TPSK_COUNT
  248.         DEC     COUNT
  249.         RJMP    T_PSK81
  250. T_PSK83:
  251.         ORI     FLAGS1,0B00000010       ;!!!
  252.         CALL    HEXBYTE
  253.         LDI     DATA,$20
  254.         CALL    PUTCHAR
  255.  
  256.         POP     DATA
  257.         RET
  258. ;
  259. ;
  260. T_PSK7_SHOW_LEDS:
  261.         LDI     XL,41
  262.         LDI     XH,7
  263.         RCALL   SCR_SET_CURSOR
  264.         LDH     DATA,TPSK_LEDS
  265.         LDI     TEMP,$DC
  266.         SBRS    DATA,1
  267.         LDI     TEMP,$D0
  268.         LDI     COUNT,2
  269.         RCALL   SCR_FILL_ATTR
  270.         LDH     DATA,TPSK_LEDS
  271.         LDI     TEMP,$DC
  272.         SBRS    DATA,2
  273.         LDI     TEMP,$D0
  274.         LDI     COUNT,2
  275.         RCALL   SCR_FILL_ATTR
  276.         LDH     DATA,TPSK_LEDS
  277.         LDI     TEMP,$DC
  278.         SBRS    DATA,0
  279.         LDI     TEMP,$D0
  280.         LDI     COUNT,2
  281.         RJMP    SCR_FILL_ATTR
  282. ;
  283. ;--------------------------------------
  284. ;
  285. WIND_T_PS2K:
  286.         .DB     3,5,47,16,$DF,$01
  287. ;
  288. ;--------------------------------------
  289. ;
  290. TPSK_TAB:
  291.         .DB     0        , 0            ;00
  292.         .DB     (11<<3)|0, 0            ;01
  293.         .DB     0        , 0            ;02
  294.         .DB     ( 7<<3)|0, 0            ;03
  295.         .DB     ( 5<<3)|0, 0            ;04
  296.         .DB     ( 3<<3)|0, 0            ;05
  297.         .DB     ( 4<<3)|0, 0            ;06
  298.         .DB     (14<<3)|0, 0            ;07
  299.         .DB     0        , 0            ;08
  300.         .DB     (12<<3)|0, 0            ;09
  301.         .DB     (10<<3)|0, 0            ;0A
  302.         .DB     ( 8<<3)|0, 0            ;0B
  303.         .DB     ( 6<<3)|0, 0            ;0C
  304.         .DB     ( 1<<3)|2, 0            ;0D
  305.         .DB     ( 1<<3)|1, 0            ;0E
  306.         .DB     0        , 0            ;0F
  307.         .DB     0        , 0            ;10
  308.         .DB     ( 3<<3)|5, (11<<3)|5    ;11
  309.         .DB     ( 1<<3)|4, 0            ;12
  310.         .DB     0        , 0            ;13
  311.         .DB     ( 1<<3)|5, (14<<3)|5    ;14
  312.         .DB     ( 2<<3)|2, 0            ;15
  313.         .DB     ( 2<<3)|1, 0            ;16
  314.         .DB     0        , 0            ;17
  315.         .DB     0        , 0            ;18
  316.         .DB     0        , 0            ;19
  317.         .DB     ( 2<<3)|4, 0            ;1A
  318.         .DB     ( 3<<3)|3, 0            ;1B
  319.         .DB     ( 2<<3)|3, 0            ;1C
  320.         .DB     ( 3<<3)|2, 0            ;1D
  321.         .DB     ( 3<<3)|1, 0            ;1E
  322.         .DB     0        , ( 2<<3)|5    ;1F
  323.         .DB     0        , 0            ;20
  324.         .DB     ( 4<<3)|4, 0            ;21
  325.         .DB     ( 3<<3)|4, 0            ;22
  326.         .DB     ( 4<<3)|3, 0            ;23
  327.         .DB     ( 4<<3)|2, 0            ;24
  328.         .DB     ( 5<<3)|1, 0            ;25
  329.         .DB     ( 4<<3)|1, 0            ;26
  330.         .DB     0        , (12<<3)|5    ;27
  331.         .DB     0        , 0            ;28
  332.         .DB     ( 7<<3)|5, 0            ;29
  333.         .DB     ( 5<<3)|4, 0            ;2A
  334.         .DB     ( 5<<3)|3, 0            ;2B
  335.         .DB     ( 6<<3)|2, 0            ;2C
  336.         .DB     ( 5<<3)|2, 0            ;2D
  337.         .DB     ( 6<<3)|1, 0            ;2E
  338.         .DB     0        , (13<<3)|5    ;2F
  339.         .DB     0        , 0            ;30
  340.         .DB     ( 7<<3)|4, 0            ;31
  341.         .DB     ( 6<<3)|4, 0            ;32
  342.         .DB     ( 7<<3)|3, 0            ;33
  343.         .DB     ( 6<<3)|3, 0            ;34
  344.         .DB     ( 7<<3)|2, 0            ;35
  345.         .DB     ( 7<<3)|1, 0            ;36
  346.         .DB     0        , 0            ;37
  347.         .DB     0        , 0            ;38
  348.         .DB     0        , 0            ;39
  349.         .DB     ( 8<<3)|4, 0            ;3A
  350.         .DB     ( 8<<3)|3, 0            ;3B
  351.         .DB     ( 8<<3)|2, 0            ;3C
  352.         .DB     ( 8<<3)|1, 0            ;3D
  353.         .DB     ( 9<<3)|1, 0            ;3E
  354.         .DB     0        , 0            ;3F
  355.         .DB     0        , 0            ;40
  356.         .DB     ( 9<<3)|4, 0            ;41
  357.         .DB     ( 9<<3)|3, 0            ;42
  358.         .DB     ( 9<<3)|2, 0            ;43
  359.         .DB     (10<<3)|2, 0            ;44
  360.         .DB     (11<<3)|1, 0            ;45
  361.         .DB     (10<<3)|1, 0            ;46
  362.         .DB     0        , 0            ;47
  363.         .DB     0        , 0            ;48
  364.         .DB     (10<<3)|4, 0            ;49
  365.         .DB     (11<<3)|4, (19<<3)|1    ;4A
  366.         .DB     (10<<3)|3, 0            ;4B
  367.         .DB     (11<<3)|3, 0            ;4C
  368.         .DB     (11<<3)|2, 0            ;4D
  369.         .DB     (12<<3)|1, 0            ;4E
  370.         .DB     0        , 0            ;4F
  371.         .DB     0        , 0            ;50
  372.         .DB     0        , 0            ;51
  373.         .DB     (12<<3)|3, 0            ;52
  374.         .DB     0        , 0            ;53
  375.         .DB     (12<<3)|2, 0            ;54
  376.         .DB     (13<<3)|1, 0            ;55
  377.         .DB     0        , 0            ;56
  378.         .DB     0        , 0            ;57
  379.         .DB     ( 1<<3)|3, 0            ;58
  380.         .DB     (14<<3)|4, 0            ;59
  381.         .DB     (14<<3)|3, (21<<3)|5    ;5A
  382.         .DB     (13<<3)|2, 0            ;5B
  383.         .DB     0        , 0            ;5C
  384.         .DB     (14<<3)|2, 0            ;5D
  385.         .DB     0        , 0            ;5E
  386.         .DB     0        , 0            ;5F
  387.         .DB     0        , 0            ;60
  388.         .DB     0        , 0            ;61
  389.         .DB     0        , 0            ;62
  390.         .DB     0        , 0            ;63
  391.         .DB     0        , 0            ;64
  392.         .DB     0        , 0            ;65
  393.         .DB     (14<<3)|1, 0            ;66
  394.         .DB     0        , 0            ;67
  395.         .DB     0        , 0            ;68
  396.         .DB     (18<<3)|4, (16<<3)|2    ;69
  397.         .DB     0        , 0            ;6A
  398.         .DB     (18<<3)|3, (15<<3)|5    ;6B
  399.         .DB     (18<<3)|2, (16<<3)|1    ;6C
  400.         .DB     0        , 0            ;6D
  401.         .DB     0        , 0            ;6E
  402.         .DB     0        , 0            ;6F
  403.         .DB     (18<<3)|5, (15<<3)|1    ;70
  404.         .DB     (20<<3)|5, (15<<3)|2    ;71
  405.         .DB     (19<<3)|4, (16<<3)|5    ;72
  406.         .DB     (19<<3)|3, 0            ;73
  407.         .DB     (20<<3)|3, (17<<3)|5    ;74
  408.         .DB     (19<<3)|2, (16<<3)|4    ;75
  409.         .DB     ( 1<<3)|0, 0            ;76
  410.         .DB     (18<<3)|1, 0            ;77
  411.         .DB     (13<<3)|0, 0            ;78
  412.         .DB     (21<<3)|3, 0            ;79
  413.         .DB     (20<<3)|4, (17<<3)|2    ;7A
  414.         .DB     (21<<3)|1, 0            ;7B
  415.         .DB     (20<<3)|1, (15<<3)|0    ;7C
  416.         .DB     (20<<3)|2, (17<<3)|1    ;7D
  417.         .DB     (16<<3)|0, (17<<3)|0    ;7E
  418.         .DB     0        , 0            ;7F
  419. ;
  420. ;--------------------------------------
  421. ;
  422.