Subversion Repositories Kolibri OS

Rev

Rev 1919 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. ; Keyboard indicators v0.1
  3. ; by Albom
  4.  
  5. use32
  6. org     0
  7. db      'MENUET01'
  8. dd      1
  9. dd      _start
  10. dd      _end
  11. dd      _memory
  12. dd      _stack
  13. dd      _param
  14. dd      0
  15.  
  16.  
  17. _start:
  18.  
  19. call _key_set
  20. call _wnd_draw
  21.  
  22. _event_wait:
  23.  
  24. mov     eax, 10
  25. int     0x40
  26.  
  27. cmp     eax, 1
  28. jne @f
  29. call    _wnd_draw
  30.  
  31. @@:
  32. cmp     eax, 2
  33. jne @f
  34. call   _key_check
  35.  
  36. @@:
  37. cmp     eax, 3
  38. jne @f
  39. call    _btn_check
  40.  
  41. @@:
  42.  
  43.  
  44. jmp  _event_wait
  45.  
  46. _key_set:
  47. mov eax, 66
  48. mov edx, 0
  49. mov ebx, 4
  50. mov cl, 69
  51. int 0x40
  52.  
  53. mov eax, 66
  54. mov edx, 0
  55. mov ebx, 4
  56. mov cl, 58
  57. int 0x40
  58.  
  59. mov eax, 66
  60. mov edx, 0
  61. mov ebx, 4
  62. mov cl, 70
  63. int 0x40
  64.  
  65. ret
  66.  
  67.  
  68. _wnd_draw:
  69. pusha
  70.  
  71. mov     eax, 12
  72. mov     ebx, 1
  73. int     0x40
  74.  
  75. xor     eax, eax
  76. mov     ebx, 10*65536+100
  77. mov     ecx, 10*65536+30
  78. mov     edx, 0x34ffffff
  79. mov     edi, _ind
  80. int     0x40
  81.  
  82. call    _indicators_check
  83.  
  84. mov     eax, 12
  85. mov     ebx, 2
  86. int     0x40
  87.  
  88. popa
  89. ret
  90.  
  91. _key_check:
  92. pusha
  93. mov     eax, 2
  94. int     0x40
  95.  
  96. call    _indicators_check
  97.  
  98. popa
  99. ret
  100.  
  101. _btn_check:
  102. pusha
  103. mov     eax, 17
  104. int     0x40
  105. cmp     ah, 1
  106. jne     @f
  107. mov eax, -1
  108. int 0x40
  109. @@:
  110. popa
  111. ret
  112.  
  113.  
  114. _indicators_check:
  115. pusha
  116.         mov eax, 66
  117.         mov ebx, 3
  118.         int 40h
  119.  
  120. test_ins:
  121.         test eax, 0x80
  122.         jz @f
  123.         mov [_ind], '*'
  124.         jmp test_caps
  125. @@:
  126.         mov [_ind], 'o'
  127.  
  128. test_caps:
  129.         test eax, 0x40
  130.         jz @f
  131.         mov [_ind+1], '*'
  132.         jmp test_scroll
  133. @@:
  134.         mov [_ind+1], 'o'
  135.  
  136. test_scroll:
  137.         test eax, 0x100
  138.         jz @f
  139.         mov [_ind+2], '*'
  140.         jmp test_ok
  141. @@:
  142.         mov [_ind+2], 'o'
  143.  
  144. test_ok:
  145.         mov eax, 71
  146.         mov ebx, 1
  147.         mov ecx, _ind
  148.         int 0x40
  149. popa
  150. ret
  151.  
  152. _ind db 'ooo', 0
  153.  
  154. _param:
  155. rb 256
  156.  
  157. _end:
  158.  
  159. align 32
  160. rb 2048
  161. _stack:
  162. _memory:
  163.