Rev 485 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
485 | heavyiron | 1 | ; |
2 | ; DESKTOP ICON MANAGER |
||
3 | ; |
||
4 | ; Compile with FASM for Menuet |
||
5 | ; |
||
6 | |||
7 | use32 |
||
8 | |||
9 | org 0x0 |
||
10 | |||
11 | db 'MENUET01' ; 8 byte id |
||
12 | dd 0x01 ; header version |
||
13 | dd START ; start of code |
||
14 | dd I_END ; size of image |
||
15 | dd 0x4000 ; memory for app |
||
16 | dd 0x4000 ; esp |
||
17 | dd I_Param , 0x0 ; I_Param , I_Icon |
||
18 | |||
19 | include '..\..\..\macros.inc' |
||
20 | include 'lang.inc' |
||
21 | |||
22 | START: ; start of execution |
||
23 | |||
24 | call load_icon_list |
||
25 | |||
26 | call check_parameters |
||
27 | |||
28 | red: ; redraw |
||
29 | call draw_window ; at first, draw the window |
||
30 | |||
31 | still: |
||
32 | |||
33 | mov eax,10 ; wait here for event |
||
34 | mcall |
||
35 | |||
36 | dec eax ; redraw request ? |
||
37 | jz red |
||
38 | dec eax ; key in buffer ? |
||
39 | jz key |
||
40 | |||
41 | button: ; button |
||
42 | mov al,17 ; get id |
||
43 | mcall |
||
44 | |||
45 | shr eax,8 |
||
46 | |||
47 | cmp eax,1 ; button id=1 ? |
||
48 | jne noclose |
||
49 | or eax,-1 ; close this program |
||
50 | mcall |
||
51 | noclose: |
||
52 | |||
53 | cmp eax,11 |
||
54 | jb no_str |
||
55 | cmp eax,13 |
||
56 | jg no_str |
||
57 | call read_string |
||
58 | jmp still |
||
59 | no_str: |
||
60 | |||
61 | |||
62 | cmp eax,21 ; apply changes |
||
63 | jne no_apply |
||
64 | |||
65 | ; (1) save list |
||
66 | |||
67 | mov eax,70 |
||
68 | mov ebx,finfo |
||
69 | mov dword[ebx],2 |
||
70 | mov edx,78 |
||
71 | imul edx,dword [icons] |
||
72 | mov dword[ebx+12],edx |
||
73 | mcall |
||
74 | |||
75 | |||
76 | ; (2) terminate all icons |
||
77 | |||
78 | mov esi,1 |
||
79 | newread: |
||
80 | inc esi |
||
81 | mov eax,9 |
||
82 | mov ebx,I_END |
||
83 | mov ecx,esi |
||
84 | mcall |
||
85 | cmp esi,eax |
||
86 | jg all_terminated |
||
87 | |||
88 | cmp [I_END+10],dword '@ICO' |
||
89 | jne newread |
||
90 | |||
91 | mov eax,18 |
||
92 | mov ebx,2 |
||
93 | mov ecx,esi |
||
94 | mcall |
||
95 | |||
96 | mov esi,1 |
||
97 | |||
98 | jmp newread |
||
99 | |||
100 | all_terminated: |
||
101 | |||
102 | apply_changes: |
||
103 | |||
104 | ; (3) start icons from icon_data |
||
105 | |||
106 | mov edi,[icons] |
||
107 | mov esi,icon_data |
||
108 | start_new: |
||
109 | |||
110 | push edi |
||
111 | push esi |
||
112 | |||
113 | movzx eax,byte [esi] ; x position |
||
114 | cmp eax,'E' |
||
115 | jg no_left |
||
116 | sub eax,65 |
||
117 | imul eax,70 |
||
118 | add eax,15 |
||
119 | jmp x_done |
||
120 | no_left: |
||
121 | sub eax,65 |
||
122 | mov ebx,9 |
||
123 | sub ebx,eax |
||
124 | imul ebx,70 |
||
125 | push ebx |
||
126 | mov eax,14 |
||
127 | mcall |
||
128 | pop ebx |
||
129 | shr eax,16 |
||
130 | sub eax,51+15 |
||
131 | sub eax,ebx |
||
132 | x_done: |
||
133 | add eax,0x01010101 |
||
134 | mov [icon_start_parameters],eax |
||
135 | |||
136 | movzx eax,byte [esi+1] ; y position |
||
137 | cmp eax,'E' |
||
138 | jg no_up |
||
139 | sub eax,65 |
||
140 | imul eax,80 |
||
141 | add eax,12 |
||
142 | jmp y_done |
||
143 | no_up: |
||
144 | sub eax,65 |
||
145 | mov ebx,9 |
||
146 | sub ebx,eax |
||
147 | imul ebx,80 |
||
148 | push ebx |
||
149 | mov eax,14 |
||
150 | mcall |
||
151 | pop ebx |
||
152 | and eax,0xffff |
||
153 | sub eax,-1+20 |
||
154 | sub eax,ebx |
||
155 | y_done: |
||
156 | add eax,0x01010101 |
||
157 | mov [icon_start_parameters+4],eax |
||
158 | |||
159 | mov esi,[esp] ; icon picture |
||
160 | add esi,3 |
||
161 | mov edi,icon_start_parameters+8 |
||
162 | mov ecx,30 |
||
163 | cld |
||
164 | rep movsb |
||
165 | |||
166 | mov esi,[esp] ; icon application |
||
167 | add esi,34 |
||
168 | mov edi,icon_start_parameters+8+30 |
||
169 | mov ecx,30 |
||
170 | cld |
||
171 | rep movsb |
||
172 | |||
173 | mov esi,[esp] ; icon text |
||
174 | add esi,65 |
||
175 | mov edi,icon_start_parameters+8+30+30 |
||
176 | mov ecx,10 |
||
177 | cld |
||
178 | rep movsb |
||
179 | |||
180 | mov byte[edi],0 ; ASCII -> ASCIIZ |
||
181 | |||
182 | mov eax,70 |
||
183 | mov ebx,finfo_start |
||
184 | mcall |
||
185 | |||
186 | pop esi edi |
||
187 | |||
188 | add esi,76+2 |
||
189 | |||
190 | dec edi |
||
191 | jnz start_new |
||
192 | |||
193 | cmp [I_Param],byte 0 |
||
194 | je still |
||
195 | |||
196 | or eax,-1 |
||
197 | mcall |
||
198 | |||
199 | no_apply: |
||
200 | |||
201 | |||
202 | cmp eax,22 ; user pressed the 'add icon' button |
||
203 | jne no_add_icon |
||
204 | |||
205 | mov eax,13 |
||
206 | mov ebx,19*65536+260 |
||
207 | mov ecx,225*65536+10 |
||
208 | mov edx,0xffffff |
||
209 | mcall |
||
210 | mov eax,4 |
||
211 | mov ebx,19*65536+225 |
||
503 | heavyiron | 212 | mov ecx,0xc0ff0000 |
485 | heavyiron | 213 | mov edx,add_text |
503 | heavyiron | 214 | mov edi,0xffffff |
485 | heavyiron | 215 | mcall |
216 | |||
217 | mov eax,10 |
||
218 | mcall |
||
219 | cmp eax,3 |
||
220 | jne still |
||
221 | mov al,17 |
||
222 | mcall |
||
223 | shr eax,8 |
||
224 | cmp eax,40 |
||
225 | jb no_f |
||
226 | sub eax,40 |
||
227 | |||
228 | xor edx,edx ; bcd -> 10 |
||
229 | mov ebx,16 |
||
230 | div ebx |
||
231 | imul eax,10 |
||
232 | add eax,edx |
||
233 | |||
234 | mov ebx,eax |
||
235 | add ebx,icons_reserved |
||
236 | cmp [ebx],byte 'x' |
||
237 | je no_f |
||
238 | mov [ebx],byte 'x' |
||
239 | |||
240 | xor edx,edx |
||
241 | mov ebx,10 |
||
242 | div ebx |
||
243 | add eax,65 |
||
244 | add edx,65 |
||
245 | mov [icon_default+0],dl |
||
246 | mov [icon_default+1],al |
||
247 | |||
248 | inc dword [icons] |
||
249 | mov edi,[icons] |
||
250 | dec edi |
||
251 | imul edi,76+2 |
||
252 | add edi,icon_data |
||
253 | |||
254 | mov [current_icon],edi |
||
255 | |||
256 | mov esi,icon_default |
||
257 | mov ecx,76+2 |
||
258 | cld |
||
259 | rep movsb |
||
260 | |||
261 | no_f: |
||
262 | |||
263 | call draw_window |
||
264 | |||
265 | jmp still |
||
266 | |||
267 | no_add_icon: |
||
268 | |||
269 | |||
270 | cmp eax,23 ; user pressed the remove icon button |
||
271 | jne no_remove_icon |
||
272 | |||
273 | mov eax,13 |
||
274 | mov ebx,19*65536+260 |
||
275 | mov ecx,225*65536+10 |
||
276 | mov edx,0xffffff |
||
277 | mcall |
||
278 | mov eax,4 |
||
279 | mov ebx,19*65536+225 |
||
503 | heavyiron | 280 | mov ecx,0xc0ff0000 |
485 | heavyiron | 281 | mov edx,rem_text |
503 | heavyiron | 282 | mov edi,0xffffff |
485 | heavyiron | 283 | mcall |
284 | |||
285 | mov eax,10 |
||
286 | mcall |
||
287 | cmp eax,3 |
||
288 | jne no_found |
||
289 | mov al,17 |
||
290 | mcall |
||
291 | shr eax,8 |
||
292 | cmp eax,40 |
||
293 | jb no_found |
||
294 | sub eax,40 |
||
295 | |||
296 | xor edx,edx |
||
297 | mov ebx,16 |
||
298 | div ebx |
||
299 | imul eax,10 |
||
300 | add eax,edx |
||
301 | |||
302 | mov ebx,eax |
||
303 | add ebx,icons_reserved |
||
304 | cmp [ebx],byte 'x' |
||
305 | jne no_found |
||
306 | mov [ebx],byte ' ' |
||
307 | |||
308 | xor edx,edx |
||
309 | mov ebx,10 |
||
310 | div ebx |
||
311 | shl eax,8 |
||
312 | mov al,dl |
||
313 | |||
314 | add eax,65*256+65 |
||
315 | |||
316 | mov esi,icon_data |
||
317 | mov edi,76+2 |
||
318 | imul edi,[icons] |
||
319 | add edi,icon_data |
||
320 | news: |
||
321 | cmp word [esi],ax |
||
322 | je foundi |
||
323 | add esi,76+2 |
||
324 | cmp esi,edi |
||
325 | jb news |
||
326 | jmp no_found |
||
327 | |||
328 | foundi: |
||
329 | |||
330 | mov ecx,edi |
||
331 | sub ecx,esi |
||
332 | |||
333 | mov edi,esi |
||
334 | add esi,76+2 |
||
335 | |||
336 | cld |
||
337 | rep movsb |
||
338 | |||
339 | dec [icons] |
||
340 | |||
341 | mov eax,icon_data |
||
342 | mov [current_icon],eax |
||
343 | |||
344 | no_found: |
||
345 | |||
346 | call draw_window |
||
347 | |||
348 | jmp still |
||
349 | |||
350 | |||
351 | |||
352 | no_remove_icon: |
||
353 | |||
354 | |||
355 | cmp eax,40 ; user pressed button for icon position |
||
356 | jb no_on_screen_button |
||
357 | |||
358 | sub eax,40 |
||
359 | mov edx,eax |
||
360 | shl eax,4 |
||
361 | and edx,0xf |
||
362 | mov dh,ah |
||
363 | add edx,65*256+65 |
||
364 | |||
365 | mov esi,icon_data |
||
366 | mov ecx,[icons] |
||
367 | cld |
||
368 | findl1: |
||
369 | cmp dx,[esi] |
||
370 | je foundl1 |
||
371 | add esi,76+2 |
||
372 | loop findl1 |
||
373 | jmp still |
||
374 | |||
375 | foundl1: |
||
376 | |||
377 | mov [current_icon],esi |
||
378 | |||
379 | call print_strings |
||
380 | |||
381 | jmp still |
||
382 | |||
383 | no_on_screen_button: |
||
384 | |||
385 | |||
386 | jmp still |
||
387 | |||
388 | |||
389 | key: ; key |
||
390 | mov al,2 ; just read it and ignore |
||
391 | mcall |
||
392 | jmp still |
||
393 | |||
394 | current_icon dd icon_data |
||
395 | |||
396 | |||
397 | print_strings: |
||
398 | |||
399 | pusha |
||
400 | |||
401 | mov eax,13 ; clear text area |
||
402 | mov ebx,95*65536+180 |
||
403 | mov ecx,253*65536+40 |
||
404 | mov edx,0xffffff |
||
405 | mcall |
||
406 | |||
407 | mov eax,4 ; icon text |
||
408 | mov ebx,95*65536+253 |
||
409 | mov ecx,0x000000 |
||
410 | mov edx,[current_icon] |
||
411 | add edx,65 |
||
412 | mov esi,10 |
||
413 | mcall |
||
414 | |||
415 | ;mov eax,4 ; icon application |
||
416 | add ebx,14 |
||
417 | mov edx,[current_icon] |
||
418 | add edx,34 |
||
419 | mov esi,30 |
||
420 | mcall |
||
421 | |||
422 | ;mov eax,4 ; icon file |
||
423 | add ebx,14 |
||
424 | mov edx,[current_icon] |
||
425 | add edx,3 |
||
426 | mov esi,30 |
||
427 | mcall |
||
428 | |||
429 | popa |
||
430 | |||
431 | ret |
||
432 | |||
433 | |||
434 | load_icon_list: |
||
435 | |||
436 | ;pusha |
||
437 | |||
438 | mov eax,70 |
||
439 | mov ebx,finfo |
||
440 | mov dword[ebx],0 |
||
441 | mov dword[ebx+12],4096 ; max size of icons.dat (in current format) is 4 kb |
||
442 | mcall |
||
443 | |||
444 | mov eax,ebx |
||
445 | add eax,2 |
||
446 | xor edx,edx |
||
447 | mov ebx,76+2 |
||
448 | div ebx |
||
449 | mov [icons],eax |
||
450 | |||
451 | mov edi,icons_reserved ; clear reserved area |
||
452 | mov eax,32 |
||
453 | mov ecx,10*10 |
||
454 | cld |
||
455 | rep stosb |
||
456 | |||
457 | mov ecx,[icons] ; set used icons to reserved area |
||
458 | mov esi,icon_data |
||
459 | cld |
||
460 | ldl1: |
||
461 | movzx ebx,byte [esi+1] |
||
462 | sub ebx,65 |
||
463 | imul ebx,10 |
||
464 | movzx eax,byte [esi] |
||
465 | add ebx,eax |
||
466 | sub ebx,65 |
||
467 | add ebx,icons_reserved |
||
468 | mov [ebx],byte 'x' |
||
469 | add esi,76+2 |
||
470 | loop ldl1 |
||
471 | |||
472 | ret |
||
473 | |||
474 | |||
475 | check_parameters: |
||
476 | |||
477 | cmp [I_Param],dword 'BOOT' |
||
478 | je chpl1 |
||
479 | ret |
||
480 | |||
481 | chpl1: |
||
482 | mov eax,21 |
||
483 | jmp apply_changes |
||
484 | |||
485 | |||
486 | positions dd 65,34,3 |
||
487 | |||
488 | read_string: |
||
489 | |||
490 | sub eax,11 |
||
491 | shl eax,2 |
||
492 | add eax,positions |
||
493 | mov eax,[eax] |
||
494 | |||
495 | mov esi,[current_icon] |
||
496 | add esi,eax |
||
497 | mov [addr],esi |
||
498 | |||
499 | mov edi,[addr] |
||
500 | mov eax,'_' |
||
501 | mov ecx,30 |
||
502 | cld |
||
503 | rep stosb |
||
504 | |||
505 | call print_strings |
||
506 | |||
507 | mov edi,[addr] |
||
508 | f11: |
||
509 | mov eax,10 |
||
510 | mcall |
||
511 | cmp eax,2 |
||
512 | jz fbu |
||
513 | jmp rs_done |
||
514 | fbu: |
||
515 | mov eax,2 |
||
516 | mcall |
||
517 | shr eax,8 |
||
518 | cmp eax,13 |
||
519 | je rs_done |
||
520 | cmp eax,8 |
||
521 | jnz nobsl |
||
522 | cmp edi,[addr] |
||
523 | jz f11 |
||
524 | dec edi |
||
525 | mov [edi],byte ' ' |
||
526 | call print_strings |
||
527 | jmp f11 |
||
528 | nobsl: |
||
529 | cmp eax,31 |
||
530 | jbe f11 |
||
531 | mov [edi],al |
||
532 | call print_strings |
||
533 | |||
534 | add edi,1 |
||
535 | mov esi,[addr] |
||
536 | add esi,30 |
||
537 | cmp esi,edi |
||
538 | jnz f11 |
||
539 | |||
540 | rs_done: |
||
541 | |||
542 | mov ecx,[addr] |
||
543 | add ecx,30 |
||
544 | sub ecx,edi |
||
545 | mov eax,32 |
||
546 | cld |
||
547 | rep stosb |
||
548 | |||
549 | call print_strings |
||
550 | |||
551 | ret |
||
552 | |||
553 | |||
554 | |||
555 | ; ********************************************* |
||
556 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
||
557 | ; ********************************************* |
||
558 | |||
559 | |||
560 | draw_window: |
||
561 | |||
562 | mov eax,12 ; function 12:tell os about windowdraw |
||
563 | mov ebx,1 ; 1, start of draw |
||
564 | mcall |
||
565 | |||
566 | ; DRAW WINDOW |
||
567 | xor eax,eax |
||
568 | mov ebx,210*65536+300 |
||
569 | mov ecx,30*65536+390 |
||
570 | mov edx,0x33ffffff |
||
571 | mov edi,title |
||
572 | mcall |
||
573 | |||
574 | mov eax,13 ; WINDOW AREA |
||
575 | mov ebx,15*65536+260 |
||
576 | mov ecx,10*65536+200 |
||
577 | mov edx,0x3366cc |
||
578 | mcall |
||
579 | |||
580 | mov eax,38 ; VERTICAL LINE ON WINDOW AREA |
||
581 | mov ebx,145*65536+145 |
||
582 | mov ecx,10*65536+235 |
||
583 | mov edx,0xffffff |
||
584 | mcall |
||
585 | |||
586 | ;mov eax,38 ; HOROZONTAL LINE ON WINDOW AREA |
||
587 | mov ebx,15*65536+280 |
||
588 | mov ecx,110*65536+110 |
||
589 | mov edx,0xffffff |
||
590 | mcall |
||
591 | |||
592 | mov eax,8 ; TEXT ENTER BUTTONS |
||
593 | mov ebx,15*65536+72 |
||
594 | mov ecx,250*65536+13 |
||
595 | mov edx,11 |
||
596 | mov esi,[bcolor] |
||
597 | mcall |
||
598 | inc edx |
||
599 | add ecx,14*65536 |
||
600 | mcall |
||
601 | inc edx |
||
602 | add ecx,14*65536 |
||
603 | mcall |
||
604 | |||
605 | ;mov eax,8 ; APPLY AND SAVE CHANGES BUTTON |
||
606 | mov ebx,15*65536+259 |
||
607 | mov ecx,304*65536+15 |
||
608 | mov edx,21 |
||
609 | mov esi,[bcolor] |
||
610 | mcall |
||
611 | |||
612 | ;mov eax,8 ; ADD ICON BUTTON |
||
613 | mov ebx,15*65536+129 |
||
614 | add ecx,14*2*65536 |
||
615 | inc edx |
||
616 | mcall |
||
617 | |||
618 | ;mov eax,8 ; REMOVE ICON BUTTON |
||
619 | add ebx,130*65536 |
||
620 | inc edx |
||
621 | mcall |
||
622 | |||
623 | xor eax,eax ; DRAW BUTTONS ON WINDOW AREA |
||
624 | mov ebx,15*65536+25 |
||
625 | mov ecx,10*65536+19 |
||
626 | mov edi,icon_table |
||
627 | mov edx,40 |
||
628 | newbline: |
||
629 | |||
630 | cmp [edi],byte 'x' |
||
631 | jne no_button |
||
632 | |||
633 | mov esi,0x5577cc |
||
634 | cmp [edi+100],byte 'x' |
||
635 | jne nores |
||
636 | mov esi,0xcc5555 |
||
637 | nores: |
||
638 | |||
639 | push eax |
||
640 | mov eax,8 |
||
641 | mcall |
||
642 | pop eax |
||
643 | |||
644 | no_button: |
||
645 | |||
646 | add ebx,26*65536 |
||
647 | |||
648 | inc edi |
||
649 | inc edx |
||
650 | |||
651 | inc al |
||
652 | cmp al,9 |
||
653 | jbe newbline |
||
654 | mov al,0 |
||
655 | |||
656 | add edx,6 |
||
657 | |||
658 | ror ebx,16 |
||
659 | mov bx,15 |
||
660 | ror ebx,16 |
||
661 | add ecx,20*65536 |
||
662 | |||
663 | inc ah |
||
664 | cmp ah,9 |
||
665 | jbe newbline |
||
666 | |||
503 | heavyiron | 667 | mov ebx,24*65536+225 |
485 | heavyiron | 668 | mov ecx,0xffffff |
669 | mov edx,text |
||
503 | heavyiron | 670 | mov esi,36 |
485 | heavyiron | 671 | mov eax,4 |
672 | newline: |
||
673 | mov ecx,[edx] |
||
674 | add edx,4 |
||
675 | mcall |
||
676 | add ebx,14 |
||
503 | heavyiron | 677 | add edx,36 |
485 | heavyiron | 678 | cmp [edx],byte 'x' |
679 | jne newline |
||
680 | |||
681 | call print_strings |
||
682 | |||
683 | mov eax,12 ; function 12:tell os about windowdraw |
||
684 | mov ebx,2 ; 2, end of draw |
||
685 | mcall |
||
686 | |||
687 | ret |
||
688 | |||
689 | |||
690 | ; DATA AREA |
||
691 | |||
692 | bcolor dd 0x335599 |
||
693 | |||
694 | icon_table: |
||
695 | |||
696 | times 4 db 'xxxx xxxx' |
||
697 | times 2 db ' ' |
||
698 | times 3 db 'xxxx xxxx' |
||
699 | times 1 db ' ' |
||
700 | |||
701 | icons_reserved: |
||
702 | |||
703 | times 10 db ' ' |
||
704 | |||
705 | |||
706 | text: |
||
503 | heavyiron | 707 | db 0,0,0,0, 'Click on icon position to edit ' |
708 | db 0,0,0,0, ' ' |
||
709 | db 255,255,255,0 , 'Icon text ' |
||
710 | db 255,255,255,0 , 'Icon app ' |
||
711 | db 255,255,255,0 , 'Icon file ' |
||
712 | db 0,0,0,0, ' ' |
||
713 | db 255,255,255,0, ' Save and apply all changes ' |
||
714 | db 0,0,0,0, ' ' |
||
715 | db 255,255,255,0, ' Add icon Remove icon' |
||
716 | db 'x' ; <- End marker, dont delete |
||
485 | heavyiron | 717 | |
718 | |||
719 | title db 'Icon manager',0 |
||
720 | |||
721 | icons dd 0 |
||
722 | |||
723 | addr dd 0 |
||
724 | ya dd 0 |
||
725 | |||
503 | heavyiron | 726 | add_text db 'Press button of unused icon position',0 |
485 | heavyiron | 727 | |
503 | heavyiron | 728 | rem_text db 'Press button of used icon ',0 |
485 | heavyiron | 729 | |
730 | finfo_start: |
||
731 | dd 7 |
||
732 | dd 0 |
||
733 | dd icon_start_parameters |
||
734 | dd 0 |
||
735 | dd 0 |
||
736 | db 0 |
||
737 | dd icon_path |
||
738 | |||
739 | icon_path db '/rd/1/@ICON',0 |
||
740 | |||
741 | finfo: |
||
742 | dd 0 |
||
743 | dd 0 |
||
744 | dd 0 |
||
745 | dd 0 |
||
746 | dd icon_data |
||
747 | db 0 |
||
748 | dd icon_list |
||
749 | |||
750 | icon_list db '/rd/1/icons.dat',0 |
||
751 | |||
752 | icon_start_parameters: |
||
753 | db 25,1,1,1 |
||
754 | db 35,1,1,1 |
||
755 | db '/rd/1/icons/fs.ico',0 |
||
756 | rb 12 |
||
757 | db '/rd/1/kfar',0 |
||
758 | rb 20 |
||
759 | db 'KFAR ' |
||
760 | |||
761 | icon_default: |
||
762 | db 'AA-/rd/1/icons/fs.ico -/rd/1/kfar -KFAR *',13,10 |
||
763 | |||
764 | icon_data: ; data length 76+2 |
||
765 | |||
766 | rb 4096 |
||
767 | |||
768 | I_Param: |
||
769 | |||
770 | I_END:-> |