Subversion Repositories Kolibri OS

Rev

Rev 2469 | Rev 2476 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
51 mikedld 1
;********************************
2
;*                              *
3
;*     DESKTOP ICON MANAGER     *
4
;*                              *
5
;*  Compile with flat assembler *
6
;*                              *
7
;********************************
2475 mario79 8
;---------------------------------------------------------------------
9
; version:	2.1
10
; last update:  17/03/2012
11
; changed by:   Marat Zakiyanov aka Mario79, aka Mario
12
; changes:      Global optimization! The program uses
13
;               only 161 KB of memory instead of 603 kb is now.
14
;---------------------------------------------------------------------
15
; version:	2.02
16
; last update:  15/03/2012
17
; changed by:   Marat Zakiyanov aka Mario79, aka Mario
18
; changes:      some optimisations and code refactoring
19
;---------------------------------------------------------------------
20
; version:	2.01
21
; last update:  27/09/2011
22
; changed by:   Marat Zakiyanov aka Mario79, aka Mario
23
; changes:      deactivate the window after click
24
;              (working to kernel r.2244 and above)
25
;---------------------------------------------------------------------
26
; Many fix's and changes created by:
27
;               Halyavin, Diamond, Heavyiron,
28
;               SPraid, Dunkaist
29
;---------------------------------------------------------------------
30
; version:	2.00
31
; last update:  22|02|2005
32
; changed by:   Willow and Mario79
33
; changes:      modified for work with new multi-thread ICON.
51 mikedld 34
;******************************************************************************
35
ICON_SIZE equ 32*32*3
2475 mario79 36
RAW_SIZE equ ICON_SIZE*32	;350000
37
GIF_SIZE equ 12*1024	;45000
51 mikedld 38
REC_SIZE equ 80
529 spraid 39
ICONS_DAT equ '/sys/ICONS.DAT'
40
ICON_APP equ '/sys/ICON'
41
ICON_STRIP equ '/sys/ICONSTRP.GIF'
2469 mario79 42
;------------------------------------------------------------------------------
43
	use32
44
	org 0x0
2475 mario79 45
	db 'MENUET01'	; 8 byte id
46
	dd 0x01		; header version
47
	dd START	; start of code
48
	dd IM_END	; size of image
49
	dd I_END	; memory for app
50
	dd stack_area	; esp
51
	dd I_Param	; boot parameters
52
	dd 0x0		; path
2469 mario79 53
;------------------------------------------------------------------------------
54
include '../../../macros.inc'
55
include 'lang.inc'
51 mikedld 56
COLOR_ORDER equ MENUETOS
2469 mario79 57
include 'gif_lite.inc'
58
;include 'debug.inc'
51 mikedld 59
purge newline
2469 mario79 60
;------------------------------------------------------------------------------
2475 mario79 61
START:		; start of execution
2469 mario79 62
	mcall	70,finfo
63
	cmp	ebx,GIF_SIZE
64
	ja	close
65
	mov	esi,gif_file
66
	mov	edi,strip_file
67
	mov	eax,icon_data
68
	call	ReadGIF
69
	mov	eax,dword[edi+4]
70
	shr	eax,5
71
	mov	[icon_count],eax
72
	call	load_ic
73
boot_str:
74
	cmp	[I_Param],dword 'BOOT'
75
	je	load_icon_list2
76
	call	load_icon_list
77
red:
2475 mario79 78
	call	draw_window	; at first, draw the window
2469 mario79 79
	mov	esi,[current_icon]
80
	jmp	band
81
;------------------------------------------------------------------------------
82
align 4
51 mikedld 83
still:
2469 mario79 84
	mcall	10	; wait here for event
2475 mario79 85
	dec	eax	; redraw request ?
2469 mario79 86
	jz	red
87
 
2475 mario79 88
	dec	eax	; key in buffer ?
2469 mario79 89
	jz	key
90
;------------------------------------------------------------------------------
91
align 4
2475 mario79 92
button:
2469 mario79 93
	mcall	17	; get id
94
	shr	eax,8
51 mikedld 95
 
2469 mario79 96
;	dps	"button id: "
97
;	dpd	eax
98
;	newline_1
2475 mario79 99
 
100
	cmp	eax,1	; button id=1 ?
2469 mario79 101
	je	close
102
;--------------------------------------
103
align 4
104
noclose:
105
	mov	esi,[current_icon]
106
	add	esi,12
107
	mov	ebx,[cur_band]	;eax
108
	cmp	eax,31	; right arrow to icons bar
109
	jne	.no_back
51 mikedld 110
 
2469 mario79 111
	add	ebx,8
112
	mov	eax,[icon_count]
113
	cmp	eax,ebx
114
	jae	.drwic2
51 mikedld 115
 
2469 mario79 116
	xor	ebx,ebx
117
	jmp	.drwic2
118
;--------------------------------------
119
align 4
120
.no_back:
121
	cmp	eax,30	; left arrow to icons bar
122
	jne	.no_side
51 mikedld 123
 
2469 mario79 124
	test	ebx,ebx
125
	jnz	.dec
51 mikedld 126
 
2469 mario79 127
	mov	ebx,[icon_count]
128
	and	ebx,0xfffffff8
129
	add	ebx,8
130
;--------------------------------------
131
align 4
132
.dec:
133
	sub	ebx,8
134
;--------------------------------------
135
align 4
136
.drwic2:
137
	mov	[cur_band],ebx
138
;--------------------------------------
139
align 4
140
.drwic1:
141
	call	draw_icon
142
	jmp	still
143
;--------------------------------------
144
align 4
145
.no_side:
146
	cmp	eax,32
147
	jne	.no_ico
148
	push	ebx
149
	mcall	37,1
150
	pop	ebx
151
	shr	eax,16
152
	sub	eax,33-19
153
	mov	edi,34
154
	xor	edx,edx
155
	div	edi
156
	lea	ecx,[ebx+eax]
157
	cmp	ecx,[icon_count]
158
	jae	still
51 mikedld 159
 
2469 mario79 160
	mov	[sel_icon1],eax
161
	mov	ecx,eax
162
	add	eax,ebx
163
	call	itoa
164
	jmp	.drwic1
165
;--------------------------------------
166
align 4
167
.no_ico:
168
	cmp	eax,11
169
	jb	no_str
170
	cmp	eax,13
171
	jg	no_str
172
	call	read_string
173
	jmp	still
174
;--------------------------------------
2475 mario79 175
align 4
2469 mario79 176
no_str:
2475 mario79 177
	cmp	eax,21	; apply changes
2469 mario79 178
	jne	no_apply
179
	; (1) save list
180
	mov	ebx,finfo	; Change by spraid
181
	mov	dword[ebx],2
182
	mov	edx,REC_SIZE
183
	imul	edx,dword [icons]
184
	mov	[ebx+12],edx
185
	mov	esi,iconlst
186
	call	lst_path
187
	mcall	70
188
	; (2) terminate all icons
2475 mario79 189
	or	ecx,-1
190
	mcall	9,process_table
2469 mario79 191
	mov	edi,[ebx+30]
192
;--------------------------------------
193
align 4
194
newread2:
195
	mov	esi,1
196
;--------------------------------------
197
align 4
198
newread:
199
	inc	esi
200
	mov	ecx,esi
2475 mario79 201
	mcall	9,process_table
2469 mario79 202
	cmp	edi,[ebx+30]
203
	je	newread
51 mikedld 204
 
2469 mario79 205
	cmp	esi,eax
2475 mario79 206
	jg	apply_changes
51 mikedld 207
 
2475 mario79 208
	mov	eax,[ebx+10]
2469 mario79 209
	and	eax,not 20202020h
210
	cmp	eax,'@ICO'
211
	jz	@f
212
	cmp	eax,'ICON'
213
	jne	newread
214
;--------------------------------------
215
align 4
216
@@:
217
	mov	eax,51
2475 mario79 218
	cmp	eax,[ebx+42]
2469 mario79 219
	jne	newread
51 mikedld 220
 
2475 mario79 221
	cmp	eax,[ebx+46]
2469 mario79 222
	jne	newread
51 mikedld 223
 
2469 mario79 224
	mov	ecx,esi
225
	mcall	18,2
226
	jmp	newread2
227
;------------------------------------------------------------------------------
228
align 4
184 heavyiron 229
finfo_start:
2475 mario79 230
	dd 7
231
	dd 0
232
.params	dd 0
233
	dd 0
234
	dd 0
235
	db 0
236
	dd finfo.path
2469 mario79 237
;------------------------------------------------------------------------------
238
align 4
51 mikedld 239
finfo:
2475 mario79 240
	dd 0
241
	dd 0
242
	dd 0
243
	dd GIF_SIZE
244
	dd gif_file
2469 mario79 245
.path:
2475 mario79 246
	db ICON_STRIP,0
247
	rb 31-($-.path)
2469 mario79 248
;------------------------------------------------------------------------------
249
align 4
2475 mario79 250
apply_changes:
2469 mario79 251
	mov	ebx, finfo_start
252
	mov	dword [ebx+8], boot_str+6
253
	mov	esi, iconname
254
	call	lst_path
255
	mcall	70
256
	jmp	still
257
;------------------------------------------------------------------------------
258
align 4
259
no_apply:
2475 mario79 260
	cmp	eax,22		; user pressed the 'add icon' button
2469 mario79 261
	jne	no_add_icon
51 mikedld 262
 
2469 mario79 263
	mov	ebx,24*65536+250+8*14
264
	mcall	4,,0xc0ff0000,add_text,,0xffffff
408 halyavin 265
 
2469 mario79 266
	mcall	10
267
	cmp	eax,3
268
	jne	still
51 mikedld 269
 
2469 mario79 270
	mcall	17
271
	shr	eax,8
272
	cmp	eax,40
273
	jb	no_f
274
	mov	edi,eax
275
	sub	eax,40
276
 
2475 mario79 277
	xor	edx,edx		; bcd -> 10
2469 mario79 278
	mov	ebx,16
279
	div	ebx
280
; multiply x10
281
	shl	eax,1		; multiply x2
282
	lea	eax,[eax+eax*4] ; multiply x5
283
	add	eax,edx
284
 
285
	mov	ebx,eax
286
	add	ebx,icons_reserved
287
	cmp	[ebx],byte 'x'
288
	je	no_f
289
	mov	[ebx],byte 'x'
290
 
291
	mov	[cur_btn],edi
292
	xor	edx,edx
293
	mov	ebx,10
294
	div	ebx
295
	add	eax,65
296
	add	edx,65
297
	mov	[icon_default+0],dl
298
	mov	[icon_default+1],al
299
 
300
	inc	dword [icons]
301
	mov	edi,[icons]
302
	dec	edi
303
	imul	edi,REC_SIZE
304
	add	edi,icon_data
305
 
306
	mov	[current_icon],edi
51 mikedld 307
 
2469 mario79 308
	mov	esi,icon_default
309
	mov	ecx,REC_SIZE
310
	cld
311
	rep	movsb
312
	mov	esi,[current_icon]
313
	jmp	band
314
;--------------------------------------
315
align 4
316
no_f:
317
	call	draw_btns	;draw_window
318
	jmp	still
319
;--------------------------------------
320
align 4
321
no_add_icon:
2475 mario79 322
	cmp	eax,23	; user pressed the remove icon button
2469 mario79 323
	jne	no_remove_icon
324
 
325
	mov	ebx,24*65536+250+8*14
326
	mcall	4,,0xc0ff0000,rem_text,,0xffffff
327
 
328
	mcall	10
329
	cmp	eax,3
330
	jne	no_f;ound
51 mikedld 331
 
2469 mario79 332
	mcall	17
333
	shr	eax,8
334
	cmp	eax,40
2475 mario79 335
	jb	red
2469 mario79 336
	sub	eax,40
337
 
338
	xor	edx,edx
339
	mov	ebx,16
340
	div	ebx
341
; multiply x10
342
	shl	eax,1		; multiply x2
343
	lea	eax,[eax+eax*4] ; multiply x5
344
	add	eax,edx
345
 
346
	mov	ebx,eax
347
	add	ebx,icons_reserved
348
	cmp	[ebx],byte 'x'
349
	jne	red
350
	mov	[ebx],byte ' '
351
 
352
	xor	edx,edx
353
	mov	ebx,10
354
	div	ebx
355
	shl	eax,8
356
	mov	al,dl
357
 
358
	add	eax,65*256+65
359
 
360
	mov	esi,icon_data
361
	mov	edi,REC_SIZE
362
	imul	edi,[icons]
363
	add	edi,icon_data
364
;--------------------------------------
365
align 4
366
news:
367
	cmp	word [esi],ax
368
	je	foundi
369
	add	esi,REC_SIZE
370
	cmp	esi,edi
371
	jb	news
372
	jmp	red
373
;--------------------------------------
374
align 4
375
foundi:
376
	mov	ecx,edi
377
	sub	ecx,esi
378
 
379
	mov	edi,esi
380
	add	esi,REC_SIZE
381
 
382
	cld
383
	rep	movsb
384
 
385
	dec	[icons]
386
 
387
	mov	eax,icon_data
388
	mov	[current_icon],eax
389
	movzx	ebx,word[eax]
390
	sub	bx,'AA'
391
	shl	bl,4
392
	shr	ebx,4
393
	add	ebx,40
394
	mov	[cur_btn],ebx
395
	jmp	red
396
;--------------------------------------
397
align 4
398
no_remove_icon:
2475 mario79 399
	cmp	eax,40	; user pressed button for icon position
2469 mario79 400
	jb	still
401
	mov	edi,eax
402
	sub	eax,40
403
	mov	edx,eax
404
	shl	eax,4
405
	and	edx,0xf
406
	mov	dh,ah
407
	add	edx,65*256+65
408
	mov	esi,icon_data
409
	mov	ecx,[icons]
410
	cld
411
;--------------------------------------
412
align 4
413
findl1:
414
	cmp	dx,[esi]
415
	je	foundl1
416
	add	esi,REC_SIZE
417
	loop	findl1
418
	jmp	still
419
;--------------------------------------
420
align 4
421
foundl1:
422
	mov	[current_icon],esi
423
	mov	[cur_btn],edi
424
;--------------------------------------
425
align 4
426
band:
427
	add	esi,12
428
	call	atoi
429
	and	eax,0xfffff8
430
	mov	[cur_band],eax
431
	call	draw_btns
432
	jmp	still
433
;------------------------------------------------------------------------------
434
current_icon	dd icon_data
435
;------------------------------------------------------------------------------
436
align 4
51 mikedld 437
print_strings:
2469 mario79 438
	pusha
439
	mcall	13,<100,180>,<278+12,40>,0xffffff	; clear text area
440
	xor	edi,edi
2475 mario79 441
	mov	eax,4		; icon text
2469 mario79 442
	mov	ebx,100*65536+278+14
443
	mov	ecx,3
444
;--------------------------------------
445
align 4
446
.ll:
447
	push	ecx
448
	mov	ecx,0x000000
449
	mov	edx,[current_icon]
450
	add	edx,[positions+edi*4]
451
	movzx	esi,byte[str_lens+edi]
452
	inc	edi
453
	mcall
454
	add	ebx,14
455
	pop	ecx
456
	loop	.ll
51 mikedld 457
 
2469 mario79 458
	popa
459
	ret
460
;------------------------------------------------------------------------------
461
iconlst	db ICONS_DAT,0
462
;------------------------------------------------------------------------------
463
align 4
51 mikedld 464
load_icon_list:
2475 mario79 465
	mov	edi,icons_reserved	; clear reserved area
2469 mario79 466
	mov	eax,32
467
	mov	ecx,10*9
468
	cld
469
	rep	stosb
51 mikedld 470
 
2475 mario79 471
	mov	ecx,[icons]	; set used icons to reserved area
2469 mario79 472
	mov	esi,icon_data
473
;--------------------------------------
474
align 4
475
ldl1:
476
	movzx	ebx,byte [esi+1]
477
	sub	ebx,65
478
;	imul	ebx,10
479
; multiply x10
480
	shl	ebx,1		; multiply x2
481
	lea	ebx,[ebx+ebx*4] ; multiply x5
482
	movzx	eax,byte [esi]
483
	add	ebx,eax
484
	sub	ebx,65
485
	add	ebx,icons_reserved
486
	mov	[ebx],byte 'x'
487
	add	esi,REC_SIZE
488
	loop	ldl1
489
	ret
490
;------------------------------------------------------------------------------
491
align 4
51 mikedld 492
lst_path:
2469 mario79 493
	mov	ecx,30
494
	mov	edi,finfo.path
495
	rep	movsb
496
	ret
497
;------------------------------------------------------------------------------
498
align 4
51 mikedld 499
load_ic:
2469 mario79 500
	mov	ebx,finfo
501
	mov	dword[ebx+12],48*REC_SIZE
502
	mov	dword[ebx+16],icon_data
503
	mov	esi,iconlst
504
	call	lst_path
505
	mcall	70
506
	lea	eax,[ebx+10]
507
	xor	edx,edx
508
	mov	ebx,REC_SIZE
509
	div	ebx
510
	mov	[icons],eax
511
	ret
512
;------------------------------------------------------------------------------
513
align 4
514
positions	dd 3,16,47
515
str_lens	db 8,30,30
516
;------------------------------------------------------------------------------
517
align 4
51 mikedld 518
read_string:
2469 mario79 519
	pusha
520
	sub	eax,11
521
	movzx	ecx,byte[str_lens+eax]
522
	mov	[cur_str],ecx
523
	mov	eax,[positions+eax*4]
524
	mov	edi,[current_icon]
525
	add	edi,eax
526
	mov	[addr],edi
527
	add	edi,ecx
528
;--------------------------------------
529
align 4
530
.l1:
531
	dec	edi
532
	cmp	byte[edi],' '
533
	jne	.found
51 mikedld 534
 
2469 mario79 535
	mov	byte[edi],'_'
536
	loop	.l1
51 mikedld 537
 
2469 mario79 538
	dec	edi
539
;--------------------------------------
540
align 4
541
.found:
542
	inc	edi
543
	push	edi
544
	call	print_strings
545
	pop	edi
546
;--------------------------------------
547
align 4
548
f11:
549
	mcall	10
550
	cmp	eax,2
551
	jz	fbu
552
	jmp	rs_done
553
;--------------------------------------
554
align 4
555
fbu:
556
	mcall	2
557
	shr	eax,8
558
	cmp	eax,13
559
	je	rs_done
560
	cmp	eax,8
561
	jnz	nobsl
562
	cmp	edi,[addr]
563
	jz	f11
564
	dec	edi
565
	mov	[edi],byte '_'
566
	call	print_strings
567
	jmp	f11
568
;--------------------------------------
569
align 4
570
nobsl:
571
	cmp	eax,31
572
	jbe	f11
573
	mov	[edi],al
574
	call	print_strings
575
	inc	edi
576
	mov	esi,[addr]
577
	add	esi,[cur_str]
578
	cmp	esi,edi
579
	jnz	f11
580
;--------------------------------------
581
align 4
582
rs_done:
583
	mov	ecx,[addr]
584
	add	ecx,[cur_str]
585
	sub	ecx,edi
586
	mov	eax,32
587
	cld
588
	rep	stosb
589
	call	print_strings
590
	popa
591
	ret
592
;------------------------------------------------------------------------------
593
align 4
2475 mario79 594
key:
595
	mcall	2	; just read it and ignore
2469 mario79 596
	jmp	still
597
;------------------------------------------------------------------------------
51 mikedld 598
;   *********************************************
599
;   *******  WINDOW DEFINITIONS AND DRAW ********
600
;   *********************************************
2469 mario79 601
align 4
51 mikedld 602
draw_window:
2469 mario79 603
	mcall	12,1
2475 mario79 604
	; DRAW WINDOW
2469 mario79 605
	xor	eax,eax
606
	xor	esi,esi
607
	mcall	,<210,300>,<30,(390-14)>,0x14ffffff,,title
51 mikedld 608
 
2469 mario79 609
	mcall	13,<20,260>,<35,200>,0x3366cc	; WINDOW AREA
51 mikedld 610
 
2469 mario79 611
	mcall	38,<150,150>,<35,235>,0xffffff	; VERTICAL LINE ON WINDOW AREA
51 mikedld 612
 
2469 mario79 613
	mcall	,<20,280>,<135,135>	; HOROZONTAL LINE ON WINDOW AREA
51 mikedld 614
 
2469 mario79 615
	mcall	8,<20,72>,<(275+1+14),(13-2)>,11,[bcolor]	;id 11 TEXT ENTER BUTTONS
616
 
617
	inc	edx
618
	add	ecx,14*65536
619
	mcall			; id 12
620
 
621
	inc	edx
622
	add	ecx,14*65536
623
	mcall			; id 13
51 mikedld 624
 
2469 mario79 625
	mcall	,<20,259>,<(329+2),(15-4)>,21	; id 21 APPLY AND SAVE CHANGES BUTTON
51 mikedld 626
 
2469 mario79 627
	add	ecx,14*65536
628
	inc	edx
629
	mcall	,<20,(129-2)>	; id 22 ADD ICON BUTTON
51 mikedld 630
 
2469 mario79 631
	add	ebx,(130+2)*65536
632
	inc	edx
633
	mcall			; id 23 REMOVE ICON BUTTON
51 mikedld 634
 
2469 mario79 635
	mcall	,<(20-14),8>,<(260-23),32>,30 + 1 shl 30	; id 30 IMAGE BUTTON
51 mikedld 636
 
2469 mario79 637
	inc	edx
638
	add	ebx,(36*7+26) shl 16
639
	mcall		; id 31
51 mikedld 640
 
2469 mario79 641
	add	edx,1 + 1 shl 29
642
	mcall	,<(33-19),(34*8)>	; id 32
643
 
644
	mcall	4,<(23-15),(273-24)>,0,arrows,1
51 mikedld 645
 
2469 mario79 646
	add	ebx,(36*7+27)shl 16
647
	add	edx,2
648
	mcall
51 mikedld 649
 
2469 mario79 650
	dec	edx
651
	mcall	,<120,250>
51 mikedld 652
 
2469 mario79 653
	lea	edx,[ebx+8 shl 16]
654
	mcall	47,0x30000,[icon_count],,0
51 mikedld 655
 
2469 mario79 656
	mov	eax,4
657
	mov	ebx,24 shl 16+(250+14+14+14)
658
	mov	ecx,0xffffff
659
	mov	edx,text
660
	mov	esi,47
661
;--------------------------------------
662
align 4
663
newline:
664
	mov	ecx,[edx]
665
	add	edx,4
666
	mcall
667
	add	ebx,14
668
	add	edx,47
669
	cmp	[edx],byte 'x'
670
	jne	newline
671
;--------------------------------------
672
align 4
673
draw_btns:
2475 mario79 674
	mov	eax,0	; DRAW BUTTONS ON WINDOW AREA
2469 mario79 675
	mov	ebx,20 shl 16+25
676
	mov	ecx,35 shl 16+19
677
	mov	edi,icon_table
678
	mov	edx,40
679
;--------------------------------------
680
align 4
681
newbline:
682
	cmp	[edi],byte 'x'
683
	jne	no_button
51 mikedld 684
 
2469 mario79 685
	mov	esi,0x5577cc
686
	cmp	[edi+90],byte 'x'
687
	jne	nores
51 mikedld 688
 
2469 mario79 689
	mov	esi,0xcc5555
690
	cmp	edx,[cur_btn]
691
	jne	nores
51 mikedld 692
 
2469 mario79 693
	mov	esi,0xe7e05a
694
;--------------------------------------
695
align 4
696
nores:
697
	push	eax
698
	mcall	8
699
	pop	eax
700
;--------------------------------------
701
align 4
702
no_button:
703
	add	ebx,26 shl 16
51 mikedld 704
 
2469 mario79 705
	inc	edi
706
	inc	edx
707
	inc	al
708
	cmp	al,9
709
	jbe	newbline
710
 
711
	mov	al,0
712
	add	edx,6
713
	ror	ebx,16
714
	mov	bx,20
715
	ror	ebx,16
716
	add	ecx,20 shl 16
717
	inc	ah
718
	cmp	ah,8	;9
719
	jbe	newbline
51 mikedld 720
 
2469 mario79 721
	call	print_strings
722
	call	draw_icon
723
	mcall	12,2
724
	ret
725
;------------------------------------------------------------------------------
726
align 4
51 mikedld 727
draw_icon:
2469 mario79 728
	mcall	13,<(33-20),(34*8+2)>,<(260-24),(37+15-2)>,0xffffff
729
	mov	esi,[current_icon]
730
	add	esi,12
731
	call	atoi
732
	push	eax
733
	cmp	eax,[cur_band]
734
	jb	.nou
735
	sub	eax,[cur_band]
736
	cmp	eax,7
737
	ja	.nou
738
	imul	eax,34 shl 16
739
	lea	ebx,[eax+(33-19) shl 16]
740
	mov	bx,34
741
	mcall	13,,<(236+35),3>,0xff0000
742
	mov	eax,[esp]
743
;--------------------------------------
744
align 4
745
.nou:
746
	mov	eax,[cur_band]
747
	and	eax,0xfffffff8
748
	push	eax
749
	imul	eax,ICON_SIZE
750
	lea	ebx,[strip_file+8+eax]
751
	mov	ecx,8
752
	mov	edx,(33-18) shl 16+238
753
;--------------------------------------
754
align 4
755
.nxt:
756
	push	ecx
757
	mcall	7,,<32,32>
758
	pop	ecx
759
	add	ebx,ICON_SIZE
760
	add	edx,34 shl 16
761
	loop	.nxt
51 mikedld 762
 
2469 mario79 763
	mcall	4,<45,280-2>,0,rep_text,rep_text_len-rep_text
764
	lea	edx,[ebx+(8*5)shl 16]
765
	pop	ecx
766
	mcall	47,0x30000,,,0xff
767
 
768
	add	ecx,7
769
	add	edx,(3*8+4)shl 16
770
	mcall
771
 
772
	add	edx,(5*8+4)shl 16
773
	mcall	,,[icon_count]
774
 
775
	pop	ecx
776
	add	edx,(10*8+4)shl 16
777
	mcall	,,,,0xff0000
778
	ret
779
;------------------------------------------------------------------------------
51 mikedld 780
; DATA AREA
781
bcolor dd 0x335599
2469 mario79 782
;------------------------------------------------------------------------------
51 mikedld 783
icon_table:
2475 mario79 784
 times 4  db 'xxxx  xxxx'
785
 times 2  db '          '
786
 times 1  db '          '
787
 times 2  db 'xxxx  xxxx'
788
; times 1  db '          '
2469 mario79 789
;------------------------------------------------------------------------------
51 mikedld 790
icons_reserved:
2475 mario79 791
	times 9  db '          '
2469 mario79 792
;------------------------------------------------------------------------------
51 mikedld 793
if lang eq ru
2469 mario79 794
text:
795
	db 255,255,255,0,   '   ’…Š‘’                                       '
796
	db 255,255,255,0,   ' Žƒ€ŒŒ€                                     '
797
	db 255,255,255,0,   ' €€Œ…’›                                     '
798
	db 255,255,255,0,   '                 ˆŒ…ˆ’œ                     '
799
	db 255,255,255,0,   '      „Ž€‚ˆ’œ              “„€‹ˆ’œ            '
800
	db 0,0,0,0,         '€†Œˆ’… € Ž‡ˆ–ˆž ˆŠŽŠˆ „‹Ÿ …„€Š’ˆŽ‚€ˆŸ   '
801
	db                  'x' ; <- END MARKER, DONT DELETE
51 mikedld 802
 
2469 mario79 803
add_text	db '€†Œˆ’… € Ž‡ˆ–ˆž …ˆ‘Ž‹œ‡“…ŒŽ‰ ˆŠŽŠˆ     ',0
804
rem_text	db '€†Œˆ’… € Ž‡ˆ–ˆž ˆ‘Ž‹œ‡“…ŒŽ‰ ˆŠŽŠˆ       ',0
805
title		db 'Œ¥­¥¤¦¥à ¨ª®­®ª',0
411 heavyiron 806
 
807
else if lang eq ge
2469 mario79 808
text:
809
	db 255,255,255,0,   '   TITLE                                       '
810
	db 255,255,255,0,   '  APP NAME                                     '
811
	db 255,255,255,0,   ' PARAMETER                                     '
812
	db 255,255,255,0,   '                ANWENDEN                       '
813
	db 255,255,255,0,   '     HINZUFUEGEN              ENTFERNEN        '
814
	db 0,0,0,0,         'AUF BUTTON KLICKEN, UM ICON ZU EDITIEREN       '
815
	db                  'x' ; <- END MARKER, DONT DELETE
51 mikedld 816
 
2469 mario79 817
add_text	db 'AUF UNBENUTZTE ICONPOSITION KLICKEN          ',0
818
rem_text	db 'ICON ANKLICKEN; DAS GELOESCHT WERDEN SOLL    ',0
819
title		db 'Icon Manager',0
411 heavyiron 820
 
135 diamond 821
else
2469 mario79 822
text:
823
	db 255,255,255,0,   '   TITLE                                       '
824
	db 255,255,255,0,   '  APP NAME                                     '
825
	db 255,255,255,0,   ' PARAMETERS                                    '
826
	db 255,255,255,0,   '                APPLY CHANGES                  '
827
	db 255,255,255,0,   '      ADD ICON              REMOVE ICON        '
828
	db 0,0,0,0,         'CLICK BUTTON ON ICON POSITION FOR EDIT         '
829
	db                  'x' ; <- END MARKER, DONT DELETE
830
add_text	db 'CLICK ON A NOT USED POSITION                 ',0
831
rem_text	db 'CLICK ICON POSITION; YOU WANT TO DELETE      ',0
832
title		db 'Icon Manager',0
51 mikedld 833
 
132 diamond 834
end if
2469 mario79 835
;------------------------------------------------------------------------------
836
arrows	db ''
837
;------------------------------------------------------------------------------
51 mikedld 838
iconname:
2469 mario79 839
	db ICON_APP,0
840
;------------------------------------------------------------------------------
51 mikedld 841
icon_default:
2469 mario79 842
	db 'AA-SYSXTREE-000-/RD/1/SYSXTREE                '
843
	db '-                              *'
844
	db 13,10
845
;------------------------------------------------------------------------------
51 mikedld 846
rep_text:
847
if lang eq ru
2469 mario79 848
	db '‡€—Šˆ    -     ˆ‡    , ‚›€ #'
51 mikedld 849
else
2469 mario79 850
	db 'ICONS     -     OF    , SELECTED'
51 mikedld 851
end if
852
 
853
rep_text_len:
2469 mario79 854
;------------------------------------------------------------------------------
855
align 4
51 mikedld 856
get_bg_info:
2469 mario79 857
	mcall	39,4
858
	mov	[bgrdrawtype],eax
51 mikedld 859
 
2469 mario79 860
	mcall	39,1	; get background size
861
	mov	[bgrxy],eax
51 mikedld 862
 
2469 mario79 863
	mov	ebx,eax
864
	shr	eax,16
865
	and	ebx,0xffff
866
	mov	[bgrx],eax
867
	mov	[bgry],ebx
868
	ret
869
;------------------------------------------------------------------------------
870
align 4
51 mikedld 871
calc_icon_pos:
2475 mario79 872
	movzx	eax,byte [ebp-20]	; x position
873
	sub	eax,'A'		;eax - number of letter
2469 mario79 874
	cmp	eax,4
875
	jg	no_left
485 heavyiron 876
 
2469 mario79 877
	shl	eax,6	;imul eax,64
878
	add	eax,16
879
	movzx	ebx,[warea.left]
880
	add	eax,ebx
881
	jmp	x_done
882
;--------------------------------------
883
align 4
884
no_left:
885
	sub	eax,9
886
	sal	eax,6	;imul eax,64
887
	sub	eax,16+52-1
888
	movzx	ebx,[warea.right]
889
	add	eax,ebx
890
;--------------------------------------
891
align 4
892
x_done:
893
	mov	[ebp-12],eax
2475 mario79 894
	movzx	eax,byte [ebp-20+1]	; y position
895
	sub	eax,'A'		; eax - number of letter
2469 mario79 896
	cmp	eax,4
897
	jg	no_up
51 mikedld 898
 
2475 mario79 899
	shl	eax,6		;imul eax,80
2469 mario79 900
	add	eax,16
901
	movzx	ebx,[warea.top]
902
	add	eax,ebx
903
	jmp	y_done
904
;--------------------------------------
905
align 4
906
no_up:
907
	sub	eax,9
2475 mario79 908
	shl	eax,6		;imul eax,80
2469 mario79 909
	sub	eax,16-1
910
	movzx	ebx,[warea.bottom]
911
	add	eax,ebx
912
;--------------------------------------
913
align 4
914
y_done:
915
	mov	[ebp-8],eax
916
	ret
917
;--------------------------------------
918
align 4
51 mikedld 919
;START2:
920
load_icon_list2:
2469 mario79 921
	call	get_bg_info
51 mikedld 922
 
2469 mario79 923
	mcall	48,5
924
	mov	[warea.by_x],eax
925
	mov	[warea.by_y],ebx
51 mikedld 926
 
2469 mario79 927
	mcall	14
928
	add	eax,0x00010001
929
	mov	[scrxy],eax
930
;--------------------------------------
931
align 4
51 mikedld 932
apply_changes2:
2469 mario79 933
	mov	edi,[icons]
934
	mov	esi,icon_data
2475 mario79 935
	mov	ebp,thread_stack+0x100	;0x5000	; threads stack starting point
2469 mario79 936
;--------------------------------------
937
align 4
938
start_new:
939
	mov	eax,[esi]
940
	mov	[ebp-20],eax
941
	call	calc_icon_pos
51 mikedld 942
 
2469 mario79 943
	mov	edx,ebp
944
	mov	dword[ebp-4],esi
945
	mcall	51,1,thread
946
	add	ebp,0x100
51 mikedld 947
 
2475 mario79 948
; change to next thread if mutex is blocked
949
	mov	eax,68
2469 mario79 950
	mov	ebx,1
951
;--------------------------------------
952
align 4
2475 mario79 953
wait_thread_start:		;wait until thread draw itself first time
954
	cmp	[create_thread_event],bl	;mutex
2469 mario79 955
	jz	wait_thread_end
956
	mcall
957
	jmp	wait_thread_start
958
;--------------------------------------
959
align 4
51 mikedld 960
wait_thread_end:
2475 mario79 961
	dec	[create_thread_event]	;reset event
2469 mario79 962
	add	esi,REC_SIZE
963
	dec	edi
964
	jnz	start_new
965
;--------------------------------------
966
align 4
967
close:
968
	or	eax,-1
969
	mcall
970
;------------------------------------------------------------------------------
2475 mario79 971
; esp-28 = start of thread stack
972
; esp-24 = ???
973
; esp-20 = 'AA-F' or...
974
; esp-16 = ???  SHL greedy maniac mode on!
975
; esp-12 = ebp+0 = X
976
; esp-8  = ebp+4 = Y
977
; esp-4  = ebp+8 = adress of icon_data
978
;------------------------------------------------------------------------------
2469 mario79 979
align 4
51 mikedld 980
thread:
2469 mario79 981
	sub	esp,12
982
	mov	ebp,esp
983
	sub	esp,16
2475 mario79 984
	call	shape_window
2469 mario79 985
	call	draw_window2
986
	mov	[create_thread_event],1
987
	mcall	40,010101b
988
;------------------------------------------------------------------------------
989
align 4
51 mikedld 990
still2:
2469 mario79 991
	mcall	10
992
	cmp	eax,1
993
	je	red2
51 mikedld 994
 
2469 mario79 995
	cmp	eax,3
996
	je	button2
997
 
998
	call	get_bg_info
2475 mario79 999
	call	draw_icon2_1
2469 mario79 1000
 
1001
	jmp	still2
1002
;------------------------------------------------------------------------------
1003
align 4
1004
red2:
1005
	mcall	14
1006
	add	eax,0x00010001
1007
	mov	[scrxy],eax
1008
	mcall	48,5
1009
	mov	[warea.by_x],eax
1010
	mov	[warea.by_y],ebx
1011
	add	ebp,+12
1012
	call	calc_icon_pos
1013
	add	ebp,-12
2475 mario79 1014
	mcall	9,process_table,-1
1015
	mov	eax,[process_table+process_information.box.left]
2469 mario79 1016
	cmp	eax,[ebp+0]
1017
	jne	@f
2475 mario79 1018
	mov	eax,[process_table+process_information.box.top]
2469 mario79 1019
	cmp	eax,[ebp+4]
1020
	je	.lp1
1021
;--------------------------------------
1022
align 4
1023
@@:
1024
	call	get_bg_info
1025
	mcall	67,[ebp+0],[ebp+4],51,51
1026
;--------------------------------------
1027
align 4
1028
.lp1:
1029
	call	draw_window2
1030
	jmp	still2
1031
;------------------------------------------------------------------------------
1032
align 4
1033
button2:
1034
	mcall	17
1751 dunkaist 1035
	cmp	ah, 2
1036
	jnz	still2
51 mikedld 1037
 
2475 mario79 1038
	mcall	9,process_table,-1
2245 mario79 1039
	mov	ecx,[ebx+30]	; PID
1040
	mcall	18,21
2469 mario79 1041
	mov	edx,eax		; SLOT
2245 mario79 1042
	mcall	18,7
1043
	cmp	edx,eax	; compare with active SLOT
1044
	jne	@f
1045
	mov	ecx,edx
1046
	mcall	18,1	; set to down
1047
	call	draw_window2
2469 mario79 1048
;--------------------------------------
1049
align 4
2245 mario79 1050
@@:
2469 mario79 1051
	mov	esi,[ebp+8]
1052
	mov	ebx,1
1053
	mov	edi,finfo.path
1054
	call	fill_paths
1055
	inc	ebx
1056
	mov	edi,param_str
1057
	mov	dword[finfo_start+8],edi
1058
	call	fill_paths
1059
	cmp	byte[edi],0
1060
	jne	.no0
1061
	and	dword[finfo_start+8],0
1062
;--------------------------------------
1063
align 4
1064
.no0:
1065
	mov	ebx,finfo_start
1066
	mcall	70
1067
	jmp	still2
1068
;------------------------------------------------------------------------------
1069
align 4
51 mikedld 1070
fill_paths:
2469 mario79 1071
	push	esi edi
1072
;	dps	'>'
1073
	movzx	ecx,byte[str_lens+ebx]
1074
	add	esi,[positions+ebx*4]
1075
	push	esi
1076
	add	esi,ecx
1077
;--------------------------------------
1078
align 4
1079
.l1:
1080
	dec	esi
1081
	cmp	byte[esi],' '
1082
	jnz	.found
1083
	loop	.l1
1084
	pop	esi
1085
	jmp	.noms
1086
;--------------------------------------
1087
align 4
1088
.found:
1089
	lea	ecx,[esi+1]
1090
	pop	esi
1091
	sub	ecx,esi
1092
	rep	movsb
1093
;--------------------------------------
1094
align 4
1095
.noms:
2475 mario79 1096
	and	byte[edi],0
2469 mario79 1097
;	call	debug_outstr
1098
;	dps	<'<',13,10>
1099
	pop	edi esi
1100
	ret
1101
;--------------------------------------
1102
align 4
51 mikedld 1103
atoi:
2469 mario79 1104
	push	esi
1105
	xor	eax,eax
1106
	xor	ebx,ebx
1107
;--------------------------------------
1108
align 4
1109
.nxt:
1110
	lodsb
1111
	cmp	al,'0'
1112
	jb	.done
1113
	cmp	al,'9'
1114
	ja	.done
1115
	sub	eax,'0'
1116
; multiply x10
1117
	shl	ebx,1		; multiply x2
1118
	lea	ebx,[ebx+ebx*4] ; multiply x5
1119
	add	ebx,eax
1120
	jmp	.nxt
1121
;--------------------------------------
1122
align 4
1123
.done:
1124
	pop	esi
1125
	mov	eax,ebx
1126
	ret
1127
;--------------------------------------
1128
align 4
51 mikedld 1129
itoa:
2469 mario79 1130
	add	esi,2
1131
	mov	ebx,10
1132
	mov	ecx,3
1133
;--------------------------------------
1134
align 4
1135
.l0:
1136
	xor	edx,edx
1137
	div	ebx
1138
	add	dl,'0'
1139
	mov	[esi],dl
1140
	dec	esi
1141
	loop	.l0
1142
	ret
1143
;------------------------------------------------------------------------------
1144
align 4
51 mikedld 1145
draw_picture:
2475 mario79 1146
	mov	[image],image_area
1147
 
2469 mario79 1148
	mov	edi,[ebp+8]
1149
	lea	esi,[edi+12]
1150
	call	atoi
1151
	cmp	eax,[icon_count]
1152
	ja	toponly.ex
1153
;	imul	eax,(32*3*32)
1154
	lea	eax,[eax+eax*2]	; multiply x3
1155
	shl	eax,10		; multiply x1024
1156
 
1157
	lea	edi,[eax+strip_file+8]
1158
	xor	ebx,ebx
1159
	xor	ecx,ecx
2475 mario79 1160
	mov	esi,edi
51 mikedld 1161
 
2469 mario79 1162
	mov	[pixpos],0
1163
;--------------------------------------
1164
; loop start
1165
align 4
1166
newb:
1167
	push	ebx
1168
	push	ecx
51 mikedld 1169
 
2469 mario79 1170
	cmp	ebx,10
1171
	jb	yesbpix
1172
	cmp	ebx,42
1173
	jge	yesbpix
1174
	cmp	ecx,31	;2
1175
	jg	yesbpix
51 mikedld 1176
 
2469 mario79 1177
	push	esi
1178
	mov	esi,edi
1179
	add	esi,[pixpos]
1180
;--------------------------------------
1181
	add	[pixpos],3
1182
	mov	eax,[esi]
1183
	and	eax,0xffffff
51 mikedld 1184
 
2469 mario79 1185
	pop	esi
51 mikedld 1186
 
2469 mario79 1187
	cmp	eax,0
1188
	je	yesbpix
1189
	cmp	eax,0xfffcff	;f5f5f5
1190
	je	yesbpix
1191
	jmp	nobpix
1192
;--------------------------------------
1193
align 4
1194
yesbpix:
1195
stretch:
1196
	cmp	[bgrdrawtype],dword 2
1197
	jne	nostretch
1198
	mov	eax,[ebp+4]
1199
	add	eax,ecx
1200
	imul	eax,[bgry]
1201
	cdq
1202
	movzx	ebx,word [scrxy]
1203
	div	ebx
1204
	imul	eax,[bgrx]
1205
	push	eax
1206
	mov	eax,[ebp+0]
1207
	add	eax,[esp+8]
1208
	imul	eax,[bgrx]
1209
	cdq
1210
	movzx	ebx,word [scrxy+2]
1211
	div	ebx
1212
	add	eax,[esp]
1213
	add	esp,4
1214
	jmp	notiled
1215
;--------------------------------------
1216
align 4
1217
nostretch:
1218
	cmp	[bgrdrawtype],dword 1
1219
	jne	notiled
1220
	mov	eax,[ebp+4]
1221
	add	eax,ecx
1222
	cdq
1223
	movzx	ebx,word [bgrxy]
1224
	div	ebx
1225
	mov	eax,edx
1226
	imul	eax,[bgrx]
1227
	push	eax
1228
	mov	eax,[ebp+0]
1229
	add	eax,[esp+8]
1230
	movzx	ebx,word [bgrxy+2]
1231
	cdq
1232
	div	ebx
1233
	mov	eax,edx
1234
	add	eax,[esp]
1235
	add	esp,4
1236
;--------------------------------------
1237
align 4
1238
notiled:
1239
	lea	ecx,[eax+eax*2]
1240
	mcall	39,2
1241
;--------------------------------------
1242
align 4
1243
nobpix:
1244
	pop	ecx
1245
	pop	ebx
51 mikedld 1246
 
2469 mario79 1247
	mov	edx,eax
1248
	mov	eax,[image]
2475 mario79 1249
 
2469 mario79 1250
	mov	[eax],dl
1251
	inc	eax
1252
	ror	edx,8
2475 mario79 1253
 
2469 mario79 1254
	mov	[eax],dl
1255
	inc	eax
1256
	ror	edx,8
2475 mario79 1257
 
2469 mario79 1258
	mov	[eax],dl
2475 mario79 1259
 
2469 mario79 1260
	inc	eax
1261
	mov	[image],eax
1262
	inc	ebx
2475 mario79 1263
 
2469 mario79 1264
	mov	eax,[yw]
1265
	inc	eax
1266
	cmp	ebx,eax
2475 mario79 1267
	jb	newb
1268
 
2469 mario79 1269
	xor	ebx,ebx
51 mikedld 1270
 
2469 mario79 1271
	inc	ecx
1272
	mov	eax,[ya]
1273
	add	[pixpos],eax
51 mikedld 1274
 
2469 mario79 1275
	cmp	[top],1
1276
	jne	notop
51 mikedld 1277
 
2469 mario79 1278
	cmp	ecx,38
1279
	je	toponly
1280
;--------------------------------------
1281
align 4
1282
notop:
1283
	cmp	ecx,52
1284
	jnz	newb
1285
;--------------------------------------
1286
align 4
1287
toponly:
1288
	xor	edx,edx
2475 mario79 1289
	mcall	7,image_area,<52,52>
2469 mario79 1290
;--------------------------------------
1291
align 4
1292
.ex:
1293
	mov	[load_pic],0
1294
	ret
1295
;------------------------------------------------------------------------------
1296
align 4
1297
draw_text:
1298
	mov	esi,[ebp+8]
1299
	add	esi,3
1300
	push	edi
1301
	mov	edi,title
1302
	mov	ecx,8/4
1303
	cld
1304
	rep	movsd
1305
	pop	edi
1306
	mov	eax,title
1307
;--------------------------------------
1308
align 4
1309
news2:
1310
	cmp	[eax],byte 33
1311
	jb	founde
1312
	inc	eax
1313
	cmp	eax,title+8	;11
1314
	jb	news2
1315
;--------------------------------------
1316
align 4
1317
founde:
1318
	sub	eax,title
1319
	mov	[tl],eax
1320
 
1321
	mov	eax,[tl]
2475 mario79 1322
	lea	eax,[eax+eax*2]		; eax *= char_width/2
2469 mario79 1323
	shl	eax,16
1324
 
1325
	mov	ebx,27 shl 16+40
1326
	sub	ebx,eax
1327
 
2475 mario79 1328
	xor	ecx,ecx		; black shade of text
1329
	add	ebx,1 shl 16	;*65536+1
2469 mario79 1330
	mcall	4,,,title,[tl]
51 mikedld 1331
 
2469 mario79 1332
	inc	ebx
1333
	mcall
51 mikedld 1334
 
2469 mario79 1335
	add	ebx,1 shl 16
1336
	mcall
51 mikedld 1337
 
2469 mario79 1338
	inc	ebx
1339
	mcall
51 mikedld 1340
 
2469 mario79 1341
	sub	ebx,1 shl 16
1342
	mcall
51 mikedld 1343
 
2469 mario79 1344
	dec	ebx
1345
	sub	ebx,1 shl 16
1346
	mcall
51 mikedld 1347
 
2469 mario79 1348
	sub	ebx,1 shl 16
1349
	dec	ebx
1350
	mcall
51 mikedld 1351
 
2469 mario79 1352
	dec	ebx
1353
	add	ebx,1 shl 16
1354
	mcall
51 mikedld 1355
 
2469 mario79 1356
	inc	ebx
1357
	mcall	,,0xffffff
2475 mario79 1358
	mov	[draw_pic],0
2469 mario79 1359
	ret
1360
;------------------------------------------------------------------------------
51 mikedld 1361
;   *********************************************
1362
;   *******  WINDOW DEFINITIONS AND DRAW ********
1363
;   *********************************************
2469 mario79 1364
align 4
51 mikedld 1365
draw_window2:
2469 mario79 1366
	mcall	12,1
51 mikedld 1367
 
2469 mario79 1368
	; DRAW WINDOW
2475 mario79 1369
	xor	eax,eax		; function 0 : define and draw window
2469 mario79 1370
	mov	ebx,[ebp+0-2]
1371
	mov	ecx,[ebp+4-2]
2475 mario79 1372
	mov	bx,[yw]		; [x start] *65536 + [x size]
1373
	mov	cx,51		; [y start] *65536 + [y size]
1374
	mov	edx,0x41000000	; color of work area RRGGBB,8->color gl
2469 mario79 1375
	mcall
1376
 
1377
	mcall	8,51,50,0x40000002 ; button
2475 mario79 1378
;--------------------------------------
1379
align 4
1380
draw_icon2_1:
1381
; change to next thread if mutex is blocked
1382
	mov	eax,68
2469 mario79 1383
	mov	ebx,1
1384
;--------------------------------------
1385
align 4
51 mikedld 1386
draw_icon2:
2475 mario79 1387
	xchg	[load_pic],bl	;mutex
2469 mario79 1388
	test	bl,bl
1389
	je	draw_icon_end
1390
	mcall
1391
	jmp	draw_icon2
1392
;--------------------------------------
1393
align 4
51 mikedld 1394
draw_icon_end:
2475 mario79 1395
; change to next thread if mutex is blocked
1396
	mov	eax,68
2469 mario79 1397
	mov	ebx,1
1398
;--------------------------------------
1399
align 4
51 mikedld 1400
draw_icon_2:
2475 mario79 1401
	xchg	[draw_pic],bl	;mutex
2469 mario79 1402
	test	bl,bl
1403
	je	draw_icon_end_2
1404
	mcall
1405
	jmp	draw_icon_2
1406
;--------------------------------------
1407
align 4
51 mikedld 1408
draw_icon_end_2:
2469 mario79 1409
	call	draw_picture
1410
	call	draw_text
1411
	mcall	12,2
1412
	ret
1413
;------------------------------------------------------------------------------
2475 mario79 1414
shape_window:
1415
; give the shape reference area
1416
	mcall	50,0,shape_reference
1417
; give the shape scale  32 x 32  ->  128 x 128  ecx = 2
1418
; you dont have to give this, scale is 1:1 by default
1419
;	mcall	50,1,2
1420
	ret
1421
;------------------------------------------------------------------------------
1422
shape_reference:	;  32 x 32 ( window_size_X + 1 ) * ( window_size_Y + 1 )
1423
 
1424
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1425
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1426
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1427
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1428
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1429
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1430
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1431
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1432
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1433
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1434
 
1435
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1436
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1437
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1438
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1439
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1440
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1441
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1442
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1443
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1444
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1445
 
1446
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1447
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1448
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1449
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1450
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1451
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1452
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1453
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1454
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1455
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1456
 
1457
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1458
db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
1459
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1460
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1461
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1462
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1463
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1464
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1465
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1466
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1467
 
1468
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1469
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1470
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1471
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1472
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1473
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1474
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1475
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1476
db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
1477
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1478
 
1479
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1480
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
1481
;------------------------------------------------------------------------------
2469 mario79 1482
tl	dd 8
2475 mario79 1483
yw:	dd 51
2469 mario79 1484
ya	dd 0
1485
cur_btn	dd 40
51 mikedld 1486
 
2469 mario79 1487
draw_pic	db 0
1488
load_pic	db 0
1489
create_thread_event	db 0
51 mikedld 1490
 
2475 mario79 1491
image	dd image_area
51 mikedld 1492
 
2475 mario79 1493
IncludeUGlobals
1494
;------------------------------------------------------------------------------
1495
IM_END:
1496
;------------------------------------------------------------------------------
1497
align 4
2469 mario79 1498
bgrx	dd ?
1499
bgry	dd ?
51 mikedld 1500
 
2469 mario79 1501
bgrxy	dd ?
51 mikedld 1502
warea:
1503
 .by_x:
2469 mario79 1504
  .right	dw ?
1505
  .left		dw ?
51 mikedld 1506
 .by_y:
2469 mario79 1507
  .bottom	dw ?
1508
  .top		dw ?
1509
scrxy		dd ?
1510
bgrdrawtype	dd ?
51 mikedld 1511
 
2469 mario79 1512
pixpos	dd ?
1513
top	dd ?
1514
icons	dd ?
1515
addr	dd ?
1516
cur_str		dd ?
1517
cur_band	dd ?
1518
sel_icon1	rd 1
1519
icon_count	rd 1
2475 mario79 1520
;------------------------------------------------------------------------------
1521
align 4
1522
param_str	rb 31
1523
;------------------------------------------------------------------------------
1524
align 4
2469 mario79 1525
gif_file	rb	GIF_SIZE
2475 mario79 1526
;------------------------------------------------------------------------------
1527
align 4
2469 mario79 1528
strip_file	rb	RAW_SIZE
2475 mario79 1529
;------------------------------------------------------------------------------
1530
align 4
1531
process_table:
1532
	rb 0x400
1533
;------------------------------------------------------------------------------
1534
align 4
1535
icon_data:
1536
	rb 0x1000
1537
;------------------------------------------------------------------------------
1538
align 4
1539
	rb 0x1000
1540
stack_area:
1541
;------------------------------------------------------------------------------
1542
align 4
1543
I_Param:
1544
	rb 0x100	; max 256
1545
;------------------------------------------------------------------------------
1546
align 4
1547
thread_stack:
1548
	rb 0x100*48	; max 48 icons
1549
;------------------------------------------------------------------------------
1550
align 4
1551
image_area:
1552
	rb 52*52*3
1553
;------------------------------------------------------------------------------
1554
;align 4
1555
;shape_reference_0:
1556
;	rb 52*52	;  ( window_size_X + 1 ) * ( window_size_Y + 1 )
1557
;------------------------------------------------------------------------------
51 mikedld 1558
I_END: