0,0 → 1,499 |
lang equ ru ; ru en fr ge fi |
|
; |
; Assembler |
; SMALL |
; CODE |
; Libary |
; |
; Ver 0.09 By Pavlushin Evgeni (RUSSIA) |
; www.waptap@mail.ru |
|
;InfoList |
;0.01 scank,putpix,puttxt |
;0.02 label,random,colors |
;0.03 window,startwd,endwd,attributes |
;0.04 close,delay,scevent ~30.04.2004 |
;0.05 small random, ~04.05.2004 |
;0.06 wtevent ~09.05.2004 |
;0.07 timeevent ~23.05.2004 |
;0.08 txtput ~14.06.2004 |
;0.09 opendialog,savedialog ~20.06.2004 |
|
macro opendialog redproc,openoff,erroff,path,testtime |
{ |
local still, dlg_file, clip_file, redwait |
local button, key, red, zzz, still, zzz2, incf, file_is_open, zzz3 |
|
mov ecx,200 |
zzz3: |
mov byte [path+ecx-1],0 |
loop zzz3 |
|
dec byte [clip_file+7] |
incf: |
inc byte [clip_file+7] |
mov eax,6 |
mov ebx,clip_file |
mov ecx,0 |
mov edx,-1 |
mov esi,path |
int 0x40 |
cmp byte [clip_file+7],'Z' |
je erroff |
cmp eax,0xffffffff |
jne incf |
|
mov ecx,200 |
zzz2: |
mov byte [path+ecx],0 |
loop zzz2 |
|
mov ebx,clip_file |
mov ecx,path |
mov edx,100 |
mov esi,0 |
mov eax,33 |
int 0x40 |
|
mov ebx,dlg_file |
mov ecx,clip_file |
mov eax,19 |
int 0x40 |
|
still: |
scevent red,key,button |
cmp byte [path],0 |
jne file_is_open |
cmp dword [redwait],testtime ;20 |
jnae zzz |
mov eax,6 |
mov ebx,clip_file |
mov ecx,0 |
mov edx,-1 |
mov esi,path |
int 0x40 |
cmp eax,0xffffffff |
je erroff ;errexit |
mov dword [redwait],0 |
zzz: |
delay 5 |
inc dword [redwait] |
jmp still |
|
file_is_open: |
mov eax,32 |
mov ebx,clip_file |
int 0x40 |
jmp openoff |
|
key: ; key |
int 0x40 ; read (eax=2) |
jmp still |
button: ; button |
mov eax,17 ; get id |
int 0x40 |
cmp ah,1 ; button id=1 ? |
jne still |
mov eax,-1 ; close this program |
int 0x40 |
|
red: |
call redproc |
jmp still |
|
dlg_file db 'SYSXTREE ' |
clip_file db 'OPENCLPACLP' |
db 'O' ;Dialog type O-open S-save |
db 0 ;Marker |
redwait dd 0 |
} |
|
macro savedialog redproc,openoff,erroff,path,testtime |
{ |
local still, dlg_file, clip_file, redwait, zzz3 |
local button, key, red, zzz, still, zzz2, incf, file_is_open |
|
mov ecx,200 |
zzz3: |
mov byte [path+ecx-1],0 |
loop zzz3 |
|
dec byte [clip_file+7] |
incf: |
inc byte [clip_file+7] |
mov eax,6 |
mov ebx,clip_file |
mov ecx,0 |
mov edx,-1 |
mov esi,path |
int 0x40 |
cmp byte [clip_file+7],'Z' |
je erroff |
cmp eax,0xffffffff |
jne incf |
|
mov ecx,200 |
zzz2: |
mov byte [path+ecx],0 |
loop zzz2 |
|
mov ebx,clip_file |
mov ecx,path |
mov edx,100 |
mov esi,0 |
mov eax,33 |
int 0x40 |
|
mov ebx,dlg_file |
mov ecx,clip_file |
mov eax,19 |
int 0x40 |
|
still: |
scevent red,key,button |
cmp byte [path],0 |
jne file_is_open |
cmp dword [redwait],testtime ;20 |
jnae zzz |
mov eax,6 |
mov ebx,clip_file |
mov ecx,0 |
mov edx,-1 |
mov esi,path |
int 0x40 |
cmp eax,0xffffffff |
je erroff ;errexit |
mov dword [redwait],0 |
zzz: |
delay 5 |
inc dword [redwait] |
jmp still |
|
file_is_open: |
mov eax,32 |
mov ebx,clip_file |
int 0x40 |
jmp openoff |
|
key: ; key |
int 0x40 ; read (eax=2) |
jmp still |
button: ; button |
mov eax,17 ; get id |
int 0x40 |
cmp ah,1 ; button id=1 ? |
jne still |
mov eax,-1 ; close this program |
int 0x40 |
|
red: |
call redproc |
jmp still |
|
dlg_file db 'SYSXTREE ' |
clip_file db 'SAVECLPACLP' |
db 'S' ;Dialog type O-open S-save |
db 0 ;Marker |
redwait dd 0 |
} |
|
|
; RANDOM - generate random count (small) |
; (SYNTAX) RANDOM MaxCount,OutArgument |
; (SAMPLE) RANDOM 10000,eax |
; ( NOTE ) Maxint<65536 ; use random 65536,eax for more combinations |
|
randomuse = 0 |
|
macro random arg1,arg2 |
{ |
local rxproc |
randomuse = randomuse + 1 |
|
jmp rxproc |
|
if defined randomuse & randomuse = 1 |
randomproc: |
jmp rnj |
rsx1 dw 0x4321 |
rsx2 dw 0x1234 |
rnj: |
; mov eax,arg1 |
push bx |
push cx |
push dx |
push si |
push di |
mov cx,ax |
mov ax,word ptr rsx1 |
mov bx,word ptr rsx2 |
mov si,ax |
mov di,bx |
mov dl,ah |
mov ah,al |
mov al,bh |
mov bh,bl |
xor bl,bl |
rcr dl,1 |
rcr ax,1 |
rcr bx,1 |
add bx,di |
adc ax,si |
add bx,0x62e9 |
adc ax,0x3619 |
mov word ptr rsx1,bx |
mov word ptr rsx2,ax |
xor dx,dx |
cmp ax,0 |
je nodiv |
cmp cx,0 |
je nodiv |
div cx |
nodiv: |
mov ax,dx |
pop di |
pop si |
pop dx |
pop cx |
pop bx |
; mov arg2,0 |
; mov arg2,eax |
ret |
end if |
|
rxproc: |
mov eax,arg1 |
call randomproc |
mov arg2,0 |
mov arg2,eax |
} |
|
macro scank |
{ |
mov eax,10 |
int 0x40 |
} |
|
macro putpix x,y,color |
{ |
mov ebx,x |
mov ecx,y |
mov edx,color |
mov eax,1 |
int 0x40 |
} |
|
macro puttxt x,y,offs,size,color |
{ |
mov ebx,x |
shl ebx,16 |
add ebx,y |
mov ecx,color |
mov edx,offs |
mov esi,size |
mov eax,4 |
int 0x40 |
} |
|
;_ equ '____' |
|
;macro libtest x,y,color |
;{ |
;if x = as dword |
; mov ebx,x |
;end if |
; mov ecx,y |
; mov edx,color |
; mov eax,1 |
; int 0x40 |
;} |
|
|
macro outcount data, x, y, color, numtype |
{ |
mov ecx,data |
mov ebx,numtype |
mov bl,0 |
mov edx,x*65536+y |
mov esi,color |
mov eax,47 |
int 0x40 |
} |
|
; SCEVENT - Scan event |
|
macro scevent red,key,but |
{ |
mov eax,11 |
int 0x40 |
dec eax |
jz red |
dec eax |
jz key |
dec eax |
jz but |
} |
|
; WTEVENT - Wait event |
|
macro wtevent red,key,but |
{ |
mov eax,10 |
int 0x40 |
dec eax |
jz red |
dec eax |
jz key |
dec eax |
jz but |
} |
|
; TIMEEVENT - Wite for event with timeout |
|
macro timeevent xfps,noevent,red,key,but |
{ |
mov eax,23 |
mov ebx,xfps |
int 0x40 |
cmp eax,0 |
je noevent |
dec eax |
jz red |
dec eax |
jz key |
dec eax |
jz but |
} |
|
|
; CLOSE - Close program |
|
macro close |
{ |
mov eax,-1 |
int 0x40 |
} |
|
; DELAY - Create delay 1/100 sec |
; (SYNTAX) Delay time |
; (SAMPLE) Delay 100 ;delay 2 sec 1/100*200=2 sec |
|
macro delay arg1 |
{ |
mov eax,5 |
mov ebx,arg1 |
int 0x40 |
} |
|
; WINDOW - Draw window |
; (SYNTAX) WINDOW Xstart,Ystart,'Text',Color |
; (SAMPLE) WINDOW 10,10,640+8,480+24,window_Skinned |
|
macro window arg1,arg2,arg3,arg4,arg5 |
{ |
mov ebx,arg1*65536+arg3 |
mov ecx,arg2*65536+arg4 |
mov edx,arg5 |
mov eax,0 |
int 0x40 |
} |
|
macro colorwindow arg1,arg2,arg3,arg4,arg5,arg6,arg7 |
{ |
mov ebx,arg1*65536+arg3 |
mov ecx,arg2*65536+arg4 |
mov edx,arg5 |
mov esi,arg6 |
mov edi,arg7 |
mov eax,0 |
int 0x40 |
} |
|
|
; STARTWD - Start of window draw |
|
macro startwd |
{ |
mov eax,12 |
mov ebx,1 |
int 0x40 |
} |
|
; ENDWD - End window draw |
|
macro endwd |
{ |
mov eax,12 |
mov ebx,2 |
int 0x40 |
} |
|
; LABEL - Put text to frame |
; (SYNTAX) LABEL Xstart,Ystart,'Text',Color |
; (SAMPLE) LABEL 10,12,'Hello World!',cl_Green+font_Big |
|
macro label arg1,arg2,arg3,arg4 |
{ |
local asd,lab |
jmp asd |
lab db arg3 ;arg label |
asd: |
mov ebx,arg1 ;arg1=y arg2=x |
shl ebx,16 |
add ebx,arg2 |
mov ecx,arg4 ;arg4 color |
mov edx,lab |
mov esi,asd-lab ;calc size |
mov eax,4 |
int 0x40 |
} |
|
;Key's |
key_Up equ 178 |
key_Down equ 177 |
key_Right equ 179 |
key_Left equ 176 |
key_Esc equ 27 |
key_Space equ 32 |
key_Enter equ 13 |
key_Bspace equ 8 |
key_F1 equ 50 |
key_F2 equ 51 |
key_F3 equ 52 |
key_F4 equ 53 |
key_F5 equ 54 |
key_F6 equ 55 |
key_F7 equ 56 |
key_F8 equ 57 |
key_F9 equ 48 |
key_F10 equ 49 |
key_F11 equ 68 |
key_F12 equ 255 |
key_Home equ 180 |
key_End equ 181 |
key_PgUp equ 184 |
key_PgDown equ 183 |
|
;Attributes |
|
;Window Attributes |
window_Skinned equ 0x03000000 |
window_Type2 equ 0x02000000 |
window_Type1 equ 0x00000000 |
window_Reserve equ 0x01000000 |
|
;Font Attributes |
font_Big equ 0x10000000 |
|
;Colors |
cl_White equ 0x00ffffff |
cl_Black equ 0x00000000 |
cl_Grey equ 0x00888888 |
cl_Red equ 0x00ff0000 |
cl_Lime equ 0x0000ff00 |
cl_Green equ 0x0000af00 |
cl_Blue equ 0x000000ff |
cl_Purple equ 0x008080ff |
cl_Violet equ 0x008040ff |
cl_Cyan equ 0x0040e0ff |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |