5,12 → 5,36 |
;* Compile with flat assembler * |
;* * |
;******************************** |
; 22.02.05 was modified for work with new multi-thread ICON. |
; 8.03.07 ïåðåõîä íà 70 ôóíêöèþ by SPraid |
;--------------------------------------------------------------------- |
; version: 2.1 |
; last update: 17/03/2012 |
; changed by: Marat Zakiyanov aka Mario79, aka Mario |
; changes: Global optimization! The program uses |
; only 161 KB of memory instead of 603 kb is now. |
;--------------------------------------------------------------------- |
; version: 2.02 |
; last update: 15/03/2012 |
; changed by: Marat Zakiyanov aka Mario79, aka Mario |
; changes: some optimisations and code refactoring |
;--------------------------------------------------------------------- |
; version: 2.01 |
; last update: 27/09/2011 |
; changed by: Marat Zakiyanov aka Mario79, aka Mario |
; changes: deactivate the window after click |
; (working to kernel r.2244 and above) |
;--------------------------------------------------------------------- |
; Many fix's and changes created by: |
; Halyavin, Diamond, Heavyiron, |
; SPraid, Dunkaist |
;--------------------------------------------------------------------- |
; version: 2.00 |
; last update: 22|02|2005 |
; changed by: Willow and Mario79 |
; changes: modified for work with new multi-thread ICON. |
;****************************************************************************** |
RAW_SIZE equ 350000 |
ICON_SIZE equ 32*32*3 |
GIF_SIZE equ 45000 |
RAW_SIZE equ ICON_SIZE*32 ;350000 |
GIF_SIZE equ 12*1024 ;45000 |
REC_SIZE equ 80 |
ICONS_DAT equ '/sys/ICONS.DAT' |
ICON_APP equ '/sys/ICON' |
18,13 → 42,14 |
;------------------------------------------------------------------------------ |
use32 |
org 0x0 |
db 'MENUET01' ; 8 byte id |
dd 0x01 ; header version |
dd START ; start of code |
dd I_END ; size of image |
dd icon_data+0x30000 ; memory for app |
dd stack_area ; esp |
dd I_Param , 0x0 ; I_Param , I_Icon |
db 'MENUET01' ; 8 byte id |
dd 0x01 ; header version |
dd START ; start of code |
dd IM_END ; size of image |
dd I_END ; memory for app |
dd stack_area ; esp |
dd I_Param ; boot parameters |
dd 0x0 ; path |
;------------------------------------------------------------------------------ |
include '../../../macros.inc' |
include 'lang.inc' |
33,7 → 58,7 |
;include 'debug.inc' |
purge newline |
;------------------------------------------------------------------------------ |
START: ; start of execution |
START: ; start of execution |
mcall 70,finfo |
cmp ebx,GIF_SIZE |
ja close |
50,7 → 75,7 |
je load_icon_list2 |
call load_icon_list |
red: |
call draw_window ; at first, draw the window |
call draw_window ; at first, draw the window |
mov esi,[current_icon] |
jmp band |
;------------------------------------------------------------------------------ |
57,14 → 82,14 |
align 4 |
still: |
mcall 10 ; wait here for event |
dec eax ; redraw request ? |
dec eax ; redraw request ? |
jz red |
|
dec eax ; key in buffer ? |
dec eax ; key in buffer ? |
jz key |
;------------------------------------------------------------------------------ |
align 4 |
button: ; button |
button: |
mcall 17 ; get id |
shr eax,8 |
|
71,8 → 96,8 |
; dps "button id: " |
; dpd eax |
; newline_1 |
|
cmp eax,1 ; button id=1 ? |
|
cmp eax,1 ; button id=1 ? |
je close |
;-------------------------------------- |
align 4 |
147,9 → 172,9 |
call read_string |
jmp still |
;-------------------------------------- |
align 4 |
align 4 |
no_str: |
cmp eax,21 ; apply changes |
cmp eax,21 ; apply changes |
jne no_apply |
; (1) save list |
mov ebx,finfo ; Change by spraid |
161,8 → 186,8 |
call lst_path |
mcall 70 |
; (2) terminate all icons |
or ecx,-1 |
mcall 9,I_END |
or ecx,-1 |
mcall 9,process_table |
mov edi,[ebx+30] |
;-------------------------------------- |
align 4 |
173,14 → 198,14 |
newread: |
inc esi |
mov ecx,esi |
mcall 9,I_END |
mcall 9,process_table |
cmp edi,[ebx+30] |
je newread |
|
cmp esi,eax |
jg all_terminated |
jg apply_changes |
|
mov eax,[ebx+10] ;[I_END+10] |
mov eax,[ebx+10] |
and eax,not 20202020h |
cmp eax,'@ICO' |
jz @f |
190,10 → 215,10 |
align 4 |
@@: |
mov eax,51 |
cmp eax,[ebx+42] ;[I_END+42] |
cmp eax,[ebx+42] |
jne newread |
|
cmp eax,[ebx+46] ;[I_END+46] |
cmp eax,[ebx+46] |
jne newread |
|
mov ecx,esi |
202,28 → 227,27 |
;------------------------------------------------------------------------------ |
align 4 |
finfo_start: |
dd 7 |
dd 0 |
.params dd 0 |
dd 0 |
dd 0 |
db 0 |
dd finfo.path |
dd 7 |
dd 0 |
.params dd 0 |
dd 0 |
dd 0 |
db 0 |
dd finfo.path |
;------------------------------------------------------------------------------ |
align 4 |
finfo: |
dd 0 |
dd 0 |
dd 0 |
dd GIF_SIZE |
dd gif_file |
dd 0 |
dd 0 |
dd 0 |
dd GIF_SIZE |
dd gif_file |
.path: |
db ICON_STRIP,0 |
rb 31-($-.path) |
db ICON_STRIP,0 |
rb 31-($-.path) |
;------------------------------------------------------------------------------ |
align 4 |
all_terminated: |
;apply_changes: |
apply_changes: |
mov ebx, finfo_start |
mov dword [ebx+8], boot_str+6 |
mov esi, iconname |
233,7 → 257,7 |
;------------------------------------------------------------------------------ |
align 4 |
no_apply: |
cmp eax,22 ; user pressed the 'add icon' button |
cmp eax,22 ; user pressed the 'add icon' button |
jne no_add_icon |
|
mov ebx,24*65536+250+8*14 |
250,10 → 274,9 |
mov edi,eax |
sub eax,40 |
|
xor edx,edx ; bcd -> 10 |
xor edx,edx ; bcd -> 10 |
mov ebx,16 |
div ebx |
; imul eax,10 |
; multiply x10 |
shl eax,1 ; multiply x2 |
lea eax,[eax+eax*4] ; multiply x5 |
296,7 → 319,7 |
;-------------------------------------- |
align 4 |
no_add_icon: |
cmp eax,23 ; user pressed the remove icon button |
cmp eax,23 ; user pressed the remove icon button |
jne no_remove_icon |
|
mov ebx,24*65536+250+8*14 |
309,13 → 332,12 |
mcall 17 |
shr eax,8 |
cmp eax,40 |
jb red;no_f;ound |
jb red |
sub eax,40 |
|
xor edx,edx |
mov ebx,16 |
div ebx |
; imul eax,10 |
; multiply x10 |
shl eax,1 ; multiply x2 |
lea eax,[eax+eax*4] ; multiply x5 |
374,7 → 396,7 |
;-------------------------------------- |
align 4 |
no_remove_icon: |
cmp eax,40 ; user pressed button for icon position |
cmp eax,40 ; user pressed button for icon position |
jb still |
mov edi,eax |
sub eax,40 |
416,7 → 438,7 |
pusha |
mcall 13,<100,180>,<278+12,40>,0xffffff ; clear text area |
xor edi,edi |
mov eax,4 ; icon text |
mov eax,4 ; icon text |
mov ebx,100*65536+278+14 |
mov ecx,3 |
;-------------------------------------- |
440,13 → 462,13 |
;------------------------------------------------------------------------------ |
align 4 |
load_icon_list: |
mov edi,icons_reserved ; clear reserved area |
mov edi,icons_reserved ; clear reserved area |
mov eax,32 |
mov ecx,10*9 |
cld |
rep stosb |
|
mov ecx,[icons] ; set used icons to reserved area |
mov ecx,[icons] ; set used icons to reserved area |
mov esi,icon_data |
;-------------------------------------- |
align 4 |
569,8 → 591,8 |
ret |
;------------------------------------------------------------------------------ |
align 4 |
key: ; key |
mcall 2 ; just read it and ignore |
key: |
mcall 2 ; just read it and ignore |
jmp still |
;------------------------------------------------------------------------------ |
; ********************************************* |
579,7 → 601,7 |
align 4 |
draw_window: |
mcall 12,1 |
; DRAW WINDOW |
; DRAW WINDOW |
xor eax,eax |
xor esi,esi |
mcall ,<210,300>,<30,(390-14)>,0x14ffffff,,title |
649,7 → 671,7 |
;-------------------------------------- |
align 4 |
draw_btns: |
mov eax,0 ; DRAW BUTTONS ON WINDOW AREA |
mov eax,0 ; DRAW BUTTONS ON WINDOW AREA |
mov ebx,20 shl 16+25 |
mov ecx,35 shl 16+19 |
mov edi,icon_table |
759,14 → 781,14 |
bcolor dd 0x335599 |
;------------------------------------------------------------------------------ |
icon_table: |
times 4 db 'xxxx xxxx' |
times 2 db ' ' |
times 1 db ' ' |
times 2 db 'xxxx xxxx' |
; times 1 db ' ' |
times 4 db 'xxxx xxxx' |
times 2 db ' ' |
times 1 db ' ' |
times 2 db 'xxxx xxxx' |
; times 1 db ' ' |
;------------------------------------------------------------------------------ |
icons_reserved: |
times 9 db ' ' |
times 9 db ' ' |
;------------------------------------------------------------------------------ |
if lang eq ru |
text: |
847,8 → 869,8 |
;------------------------------------------------------------------------------ |
align 4 |
calc_icon_pos: |
movzx eax,byte [ebp-20] ; x position |
sub eax,'A' ;eax - number of letter |
movzx eax,byte [ebp-20] ; x position |
sub eax,'A' ;eax - number of letter |
cmp eax,4 |
jg no_left |
|
869,12 → 891,12 |
align 4 |
x_done: |
mov [ebp-12],eax |
movzx eax,byte [ebp-20+1] ; y position |
sub eax,'A' ; eax - number of letter |
movzx eax,byte [ebp-20+1] ; y position |
sub eax,'A' ; eax - number of letter |
cmp eax,4 |
jg no_up |
|
shl eax,6 ;imul eax,80 |
shl eax,6 ;imul eax,80 |
add eax,16 |
movzx ebx,[warea.top] |
add eax,ebx |
883,7 → 905,7 |
align 4 |
no_up: |
sub eax,9 |
shl eax,6 ;imul eax,80 |
shl eax,6 ;imul eax,80 |
sub eax,16-1 |
movzx ebx,[warea.bottom] |
add eax,ebx |
910,7 → 932,7 |
apply_changes2: |
mov edi,[icons] |
mov esi,icon_data |
mov ebp,0x5000 ; threads stack starting point |
mov ebp,thread_stack+0x100 ;0x5000 ; threads stack starting point |
;-------------------------------------- |
align 4 |
start_new: |
923,12 → 945,13 |
mcall 51,1,thread |
add ebp,0x100 |
|
mov eax,5 |
; change to next thread if mutex is blocked |
mov eax,68 |
mov ebx,1 |
;-------------------------------------- |
align 4 |
wait_thread_start: ;wait until thread draw itself first time |
cmp [create_thread_event],bl |
wait_thread_start: ;wait until thread draw itself first time |
cmp [create_thread_event],bl ;mutex |
jz wait_thread_end |
mcall |
jmp wait_thread_start |
935,7 → 958,7 |
;-------------------------------------- |
align 4 |
wait_thread_end: |
dec [create_thread_event] ;reset event |
dec [create_thread_event] ;reset event |
add esi,REC_SIZE |
dec edi |
jnz start_new |
945,12 → 968,20 |
or eax,-1 |
mcall |
;------------------------------------------------------------------------------ |
; esp-28 = start of thread stack |
; esp-24 = ??? |
; esp-20 = 'AA-F' or... |
; esp-16 = ??? SHL greedy maniac mode on! |
; esp-12 = ebp+0 = X |
; esp-8 = ebp+4 = Y |
; esp-4 = ebp+8 = adress of icon_data |
;------------------------------------------------------------------------------ |
align 4 |
thread: |
; pop ebp ;ebp - address of our icon |
sub esp,12 |
mov ebp,esp |
sub esp,16 |
call shape_window |
call draw_window2 |
mov [create_thread_event],1 |
mcall 40,010101b |
965,9 → 996,7 |
je button2 |
|
call get_bg_info |
mov eax,5 |
mov ebx,1 |
call draw_icon2 |
call draw_icon2_1 |
|
jmp still2 |
;------------------------------------------------------------------------------ |
982,11 → 1011,11 |
add ebp,+12 |
call calc_icon_pos |
add ebp,-12 |
mcall 9,I_END,-1 |
mov eax,[I_END+process_information.box.left] |
mcall 9,process_table,-1 |
mov eax,[process_table+process_information.box.left] |
cmp eax,[ebp+0] |
jne @f |
mov eax,[I_END+process_information.box.top] |
mov eax,[process_table+process_information.box.top] |
cmp eax,[ebp+4] |
je .lp1 |
;-------------------------------------- |
1006,7 → 1035,7 |
cmp ah, 2 |
jnz still2 |
|
mcall 9,I_END,-1 |
mcall 9,process_table,-1 |
mov ecx,[ebx+30] ; PID |
mcall 18,21 |
mov edx,eax ; SLOT |
1064,7 → 1093,7 |
;-------------------------------------- |
align 4 |
.noms: |
and byte[edi],0 |
and byte[edi],0 |
; call debug_outstr |
; dps <'<',13,10> |
pop edi esi |
1114,7 → 1143,8 |
;------------------------------------------------------------------------------ |
align 4 |
draw_picture: |
mov [image],0x3000 |
mov [image],image_area |
|
mov edi,[ebp+8] |
lea esi,[edi+12] |
call atoi |
1127,7 → 1157,7 |
lea edi,[eax+strip_file+8] |
xor ebx,ebx |
xor ecx,ecx |
mov esi,edi;strip_file+8+(32*3*32)*2 |
mov esi,edi |
|
mov [pixpos],0 |
;-------------------------------------- |
1148,8 → 1178,6 |
mov esi,edi |
add esi,[pixpos] |
;-------------------------------------- |
align 4 |
no_correction_pixpos: |
add [pixpos],3 |
mov eax,[esi] |
and eax,0xffffff |
1218,21 → 1246,26 |
|
mov edx,eax |
mov eax,[image] |
mov [eax],edx |
|
mov [eax],dl |
inc eax |
ror edx,8 |
|
mov [eax],dl |
inc eax |
ror edx,8 |
|
mov [eax],dl |
|
inc eax |
mov [image],eax |
inc ebx |
|
mov eax,[yw] |
inc eax |
cmp ebx,eax |
jnz newb |
jb newb |
|
xor ebx,ebx |
|
inc ecx |
1253,7 → 1286,7 |
align 4 |
toponly: |
xor edx,edx |
mcall 7,0x3000,<52,52> |
mcall 7,image_area,<52,52> |
;-------------------------------------- |
align 4 |
.ex: |
1266,9 → 1299,6 |
add esi,3 |
push edi |
mov edi,title |
; mov ecx,8 |
; cld |
; rep movsb |
mov ecx,8/4 |
cld |
rep movsd |
1289,14 → 1319,14 |
mov [tl],eax |
|
mov eax,[tl] |
lea eax,[eax+eax*2] ; eax *= char_width/2 |
lea eax,[eax+eax*2] ; eax *= char_width/2 |
shl eax,16 |
|
mov ebx,27 shl 16+40 |
sub ebx,eax |
|
xor ecx,ecx ; black shade of text |
add ebx,1 shl 16 ;*65536+1 |
xor ecx,ecx ; black shade of text |
add ebx,1 shl 16 ;*65536+1 |
mcall 4,,,title,[tl] |
|
inc ebx |
1325,7 → 1355,7 |
|
inc ebx |
mcall ,,0xffffff |
mov [draw_pic],0 |
mov [draw_pic],0 |
ret |
;------------------------------------------------------------------------------ |
; ********************************************* |
1336,22 → 1366,25 |
mcall 12,1 |
|
; DRAW WINDOW |
xor eax,eax ; function 0 : define and draw window |
xor eax,eax ; function 0 : define and draw window |
mov ebx,[ebp+0-2] |
mov ecx,[ebp+4-2] |
add ebx,[yw] ; [x start] *65536 + [x size] |
add ecx,51 ; [y start] *65536 + [y size] |
mov edx,0x41000000 ; color of work area RRGGBB,8->color gl |
mov bx,[yw] ; [x start] *65536 + [x size] |
mov cx,51 ; [y start] *65536 + [y size] |
mov edx,0x41000000 ; color of work area RRGGBB,8->color gl |
mcall |
|
mcall 8,51,50,0x40000002 ; button |
|
mov eax,5 |
;-------------------------------------- |
align 4 |
draw_icon2_1: |
; change to next thread if mutex is blocked |
mov eax,68 |
mov ebx,1 |
;-------------------------------------- |
align 4 |
draw_icon2: |
xchg [load_pic],bl |
xchg [load_pic],bl ;mutex |
test bl,bl |
je draw_icon_end |
mcall |
1359,12 → 1392,13 |
;-------------------------------------- |
align 4 |
draw_icon_end: |
mov eax,5 |
; change to next thread if mutex is blocked |
mov eax,68 |
mov ebx,1 |
;-------------------------------------- |
align 4 |
draw_icon_2: |
xchg [draw_pic],bl |
xchg [draw_pic],bl ;mutex |
test bl,bl |
je draw_icon_end_2 |
mcall |
1372,14 → 1406,81 |
;-------------------------------------- |
align 4 |
draw_icon_end_2: |
mcall 9,process_table,-1 |
call draw_picture |
call draw_text |
mcall 12,2 |
ret |
;------------------------------------------------------------------------------ |
shape_window: |
; give the shape reference area |
mcall 50,0,shape_reference |
; give the shape scale 32 x 32 -> 128 x 128 ecx = 2 |
; you dont have to give this, scale is 1:1 by default |
; mcall 50,1,2 |
ret |
;------------------------------------------------------------------------------ |
shape_reference: ; 32 x 32 ( window_size_X + 1 ) * ( window_size_Y + 1 ) |
|
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
|
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
|
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
|
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
|
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
|
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 |
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 |
;------------------------------------------------------------------------------ |
tl dd 8 |
yw dd 51 |
yw: dd 51 |
ya dd 0 |
cur_btn dd 40 |
|
1387,19 → 1488,16 |
load_pic db 0 |
create_thread_event db 0 |
|
image dd 0x3000 |
image dd image_area |
|
I_Param: |
icon_data = I_END+0x1400 |
stack_area = I_END+0x3400-4 |
process_table = I_END+0x3400 |
|
IncludeUGlobals |
;------------------------------------------------------------------------------ |
IM_END: |
;------------------------------------------------------------------------------ |
align 4 |
bgrx dd ? |
bgry dd ? |
param_str rb 31 |
|
;////////////////////////// |
|
bgrxy dd ? |
warea: |
.by_x: |
1419,10 → 1517,42 |
cur_band dd ? |
sel_icon1 rd 1 |
icon_count rd 1 |
;------------------------------------------------------------------------------ |
align 4 |
param_str rb 31 |
;------------------------------------------------------------------------------ |
align 4 |
gif_file rb GIF_SIZE |
;------------------------------------------------------------------------------ |
align 4 |
strip_file rb RAW_SIZE |
|
IncludeUGlobals |
|
;------------------------------------------------------------------------------ |
align 4 |
process_table: |
rb 0x400 |
;------------------------------------------------------------------------------ |
align 4 |
icon_data: |
rb 0x1000 |
;------------------------------------------------------------------------------ |
align 4 |
rb 0x1000 |
stack_area: |
;------------------------------------------------------------------------------ |
align 4 |
I_Param: |
rb 0x100 ; max 256 |
;------------------------------------------------------------------------------ |
align 4 |
thread_stack: |
rb 0x100*48 ; max 48 icons |
;------------------------------------------------------------------------------ |
align 4 |
image_area: |
rb 52*52*3 |
;------------------------------------------------------------------------------ |
;align 4 |
;shape_reference_0: |
; rb 52*52 ; ( window_size_X + 1 ) * ( window_size_Y + 1 ) |
;------------------------------------------------------------------------------ |
I_END: |
;------------------------------------------------------------------------------ |