Subversion Repositories Kolibri OS

Rev

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