Rev 3670 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
31 | halyavin | 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ; ; |
||
2619 | mario79 | 3 | ; TASK PANEL for KolibriOS - Compile with fasm ; |
31 | halyavin | 4 | ; ; |
5 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
||
2619 | mario79 | 6 | ;------------------------------------------------------------------------------ |
3672 | hidnplayr | 7 | ; version: 2.24 |
8 | ; last update: 16/06/2013 |
||
9 | ; changed by: hidnplayr |
||
10 | ; changes: Changed keymap hotkeys to only use left alt |
||
11 | ; (Right alt has special function on some keyboards) |
||
12 | ;------------------------------------------------------------------------------ |
||
3670 | hidnplayr | 13 | ; version: 2.23 |
2649 | mario79 | 14 | ; last update: 26/04/2012 |
15 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
||
16 | ; changes: Using new f18.23 - minimize all windows |
||
17 | ;------------------------------------------------------------------------------ |
||
3670 | hidnplayr | 18 | ; version: 2.22 |
2638 | mario79 | 19 | ; last update: 20/04/2012 |
20 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
||
21 | ; changes: Activation mechanism when trying to run an existing appl. |
||
22 | ; Forced redrawing the background after the clean desktop (Win+D) |
||
23 | ;------------------------------------------------------------------------------ |
||
3670 | hidnplayr | 24 | ; version: 2.2 |
2630 | mario79 | 25 | ; last update: 19/04/2012 |
26 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
||
27 | ; changes: Support PrintScreen for SCRSHOOT. |
||
28 | ; Path to run applications from the INI file. |
||
29 | ; Algorithm anti-duplication of applications for run with hotkey. |
||
30 | ; Added color selection for the Alt+Tab. |
||
31 | ; Alt+Ctrl+ArrowLeft - Page list next |
||
32 | ; Alt+Ctrl+ArrowRight - Page list previous |
||
33 | ;------------------------------------------------------------------------------ |
||
3670 | hidnplayr | 34 | ; version: 2.1 |
2626 | mario79 | 35 | ; last update: 18/04/2012 |
36 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
||
37 | ; changes: Added color selection for the text. |
||
38 | ; Show "change page list" only if the applications |
||
39 | ; does not fit in the panel. |
||
40 | ; Display file names up to 11 char previously displ. only 8 char. |
||
41 | ;------------------------------------------------------------------------------ |
||
3670 | hidnplayr | 42 | ; version: 2.0 |
2619 | mario79 | 43 | ; last update: 17/04/2012 |
44 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
||
45 | ; changes: New logic of switching windows (turnoff/restore) |
||
46 | ; New logic of button "clear desktop". |
||
47 | ; Win+D (restore/clear desktop), Win+R (start RUN application). |
||
48 | ; Using the library LibINI to set the parameters. |
||
49 | ; New style of panel. Start application Menu with boot options. |
||
50 | ; two versions of the location of the panel - |
||
51 | ; the bottom of the desktop and on top of the desktop. |
||
52 | ;------------------------------------------------------------------------------ |
||
2532 | mario79 | 53 | ; last update: 31/03/2012 |
54 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
||
55 | ; changes: The program uses only 20 Kb memory is now. |
||
56 | ; Code optimizing and refactoring. |
||
57 | ;------------------------------------------------------------------------------ |
||
3670 | hidnplayr | 58 | format binary as "" |
59 | |||
3672 | hidnplayr | 60 | use32 |
61 | org 0x0 |
||
62 | db 'MENUET01' ; 8 byte id |
||
63 | dd 0x01 ; header version |
||
64 | dd START ; program start |
||
65 | dd IM_END ; program image size |
||
66 | dd I_END ; reguired amount of memory - 10 Kb |
||
67 | dd stack_top ; esp |
||
68 | dd 0x0 ; boot parameters |
||
69 | dd path ; application pach |
||
2619 | mario79 | 70 | ;------------------------------------------------------------------------------ |
31 | halyavin | 71 | include 'lang.inc' |
2619 | mario79 | 72 | include '../../../macros.inc' |
73 | include '../../../proc32.inc' |
||
3013 | dunkaist | 74 | ;include '../../../debug.inc' |
3672 | hidnplayr | 75 | include 'MOI.INC' ;раскладки клавиатуры |
2619 | mario79 | 76 | include '../../../develop/libraries/box_lib/load_lib.mac' |
3672 | hidnplayr | 77 | @use_library ;use load lib macros |
2619 | mario79 | 78 | ;------------------------------------------------------------------------------ |
79 | caps_lock_check fix 1 |
||
80 | ;------------------------------------------------------------------------------ |
||
1440 | diamond | 81 | time_bgr_color = 0x66cc |
2619 | mario79 | 82 | ;PANEL_HEIGHT = 18 |
83 | ML_SIZE = 10 |
||
84 | MR_SIZE = 10 |
||
85 | MENU_SIZE = 50 |
||
86 | CLD_SIZE = 20 |
||
3672 | hidnplayr | 87 | TAB_SIZE = 75 ;60 |
2619 | mario79 | 88 | TRAY_SIZE = 140 |
1440 | diamond | 89 | |
2619 | mario79 | 90 | CLOCK_SIZE = 40 |
91 | CPU_USAGE_SIZE = 10 |
||
92 | CHLANG_SIZE = 20 |
||
93 | PAGE_LIST_SIZE = 36 |
||
94 | ;------------------------------------------------------------------------------ |
||
2532 | mario79 | 95 | align 4 |
93 | diamond | 96 | handle_key: |
3672 | hidnplayr | 97 | mcall 18,7 |
98 | mov [active_process],eax |
||
31 | halyavin | 99 | |
3672 | hidnplayr | 100 | mcall 2 |
101 | |||
3670 | hidnplayr | 102 | ; dps "panel key: " |
103 | ; dph eax |
||
104 | ; newline |
||
2619 | mario79 | 105 | |
3672 | hidnplayr | 106 | cmp al, 2 |
107 | jnz begin_1.ret |
||
2532 | mario79 | 108 | |
3672 | hidnplayr | 109 | mov ebx, exec_fileinfo |
110 | shr eax, 8 |
||
111 | cmp al, 0 |
||
112 | je prod |
||
2532 | mario79 | 113 | |
3672 | hidnplayr | 114 | mov [key_r],al |
115 | sub [key_r],2 |
||
116 | cmp al, 2 |
||
117 | jz alter |
||
2532 | mario79 | 118 | |
3672 | hidnplayr | 119 | cmp al, 3 |
120 | jz alter |
||
2532 | mario79 | 121 | |
3672 | hidnplayr | 122 | cmp al, 4 |
123 | jz alter |
||
2532 | mario79 | 124 | |
3672 | hidnplayr | 125 | cmp al, 5 |
126 | jz alter |
||
2532 | mario79 | 127 | |
3672 | hidnplayr | 128 | cmp al, 6 |
129 | jz alter |
||
2532 | mario79 | 130 | |
3672 | hidnplayr | 131 | cmp al, 7 |
132 | jz alter |
||
2532 | mario79 | 133 | |
3672 | hidnplayr | 134 | cmp al, 8 |
135 | jz alter |
||
2532 | mario79 | 136 | ;-------------------------------------- |
2619 | mario79 | 137 | ;align 4 |
138 | ;prod: |
||
2532 | mario79 | 139 | if caps_lock_check |
3672 | hidnplayr | 140 | cmp al,58 ;CAPS LOCK DOWN |
141 | jne @f |
||
2532 | mario79 | 142 | |
3672 | hidnplayr | 143 | pusha |
144 | mcall 26,2,9 |
||
145 | mov ebx,eax |
||
146 | mov eax,2 |
||
3670 | hidnplayr | 147 | ; call draw_window ;;;??? |
3672 | hidnplayr | 148 | mov [draw_flag_certainly],1 |
149 | call draw_flag ; language |
||
150 | popa |
||
151 | ret |
||
2532 | mario79 | 152 | @@: |
153 | end if |
||
3672 | hidnplayr | 154 | cmp al, 15 ; Alt+Tab DOWN |
155 | jz alt_tab_pressed |
||
2532 | mario79 | 156 | |
3672 | hidnplayr | 157 | cmp al, 88 ; Ctrl+Alt+F12 |
158 | jz start_end_application |
||
2532 | mario79 | 159 | |
3672 | hidnplayr | 160 | |
161 | |||
162 | cmp al, 91 ; RWin DOWN |
||
163 | jz set_win_key_flag |
||
2532 | mario79 | 164 | |
3672 | hidnplayr | 165 | cmp al, 92 ; LWin DOWN |
166 | jz set_win_key_flag |
||
167 | |||
168 | |||
169 | cmp al, 219 ; RWin UP |
||
170 | jz cut_win_key_flag ;start_menu_application |
||
2532 | mario79 | 171 | |
3672 | hidnplayr | 172 | cmp al, 220 ; LWin UP |
173 | jz cut_win_key_flag ;start_menu_application |
||
174 | |||
2619 | mario79 | 175 | |
3672 | hidnplayr | 176 | cmp al, 62 ; Alt+F4 |
177 | jz kill_active_application |
||
2532 | mario79 | 178 | |
3672 | hidnplayr | 179 | cmp al, 205 |
180 | jz page_list_next |
||
2532 | mario79 | 181 | |
3672 | hidnplayr | 182 | cmp al, 203 |
183 | jz page_list_prev |
||
2532 | mario79 | 184 | |
3672 | hidnplayr | 185 | cmp al, 69 ; Alt+Shift+NumLock |
186 | jz start_mousemul_application |
||
187 | |||
188 | cmp al, 19 ; Win+R |
||
189 | jz start_run_application |
||
1920 | Albom | 190 | |
3672 | hidnplayr | 191 | cmp al, 32 ; Win+D |
192 | jz minimize_all_windows |
||
193 | |||
194 | cmp al, 55 ; PrintScreen DOWN |
||
195 | jz start_PrintScreen_application |
||
2619 | mario79 | 196 | ;-------------------------------------- |
197 | align 4 |
||
198 | prod: |
||
3670 | hidnplayr | 199 | ; cmp eax,0x20000 |
200 | ; je start_menu_application |
||
3672 | hidnplayr | 201 | |
3670 | hidnplayr | 202 | ; cmp eax,0x40000 |
203 | ; je start_menu_application |
||
2619 | mario79 | 204 | |
3672 | hidnplayr | 205 | cmp [current_alt_tab_app], -1 |
206 | jz @f |
||
2532 | mario79 | 207 | |
3672 | hidnplayr | 208 | test ah, 0x30 ; Alt+Tab UP |
209 | jz alt_tab_released |
||
2532 | mario79 | 210 | ;-------------------------------------- |
211 | align 4 |
||
443 | diamond | 212 | @@: |
304 | diamond | 213 | ; this is hotkey Ctrl+Shift ;or LShift+RShift |
3672 | hidnplayr | 214 | jmp karu |
3670 | hidnplayr | 215 | ; mov ebx, setup_exec |
216 | ; test ah, 001100b |
||
217 | ; jz change_sys_lang |
||
2619 | mario79 | 218 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 219 | align 4 |
2619 | mario79 | 220 | set_win_key_flag: |
3672 | hidnplayr | 221 | mov [win_key_flag],1 |
222 | ret |
||
2619 | mario79 | 223 | ;------------------------------------------------------------------------------ |
224 | align 4 |
||
225 | cut_win_key_flag: |
||
3672 | hidnplayr | 226 | xor eax,eax |
227 | mov [win_key_flag],al |
||
228 | xchg [start_menu_flag],al |
||
229 | test al,al |
||
230 | jz start_menu_application |
||
231 | ret |
||
2619 | mario79 | 232 | ;------------------------------------------------------------------------------ |
233 | align 4 |
||
304 | diamond | 234 | change_key_lang: |
3672 | hidnplayr | 235 | mov dword [ebx+8], chlang |
236 | mcall 70 |
||
2532 | mario79 | 237 | ;-------------------------------------- |
238 | align 4 |
||
31 | halyavin | 239 | begin_1: |
3672 | hidnplayr | 240 | mov ecx,[active_process] |
241 | mcall 18, 3 |
||
242 | mcall 5, 25 |
||
2532 | mario79 | 243 | ;-------------------------------------- |
244 | align 4 |
||
93 | diamond | 245 | .ret: |
3672 | hidnplayr | 246 | ret |
2619 | mario79 | 247 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 248 | ;align 4 |
304 | diamond | 249 | ;change_sys_lang: |
3670 | hidnplayr | 250 | ; mov dword [ebx+8], syslang |
304 | diamond | 251 | ; mcall 70 |
252 | ; jmp begin_1 |
||
2619 | mario79 | 253 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 254 | align 4 |
255 | start_end_application: |
||
3672 | hidnplayr | 256 | mov esi,end_name |
257 | call algorithm_anti_duplication |
||
258 | test eax,eax |
||
259 | jz @f |
||
2638 | mario79 | 260 | |
3672 | hidnplayr | 261 | mcall 18,3,edi |
262 | ret |
||
2630 | mario79 | 263 | ;-------------------------------------- |
264 | align 4 |
||
265 | @@: |
||
3672 | hidnplayr | 266 | mov ebx, exec_fileinfo |
267 | mov dword [ebx+21],end_name |
||
268 | mcall 70 |
||
269 | ret |
||
2619 | mario79 | 270 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 271 | align 4 |
272 | start_mousemul_application: |
||
3672 | hidnplayr | 273 | mov esi,mousemul_name |
274 | call algorithm_anti_duplication |
||
275 | test eax,eax |
||
276 | jz @f |
||
277 | ret |
||
2630 | mario79 | 278 | ;-------------------------------------- |
279 | align 4 |
||
280 | @@: |
||
3672 | hidnplayr | 281 | mov ebx, exec_fileinfo |
282 | mov dword [ebx+21],mousemul_name |
||
283 | mcall 70 |
||
284 | ret |
||
2619 | mario79 | 285 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 286 | align 4 |
287 | kill_active_application: |
||
3672 | hidnplayr | 288 | mcall 72,1,3,1 |
289 | jmp begin_1.ret |
||
2619 | mario79 | 290 | ;------------------------------------------------------------------------------ |
291 | |||
2532 | mario79 | 292 | align 4 |
293 | start_menu_application: |
||
3672 | hidnplayr | 294 | call menu_handler |
295 | jmp begin_1.ret |
||
2619 | mario79 | 296 | ;------------------------------------------------------------------------------ |
297 | align 4 |
||
298 | start_run_application: |
||
3672 | hidnplayr | 299 | cmp [win_key_flag],1 |
300 | je @f |
||
301 | ret |
||
2626 | mario79 | 302 | ;-------------------------------------- |
303 | align 4 |
||
2619 | mario79 | 304 | @@: |
3672 | hidnplayr | 305 | mov [start_menu_flag],1 |
306 | |||
307 | mov esi,run_name |
||
308 | call algorithm_anti_duplication |
||
309 | test eax,eax |
||
310 | jz @f |
||
2638 | mario79 | 311 | |
3672 | hidnplayr | 312 | mcall 18,3,edi |
313 | ret |
||
2630 | mario79 | 314 | ;-------------------------------------- |
315 | align 4 |
||
316 | @@: |
||
3672 | hidnplayr | 317 | mov ebx, exec_fileinfo |
318 | mov dword [ebx+21], run_name |
||
319 | mcall 70 |
||
320 | jmp begin_1.ret |
||
2619 | mario79 | 321 | ;------------------------------------------------------------------------------ |
322 | align 4 |
||
2630 | mario79 | 323 | start_PrintScreen_application: |
3672 | hidnplayr | 324 | mov esi,printscreen_name |
325 | call algorithm_anti_duplication |
||
326 | test eax,eax |
||
327 | jz @f |
||
328 | mcall 18,3,edi |
||
329 | ret |
||
2630 | mario79 | 330 | ;-------------------------------------- |
331 | align 4 |
||
332 | @@: |
||
3672 | hidnplayr | 333 | mov ebx, exec_fileinfo |
334 | mov dword [ebx+21],printscreen_name |
||
335 | mov [ebx+8],dword bootparam_printscreen |
||
336 | mcall 70 |
||
337 | jmp begin_1.ret |
||
2630 | mario79 | 338 | ;------------------------------------------------------------------------------ |
339 | align 4 |
||
2619 | mario79 | 340 | minimize_all_windows: |
3672 | hidnplayr | 341 | cmp [win_key_flag],1 |
342 | je @f |
||
343 | ret |
||
2626 | mario79 | 344 | ;-------------------------------------- |
345 | align 4 |
||
2619 | mario79 | 346 | @@: |
3672 | hidnplayr | 347 | mov [start_menu_flag],1 |
348 | call clean_desktop |
||
349 | ret |
||
2619 | mario79 | 350 | ;------------------------------------------------------------------------------ |
2630 | mario79 | 351 | align 4 |
352 | algorithm_anti_duplication: |
||
3672 | hidnplayr | 353 | cld |
2630 | mario79 | 354 | ;-------------------------------------- |
355 | align 4 |
||
356 | @@: |
||
3672 | hidnplayr | 357 | lodsb |
358 | test al,al |
||
359 | jnz @r |
||
2630 | mario79 | 360 | ;-------------------------------------- |
361 | align 4 |
||
362 | @@: |
||
3672 | hidnplayr | 363 | std |
364 | lodsb |
||
365 | cmp al,'/' |
||
366 | jnz @r |
||
367 | add esi,2 |
||
368 | mov edx,esi |
||
369 | |||
370 | mov edi,1 |
||
2630 | mario79 | 371 | ;-------------------------------------- |
372 | align 4 |
||
373 | @@: |
||
3672 | hidnplayr | 374 | inc edi |
375 | mov ecx,edi |
||
376 | mcall 9,procinfo_window_tabs |
||
2630 | mario79 | 377 | |
3672 | hidnplayr | 378 | cmp edi,eax |
379 | jg .apply_changes |
||
2630 | mario79 | 380 | |
3670 | hidnplayr | 381 | ; mov eax,[ebx+10] |
382 | ; and eax,not 20202020h |
||
383 | ; cmp eax,'SCRS' |
||
384 | ; jz @f |
||
3672 | hidnplayr | 385 | |
3670 | hidnplayr | 386 | ; mov eax,[ebx+14] |
387 | ; and eax,not 20202020h |
||
388 | ; cmp eax,'HOOT' |
||
389 | ; jne @r |
||
3672 | hidnplayr | 390 | mov esi,edx |
391 | mov ecx,11 |
||
392 | add ebx,9 |
||
393 | cld |
||
2630 | mario79 | 394 | ;-------------------------------------- |
395 | align 4 |
||
396 | .loop: |
||
3672 | hidnplayr | 397 | lodsb |
398 | inc ebx |
||
399 | cmp al,[ebx] |
||
400 | jne @r |
||
2630 | mario79 | 401 | |
3672 | hidnplayr | 402 | loop .loop |
2630 | mario79 | 403 | |
3672 | hidnplayr | 404 | mov eax,1 |
405 | ret |
||
2630 | mario79 | 406 | ;-------------------------------------- |
407 | align 4 |
||
408 | .apply_changes: |
||
3672 | hidnplayr | 409 | xor eax,eax |
410 | ret |
||
2619 | mario79 | 411 | ;------------------------------------------------------------------------------ |
2630 | mario79 | 412 | align 4 |
413 | page_list_next: |
||
3672 | hidnplayr | 414 | cmp [page_list],50 |
415 | je @f |
||
2630 | mario79 | 416 | |
3672 | hidnplayr | 417 | xor eax,eax |
418 | cmp [page_list_enable],eax |
||
419 | je @f |
||
2630 | mario79 | 420 | |
3672 | hidnplayr | 421 | inc [page_list] |
422 | mov [redraw_window_flag],1 |
||
2630 | mario79 | 423 | ;-------------------------------------- |
424 | align 4 |
||
425 | @@: |
||
3672 | hidnplayr | 426 | jmp begin_1.ret |
2619 | mario79 | 427 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 428 | align 4 |
2630 | mario79 | 429 | page_list_prev: |
3672 | hidnplayr | 430 | xor eax,eax |
431 | cmp [page_list],eax |
||
432 | je @f |
||
2630 | mario79 | 433 | |
3672 | hidnplayr | 434 | cmp [page_list_enable],eax |
435 | je @f |
||
2630 | mario79 | 436 | |
3672 | hidnplayr | 437 | dec [page_list] |
438 | mov [redraw_window_flag],1 |
||
2630 | mario79 | 439 | ;-------------------------------------- |
440 | align 4 |
||
441 | @@: |
||
3672 | hidnplayr | 442 | jmp begin_1.ret |
2630 | mario79 | 443 | ;------------------------------------------------------------------------------ |
444 | align 4 |
||
443 | diamond | 445 | alt_tab_pressed: |
446 | ; handle Alt+Tab and Alt+Shift+Tab |
||
3672 | hidnplayr | 447 | mov ebp, eax |
448 | cmp [current_alt_tab_app], -1 |
||
449 | jnz has_alt_tab_app |
||
443 | diamond | 450 | ; заполняем таблицу приложений, подлежащих переключению |
3672 | hidnplayr | 451 | xor edx, edx |
452 | mov ebx, procinfo_window_tabs |
||
453 | mov ecx, 1 |
||
2626 | mario79 | 454 | ;-------------------------------------- |
455 | align 4 |
||
443 | diamond | 456 | .fill: |
3672 | hidnplayr | 457 | inc ecx |
458 | mcall 9 |
||
459 | call need_window_tab |
||
460 | jz @f |
||
2532 | mario79 | 461 | |
3672 | hidnplayr | 462 | cmp edx, 256 |
463 | jz @f |
||
2532 | mario79 | 464 | |
3672 | hidnplayr | 465 | mov [alt_tab_list+edx*8], ecx |
466 | movzx esi, word [ebx+4] |
||
467 | mov [alt_tab_list+edx*8+4], esi |
||
468 | inc edx |
||
2532 | mario79 | 469 | ;-------------------------------------- |
470 | align 4 |
||
443 | diamond | 471 | @@: |
3672 | hidnplayr | 472 | cmp ecx,eax |
473 | jb .fill |
||
2532 | mario79 | 474 | |
3672 | hidnplayr | 475 | mov [alt_tab_list_size], edx |
476 | test edx, edx |
||
477 | jz begin_1.ret |
||
2532 | mario79 | 478 | |
3672 | hidnplayr | 479 | mcall 66,4,0,0 ; ловим момент отпускания всех управляющих клавиш |
480 | test eax, eax |
||
481 | jnz begin_1.ret |
||
2532 | mario79 | 482 | |
3672 | hidnplayr | 483 | xor edx, edx |
484 | mov eax, [alt_tab_list+4] |
||
485 | xor ecx, ecx |
||
486 | inc ecx |
||
2532 | mario79 | 487 | ;-------------------------------------- |
488 | align 4 |
||
443 | diamond | 489 | .findmax: |
3672 | hidnplayr | 490 | cmp [alt_tab_list+ecx*8+4], eax |
491 | jb @f |
||
2532 | mario79 | 492 | |
3672 | hidnplayr | 493 | mov edx, ecx |
494 | mov eax, [alt_tab_list+ecx*8+4] |
||
2532 | mario79 | 495 | ;-------------------------------------- |
496 | align 4 |
||
443 | diamond | 497 | @@: |
3672 | hidnplayr | 498 | inc ecx |
499 | cmp ecx, [alt_tab_list_size] |
||
500 | jb .findmax |
||
2532 | mario79 | 501 | |
3672 | hidnplayr | 502 | mov [current_alt_tab_app], edx |
2532 | mario79 | 503 | ;-------------------------------------- |
504 | align 4 |
||
443 | diamond | 505 | has_alt_tab_app: |
3672 | hidnplayr | 506 | mov eax, [current_alt_tab_app] |
507 | mov edx, [alt_tab_list+eax*8+4] ; slot |
||
508 | xor ecx, ecx |
||
509 | or eax, -1 |
||
510 | test ebp, 300h |
||
511 | jz .notshift |
||
2532 | mario79 | 512 | |
3672 | hidnplayr | 513 | or esi, -1 |
2532 | mario79 | 514 | ;-------------------------------------- |
515 | align 4 |
||
443 | diamond | 516 | .loop1: |
3672 | hidnplayr | 517 | cmp [alt_tab_list+ecx*8+4], edx |
518 | jbe @f |
||
2532 | mario79 | 519 | |
3672 | hidnplayr | 520 | cmp [alt_tab_list+ecx*8+4], esi |
521 | jae @f |
||
2532 | mario79 | 522 | |
3672 | hidnplayr | 523 | mov eax, ecx |
524 | mov esi, [alt_tab_list+ecx*8+4] |
||
2532 | mario79 | 525 | ;-------------------------------------- |
526 | align 4 |
||
443 | diamond | 527 | @@: |
3672 | hidnplayr | 528 | inc ecx |
529 | cmp ecx, [alt_tab_list_size] |
||
530 | jb .loop1 |
||
2532 | mario79 | 531 | |
3672 | hidnplayr | 532 | cmp eax, -1 |
533 | jnz .found |
||
2532 | mario79 | 534 | |
3672 | hidnplayr | 535 | xor edx, edx |
536 | xor ecx, ecx |
||
537 | jmp .loop1 |
||
2532 | mario79 | 538 | ;-------------------------------------- |
539 | align 4 |
||
443 | diamond | 540 | .notshift: |
3672 | hidnplayr | 541 | xor esi, esi |
2532 | mario79 | 542 | ;-------------------------------------- |
543 | align 4 |
||
443 | diamond | 544 | .loop2: |
3672 | hidnplayr | 545 | cmp [alt_tab_list+ecx*8+4], edx |
546 | jae @f |
||
2532 | mario79 | 547 | |
3672 | hidnplayr | 548 | cmp [alt_tab_list+ecx*8+4], esi |
549 | jbe @f |
||
2532 | mario79 | 550 | |
3672 | hidnplayr | 551 | mov eax, ecx |
552 | mov esi, [alt_tab_list+ecx*8+4] |
||
2532 | mario79 | 553 | ;-------------------------------------- |
554 | align 4 |
||
443 | diamond | 555 | @@: |
3672 | hidnplayr | 556 | inc ecx |
557 | cmp ecx, [alt_tab_list_size] |
||
558 | jb .loop2 |
||
2532 | mario79 | 559 | |
3672 | hidnplayr | 560 | cmp eax, -1 |
561 | jnz .found |
||
2532 | mario79 | 562 | |
3672 | hidnplayr | 563 | or edx, -1 |
564 | xor ecx, ecx |
||
565 | jmp .loop2 |
||
2532 | mario79 | 566 | ;-------------------------------------- |
567 | align 4 |
||
443 | diamond | 568 | .found: |
3672 | hidnplayr | 569 | mov [current_alt_tab_app], eax |
570 | push eax |
||
571 | xor edx, edx |
||
572 | div [max_applications] |
||
573 | mov [page_list], eax |
||
574 | mov edi, app_list |
||
575 | push edi |
||
576 | mov ecx, 20 |
||
577 | or eax, -1 |
||
578 | rep stosd |
||
579 | pop edi |
||
580 | pop ecx |
||
581 | sub ecx, edx |
||
2532 | mario79 | 582 | ;-------------------------------------- |
583 | align 4 |
||
443 | diamond | 584 | @@: |
3672 | hidnplayr | 585 | cmp ecx, [alt_tab_list_size] |
586 | jae redraw_window_tabs |
||
2532 | mario79 | 587 | |
3672 | hidnplayr | 588 | mov eax, [alt_tab_list+ecx*8] |
589 | stosd |
||
590 | inc ecx |
||
591 | jmp @b |
||
2532 | mario79 | 592 | ;-------------------------------------- |
593 | align 4 |
||
443 | diamond | 594 | alt_tab_released: |
3672 | hidnplayr | 595 | mcall 66,5,0,0 ; уже поймали, хватит :) |
2619 | mario79 | 596 | |
3672 | hidnplayr | 597 | or eax, -1 |
598 | xchg eax, [current_alt_tab_app] |
||
599 | mov ecx, [alt_tab_list+eax*8] |
||
600 | mcall 18,3 |
||
2619 | mario79 | 601 | |
3672 | hidnplayr | 602 | jmp redraw_window_tabs |
2619 | mario79 | 603 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 604 | align 4 |
3672 | hidnplayr | 605 | active_process dd 0 |
31 | halyavin | 606 | |
2619 | mario79 | 607 | exit: |
3672 | hidnplayr | 608 | mcall -1 |
2619 | mario79 | 609 | ;------------------------------------------------------------------------------ |
610 | START: |
||
3672 | hidnplayr | 611 | mcall 68,11 |
612 | mcall 66,1,1 |
||
613 | |||
614 | mcall 9,process_info_buffer,-1 |
||
615 | mov ecx,[ebx+30] ; PID |
||
616 | mcall 18,21 |
||
617 | mov [my_active_slot],eax ; WINDOW SLOT |
||
618 | |||
619 | |||
2619 | mario79 | 620 | load_libraries l_libs_start,end_l_libs |
31 | halyavin | 621 | |
3672 | hidnplayr | 622 | test eax,eax |
623 | jnz exit |
||
31 | halyavin | 624 | |
3672 | hidnplayr | 625 | call Get_ini |
2619 | mario79 | 626 | |
3672 | hidnplayr | 627 | mcall 48,1,[button_style] |
628 | |||
629 | mcall 66,4,0,2 ; LShift+RShift |
||
630 | mcall 66,,,11h ; Ctrl+Shift |
||
631 | mcall 66,,88,110h ; Alt+Ctrl+F12 |
||
3670 | hidnplayr | 632 | ; mcall 66,,75 ; Alt+Ctrl+ArrowLeft DOWN |
3672 | hidnplayr | 633 | mcall 66,,203 ; Alt+Ctrl+ArrowLeft UP |
3670 | hidnplayr | 634 | ; mcall 66,,77 ; Alt+Ctrl+ArrowRight DOWN |
3672 | hidnplayr | 635 | mcall 66,,205 ; Alt+Ctrl+ArrowRight UP |
636 | |||
637 | mcall 66,,91,0h ; RWin DOWN |
||
638 | mcall 66,,92 ; LWin DOWN |
||
639 | mcall 66,,219 ; RWin UP |
||
640 | mcall 66,,220 ; LWin UP |
||
2619 | mario79 | 641 | |
3670 | hidnplayr | 642 | ; mcall 66,,147,0h ; Win+R UP |
3672 | hidnplayr | 643 | mcall 66,,19,0h ; Win+R DOWN |
2619 | mario79 | 644 | |
3670 | hidnplayr | 645 | ; mcall 66,,23,0h ; Win+I DOWN |
2619 | mario79 | 646 | |
3672 | hidnplayr | 647 | mcall 66,,32,0h ; Win+D DOWN |
3670 | hidnplayr | 648 | ; mcall 66,,160,0h ; Win+D UP |
2619 | mario79 | 649 | |
3672 | hidnplayr | 650 | mcall 66,,55,0h ; PrintScreen DOWN |
3670 | hidnplayr | 651 | ; mcall 66,,183,0h ; PrintScreen UP |
2619 | mario79 | 652 | |
2630 | mario79 | 653 | |
3670 | hidnplayr | 654 | ; mcall 66,,91,100h ; Alt+LWin |
655 | ; mcall 66,,92 ; Alt+RWin |
||
3672 | hidnplayr | 656 | mcall 66,,62,300h ; Alt+F4 |
3670 | hidnplayr | 657 | ; mcall 66,,71 ; Alt+Home |
658 | ; mcall 66,,72 ; Alt+Up |
||
3672 | hidnplayr | 659 | mcall 66,,2 ; Alt+1 |
660 | mcall 66,,3 ; Alt+2 |
||
661 | mcall 66,,4 ; Alt+3 |
||
662 | mcall 66,,5 ; Alt+4 |
||
663 | mcall 66,,6 ; Alt+5 |
||
664 | mcall 66,,7 ; Alt+6 |
||
665 | mcall 66,,8 ; Alt+7 |
||
666 | mcall 66,,15 ; Alt+Tab DOWN |
||
667 | mcall 66,,15,301h ; Alt+Shift+Tab DOWN |
||
668 | mcall 66,,69 ; Alt+Shift+NumLock |
||
870 | barsuk | 669 | |
2532 | mario79 | 670 | if caps_lock_check |
3672 | hidnplayr | 671 | xor edx,edx |
672 | mcall 66,4,58 |
||
2532 | mario79 | 673 | end if |
3672 | hidnplayr | 674 | mcall 14 |
675 | mov [screen_size],eax |
||
31 | halyavin | 676 | |
3672 | hidnplayr | 677 | |
678 | mov ecx,eax |
||
870 | barsuk | 679 | ;eax = [xsize]*65536 + [ysize], где |
3672 | hidnplayr | 680 | shr ecx,16 |
681 | and eax,0xFFFF |
||
682 | |||
683 | cmp [place_attachment],1 |
||
684 | je @f |
||
685 | ror eax,16 |
||
686 | add eax,[height] |
||
687 | rol eax,16 |
||
688 | mov edx,eax |
||
689 | jmp .selected |
||
2619 | mario79 | 690 | ;-------------------------------------- |
691 | align 4 |
||
692 | @@: |
||
3672 | hidnplayr | 693 | sub eax,[height] |
694 | mov edx, eax |
||
2619 | mario79 | 695 | ;-------------------------------------- |
696 | align 4 |
||
697 | .selected: |
||
3672 | hidnplayr | 698 | mcall 48,6 |
51 | mikedld | 699 | |
3672 | hidnplayr | 700 | mcall 9,process_info_buffer,-1 |
701 | mov ecx,[process_info_buffer+30] |
||
702 | mcall 18,21 |
||
703 | mov [this_slot],eax |
||
704 | mov [max_slot],255 |
||
2532 | mario79 | 705 | ;-------------------------------------- |
706 | align 4 |
||
31 | halyavin | 707 | start_after_minimize: |
3672 | hidnplayr | 708 | call draw_window |
3670 | hidnplayr | 709 | ; call draw_tray |
3672 | hidnplayr | 710 | call draw_running_applications |
31 | halyavin | 711 | |
3672 | hidnplayr | 712 | mcall 23,30 |
713 | call load_ini |
||
714 | call fir_lng |
||
2532 | mario79 | 715 | ;------------------------------------------------------------------------------ |
716 | align 4 |
||
31 | halyavin | 717 | still: |
3670 | hidnplayr | 718 | ; call draw_tray |
3672 | hidnplayr | 719 | call draw_time |
720 | call draw_cpu_usage |
||
721 | call draw_running_applications |
||
31 | halyavin | 722 | |
3672 | hidnplayr | 723 | mcall 18,7 ; check if active window changed |
724 | cmp eax, [last_active_window] |
||
725 | jz @f |
||
870 | barsuk | 726 | ; need_window_tab: |
727 | ; in: ebx->process info |
||
728 | ; out: ZF set <=> do not draw |
||
3672 | hidnplayr | 729 | mov ebx,[last_active_window] |
730 | mov [prev_active_window], ebx |
||
731 | mov [last_active_window], eax |
||
870 | barsuk | 732 | |
3672 | hidnplayr | 733 | mov ecx, eax |
734 | mcall 9,process_info_buffer |
||
870 | barsuk | 735 | |
3672 | hidnplayr | 736 | call need_window_tab |
737 | jnz .need_repaint |
||
870 | barsuk | 738 | |
3672 | hidnplayr | 739 | mcall 9,process_info_buffer,[prev_active_window] |
740 | call need_window_tab |
||
741 | jz @f |
||
2532 | mario79 | 742 | ;-------------------------------------- |
743 | align 4 |
||
870 | barsuk | 744 | .need_repaint: |
3672 | hidnplayr | 745 | mov dword [active_window_changed], 1 |
2532 | mario79 | 746 | ;-------------------------------------- |
747 | align 4 |
||
870 | barsuk | 748 | @@: |
3672 | hidnplayr | 749 | mcall 23,20 |
750 | |||
751 | push eax |
||
752 | mcall 18,7 |
||
753 | cmp [my_active_slot],eax |
||
754 | je @f |
||
2630 | mario79 | 755 | |
3672 | hidnplayr | 756 | mov [current_active_slot],eax |
2630 | mario79 | 757 | ;-------------------------------------- |
758 | align 4 |
||
2619 | mario79 | 759 | @@: |
3672 | hidnplayr | 760 | pop eax |
761 | |||
762 | cmp eax,1 ; redraw ? |
||
763 | jz red |
||
870 | barsuk | 764 | |
3672 | hidnplayr | 765 | push eax |
766 | mov eax,[redraw_window_flag] |
||
767 | test eax,eax |
||
768 | jz @f |
||
2630 | mario79 | 769 | |
3672 | hidnplayr | 770 | call draw_window |
2630 | mario79 | 771 | ;-------------------------------------- |
772 | align 4 |
||
2626 | mario79 | 773 | @@: |
3672 | hidnplayr | 774 | pop eax |
775 | |||
776 | cmp eax,2 |
||
777 | jnz @f |
||
778 | call handle_key |
||
779 | jmp .key |
||
2630 | mario79 | 780 | ;-------------------------------------- |
781 | align 4 |
||
2619 | mario79 | 782 | @@: |
3672 | hidnplayr | 783 | cmp eax,3 ; button ? |
784 | jz button |
||
31 | halyavin | 785 | |
3670 | hidnplayr | 786 | ; call handle_key |
2630 | mario79 | 787 | ;-------------------------------------- |
788 | align 4 |
||
2619 | mario79 | 789 | .key: |
3672 | hidnplayr | 790 | cmp dword [active_window_changed], 0 |
791 | jnz red_active |
||
870 | barsuk | 792 | |
3672 | hidnplayr | 793 | call draw_flag ; language |
794 | jmp still |
||
2619 | mario79 | 795 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 796 | align 4 |
797 | red_active: |
||
798 | red: |
||
3672 | hidnplayr | 799 | mov dword [active_window_changed], 0 |
870 | barsuk | 800 | |
3672 | hidnplayr | 801 | mcall 14 |
802 | movzx ecx,ax |
||
803 | mov edx,eax |
||
804 | shr edx,16 |
||
805 | cmp [screen_size.height],ax |
||
806 | jne @f |
||
2532 | mario79 | 807 | |
3672 | hidnplayr | 808 | rol eax,16 |
809 | cmp [screen_size.width],ax |
||
810 | je .lp1 |
||
2630 | mario79 | 811 | |
3672 | hidnplayr | 812 | rol eax,16 |
2630 | mario79 | 813 | ;-------------------------------------- |
814 | align 4 |
||
2532 | mario79 | 815 | @@: |
3672 | hidnplayr | 816 | mov [screen_size],eax |
817 | sub ecx,[height] |
||
818 | mcall 67,0,,,[height] |
||
2532 | mario79 | 819 | ;-------------------------------------- |
820 | align 4 |
||
821 | .lp1: |
||
3672 | hidnplayr | 822 | call draw_window |
3670 | hidnplayr | 823 | ; call draw_tray |
3672 | hidnplayr | 824 | jmp still |
2619 | mario79 | 825 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 826 | align 4 |
827 | button: |
||
3672 | hidnplayr | 828 | mcall 17 |
829 | test eax,0xfffffe00 ; is it close button? (signal from @panel) |
||
830 | jz still ; if so - wait for another event, because @panel shouldn't be closed |
||
51 | mikedld | 831 | |
3672 | hidnplayr | 832 | cmp al, 0 |
833 | jnz right_mouse |
||
870 | barsuk | 834 | |
3672 | hidnplayr | 835 | cmp ah,50 |
836 | jb no_activate |
||
837 | cmp ah,70 |
||
838 | jg no_activate |
||
31 | halyavin | 839 | |
3672 | hidnplayr | 840 | movzx ecx,byte ah |
841 | sub ecx,52 |
||
842 | shl ecx,2 |
||
870 | barsuk | 843 | |
3672 | hidnplayr | 844 | mov ecx,[app_list+ecx] |
845 | |||
846 | mcall 9,process_info_buffer |
||
2619 | mario79 | 847 | |
3672 | hidnplayr | 848 | test [ebx+70],dword 10b ; window is minimized to panel |
849 | jnz @f |
||
2619 | mario79 | 850 | |
3672 | hidnplayr | 851 | cmp ecx,[current_active_slot] |
852 | je .turn_off |
||
2630 | mario79 | 853 | ;-------------------------------------- |
854 | align 4 |
||
2619 | mario79 | 855 | @@: |
3672 | hidnplayr | 856 | mcall 18,3, |
857 | jmp .task_switching |
||
2619 | mario79 | 858 | ;-------------------------------------- |
2532 | mario79 | 859 | align 4 |
2619 | mario79 | 860 | .turn_off: |
3672 | hidnplayr | 861 | mov edx,ecx |
862 | mcall 18,22,0 |
||
2630 | mario79 | 863 | ;-------------------------------------- |
864 | align 4 |
||
2619 | mario79 | 865 | .task_switching: |
3672 | hidnplayr | 866 | mcall 68,1 |
867 | jmp still |
||
2619 | mario79 | 868 | ;------------------------------------------------------------------------------ |
869 | align 4 |
||
2532 | mario79 | 870 | right_mouse: |
3672 | hidnplayr | 871 | cmp ah,50 |
872 | jb still |
||
31 | halyavin | 873 | |
3672 | hidnplayr | 874 | cmp ah,70 |
875 | jg still |
||
870 | barsuk | 876 | |
3672 | hidnplayr | 877 | movzx ecx,byte ah |
878 | sub ecx,52 |
||
870 | barsuk | 879 | |
3672 | hidnplayr | 880 | cmp ecx, [app_tab_count] |
881 | jge still |
||
870 | barsuk | 882 | |
3672 | hidnplayr | 883 | shl ecx,2 |
884 | mcall 37,0 |
||
885 | mov ebx, eax |
||
886 | shr eax, 16 |
||
887 | mov [x_coord], ax |
||
888 | and ebx, 0xFFFF |
||
889 | mov [y_coord], bx |
||
870 | barsuk | 890 | |
3672 | hidnplayr | 891 | mov ecx,[app_list+ecx] ; ecx->selected app.slot |
892 | mov [n_slot], ecx |
||
893 | mcall 9,procinfo_for_detect |
||
870 | barsuk | 894 | |
3672 | hidnplayr | 895 | mcall 51,1,context_menu_start,ctx_menu_stack |
870 | barsuk | 896 | |
3672 | hidnplayr | 897 | mov [ctx_menu_PID], eax |
898 | jmp still |
||
2619 | mario79 | 899 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 900 | align 4 |
901 | no_activate: |
||
3672 | hidnplayr | 902 | cmp ah,101 ; minimize to left |
903 | je left_button |
||
870 | barsuk | 904 | |
3672 | hidnplayr | 905 | cmp ah,102 ; minimize to right |
906 | je right_button |
||
870 | barsuk | 907 | |
3672 | hidnplayr | 908 | cmp ah, 103 |
909 | je clean_desktop_1 ; minimize all windows |
||
870 | barsuk | 910 | |
3670 | hidnplayr | 911 | ; cmp ah, 104 |
912 | ; je restore_desktop ; restore minimized windows |
||
31 | halyavin | 913 | |
3670 | hidnplayr | 914 | ; cmp ah, 105 |
915 | ; je swap_minimized_desktop ; minimize normal windows, and restore minimized windows |
||
31 | halyavin | 916 | |
3672 | hidnplayr | 917 | cmp ah,byte 1 ; start/terminate menu |
918 | jnz noselect |
||
31 | halyavin | 919 | |
3672 | hidnplayr | 920 | call menu_handler |
31 | halyavin | 921 | |
3672 | hidnplayr | 922 | jmp still |
2532 | mario79 | 923 | ;-------------------------------------- |
2619 | mario79 | 924 | align 4 |
925 | clean_desktop_1: |
||
3672 | hidnplayr | 926 | call clean_desktop |
927 | jmp still |
||
2619 | mario79 | 928 | ;-------------------------------------- |
3670 | hidnplayr | 929 | align 4 |
2532 | mario79 | 930 | noselect: |
3672 | hidnplayr | 931 | mov ebx, exec_fileinfo |
932 | cmp ah,byte 2 ; start calendar |
||
933 | jnz noid15 ;noclock |
||
633 | diamond | 934 | |
3672 | hidnplayr | 935 | mov esi,calendar_name |
936 | call algorithm_anti_duplication |
||
937 | test eax,eax |
||
938 | jz @f |
||
2630 | mario79 | 939 | |
3672 | hidnplayr | 940 | mcall 18,3,edi |
941 | jmp still |
||
2638 | mario79 | 942 | ;-------------------------------------- |
943 | align 4 |
||
944 | @@: |
||
3672 | hidnplayr | 945 | mov ebx, exec_fileinfo |
946 | mov dword [ebx+21], calendar_name |
||
947 | mcall 70 |
||
948 | jmp still |
||
2532 | mario79 | 949 | ;-------------------------------------- |
3670 | hidnplayr | 950 | align 4 |
2532 | mario79 | 951 | noid15: |
3672 | hidnplayr | 952 | cmp ah,16 |
953 | jne noid16 |
||
31 | halyavin | 954 | |
3670 | hidnplayr | 955 | ; mov ebx, setup_exec |
956 | ; mov dword [ebx+8], chlang |
||
957 | ; mcall 70 |
||
3672 | hidnplayr | 958 | call karu |
959 | call draw_flag ; language |
||
960 | jmp still |
||
2532 | mario79 | 961 | ;-------------------------------------- |
3670 | hidnplayr | 962 | align 4 |
2532 | mario79 | 963 | noid16: |
3670 | hidnplayr | 964 | ; cmp ah,17 |
965 | ; jne noid17 |
||
304 | diamond | 966 | ; |
3670 | hidnplayr | 967 | ; mov ebx, setup_exec |
968 | ; mov dword [ebx+8], syslang |
||
969 | ; mcall 70 |
||
970 | ; jmp still |
||
2532 | mario79 | 971 | ;-------------------------------------- |
3670 | hidnplayr | 972 | ;align 4 |
304 | diamond | 973 | ; noid17: |
3672 | hidnplayr | 974 | cmp ah,18 |
975 | jne noid18 |
||
2532 | mario79 | 976 | |
3672 | hidnplayr | 977 | mov esi,sysmeter_name |
978 | call algorithm_anti_duplication |
||
979 | test eax,eax |
||
980 | jz @f |
||
2630 | mario79 | 981 | |
3672 | hidnplayr | 982 | mcall 18,3,edi |
983 | jmp still |
||
2638 | mario79 | 984 | ;-------------------------------------- |
3670 | hidnplayr | 985 | align 4 |
2638 | mario79 | 986 | @@: |
3672 | hidnplayr | 987 | mov ebx, exec_fileinfo |
988 | mov dword [ebx+21], sysmeter_name |
||
989 | mcall 70 |
||
990 | jmp still |
||
2532 | mario79 | 991 | ;-------------------------------------- |
3670 | hidnplayr | 992 | align 4 |
2532 | mario79 | 993 | noid18: |
3670 | hidnplayr | 994 | ; cmp ah,19 ; speaker |
995 | ; jne noid19 |
||
31 | halyavin | 996 | |
3670 | hidnplayr | 997 | ; mcall 18,8,2 |
998 | ; mcall 15,3 |
||
999 | ; jmp red |
||
2532 | mario79 | 1000 | ;-------------------------------------- |
3670 | hidnplayr | 1001 | ;align 4 |
2619 | mario79 | 1002 | ;noid19: |
3670 | hidnplayr | 1003 | ; cmp ah,20 ; start system setup |
1004 | ; jnz noid20 |
||
2619 | mario79 | 1005 | ; |
3670 | hidnplayr | 1006 | ; mov ebx, setup_exec |
1007 | ; and dword [ebx+8], 0 |
||
1008 | ; mcall 70 |
||
1009 | ; jmp still |
||
2532 | mario79 | 1010 | ;-------------------------------------- |
3670 | hidnplayr | 1011 | ;align 4 |
2619 | mario79 | 1012 | ;noid20: |
3672 | hidnplayr | 1013 | cmp ah,21 |
1014 | jnz noid21 |
||
31 | halyavin | 1015 | |
3672 | hidnplayr | 1016 | cmp [page_list],50 |
1017 | jnc still |
||
1018 | inc [page_list] |
||
1019 | jmp red |
||
2532 | mario79 | 1020 | ;-------------------------------------- |
3670 | hidnplayr | 1021 | align 4 |
2532 | mario79 | 1022 | noid21: |
3672 | hidnplayr | 1023 | cmp ah,22 |
1024 | jnz still |
||
31 | halyavin | 1025 | |
3672 | hidnplayr | 1026 | cmp [page_list],0 |
1027 | je still |
||
31 | halyavin | 1028 | |
3672 | hidnplayr | 1029 | dec [page_list] |
1030 | jmp red |
||
2619 | mario79 | 1031 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 1032 | align 4 |
633 | diamond | 1033 | restore_desktop: |
3672 | hidnplayr | 1034 | mcall 9,process_info_buffer,-1 |
1035 | mov [max_slot], eax |
||
1036 | mov ecx, 2 |
||
1037 | mov edx, 2 |
||
2532 | mario79 | 1038 | ;-------------------------------------- |
3670 | hidnplayr | 1039 | align 4 |
633 | diamond | 1040 | @@: |
3672 | hidnplayr | 1041 | mcall 18, 22 |
1042 | inc edx |
||
1043 | cmp edx, [max_slot] |
||
1044 | jbe @b |
||
1045 | ret |
||
2619 | mario79 | 1046 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 1047 | align 4 |
633 | diamond | 1048 | clean_desktop: |
3672 | hidnplayr | 1049 | mcall 18,23 |
1050 | test eax,eax |
||
1051 | jnz @f |
||
1052 | call restore_desktop |
||
2630 | mario79 | 1053 | ;-------------------------------------- |
1054 | align 4 |
||
443 | diamond | 1055 | @@: |
3672 | hidnplayr | 1056 | ret |
2619 | mario79 | 1057 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 1058 | align 4 |
2619 | mario79 | 1059 | conversion_HEX_to_ASCII: |
3672 | hidnplayr | 1060 | ror eax,12 |
1061 | mov ecx,4 |
||
2532 | mario79 | 1062 | ;-------------------------------------- |
1063 | align 4 |
||
443 | diamond | 1064 | .loop: |
3672 | hidnplayr | 1065 | mov bl,al |
1066 | rol eax,4 |
||
1067 | and bl,0xf |
||
1068 | cmp bl,0xA ; check for ABCDEF |
||
1069 | jae @f |
||
31 | halyavin | 1070 | |
3672 | hidnplayr | 1071 | add bl,0x30 ; 0-9 |
1072 | jmp .store |
||
2532 | mario79 | 1073 | ;-------------------------------------- |
1074 | align 4 |
||
443 | diamond | 1075 | @@: |
3672 | hidnplayr | 1076 | add bl,0x57 ; A-F |
2532 | mario79 | 1077 | ;-------------------------------------- |
1078 | align 4 |
||
2619 | mario79 | 1079 | .store: |
3670 | hidnplayr | 1080 | ; dps "param_store: " |
3672 | hidnplayr | 1081 | mov [edi],bl |
1082 | inc edi |
||
1083 | dec ecx |
||
1084 | jnz .loop |
||
1085 | ret |
||
2619 | mario79 | 1086 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 1087 | align 4 |
2619 | mario79 | 1088 | menu_handler: |
3672 | hidnplayr | 1089 | mov edi,bootparam |
1090 | |||
1091 | mov eax,[menu_button_x.start] |
||
1092 | call conversion_HEX_to_ASCII |
||
31 | halyavin | 1093 | |
3672 | hidnplayr | 1094 | mov eax,[menu_button_x.size] |
1095 | call conversion_HEX_to_ASCII |
||
1096 | |||
1097 | mov eax,[menu_button_y.start] |
||
1098 | call conversion_HEX_to_ASCII |
||
1099 | |||
1100 | mov eax,[menu_button_y.size] |
||
1101 | call conversion_HEX_to_ASCII |
||
1102 | |||
1103 | mov eax,[height] |
||
1104 | call conversion_HEX_to_ASCII |
||
1105 | |||
1106 | mov eax,[place_attachment] |
||
1107 | call conversion_HEX_to_ASCII |
||
1108 | |||
1109 | xor eax,eax ; terminator for boot parameters string |
||
1110 | stosd |
||
1111 | |||
1112 | mov ebx, exec_fileinfo |
||
1113 | mov [ebx+21],dword menu_name |
||
1114 | mov [ebx+8],dword bootparam |
||
1115 | mcall 70 |
||
1116 | mov [ebx+8],dword 0 |
||
1117 | ret |
||
2619 | mario79 | 1118 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 1119 | align 4 |
31 | halyavin | 1120 | draw_small_right: |
3672 | hidnplayr | 1121 | pusha |
1122 | mcall 12,1 |
||
31 | halyavin | 1123 | |
3672 | hidnplayr | 1124 | xor eax,eax |
1125 | mov edx,[wcolor] |
||
1126 | mov esi,edx |
||
1127 | mov edi,edx |
||
1128 | or edx, 0x01000000 |
||
1129 | mcall |
||
31 | halyavin | 1130 | |
3672 | hidnplayr | 1131 | xor ecx,ecx |
1132 | mov cx,[height] |
||
1133 | mcall 8,<0,10>,,1,[wcolor] |
||
31 | halyavin | 1134 | |
3672 | hidnplayr | 1135 | mov ebx,2*65536 ;+6 |
1136 | mov bx,[height] |
||
1137 | shr bx,1 |
||
1138 | sub bx,3 |
||
3670 | hidnplayr | 1139 | ; mov ecx,[wcolor] |
1140 | ; add ecx,0x303030 |
||
3672 | hidnplayr | 1141 | mov edx,[wcolor] |
1142 | mov eax,COLOR_CHANGE_MAGNITUDE_2 |
||
1143 | call add_color_change_magnitude |
||
1144 | mov ecx,edx |
||
1145 | mcall 4,,,hidetext,1 |
||
31 | halyavin | 1146 | |
3672 | hidnplayr | 1147 | mcall 12,2 |
1148 | popa |
||
1149 | ret |
||
2619 | mario79 | 1150 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 1151 | align 4 |
31 | halyavin | 1152 | draw_small_left: |
3672 | hidnplayr | 1153 | pusha |
1154 | mcall 12,1 |
||
31 | halyavin | 1155 | |
3672 | hidnplayr | 1156 | xor eax,eax |
1157 | mov edx,[wcolor] |
||
1158 | mov esi,edx |
||
1159 | mov edi,edx |
||
1160 | or edx, 0x01000000 |
||
1161 | mcall |
||
31 | halyavin | 1162 | |
3672 | hidnplayr | 1163 | xor ecx,ecx |
1164 | mov cx,[height] |
||
1165 | mcall 8,<0,9>,,1,[wcolor] |
||
31 | halyavin | 1166 | |
3672 | hidnplayr | 1167 | mov ebx,3*65536 ;+6 |
1168 | mov bx,[height] |
||
1169 | shr bx,1 |
||
1170 | sub bx,3 |
||
3670 | hidnplayr | 1171 | ; mov ecx,[wcolor] |
1172 | ; add ecx,0x303030 |
||
3672 | hidnplayr | 1173 | mov edx,[wcolor] |
1174 | mov eax,COLOR_CHANGE_MAGNITUDE_2 |
||
1175 | call add_color_change_magnitude |
||
1176 | mov ecx,edx |
||
1177 | mcall 4,,,hidetext+1,1 |
||
31 | halyavin | 1178 | |
3672 | hidnplayr | 1179 | mcall 12,2 |
1180 | popa |
||
1181 | ret |
||
2619 | mario79 | 1182 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 1183 | align 4 |
31 | halyavin | 1184 | right_button: |
3672 | hidnplayr | 1185 | mov [small_draw],dword draw_small_right |
31 | halyavin | 1186 | |
3672 | hidnplayr | 1187 | mcall 14 |
31 | halyavin | 1188 | |
3672 | hidnplayr | 1189 | shr eax, 16 |
1190 | mov ebx, eax |
||
1191 | mov ecx, -1 |
||
1192 | mov edx, 9 |
||
1193 | sub ebx, edx |
||
1194 | mov esi, -1 |
||
1195 | mcall 67 |
||
31 | halyavin | 1196 | |
3672 | hidnplayr | 1197 | call draw_small_right |
1198 | jmp small_wait |
||
2619 | mario79 | 1199 | ;------------------------------------------------------------------------------ |
2532 | mario79 | 1200 | align 4 |
31 | halyavin | 1201 | left_button: |
3672 | hidnplayr | 1202 | mov [small_draw],dword draw_small_left |
31 | halyavin | 1203 | |
3672 | hidnplayr | 1204 | xor ebx,ebx |
1205 | mcall 67,,-1,9,-1 |
||
31 | halyavin | 1206 | |
3672 | hidnplayr | 1207 | call draw_small_left |
2532 | mario79 | 1208 | ;-------------------------------------- |
1209 | align 4 |
||
1210 | small_wait: |
||
3672 | hidnplayr | 1211 | mcall 10 |
1212 | cmp eax,1 |
||
1213 | jne no_win |
||
31 | halyavin | 1214 | |
3672 | hidnplayr | 1215 | call [small_draw] |
1216 | jmp small_wait |
||
2532 | mario79 | 1217 | ;-------------------------------------- |
1218 | align 4 |
||
1219 | no_win: |
||
3672 | hidnplayr | 1220 | cmp eax,2 |
1221 | jne no_key |
||
31 | halyavin | 1222 | |
3672 | hidnplayr | 1223 | call handle_key |
1224 | jmp small_wait |
||
2532 | mario79 | 1225 | ;-------------------------------------- |
1226 | align 4 |
||
93 | diamond | 1227 | no_key: |
3672 | hidnplayr | 1228 | mcall 17 |
1229 | cmp ah,1 |
||
1230 | jne no_full |
||
31 | halyavin | 1231 | |
3672 | hidnplayr | 1232 | mcall 14 ; get screen max x & max y |
31 | halyavin | 1233 | |
3672 | hidnplayr | 1234 | mov edx, eax |
1235 | shr edx, 16 |
||
1236 | xor ebx, ebx |
||
1237 | mcall 67,,-1,,-1 ; x0 y0 xs ys |
||
31 | halyavin | 1238 | |
3672 | hidnplayr | 1239 | jmp still |
2532 | mario79 | 1240 | ;-------------------------------------- |
1241 | align 4 |
||
1242 | no_full: |
||
3672 | hidnplayr | 1243 | call menu_handler |
1244 | jmp small_wait |
||
2619 | mario79 | 1245 | ;------------------------------------------------------------------------------ |
1246 | include 'libini.inc' |
||
1247 | ;------------------------------------------------------------------------------ |
||
3014 | dunkaist | 1248 | include '../../../dll.inc' |
2619 | mario79 | 1249 | ;------------------------------------------------------------------------------ |
1250 | include 'drawappl.inc' |
||
1251 | ;------------------------------------------------------------------------------ |
||
1252 | include 'drawbutt.inc' |
||
1253 | ;------------------------------------------------------------------------------ |
||
1254 | include 'drawwind.inc' |
||
1255 | ;------------------------------------------------------------------------------ |
||
1256 | include 'drawtray.inc' |
||
1257 | ;------------------------------------------------------------------------------ |
||
601 | Rus | 1258 | include 'ctx_menu.asm' |
2619 | mario79 | 1259 | ;------------------------------------------------------------------------------ |
1260 | include 'i_data.inc' |
||
1261 | ;------------------------------------------------------------------------------ |
||
2532 | mario79 | 1262 | IM_END: |
1263 | ;------------------------------------------------------------------------------ |
||
2619 | mario79 | 1264 | include 'u_data.inc' |
1265 | ;------------------------------------------------------------------------------ |
||
1266 | I_END: |
||
1267 | ;------------------------------------------------------------------------------0,9>0,10>=> |