/programs/demos/numcalc/trunk/build.bat |
---|
File deleted |
\ No newline at end of file |
/programs/demos/numcalc/trunk/@numcalc.asm |
---|
File deleted |
Property changes: |
Deleted: svn:executable |
-* |
\ No newline at end of property |
/programs/demos/bgitest/trunk/bgifont.inc |
---|
570,6 → 570,12 |
jg .nobold |
end if |
mov edx,[.color] |
; \begin{diamond}[18.08.2006] |
; starting from K0530 kernel interprets flag 0x1000000 as |
; negate existing pixels colors, disregarding passed color |
; we do not want this |
and edx, 0xFFFFFF |
; \end{diamond}[18.08.2006] |
mov eax,38 |
int 0x40 |
test ebp,BGI_BOLD |
/programs/demos/bgitest/trunk/bgitest.asm |
---|
72,7 → 72,6 |
include 'macros.inc' |
;include 'debug.inc' |
include 'bgifont.inc' |
lang equ en;ru;en |
START: |
mov [help],0 |
/programs/develop/examples/numcalc/trunk/@numcalc.asm |
---|
0,0 → 1,49 |
use32 |
db 'MENUET01' |
dd 1 |
dd start |
dd i_end |
dd mem |
dd mem |
dd 0 |
dd 0 |
start: |
push 66 |
pop eax |
push 4 |
pop ebx |
mov cl, 45h ; NumLock scancode |
xor edx, edx |
int 40h |
mov al, 40 ; ñòàðøèå áèòû óæå îáíóëåíû |
mov bl, 2 ; ñòàðøèå áèòû óæå îáíóëåíû |
int 40h |
event: |
push 10 |
pop eax |
int 40h |
; ó íàñ ìîæåò áûòü òîëüêî îäíî ñîáûòèå - íàæàòà êëàâèøà |
mov al, 2 |
int 40h |
cmp al, 2 |
jnz event |
; ó íàñ åñòü òîëüêî îäíà ãîðÿ÷àÿ êëàâèøà |
push 70 |
pop eax |
mov ebx, fileinfo |
int 40h |
jmp event |
fileinfo: |
dd 7 |
dd 0 |
dd 0 |
dd 0 |
dd 0 |
db '/rd/1/calc',0 |
i_end: |
align 16 |
rb 16 |
mem: |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
/programs/develop/examples/numcalc/trunk/build.bat |
---|
0,0 → 1,2 |
@fasm @numcalc.asm @numcalc |
@pause |
/programs/develop/heed/trunk/heed.asm |
---|
1159,7 → 1159,7 |
add edx,14 ;help_text addr. |
add esi,37 ; = 51 - length 1 line |
mov ecx,0x00ffffff |
mov edi,15 |
mov edi,(help_end-help_text)/51 |
@@: |
add ebx,0x10 |
int 0x40 |
1329,6 → 1329,7 |
;text for help_window |
help_label: db 'Help for HeEd.' |
help_text: |
if lang eq ru |
db '1.HeEd ¢ á®áâ®ï¨¨ ®âªàëâì ä ©« ⮫쪮 ®¤¨ à § ¨ ' |
db ' 㦮¥ ç¨á«® à § á®åà ¨âì ¥£®. ' |
db '2.ਠ®âªàë⨨ ä ©« ¡¥§ à áè¨à¥¨ï ¤® íâ® à áè¨-' |
1344,12 → 1345,27 |
db ' ¤¨âáï ¯ ¬ïâì á ¤à¥á 0å80000, ® à §¬¥à ä ©« ' |
db ' à ¢¥ 0xFFFFFFFF. ' |
db ' (á¬. ¨ä® "About") ' |
else |
db '1.HeEd can once open file and many times save it. ' |
db '2.To open file without extension it is required to ' |
db ' specify anyway as three spaces after a dot. ' |
db '3.File is opened when the button "Go" is pressed. ' |
db '4.Creation of new files in the menu is not provided' |
db ' but you can edit... ' |
db '5.Only number of bytes which was file size when ' |
db ' opening is written to file. ' |
db '6.If you press "Go" with empty filename field, ' |
db ' memory starting from address 0x80000 is output, ' |
db ' but file size equals to 0xFFFFFFFF. ' |
db ' (see info "About") ' |
end if |
help_end: |
;text for about_window |
about_label: db 'About this funny.' |
about_text: |
if lang eq ru |
db '¥ª®â®à ï ¨ä®à¬ æ¨ï ¤«ï â¥å, ªâ® § å®ç¥â ¤®¯¨á âì ' |
db 'áî¤ çâ®-⮠᢮¥: ª®¤ ¯à ªâ¨çªáª¨ ¥ ®¯â¨¬¨§¨à®¢ ,' |
db 'áî¤ çâ®-⮠᢮¥: ª®¤ ¯à ªâ¨ç¥áª¨ ¥ ®¯â¨¬¨§¨à®¢ ,' |
db 'â ª çâ® à §®¡à âìáï ¡ã¤¥â ¥ â ª 㦠᫮¦®. âப¨ ' |
db '¤«ï ª®¯®ª ¬¥î ¤®«¦ë ¨¤â¨ ¯àאַ ¤à㣠§ ¤à㣮¬, ' |
db 'â. ª. ï ¯à¨ ¢ë¢®¤¥ ¨á¯®«ì§ãî ¥ mov esi,à §¬¥à ¨ ' |
1363,6 → 1379,23 |
db 'ப á GUI MeOS ¨ ¯®í⮬㠥 ¯à¥â¥¤ã¥â çâ®-â® ' |
db '¡®«ì襥, 祬 ¯à¨¬¥à. à®áâ® ¤®¥« íâ ⥬ , ¢ë-' |
db 'ª¨ãâì ¦ «ª®. mailto:babalbes@yandex.ru ' |
else |
db 'Some information for those who want add to this ' |
db 'something their own: the code is practically not ' |
db 'optimized, so investigation is not complicated. ' |
db 'Strings for menu buttons must rank after each other' |
db 'as I use not mov esi,size and mov edx,address when ' |
db 'output but simply add offsets. For encodins and ' |
db 'file sizes for save, it remains only add buttons ' |
db 'with text in menu (at addition one should take into' |
db 'account that buttons ID are recognized as dec ah ' |
db 'rather than cmp ah,ID). Nevertheless if study is ' |
db 'unpleasant, you can write and ask. This program has' |
db 'been written in course of study GUI MeOS and does ' |
db 'not therefore pretend on some more than example. ' |
db 'Just this theme bothers, but I regret to delete. ' |
db ' mailto:babalbes@yandex.ru ' |
end if |
about_end: |
I_END: |
/programs/fs/sysxtree/trunk/SYSTR12.GIF |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/programs/fs/sysxtree/trunk/ascgl.inc |
---|
20,8 → 20,8 |
;0.07 convbmp ~13.05.2004 |
;0.08 fps ~14.05.2004 |
;0.09 drawfbox ~03.06.2004 |
;0.10 all macros optimized by halyavin, add at ~07.06.2004 |
;0.11 many macros optimized by halyavin, add at ~30.08.2004 |
;0.10 all macros optimized by Halyavin A., add at ~07.06.2004 |
;0.11 many macros optimized by Halyavin A., add at ~30.08.2004 |
;0.12 bmptoimg ~07.09.2004 |
;0.13 imgtoimg ~08.09.2004 |
;0.14 imgtoimg modify not brake bmp pict! ~09.09.2004 |
369,8 → 369,8 |
;DrawBox |
macro drawfbox x,y,xs,ys,color |
{ |
wordstoreg ebx,x,xs ;x*65536+xs |
wordstoreg ecx,y,ys ;y*65536+ys |
words2reg ebx,x,xs ;x*65536+xs |
words2reg ecx,y,ys ;y*65536+ys |
mov edx,color |
mov eax,13 |
int 0x40 |
405,7 → 405,7 |
mov [fps_cntr],0 |
out_fps: |
if ~(delcolor eq ) |
mov ebx,x*65536+30 |
mov ebx,x*65536+36 |
mov ecx,y*65536+7 |
mov edx,delcolor |
mov eax,13 |
413,7 → 413,7 |
end if |
mov dword [ttt],fps_show_frequency |
mov eax,47 |
mov ebx,5*65536 |
mov ebx,6*65536 |
; mov bl,0 |
mov edx,x*65536+y |
mov esi,color |
495,7 → 495,7 |
shl ecx,16 |
add cx,[arg3+4] |
; wordstoreg ecx,[arg3],[arg3+4] |
wordstoreg edx, x , y ;arg1*65536+arg2 |
words2reg edx, x , y ;arg1*65536+arg2 |
int 0x40 |
} |
504,7 → 504,7 |
mov eax,7 |
mov ebx,arg3 |
add ebx,8 |
wordstoreg edx, x , y ;arg1*65536+arg2 |
words2reg edx, x , y ;arg1*65536+arg2 |
add edx,dword [arg3] |
mov ecx,dword [arg3+4] |
int 0x40 |
806,7 → 806,7 |
local Gif_get_sym, shift, nextbl, noblock, loop1, exx |
local Gif_output, next, loop2 |
_null equ 0x1000 ; 0x1000 |
_null = 0x1000 ; 0x1000 |
; jmp sss |
; if defined gif_hash_offset |
1101,7 → 1101,7 |
local Gif_get_sym, shift, nextbl, noblock, loop1, exx |
local Gif_output, next, loop2 |
_null fix 0x1000 ; 0x1000 |
_null = 0x1000 ; 0x1000 |
mov esi,gifsrc ;ª § ⥫ì ä ¨« ¢ ¯ ¬ï⨠|
mov edi,imgsrc ;ª § ⥫ì ᯨ᮪ ª à⨮ª |
1291,7 → 1291,6 |
Gif_skipmap: |
; in: ecx - image descriptor, esi - pointer to colormap |
; out: edi - pointer to area after colormap |
and ecx,111b |
inc ecx ; color map size |
mov ebx,1 |
/programs/fs/sysxtree/trunk/ascgml.inc |
---|
0,0 → 1,49 |
lang equ ru |
; |
; Assembler |
; SMALL |
; CODE |
; GaMe |
; Libary |
; |
; Ver 0.03 By Pavlushin Evgeni (RUSSIA) |
; www.waptap@mail.ru |
;InfoList |
;0.01 correct |
;0.02 control ~14.05.2004 |
;0.03 all macros optimized by halyavin, add at ~07.06.2004 |
; corectiryemoe,corectnoe,step |
macro correct arg1,arg2,arg3 |
{ |
local plus,minus,equal |
mov eax,arg2 |
cmp arg1,eax |
je equal |
mov eax,arg3 |
ja minus |
plus: |
add arg1,eax |
jmp equal |
minus: |
sub arg1,eax |
equal: |
} |
macro control min,max,arg |
{ |
local gr,low,norm |
mov eax,max |
cmp arg,eax |
jg gr |
mov eax,min |
cmp arg,eax |
jnl norm |
gr: |
low: |
mov arg,eax |
norm: |
} |
/programs/fs/sysxtree/trunk/ascl.inc |
---|
27,11 → 27,13 |
;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 |
59,25 → 61,75 |
} |
macro wordstoreg reg,hiword,loword |
;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 |
{ |
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 ) |
if doubleword eq |
; not changes |
else |
mov reg,hiword |
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 |
shl reg,16 |
add reg,loword |
add reg,dword hiword |
ror reg,16 |
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 |
86,8 → 138,8 |
jmp asd |
lab db text ;arg label |
asd: |
wordstoreg ebx,x,xs |
wordstoreg ecx,y,ys |
words2reg ebx,x,xs |
words2reg ecx,y,ys |
mov edx,id |
mov esi,bcolor |
mov eax,8 |
328,7 → 380,7 |
db '/RD/1/SYSXTREE',0 |
procinfo: |
times 256 db 0 |
times 1024 db 0 |
} |
390,7 → 442,7 |
mov eax,60 |
mov ebx,1 ; define IPC |
mov ecx,path ; offset of area |
mov edx,120 ; size 150 bytes |
mov edx,150 ; size 150 bytes |
int 0x40 |
; change wanted events list 7-bit IPC event |
458,6 → 510,7 |
call redproc |
jmp getmesloop |
mkey: |
mov eax,2 |
int 0x40 ; read (eax=2) |
jmp getmesloop |
mbutton: |
526,8 → 579,8 |
DLGPID dd 0 |
param: |
rb 4 ; My dec PID |
rb 6 ; Type of dialog |
dd 0 ; My dec PID |
dd 0,0 ; Type of dialog |
run_fileinfo: |
dd 16 |
535,11 → 588,11 |
dd param |
dd 0 |
dd procinfo |
run_filepath: |
;run_filepath: |
db '/RD/1/SYSXTREE',0 |
procinfo: |
times 256 db 0 |
times 1024 db 0 |
} |
635,10 → 688,15 |
; mov ebx,x |
; shl ebx,16 |
; add ebx,y |
wordstoreg ebx,x,y |
mov ecx,color |
mov edx,offs |
mov esi,size |
words2reg ebx,x,y |
dword2reg ecx,color |
dword2reg edx,offs |
dword2reg esi,size |
; mov ecx,color |
; mov edx,offs |
; mov esi,size |
mov eax,4 |
int 0x40 |
} |
649,7 → 707,7 |
mov ebx,numtype |
mov bl,0 |
; mov edx,x*65536+y |
wordstoreg edx,x,y |
words2reg edx,x,y |
mov esi,color |
mov eax,47 |
int 0x40 |
728,8 → 786,8 |
{ |
; mov ebx,arg1*65536+arg3 |
; mov ecx,arg2*65536+arg4 |
wordstoreg ebx,arg1,arg3 |
wordstoreg ecx,arg2,arg4 |
words2reg ebx,arg1,arg3 |
words2reg ecx,arg2,arg4 |
mov edx,arg5 |
mov eax,0 |
int 0x40 |
769,7 → 827,7 |
; (SYNTAX) LABEL Xstart,Ystart,'Text',Color |
; (SAMPLE) LABEL 10,12,'Hello World!',cl_Green+font_Big |
macro label arg1,arg2,arg3,arg4 |
macro glabel arg1,arg2,arg3,arg4 |
{ |
local asd,lab |
jmp asd |
778,10 → 836,11 |
; mov ebx,arg1 ;arg1=y arg2=x |
; shl ebx,16 |
; add ebx,arg2 |
wordstoreg ebx,arg1,arg2 |
if ~(arg4 eq ) |
mov ecx,arg4 ;arg4 color |
end if |
words2reg ebx,arg1,arg2 |
dword2reg ecx,arg4 |
mov edx,lab |
mov esi,asd-lab ;calc size |
mov eax,4 |
/programs/fs/sysxtree/trunk/ascml.inc |
---|
0,0 → 1,93 |
lang equ ru |
; |
; Assembler |
; SMALL |
; CODE |
; Massive operation |
; Libary |
; |
; Ver 0.1 By Pavlushin Evgeni (RUSSIA) |
; www.waptap@mail.ru |
;InfoList |
;0.01 readmas,compmas,findmas |
macro readmas masoff,obroff |
{ |
local loo |
mov edi,masoff |
add edi,8 |
mov ebp,[masoff] ;elements |
mov edx,[masoff+4] ;elemsize |
mov eax,0 ;count |
loo: |
pushad |
call obroff |
popad |
add edi,edx |
inc eax |
cmp eax,ebp |
jne loo |
} |
macro compmas masoff1,masoff2,obroff |
{ |
local loo,loo2 |
mov esi,masoff2 |
add esi,8 |
mov ecx,[masoff2] |
mov ebx,[masoff2+4] |
mov eax,0 |
loo2: |
push eax |
mov edi,masoff1 |
add edi,8 |
mov ebp,[masoff1] ;elements1 |
mov edx,[masoff1+4] ;elemsize1 |
mov eax,0 ;count |
loo: |
pushad |
call obroff |
popad |
add edi,edx |
inc eax |
cmp eax,ebp |
jne loo |
add esi,ebx |
pop eax |
inc eax |
cmp eax,ecx |
jne loo2 |
} |
macro findmas masoff,obroff |
{ |
local loo,looend,lend |
mov edi,masoff |
add edi,8 |
mov ebp,[masoff] ;elements |
mov edx,[masoff+4] ;elemsize |
mov eax,0 ;count |
loo: |
pushad |
mov eax,0 |
call obroff |
cmp eax,1 |
je looend |
popad |
add edi,edx |
inc eax |
cmp eax,ebp |
jne loo |
stc |
jmp lend |
looend: |
popad |
clc |
lend: |
} |
/programs/fs/sysxtree/trunk/macros.inc |
---|
1,3 → 1,15 |
; language for programs |
lang fix en ; ru en fr ge fi |
@^ fix macro comment { |
^@ fix } |
macro m2m dest,src { |
push src |
pop dest |
} |
; new application structure |
macro meos_app_start |
{ |
77,35 → 89,72 |
macro sz name,[data] { ; from MFAR [mike.dld] |
common |
if used name |
name db data |
.size = $-name |
end if |
} |
macro lsz name,[lng,data] { ; from MFAR [mike.dld] |
common |
if used name |
label name |
end if |
forward |
if used name |
if lang eq lng |
db data |
end if |
common |
.size = $-name |
end if |
} |
macro szc name,elsz,[data] { ; from MFAR [mike.dld] |
common |
local s,m |
m = 0 |
if used name |
label name |
virtual at 0 |
db data |
s = $ |
end virtual |
d#elsz s |
if m < s |
m = s |
end if |
db data |
.size = $-name |
.maxl = m |
end if |
} |
macro lsz name,[lng,data] { ; from MFAR [mike.dld] |
macro lszc name,elsz,[lng,data] { ; from MFAR [mike.dld] |
common |
local s,m,c |
m = 0 |
c = 0 |
if used name |
label name |
end if |
forward |
if (used name)&(lang eq lng) |
if lang eq lng |
virtual at 0 |
db data |
s = $ |
end virtual |
d#elsz s |
if m < s |
m = s |
end if |
db data |
c = c+1 |
end if |
common |
if used name |
.size = $-name |
.maxl = m |
.count = c |
end if |
} |
; easy system call macro |
macro mpack dest, hsrc, lsrc |
{ |
123,8 → 172,16 |
end if |
} |
macro __mov reg,a { ; mike.dld |
if ~a eq |
;macro __mov reg,a { ; mike.dld |
; if ~a eq |
; mov reg,a |
; end if |
;} |
macro __mov reg,a,b { ; mike.dld |
if (~a eq)&(~b eq) |
mpack reg,a,b |
else if (~a eq)&(b eq) |
mov reg,a |
end if |
} |
140,12 → 197,72 |
} |
; ------------------------- |
macro header a,[b] { |
common |
use32 |
org 0 |
db 'MENUET',a |
forward |
if b eq |
dd 0 |
else |
dd b |
end if } |
macro section name { align 16 |
label name } |
macro func name { |
if ~used name |
display 'FUNC NOT USED: ',`name,13,10 |
else |
align 4 |
name: |
;pushad |
;pushfd |
;dps `name |
;newline |
;mcall 5,1 |
;popfd |
;popad |
} |
macro endf { end if } |
; language for programs |
lang fix ru ; ru en fr ge fi |
macro diff16 title,l1,l2 |
{ |
local s,d |
s = l2-l1 |
display title,': 0x' |
repeat 8 |
d = '0' + s shr ((8-%) shl 2) and $0F |
if d > '9' |
d = d + 'A'-'9'-1 |
end if |
display d |
end repeat |
display 13,10 |
} |
macro diff10 title,l1,l2 |
{ |
local s,d,z,m |
s = l2-l1 |
z = 0 |
m = 1000000000 |
display title,': ' |
repeat 10 |
d = '0' + s / m |
s = s - (s/m)*m |
m = m / 10 |
if d <> '0' |
z = 1 |
end if |
if z <> 0 |
display d |
end if |
end repeat |
display 13,10 |
} |
; optimize the code for size |
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp> |
197,48 → 314,230 |
} |
macro RGB [a] { |
common |
match (r=,g=,b),a \{ |
\dd ((r) shl 16) or ((g) shl 8) or (b) |
\} |
} |
struc POINT _t,_dx,_dy { |
.x _t _dx |
.y _t _dy |
} |
; Macroinstructions for defining data structures |
macro struct name |
{ |
{ fields@struct equ name |
match child parent, name \{ fields@struct equ child,fields@\#parent \} |
sub@struct equ |
struc db [val] \{ \common fields@struct equ fields@struct,.,db,<val> \} |
struc dw [val] \{ \common fields@struct equ fields@struct,.,dw,<val> \} |
struc du [val] \{ \common fields@struct equ fields@struct,.,du,<val> \} |
struc dd [val] \{ \common fields@struct equ fields@struct,.,dd,<val> \} |
struc dp [val] \{ \common fields@struct equ fields@struct,.,dp,<val> \} |
struc dq [val] \{ \common fields@struct equ fields@struct,.,dq,<val> \} |
struc dt [val] \{ \common fields@struct equ fields@struct,.,dt,<val> \} |
struc rb count \{ fields@struct equ fields@struct,.,db,count dup (?) \} |
struc rw count \{ fields@struct equ fields@struct,.,dw,count dup (?) \} |
struc rd count \{ fields@struct equ fields@struct,.,dd,count dup (?) \} |
struc rp count \{ fields@struct equ fields@struct,.,dp,count dup (?) \} |
struc rq count \{ fields@struct equ fields@struct,.,dq,count dup (?) \} |
struc rt count \{ fields@struct equ fields@struct,.,dt,count dup (?) \} |
macro db [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,db,<val> \} |
macro dw [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,dw,<val> \} |
macro du [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,du,<val> \} |
macro dd [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,dd,<val> \} |
macro dp [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,dp,<val> \} |
macro dq [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,dq,<val> \} |
macro dt [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,dt,<val> \} |
macro rb count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,db,count dup (?) \} |
macro rw count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,dw,count dup (?) \} |
macro rd count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,dd,count dup (?) \} |
macro rp count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,dp,count dup (?) \} |
macro rq count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,dq,count dup (?) \} |
macro rt count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,dt,count dup (?) \} |
macro union \{ fields@struct equ fields@struct,,union,< |
sub@struct equ union \} |
macro struct \{ fields@struct equ fields@struct,,substruct,< |
sub@struct equ substruct \} |
virtual at 0 } |
macro ends |
{ match , sub@struct \{ restruc db,dw,du,dd,dp,dq,dt |
restruc rb,rw,rd,rp,rq,rt |
purge db,dw,du,dd,dp,dq,dt |
purge rb,rw,rd,rp,rq,rt |
purge union,struct |
match name=,fields,fields@struct \\{ fields@struct equ |
make@struct name,fields |
fields@\\#name equ fields \\} |
end virtual \} |
match any, sub@struct \{ fields@struct equ fields@struct> \} |
restore sub@struct } |
macro make@struct name,[field,type,def] |
{ common |
if $ |
display 'Error: definition of ',`name,' contains illegal instructions.',0Dh,0Ah |
err |
end if |
local define |
define equ name |
forward |
local sub |
match , field \{ make@substruct type,name,sub def |
define equ define,.,sub, \} |
match any, field \{ define equ define,.#field,type,<def> \} |
common |
match fields, define \{ define@struct fields \} } |
macro define@struct name,[field,type,def] |
{ common |
local list |
list equ |
forward |
if ~ field eq . |
name#field type def |
sizeof.#name#field = $ - name#field |
else |
rb sizeof.#type |
end if |
local value |
match any, list \{ list equ list, \} |
list equ list <value> |
common |
sizeof.#name = $ |
restruc name |
match values, list \{ |
struc name value \\{ |
match any, fields@struct \\\{ fields@struct equ fields@struct,.,name,<values> \\\} |
match , fields@struct \\\{ label . |
forward |
match , value \\\\{ field type def \\\\} |
match any, value \\\\{ field type value |
if ~ field eq . |
rb sizeof.#name#field - ($-field) |
end if \\\\} |
common \\\} \\} \} } |
macro enable@substruct |
{ macro make@substruct substruct,parent,name,[field,type,def] |
\{ \common |
\local define |
define equ parent,name |
\forward |
\local sub |
match , field \\{ match any, type \\\{ enable@substruct |
make@substruct type,name,sub def |
purge make@substruct |
define equ define,.,sub, \\\} \\} |
match any, field \\{ define equ define,.\#field,type,<def> \\} |
\common |
match fields, define \\{ define@\#substruct fields \\} \} } |
enable@substruct |
macro define@union parent,name,[field,type,def] |
{ common |
virtual at 0 |
name name |
sizeof.#name = $ - name |
forward |
if ~ field eq . |
virtual at 0 |
parent#field type def |
sizeof.#parent#field = $ - parent#field |
end virtual |
} |
if sizeof.#parent#field > $ |
rb sizeof.#parent#field - $ |
end if |
else if sizeof.#type > $ |
rb sizeof.#type - $ |
end if |
common |
sizeof.#name = $ |
end virtual |
struc name [value] \{ \common |
label .\#name |
last@union equ |
forward |
match any, last@union \\{ virtual at .\#name |
field type def |
end virtual \\} |
match , last@union \\{ match , value \\\{ field type def \\\} |
match any, value \\\{ field type value \\\} \\} |
last@union equ field |
common rb sizeof.#name - ($ - .\#name) \} } |
macro define@substruct parent,name,[field,type,def] |
{ common |
virtual at 0 |
forward |
if ~ field eq . |
parent#field type def |
sizeof.#parent#field = $ - parent#field |
else |
rb sizeof.#type |
end if |
local value |
common |
sizeof.#name = $ |
end virtual |
struc name value \{ |
label .\#name |
forward |
match , value \\{ field type def \\} |
match any, value \\{ field type value |
if ~ field eq . |
rb sizeof.#parent#field - ($-field) |
end if \\} |
common \} } |
; structures used in MeOS |
struc process_information |
{ |
.cpu_usage dd ? ; +0 |
.window_stack_position dw ? ; +4 |
.window_stack_value dw ? ; +6 |
.not_used1 dw ? ; +8 |
.process_name rb 12 ; +10 |
.memory_start dd ? ; +22 |
.used_memory dd ? ; +26 |
.PID dd ? ; +30 |
.x_start dd ? ; +34 |
.y_start dd ? ; +38 |
.x_size dd ? ; +42 |
.y_size dd ? ; +46 |
.slot_state dw ? ; +50 |
struct process_information |
cpu_usage dd ? ; +0 |
window_stack_position dw ? ; +4 |
window_stack_value dw ? ; +6 |
not_used1 dw ? ; +8 |
process_name rb 12 ; +10 |
memory_start dd ? ; +22 |
used_memory dd ? ; +26 |
PID dd ? ; +30 |
x_start dd ? ; +34 |
y_start dd ? ; +38 |
x_size dd ? ; +42 |
y_size dd ? ; +46 |
slot_state dw ? ; +50 |
rb (1024-52) |
} |
struct process_information |
ends |
struc system_colors |
{ |
.frame dd ? |
.grab dd ? |
.grab_button dd ? |
.grab_button_text dd ? |
.grab_text dd ? |
.work dd ? |
.work_button dd ? |
.work_button_text dd ? |
.work_text dd ? |
.work_graph dd ? |
} |
struct system_colors |
frame dd ? |
grab dd ? |
grab_button dd ? |
grab_button_text dd ? |
grab_text dd ? |
work dd ? |
work_button dd ? |
work_button_text dd ? |
work_text dd ? |
work_graph dd ? |
ends |
; constants |
/programs/fs/sysxtree/trunk/systr12.GIF |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/fs/sysxtree/trunk/sysxtree.asm |
---|
42,18 → 42,44 |
; dd 0,0 |
;****************************************************************************** |
include 'lang.inc' |
include 'macros.inc' |
include 'ascl.inc' |
include 'ascgl.inc' |
gif_hash_offset = gif_hash |
START: ; start of execution |
; //// Willow |
mov eax,58 |
mov ebx,MRUfile |
int 0x40 |
; mov eax,58 |
; mov ebx,MRUfile |
; int 0x40 |
; //// Willow |
mcall 18,11,1,table_area |
mov edi,hdimg+62*2 |
cmp [table_area+2],byte 0 |
je no_hdpartition_on_hd0 |
mov esi,hdimg1 |
mov ecx,62 |
rep movsb |
no_hdpartition_on_hd0: |
cmp [table_area+3],byte 0 |
je no_hdpartition_on_hd1 |
mov esi,hdimg2 |
mov ecx,62 |
rep movsb |
no_hdpartition_on_hd1: |
cmp [table_area+4],byte 0 |
je no_hdpartition_on_hd2 |
mov esi,hdimg3 |
mov ecx,62 |
rep movsb |
no_hdpartition_on_hd2: |
cmp [table_area+5],byte 0 |
je no_hdpartition_on_hd3 |
mov esi,hdimg4 |
mov ecx,62 |
rep movsb |
no_hdpartition_on_hd3: |
mov eax,40 |
mov ebx,0100111b |
664,6 → 690,11 |
mov ebx,ac97wav |
jmp run |
nojv12: |
cmp eax,'.MID' |
jne nojv13 |
mov ebx,midamp |
jmp run |
nojv13: |
cmp eax,'.BMP' |
jne nobv |
mov ebx,bmpview |
676,6 → 707,11 |
jmp run |
nopngv: |
; //// Willow |
cmp eax,'.RTF' |
jne nortf |
mov ebx,rtfread |
jmp run |
nortf: |
cmp eax,'.ASM' |
je edit |
cmp eax,'.TXT' |
682,8 → 718,6 |
je edit |
cmp eax,'.INC' |
je edit |
cmp eax,'.DAT' |
je edit |
jmp still |
edit: |
mov ebx,editor |
1173,11 → 1207,11 |
exit: |
; //// Willow |
mov eax,58 |
mov ebx,MRUfile |
mov dword[ebx+8],255 |
inc dword[ebx] |
int 0x40 |
; mov eax,58 |
; mov ebx,MRUfile |
; mov dword[ebx+8],255 |
; inc dword[ebx] |
; int 0x40 |
; //// Willow |
mov eax,-1 |
int 0x40 |
1365,7 → 1399,7 |
mov eax,[sc.grab_text] ; color of text RRGGBB |
or eax,0x10000000 |
label 8,8,'SYSTEM X-TREE FILE BROWSER',eax |
glabel 8,8,'SYSTEM X-TREE FILE BROWSER',eax |
;Draw buttons headers |
mov eax,8 |
1400,10 → 1434,10 |
jnz nextpbut |
;DRAW PARTITON TEXT |
label 341,25,'1234',cl_White;Black |
glabel 341,25,'1234',cl_White;Black |
;File STRING |
label 8,25,' FILE VIEW INFO ', ;cl_White ;Black |
glabel 8,25,' FILE VIEW INFO ', ;cl_White ;Black |
;BlackLine |
mov eax,[procinfo.x_size] |
1422,20 → 1456,20 |
;Set logo img |
setimg 34,88,logoinfimg |
label 20,165,'SYSTEM X-TREE',cl_Black |
glabel 20,165,'SYSTEM X-TREE',cl_Black |
add ebx,10 |
label ,,'FOR MENUETOS', |
glabel ,,'FOR MENUETOS', |
add ebx,9*65536+20 |
label ,,'welcome to',cl_Green |
glabel ,,'welcome to',cl_Green |
add ebx,-15*65536+10 |
label ,,'www.menuetos.org',cl_Green |
glabel ,,'www.menuetos.org',cl_Green |
; label ,,'Create by',cl_Green |
; glabel ,,'Create by',cl_Green |
; add ebx,10 |
; label ,,' Pavlushin', |
; glabel ,,' Pavlushin', |
; add ebx,10 |
; label ,,' Evgeni', |
; glabel ,,' Evgeni', |
;Draw head->file buttons |
1522,7 → 1556,7 |
mov [urlxsize],eax |
mov [urlysize],12 |
label 20,57,"URL:",cl_Black |
glabel 20,57,"URL:",cl_Black |
;Out view mode info |
mov eax,[viewmode] |
1873,6 → 1907,8 |
je itx |
cmp eax,dword '.ASM' |
je itx |
cmp eax,dword '.RTF' |
je itx |
jmp nt |
itx: |
mov ecx,0x00446666 |
1892,6 → 1928,8 |
; //// Willow |
cmp eax,dword '.WAV' |
je ipic |
cmp eax,dword '.MID' |
je ipic |
jmp np |
ipic: |
mov ecx,0x00226688 |
1929,6 → 1967,11 |
push rdico+8 |
jmp out_ico |
no_rdico: |
cmp [edx+9],dword 'FLOP' |
jne no_fdico |
push rdico+8 |
jmp out_ico |
no_fdico: |
push folico+8 |
jmp out_ico |
no_folico: |
1946,6 → 1989,8 |
; //// Willow |
cmp [edx+8],dword '.WAV' |
je is_imgico |
cmp [edx+8],dword '.MID' |
je is_imgico |
jmp no_imgico |
is_imgico: |
push imgico+8 |
1960,8 → 2005,11 |
push asmincico+8 |
jmp out_ico |
no_asmincico: |
cmp [edx+8],dword '.RTF' |
je @f |
cmp [edx+8],dword '.TXT' |
jne no_txtico |
@@: |
push txtico+8 |
jmp out_ico |
no_txtico: |
2205,7 → 2253,7 |
;STEP 2 TEST ON HD OR PARTITION |
cmp [path],byte '/' |
je nstep |
mov ecx,61+62 |
mov ecx,61+62*5 |
loxhd: |
mov al,[hdimg+ecx] |
mov [convinfo+ecx],al |
2216,7 → 2264,53 |
nstep: |
cmp [path+3],byte '/' |
je nstep2 |
cmp [path+4],byte '/' |
je nstep2 |
cmp [path+1],word 'RD' |
jne nostep_RD |
mov ecx,61 |
jmp loxpt |
nostep_RD: |
cmp [path+1],word 'FD' |
jne nostep_FD |
mov ecx,61+62 |
jmp loxpt |
nostep_FD: |
cmp [path+1],dword 'HD0' |
jne nostep_HD0 |
mov cl,[table_area+2] |
movzx ecx,cl |
imul ecx,62 |
dec ecx |
jmp loxpt |
nostep_HD0: |
cmp [path+1],dword 'HD1' |
jne nostep_HD1 |
mov cl,[table_area+3] |
movzx ecx,cl |
imul ecx,62 |
dec ecx |
jmp loxpt |
nostep_HD1: |
cmp [path+1],dword 'HD2' |
jne nostep_HD2 |
mov cl,[table_area+4] |
movzx ecx,cl |
imul ecx,62 |
dec ecx |
jmp loxpt |
nostep_HD2: |
cmp [path+1],dword 'HD3' |
jne nostep_HD3 |
mov cl,[table_area+5] |
movzx ecx,cl |
imul ecx,62 |
dec ecx |
jmp loxpt |
nostep_HD3: |
mov ecx,61+62 ;+496 |
loxpt: |
mov al,[ptimg+ecx] |
mov [convinfo+ecx],al |
2262,12 → 2356,12 |
cmp eax,1 |
jne no_inv_part |
label 10,10,'Invalid partition or hd base',cl_Red+font_Big |
glabel 10,10,'Invalid partition or hd base',cl_Red+font_Big |
jmp end_of_dir |
no_inv_part: |
cmp eax,3 |
jne no_unk_fs |
label 10,10,'Unknow file system',cl_Red+font_Big |
glabel 10,10,'Unknow file system',cl_Red+font_Big |
jmp end_of_dir |
no_unk_fs: |
2625,12 → 2719,39 |
readblock dd 1 |
dlg_type db 0 ;S-save O-open |
hdimg1 db 'HD0 HARDDISK FOL ' |
hdimg2 db 'HD1 HARDDISK FOL ' |
hdimg3 db 'HD2 HARDDISK FOL ' |
hdimg4 db 'HD3 HARDDISK FOL ' |
;01234567890123456789012345678901234567890123456789012345678912 |
hdimg db 'HD HARDDISK FOL ' |
db 'RD RAMDISK FOL ' |
hdimg db 'RD RAMDISK FOL ' |
db 'FD FLOPPYDISK FOL ' |
db ' ' |
db ' ' |
db ' ' |
db ' ' |
ptimg db '1 FIRST PARTITION FOL ' |
db '2 SECOND PARTITION FOL ' |
db '3 NEXT PARTITION FOL ' |
db '4 NEXT PARTITION FOL ' |
db '5 NEXT PARTITION FOL ' |
db '6 NEXT PARTITION FOL ' |
db '7 NEXT PARTITION FOL ' |
db '8 NEXT PARTITION FOL ' |
db '9 NEXT PARTITION FOL ' |
db '10 NEXT PARTITION FOL ' |
db '11 NEXT PARTITION FOL ' |
db '12 NEXT PARTITION FOL ' |
db '13 NEXT PARTITION FOL ' |
db '14 NEXT PARTITION FOL ' |
db '15 NEXT PARTITION FOL ' |
db '16 NEXT PARTITION FOL ' |
db '17 NEXT PARTITION FOL ' |
db '18 NEXT PARTITION FOL ' |
db '19 NEXT PARTITION FOL ' |
db '20 NEXT PARTITION FOL ' |
modetext: |
;0123456789012345 |
2647,13 → 2768,13 |
b_color dd 0x6677cc |
; //// Willow |
MRUfile: |
dd 0x0 |
dd 0x0 |
dd 0x1 |
dd path |
dd tempzone |
db '/RD/1/MRU.LST',0 |
;MRUfile: |
; dd 0x0 |
; dd 0x0 |
; dd 0x1 |
; dd path |
; dd tempzone |
; db '/RD/1/MRU.LST',0 |
; //// Willow |
;Name of programs |
2663,9 → 2784,11 |
gifview db 'GIFVIEW ' |
ac97wav db 'AC97WAV ' |
copyrfile db 'COPYR ' |
rtfread db 'RTFREAD ' |
; //// Willow |
pngview db '@RCHER ' |
; //// Willow |
midamp db 'MIDAMP ' |
fileinfo_start: |
dd 16 |
2685,6 → 2808,10 |
dd tempzone ; work size of sytemram |
path: |
times 256 db 0 ;path |
table_area: |
rb 10 |
;rb 256 |
but_file: |
file 'systr12.GIF' |
/programs/fs/sysxtree/trunk/xtree.bmp |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/fs/sysxtree/trunk/xtree.ico |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/fs/sysxtree/trunk/xtreeinf.txt |
---|
0,0 → 1,87 |
SYSTEM X-TREE |
The new file browser with support sorting file by name, extension, size, date |
Develop by Pavlushin Evgeni for Menuet OS e-mail: waptap@mail.ru |
site (slow update) : www.deck4.narod.ru |
~~~Manuals~~~ |
Copy program COPYR to ramdisk !!! for work feuters - copy and paste file's |
~~~Keys~~~ |
PageUp\PageDown , Up Arrow/Down Arrow -Navigation |
Blackspace - goto to previous folder |
Enter - enter to folder or run/view/edit file |
F2 - change sort mode (name,extension,size,date,sohw/fade del files) |
F3 - view file in notepad |
F5 - copy file to clipboard |
F6 - paste file from clipboard |
F12 - update source |
SYSTEM X-TREE |
Íîâûé ôàéëîâûé áðàóçåð ïîäåððæèâàþùèé ñîðòèðîâêó ôîèëîâ ïî èìåíè, |
ðàñøèðåíèþ, ðàçìåðó è äàòå. |
Ðàçðàáîòàë Ïàâëþøèí Åâãåíèé äëÿ Menuet OS e-mail: waptap@mail.ru |
ñàéò (ìåäëåííî îáíîâëÿåòñÿ) : www.deck4.narod.ru |
~~~Èíñòðóêöèÿ~~~ |
Ñêîïèðóéòå ïðîãó COPYR íà ramdisk !!! äëÿ âîçìîæíîñòè êîïèðîâàòü è âñòàâëÿòü ôàèëû |
~~~Êëàâèøè~~~ |
PageUp\PageDown , Up Arrow/Down Arrow - Íàâèãàöèÿ |
Blackspace - Ïåðåéòè ê ïðåäèäóùåé ïàïêå |
Enter - Çàéòè â ïàïêó èëè çàïóñòèòü/ïðîñìîòðåòü/ðåäàêòèðîâàòü ôàèë |
F2 - Ñìåíèòü ðåæèì ñîðòèðîâêè (Ïî èìåíè,ðàñøèðåíèþ,ðàçìåðó,äàòå,ïîêàçûâàòü óäàë. ôàèëû) |
F3 - Ïðîñìîòðåòü ôàèë â òåêñòîâîì áëîêíîòå |
F5 - êîïèðîâàòü ôàèë â clipboard |
F6 - âñòàâèòü ôàèë èç clipboard'à |
F12 - Îáíîâèòü ñîäåðæèìîå îêíà |
Translate of russian documentation for xtree |
Sorry i'm write in English very poor. |
The new concept of dialogues, now dialogues |
is made do not use file system for an exchange |
with the client, and use IPC - Inter process comunication |
(Support since 52 Versions). |
52 Version support IPC of dialogues |
53 Version is added protection dialogs from |
external processes. |
Test with TESTOPDG 54 Version IPC protection it is |
improved Test with TESTOPD2 That testing dialogues |
copy SYSTRE54 on ramdisk under name SYSXTREE and start TESTOPD2 |
In window TESTOPD2 the following information is displayed: |
In heading at the left??? |
Below parameters transferred SYSTEM XTREE, |
namely PID TESTOPD2, the blank and |
type of dialogue of one byte (O-Open, S-Save) |
is even lower PID SYSTEM XTREE and current num of the |
started processes After file will be open in dialogue, |
it will be displayed in window TESTOPD2 below heading, |
and dialogue will be closed. |
Protection TESTOPD2: |
1) If at start SYSTEM XTREE from XTREE don't it is |
received it PID during 2 sec, 54 version XTREE or |
not XTREE at all means on ramdisk not, TESTOPD2 |
comes to the end. |
2) If worked SYSTEM XTREE it was closed not |
having sent path to file (itself or from CPU programs) |
TESTOPD2 comes to the end since parameters from XTREE |
have not been received and since XTREE is closed |
that already and don't are received. |
;78Ver input in dir whith extension (for example TEST.DIR\XT\) bug deleted |
;64Ver Run file from HD bug deleted. |
;65Ver The bad scroll realization |
;66Ver The good scroll realization, url line anti-flick |
;67Ver Url line monolith procedure |
;68Ver Mini icon on left of file name |
;69Ver Getimg proc size minus 900 bytes |
;70Ver Del data area ramsize minus 140000 bytes |
;72Ver Quick sort, ramsize minus 200000 bytes |
;73Ver Url flick and out bugs delete |
;sort type in headmenu bug del |
/programs/fs/sysxtree/trunk/xtreinfo.txt |
---|
0,0 → 1,80 |
Ñäåëàíà íîâàÿ êîíöåïöèÿ äèàëîãîâ, òåïåðü äèàëîãè íå èñïîëüçóþò |
ôàéëîâóþ ñèñòåìó äëÿ îáìåíà ñ êëèåíòîì, à èñïîëüçóþò IPC - |
Inter process comunication (Ïîääåðæêà íà÷èíàÿ ñ 52 Âåðñèè). |
52 Âåðñèÿ ïîääåðæêà IPC äèàëîãîâ |
53 Âåðñèÿ äîáàâëåíà çàùèòû äèîëîãîâ îò âíåøíèõ ïðîöåññîâ. |
Òåñòèðóéòå ñ TESTOPDG |
54 Âåðñèÿ IPC çàùèòà óëó÷øåíà |
Òåñòèðóéòå ñ TESTOPD2 |
×òî-áû ïðîòåñòèòü äèàëîãè ñêîïèðóéòå SYSTRE54 íà ðàìäèñê ïîä |
èìåíåì SYSXTREE è çàïóñòèòå TESTOPD2 |
 îêíå TESTOPD2 îòîáðàæàåòñÿ ñëåäóþùàÿ èíôîðìàöèÿ: |
 çàãîëîâêå ñëåâà ??? |
Íèæå ïàðàìåòðû ïåðåäàííûå SYSTEM XTREE , à èìåííî PID TESTOPD2, |
ïðîáåë è òèï äèàëîãà îäèí áàéò (O-Open,S-Save) |
Åùå íèæå PID SYSTEM XTREE è òåêóùåå êîë-âî çàïóùåííûõ ïðîöåññîâ |
Ïîñëå òîãî êàê ôàèë áóäåò îòêðûò â äèàëîãå, îí îòîáðàçèòñÿ â |
îêíå TESTOPD2 íèæå çàãîëîâêà, à äèàëîã çàêðîåòñÿ. |
Çàùèòà TESTOPD2: |
1) Åñëè ïðè çàïóñêå SYSTEM XTREE îò XTREE íåáûë ïîëó÷åí åãî PID |
â òå÷åíèè 2 ñåê, çíà÷èò íà ðàìäèñêå íå 54 âåðñèÿ XTREE èëè íå XTREE |
âîâñå, TESTOPD2 çàâåðøàåòñÿ. |
2) Åñëè çàïóùåíûé SYSTEM XTREE çàêðûëñÿ íå îòîñëàâ ïóòüôàèëà(ñàì èëè |
îò CPU ïðîãè),òî TESTOPD2 çàâåðøàåòñÿ ò.ê. ïàðàìåòðû îò XTREE íå |
áûëè ïîëó÷åíû à ò.ê. XTREE çàêðûò òî óæå è íåáóäóò ïîëó÷åíû. |
68 Âåðñèÿ |
Çà äâà äíÿ ÿ äîáèëñÿ ïðèëè÷íûõ óñïåõîâ ïî ìîäåðíèçàöèè X-TREE |
È òàê øî íîâîãî... |
60Ver Òåïåðü FileList è â äèàëîãå è â áðàóçåðå âûâîäèòñÿ îäíîé |
ïðîöåäóðîé íóæíî òîëüêî óêàçàòü êîîðäèíàòû è ðàçìåð ëèñòà îòñëåæèâàíèå |
è ïðîðèñîâêà ñêðîëëáàðà âûïîëíÿåòñÿ ïðîöåäóðîé. |
61Ver Íàñòðîèë êîîðäèíàòû ÔàèëËèñòà |
62Ver Äàáàâèë ïàíåëüêó ñëåâà â îêíå (êàê â Âèíäàõ) äëÿ êðàñîòû |
63Ver Èçìåíèë ñêèí è äîáàâèë êàðòèíêè íà êíîïî÷êè ñêðîëëáàðà |
64Ver Óäàëèë ñòàðûé äîáðûé áàã - îøèáêà çàïóñêà ïðîã ñ HD êîòîðàÿ |
âûíîñèò Ìåîñ íàôèã íå èñêëþ÷àþ, ÷òî ýòîò áàã óäàëåí íå äî êîíöà |
65Ver Èçìåíèë îáðàáîòêó è ïðîðèñîâêó ñêðîëëà |
66Ver Äîâåë äî êîíöà ïðîðèñîâêó ñêðîëëà, äîáàâèë ïðîòèâîìèãàþùèé |
êîä äëÿ URL ñòðîêè |
67Ver Òåïåðü URL ñòðîêà è â äèàëîãå è â áðàóçåðå âûâîäèòñÿ îäíîé |
ïðîöåäóðîé íóæíî òîëüêî óêàçàòü êîîðäèíàòû è ðàçìåð ñòðîêè. |
68Ver Äîáàâèë ìèíè èêîíêè ñëåâà îò ôàèë íåéìà (î÷åíü ïðèêîëüíî ñìîòðèòñÿ). |
73 Âåðñèÿ |
69Ver Getimg âûïîëíèë â âèäå ïðîöåññà, à íå ìàêðîñà êîä óìåíüøèëñÿ |
íà 900 áàéò |
70Ver data_area òåïåðü íå èñïîäëüçóåòñÿ, à çíà÷èò ïàìÿòè òðåáóåòñÿ |
òåïåðü íà 140000 áàéò ìåíüøå! |
72Ver Áîëåå áûñòðàÿ ñîðòèðîâêà , fileinfo òðåáóò òîëüêî 200 áàéò, |
à çíà÷èò ïàìÿòè òåïðü òðåáóåòñÿ íà 200000 áàéò ìåíüøå! |
73Ver Ìèãàíèå Url ñòðîêè áàã èñïðàâëåí. |
Èòîãî êîä óìåíüøåí ãäå-òî íà 900 áàéò. Åñëè ðàíüøå òðåáîâàëîñü ïàìÿòè |
1 ÌÁ, òî òåïåðü âñåãî 600Êá, à ýòî ïî÷òè â äâà ðàçà ìåíüøå. |
80Ver Äèàëîãè îïÿòü ðàáîòàþò, óäàëåí áàã ðåäàêòèðîâàíåèÿ ñòðîêè URL |
81Ver Save äèàëîã ðàáîòàåò áîëåå êîððåêòíî |
/programs/games/c4/trunk/c4.asm |
---|
69,7 → 69,7 |
LABEL_STATUS_X equ 14 |
LABEL_STATUS_Y equ 279 |
LABEL_STATUS_WIDTH equ 220 |
LABEL_STATUS_HEIGHT equ 8 |
LABEL_STATUS_HEIGHT equ 12 |
/programs/games/tetris/trunk/random.inc |
---|
File deleted |
\ No newline at end of file |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/key.inc |
---|
File deleted |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/table.inc |
---|
File deleted |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/mouse.inc |
---|
File deleted |
\ No newline at end of file |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/window.inc |
---|
File deleted |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/score.inc |
---|
File deleted |
\ No newline at end of file |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/menu.inc |
---|
File deleted |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/block.inc |
---|
File deleted |
\ No newline at end of file |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/blocks.inc |
---|
File deleted |
\ No newline at end of file |
Property changes: |
Deleted: svn:eol-style |
-native |
\ No newline at end of property |
/programs/games/tetris/trunk/tetris.asm |
---|
16,25 → 16,36 |
; |
; |
; Changelog: |
; |
; 09.11.2005 - fix for work under MeosDebug & better random - Andrey Halyavin |
; 23.09.2005 - fixed bug, when 011111111111111-like sequence interpreted |
; as _11111111111111 in check_full_line - Sergey Kuzmin aka Wildwest |
; 18.09.2005 - added 'Pause' button and made appropriate code and interface redesign |
; BTW, you can MOVE and ROTATE block during Pause ;) - Sergey Kuzmin aka Wildwest |
; 03.11.2003 - added new blocks & random - Ivan Poddubny |
; 31.10.2001 - rdtsc replaced - quickcode <quickcode@mail.ru> |
; 28.06.2001 - fasm port & framed blocks - Ville Turjanmaa |
; 31.10.2001 - rdtsc replaced - quickcode <quickcode@mail.ru> |
; 03.11.2003 - added new blocks & random - Ivan Poddubny |
; |
; |
LEN_X equ 14 |
LEN_Y equ 24 |
BORDER_LEFT equ 2 |
BORDER_RIGHT equ 2 |
LEN_X equ 19 ;width of table |
LEN_Y equ 29 ; height of table |
BORDER_LEFT equ 1 |
BORDER_RIGHT equ 1 |
BORDER_TOP equ 1 |
BORDER_BOTTOM equ 1 |
ADOBE_SIZE equ 12 |
X_LOCATION equ 6 |
Y_LOCATION equ 21 |
X_LOCATION equ 30 ; distance to table from left side |
Y_LOCATION equ 50 ; distance to table from header |
UP_KEY equ 130+48 |
DOWN_KEY equ 129+48 |
LEFT_KEY equ 128+48 |
RIGHT_KEY equ 131+48 |
BACKGROUND equ 03000080h |
_MAXBLOCKS_ = 7*4 |
SCORE_TO_NEW_LEVEL equ 100000 |
use32 |
org 0x0 |
43,43 → 54,38 |
dd 0x01 ; header version |
dd START ; program start |
dd I_END ; program image size |
dd IM_END ; reguired amount of memory |
dd IM_END ; esp |
dd I_END+1024 ; reguired amount of memory |
dd I_END+1024 ; esp |
dd 0x0,0x0 ; I_PARAM, I_ICON |
include 'lang.inc' |
include 'macros.inc' |
START: ; start of execution |
mov eax,3 ; |
int 0x40 ; |
mov cl,16 ; |
; -- quickcode - start |
mov eax,3 |
int 0x40 |
mov cl,16 |
ror eax,cl ; to make seconds more significant |
mov [generator],eax ; |
call random ; |
mov [generator],eax |
call random |
mov byte[status],'0' |
mov byte[menu],'0' |
; -- quickcode - end |
call clear_table_tetris |
call new_block |
call draw_window ; at first, draw the window |
still: |
cmp byte[status],'2' |
je attesa |
cmp byte[status],'1' |
jne attesa |
xor edx,edx |
call draw_block |
attesa: |
call mouse |
;disabled because of bug |
;EDIT: the bug is somewhere else.. |
;NOTE: dont release this without fixing the bug you lazy bastard! |
mov eax,11 ; get event |
int 0x40 |
91,35 → 97,34 |
check_button: |
cmp eax,3 ; button in buffer ? |
jnz scendi |
mov eax,-1 ; close this program |
int 0x40 |
jmp button |
red: ; redraw |
call draw_window |
jmp still |
parallel dd 1 |
scendi: cmp byte[status],'1' |
jne still |
cmp byte[blabla],10 |
je blabla_0 |
inc byte[blabla] |
jmp blabla_1 |
blabla_0: |
mov byte[blabla],0 |
scendi: |
;///////////////////////////////////////////////// Wildwest |
cmp dword [pauses], 0 |
je ok |
jne not_ok |
not_ok: |
inc dword [current_block_y] |
dec dword [current_block_y] |
call check_crash |
jne block_crash |
blabla_1: |
jmp draw |
ok: |
;///////////////////////////////////////////////// |
inc dword [current_block_y] |
call check_crash |
jne block_crash |
draw: movzx edx,byte [current_block_color] |
call draw_block |
mov eax,5 |
mov ebx,5 |
sub ebx,[speed] |
movzx ebx,byte [delay] |
int 0x40 |
jmp still |
130,6 → 135,7 |
call check_full_line |
call draw_table |
call new_block |
inc dword [score] |
call write_score |
call check_crash |
jz adr400 |
140,96 → 146,729 |
call draw_window |
adr10000: cmp eax,3 |
jne aspetta |
new_game: mov dword [score],0 |
mov dword [lines],0 |
mov dword [level],0 |
mov dword [speed],0 |
mov byte [status],'1' |
new_game: mov eax,17 |
int 0x40 |
cmp ah,1 |
jnz adr401 |
jmp end_program |
adr401: |
;///////////////////////////////////////////////////// Wildwest |
mov dword [pauses], 0 |
;//////////////////////////////////////////////////// |
mov dword [score],0 |
call clear_table_tetris |
call first_block |
call new_block |
call draw_window |
adr400: movzx edx,byte [current_block_color] |
call draw_block |
mov eax,5 |
movzx ebx,byte [delay] |
int 0x40 |
jmp still |
include 'key.inc' |
include 'mouse.inc' |
include 'menu.inc' |
include 'window.inc' |
include 'block.inc' |
include 'table.inc' |
include 'random.inc' |
include 'score.inc' |
key: mov eax,2 |
int 0x40 |
adr32: cmp ah,LEFT_KEY |
jne adr_30 |
dec dword [current_block_x] |
call check_crash |
jz adr4000 |
inc dword [current_block_x] |
adr4000: jmp scendi |
adr_30: cmp ah,RIGHT_KEY |
jne adr_31 |
inc dword [current_block_x] |
call check_crash |
jz adr3000 |
dec dword [current_block_x] |
adr3000: jmp scendi |
adr_31: cmp ah,UP_KEY |
jne adr51 |
mov edx,[current_block_pointer] |
mov edx,[edx+16] |
mov esi,[current_block_pointer] |
mov [current_block_pointer],edx |
call check_crash |
jz adr50 |
mov [current_block_pointer],esi |
adr50: jmp scendi |
adr51: cmp ah,DOWN_KEY |
jne adr61 |
mov byte [delay],5 ;!!! 2 |
adr52: jmp scendi |
adr61: cmp ah,' ' |
jne adr62 |
mov byte [delay],5 ;!!! 2 |
adr62: jmp scendi |
button: ; button |
mov eax,17 |
int 0x40 |
cmp ah,1 ; button id=1 ? |
jz end_program |
cmp ah,2 |
jz go_new_game |
cmp ah,3 ; button id=3 ? ///Wildwest's 'Pause' button |
jz pause_program |
jmp still |
end_program: |
mov eax,0xffffffff ; close this program |
int 0x40 |
go_new_game: |
jmp new_game |
;//////////////////////////////////////////////////// Wildwest |
pause_program: |
cmp dword [pauses], 0 |
je incr |
mov dword [pauses], 0 |
jmp still |
incr: |
mov dword [pauses], 1 |
jmp still |
;//////////////////////////////////////////////////// |
; ********************************************* |
; ******* WINDOW DEFINITIONS AND DRAW ******** |
; ********************************************* |
draw_window: |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,1 ; 1, start of draw |
int 0x40 |
; DRAW WINDOW |
mov eax,0 ; function 0 : define and draw window |
mov ebx,320*65536+(LEN_X-BORDER_LEFT-BORDER_RIGHT)*ADOBE_SIZE+X_LOCATION*2 |
mov ecx,25*65536+ (LEN_Y-BORDER_TOP-BORDER_BOTTOM)*ADOBE_SIZE+Y_LOCATION+30 |
mov edx,BACKGROUND ; color of work area RRGGBB |
mov esi,0x006688ee;99bbff ; color of grab bar RRGGBB,8->col |
mov edi,0x007799ff;99bbee ; color of frames RRGGBB |
int 0x40 |
; WINDOW LABEL |
mov eax,4 ; function 4 : write text to window |
mov ebx,8*65536+8 ; [x start] *65536 + [y start] |
mov ecx,0x10ffffff ; color of text RRGGBB |
mov edx,labelt ; pointer to text beginning |
mov esi,labellen-labelt ; text length |
int 0x40 |
; CLOSE BUTTON |
; mov eax,8 ; function 8 : define and draw button |
; mov ebx,243*65536+12 ; [x start] *65536 + [x size] |
; mov ecx,5*65536+12 ; [y start] *65536 + [y size] |
; mov edx,1 ; button id |
; mov esi,0x5580cc;22aacc ; button color RRGGBB |
; int 0x40 |
mov eax,8 |
mov ebx,30*65536+102 |
mov ecx,378*65536+18 |
mov edx,2 |
mov esi,0xA24466;5580cc;22aacc |
int 0x40 |
;/////////////////////////////////////////////// Wildwest's 'Pause' button |
mov eax,8 |
mov ebx,132*65536+102 |
mov ecx,378*65536+18 |
mov edx,3 |
mov esi,0x0FA0F0; |
int 0x40 |
mov eax,4 ; function 4 : write text to window |
mov ebx,164*65536+384 ; [x start] *65536 + [y start] |
mov ecx,0x10ffffff ; color of text RRGGBB |
mov edx,labe ; pointer to text beginning |
mov esi,labelen-labe ; text length |
int 0x40 |
;/////////////////////////////////////////////// |
mov eax,4 |
mov ebx,49*65536+384 |
xor ecx,ecx |
mov ecx,0x10ffffff |
mov edx,game_finished |
mov esi,size_of_game_finished-game_finished |
int 0x40 |
call draw_table |
movzx edx,byte [current_block_color] |
call draw_block |
cld |
mov ebx,38*65536+35 ; draw info text with function 4 |
mov ecx,0x10ffffff ; color |
mov edx,text |
mov esi,7 |
mov eax,4 |
int 0x40 |
call write_score |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,2 ; 2, end of draw |
int 0x40 |
ret |
;------------------------------------------------------------- |
; CHECK CRASH |
; output Z flag => OK |
; NZ flag => NO |
;------------------------------------------------------------- |
check_crash: mov ebx,[current_block_pointer] |
mov edx,[current_block_y] |
imul edx,LEN_X |
add edx,[current_block_x] ;find the offset in tetris_t |
add edx,table_tetris |
mov ecx,4 |
xor ax,ax |
adr_1: cmp byte [ebx],1 |
jne adr_2 |
add al,[edx] |
adc ah,0 |
adr_2: inc ebx |
inc edx |
cmp byte [ebx],1 |
jne adr_3 |
add al,[edx] |
adc ah,0 |
adr_3: inc ebx |
inc edx |
cmp byte [ebx],1 |
jne adr_4 |
add al,[edx] |
adc ah,0 |
adr_4: inc ebx |
inc edx |
cmp byte [ebx],1 |
jne adr_5 |
add al,[edx] |
adc ah,0 |
adr_5: inc ebx |
add edx,LEN_X-3 |
loop adr_1 |
or ax,ax |
ret |
;------------------------------------------------------------- |
;NEW BLOCK |
;------------------------------------------------------------- |
new_block: mov dword [current_block_y],1 |
mov dword [current_block_x],7 |
call random |
and al,7 |
setz ah |
add al,ah |
mov [current_block_color],al |
call random |
;and eax,15 |
; ---- Ivan ---- |
and eax,0xff |
@@: |
cmp eax,_MAXBLOCKS_ |
jl @f |
add eax,-(_MAXBLOCKS_) |
jmp @b |
@@: |
; ---- Ivan ---- |
mov edx,[block_table+eax*4] |
mov [current_block_pointer],edx |
mov byte [delay],22 ;19 ;!!! 15 |
ret |
;------------------------------------------------------------- |
; FIX BLOCK |
;------------------------------------------------------------- |
fix_block: mov ebx,[current_block_pointer] |
mov edx,[current_block_y] |
imul edx,LEN_X |
add edx,[current_block_x] ;find the offset in tetris_t |
add edx,table_tetris |
mov ecx,4 |
mov al,[current_block_color] |
adr_21: cmp byte [ebx],1 |
jne adr_22 |
mov [edx],al |
adr_22: inc ebx |
inc edx |
cmp byte [ebx],1 |
jne adr_23 |
mov [edx],al |
adr_23: inc ebx |
inc edx |
cmp byte [ebx],1 |
jne adr_24 |
mov [edx],al |
adr_24: inc ebx |
inc edx |
cmp byte [ebx],1 |
jne adr_25 |
mov [edx],al |
adr_25: inc ebx |
add edx,LEN_X-3 |
loop adr_21 |
ret |
;-------------------------------------------------------------- |
; DRAW_TABLE |
;-------------------------------------------------------------- |
draw_table: mov esi,table_tetris+LEN_X*BORDER_TOP+BORDER_LEFT |
mov ebx,X_LOCATION*65536+ADOBE_SIZE |
mov ecx,Y_LOCATION*65536+ADOBE_SIZE |
mov edi,LEN_Y-BORDER_TOP-BORDER_BOTTOM |
y_draw: push edi |
mov edi,LEN_X-BORDER_LEFT-BORDER_RIGHT |
x_draw: push edi |
; pusha |
; mov eax,5 |
; mov ebx,10 |
; int 0x40 |
; popa |
mov ax,13 |
movzx edx,byte [esi] |
mov edx,[color_table+edx*4] |
int 0x40 |
call draw_frames |
inc esi |
add ebx,65536*ADOBE_SIZE |
pop edi |
dec edi |
jnz x_draw |
add esi,BORDER_LEFT+BORDER_RIGHT |
mov ebx,X_LOCATION*65536+ADOBE_SIZE |
add ecx,65536*ADOBE_SIZE |
pop edi |
dec edi |
jnz y_draw |
ret |
;-------------------------------------------------------------- |
;DRAW BLOCK |
; |
; ebx=x [0..LEN_X-1] |
; ecx=y [0..LEN_Y-1] |
; edi=pointer block |
;-------------------------------------------------------------- |
draw_block: |
mov eax,13 |
mov edx,[color_table+edx*4] |
mov ebx,[current_block_x] |
mov ecx,[current_block_y] |
mov edi,[current_block_pointer] |
sub ebx,BORDER_LEFT |
imul ebx,ADOBE_SIZE |
add ebx,X_LOCATION |
shl ebx,16 |
mov bx,ADOBE_SIZE |
sub ecx,BORDER_TOP |
imul ecx,ADOBE_SIZE |
add ecx,Y_LOCATION |
shl ecx,16 |
mov cx,ADOBE_SIZE |
mov dword [TMP_1],4 |
adr_122: mov dword [TMP_0],4 |
adr_121: cmp byte [edi],0 |
je adr_120 |
int 040h |
call draw_frames |
adr_120: inc edi |
add ebx,ADOBE_SIZE*65536 |
dec dword [TMP_0] |
jnz adr_121 |
sub ebx,4*ADOBE_SIZE*65536 |
add ecx,ADOBE_SIZE*65536 |
dec dword [TMP_1] |
jnz adr_122 |
ret |
draw_frames: |
cmp edx,0 |
jne df1 |
ret |
df1: |
pusha |
mov bx,1 |
add edx,0x282828 |
mov eax,13 |
int 0x40 |
popa |
pusha |
mov cx,1 |
add edx,0x282828 |
mov eax,13 |
int 0x40 |
popa |
pusha |
push ebx |
sub bx,1 |
add [esp+2],bx |
pop ebx |
mov bx,1 |
shr edx,1 |
and edx,0x7f7f7f |
mov eax,13 |
int 0x40 |
popa |
pusha |
push ecx |
sub cx,1 |
add [esp+2],cx |
pop ecx |
mov cx,1 |
shr edx,1 |
and edx,0x7f7f7f |
mov eax,13 |
int 0x40 |
popa |
ret |
;-------------------------------------------------------------- |
clear_table_tetris: |
cld |
mov al,1 |
mov edi,table_tetris |
mov ecx,LEN_X*BORDER_TOP |
rep stosb |
mov edx,LEN_Y-BORDER_TOP-BORDER_BOTTOM |
adr300: mov cl,BORDER_LEFT |
rep stosb |
dec ax ;AL=0 |
mov cl,LEN_X-BORDER_LEFT-BORDER_RIGHT |
rep stosb |
inc ax ;AL=1 |
mov cl,BORDER_RIGHT |
rep stosb |
dec dx |
jne adr300 |
mov ecx,LEN_X*BORDER_BOTTOM |
rep stosb |
ret |
;-------------------------------------------------------------- |
;edx = pointer |
;ebx = contatore |
check_full_line: |
std |
mov al,0 |
mov edx,table_tetris+LEN_X*(LEN_Y-BORDER_BOTTOM)-1 |
mov ebx,(LEN_Y-BORDER_TOP-BORDER_BOTTOM-1)*LEN_X |
adr_5000: mov edi,edx |
mov ecx,LEN_X-BORDER_LEFT-BORDER_RIGHT+1;Wildwest's fix for bug |
;(was LEN_X-BORDER_LEFT-BORDER_RIGHT) |
repne scasb |
jz no_full_line |
lea esi,[edx-LEN_X] |
mov edi,edx |
mov ecx,ebx |
rep movsb |
sub edi,BORDER_RIGHT |
mov ecx,LEN_X-BORDER_LEFT-BORDER_RIGHT |
rep stosb |
add dword [score],50 |
jmp adr_5000 |
no_full_line: sub edx,LEN_X |
sub ebx,LEN_X |
jnz adr_5000 |
ret |
;-------------------------------------------------------------- |
random: mov eax,[generator] |
add eax,-43ab45b5h |
ror eax,1 |
xor eax,32c4324fh |
ror eax,1 |
mov [generator],eax |
; --- IVAN --- |
push ebx |
mov eax,26 |
mov ebx,9 |
int 0x40 |
pop ebx |
xor eax,0xdeadbeef |
add eax,[generator] |
; --- IVAN --- |
mov [generator],eax ; Halyavin |
ret |
;-------------------------------------------------------------- |
number_to_str: mov edi,end_number_str-1 |
mov ecx,9;size_of_number_str |
mov ebx,10 |
cld |
new_digit: xor edx,edx |
div ebx |
add dl,'0' |
mov [edi],dl |
dec edi |
loop new_digit |
ret |
;-------------------------------------------------------------- |
write_score: |
mov eax,[score] |
call number_to_str |
mov ebx,100*65536+100 ;clear box to write new score |
mov ecx,35*65536+15 |
mov edx,BACKGROUND |
mov eax,13 |
int 40h |
mov ebx,100*65536+35 ; draw info text with function 4 |
mov ecx,0xffff00 ; color |
mov edx,number_str |
mov esi,[size_of_number_str] |
mov eax,4 |
int 0x40 |
ret |
; DATA AREA |
include 'blocks.inc' |
;-------------------------------------------------------------- |
;DEFINITION BLOCKS |
;-------------------------------------------------------------- |
t_block_0: db 0,0,0,0 |
db 1,1,1,0 |
db 0,1,0,0 |
db 0,0,0,0 |
dd t_block_3 |
labelt: db 'TETRIS II' |
scoretext: db 'Score:' |
linestext: db 'Lines:' |
speedtext: db 'Speed:' |
leveltext: db 'Level:' |
startgame: db 'START' |
instr: db 'INSTRUCTIONS' |
hist: db 'HISTORY' |
quit: db 'EXIT' |
paused: db 'PAUSED' |
txt_end: |
t_block_1: db 0,1,0,0 |
db 1,1,0,0 |
db 0,1,0,0 |
db 0,0,0,0 |
dd t_block_0 |
history: |
db 'TETRIS for MENUET v2.0 ' |
db ' ' |
db ' ' |
db 'Originally made ' |
db ' by Paolo Minazzi ' |
db ' ' |
db 'Port & framed blocks ' |
db ' by Ville Turjanmaa ' |
db ' ' |
db 'RDTSC replaced ' |
db ' by quickcode ' |
db ' ' |
db 'New blocks & better random ' |
db ' by Ivan Poddubny ' |
db ' ' |
db 'Better control, logo, menu, pause ' |
db ' by Jeffrey Amelynck' |
t_block_2: db 0,1,0,0 |
db 1,1,1,0 |
db 0,0,0,0 |
db 0,0,0,0 |
dd t_block_1 |
db 'x <- END MARKER, DONT DELETE ' |
t_block_3 db 0,1,0,0 |
db 0,1,1,0 |
db 0,1,0,0 |
db 0,0,0,0 |
dd t_block_2 |
;-------------------------------------------------------------- |
i_block_0: db 0,1,0,0 |
db 0,1,0,0 |
db 0,1,0,0 |
db 0,1,0,0 |
dd i_block_1 |
instructions: |
db 'TETRIS for MENUET v2.0 ' |
db ' ' |
db 'Controls: ' |
db ' ' |
db 'Use left & right key to navigate ' |
db 'Use up key to turn the block ' |
db 'Use down key to make block fall ' |
db 'Use P to pause game ' |
db 'Use N to start a new game ' |
db 'Use ESC to go back to menu or exit' |
db 'You can also use the mouse to move' |
db 'the blocks, left button to let the' |
db 'blocks fall and right button to ' |
db 'rotate them ' |
db 'you can pause the game by pressing' |
db 'both mouse buttons ' |
db ' ' |
db 'DONT FORGET: move mouse out of the' |
db 'window if you want to use keyboard' |
i_block_1: db 0,0,0,0 |
db 1,1,1,1 |
db 0,0,0,0 |
db 0,0,0,0 |
dd i_block_0 |
;-------------------------------------------------------------- |
q_block_0: db 0,1,1,0 |
db 0,1,1,0 |
db 0,0,0,0 |
db 0,0,0,0 |
dd q_block_0 |
;-------------------------------------------------------------- |
s_block_0: |
db 0,0,0,0 |
db 0,1,1,0 |
db 1,1,0,0 |
db 0,0,0,0 |
dd s_block_1 |
db 'x <- END MARKER, DONT DELETE ' |
s_block_1: db 1,0,0,0 |
db 1,1,0,0 |
db 0,1,0,0 |
db 0,0,0,0 |
dd s_block_0 |
;-------------------------------------------------------------- |
l_block_0: db 0,0,0,0 |
db 1,1,1,0 |
db 1,0,0,0 |
db 0,0,0,0 |
dd l_block_3 |
I_END: |
l_block_1: db 1,1,0,0 |
db 0,1,0,0 |
db 0,1,0,0 |
db 0,0,0,0 |
dd l_block_0 |
l_block_2: db 0,0,1,0 |
db 1,1,1,0 |
db 0,0,0,0 |
db 0,0,0,0 |
dd l_block_1 |
l_block_3: db 0,1,0,0 |
db 0,1,0,0 |
db 0,1,1,0 |
db 0,0,0,0 |
dd l_block_2 |
;----------------------------------------------- |
g_block_0: |
db 0,1,0,0 |
db 0,1,0,0 |
db 1,1,0,0 |
db 0,0,0,0 |
dd g_block_1 |
g_block_1: |
db 0,0,0,0 |
db 1,1,1,0 |
db 0,0,1,0 |
db 0,0,0,0 |
dd g_block_2 |
g_block_2: |
db 0,1,1,0 |
db 0,1,0,0 |
db 0,1,0,0 |
db 0,0,0,0 |
dd g_block_3 |
g_block_3: |
db 1,0,0,0 |
db 1,1,1,0 |
db 0,0,0,0 |
db 0,0,0,0 |
dd g_block_0 |
;----------------------------------- |
k_block_0: |
db 0,0,0,0 |
db 1,1,0,0 |
db 0,1,1,0 |
db 0,0,0,0 |
dd k_block_1 |
k_block_1: |
db 0,1,0,0 |
db 1,1,0,0 |
db 1,0,0,0 |
db 0,0,0,0 |
dd k_block_0 |
;----------------------------------- |
color_table: dd 00000000h ;black 0 |
dd 00cccccch ;white 1 |
dd 00cc0000h ;red 2 |
dd 0000cc00h ;green 3 |
dd 000000cch ;blue 4 |
dd 00cccc00h ;yellow 5 |
dd 0000cccch ;cyan 6 |
dd 00cc00cch ;pink 7 |
block_table: |
dd t_block_0 ; t |
dd t_block_1 |
dd t_block_2 |
dd t_block_3 |
dd i_block_0 ; i |
dd i_block_1 |
dd i_block_0 |
dd i_block_1 |
dd q_block_0 ; q |
dd q_block_0 |
dd q_block_0 |
dd q_block_0 |
dd s_block_0 ; s |
dd s_block_1 |
dd s_block_0 |
dd s_block_1 |
dd l_block_0 ; l |
dd l_block_1 |
dd l_block_2 |
dd l_block_3 |
dd g_block_0 ; g |
dd g_block_1 |
dd g_block_2 |
dd g_block_3 |
dd k_block_0 ; k |
dd k_block_1 |
dd k_block_0 |
dd k_block_1 |
if lang eq ru |
labelt: |
db ' 1.6 - ' |
labellen: |
labe: |
db '' |
labelen: |
text: db '窨: ' |
game_finished: db ' ' |
size_of_game_finished: |
else |
labelt: |
db 'TETRIS 1.6 - ARROWS & SPACE' |
labellen: |
labe: |
db 'PAUSE' |
labelen: |
text: db 'Score: ' |
game_finished: db 'NEW GAME' |
size_of_game_finished: |
end if |
pauses dd 0 ;/// Wildwest |
parallel dd 1 |
score: dd 0 |
level: dd 0 |
speed: dd 0 |
lines: dd 0 |
TMP_0: dd 0 |
TMP_1: dd 0 |
generator: dd 0 |
237,17 → 876,10 |
current_block_y: dd 0 |
current_block_pointer: dd 0 |
current_block_color: db 0 |
next_block_pointer: dd 0 |
next_block_color: db 0 |
blabla dd 0 |
lastmousebutton dd 0 |
number_str: db 0,0,0,0,0,0,0,0,0 |
end_number_str: |
size_of_number_str dd 7 |
delay: dd 5 |
status: dd 0 ; 0=menu, 1=playing, 2=paused, 3=history , 4=instructions |
menu: dd 0 ; 0=start, 1=instructions, 2=history, 3=exit |
size_of_number_str dd 9 |
delay: db 40 |
table_tetris: |
table_tetris: rb 2048+55 |
IM_END: |
I_END: |
/programs/network/netsendc/trunk/netsendc.asm |
---|
16,12 → 16,13 |
org 0x0 |
db 'MENUET00' ; 8 byte id |
dd 38 ; required os |
db 'MENUET01' ; 8 byte id |
dd 1 ; header version |
dd START ; program start |
dd I_END ; program image size |
dd 0x100000 ; required amount of memory |
dd 0x00000000 ; reserved=no extended header |
dd mem ; required amount of memory |
dd mem ; stack pointer |
dd 0, 0 ; param, icon |
include 'lang.inc' |
include 'macros.inc' |
37,37 → 38,29 |
mov [socketNum], eax |
red: |
call draw_window ; at first, draw the window |
still: |
mov eax,23 ; wait here for event |
mov ebx,1 |
mov eax,10 ; wait here for event |
int 0x40 |
cmp eax,1 ; redraw request ? |
dec eax |
jz red |
cmp eax,2 ; key in buffer ? |
jz key |
cmp eax,3 ; button in buffer ? |
jz button |
dec eax |
jnz button |
jmp still |
red: |
call draw_window |
jmp still |
key: |
mov eax,2 |
mov al,2 |
int 0x40 |
jmp still |
button: |
mov eax,17 |
mov al,17 |
int 0x40 |
cmp ah,1 ; button id=1 ? |
dec ah ; button id=1 ? |
jnz noclose |
mov eax, 53 |
mov ebx, 1 |
76,14 → 69,8 |
mov eax,-1 |
int 0x40 |
noclose: |
; it was not close button, so it must be send code button |
cmp ah,2 ; SEND CODE ? |
je send_xcode |
jmp still |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;; ;; |
;; SEND CODE TO REMOTE ;; |
92,17 → 79,11 |
send_xcode: |
mov esi,send_data ; header |
mov edi,I_END |
mov ecx,end_message-send_data |
cld |
rep movsb |
mov eax,53 ; SEND CODE TO REMOTE |
mov ebx,4 |
mov ecx,[socketNum] |
mov edx,end_message-send_data |
mov esi,I_END |
mov esi,send_data |
int 0x40 |
jmp still |
124,8 → 105,6 |
mov ebx,100*65536+250 ; [x start] *65536 + [x size] |
mov ecx,60*65536+150 ; [y start] *65536 + [y size] |
mov edx,0x03ffffff ; color of work area RRGGBB |
mov esi,0x80aabbcc ; color of grab bar RRGGBB,8->color gl |
mov edi,0x00aabbcc ; color of frames RRGGBB |
int 0x40 |
; WINDOW LABEL |
143,7 → 122,6 |
mov esi,0x667788 |
int 0x40 |
cld |
mov ebx,25*65536+50 ; draw info text with function 4 |
mov ecx,0x000000 |
mov edx,text |
152,7 → 130,7 |
mov eax,4 |
int 0x40 |
add ebx,16 |
add edx,40 |
add edx,esi |
cmp [edx],byte 'x' |
jnz newline |
165,7 → 143,7 |
; DATA AREA |
if lang eq ru |
text: |
db ' ®á« âì á®®¡é¥¨¥ ' |
db ' ' |
172,27 → 150,31 |
db ' ®ª «ìë© ¤à¥á : 192.168.0.1 ' |
db ' ¤ «ñë© ¤à¥á : 192.168.0.2 ' |
db '¥ªáâ ¨ ¤à¥á ¢ ª®æ¥ ¨á室¨ª ' |
db 'x <- END MARKER, DONT DELETE ' |
db 'x' ; <- END MARKER, DONT DELETE |
else |
text: |
db ' Send message ' |
db ' ' |
db ' Local address : 192.168.0.1 ' |
db ' Remote address : 192.168.0.2 ' |
db 'Text and address in end of source ' |
db 'x' ; <- END MARKER, DONT DELETE |
end if |
labeltext: db 'NetSend(Client)' ; |
lte: |
socketNum dd 0x0 |
remote_ip db 192,168,1,2 |
picture_position dd 0x0 |
send_data db 'ਢ¥â,íâ® â¥áâ!Hello,this is a test!' |
end_message: |
I_END: |
align 4 |
socketNum dd ? |
rb 32 ; this is for stack |
mem: |
/programs/network/netsends/trunk/netsends.asm |
---|
183,14 → 183,20 |
; DATA AREA |
if lang eq ru |
text: |
db ' ë© ¤à¥á : 192.168.0.2 ' |
db 'à®á«ã訢 ¥¬ë© ¯®àâ : 0x5000 ' |
db 'à¨á« ë¥ á®®¡é¥¨ï: ' |
db 'x <- END MARKER, DONT DELETE ' |
db 'x' ; <- END MARKER, DONT DELETE |
else |
text: |
db 'This address : 192.168.0.2 ' |
db 'Used port : 0x5000 ' |
db 'Received messages: ' |
db 'x' ; <- END MARKER, DONT DELETE |
end if |
labeltext: db 'NetSend(Server)' |
lte: |
198,10 → 204,3 |
I_END: |
/programs/other/archer/trunk/@RCHER.ASM |
---|
1,4 → 1,4 |
; @RCHER - DEflate unpacker v1.0 |
; @RCHER - Deflate unpacker v2.0 beta |
; |
; Written in pure assembler by Ivushkin Andrey aka Willow |
; |
8,15 → 8,17 |
; |
; Compile with FASM |
SYS equ meos |
PARAM_PTR equ png_image |
OUTBUF equ 4*1024*1024 |
png_imag = output+OUTBUF |
PARAM_PTR = os_work;png_image |
MEMINIT=next_code;output |
DUMPFILE equ '/hd/1/out.txt' |
SHOW_RBLOCK equ 0;1 |
SHOW_PNG_SEC equ 0;1 |
SHOW_METH equ 0;1 |
FILE_NUM equ 0 |
FILE_NUM equ 15;8 |
MEMORY equ 0x800000 |
BITS equ 16 |
28,7 → 30,6 |
SHOW_CHARS equ 0 |
BSIZE equ 512 |
INBUF equ BUFSIZE*BSIZE*2 |
OUTBUF equ 4*1024*1024 |
IGNORE_DIRS equ 0 |
MOVE_SLINE_LEV equ 8 |
40,6 → 41,9 |
IPC_MODE equ 100000b |
RAW_MODE equ 1000000b |
THREAD_YES equ 10000000b |
LIST_MODE equ 100000000b |
MEM_MODE equ 1000000000b |
FIND_MODE equ 10000000000b |
if SYS eq win |
format PE console |
57,8 → 61,8 |
dd 0x01 |
dd start |
dd I_END |
dd MEMORY |
dd MEMORY-2048 |
dd MEMINIT |
dd main_stack;MEMORY-2048 |
if PARAM_PTR eq param |
dd 0 |
else |
65,12 → 69,11 |
dd PARAM_PTR |
end if |
dd 0x0 |
include "lang.inc" |
if PARAM_PTR eq param |
param db 'RQ' |
db '000037' |
db '/hd/1/zip/png.zip',0 |
param db 'N' |
db '000015' |
db '/hd/1/zip/gz/fasm-1~1.tgz',0 |
end if |
;match =meos,SYS |
;{ |
77,14 → 80,17 |
include "macros.inc" |
; purge mov |
include "debug.inc" |
include 'dump.inc' |
;} |
end if |
language equ en |
include 'lang.inc' |
language equ lang |
if SYS eq win |
section '.text' code readable executable writeable |
end if |
include "arcmacro.inc" |
include "parser.inc" |
include "deflate.inc" |
107,6 → 113,12 |
mcall 40,10000101b |
; jmp again |
CmdLine |
cmdl: |
test [Flags],LIST_MODE |
jz red |
; Dump [lpath],[lpath_len],os_work |
; ud2 |
red: |
call draw_window |
mcall 12,2 |
134,12 → 146,15 |
mcall -1 |
.noquit: |
mcall 17 |
mcall 64,1,MEMINIT |
QueryFile |
and [FileNum],0 |
mov [FileNum],FILE_NUM |
test eax,eax |
jnz still |
end if |
again: |
; Dump Flags,4,os_work |
mov [fat_],fat |
Newline |
xor eax,eax |
; and [Flags],STAY_MODE |
153,6 → 168,11 |
Msg 14 |
jmp quit |
.sizeok2: |
call KillViewer |
xor eax,eax |
mov ecx,(child_stack-fat)/4 |
mov edi,fat |
rep stosd |
mov [filesize],ebx |
test [Flags],RAW_MODE |
jz .norawm |
213,13 → 233,37 |
jmp exit |
.sizeok1: |
if ~ SYS eq win |
call KillViewer |
end if |
Msg 39 |
Msg 39 ; unpacking PNG |
mov ecx,[unp_size] |
add ecx,output |
mov [png_],ecx |
mov eax,[PNG_info.Width] |
imul eax,[PNG_info.Height] |
lea eax,[eax+eax*2] |
add ecx,eax |
; dps 'Mem=' |
; dpd ecx |
mcall 64,1 |
test eax,eax |
jz .ok |
Msg 41 |
jmp exit |
.ok: |
mov edi,[outp] |
call Deflate.blkbegin |
jmp .defl_end |
.sizeok: |
mov ecx,[unp_size] |
dpd ecx |
add ecx,output |
; mov [png_],ecx |
mcall 64,1 |
test eax,eax |
jz .ok2 |
Msg 41 |
jmp exit |
.ok2: |
call Deflate ; <=========== |
.defl_end: |
test [bits],7 |
252,6 → 296,8 |
pop ecx esi |
jmp .skipAdler |
.skipCRC: |
; dps 'Out=' |
; dpd ecx |
call UAdler |
Msg 10 |
mov eax,[Adler32] |
283,6 → 329,9 |
else |
test [Flags],PNG_MODE |
jnz .nosave |
test [Flags],LIST_MODE |
jnz quit |
test [Flags],TAR_MODE |
jnz .nomsg |
Msg 37 |
289,9 → 338,11 |
.nomsg: |
mov [outfile.out],ebx |
mcall 58,outfile |
; dps 'Before Quit1' |
; ud2 |
test [Flags],TAR_MODE |
jnz .nosave |
call StartPad |
jz exit.pad |
; call StartPad |
.nosave: |
end if |
test [Flags],PNG_MODE |
300,7 → 351,7 |
mov edi,filters |
mov ecx,6 |
rep stosd |
mov edi,png_image |
mov edi,[png_] |
mov esi,output |
;// |
mov [outp],edi |
320,7 → 371,7 |
call RunViewer |
and [arc_base],0 |
and [Flags],STAY_MODE |
; dps 'Before Quit2' |
quit: |
QueryFile |
test eax,eax |
332,7 → 383,10 |
test [Flags],TAR_MODE |
jz .notar |
Msg 37 |
test [Flags],LIST_MODE |
jne quit |
mcall 58,outfile |
.pad: |
call StartPad |
.notar: |
Msg 12 |
352,16 → 406,19 |
else |
jz still |
end if |
mov ecx,dumpf_len |
mov esi,dumpfile |
mov edi,filename |
rep movsb |
call OpenFile |
test ebx,ebx |
jz again.sizebadq |
; Dump output,255,os_work |
; ud2 |
; mov ecx,dumpf_len |
; mov esi,dumpfile |
; mov edi,filename |
; rep movsb |
; call OpenFile |
; test ebx,ebx |
; jz again.sizebadq |
call TarParse |
mov ecx,[FileNum] |
call TarFindN |
; dpd [outfile.size] |
cmp [outfile.size],0 |
jz again.sizebadq |
mov ebx,esi |
/programs/other/archer/trunk/arcmacro.inc |
---|
177,6 → 177,7 |
' ',\ ;38 |
<'®¤£®â®¢ª ¨§®¡à ¦¥¨ï...',13,10>,\ ;39 |
<'ª ¦¨â¥ "R" ¤«ï ®¡à ¡®âª¨ áëàëå ¤ ëå. ⬥ .',13,10>,\ ;40 |
<'¥ å¢ â ¥â ¯ ¬ïâ¨! ⬥ .',13,10>,\ ; 41 |
' ',\ ; |
' ',\ ; |
' ',\ ; |
185,7 → 186,6 |
' ',\ ; |
' ',\ ; |
' ',\ ; |
' ',\ ; |
' <- ¥¨§¢¥áâë© ¬¥â®¤ ᦠâ¨ï',\ ;50 |
' <- § è¨ä஢ ',\ ;51 |
<'¥ ZIP à娢',13,10> ; 52 |
232,6 → 232,7 |
' ',\ ;38 |
<'Preparing bitmap...',13,10>,\ ;39 |
<'Specify "R" to force raw data. Abort.',13,10>,\ ;40 |
<'Not enough memory! Abort.',13,10>,\ ; |
' ',\ ; |
' ',\ ; |
' ',\ ; |
240,7 → 241,6 |
' ',\ ; |
' ',\ ; |
' ',\ ; |
' ',\ ; |
' <- unknown compression method',\ ;50 |
' <- encrypted',\ ;51 |
<'Not a ZIP archive',13,10> ; 52 |
/programs/other/archer/trunk/data.inc |
---|
84,6 → 84,11 |
Dheader rb 12 |
Dpassword rb PASSW_LEN |
png_ dd ? |
fat_ dd ? |
fat_fnum dd ? |
lpath dd ? |
lpath_len dd ? |
png_bpp dd ? |
sline_len dd ? |
IDATcount dd ? |
120,6 → 125,15 |
hclen db ? |
max_len dw ? |
fat: |
rb 4096;512 |
child_stack: |
rb 1024 |
main_stack: |
area: |
rb INBUF |
os_work rb 4*1024 |
bl_count rb BITS |
next_code rw BITS |
143,16 → 157,10 |
Distance rw 32 |
Dist_c rw 32 |
area: |
rb INBUF |
os_work rb 4*1024 |
output: |
rb OUTBUF |
;rb OUTBUF |
png_image: |
;png_image: |
if SYS eq win |
rb OUTBUF |
end if |
/programs/other/archer/trunk/debug.inc |
---|
73,10 → 73,16 |
@@: |
ret |
_debug_crlf db 13, 10, 0 |
macro newline |
{ |
dps <13,10> |
pushf |
pushad |
mov edx, _debug_crlf |
call debug_outstr |
popad |
popf |
} |
macro print message |
/programs/other/archer/trunk/deflate.inc |
---|
128,7 → 128,7 |
end if |
pusha |
xor eax,eax |
mov ecx,(area-bl_count) / 4 |
mov ecx,(output-bl_count) / 4 |
mov edi,bl_count |
rep stosd |
popa |
/programs/other/archer/trunk/dump.inc |
---|
0,0 → 1,55 |
; Include file for dumping user apps' memory through new debug BOARD |
; Max amount of bytes to be dumped |
IPC_BUF equ 160 |
; Dump macro parameters: |
; ptr - pointer to memory dumped |
; len - dump length |
; workarea - any work area for sysfunc 9 |
; run_new - if not empty, run BOARD unless it is running already |
macro Dump ptr, len, workarea,run_new |
{ |
local .exist,.lt |
pusha |
mov ebx,workarea |
call Board_seek |
if ~ run_new eq |
test edx,edx |
jne .exist |
mcall 19,Board_seek.board_fn,0 |
mov edx,eax |
mcall 5,20 |
end if |
.exist: |
mov esi,len |
cmp esi,IPC_BUF |
jbe .lt |
mov esi,IPC_BUF |
.lt: |
mcall 60,2,edx,ptr |
popa |
} |
if used Board_seek |
Board_seek: |
; ebx - prcinfo |
xor edx,edx |
mcall 9,,-1 |
mov ecx,eax |
mov esi,dword[.board_fn] |
.lp: |
mcall 9 |
cmp dword[ebx+10],esi |
; jne .no |
; cmp dword[ebx+42],399 |
je .ok |
.no: |
loop .lp |
ret |
.ok: |
mov edx,[ebx+30] |
ret |
.board_fn db 'BOARD ' |
end if |
/programs/other/archer/trunk/macros.inc |
---|
143,9 → 143,6 |
; optimize the code for size |
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp> |
177,7 → 174,7 |
macro mov arg1,arg2 |
{ |
if (arg1 in __regs) & (arg2 eqtype 0) |
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0')) |
if (arg2) = 0 |
xor arg1,arg1 |
else if (arg2) = 1 |
/programs/other/archer/trunk/parser.inc |
---|
22,12 → 22,86 |
rep movsb |
mov dword[edi],0x00a0d |
call DebugPrint |
; mcall 10 |
; mcall 2 |
popa |
call Add2Fat |
ret |
Add2Fat: |
; edx - ptr, ecx - len |
pusha |
test [Flags],LIST_MODE |
jz .ex |
mov ebp,8 |
mov edi,edx |
lea ebx,[edx+ecx] |
mov ecx,[lpath_len] |
cmp ecx,1 |
je .lbl |
mov esi,[lpath] |
repe cmpsb |
jne .full |
mov eax,[lpath_len] |
sub dword[esp+24],eax;path_len-path |
cmp edi,ebx |
je .full |
mov edx,edi |
.lbl: |
mov ecx,[esp+24] |
mov al,'/' |
repne scasb |
mov eax,[fat_] |
mov ecx,[esp+24] |
jne .nofol |
cmp edi,ebx |
jne .full |
lea ecx,[edi-1] |
sub ecx,edx |
or byte[eax+11],0x10 |
; sub edx,ecx |
.nofol: |
push [fat_fnum] |
pop dword[eax+12] |
mov edi,eax |
mov esi,edx |
.lp1: |
mov bl,[esi] |
lea edx,[eax+ebp] |
inc esi |
cmp bl,'.' |
jne .nodot |
lea edi,[eax+ebp] |
mov ebp,11 |
jmp .ll |
.nodot: |
cmp edi,edx |
jae .ll |
mov [edi],bl |
inc edi |
.ll: |
loop .lp1 |
mov ecx,11 |
dec eax |
.lp2: |
cmp byte[eax+ecx],0 |
jne .no0 |
mov byte[eax+ecx],' ' |
.no0: |
loop .lp2 |
cmp eax,child_stack-1 |
jae .full |
add [fat_],32 |
.full: |
inc [fat_fnum] |
.ex: |
popa |
ret |
;path db '/';'fasm/examples/elfexe/' |
;path_len: |
; Parse routines: |
; out: edx= 0 if all ok, 1 - central dir, 2-EOD |
; 50 - encrypted |
78,16 → 152,19 |
popa |
end if |
Newline |
; Dump fat,160,os_work |
ret |
ZipFindN: |
; ecx - file # |
Msg 33 |
or [Flags],FIND_MODE |
cmp ecx,[file_count] |
jae .err |
push ecx |
call ResetFile |
.nxt: |
call ZipCrawl |
cmp edx,51 |
je .ok2 |
111,6 → 188,7 |
add esi,eax |
mov edx,5 |
.ex: |
and [Flags],-1-FIND_MODE |
push edx |
Msg edx |
pop edx |
159,6 → 237,8 |
cmp byte[edx+ecx-1],'/' |
je .skipdp |
end if |
test [Flags],FIND_MODE |
jnz .skipdp |
call PrintFilename |
.skipdp: |
movzx ecx,word[esi+28] |
252,7 → 332,19 |
mov [PNG_info.Width],eax |
mov eax,[PNG_info.Height] |
bswap eax |
mov ebx,eax |
mov [PNG_info.Height],eax |
call scanline_calc |
; dps 'All=' |
cmp [PNG_info.Color_type],3 |
jne .nopal |
shl eax,3 |
inc eax |
.nopal: |
inc eax |
imul eax,ebx |
mov [unp_size],eax |
; dpd eax |
add esi,25 |
cmp byte[esi-5],0 |
rep_err e,52,29 |
423,7 → 515,8 |
ret |
TarParse: |
call ResetFile |
mov esi,output |
; call ResetFile |
.nxt: |
call TarCrawl |
; wait |
436,8 → 529,9 |
inc [file_count] |
.skipinc: |
add eax,ecx |
mov ebx,1 |
call FileSeek |
; mov ebx,1 |
add esi,eax |
; call FileSeek |
jmp .nxt |
TarFindN: |
447,7 → 541,8 |
cmp ecx,[file_count] |
jae .err |
push ecx |
call ResetFile |
mov esi,output |
; call ResetFile |
.nxt: |
call TarCrawl |
if IGNORE_DIRS eq 1 |
461,8 → 556,9 |
dec dword[esp] |
.seek: |
add eax,ecx |
mov ebx,1 |
call FileSeek |
; mov ebx,1 |
add esi,eax |
; call FileSeek |
jmp .nxt |
.err: |
mov edx,4 |
559,13 → 655,8 |
.err: |
ret |
; Created: May 31, 2005 |
FiltCall: |
dd PngFilter.nofilt,Filt_sub,Filt_up,Filt_av,Filt_paeth,PngFilter.nofilt |
PngFilter: |
; esi - filtered uncompressed image data |
; edi - destination |
mov cl,[PNG_info.Color_type] |
scanline_calc: |
movzx ecx,byte[PNG_info.Color_type] |
mov eax,1 |
cmp cl,3 |
je .palette |
594,6 → 685,15 |
jnz .noz2 |
inc eax |
.noz2: |
ret |
; Created: May 31, 2005 |
FiltCall: |
dd PngFilter.nofilt,Filt_sub,Filt_up,Filt_av,Filt_paeth,PngFilter.nofilt |
PngFilter: |
; esi - filtered uncompressed image data |
; edi - destination |
call scanline_calc |
mov [sline_len],eax ; scanline length |
push edi |
and [Flags],not 1 |
/programs/other/archer/trunk/sys.inc |
---|
105,7 → 105,7 |
else |
test [Flags],THREAD_YES |
jnz .ex |
mcall 51,1,thread,MEMORY |
mcall 51,1,thread,child_stack;MEMORY |
mov [child],eax |
end if |
.ex: |
191,7 → 191,7 |
mov ecx,[PNG_info.Width] |
shl ecx,16 |
add ecx,[PNG_info.Height] |
mcall 7,png_image,,10 shl 16+25 |
mcall 7,[png_],,10 shl 16+25 |
mcall 12,2 |
.still: |
mcall 10 |
208,6 → 208,7 |
jne .still |
.close: |
and [child],0 |
mcall 64,1,MEMINIT |
mcall -1 |
KillViewer: |
256,7 → 257,68 |
mov ecx,255 |
mov edi,filename |
rep movsb |
jmp again |
; test [Flags],LIST_MODE |
; jz again |
xor eax,eax |
mov edi,filename |
mov ecx,255 |
repne scasb |
cmp byte[edi-2],'/' |
je .slash |
mov byte[edi-1],'/' |
inc edi |
.slash: |
; Dump filename,255,os_work |
; ud2 |
mov ecx,edi |
; dec ecx |
mov edx,ecx |
mov dword[Finfo],13 |
; mov dword[Finfo.count],1 |
mov edi,filename+5 |
sub ecx,edi |
.lp: |
mov al,'/' |
repne scasb |
; jne .ex |
; dpd ecx |
and byte[edi-1],0 |
mcall 58,Finfo |
mov byte[edi-1],'/' |
test ebx,32 |
jz .lp |
test [Flags],LIST_MODE |
jne .listm |
and byte[edi-1],0 |
; Dump filename,255,os_work |
jmp .agg |
; ud2 |
.listm: |
lea esi,[edi-1+ecx] |
lea edi,[esi+1] |
std |
rep movsb |
and byte[edi],0 |
cld |
; dpd filename |
inc edi |
dpd edi |
cmp edx,edi |
jne .slash2 |
; cmp byte[edi],'/' |
; je .slash2 |
mov byte[edi],'/' |
inc edx |
.slash2: |
sub edx,edi |
mov [lpath],edi |
mov [lpath_len],edx |
dpd edx |
.agg: |
mov dword[Finfo],0 |
; ud2 |
jmp again;cmdl |
.yespar: |
cmp al,'N' |
jne .nonum |
300,6 → 362,10 |
call get_6ASCII_num |
jmp .fofs |
.noofs2: |
cmp al,'L' |
jne .nolist |
or [Flags],LIST_MODE |
.nolist: |
jmp .parse |
get_6ASCII_num: |
319,8 → 385,20 |
} |
StartPad: |
mcall 19,editorcmd,dumpfile |
; mcall 19,editorcmd,dumpfile |
pusha |
mov esi,[outfile.size] |
; dpd esi |
mov [par_fsize],esi |
mcall 19,editorcmd,editor_par |
mov ecx,eax |
mcall 5,20 |
mcall 60,2,,[outfile.out];output |
mcall 64,1,MEMINIT |
popa |
ret |
editorcmd db 'TINYPAD ' |
editor_par db '*' |
par_fsize dd ? |
end if |
/programs/system/board/trunk/board.asm |
---|
5,9 → 5,16 |
; |
; Compile with FASM for Menuet |
; |
LMARGIN equ (15+5) |
TMARGIN equ (35+5) |
HSPACE equ 16 |
VSPACE equ 12 |
IPC_BUF equ 160 |
DR_GRID equ 0;1 |
FL_KRNL equ 1 |
include 'lang.inc' |
include 'macros.inc' |
use32 |
org 0x0 |
15,18 → 22,20 |
dd 0x01 ; header version |
dd START ; start of code |
dd I_END ; size of image |
dd 0x2000 ; memory for app (4 Kb) |
dd 0x2000 ; esp |
dd i_end+0x2000 ; memory for app (4 Kb) |
dd i_end+0x2000 ; esp |
dd 0x0 , 0x0 ; I_Param , I_Icon |
include 'MACROS.INC' |
include 'debug.inc' |
purge newline |
MAXSTRINGS = 16 |
TMP = 80*(MAXSTRINGS+1) |
xpos dd 0x0 |
ypos dd 0 |
START: ; start of execution |
mcall 60,1,ipcbuff,IPC_BUF+20 |
mcall 40,1000111b |
mov [ipcbuff+4],8 |
mov ecx,1024 |
flush: |
mov eax,63 |
34,20 → 43,21 |
int 0x40 |
loop flush |
mov ecx, 80*(MAXSTRINGS+1) |
mov ecx, TMP |
xor eax, eax |
mov edi, text |
mov edi, [targ] |
rep stosb |
mov [tmp],'x' |
mov [tmp1],'x' |
mov [tmp2],'x' |
mov eax,14 |
int 0x40 |
and eax,0xffff0000 |
sub eax,400 shl 16 |
add eax,400 |
sub eax,399 shl 16 |
add eax,399 |
mov [xstart],eax |
red: |
call draw_window |
still: |
62,7 → 72,8 |
je key |
cmp eax,3 ; button in buffer ? |
je button |
cmp eax,7 |
je ipc |
mov eax,63 |
mov ebx,2 |
int 0x40 |
71,45 → 82,61 |
jne still |
new_data: |
mov ebp,[targ] |
.no4: |
cmp al,13 |
jne no13 |
mov [xpos],0 |
and dword[ebp-8],0 |
jmp new_check |
no13: |
cmp al,10 |
jne no10 |
inc [ypos] |
cmp [ypos],MAXSTRINGS |
jbe noypos |
mov [ypos],MAXSTRINGS |
mov esi,text+80 |
mov edi,text |
inc dword[ebp-4] |
cmp dword[ebp-4],MAXSTRINGS |
jbe .noypos |
mov dword[ebp-4],MAXSTRINGS |
lea esi,[ebp+80] |
mov edi,ebp |
mov ecx,80*(MAXSTRINGS) |
cld |
rep movsb |
mov esi,[ypos] |
mov esi,[ebp-4] |
imul esi,80 |
add esi,[xpos] |
add esi,text |
add esi,[ebp-8] |
add esi,ebp |
mov ecx,80 |
xor al,al |
rep stosb |
noypos: |
.noypos: |
mov [targ],text2 |
and [krnl_cnt],0 |
jmp new_check |
no10: |
cmp ebp,text1 |
je add2 |
mov ecx,[krnl_cnt] |
cmp al,[krnl_msg+ecx] |
jne .noknl |
inc [krnl_cnt] |
cmp [krnl_cnt],4 |
jne new_check |
mov [targ],text1 |
.noknl: |
mov ebp,[targ] |
jecxz .add |
push eax |
mov esi,krnl_msg |
.l1: |
lodsb |
call add_char |
loop .l1 |
pop eax |
.add: |
and [krnl_cnt],0 |
add2: |
call add_char |
mov esi,[ypos] |
imul esi,80 |
add esi,[xpos] |
mov [text+esi],al |
inc [xpos] |
cmp [xpos],80 |
jb xposok |
mov [xpos],79 |
xposok: |
new_check: |
mov eax,63 |
119,36 → 146,127 |
cmp ebx,1 |
je new_data |
cmp [vmode],2 |
je still |
call draw_window |
jmp still |
red: ; redraw |
call draw_window |
jmp still |
ipc: |
mov [vmode],2 |
mov eax,ipcbuff |
mov esi,[eax+8] |
mov byte[eax],1 |
push dword[eax+12] |
pop [dump_len] |
mcall 9,work,-1 |
mov ecx,eax |
.lp: |
mcall 9 |
cmp [ebx+30],esi |
je .ok |
loop .lp |
and [dump_len],0 |
jmp red |
.ok: |
mov [pid],esi |
lea esi,[ebx+10] |
mov edi,dump_title+10 |
mov ecx,12 |
rep movsb |
jmp red |
key: ; key |
mov eax,2 ; just read it and ignore |
int 0x40 |
cmp ah,' ' |
je button.no_krnl_flt |
cmp [vmode],2 |
jne still |
cmp ah,176 ;left |
jb still |
cmp ah,179 ;right |
ja still |
mov ecx,[offs] |
shr eax,8 |
sub eax,176 |
add ecx,[arrows+eax*4] |
shl ecx,12 |
shr cx,12 |
jmp button.check_sel |
.nol: |
jmp still |
arrows dd -1,16,-16,1 |
button: ; button |
mov eax,17 ; get id |
int 0x40 |
cmp ah,1 ; button id=1 ? |
jne noclose |
jne .noclose |
mov eax,-1 ; close this program |
int 0x40 |
noclose: |
.noclose: |
shr eax,8 |
cmp eax,10 |
jb .nodump |
lea edi,[eax-10] |
mcall 37,1 |
sub eax,[edi*4+dump_cell_marg] |
sub eax,TMARGIN+VSPACE |
push eax |
and eax,0xffff |
xor edx,edx |
div word[edi*4+dump_cell_size+2] |
mov ecx,eax |
shl ecx,16 |
xor edx,edx |
pop eax |
shr eax,16 |
div word[edi*4+dump_cell_size] |
mov cx,ax |
.check_sel: |
mov eax,ecx |
shl ax,12 |
shr eax,12 |
inc eax |
cmp eax,[dump_len] |
ja still;.nosel |
mov dword[sel_byte],ecx |
dec eax |
mov [offs],eax |
jmp red |
.nodump: |
cmp eax,2 |
jne .no_krnl_flt |
xor [flag],FL_KRNL |
jmp still |
.no_krnl_flt: |
mov [ipcbuff+4],8 |
and byte[ipcbuff],0 |
inc [vmode] |
cmp [vmode],3 |
jb .vmok |
and [vmode],0 |
.vmok: |
jmp red |
add_char: |
push esi |
mov esi,[ebp-4] |
imul esi,80 |
add esi,[ebp-8] |
mov [ebp+esi],al |
inc dword[ebp-8] |
cmp dword[ebp-8],80 |
jb .ok |
mov dword[ebp-8],79 |
.ok: |
pop esi |
ret |
; ********************************************* |
; ******* WINDOW DEFINITIONS AND DRAW ******** |
; ********************************************* |
170,7 → 288,7 |
mov eax,0 ; function 0 : define and draw window |
; mov ebx,50*65536+400 ; [x start] *65536 + [x size] |
mov ebx,[xstart] |
mov ecx,MAXSTRINGS*10+40 ; [y start] *65536 + [y size] |
mov ecx,MAXSTRINGS*10+45 ; [y start] *65536 + [y size] |
mov edx,[sc.work] ; color of work area RRGGBB,8->color gl |
or edx,0x03000000 |
int 0x40 |
184,9 → 302,24 |
mov esi,header.len ; text length |
int 0x40 |
mov ecx,4 |
mov esi,[sc.work] |
mov ebx,316 shl 16+5*6 |
mov edx,3;+1 shl 30 |
mcall 8,,<5,12> |
mov edx,[vmode] |
lea edx,[edx*4+duk] |
mcall 4,<320,8>,,,4 |
cmp [vmode],2 |
je no_mdbg |
mov ebx,15*65536+33 ; draw info text with function 4 |
mov ecx,[sc.work_text] |
mov edx,text |
mov edx,text1 |
cmp [vmode],0 |
je .kern |
mov edx,text2 |
.kern: |
mov esi,80 |
newline: |
mov eax,4 |
195,7 → 328,18 |
add edx,80 |
cmp [edx],byte 'x' |
jne newline |
jmp enddraw |
no_mdbg: |
if DUMP_TEST eq 1 |
mov esi,0 |
mov [dump_len],100;IPC_BUF |
else |
mov esi,ipcbuff+16 |
end if |
mov ecx,[dump_len] |
call dump_btn |
call draw_dump |
enddraw: |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,2 ; 2, end of draw |
int 0x40 |
202,9 → 346,181 |
ret |
if DR_GRID eq 1 |
draw_grid: |
mov ecx,11 |
mov edi,(TMARGIN+VSPACE)shl 16+TMARGIN+VSPACE |
.l1: |
push ecx |
mov ebx,LMARGIN shl 16+LMARGIN+16*HSPACE |
mcall 38,,edi,0 |
add edi,VSPACE shl 16+VSPACE |
pop ecx |
loop .l1 |
mov ecx,17 |
mov edi,(TMARGIN+VSPACE)shl 16+TMARGIN+VSPACE*10 |
mov ebx,LMARGIN shl 16+LMARGIN |
.l2: |
push ecx |
mcall 38,,edi,0 |
add ebx,HSPACE shl 16+HSPACE |
pop ecx |
loop .l2 |
ret |
end if |
draw_numbers: |
mcall 4,(LMARGIN+2) shl 16+180,0,numb,numb_len-numb |
mov eax,dword[sel_byte] |
shl ax,12 |
shr eax,12 |
mov edi,eax |
if ~ DUMP_TEST eq 1 |
add edi,ipcbuff+16 |
end if |
mov edx,(LMARGIN+2+6*6)shl 16+180 |
mov ebx,0x30000 |
movzx ecx,byte[edi] |
mcall 47,,,,0x4e00e7 |
add ebx,0x20000 |
add edx,(6*10)shl 16 |
movzx ecx,word[edi] |
mcall |
add ebx,0x50000 |
add edx,(6*13)shl 16 |
mov ecx,[edi] |
mcall |
mov ebx,0x80100 |
add edx,(6*19)shl 16 |
mcall |
.ex: |
ret |
draw_dump: |
; esi - data ptr, ecx - length |
jecxz draw_numbers.ex |
pusha |
call draw_numbers |
mcall 4,(LMARGIN+2) shl 16+27,0,dump_title,dump_t_len-dump_title |
mcall 47,0x30101,ipcbuff+8,(LMARGIN+2+6*29)shl 16+27 |
add edx,(6*27) shl 16 |
mov ecx,offs |
mcall |
sub edx,(5*6)shl 16 |
mcall ,0x30001 |
mov ecx,16 |
mov edi,HSPACE shl 16 |
mov ebx,(LMARGIN+5)shl 16+42 |
call draw_marks |
mov ecx,[esp+24] |
dec ecx |
shr ecx,4 |
inc ecx |
mov ebx,(LMARGIN-10)shl 16+TMARGIN+2+VSPACE |
mov edi,VSPACE |
call draw_marks |
popa |
mov edx,TMARGIN+2 |
mov edi,ecx |
.lp: |
add edx,(LMARGIN+2) shl 16+VSPACE |
mov ecx,16 |
cmp edi,ecx |
jae .less |
mov ecx,edi |
.less: |
sub edi,ecx |
push esi ecx |
mov ebx,0x20100 |
.lp1: |
push ecx esi |
movzx ecx,byte[esi] |
mcall 47,,,,0 |
add edx,HSPACE shl 16 |
pop esi ecx |
inc esi |
loop .lp1 |
pusha |
mov ebx,edx |
and ebx,0xffff |
add ebx,(LMARGIN+16*HSPACE+15)shl 16 |
mov edx,[esp+36] |
mov esi,[esp+32] |
mcall 4,,0 |
popa |
add esp,8 |
and edx,0xffff |
test edi,edi |
jnz .lp |
.ex: |
ret |
draw_marks: |
; ebx -xy, edi-addition, ecx -cycles |
pusha |
mov edx,__hexdigits |
mov eax,4 |
mov esi,1 |
.tt: |
push ecx |
mcall ,,0xffffff |
add ebx,edi |
inc edx |
pop ecx |
loop .tt |
popa |
ret |
dump_btn: ; ecx-length |
jecxz draw_dump.ex |
pusha |
test ecx,0xffff |
je .even |
add ecx,16 |
.even: |
shr ecx,4 |
imul ecx,VSPACE |
add ecx,(TMARGIN+VSPACE)shl 16-5 |
mcall 8,LMARGIN shl 16+16*HSPACE-5,,10+3 shl 29,[sc.work] |
inc edx |
mcall ,(LMARGIN+16*HSPACE+15)shl 16+6*16 |
mov edx,0xff0000 |
mov esi,dump_cell_size |
xor eax,eax |
movzx ebx,[sel_byte] |
lodsw |
imul bx,ax |
shl ebx,16 |
lea ebx,[ebx+eax+LMARGIN shl 16] |
movzx ecx,[sel_byte+2] |
lodsw |
imul cx,ax |
shl ecx,16 |
lea ecx,[ecx+eax+(TMARGIN+VSPACE) shl 16] |
mcall 13 |
movzx ebx,[sel_byte] |
lodsw |
imul bx,ax |
shl ebx,16 |
lea ebx,[ebx+eax+(LMARGIN+16*HSPACE+15)shl 16] |
mcall 13 |
popa |
.ex: |
ret |
krnl_msg db 'K : ' |
duk db 'KernUserDump' |
numb db 'Byte: Word: Dword: Hex:' |
numb_len: |
dump_title db 'Dump from (pid= h) Offset: ( h)' |
dump_t_len: |
; DATA AREA |
dump_cell_marg dd LMARGIN shl 16,(LMARGIN+16*HSPACE+15)shl 16 |
dump_cell_size dw HSPACE,VSPACE,6,VSPACE |
; 11,11 > 0,-1 |
; 5,11 > 0,-1 |
if lang eq ru |
header: |
db ' ' |
214,8 → 530,27 |
db 'GENERAL DEBUG & MESSAGE BOARD' |
.len = $ - header |
end if |
krnl_cnt dd 0 |
vmode dd 0 |
targ dd text2 |
I_END: |
text rb 80*(MAXSTRINGS+1) |
tmp db ? |
offs dd ? |
flag rb 1 |
ipcbuff rb IPC_BUF+20 |
rd 2 |
; x1pos dd ? |
; y1pos dd ? |
text1 rb 80*(MAXSTRINGS+1) |
tmp1 db ? |
rd 2 |
; x2pos dd ? |
; y2pos dd ? |
text2 rb 80*(MAXSTRINGS+1) |
tmp2 db ? |
work rb 4096 |
sel_byte dw ?,? |
pid dd ? |
xstart dd ? |
sc system_colors |
dump_len dd ? |
sc system_colors |
i_end: |
/programs/system/panel/trunk/@PANEL.ASM |
---|
1982,7 → 1982,7 |
end_name db '/RD/1/END',0 |
menu_name db '/RD/1/MENU',0 |
calendar_name db '/RD/1/CALENDAR',0 |
sysmeter_name db '/RD/1/SYSMETER',0 |
sysmeter_name db '/RD/1/GMON',0 |
dat_fileinfo: |
dd 0 |
/programs/system/pic4/trunk/pic4.asm |
---|
107,29 → 107,6 |
jmp bg2 |
set_default_colours: |
pusha |
mov eax,6 ; load default color map |
mov ebx,defcol |
mov ecx,0 |
mov edx,-1 |
mov esi,0x8000 |
int 0x40 |
mov eax,48 ; set default color map |
mov ebx,2 |
mov ecx,0x8000 |
mov edx,10*4 |
int 0x40 |
popa |
ret |
defcol db 'DEFAULT.DTP' |
check_parameters: |
cmp [I_Param],dword 'BOOT' |
137,7 → 114,6 |
ret |
@@: |
call set_default_colours |
call load_texture |
mov eax,15 |
148,7 → 124,8 |
mov eax,15 |
mov ebx,5 |
mov ecx,0x40000+1 |
mov ecx,0x40000 ; <<< 0x40000 for blue, 0x40000+1 for red, |
; <<< 0x40000+2 for green background at boot |
mov edx,0 |
mov esi,256*3*256 |
int 0x40 |
308,7 → 285,7 |
ylup: |
mov ebx,0 |
call precalcbar |
; call precalcbar |
xlup: |
push edi |
342,10 → 319,10 |
mov eax,esi ; now evaluate color... |
cmp eax,255*24 |
jbe ok2 |
; cmp eax,255*24 |
; jbe ok2 |
; imul eax,12 |
ok2: |
; ok2: |
mov edi,24 ; 50 = max shaded distance |
idiv edi |
376,21 → 353,21 |
nowrap: |
ret |
precalcbar: |
pusha |
mov eax,1 |
mov ebx,ecx |
add ebx,18 |
mov ecx,44 |
mov edx,0x00000060 |
bar: |
add ecx,2 |
add edx,0x00020100 |
;precalcbar: |
; pusha |
; mov eax,1 |
; mov ebx,ecx |
; add ebx,18 |
; mov ecx,44 |
; mov edx,0x00000060 |
; bar: |
; add ecx,2 |
; add edx,0x00020100 |
; int 0x40 |
cmp ecx,298 |
jb bar |
popa |
ret |
; cmp ecx,298 |
; jb bar |
; popa |
; ret |
; ********************************************* |
; ******* WINDOW DEFINITIONS AND DRAW ********* |
517,12 → 494,7 |
mov ecx,(y_add2+40)*65536+14 ; button start y & size |
newcb: |
push edx |
sub edx,14 |
shl edx,2 |
add edx,colors |
mov esi,[edx] |
pop edx |
mov esi,[(edx-14)*4+colors] |
mov eax,8 |
int 0x40 |
/programs/system/vrr/trunk/vrr.asm |
---|
19,7 → 19,6 |
dd 0x4ff0 ; esp |
dd 0x0 , 0x0 ; I_Param , I_Icon |
include 'lang.inc' |
include 'macros.inc' |
START: ; start of execution |
204,7 → 203,7 |
mov eax,0 ; function 0 : define and draw window |
mov ebx,100*65536+400 ; [x start] *65536 + [x size] |
mov ecx,100*65536+200 ; [y start] *65536 + [y size] |
mov edx,0x030020C0;0x00000040 ; color of work area RRGGBB,8->color glide |
mov edx,0x020020C0;0x00000040 ; color of work area RRGGBB,8->color glide |
mov esi,0x805080d0 ; color of grab bar RRGGBB,8->color glide |
mov edi,0x00ffffff ; color of frames RRGGBB |
int 0x40 |
212,6 → 211,13 |
; WINDOW LABEL |
call print_my_title |
; CLOSE BUTTON |
mov eax,8 ; function 8 : define and draw button |
mov ebx,(400-19)*65536+12 ; [x start] *65536 + [x size] |
mov ecx,5*65536+12 ; [y start] *65536 + [y size] |
mov edx,1 ; button id |
mov esi,0x5599cc ; button color RRGGBB |
int 0x40 |
; BUTTONS |
xor eax,eax |
1016,7 → 1022,7 |
warning_loop: |
mov eax,5 |
mov ebx,10 |
mov ebx,13 |
int 0x40 |
mov eax,11 |
int 40h |