/programs/demos/3detx60b/trunk/3DETX60B.ASM |
---|
61,6 → 61,7 |
dd 0x0 , 0x0 ; I_Param , I_Icon |
include 'lang.inc' |
include '..\..\..\macros.inc' |
include 'ascgl.inc' |
include 'ascl.inc' |
271,13 → 272,13 |
mov eax,66 |
mov ebx,1 |
mov ecx,1 |
int 0x40 |
mcall |
mov eax,26 |
mov ebx,2 |
mov ecx,1 |
mov edx,keymap+100 |
int 0x40 |
mcall |
;Build triangle matrix |
mov esi,points |
384,7 → 385,7 |
;Main loop |
still: ; ®á®¢®© 横« |
mov eax,11 ; ¯à®¢¥àª á®áâ®ï¨ï ®ª |
int 0x40 |
mcall |
cmp eax,1 ; ®ª® ᤢ¨ã«¨ ¥£® 㦮 ¯¥à¥à¨á®¢ âì |
je red |
490,16 → 491,16 |
mov ecx,0x0000ff00 ; font 1 & color ( 0xF0RRGGBB ) |
mov edx,keymap ; pointer to text beginning |
mov esi,100 ; text length |
int 0x40 |
mcall |
add edx,100 |
add ebx,10 |
mov esi,60 ; text length |
mov ecx,0x00dddddd ; font 1 & color ( 0xF0RRGGBB ) |
int 0x40 |
mcall |
mov edx,usemap |
mov esi,60 ; text length |
mov ecx,0x0000ff00 |
int 0x40 |
mcall |
jmp rx |
;01234567890123456789012345678901234567890123456789 |
usemap db ' E wer u [] asd zxc ' |
721,7 → 722,7 |
key: ; key |
mov eax,2 ; just read it and ignore |
int 0x40 |
mcall |
shr eax,8 |
and eax,0xff |
747,14 → 748,14 |
button: ; button |
mov eax,17 ; get id |
int 0x40 |
mcall |
cmp ah,1 |
jz exit |
jmp cycle |
exit: |
mov eax,-1 |
int 0x40 |
or eax,-1 |
mcall |
; ********************************************* |
; ******* WINDOW DEFINITIONS AND DRAW ******** |
763,7 → 764,7 |
draw_window: |
mov eax,12 ; function 12:tell os about windowdraw |
mov ebx,1 ; 1, start of draw |
int 0x40 |
mcall |
; DRAW WINDOW |
mov eax,0 ; function 0 : define and draw window |
mov ebx,0*65536+SCREEN_X-1 ; [x start] *65536 + [x size] |
771,7 → 772,7 |
mov edx,0x03ffffff ; color of work area RRGGBB,8->color gl |
mov esi,0x005080d0 ; color of grab bar RRGGBB,8->color gl |
mov edi,0x005080d0 ; color of frames RRGGBB |
int 0x40 |
mcall |
; WINDOW LABEL |
mov eax,4 ; function 4 : write text to window |
mov ebx,8*65536+8 ; [x start] *65536 + [y start] |
778,11 → 779,11 |
mov ecx,0x10ddeeff ; font 1 & color ( 0xF0RRGGBB ) |
mov edx,labelt ; pointer to text beginning |
mov esi,labellen-labelt ; text length |
int 0x40 |
mcall |
mov eax,12 |
mov ebx,2 |
int 0x40 |
mcall |
ret |
dispimg: |
790,7 → 791,7 |
mov ebx,I_END ;zbuffer |
mov ecx,SCREEN_X*65536+SCREEN_Y |
xor edx,edx ;0*65536+0 |
int 0x40 |
mcall |
; ret |
mov eax,8 |
798,7 → 799,7 |
mov ecx,10*65536+20 |
mov edx,1 |
mov esi,0x0000aa00 |
int 0x40 |
mcall |
ret |
clrscr: ; clear screen buffer |
/programs/demos/3detx60b/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 A., add at ~07.06.2004 |
;0.11 many macros optimized by Halyavin A., add at ~30.08.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.12 bmptoimg ~07.09.2004 |
;0.13 imgtoimg ~08.09.2004 |
;0.14 imgtoimg modify not brake bmp pict! ~09.09.2004 |
369,11 → 369,11 |
;DrawBox |
macro drawfbox x,y,xs,ys,color |
{ |
words2reg ebx,x,xs ;x*65536+xs |
words2reg ecx,y,ys ;y*65536+ys |
wordstoreg ebx,x,xs ;x*65536+xs |
wordstoreg ecx,y,ys ;y*65536+ys |
mov edx,color |
mov eax,13 |
int 0x40 |
mcall |
} |
; FPS - Set Frame Per Second Display |
385,17 → 385,17 |
jmp spdat |
savetime dd 0 |
fps_cntr dd 0 |
fps dd 0 |
ttt dd 0 |
fps dd 0 |
ttt dd 0 |
spdat: |
get_time: |
mov eax,3 |
int 0x40 |
mcall |
cmp eax,[savetime] |
jne new_time |
inc [fps_cntr] |
cmp dword [ttt],0 |
je out_fps |
je out_fps |
dec dword [ttt] |
jmp no_out_fps |
new_time: |
405,20 → 405,20 |
mov [fps_cntr],0 |
out_fps: |
if ~(delcolor eq ) |
mov ebx,x*65536+36 |
mov ebx,x*65536+30 |
mov ecx,y*65536+7 |
mov edx,delcolor |
mov eax,13 |
int 0x40 |
mcall |
end if |
mov dword [ttt],fps_show_frequency |
mov eax,47 |
mov ebx,6*65536 |
mov ebx,5*65536 |
; mov bl,0 |
mov edx,x*65536+y |
mov esi,color |
mov ecx,[fps] |
int 0x40 |
mcall |
no_out_fps: |
} |
462,9 → 462,9 |
xor ecx,ecx |
ret |
end if |
bounce: |
bounce: |
mov otv,1 |
exit: |
exit: |
} |
macro rgbtobgr image |
495,8 → 495,8 |
shl ecx,16 |
add cx,[arg3+4] |
; wordstoreg ecx,[arg3],[arg3+4] |
words2reg edx, x , y ;arg1*65536+arg2 |
int 0x40 |
wordstoreg edx, x , y ;arg1*65536+arg2 |
mcall |
} |
macro setframe x , y ,arg3 |
504,10 → 504,10 |
mov eax,7 |
mov ebx,arg3 |
add ebx,8 |
words2reg edx, x , y ;arg1*65536+arg2 |
wordstoreg edx, x , y ;arg1*65536+arg2 |
add edx,dword [arg3] |
mov ecx,dword [arg3+4] |
int 0x40 |
mcall |
} |
697,7 → 697,7 |
sub esi,dword [bmptoimg_data_area_bps] |
sub esi,dword [bmptoimg_data_area_bps] |
cmp esi,dword [bmptoimg_data_area_sop] |
jb end_bmp |
jb end_bmp |
add edi,eax |
add ebp,eax |
jmp nextstring |
705,7 → 705,7 |
convertno32: |
mov ebx,bmp_load_area |
add ebx, [bmp_load_area+14] |
add ebx,14 ;start of color table |
add ebx,14 ;start of color table |
push esi |
add esi,dword [bmptoimg_data_area_bps] |
mov dword [bmptoimg_data_area_eos],esi |
714,9 → 714,9 |
push eax |
movzx eax,byte [esi] |
cmp word [bmp_load_area+28],4 |
je convert4bpp |
je convert4bpp |
cmp word [bmp_load_area+28],1 |
je convert1bpp |
je convert1bpp |
call converttable |
convert2: |
750,7 → 750,7 |
mov edx,7 |
nextbit: |
xor eax,eax |
bt ecx,edx |
bt ecx,edx |
jnc noaddelem |
inc eax |
noaddelem: |
758,7 → 758,7 |
call converttable |
pop edx |
dec edx |
js convert2 |
js convert2 |
add edi,3 |
add ebp,3 |
776,12 → 776,12 |
bmptoimg_data_area_count=bmptoimg_data_area_count+1 |
if bmptoimg_data_area_count = 1 |
; DATA AREA |
bmptoimg_soi dd 0 |
bmptoimg_data_area_bps dd 0 |
bmptoimg_soi dd 0 |
bmptoimg_data_area_bps dd 0 |
bmptoimg_data_area_dwps dd 0 |
bmptoimg_data_area_sop dd 0 |
bmptoimg_data_area_eop dd 0 |
bmptoimg_data_area_eos dd 0 |
bmptoimg_data_area_sop dd 0 |
bmptoimg_data_area_eop dd 0 |
bmptoimg_data_area_eos dd 0 |
end if |
end_bmp: |
816,13 → 816,13 |
; end if |
;sss: |
mov esi,gifsrc ;ª § ⥫ì ä ¨« ¢ ¯ ¬ï⨠|
mov edi,imgsrc ;ª § ⥫ì ᯨ᮪ ª à⨮ª |
mov esi,gifsrc ;ª § ⥫ì ä ¨« ¢ ¯ ¬ï⨠|
mov edi,imgsrc ;ª § ⥫ì ᯨ᮪ ª à⨮ª |
if defined gif_hash_offset |
mov eax,gif_hash_offset ; ¡®ç ï ®¡« áâì ¬¨¨¬ã¬ 4096*4 ¡ ©â |
mov eax,gif_hash_offset ; ¡®ç ï ®¡« áâì ¬¨¨¬ã¬ 4096*4 ¡ ©â |
else |
mov eax,hasharea ; ¡®ç ï ®¡« áâì ¬¨¨¬ã¬ 4096*4 ¡ ©â |
mov eax,hasharea ; ¡®ç ï ®¡« áâì ¬¨¨¬ã¬ 4096*4 ¡ ©â |
end if |
call ReadGIF |
845,12 → 845,12 |
mov [img_count],eax |
inc eax |
cmp dword[esi],'GIF8' |
jne er ; signature |
jne er ; signature |
mov ecx,[esi+0xa] |
inc eax |
add esi,0xd |
mov edi,esi |
bt ecx,7 |
bt ecx,7 |
jnc nextblock |
mov [globalColor],esi |
call Gif_skipmap |
891,8 → 891,8 |
push edi |
movzx ecx,word[esi] |
inc esi |
bt ecx,7 |
jc uselocal |
bt ecx,7 |
jc uselocal |
push [globalColor] |
mov edi,esi |
jmp setPal |
909,7 → 909,7 |
mov edi,[table_ptr] |
xor eax,eax |
cld |
lodsb ; eax - block_count |
lodsb ; eax - block_count |
add eax,esi |
mov [block_ofs],eax |
mov [bit_count],8 |
933,7 → 933,7 |
pop [compsize] |
call Gif_get_sym |
cmp eax,[CC] |
je reinit |
je reinit |
call Gif_output |
cycle: |
movzx ebx,ax |
941,9 → 941,9 |
cmp eax,edx |
jae notintable |
cmp eax,[CC] |
je reinit |
je reinit |
cmp eax,[EOI] |
je zend |
je zend |
call Gif_output |
zadd: |
push eax |
997,7 → 997,7 |
; out: edi - pointer to area after colormap |
and ecx,111b |
inc ecx ; color map size |
inc ecx ; color map size |
mov ebx,1 |
shl ebx,cl |
lea ebx,[ebx*2+ebx] |
1015,7 → 1015,7 |
jnz loop1 |
inc esi |
cmp esi,[block_ofs] |
jb noblock |
jb noblock |
push eax |
xor eax,eax |
lodsb |
1057,14 → 1057,14 |
add esi,[Palette] |
if COLOR_ORDER eq MENUETOS |
mov esi,[esi] |
bswap esi |
shr esi,8 |
mov [edi],esi |
add edi,3 |
mov esi,[esi] |
bswap esi |
shr esi,8 |
mov [edi],esi |
add edi,3 |
else |
movsw |
movsb |
movsw |
movsb |
end if |
loop loop2 |
1073,7 → 1073,7 |
globalColor dd 1 |
img_count dd 1 |
cur_info dd 1 ; image table pointer |
cur_info dd 1 ; image table pointer |
img_start dd 1 |
codesize dd 1 |
compsize dd 1 |
1101,15 → 1101,15 |
local Gif_get_sym, shift, nextbl, noblock, loop1, exx |
local Gif_output, next, loop2 |
_null equ 0x1000 ; 0x1000 |
_null fix 0x1000 ; 0x1000 |
mov esi,gifsrc ;ª § ⥫ì ä ¨« ¢ ¯ ¬ï⨠|
mov edi,imgsrc ;ª § ⥫ì ᯨ᮪ ª à⨮ª |
mov esi,gifsrc ;ª § ⥫ì ä ¨« ¢ ¯ ¬ï⨠|
mov edi,imgsrc ;ª § ⥫ì ᯨ᮪ ª à⨮ª |
if defined gif_hash_offset |
mov eax,gif_hash_offset ; ¡®ç ï ®¡« áâì ¬¨¨¬ã¬ 4096*4 ¡ ©â |
mov eax,gif_hash_offset ; ¡®ç ï ®¡« áâì ¬¨¨¬ã¬ 4096*4 ¡ ©â |
else |
mov eax,hasharea ; ¡®ç ï ®¡« áâì ¬¨¨¬ã¬ 4096*4 ¡ ©â |
mov eax,hasharea ; ¡®ç ï ®¡« áâì ¬¨¨¬ã¬ 4096*4 ¡ ©â |
end if |
call ReadGIF |
1130,12 → 1130,12 |
mov [img_count],eax |
inc eax |
cmp dword[esi],'GIF8' |
jne er ; signature |
jne er ; signature |
mov ecx,[esi+0xa] |
inc eax |
add esi,0xd |
mov edi,esi |
bt ecx,7 |
bt ecx,7 |
jnc nextblock |
mov [globalColor],esi |
call Gif_skipmap |
1187,8 → 1187,8 |
push edi |
movzx ecx,word[esi] |
inc esi |
bt ecx,7 |
jc uselocal |
bt ecx,7 |
jc uselocal |
push [globalColor] |
mov edi,esi |
jmp setPal |
1205,7 → 1205,7 |
mov edi,[table_ptr] |
xor eax,eax |
cld |
lodsb ; eax - block_count |
lodsb ; eax - block_count |
add eax,esi |
mov [block_ofs],eax |
mov [bit_count],8 |
1229,7 → 1229,7 |
pop [compsize] |
call Gif_get_sym |
cmp eax,[CC] |
je reinit |
je reinit |
call Gif_output |
cycle: |
movzx ebx,ax |
1237,9 → 1237,9 |
cmp eax,edx |
jae notintable |
cmp eax,[CC] |
je reinit |
je reinit |
cmp eax,[EOI] |
je zend |
je zend |
call Gif_output |
zadd: |
push eax |
1293,7 → 1293,7 |
; out: edi - pointer to area after colormap |
and ecx,111b |
inc ecx ; color map size |
inc ecx ; color map size |
mov ebx,1 |
shl ebx,cl |
lea ebx,[ebx*2+ebx] |
1311,7 → 1311,7 |
jnz loop1 |
inc esi |
cmp esi,[block_ofs] |
jb noblock |
jb noblock |
push eax |
xor eax,eax |
lodsb |
1353,14 → 1353,14 |
add esi,[Palette] |
if COLOR_ORDER eq MENUETOS |
mov esi,[esi] |
bswap esi |
shr esi,8 |
mov [edi],esi |
add edi,3 |
mov esi,[esi] |
bswap esi |
shr esi,8 |
mov [edi],esi |
add edi,3 |
else |
movsw |
movsb |
movsw |
movsb |
end if |
loop loop2 |
1369,7 → 1369,7 |
globalColor dd 1 |
img_count dd 1 |
cur_info dd 1 ; image table pointer |
cur_info dd 1 ; image table pointer |
img_start dd 1 |
codesize dd 1 |
compsize dd 1 |
/programs/demos/3detx60b/trunk/ascl.inc |
---|
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 |
mov reg,hiword |
shl reg,16 |
add reg,loword |
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,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 |
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 |
/programs/demos/3detx60b/trunk/build_en.bat |
---|
1,4 → 1,5 |
@erase lang.inc |
@echo lang fix en >lang.inc |
@fasm 3detx60b.asm 3detx60b |
@erase lang.inc |
@pause |
/programs/demos/3detx60b/trunk/build_ru.bat |
---|
1,4 → 1,5 |
@erase lang.inc |
@echo lang fix ru >lang.inc |
@fasm 3detx60b.asm 3detx60b |
@erase lang.inc |
@pause |