Rev 2245 | Rev 2475 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2245 | Rev 2469 | ||
---|---|---|---|
Line 13... | Line 13... | ||
13 | GIF_SIZE equ 45000 |
13 | GIF_SIZE equ 45000 |
14 | REC_SIZE equ 80 |
14 | REC_SIZE equ 80 |
15 | ICONS_DAT equ '/sys/ICONS.DAT' |
15 | ICONS_DAT equ '/sys/ICONS.DAT' |
16 | ICON_APP equ '/sys/ICON' |
16 | ICON_APP equ '/sys/ICON' |
17 | ICON_STRIP equ '/sys/ICONSTRP.GIF' |
17 | ICON_STRIP equ '/sys/ICONSTRP.GIF' |
18 | - | ||
- | 18 | ;------------------------------------------------------------------------------ |
|
19 | use32 |
19 | use32 |
20 | org 0x0 |
20 | org 0x0 |
21 | db 'MENUET01' ; 8 byte id |
21 | db 'MENUET01' ; 8 byte id |
22 | dd 0x01 ; header version |
22 | dd 0x01 ; header version |
23 | dd START ; start of code |
23 | dd START ; start of code |
24 | dd I_END ; size of image |
24 | dd I_END ; size of image |
25 | dd icon_data+0x30000 ; memory for app |
25 | dd icon_data+0x30000 ; memory for app |
26 | dd icon_data+0x30000 ; esp |
26 | dd stack_area ; esp |
27 | dd I_Param , 0x0 ; I_Param , I_Icon |
27 | dd I_Param , 0x0 ; I_Param , I_Icon |
- | 28 | ;------------------------------------------------------------------------------ |
|
28 | include '../../../macros.inc' |
29 | include '../../../macros.inc' |
29 | include 'lang.inc' |
30 | include 'lang.inc' |
30 | COLOR_ORDER equ MENUETOS |
31 | COLOR_ORDER equ MENUETOS |
31 | include 'gif_lite.inc' |
32 | include 'gif_lite.inc' |
32 | ;include 'debug.inc' |
33 | ;include 'debug.inc' |
33 | purge newline |
34 | purge newline |
34 | ;****************************************************************************** |
35 | ;------------------------------------------------------------------------------ |
35 | START: ; start of execution |
36 | START: ; start of execution |
36 | mcall 70,finfo |
37 | mcall 70,finfo |
37 | cmp ebx,GIF_SIZE |
38 | cmp ebx,GIF_SIZE |
38 | ja close |
39 | ja close |
39 | mov esi,gif_file |
40 | mov esi,gif_file |
40 | mov edi,strip_file |
41 | mov edi,strip_file |
41 | mov eax,icon_data |
42 | mov eax,icon_data |
42 | call ReadGIF |
43 | call ReadGIF |
43 | mov eax,dword[edi+4] |
44 | mov eax,dword[edi+4] |
44 | shr eax,5 |
45 | shr eax,5 |
45 | mov [icon_count],eax |
46 | mov [icon_count],eax |
46 | call load_ic |
47 | call load_ic |
47 | boot_str: |
48 | boot_str: |
48 | cmp [I_Param],dword 'BOOT' |
49 | cmp [I_Param],dword 'BOOT' |
49 | je load_icon_list2 |
50 | je load_icon_list2 |
50 | call load_icon_list |
51 | call load_icon_list |
51 | red: |
52 | red: |
52 | call draw_window ; at first, draw the window |
53 | call draw_window ; at first, draw the window |
53 | mov esi,[current_icon] |
54 | mov esi,[current_icon] |
54 | jmp band |
55 | jmp band |
- | 56 | ;------------------------------------------------------------------------------ |
|
- | 57 | align 4 |
|
55 | still: |
58 | still: |
183 | finfo_start: |
204 | finfo_start: |
184 | dd 7 |
205 | dd 7 |
185 | dd 0 |
206 | dd 0 |
186 | .params dd 0 |
207 | .params dd 0 |
187 | dd 0 |
208 | dd 0 |
188 | dd 0 |
209 | dd 0 |
189 | db 0 |
210 | db 0 |
190 | dd finfo.path |
211 | dd finfo.path |
191 | - | ||
192 | - | ||
- | 212 | ;------------------------------------------------------------------------------ |
|
193 | 213 | align 4 |
|
194 | finfo: |
214 | finfo: |
195 | dd 0 |
215 | dd 0 |
196 | dd 0 |
216 | dd 0 |
197 | dd 0 |
217 | dd 0 |
198 | dd GIF_SIZE |
218 | dd GIF_SIZE |
199 | dd gif_file |
219 | dd gif_file |
200 | .path: |
220 | .path: |
201 | db ICON_STRIP,0 |
221 | db ICON_STRIP,0 |
202 | rb 31-($-.path) |
222 | rb 31-($-.path) |
- | 223 | ;------------------------------------------------------------------------------ |
|
- | 224 | align 4 |
|
- | 225 | all_terminated: |
|
- | 226 | ;apply_changes: |
|
- | 227 | mov ebx, finfo_start |
|
- | 228 | mov dword [ebx+8], boot_str+6 |
|
- | 229 | mov esi, iconname |
|
- | 230 | call lst_path |
|
- | 231 | mcall 70 |
|
- | 232 | jmp still |
|
- | 233 | ;------------------------------------------------------------------------------ |
|
- | 234 | align 4 |
|
- | 235 | no_apply: |
|
- | 236 | cmp eax,22 ; user pressed the 'add icon' button |
|
- | 237 | jne no_add_icon |
|
- | 238 | ||
- | 239 | mov ebx,24*65536+250+8*14 |
|
- | 240 | mcall 4,,0xc0ff0000,add_text,,0xffffff |
|
- | 241 | ||
- | 242 | mcall 10 |
|
- | 243 | cmp eax,3 |
|
- | 244 | jne still |
|
- | 245 | ||
- | 246 | mcall 17 |
|
- | 247 | shr eax,8 |
|
- | 248 | cmp eax,40 |
|
- | 249 | jb no_f |
|
- | 250 | mov edi,eax |
|
- | 251 | sub eax,40 |
|
- | 252 | ||
- | 253 | xor edx,edx ; bcd -> 10 |
|
- | 254 | mov ebx,16 |
|
- | 255 | div ebx |
|
- | 256 | ; imul eax,10 |
|
- | 257 | ; multiply x10 |
|
- | 258 | shl eax,1 ; multiply x2 |
|
- | 259 | lea eax,[eax+eax*4] ; multiply x5 |
|
- | 260 | add eax,edx |
|
- | 261 | ||
- | 262 | mov ebx,eax |
|
- | 263 | add ebx,icons_reserved |
|
- | 264 | cmp [ebx],byte 'x' |
|
- | 265 | je no_f |
|
- | 266 | mov [ebx],byte 'x' |
|
- | 267 | ||
- | 268 | mov [cur_btn],edi |
|
- | 269 | xor edx,edx |
|
- | 270 | mov ebx,10 |
|
- | 271 | div ebx |
|
- | 272 | add eax,65 |
|
- | 273 | add edx,65 |
|
- | 274 | mov [icon_default+0],dl |
|
- | 275 | mov [icon_default+1],al |
|
- | 276 | ||
- | 277 | inc dword [icons] |
|
- | 278 | mov edi,[icons] |
|
- | 279 | dec edi |
|
- | 280 | imul edi,REC_SIZE |
|
- | 281 | add edi,icon_data |
|
- | 282 | ||
- | 283 | mov [current_icon],edi |
|
Line 405... | Line 414... | ||
405 | 414 | align 4 |
|
406 | print_strings: |
- | |
407 | 415 | print_strings: |
|
408 | pusha |
- | |
409 | 416 | pusha |
|
410 | mov eax,13 ; clear text area |
- | |
411 | mov ebx,100*65536+180 |
- | |
412 | mov ecx,(278+12)*65536+40 |
- | |
413 | mov edx,0xffffff |
- | |
414 | mcall |
- | |
415 | 417 | mcall 13,<100,180>,<278+12,40>,0xffffff ; clear text area |
|
416 | xor edi,edi |
418 | xor edi,edi |
417 | mov eax,4 ; icon text |
419 | mov eax,4 ; icon text |
418 | mov ebx,100*65536+278+14 |
420 | mov ebx,100*65536+278+14 |
- | 421 | mov ecx,3 |
|
- | 422 | ;-------------------------------------- |
|
419 | mov ecx,3 |
423 | align 4 |
420 | .ll: |
424 | .ll: |
421 | push ecx |
425 | push ecx |
422 | mov ecx,0x000000 |
426 | mov ecx,0x000000 |
423 | mov edx,[current_icon] |
427 | mov edx,[current_icon] |
424 | add edx,[positions+edi*4] |
428 | add edx,[positions+edi*4] |
425 | movzx esi,byte[str_lens+edi] |
429 | movzx esi,byte[str_lens+edi] |
426 | inc edi |
430 | inc edi |
427 | mcall |
431 | mcall |
428 | add ebx,14 |
432 | add ebx,14 |
429 | pop ecx |
433 | pop ecx |
430 | loop .ll |
434 | loop .ll |
431 | 435 | ||
432 | popa |
436 | popa |
433 | ret |
- | |
- | 437 | ret |
|
434 | 438 | ;------------------------------------------------------------------------------ |
|
- | 439 | iconlst db ICONS_DAT,0 |
|
435 | iconlst db ICONS_DAT,0 |
440 | ;------------------------------------------------------------------------------ |
436 | 441 | align 4 |
|
437 | load_icon_list: |
- | |
438 | 442 | load_icon_list: |
|
439 | mov edi,icons_reserved ; clear reserved area |
443 | mov edi,icons_reserved ; clear reserved area |
440 | mov eax,32 |
444 | mov eax,32 |
441 | mov ecx,10*9 |
445 | mov ecx,10*9 |
442 | cld |
446 | cld |
443 | rep stosb |
447 | rep stosb |
444 | 448 | ||
445 | mov ecx,[icons] ; set used icons to reserved area |
449 | mov ecx,[icons] ; set used icons to reserved area |
- | 450 | mov esi,icon_data |
|
- | 451 | ;-------------------------------------- |
|
446 | mov esi,icon_data |
452 | align 4 |
447 | ldl1: |
453 | ldl1: |
448 | movzx ebx,byte [esi+1] |
454 | movzx ebx,byte [esi+1] |
449 | sub ebx,65 |
455 | sub ebx,65 |
- | 456 | ; imul ebx,10 |
|
- | 457 | ; multiply x10 |
|
- | 458 | shl ebx,1 ; multiply x2 |
|
450 | imul ebx,10 |
459 | lea ebx,[ebx+ebx*4] ; multiply x5 |
451 | movzx eax,byte [esi] |
460 | movzx eax,byte [esi] |
452 | add ebx,eax |
461 | add ebx,eax |
453 | sub ebx,65 |
462 | sub ebx,65 |
454 | add ebx,icons_reserved |
463 | add ebx,icons_reserved |
455 | mov [ebx],byte 'x' |
464 | mov [ebx],byte 'x' |
456 | add esi,REC_SIZE |
465 | add esi,REC_SIZE |
457 | loop ldl1 |
466 | loop ldl1 |
- | 467 | ret |
|
458 | ret |
468 | ;------------------------------------------------------------------------------ |
459 | 469 | align 4 |
|
460 | lst_path: |
470 | lst_path: |
461 | mov ecx,30 |
471 | mov ecx,30 |
462 | mov edi,finfo.path |
472 | mov edi,finfo.path |
463 | rep movsb |
473 | rep movsb |
- | 474 | ret |
|
464 | ret |
475 | ;------------------------------------------------------------------------------ |
465 | 476 | align 4 |
|
466 | load_ic: |
477 | load_ic: |
467 | mov ebx,finfo |
478 | mov ebx,finfo |
468 | mov dword[ebx+12],48*REC_SIZE |
479 | mov dword[ebx+12],48*REC_SIZE |
469 | mov dword[ebx+16],icon_data |
480 | mov dword[ebx+16],icon_data |
470 | mov esi,iconlst |
481 | mov esi,iconlst |
471 | call lst_path |
482 | call lst_path |
472 | mcall 70 |
483 | mcall 70 |
473 | lea eax,[ebx+10] |
484 | lea eax,[ebx+10] |
474 | xor edx,edx |
485 | xor edx,edx |
475 | mov ebx,REC_SIZE |
486 | mov ebx,REC_SIZE |
476 | div ebx |
487 | div ebx |
477 | mov [icons],eax |
488 | mov [icons],eax |
478 | ret |
- | |
- | 489 | ret |
|
479 | 490 | ;------------------------------------------------------------------------------ |
|
480 | 491 | align 4 |
|
481 | positions dd 3,16,47 |
492 | positions dd 3,16,47 |
- | 493 | str_lens db 8,30,30 |
|
482 | str_lens db 8,30,30 |
494 | ;------------------------------------------------------------------------------ |
483 | 495 | align 4 |
|
484 | read_string: |
496 | read_string: |
485 | pusha |
497 | pusha |
486 | sub eax,11 |
498 | sub eax,11 |
487 | movzx ecx,byte[str_lens+eax] |
499 | movzx ecx,byte[str_lens+eax] |
488 | mov [cur_str],ecx |
500 | mov [cur_str],ecx |
489 | mov eax,[positions+eax*4] |
- | |
490 | 501 | mov eax,[positions+eax*4] |
|
491 | mov edi,[current_icon] |
502 | mov edi,[current_icon] |
492 | add edi,eax |
503 | add edi,eax |
493 | mov [addr],edi |
- | |
494 | 504 | mov [addr],edi |
|
- | 505 | add edi,ecx |
|
495 | add edi,ecx |
506 | ;-------------------------------------- |
496 | 507 | align 4 |
|
497 | .l1: |
508 | .l1: |
498 | dec edi |
509 | dec edi |
499 | cmp byte[edi],' ' |
510 | cmp byte[edi],' ' |
- | 511 | jne .found |
|
500 | jne .found |
512 | |
501 | mov byte[edi],'_' |
513 | mov byte[edi],'_' |
- | 514 | loop .l1 |
|
502 | loop .l1 |
515 | |
- | 516 | dec edi |
|
- | 517 | ;-------------------------------------- |
|
503 | dec edi |
518 | align 4 |
504 | .found: |
519 | .found: |
505 | inc edi |
520 | inc edi |
506 | push edi |
521 | push edi |
507 | call print_strings |
- | |
508 | 522 | call print_strings |
|
- | 523 | pop edi |
|
- | 524 | ;-------------------------------------- |
|
509 | pop edi |
525 | align 4 |
510 | f11: |
- | |
511 | mov eax,10 |
526 | f11: |
512 | mcall |
527 | mcall 10 |
513 | cmp eax,2 |
528 | cmp eax,2 |
514 | jz fbu |
529 | jz fbu |
- | 530 | jmp rs_done |
|
- | 531 | ;-------------------------------------- |
|
515 | jmp rs_done |
532 | align 4 |
516 | fbu: |
- | |
517 | mov eax,2 |
533 | fbu: |
518 | mcall |
534 | mcall 2 |
519 | shr eax,8 |
535 | shr eax,8 |
520 | cmp eax,13 |
536 | cmp eax,13 |
521 | je rs_done |
537 | je rs_done |
522 | cmp eax,8 |
538 | cmp eax,8 |
523 | jnz nobsl |
539 | jnz nobsl |
524 | cmp edi,[addr] |
540 | cmp edi,[addr] |
525 | jz f11 |
541 | jz f11 |
526 | dec edi |
542 | dec edi |
527 | mov [edi],byte '_' |
543 | mov [edi],byte '_' |
528 | call print_strings |
544 | call print_strings |
- | 545 | jmp f11 |
|
- | 546 | ;-------------------------------------- |
|
529 | jmp f11 |
547 | align 4 |
530 | nobsl: |
548 | nobsl: |
531 | cmp eax,31 |
549 | cmp eax,31 |
532 | jbe f11 |
550 | jbe f11 |
533 | mov [edi],al |
551 | mov [edi],al |
534 | call print_strings |
- | |
535 | 552 | call print_strings |
|
536 | inc edi |
553 | inc edi |
537 | mov esi,[addr] |
554 | mov esi,[addr] |
538 | add esi,[cur_str] |
555 | add esi,[cur_str] |
539 | cmp esi,edi |
556 | cmp esi,edi |
- | 557 | jnz f11 |
|
540 | jnz f11 |
558 | ;-------------------------------------- |
541 | 559 | align 4 |
|
542 | rs_done: |
- | |
543 | 560 | rs_done: |
|
544 | mov ecx,[addr] |
561 | mov ecx,[addr] |
545 | add ecx,[cur_str] |
562 | add ecx,[cur_str] |
546 | sub ecx,edi |
563 | sub ecx,edi |
547 | mov eax,32 |
564 | mov eax,32 |
548 | cld |
565 | cld |
549 | rep stosb |
566 | rep stosb |
550 | call print_strings |
567 | call print_strings |
551 | popa |
568 | popa |
- | 569 | ret |
|
552 | ret |
570 | ;------------------------------------------------------------------------------ |
553 | 571 | align 4 |
|
554 | key: ; key |
572 | key: ; key |
555 | mov al,2 ; just read it and ignore |
- | |
556 | mcall |
573 | mcall 2 ; just read it and ignore |
557 | jmp still |
- | |
- | 574 | jmp still |
|
558 | 575 | ;------------------------------------------------------------------------------ |
|
559 | ; ********************************************* |
576 | ; ********************************************* |
560 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
577 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
561 | ; ********************************************* |
- | |
562 | 578 | ; ********************************************* |
|
563 | 579 | align 4 |
|
- | 580 | draw_window: |
|
- | 581 | mcall 12,1 |
|
- | 582 | ; DRAW WINDOW |
|
- | 583 | xor eax,eax |
|
- | 584 | xor esi,esi |
|
Line 564... | Line -... | ||
564 | draw_window: |
- | |
565 | 585 | mcall ,<210,300>,<30,(390-14)>,0x14ffffff,,title |
|
566 | mov eax,12 ; function 12:tell os about windowdraw |
- | |
Line 567... | Line -... | ||
567 | mov ebx,1 ; 1, start of draw |
- | |
568 | mcall |
- | |
569 | - | ||
570 | ; DRAW WINDOW |
- | |
571 | xor eax,eax |
- | |
572 | mov ebx,210*65536+300 |
- | |
573 | mov ecx,30*65536+390-14 |
- | |
574 | mov edx,0x14ffffff |
- | |
575 | mov edi,title ; WINDOW LABEL |
- | |
576 | mcall |
- | |
577 | - | ||
578 | mov eax,13 ; WINDOW AREA |
- | |
579 | mov ebx,20*65536+260 |
- | |
580 | mov ecx,35*65536+200 |
- | |
581 | mov edx,0x3366cc |
586 | |
582 | mcall |
- | |
583 | - | ||
584 | mov eax,38 ; VERTICAL LINE ON WINDOW AREA |
- | |
585 | mov ebx,150*65536+150 |
- | |
586 | mov ecx,35*65536+235 |
- | |
587 | mov edx,0xffffff |
- | |
588 | mcall |
- | |
589 | - | ||
590 | mov eax,38 ; HOROZONTAL LINE ON WINDOW AREA |
- | |
591 | mov ebx,20*65536+280 |
- | |
592 | mov ecx,135*65536+135 |
- | |
593 | mov edx,0xffffff |
- | |
594 | mcall |
- | |
595 | - | ||
596 | mov eax,8 ; TEXT ENTER BUTTONS |
- | |
597 | mov ebx,20*65536+72 |
- | |
598 | mov ecx,(275+1+14)*65536+13-2 |
- | |
599 | mov edx,11 |
- | |
600 | mov esi,[bcolor] |
- | |
601 | mcall |
- | |
602 | inc edx |
- | |
603 | add ecx,14*65536 |
- | |
604 | mcall |
- | |
605 | inc edx |
- | |
606 | add ecx,14*65536 |
- | |
607 | mcall |
- | |
608 | - | ||
609 | ; mov eax,8 ; APPLY AND SAVE CHANGES BUTTON |
- | |
610 | mov ebx,20*65536+259 |
- | |
611 | mov ecx,(329+2)*65536+15-4 |
- | |
612 | mov edx,21 |
- | |
613 | mov esi,[bcolor] |
- | |
614 | mcall |
- | |
615 | - | ||
616 | ; mov eax,8 ; ADD ICON BUTTON |
- | |
617 | mov ebx,20*65536+129-2 |
- | |
618 | add ecx,14*65536 |
- | |
619 | inc edx |
- | |
620 | mcall |
- | |
621 | - | ||
622 | ; mov eax,8 ; REMOVE ICON BUTTON |
- | |
623 | add ebx,(130+2)*65536 |
- | |
624 | inc edx |
- | |
625 | mcall |
- | |
626 | - | ||
627 | mcall ,<20-14,8>,<260-23,32>,30+1 shl 30 ; IMAGE BUTTON |
- | |
628 | inc edx |
- | |
629 | add ebx,(36*7+26) shl 16 |
- | |
630 | mcall |
- | |
631 | add edx,1+1 shl 29 |
- | |
632 | mov ebx,(33-19) shl 16+(34*8) |
- | |
633 | mcall |
- | |
634 | mcall 4,<23-15,273-24>,0,arrows,1 |
- | |
635 | add ebx,(36*7+27)shl 16 |
- | |
636 | add edx,2 |
- | |
637 | mcall |
- | |
638 | dec edx |
- | |
639 | mcall ,<120,250> |
- | |
640 | lea edx,[ebx+8 shl 16] |
- | |
641 | mov ecx,[icon_count] |
- | |
642 | mcall 47,0x30000,,,0 |
- | |
643 | - | ||
644 | ;; |
- | |
645 | mov eax,4 |
- | |
646 | mov ebx,24*65536+250+14+14+14 |
- | |
647 | mov ecx,0xffffff |
- | |
648 | mov edx,text |
- | |
649 | mov esi,47 |
- | |
650 | newline: |
- | |
651 | mov ecx,[edx] |
- | |
652 | add edx,4 |
- | |
653 | mcall |
- | |
654 | add ebx,14 |
- | |
655 | add edx,47 |
- | |
656 | cmp [edx],byte 'x' |
- | |
657 | jne newline |
- | |
658 | draw_btns: |
- | |
659 | ;; |
- | |
660 | mov eax,0 ; DRAW BUTTONS ON WINDOW AREA |
- | |
661 | mov ebx,20*65536+25 |
- | |
662 | mov ecx,35*65536+19 |
- | |
663 | mov edi,icon_table |
- | |
664 | mov edx,40 |
- | |
665 | newbline: |
- | |
666 | - | ||
667 | cmp [edi],byte 'x' |
- | |
668 | jne no_button |
- | |
669 | - | ||
670 | mov esi,0x5577cc |
- | |
671 | cmp [edi+90],byte 'x' |
- | |
672 | jne nores |
- | |
673 | mov esi,0xcc5555 |
- | |
674 | cmp edx,[cur_btn] |
- | |
675 | jne nores |
- | |
676 | mov esi,0xe7e05a |
- | |
677 | nores: |
- | |
678 | - | ||
679 | push eax |
- | |
680 | mov eax,8 |
- | |
681 | mcall |
- | |
682 | pop eax |
- | |
683 | - | ||
684 | no_button: |
- | |
685 | - | ||
686 | add ebx,26*65536 |
- | |
687 | - | ||
688 | inc edi |
- | |
689 | inc edx |
- | |
690 | - | ||
691 | inc al |
- | |
692 | cmp al,9 |
- | |
693 | jbe newbline |
- | |
694 | mov al,0 |
- | |
695 | - | ||
696 | add edx,6 |
- | |
697 | - | ||
698 | ror ebx,16 |
- | |
699 | mov bx,20 |
- | |
700 | ror ebx,16 |
- | |
701 | add ecx,20*65536 |
- | |
702 | - | ||
703 | inc ah |
- | |
704 | cmp ah,8;9 |
- | |
705 | jbe newbline |
- | |
706 | call print_strings |
- | |
707 | call draw_icon |
- | |
Line 708... | Line 587... | ||
708 | mov eax,12 ; function 12:tell os about windowdraw |
587 | mcall 13,<20,260>,<35,200>,0x3366cc ; WINDOW AREA |
Line 709... | Line -... | ||
709 | mov ebx,2 ; 2, end of draw |
- | |
710 | mcall |
588 | |
711 | - | ||
712 | ret |
- | |
713 | - | ||
714 | draw_icon: |
- | |
715 | mcall 13,<33-20,34*8+2>,<260-24,37+15-2>,0xffffff |
- | |
716 | mov esi,[current_icon] |
- | |
717 | add esi,12 |
- | |
718 | call atoi |
- | |
719 | push eax |
- | |
720 | cmp eax,[cur_band] |
- | |
721 | jb .nou |
- | |
722 | sub eax,[cur_band] |
- | |
723 | cmp eax,7 |
- | |
724 | ja .nou |
- | |
725 | imul eax,34 shl 16 |
- | |
726 | lea ebx,[eax+(33-19) shl 16] |
- | |
727 | mov bx,34 |
- | |
728 | mcall 13,,<236+35,3>,0xff0000 |
- | |
729 | mov eax,[esp] |
- | |
730 | .nou: |
- | |
731 | mov eax,[cur_band] |
- | |
732 | and eax,0xfffffff8 |
- | |
733 | push eax |
589 | mcall 38,<150,150>,<35,235>,0xffffff ; VERTICAL LINE ON WINDOW AREA |
734 | imul eax,ICON_SIZE |
- | |
735 | lea ebx,[strip_file+8+eax] |
- | |
736 | mov ecx,8 |
590 | |
737 | mov edx,(33-18) shl 16+238 |
- | |
738 | .nxt: |
591 | mcall ,<20,280>,<135,135> ; HOROZONTAL LINE ON WINDOW AREA |
739 | push ecx |
592 | |
740 | mcall 7,,<32,32> |
593 | mcall 8,<20,72>,<(275+1+14),(13-2)>,11,[bcolor] ;id 11 TEXT ENTER BUTTONS |
741 | pop ecx |
- | |
742 | add ebx,ICON_SIZE |
- | |
743 | add edx,34 shl 16 |
- | |
744 | loop .nxt |
- | |
745 | - | ||
746 | mcall 4,<45,280-2>,0,rep_text,rep_text_len-rep_text |
- | |
747 | lea edx,[ebx+(8*5)shl 16] |
- | |
748 | pop ecx |
- | |
749 | mcall 47,0x30000,,,0xff |
- | |
750 | add ecx,7 |
- | |
751 | add edx,(3*8+4)shl 16 |
594 | |
752 | mcall |
595 | inc edx |
753 | mov ecx,[icon_count] |
596 | add ecx,14*65536 |
754 | add edx,(5*8+4)shl 16 |
- | |
Line 755... | Line 597... | ||
755 | mcall |
597 | mcall ; id 12 |
Line -... | Line 598... | ||
- | 598 | ||
- | 599 | inc edx |
|
- | 600 | add ecx,14*65536 |
|
Line 756... | Line 601... | ||
756 | pop ecx |
601 | mcall ; id 13 |
- | 602 | ||
- | 603 | mcall ,<20,259>,<(329+2),(15-4)>,21 ; id 21 APPLY AND SAVE CHANGES BUTTON |
|
Line 757... | Line 604... | ||
757 | add edx,(10*8+4)shl 16 |
604 | |
Line 758... | Line 605... | ||
758 | mcall ,,,,0xff0000 |
605 | add ecx,14*65536 |
759 | ret |
606 | inc edx |
760 | 607 | mcall ,<20,(129-2)> ; id 22 ADD ICON BUTTON |
|
761 | ; DATA AREA |
- | |
762 | - | ||
Line 763... | Line 608... | ||
763 | 608 | ||
764 | bcolor dd 0x335599 |
609 | add ebx,(130+2)*65536 |
- | 610 | inc edx |
|
- | 611 | mcall ; id 23 REMOVE ICON BUTTON |
|
Line -... | Line 612... | ||
- | 612 | ||
- | 613 | mcall ,<(20-14),8>,<(260-23),32>,30 + 1 shl 30 ; id 30 IMAGE BUTTON |
|
- | 614 | ||
- | 615 | inc edx |
|
- | 616 | add ebx,(36*7+26) shl 16 |
|
- | 617 | mcall ; id 31 |
|
- | 618 | ||
- | 619 | add edx,1 + 1 shl 29 |
|
- | 620 | mcall ,<(33-19),(34*8)> ; id 32 |
|
- | 621 | ||
- | 622 | mcall 4,<(23-15),(273-24)>,0,arrows,1 |
|
- | 623 | ||
- | 624 | add ebx,(36*7+27)shl 16 |
|
- | 625 | add edx,2 |
|
- | 626 | mcall |
|
- | 627 | ||
- | 628 | dec edx |
|
- | 629 | mcall ,<120,250> |
|
- | 630 | ||
- | 631 | lea edx,[ebx+8 shl 16] |
|
- | 632 | mcall 47,0x30000,[icon_count],,0 |
|
- | 633 | ||
- | 634 | mov eax,4 |
|
- | 635 | mov ebx,24 shl 16+(250+14+14+14) |
|
- | 636 | mov ecx,0xffffff |
|
- | 637 | mov edx,text |
|
- | 638 | mov esi,47 |
|
- | 639 | ;-------------------------------------- |
|
- | 640 | align 4 |
|
- | 641 | newline: |
|
- | 642 | mov ecx,[edx] |
|
- | 643 | add edx,4 |
|
- | 644 | mcall |
|
- | 645 | add ebx,14 |
|
- | 646 | add edx,47 |
|
- | 647 | cmp [edx],byte 'x' |
|
- | 648 | jne newline |
|
- | 649 | ;-------------------------------------- |
|
- | 650 | align 4 |
|
- | 651 | draw_btns: |
|
- | 652 | mov eax,0 ; DRAW BUTTONS ON WINDOW AREA |
|
- | 653 | mov ebx,20 shl 16+25 |
|
- | 654 | mov ecx,35 shl 16+19 |
|
- | 655 | mov edi,icon_table |
|
- | 656 | mov edx,40 |
|
- | 657 | ;-------------------------------------- |
|
- | 658 | align 4 |
|
- | 659 | newbline: |
|
- | 660 | cmp [edi],byte 'x' |
|
- | 661 | jne no_button |
|
- | 662 | ||
- | 663 | mov esi,0x5577cc |
|
- | 664 | cmp [edi+90],byte 'x' |
|
- | 665 | jne nores |
|
- | 666 | ||
- | 667 | mov esi,0xcc5555 |
|
- | 668 | cmp edx,[cur_btn] |
|
- | 669 | jne nores |
|
- | 670 | ||
- | 671 | mov esi,0xe7e05a |
|
- | 672 | ;-------------------------------------- |
|
- | 673 | align 4 |
|
- | 674 | nores: |
|
- | 675 | push eax |
|
- | 676 | mcall 8 |
|
- | 677 | pop eax |
|
- | 678 | ;-------------------------------------- |
|
- | 679 | align 4 |
|
- | 680 | no_button: |
|
- | 681 | add ebx,26 shl 16 |
|
- | 682 | ||
- | 683 | inc edi |
|
- | 684 | inc edx |
|
- | 685 | inc al |
|
- | 686 | cmp al,9 |
|
- | 687 | jbe newbline |
|
- | 688 | ||
- | 689 | mov al,0 |
|
- | 690 | add edx,6 |
|
- | 691 | ror ebx,16 |
|
- | 692 | mov bx,20 |
|
- | 693 | ror ebx,16 |
|
- | 694 | add ecx,20 shl 16 |
|
- | 695 | inc ah |
|
- | 696 | cmp ah,8 ;9 |
|
- | 697 | jbe newbline |
|
- | 698 | ||
- | 699 | call print_strings |
|
- | 700 | call draw_icon |
|
- | 701 | mcall 12,2 |
|
- | 702 | ret |
|
- | 703 | ;------------------------------------------------------------------------------ |
|
- | 704 | align 4 |
|
- | 705 | draw_icon: |
|
- | 706 | mcall 13,<(33-20),(34*8+2)>,<(260-24),(37+15-2)>,0xffffff |
|
- | 707 | mov esi,[current_icon] |
|
- | 708 | add esi,12 |
|
- | 709 | call atoi |
|
- | 710 | push eax |
|
- | 711 | cmp eax,[cur_band] |
|
- | 712 | jb .nou |
|
- | 713 | sub eax,[cur_band] |
|
- | 714 | cmp eax,7 |
|
- | 715 | ja .nou |
|
- | 716 | imul eax,34 shl 16 |
|
- | 717 | lea ebx,[eax+(33-19) shl 16] |
|
- | 718 | mov bx,34 |
|
- | 719 | mcall 13,,<(236+35),3>,0xff0000 |
|
- | 720 | mov eax,[esp] |
|
- | 721 | ;-------------------------------------- |
|
- | 722 | align 4 |
|
- | 723 | .nou: |
|
- | 724 | mov eax,[cur_band] |
|
- | 725 | and eax,0xfffffff8 |
|
- | 726 | push eax |
|
- | 727 | imul eax,ICON_SIZE |
|
- | 728 | lea ebx,[strip_file+8+eax] |
|
- | 729 | mov ecx,8 |
|
- | 730 | mov edx,(33-18) shl 16+238 |
|
- | 731 | ;-------------------------------------- |
|
- | 732 | align 4 |
|
- | 733 | .nxt: |
|
- | 734 | push ecx |
|
- | 735 | mcall 7,,<32,32> |
|
- | 736 | pop ecx |
|
- | 737 | add ebx,ICON_SIZE |
|
- | 738 | add edx,34 shl 16 |
|
- | 739 | loop .nxt |
|
- | 740 | ||
- | 741 | mcall 4,<45,280-2>,0,rep_text,rep_text_len-rep_text |
|
- | 742 | lea edx,[ebx+(8*5)shl 16] |
|
- | 743 | pop ecx |
|
- | 744 | mcall 47,0x30000,,,0xff |
|
- | 745 | ||
- | 746 | add ecx,7 |
|
- | 747 | add edx,(3*8+4)shl 16 |
|
- | 748 | mcall |
|
- | 749 | ||
- | 750 | add edx,(5*8+4)shl 16 |
|
- | 751 | mcall ,,[icon_count] |
|
- | 752 | ||
- | 753 | pop ecx |
|
- | 754 | add edx,(10*8+4)shl 16 |
|
- | 755 | mcall ,,,,0xff0000 |
|
- | 756 | ret |
|
- | 757 | ;------------------------------------------------------------------------------ |
|
- | 758 | ; DATA AREA |
|
765 | 759 | bcolor dd 0x335599 |
|
766 | icon_table: |
760 | ;------------------------------------------------------------------------------ |
767 | 761 | icon_table: |
|
768 | times 4 db 'xxxx xxxx' |
762 | times 4 db 'xxxx xxxx' |
769 | times 2 db ' ' |
763 | times 2 db ' ' |
770 | times 1 db ' ' |
764 | times 1 db ' ' |
771 | times 2 db 'xxxx xxxx' |
765 | times 2 db 'xxxx xxxx' |
772 | ; times 1 db ' ' |
766 | ; times 1 db ' ' |
773 | 767 | ;------------------------------------------------------------------------------ |
|
774 | icons_reserved: |
768 | icons_reserved: |
775 | times 9 db ' ' |
769 | times 9 db ' ' |
776 | 770 | ;------------------------------------------------------------------------------ |
|
777 | if lang eq ru |
771 | if lang eq ru |
Line 778... | Line 772... | ||
778 | text: |
772 | text: |
779 | db 255,255,255,0, ' ' |
773 | db 255,255,255,0, ' ' |
780 | db 255,255,255,0, ' ' |
774 | db 255,255,255,0, ' ' |
781 | db 255,255,255,0, ' ' |
775 | db 255,255,255,0, ' ' |
782 | db 255,255,255,0, ' ' |
776 | db 255,255,255,0, ' ' |
783 | db 255,255,255,0, ' ' |
777 | db 255,255,255,0, ' ' |
784 | db 0,0,0,0, ' ' |
778 | db 0,0,0,0, ' ' |
785 | db 'x' ; <- END MARKER, DONT DELETE |
779 | db 'x' ; <- END MARKER, DONT DELETE |
786 | 780 | ||
787 | add_text db ' ',0 |
781 | add_text db ' ',0 |
788 | rem_text db ' ',0 |
782 | rem_text db ' ',0 |
789 | title db '¥¥¤¦¥à ¨ª®®ª',0 |
783 | title db '¥¥¤¦¥à ¨ª®®ª',0 |
790 | 784 | ||
Line 791... | Line 785... | ||
791 | else if lang eq ge |
785 | else if lang eq ge |
792 | text: |
786 | text: |
793 | db 255,255,255,0, ' TITLE ' |
787 | db 255,255,255,0, ' TITLE ' |
794 | db 255,255,255,0, ' APP NAME ' |
788 | db 255,255,255,0, ' APP NAME ' |
795 | db 255,255,255,0, ' PARAMETER ' |
789 | db 255,255,255,0, ' PARAMETER ' |
796 | db 255,255,255,0, ' ANWENDEN ' |
790 | db 255,255,255,0, ' ANWENDEN ' |
797 | db 255,255,255,0, ' HINZUFUEGEN ENTFERNEN ' |
791 | db 255,255,255,0, ' HINZUFUEGEN ENTFERNEN ' |
798 | db 0,0,0,0, 'AUF BUTTON KLICKEN, UM ICON ZU EDITIEREN ' |
792 | db 0,0,0,0, 'AUF BUTTON KLICKEN, UM ICON ZU EDITIEREN ' |
799 | db 'x' ; <- END MARKER, DONT DELETE |
793 | db 'x' ; <- END MARKER, DONT DELETE |
800 | 794 | ||
801 | add_text db 'AUF UNBENUTZTE ICONPOSITION KLICKEN ',0 |
795 | add_text db 'AUF UNBENUTZTE ICONPOSITION KLICKEN ',0 |
802 | rem_text db 'ICON ANKLICKEN; DAS GELOESCHT WERDEN SOLL ',0 |
796 | rem_text db 'ICON ANKLICKEN; DAS GELOESCHT WERDEN SOLL ',0 |
Line 803... | Line 797... | ||
803 | title db 'Icon Manager',0 |
797 | title db 'Icon Manager',0 |
804 | - | ||
- | 798 | ||
805 | else |
799 | else |
- | 800 | text: |
|
806 | text: |
801 | db 255,255,255,0, ' TITLE ' |
807 | db 255,255,255,0, ' TITLE ' |
802 | db 255,255,255,0, ' APP NAME ' |
808 | db 255,255,255,0, ' APP NAME ' |
- | |
- | 803 | db 255,255,255,0, ' PARAMETERS ' |
|
809 | db 255,255,255,0, ' PARAMETERS ' |
804 | db 255,255,255,0, ' APPLY CHANGES ' |
810 | db 255,255,255,0, ' APPLY CHANGES ' |
805 | db 255,255,255,0, ' ADD ICON REMOVE ICON ' |
811 | db 255,255,255,0, ' ADD ICON REMOVE ICON ' |
806 | db 0,0,0,0, 'CLICK BUTTON ON ICON POSITION FOR EDIT ' |
812 | db 0,0,0,0, 'CLICK BUTTON ON ICON POSITION FOR EDIT ' |
807 | db 'x' ; <- END MARKER, DONT DELETE |
813 | db 'x' ; <- END MARKER, DONT DELETE |
- | |
- | 808 | add_text db 'CLICK ON A NOT USED POSITION ',0 |
|
814 | add_text db 'CLICK ON A NOT USED POSITION ',0 |
809 | rem_text db 'CLICK ICON POSITION; YOU WANT TO DELETE ',0 |
815 | rem_text db 'CLICK ICON POSITION; YOU WANT TO DELETE ',0 |
810 | title db 'Icon Manager',0 |
816 | title db 'Icon Manager',0 |
811 | |
817 | 812 | end if |
|
818 | end if |
813 | ;------------------------------------------------------------------------------ |
819 | 814 | arrows db '>' |
|
Line 820... | Line 815... | ||
820 | arrows db '>' |
815 | ;------------------------------------------------------------------------------ |
- | 816 | iconname: |
|
821 | iconname: |
817 | db ICON_APP,0 |
822 | db ICON_APP,0 |
- | |
823 | 818 | ;------------------------------------------------------------------------------ |
|
824 | icon_default: |
- | |
825 | db 'AA-SYSXTREE-000-/RD/1/SYSXTREE ' |
- | |
826 | db '- *' |
819 | icon_default: |
827 | db 13,10 |
820 | db 'AA-SYSXTREE-000-/RD/1/SYSXTREE ' |
828 | - | ||
829 | rep_text: |
- | |
830 | if lang eq ru |
- | |
831 | db ' - , #' |
- | |
832 | else |
- | |
833 | db 'ICONS - OF , SELECTED' |
- | |
834 | end if |
- | |
835 | - | ||
836 | rep_text_len: |
- | |
837 | - | ||
838 | ;////////////////////////// |
- | |
839 | get_bg_info: |
- | |
Line 840... | Line -... | ||
840 | mov eax,39 |
- | |
841 | mov ebx,4 |
- | |
842 | mcall |
- | |
843 | mov [bgrdrawtype],eax |
- | |
844 | - | ||
845 | mov eax,39 ; get background size |
- | |
846 | mov ebx,1 |
- | |
847 | mcall |
- | |
848 | mov [bgrxy],eax |
- | |
849 | - | ||
850 | mov ebx,eax |
- | |
851 | shr eax,16 |
- | |
852 | and ebx,0xffff |
- | |
853 | mov [bgrx],eax |
- | |
854 | mov [bgry],ebx |
- | |
855 | ret |
- | |
856 | - | ||
857 | calc_icon_pos: |
- | |
858 | movzx eax,byte [ebp-20] ; x position |
- | |
859 | sub eax,'A' ;eax - number of letter |
- | |
860 | cmp eax,4 |
- | |
861 | jg no_left |
- | |
862 | shl eax,6 ;imul eax,64 |
- | |
863 | add eax,16 |
- | |
864 | movzx ebx,[warea.left] |
821 | db '- *' |
865 | add eax,ebx |
- | |
866 | jmp x_done |
- | |
867 | - | ||
868 | no_left: |
- | |
869 | sub eax,9 |
- | |
870 | sal eax,6 ;imul eax,64 |
- | |
871 | sub eax,16+52-1 |
- | |
872 | movzx ebx,[warea.right] |
- | |
873 | add eax,ebx |
- | |
874 | x_done: |
- | |
875 | mov [ebp-12],eax |
- | |
876 | 822 | db 13,10 |
|
877 | movzx eax,byte [ebp-20+1] ; y position |
- | |
Line -... | Line 823... | ||
- | 823 | ;------------------------------------------------------------------------------ |
|
- | 824 | rep_text: |
|
- | 825 | if lang eq ru |
|
- | 826 | db ' - , #' |
|
- | 827 | else |
|
- | 828 | db 'ICONS - OF , SELECTED' |
|
- | 829 | end if |
|
- | 830 | ||
- | 831 | rep_text_len: |
|
- | 832 | ;------------------------------------------------------------------------------ |
|
- | 833 | align 4 |
|
- | 834 | get_bg_info: |
|
- | 835 | mcall 39,4 |
|
- | 836 | mov [bgrdrawtype],eax |
|
- | 837 | ||
- | 838 | mcall 39,1 ; get background size |
|
- | 839 | mov [bgrxy],eax |
|
- | 840 | ||
- | 841 | mov ebx,eax |
|
- | 842 | shr eax,16 |
|
- | 843 | and ebx,0xffff |
|
- | 844 | mov [bgrx],eax |
|
- | 845 | mov [bgry],ebx |
|
- | 846 | ret |
|
- | 847 | ;------------------------------------------------------------------------------ |
|
- | 848 | align 4 |
|
- | 849 | calc_icon_pos: |
|
- | 850 | movzx eax,byte [ebp-20] ; x position |
|
- | 851 | sub eax,'A' ;eax - number of letter |
|
- | 852 | cmp eax,4 |
|
- | 853 | jg no_left |
|
- | 854 | ||
- | 855 | shl eax,6 ;imul eax,64 |
|
- | 856 | add eax,16 |
|
- | 857 | movzx ebx,[warea.left] |
|
- | 858 | add eax,ebx |
|
- | 859 | jmp x_done |
|
- | 860 | ;-------------------------------------- |
|
- | 861 | align 4 |
|
- | 862 | no_left: |
|
- | 863 | sub eax,9 |
|
- | 864 | sal eax,6 ;imul eax,64 |
|
- | 865 | sub eax,16+52-1 |
|
- | 866 | movzx ebx,[warea.right] |
|
- | 867 | add eax,ebx |
|
- | 868 | ;-------------------------------------- |
|
- | 869 | align 4 |
|
- | 870 | x_done: |
|
- | 871 | mov [ebp-12],eax |
|
- | 872 | movzx eax,byte [ebp-20+1] ; y position |
|
- | 873 | sub eax,'A' ; eax - number of letter |
|
- | 874 | cmp eax,4 |
|
- | 875 | jg no_up |
|
- | 876 | ||
- | 877 | shl eax,6 ;imul eax,80 |
|
- | 878 | add eax,16 |
|
878 | sub eax,'A' ; eax - number of letter |
879 | movzx ebx,[warea.top] |
879 | cmp eax,4 |
880 | add eax,ebx |
880 | jg no_up |
881 | jmp y_done |
881 | shl eax,6 ;imul eax,80 |
- | |
882 | add eax,16 |
- | |
883 | movzx ebx,[warea.top] |
- | |
884 | add eax,ebx |
- | |
885 | jmp y_done |
- | |
886 | no_up: |
- | |
887 | sub eax,9 |
- | |
888 | shl eax,6 ;imul eax,80 |
- | |
889 | sub eax,16-1 |
- | |
Line -... | Line 882... | ||
- | 882 | ;-------------------------------------- |
|
- | 883 | align 4 |
|
- | 884 | no_up: |
|
- | 885 | sub eax,9 |
|
- | 886 | shl eax,6 ;imul eax,80 |
|
- | 887 | sub eax,16-1 |
|
- | 888 | movzx ebx,[warea.bottom] |
|
- | 889 | add eax,ebx |
|
- | 890 | ;-------------------------------------- |
|
890 | movzx ebx,[warea.bottom] |
891 | align 4 |
891 | add eax,ebx |
- | |
892 | y_done: |
892 | y_done: |
893 | mov [ebp-8],eax |
893 | mov [ebp-8],eax |
894 | ret |
894 | ret |
- | 895 | ;-------------------------------------- |
|
895 | 896 | align 4 |
|
896 | ;START2: |
897 | ;START2: |
897 | load_icon_list2: |
898 | load_icon_list2: |
898 | call get_bg_info |
899 | call get_bg_info |
899 | 900 | ||
900 | mcall 48,5 |
901 | mcall 48,5 |
901 | mov [warea.by_x],eax |
- | |
902 | mov [warea.by_y],ebx |
- | |
903 | - | ||
904 | mov eax,14 |
902 | mov [warea.by_x],eax |
905 | mcall |
903 | mov [warea.by_y],ebx |
906 | add eax,0x00010001 |
904 | |
907 | mov [scrxy],eax |
905 | mcall 14 |
908 | 906 | add eax,0x00010001 |
|
909 | apply_changes2: |
907 | mov [scrxy],eax |
910 | 908 | ;-------------------------------------- |
|
- | 909 | align 4 |
|
- | 910 | apply_changes2: |
|
911 | mov edi,[icons] |
911 | mov edi,[icons] |
912 | mov esi,icon_data |
912 | mov esi,icon_data |
913 | mov ebp,0x5000 ; threads stack starting point |
913 | mov ebp,0x5000 ; threads stack starting point |
914 | 914 | ;-------------------------------------- |
|
915 | start_new: |
915 | align 4 |
- | 916 | start_new: |
|
- | 917 | mov eax,[esi] |
|
916 | mov eax,[esi] |
918 | mov [ebp-20],eax |
917 | mov [ebp-20],eax |
919 | call calc_icon_pos |
918 | call calc_icon_pos |
- | |
919 | - | ||
920 | mov eax,51 |
920 | |
921 | mov ebx,1 |
921 | mov edx,ebp |
922 | mov ecx,thread |
922 | mov dword[ebp-4],esi |
- | 923 | mcall 51,1,thread |
|
- | 924 | add ebp,0x100 |
|
923 | mov edx,ebp |
925 | |
924 | mov dword[ebp-4],esi |
926 | mov eax,5 |
925 | mcall |
927 | mov ebx,1 |
- | 928 | ;-------------------------------------- |
|
926 | add ebp,0x100 |
929 | align 4 |
927 | 930 | wait_thread_start: ;wait until thread draw itself first time |
|
928 | mov eax,5 |
931 | cmp [create_thread_event],bl |
929 | mov ebx,1 |
932 | jz wait_thread_end |
930 | wait_thread_start: ;wait until thread draw itself first time |
933 | mcall |
931 | cmp [create_thread_event],bl |
934 | jmp wait_thread_start |
932 | jz wait_thread_end |
935 | ;-------------------------------------- |
933 | mcall |
936 | align 4 |
934 | jmp wait_thread_start |
- | |
935 | wait_thread_end: |
937 | wait_thread_end: |
- | 938 | dec [create_thread_event] ;reset event |
|
936 | dec [create_thread_event] ;reset event |
939 | add esi,REC_SIZE |
937 | - | ||
938 | 940 | dec edi |
|
939 | add esi,REC_SIZE |
- | |
940 | dec edi |
941 | jnz start_new |
941 | jnz start_new |
- | |
942 | close: |
942 | ;-------------------------------------- |
943 | or eax,-1 |
- | |
944 | mcall |
- | |
945 | - | ||
946 | thread: |
- | |
947 | ; pop ebp ;ebp - address of our icon |
- | |
948 | sub esp,12 |
- | |
949 | mov ebp,esp |
- | |
950 | sub esp,16 |
- | |
951 | call draw_window2 |
- | |
952 | mov [create_thread_event],1 |
- | |
953 | mov eax,40 |
- | |
954 | mov ebx,010101b |
943 | align 4 |
955 | mcall |
- | |
956 | - | ||
957 | still2: |
- | |
958 | mov eax,10 |
- | |
959 | mcall |
- | |
960 | - | ||
961 | cmp eax,1 |
- | |
962 | je red2 |
- | |
963 | cmp eax,3 |
- | |
964 | je button2 |
- | |
965 | - | ||
966 | call get_bg_info |
- | |
967 | mov eax,5 |
- | |
968 | mov ebx,1 |
- | |
969 | call draw_icon2 |
- | |
970 | - | ||
971 | jmp still2 |
- | |
972 | - | ||
973 | red2: |
- | |
974 | mcall 14 |
- | |
975 | add eax,0x00010001 |
- | |
976 | mov [scrxy],eax |
- | |
977 | mcall 48,5 |
- | |
978 | mov [warea.by_x],eax |
- | |
979 | mov [warea.by_y],ebx |
- | |
980 | add ebp,+12 |
- | |
Line -... | Line 944... | ||
- | 944 | close: |
|
- | 945 | or eax,-1 |
|
- | 946 | mcall |
|
- | 947 | ;------------------------------------------------------------------------------ |
|
- | 948 | align 4 |
|
- | 949 | thread: |
|
- | 950 | ; pop ebp ;ebp - address of our icon |
|
- | 951 | sub esp,12 |
|
- | 952 | mov ebp,esp |
|
- | 953 | sub esp,16 |
|
- | 954 | call draw_window2 |
|
- | 955 | mov [create_thread_event],1 |
|
- | 956 | mcall 40,010101b |
|
- | 957 | ;------------------------------------------------------------------------------ |
|
- | 958 | align 4 |
|
- | 959 | still2: |
|
- | 960 | mcall 10 |
|
- | 961 | cmp eax,1 |
|
- | 962 | je red2 |
|
- | 963 | ||
- | 964 | cmp eax,3 |
|
- | 965 | je button2 |
|
- | 966 | ||
- | 967 | call get_bg_info |
|
- | 968 | mov eax,5 |
|
- | 969 | mov ebx,1 |
|
- | 970 | call draw_icon2 |
|
- | 971 | ||
- | 972 | jmp still2 |
|
- | 973 | ;------------------------------------------------------------------------------ |
|
- | 974 | align 4 |
|
- | 975 | red2: |
|
- | 976 | mcall 14 |
|
- | 977 | add eax,0x00010001 |
|
- | 978 | mov [scrxy],eax |
|
- | 979 | mcall 48,5 |
|
- | 980 | mov [warea.by_x],eax |
|
- | 981 | mov [warea.by_y],ebx |
|
- | 982 | add ebp,+12 |
|
- | 983 | call calc_icon_pos |
|
- | 984 | add ebp,-12 |
|
- | 985 | mcall 9,I_END,-1 |
|
981 | call calc_icon_pos |
986 | mov eax,[I_END+process_information.box.left] |
982 | add ebp,-12 |
987 | cmp eax,[ebp+0] |
Line 983... | Line 988... | ||
983 | mcall 9,I_END,-1 |
988 | jne @f |
984 | mov eax,[I_END+process_information.box.left] |
989 | mov eax,[I_END+process_information.box.top] |
985 | cmp eax,[ebp+0] |
990 | cmp eax,[ebp+4] |
986 | jne @f |
991 | je .lp1 |
987 | mov eax,[I_END+process_information.box.top] |
992 | ;-------------------------------------- |
988 | cmp eax,[ebp+4] |
993 | align 4 |
989 | je .lp1 |
994 | @@: |
990 | @@: call get_bg_info |
995 | call get_bg_info |
991 | mcall 67,[ebp+0],[ebp+4],51,51 |
996 | mcall 67,[ebp+0],[ebp+4],51,51 |
992 | 997 | ;-------------------------------------- |
|
- | 998 | align 4 |
|
- | 999 | .lp1: |
|
993 | .lp1: |
1000 | call draw_window2 |
994 | call draw_window2 |
- | |
995 | jmp still2 |
1001 | jmp still2 |
996 | 1002 | ;------------------------------------------------------------------------------ |
|
997 | button2: |
1003 | align 4 |
998 | mov al,17 |
1004 | button2: |
999 | mcall |
1005 | mcall 17 |
1000 | 1006 | cmp ah, 2 |
|
1001 | cmp ah, 2 |
1007 | jnz still2 |
1002 | jnz still2 |
1008 | |
1003 | 1009 | mcall 9,I_END,-1 |
|
1004 | mcall 9,I_END,-1 |
1010 | mov ecx,[ebx+30] ; PID |
1005 | mov ecx,[ebx+30] ; PID |
1011 | mcall 18,21 |
- | 1012 | mov edx,eax ; SLOT |
|
- | 1013 | mcall 18,7 |
|
1006 | mcall 18,21 |
1014 | cmp edx,eax ; compare with active SLOT |
1007 | mov edx,eax ; SLOT |
1015 | jne @f |
1008 | mcall 18,7 |
- | |
1009 | cmp edx,eax ; compare with active SLOT |
1016 | mov ecx,edx |
1010 | jne @f |
1017 | mcall 18,1 ; set to down |
- | 1018 | call draw_window2 |
|
1011 | mov ecx,edx |
1019 | ;-------------------------------------- |
1012 | mcall 18,1 ; set to down |
1020 | align 4 |
1013 | call draw_window2 |
1021 | @@: |
1014 | @@: |
1022 | mov esi,[ebp+8] |
1015 | 1023 | mov ebx,1 |
|
1016 | mov esi,[ebp+8] |
1024 | mov edi,finfo.path |
1017 | mov ebx,1 |
1025 | call fill_paths |
1018 | mov edi,finfo.path |
1026 | inc ebx |
- | 1027 | mov edi,param_str |
|
1019 | call fill_paths |
1028 | mov dword[finfo_start+8],edi |
1020 | inc ebx |
1029 | call fill_paths |
1021 | mov edi,param_str |
1030 | cmp byte[edi],0 |
1022 | mov dword[finfo_start+8],edi |
1031 | jne .no0 |
1023 | call fill_paths |
1032 | and dword[finfo_start+8],0 |
1024 | cmp byte[edi],0 |
1033 | ;-------------------------------------- |
1025 | jne .no0 |
1034 | align 4 |
1026 | and dword[finfo_start+8],0 |
1035 | .no0: |
- | 1036 | mov ebx,finfo_start |
|
- | 1037 | mcall 70 |
|
1027 | .no0: |
1038 | jmp still2 |
1028 | mov ebx,finfo_start |
1039 | ;------------------------------------------------------------------------------ |
1029 | mov eax,70 |
1040 | align 4 |
1030 | mcall |
1041 | fill_paths: |
1031 | jmp still2 |
1042 | push esi edi |
- | 1043 | ; dps '>' |
|
- | 1044 | movzx ecx,byte[str_lens+ebx] |
|
1032 | 1045 | add esi,[positions+ebx*4] |
|
1033 | fill_paths: |
1046 | push esi |
1034 | push esi edi |
1047 | add esi,ecx |
1035 | ; dps '>' |
1048 | ;-------------------------------------- |
1036 | movzx ecx,byte[str_lens+ebx] |
1049 | align 4 |
1037 | add esi,[positions+ebx*4] |
1050 | .l1: |
- | 1051 | dec esi |
|
1038 | push esi |
1052 | cmp byte[esi],' ' |
1039 | add esi,ecx |
1053 | jnz .found |
1040 | 1054 | loop .l1 |
|
1041 | .l1: |
1055 | pop esi |
1042 | dec esi |
1056 | jmp .noms |
- | 1057 | ;-------------------------------------- |
|
- | 1058 | align 4 |
|
1043 | cmp byte[esi],' ' |
1059 | .found: |
1044 | jnz .found |
1060 | lea ecx,[esi+1] |
1045 | loop .l1 |
1061 | pop esi |
1046 | pop esi |
1062 | sub ecx,esi |
1047 | jmp .noms |
1063 | rep movsb |
1048 | .found: |
1064 | ;-------------------------------------- |
1049 | lea ecx,[esi+1] |
1065 | align 4 |
1050 | pop esi |
1066 | .noms: |
- | 1067 | and byte[edi],0 |
|
- | 1068 | ; call debug_outstr |
|
1051 | sub ecx,esi |
1069 | ; dps <'<',13,10> |
1052 | rep movsb |
1070 | pop edi esi |
- | 1071 | ret |
|
- | 1072 | ;-------------------------------------- |
|
1053 | .noms: |
1073 | align 4 |
1054 | and byte[edi],0 |
1074 | atoi: |
1055 | ; call debug_outstr |
1075 | push esi |
1056 | ; dps <'<',13,10> |
1076 | xor eax,eax |
- | 1077 | xor ebx,ebx |
|
1057 | pop edi esi |
1078 | ;-------------------------------------- |
1058 | ret |
1079 | align 4 |
1059 | 1080 | .nxt: |
|
1060 | atoi: |
1081 | lodsb |
1061 | push esi |
1082 | cmp al,'0' |
- | 1083 | jb .done |
|
- | 1084 | cmp al,'9' |
|
1062 | xor eax,eax |
1085 | ja .done |
1063 | xor ebx,ebx |
1086 | sub eax,'0' |
1064 | .nxt: |
1087 | ; multiply x10 |
1065 | lodsb |
1088 | shl ebx,1 ; multiply x2 |
1066 | cmp al,'0' |
1089 | lea ebx,[ebx+ebx*4] ; multiply x5 |
1067 | jb .done |
1090 | add ebx,eax |
1068 | cmp al,'9' |
1091 | jmp .nxt |
1069 | ja .done |
1092 | ;-------------------------------------- |
- | 1093 | align 4 |
|
1070 | sub eax,'0' |
1094 | .done: |
1071 | imul ebx,10 |
1095 | pop esi |
1072 | add ebx,eax |
1096 | mov eax,ebx |
1073 | jmp .nxt |
1097 | ret |
1074 | .done: |
1098 | ;-------------------------------------- |
1075 | pop esi |
1099 | align 4 |
1076 | mov eax,ebx |
1100 | itoa: |
1077 | ret |
1101 | add esi,2 |
1078 | 1102 | mov ebx,10 |
|
- | 1103 | mov ecx,3 |
|
- | 1104 | ;-------------------------------------- |
|
- | 1105 | align 4 |
|
1079 | itoa: |
1106 | .l0: |
1080 | add esi,2 |
1107 | xor edx,edx |
1081 | mov ebx,10 |
1108 | div ebx |
1082 | mov ecx,3 |
1109 | add dl,'0' |
1083 | .l0: |
1110 | mov [esi],dl |
1084 | xor edx,edx |
1111 | dec esi |
- | 1112 | loop .l0 |
|
- | 1113 | ret |
|
- | 1114 | ;------------------------------------------------------------------------------ |
|
1085 | div ebx |
1115 | align 4 |
1086 | add dl,'0' |
1116 | draw_picture: |
1087 | mov [esi],dl |
1117 | mov [image],0x3000 |
1088 | dec esi |
1118 | mov edi,[ebp+8] |
1089 | loop .l0 |
1119 | lea esi,[edi+12] |
1090 | ret |
1120 | call atoi |
1091 | 1121 | cmp eax,[icon_count] |
|
1092 | draw_picture: |
1122 | ja toponly.ex |
1093 | mov [image],0x3000 |
1123 | ; imul eax,(32*3*32) |
1094 | mov edi,[ebp+8] |
1124 | lea eax,[eax+eax*2] ; multiply x3 |
1095 | lea esi,[edi+12] |
1125 | shl eax,10 ; multiply x1024 |
1096 | call atoi |
1126 | |
1097 | cmp eax,[icon_count] |
1127 | lea edi,[eax+strip_file+8] |
1098 | ja toponly.ex |
1128 | xor ebx,ebx |
- | 1129 | xor ecx,ecx |
|
1099 | imul eax,(32*3*32) |
1130 | mov esi,edi;strip_file+8+(32*3*32)*2 |
1100 | lea edi,[eax+strip_file+8] |
1131 | |
1215 | cmp [top],1 |
1243 | jne notop |
1216 | jne notop |
- | |
1217 | cmp ecx,38 |
1244 | |
1218 | je toponly |
1245 | cmp ecx,38 |
1219 | 1246 | je toponly |
|
1220 | notop: |
1247 | ;-------------------------------------- |
1221 | 1248 | align 4 |
|
1222 | cmp ecx,52 |
1249 | notop: |
1223 | jnz newb |
1250 | cmp ecx,52 |
- | 1251 | jnz newb |
|
- | 1252 | ;-------------------------------------- |
|
- | 1253 | align 4 |
|
1224 | 1254 | toponly: |
|
1225 | toponly: |
1255 | xor edx,edx |
- | 1256 | mcall 7,0x3000,<52,52> |
|
- | 1257 | ;-------------------------------------- |
|
1226 | 1258 | align 4 |
|
1227 | mov eax,7 |
1259 | .ex: |
1228 | mov ebx,0x3000 |
1260 | mov [load_pic],0 |
1229 | mov ecx,52 shl 16 + 52 |
1261 | ret |
1230 | xor edx,edx |
1262 | ;------------------------------------------------------------------------------ |
1231 | mcall |
1263 | align 4 |
- | 1264 | draw_text: |
|
- | 1265 | mov esi,[ebp+8] |
|
1232 | .ex: |
1266 | add esi,3 |
1233 | mov [load_pic],0 |
1267 | push edi |
1234 | ret |
1268 | mov edi,title |
1235 | 1269 | ; mov ecx,8 |
|
1236 | draw_text: |
1270 | ; cld |
1237 | 1271 | ; rep movsb |
|
1238 | mov esi,[ebp+8] |
1272 | mov ecx,8/4 |
1239 | add esi,3 |
1273 | cld |
1240 | push edi |
1274 | rep movsd |
1241 | mov edi,title |
1275 | pop edi |
1242 | mov ecx,8 |
1276 | mov eax,title |
1243 | cld |
- | |
1244 | rep movsb |
1277 | ;-------------------------------------- |
1245 | pop edi |
- | |
1246 | mov eax,title |
- | |
1247 | news2: |
1278 | align 4 |
1248 | cmp [eax],byte 33 |
1279 | news2: |
- | 1280 | cmp [eax],byte 33 |
|
1249 | jb founde |
1281 | jb founde |
1250 | inc eax |
1282 | inc eax |
- | 1283 | cmp eax,title+8 ;11 |
|
1251 | cmp eax,title+8;11 |
1284 | jb news2 |
1252 | jb news2 |
1285 | ;-------------------------------------- |
- | 1286 | align 4 |
|
1253 | founde: |
1287 | founde: |
1254 | sub eax,title |
1288 | sub eax,title |
- | 1289 | mov [tl],eax |
|
1255 | mov [tl],eax |
1290 | |
1256 | 1291 | mov eax,[tl] |
|
- | 1292 | lea eax,[eax+eax*2] ; eax *= char_width/2 |
|
1257 | mov eax,[tl] |
1293 | shl eax,16 |
1258 | lea eax,[eax+eax*2] ; eax *= char_width/2 |
1294 | |
1259 | shl eax,16 |
1295 | mov ebx,27 shl 16+40 |
- | 1296 | sub ebx,eax |
|
1260 | 1297 | ||
1261 | mov ebx,27*65536+40 |
1298 | xor ecx,ecx ; black shade of text |
1262 | sub ebx,eax |
1299 | add ebx,1 shl 16 ;*65536+1 |
- | 1300 | mcall 4,,,title,[tl] |
|
1263 | 1301 | ||
1264 | mov eax,4 |
1302 | inc ebx |
1265 | xor ecx,ecx ; black shade of text |
1303 | mcall |
1266 | mov edx,title |
- | |
1267 | mov esi,[tl] |
- | |
1268 | add ebx,1 shl 16 ;*65536+1 |
1304 | |
1269 | mcall |
1305 | add ebx,1 shl 16 |
- | 1306 | mcall |
|
1270 | inc ebx |
1307 | |
1271 | mcall |
1308 | inc ebx |
1272 | add ebx,1 shl 16 |
- | |
- | 1309 | mcall |
|
1273 | mcall |
1310 | |
1274 | inc ebx |
1311 | sub ebx,1 shl 16 |
1275 | mcall |
1312 | mcall |
1276 | sub ebx,1 shl 16 |
- | |
1277 | mcall |
1313 | |
1278 | dec ebx |
1314 | dec ebx |
- | 1315 | sub ebx,1 shl 16 |
|
Line 1279... | Line -... | ||
1279 | sub ebx,1 shl 16 |
- | |
1280 | mcall |
- | |
1281 | sub ebx,1 shl 16 |
- | |
1282 | dec ebx |
- | |
1283 | mcall |
1316 | mcall |
1284 | dec ebx |
1317 | |
1285 | add ebx,1 shl 16 |
1318 | sub ebx,1 shl 16 |
1286 | mcall |
1319 | dec ebx |
1287 | inc ebx |
1320 | mcall |
1288 | mov ecx,0xffffff |
1321 | |
1289 | 1322 | dec ebx |
|
1290 | mcall |
1323 | add ebx,1 shl 16 |
1291 | mov [draw_pic],0 |
1324 | mcall |
1292 | ret |
1325 | |
1293 | - | ||
1294 | ; ********************************************* |
- | |
1295 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
- | |
1296 | ; ********************************************* |
- | |
1297 | 1326 | inc ebx |
|
1298 | 1327 | mcall ,,0xffffff |
|
1299 | draw_window2: |
1328 | mov [draw_pic],0 |
- | 1329 | ret |
|
- | 1330 | ;------------------------------------------------------------------------------ |
|
1300 | 1331 | ; ********************************************* |
|
1301 | mov eax,12 ; function 12:tell os about windowdraw |
1332 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
1302 | mov ebx,1 ; 1, start of draw |
1333 | ; ********************************************* |
1303 | mcall |
1334 | align 4 |
1304 | 1335 | draw_window2: |
|
1305 | ; DRAW WINDOW |
1336 | mcall 12,1 |
- | 1337 | ||
- | 1338 | ; DRAW WINDOW |
|
1306 | xor eax,eax ; function 0 : define and draw window |
1339 | xor eax,eax ; function 0 : define and draw window |
1307 | mov ebx,[ebp+0-2] |
- | |
1308 | mov ecx,[ebp+4-2] |
1340 | mov ebx,[ebp+0-2] |
1309 | add ebx,[yw] ; [x start] *65536 + [x size] |
1341 | mov ecx,[ebp+4-2] |
- | 1342 | add ebx,[yw] ; [x start] *65536 + [x size] |
|
- | 1343 | add ecx,51 ; [y start] *65536 + [y size] |
|
1310 | add ecx,51 ; [y start] *65536 + [y size] |
1344 | mov edx,0x41000000 ; color of work area RRGGBB,8->color gl |
1311 | mov edx,0x41000000 ; color of work area RRGGBB,8->color gl |
1345 | mcall |
1312 | mcall |
1346 | |
1313 | 1347 | mcall 8,51,50,0x40000002 ; button |
|
1314 | mov eax,8 ; button |
1348 | |
1315 | mov ebx,51 |
1349 | mov eax,5 |
- | 1350 | mov ebx,1 |
|
- | 1351 | ;-------------------------------------- |
|
1316 | mov ecx,50 |
1352 | align 4 |
- | 1353 | draw_icon2: |
|
- | 1354 | xchg [load_pic],bl |
|
- | 1355 | test bl,bl |
|
- | 1356 | je draw_icon_end |
|
- | 1357 | mcall |
|
- | 1358 | jmp draw_icon2 |
|
- | 1359 | ;-------------------------------------- |
|
- | 1360 | align 4 |
|
- | 1361 | draw_icon_end: |
|
- | 1362 | mov eax,5 |
|
- | 1363 | mov ebx,1 |
|
- | 1364 | ;-------------------------------------- |
|
- | 1365 | align 4 |
|
- | 1366 | draw_icon_2: |
|
Line 1317... | Line -... | ||
1317 | mov edx,0x40000002 |
- | |
1318 | mcall |
- | |
1319 | - | ||
1320 | mov eax,5 |
- | |
1321 | mov ebx,1 |
- | |
1322 | draw_icon2: |
- | |
1323 | xchg [load_pic],bl |
- | |
1324 | test bl,bl |
- | |
1325 | je draw_icon_end |
- | |
1326 | mcall |
- | |
1327 | jmp draw_icon2 |
- | |
1328 | draw_icon_end: |
- | |
1329 | - | ||
1330 | mov eax,5 |
- | |
1331 | mov ebx,1 |
- | |
1332 | draw_icon_2: |
- | |
1333 | xchg [draw_pic],bl |
- | |
1334 | test bl,bl |
- | |
1335 | je draw_icon_end_2 |
- | |
1336 | mcall |
- | |
1337 | jmp draw_icon_2 |
- | |
1338 | draw_icon_end_2: |
- | |
1339 | - | ||
1340 | mov eax,9 |
- | |
1341 | mov ebx,process_table |
1367 | xchg [draw_pic],bl |
Line 1342... | Line 1368... | ||
1342 | mov ecx,-1 |
1368 | test bl,bl |
1343 | mcall |
1369 | je draw_icon_end_2 |
- | 1370 | mcall |
|
1344 | 1371 | jmp draw_icon_2 |
|
Line 1345... | Line 1372... | ||
1345 | call draw_picture |
1372 | ;-------------------------------------- |
1346 | call draw_text |
1373 | align 4 |
1347 | 1374 | draw_icon_end_2: |
|
Line 1348... | Line 1375... | ||
1348 | mov eax,12 |
1375 | mcall 9,process_table,-1 |
Line 1349... | Line 1376... | ||
1349 | mov ebx,2 |
1376 | call draw_picture |
1350 | mcall |
1377 | call draw_text |
1351 | 1378 | mcall 12,2 |
|
1352 | ret |
1379 | ret |
1353 | 1380 | ;------------------------------------------------------------------------------ |
|
1354 | tl dd 8 |
1381 | tl dd 8 |
1355 | yw dd 51 |
1382 | yw dd 51 |
1356 | ya dd 0 |
1383 | ya dd 0 |
1357 | cur_btn dd 40 |
1384 | cur_btn dd 40 |
1358 | 1385 | ||
1359 | draw_pic db 0 |
1386 | draw_pic db 0 |
1360 | load_pic db 0 |
1387 | load_pic db 0 |
1361 | create_thread_event db 0 |
1388 | create_thread_event db 0 |
1362 | 1389 | ||
1363 | 1390 | image dd 0x3000 |
|
1364 | image dd 0x3000 |
1391 | |
1365 | 1392 | I_Param: |
|
1366 | I_Param: |
1393 | icon_data = I_END+0x1400 |
1367 | icon_data = I_END+0x1400 |
1394 | stack_area = I_END+0x3400-4 |
1368 | process_table = I_END+0x2400 |
1395 | process_table = I_END+0x3400 |
1369 | 1396 | ||
Line 1370... | Line 1397... | ||
1370 | bgrx dd ? |
1397 | bgrx dd ? |
Line 1371... | Line 1398... | ||
1371 | bgry dd ? |
1398 | bgry dd ? |
- | 1399 | param_str rb 31 |
|
1372 | param_str rb 31 |
1400 |