27,13 → 27,11 |
;0.12 open/save dialog ~13.09.2004 |
;0.13 dialogs bugs deleted |
;0.14 drawlbut ~03.10.2004 |
;0.15 extendet label! |
|
; LOADFILE |
; (SYNTAX) LOADFILE 'full_path_to_file',file_load_area,file_temp_area |
; (SAMPLE) LOADFILE '/rd/1/clock.bmp',load_area,temp_area |
|
|
macro loadfile file_name,file_load_area,file_temp_area |
{ |
local open,fileinfo,string |
50,7 → 48,7 |
mov dword [fileinfo+8],1 ; how many blocks to read (1) |
mov eax,58 |
mov ebx,fileinfo |
int 0x40 |
mcall |
mov eax,[file_load_area+2] |
shr eax,9 ; ¯®¤¥«¨¬ 512 ¨ ¯à¨¡ ¢¨¬ 1 - ¯®«ã稬 ç¨á«® ¡«®ª®¢ |
inc eax |
57,79 → 55,29 |
mov dword [fileinfo+8],eax |
mov eax,58 |
mov ebx,fileinfo |
int 0x40 |
mcall |
} |
|
|
;macro wordstoreg reg,hiword,loword |
;{ |
;if hiword eqtype 0 & loword eqtype 0 |
; mov reg,dword hiword*65536+loword |
;else if hiword eqtype 12 & loword eqtype eax |
; mov reg,dword hiword*65536 |
; add reg,dword loword |
;else if hiword eqtype 12 & loword eqtype [123] |
; mov reg,dword hiword*65536 |
; add reg,dword loword |
;else |
; mov reg,dword hiword |
; shl reg,16 |
; add reg,dword loword |
;end if |
;} |
|
macro dword2reg reg,doubleword |
macro wordstoreg reg,hiword,loword |
{ |
if doubleword eq |
; not changes |
if hiword eqtype 0 & loword eqtype 0 |
mov reg,(hiword)*65536+(loword) |
else if hiword eqtype 12 & loword eqtype eax |
mov reg,(hiword)*65536 |
add reg,loword |
else if hiword eqtype 0 & loword eqtype [123] |
mov reg,(hiword)*65536 |
add reg,loword |
else if (hiword eq ) & (loword eq ) |
else |
mov reg,dword doubleword |
end if |
} |
|
macro words2reg reg,hiword,lowword |
{ |
if hiword eq |
if lowword eq |
; not changes |
else |
if lowword eqtype 12 |
and reg,dword 0xffff0000 |
add reg,dword lowword |
else |
and reg,dword 0xffff0000 |
add reg,dword lowword |
end if |
end if |
else |
if lowword eq |
if hiword eqtype 12 |
and reg,dword 0x0000ffff |
add reg,dword hiword*65536 |
else |
mov reg,hiword |
shl reg,16 |
add reg,dword hiword |
ror reg,16 |
add reg,loword |
end if |
else |
if lowword eqtype 12 & hiword eqtype 12 |
if lowword eq 0 & hiword eq 0 |
xor reg,reg |
else |
mov reg,dword hiword*65536+lowword |
end if |
else |
mov reg,dword hiword |
shl reg,16 |
add reg,dword lowword |
end if |
end if |
end if |
} |
|
|
|
|
; DRAW BUTTON with label |
|
macro drawlbut x,y,xs,ys,text,id,bcolor,tcolor |
138,12 → 86,12 |
jmp asd |
lab db text ;arg label |
asd: |
words2reg ebx,x,xs |
words2reg ecx,y,ys |
wordstoreg ebx,x,xs |
wordstoreg ecx,y,ys |
mov edx,id |
mov esi,bcolor |
mov eax,8 |
int 0x40 |
mcall |
|
mov eax,asd-lab ;calc size |
mov ebx,6 |
168,7 → 116,7 |
mov edx,lab |
mov esi,asd-lab ;calc size |
mov eax,4 |
int 0x40 |
mcall |
} |
|
|
197,7 → 145,7 |
mov eax,9 |
mov ebx,procinfo |
mov ecx,-1 |
int 0x40 |
mcall |
|
; convert eax bin to param dec |
mov eax,dword [procinfo+30] ;offset of myPID |
231,12 → 179,12 |
mov ebx,1 ; define IPC |
mov ecx,path ; offset of area |
mov edx,150 ; size 150 bytes |
int 0x40 |
mcall |
|
; change wanted events list 7-bit IPC event |
mov eax,40 |
mov ebx,01000111b |
int 0x40 |
mcall |
|
; |
; STEP 3 run SYSTEM XTREE with parameters |
244,7 → 192,7 |
|
mov eax,58 |
mov ebx,run_fileinfo |
int 0x40 |
mcall |
|
call redproc |
|
252,7 → 200,7 |
getmesloop: |
mov eax,23 |
mov ebx,50 ;0.5 sec |
int 0x40 |
mcall |
|
cmp eax,1 |
je mred |
267,7 → 215,7 |
mov ebx,procinfo |
mov ecx,-1 |
mov eax,9 |
int 0x40 |
mcall |
mov ebp,eax |
|
loox: |
274,7 → 222,7 |
mov eax,9 |
mov ebx,procinfo |
mov ecx,ebp |
int 0x40 |
mcall |
mov eax,[DLGPID] |
cmp [procinfo+30],eax ;IF Dialog find |
je dlg_is_work ;jmp to dlg_is_work |
299,15 → 247,15 |
jmp getmesloop |
mkey: |
mov eax,2 |
int 0x40 ; read (eax=2) |
mcall ; read (eax=2) |
jmp getmesloop |
mbutton: |
mov eax,17 ; get id |
int 0x40 |
mcall |
cmp ah,1 ; button id=1 ? |
jne getmesloop |
mov eax,-1 ; close this program |
int 0x40 |
mcall |
mgetmes: |
|
; If dlg_pid_get then second message get jmp to still |
380,7 → 328,7 |
db '/RD/1/SYSXTREE',0 |
|
procinfo: |
times 1024 db 0 |
times 256 db 0 |
} |
|
|
409,7 → 357,7 |
mov eax,9 |
mov ebx,procinfo |
mov ecx,-1 |
int 0x40 |
mcall |
|
; convert eax bin to param dec |
mov eax,dword [procinfo+30] ;offset of myPID |
442,13 → 390,13 |
mov eax,60 |
mov ebx,1 ; define IPC |
mov ecx,path ; offset of area |
mov edx,150 ; size 150 bytes |
int 0x40 |
mov edx,120 ; size 150 bytes |
mcall |
|
; change wanted events list 7-bit IPC event |
mov eax,40 |
mov ebx,01000111b |
int 0x40 |
mcall |
|
; |
; STEP 3 run SYSTEM XTREE with parameters |
456,7 → 404,7 |
|
mov eax,58 |
mov ebx,run_fileinfo |
int 0x40 |
mcall |
|
call redproc |
|
464,7 → 412,7 |
getmesloop: |
mov eax,23 |
mov ebx,50 ;0.5 sec |
int 0x40 |
mcall |
|
cmp eax,1 |
je mred |
479,7 → 427,7 |
mov ebx,procinfo |
mov ecx,-1 |
mov eax,9 |
int 0x40 |
mcall |
mov ebp,eax |
|
loox: |
486,7 → 434,7 |
mov eax,9 |
mov ebx,procinfo |
mov ecx,ebp |
int 0x40 |
mcall |
mov eax,[DLGPID] |
cmp [procinfo+30],eax ;IF Dialog find |
je dlg_is_work ;jmp to dlg_is_work |
510,16 → 458,15 |
call redproc |
jmp getmesloop |
mkey: |
mov eax,2 |
int 0x40 ; read (eax=2) |
mcall ; read (eax=2) |
jmp getmesloop |
mbutton: |
mov eax,17 ; get id |
int 0x40 |
mcall |
cmp ah,1 ; button id=1 ? |
jne getmesloop |
mov eax,-1 ; close this program |
int 0x40 |
mcall |
mgetmes: |
|
; If dlg_pid_get then second message get jmp to still |
579,8 → 526,8 |
DLGPID dd 0 |
|
param: |
dd 0 ; My dec PID |
dd 0,0 ; Type of dialog |
rb 4 ; My dec PID |
rb 6 ; Type of dialog |
|
run_fileinfo: |
dd 16 |
588,11 → 535,11 |
dd param |
dd 0 |
dd procinfo |
;run_filepath: |
run_filepath: |
db '/RD/1/SYSXTREE',0 |
|
procinfo: |
times 1024 db 0 |
times 256 db 0 |
} |
|
|
671,7 → 618,7 |
macro scank |
{ |
mov eax,10 |
int 0x40 |
mcall |
} |
|
macro putpix x,y,color |
680,7 → 627,7 |
mov ecx,y |
mov edx,color |
mov eax,1 |
int 0x40 |
mcall |
} |
|
macro puttxt x,y,offs,size,color |
688,17 → 635,12 |
; mov ebx,x |
; shl ebx,16 |
; add ebx,y |
words2reg ebx,x,y |
|
dword2reg ecx,color |
dword2reg edx,offs |
dword2reg esi,size |
|
; mov ecx,color |
; mov edx,offs |
; mov esi,size |
wordstoreg ebx,x,y |
mov ecx,color |
mov edx,offs |
mov esi,size |
mov eax,4 |
int 0x40 |
mcall |
} |
|
macro outcount data, x, y, color, numtype |
707,10 → 649,10 |
mov ebx,numtype |
mov bl,0 |
; mov edx,x*65536+y |
words2reg edx,x,y |
wordstoreg edx,x,y |
mov esi,color |
mov eax,47 |
int 0x40 |
mcall |
} |
|
; SCEVENT - Scan event |
718,7 → 660,7 |
macro scevent red,key,but |
{ |
mov eax,11 |
int 0x40 |
mcall |
dec eax |
jz red |
dec eax |
732,7 → 674,7 |
macro wtevent red,key,but |
{ |
mov eax,10 |
int 0x40 |
mcall |
dec eax |
jz red |
dec eax |
747,7 → 689,7 |
{ |
mov eax,23 |
mov ebx,xfps |
int 0x40 |
mcall |
cmp eax,0 |
je noevent |
dec eax |
764,7 → 706,7 |
macro close |
{ |
mov eax,-1 |
int 0x40 |
mcall |
} |
|
; DELAY - Create delay 1/100 sec |
775,7 → 717,7 |
{ |
mov eax,5 |
mov ebx,arg1 |
int 0x40 |
mcall |
} |
|
; WINDOW - Draw window |
786,11 → 728,11 |
{ |
; mov ebx,arg1*65536+arg3 |
; mov ecx,arg2*65536+arg4 |
words2reg ebx,arg1,arg3 |
words2reg ecx,arg2,arg4 |
wordstoreg ebx,arg1,arg3 |
wordstoreg ecx,arg2,arg4 |
mov edx,arg5 |
mov eax,0 |
int 0x40 |
mcall |
} |
|
macro colorwindow arg1,arg2,arg3,arg4,arg5,arg6,arg7 |
801,7 → 743,7 |
mov esi,arg6 |
mov edi,arg7 |
mov eax,0 |
int 0x40 |
mcall |
} |
|
|
811,7 → 753,7 |
{ |
mov eax,12 |
mov ebx,1 |
int 0x40 |
mcall |
} |
|
; ENDWD - End window draw |
820,7 → 762,7 |
{ |
mov eax,12 |
mov ebx,2 |
int 0x40 |
mcall |
} |
|
; LABEL - Put text to frame |
836,15 → 778,14 |
; mov ebx,arg1 ;arg1=y arg2=x |
; shl ebx,16 |
; add ebx,arg2 |
|
words2reg ebx,arg1,arg2 |
|
dword2reg ecx,arg4 |
|
wordstoreg ebx,arg1,arg2 |
if ~(arg4 eq ) |
mov ecx,arg4 ;arg4 color |
end if |
mov edx,lab |
mov esi,asd-lab ;calc size |
mov eax,4 |
int 0x40 |
mcall |
} |
|
;Key's |