Subversion Repositories Kolibri OS

Rev

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