Subversion Repositories Kolibri OS

Rev

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

  1. ; Keyboard indicators v0.2
  2. ; by Albom and IgorA
  3.  
  4. use32
  5.  org 0
  6.  db 'MENUET01'
  7.  dd 1
  8.  dd _start
  9.  dd _end
  10.  dd _memory
  11.  dd stacktop
  12.  dd 0
  13.  dd sys_path
  14.  
  15. include '../../macros.inc'
  16. include '../../proc32.inc'
  17. include '../../develop/libraries/box_lib/load_lib.mac'
  18. include '../../develop/libraries/box_lib/trunk/box_lib.mac'
  19. ;include 'mem.inc'
  20. ;include 'dll.inc'
  21.  
  22. @use_library ;_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
  23.  
  24. align 4
  25. _start:
  26.  load_libraries l_libs_start,l_libs_end
  27.  mcall 48,3,sc,sizeof.system_colors
  28.  mcall 40,0x27
  29.  
  30.  init_checkboxes2 check_boxes,check_boxes_end
  31.  check_boxes_set_sys_color2 check_boxes,check_boxes_end,sc
  32.  call _key_set
  33.  
  34. align 4
  35. red_win:
  36.  call draw_window
  37.  
  38.  
  39. align 4
  40. still:
  41.  mcall 10
  42.  
  43.  cmp al,1 ;èçì. ïîëîæåíèå îêíà
  44.  jz red_win
  45.  cmp al,2
  46.  jz key
  47.  cmp al,3
  48.  jz button
  49.  
  50.  ;stdcall [check_box_mouse], ch1
  51.  ;stdcall [check_box_mouse], ch2
  52.  ;stdcall [check_box_mouse], ch3
  53.  
  54.  jmp still
  55.  
  56. ;óñòàíîâèòü îáùåñèñòåìíûå "ãîðÿ÷èå êëàâèøè"
  57. align 4
  58. _key_set:
  59. mov eax, 66
  60. mov ebx, 4
  61. mov edx, 0
  62. mov cl, 69
  63. int 0x40
  64.  
  65. mov eax, 66
  66. mov ebx, 4
  67. mov edx, 0
  68. mov cl, 58
  69. int 0x40
  70.  
  71. mov eax, 66
  72. mov ebx, 4
  73. mov edx, 0
  74. mov cl, 70
  75. int 0x40
  76.  
  77. ret
  78.  
  79. align 4
  80. draw_window:
  81. pushad
  82.  mcall 12,1
  83.  xor eax,eax
  84.  mov ebx,(10 shl 16)+100
  85.  mov ecx,(10 shl 16)+75
  86.  mov edx,[sc.work]
  87.  or edx,(2 shl 24)+0x10000000+0x20000000
  88.  mov edi,[sc.grab] ;[sc.frame]
  89.  mov esi,[sc.grab]
  90.  int 0x40
  91.  
  92.  mov eax,8
  93.  mov ebx,(80 shl 16)+10
  94.  mov cx,-15
  95.  shl ecx,16
  96.  mov cx,10
  97.  mov edx,1
  98.  mov esi,[sc.grab_button]
  99.  int 0x40
  100.  
  101.  stdcall [check_box_draw], ch1
  102.  stdcall [check_box_draw], ch2
  103.  stdcall [check_box_draw], ch3
  104.  mcall 12,2
  105. popad
  106.  ret
  107.  
  108. align 4
  109. key:
  110.  mcall 2
  111.  call _indicators_check
  112.  jmp still
  113.  
  114. align 4
  115. _indicators_check:
  116. pusha
  117.  mov eax, 66
  118.  mov ebx, 3
  119.  int 40h
  120.  
  121. test_ins:
  122.  test eax, 0x80
  123.  jz @f
  124.  bts dword[ch1.flags],1
  125.  jmp test_caps
  126. @@:
  127.  btr dword[ch1.flags],1
  128.  
  129. test_caps:
  130.  test eax, 0x40
  131.  jz @f
  132.  bts dword[ch2.flags],1
  133.  jmp test_scroll
  134. @@:
  135.  btr dword[ch2.flags],1
  136.  
  137. test_scroll:
  138.  test eax, 0x100
  139.  jz @f
  140.  bts dword[ch3.flags],1
  141.  jmp test_ok
  142. @@:
  143.  btr dword[ch3.flags],1
  144.  
  145. test_ok:
  146.  call draw_window
  147. popa
  148. ret
  149.  
  150. align 4
  151. button:
  152.  mcall 17
  153.  cmp ah,1
  154.  jne still
  155. .exit:
  156.  mcall -1
  157.  
  158.  
  159. check_boxes:
  160. ch1 check_box2 (5 shl 16)+15,(5 shl 16)+10,5, 0xffffff,0x8000,0xff,\
  161.  txt_160,0+ch_flag_middle
  162. ch2 check_box2 (5 shl 16)+15,(17 shl 16)+10,5, 0xffffff,0x8000,0xff,\
  163.  txt_159,0+ch_flag_middle
  164. ch3 check_box2 (5 shl 16)+15,(29 shl 16)+10,5, 0xffffff,0x8000,0xff,\
  165.  txt_158,0+ch_flag_middle
  166. check_boxes_end:
  167.  
  168. txt_160 db 'Num',0
  169. txt_159 db 'Caps',0
  170. txt_158 db 'Scroll',0
  171.  
  172. head_f_i:
  173. head_f_l db 'Ñèñòåìíàÿ îøèáêà',0
  174.  
  175. system_dir_0 db '/sys/lib/'
  176. lib_name_0 db 'box_lib.obj',0
  177. err_msg_found_lib_0 db 'Íå íàéäåíà áèáëèîòåêà box_lib.obj',0
  178. err_msg_import_0 db 'Îøèáêà ïðè èìïîðòå áèáëèîòåêè box_lib',0
  179.  
  180. l_libs_start:
  181.  lib_0 l_libs lib_name_0, sys_path, library_path, system_dir_0,\
  182.  err_msg_found_lib_0,head_f_l,import_box_lib,err_msg_import_0,head_f_i
  183. l_libs_end:
  184.  
  185. align 4
  186. import_box_lib:
  187.  ;init dd sz_init
  188.  init_checkbox dd sz_init_checkbox
  189.  check_box_draw dd sz_check_box_draw
  190.  check_box_mouse dd sz_check_box_mouse
  191.  dd 0,0
  192.  ;sz_init db 'lib_init',0
  193.  sz_init_checkbox db 'init_checkbox2',0
  194.  sz_check_box_draw db 'check_box_draw2',0
  195.  sz_check_box_mouse db 'check_box_mouse2',0
  196.  
  197. ;mouse_dd dd 0x0
  198. sc system_colors
  199.  
  200. _end:
  201. align 32
  202.  rb 2048
  203. stacktop:
  204.  sys_path rb 1024
  205.  library_path rb 1024
  206. _memory:
  207.