0,0 → 1,854 |
;------------------------------------------------------------------------------- |
;=========== Constans ========================================================== |
;------------------------------------------------------------------------------- |
;------------------------------------------------------------------------------- |
;------------------------------------------------------------------------------- |
MEV_LDOWN = 1 |
MEV_LUP = 2 |
MEV_RDOWN = 3 |
MEV_RUP = 4 |
MEV_WHEEL = 5 |
MEV_MOVE = 6 |
|
;//Mouse buttons state |
MBS_LEFT = 1 |
MBS_RIGHT = 2 |
MBS_CENTER = 4 |
MBS_4 = 8 |
MBS_5 = 16 |
|
;// KEY MODIFIERS |
|
KM_SHIFT = 0x00010000 |
KM_CTRL = 0x00020000 |
KM_ALT = 0x00040000 |
|
KM_CTRLSHIFT = 0x00030000 |
KM_ALTSHIFT = 0x00050000 |
KM_CTRLALT = 0x00060000 |
|
KM_CTRLALTSHIFT = 0x00070000 |
|
;// KEY CODES |
|
KEY_ESCAPE = 0x00000001 |
KEY_SNAPSHOT = 0x00000137 |
KEY_PAUSE = 0x0000021D |
|
KEY_F1 = 0x0000003B |
KEY_F2 = 0x0000003C |
KEY_F3 = 0x0000003D |
KEY_F4 = 0x0000003E |
KEY_F5 = 0x0000003F |
KEY_F6 = 0x00000040 |
KEY_F7 = 0x00000041 |
KEY_F8 = 0x00000042 |
KEY_F9 = 0x00000043 |
KEY_F10 = 0x00000044 |
KEY_F11 = 0x00000057 |
KEY_F12 = 0x00000058 |
|
KEY_TILDE = 0x00000029 |
KEY_MINUS = 0x0000000C |
KEY_EQUAL = 0x0000000D |
KEY_BACKSPACE = 0x0000000E |
KEY_TAB = 0x0000000F |
KEY_SQBRACE1 = 0x0000001A |
KEY_SQBRACE2 = 0x0000001B |
KEY_SLASH1 = 0x00000035 |
KEY_SLASH2 = 0x0000002B |
KEY_SEMICOLON = 0x00000027 |
KEY_QUOTE = 0x00000028 |
KEY_COMMA = 0x00000033 |
KEY_DOT = 0x00000034 |
KEY_SPACE = 0x00000039 |
|
KEY_1 = 0x00000002 |
KEY_2 = 0x00000003 |
KEY_3 = 0x00000004 |
KEY_4 = 0x00000005 |
KEY_5 = 0x00000006 |
KEY_6 = 0x00000007 |
KEY_7 = 0x00000008 |
KEY_8 = 0x00000009 |
KEY_9 = 0x0000000A |
KEY_0 = 0x0000000B |
|
KEY_A = 0x0000001E |
KEY_B = 0x00000030 |
KEY_C = 0x0000002E |
KEY_D = 0x00000020 |
KEY_E = 0x00000012 |
KEY_F = 0x00000021 |
KEY_G = 0x00000022 |
KEY_H = 0x00000023 |
KEY_I = 0x00000017 |
KEY_J = 0x00000024 |
KEY_K = 0x00000025 |
KEY_L = 0x00000026 |
KEY_M = 0x00000032 |
KEY_N = 0x00000031 |
KEY_O = 0x00000018 |
KEY_P = 0x00000019 |
KEY_Q = 0x00000010 |
KEY_R = 0x00000013 |
KEY_S = 0x0000001F |
KEY_T = 0x00000014 |
KEY_U = 0x00000016 |
KEY_V = 0x0000002F |
KEY_W = 0x00000011 |
KEY_X = 0x0000002D |
KEY_Y = 0x00000015 |
KEY_Z = 0x0000002C |
|
KEY_CAPSLK = 0x0000003A |
KEY_SCRLK = 0x00000046 |
KEY_NUMLK = 0x00000069 |
|
KEY_RETURN = 0x0000001C |
KEY_NUMRETURN = 0x0000011C |
|
KEY_LCONTROL = 0x0000001D |
KEY_RCONTROL = 0x0000011D |
KEY_LSHIFT = 0x0000002A |
KEY_RSHIFT = 0x00000036 |
KEY_LALT = 0x00000038 |
KEY_RALT = 0x00000138 |
|
KEY_LWIN = 0x0000015B |
KEY_RWIN = 0x0000015C |
KEY_APPS = 0x0000015D |
|
KEY_INSERT = 0x00000152 |
KEY_DELETE = 0x00000153 |
KEY_HOME = 0x00000147 |
KEY_END = 0x0000014F |
KEY_PAGEUP = 0x00000149 |
KEY_PAGEDOWN = 0x00000151 |
KEY_UP = 0x00000148 |
KEY_LEFT = 0x0000014B |
KEY_RIGHT = 0x0000014D |
KEY_DOWN = 0x00000150 |
|
KEY_DIVIDE = 0x00000135 |
KEY_MULTIPLY = 0x00000037 |
KEY_SUBTRACT = 0x0000004A |
KEY_ADD = 0x0000004E |
KEY_SEPARATOR = 0x00000053 |
|
KEY_NUM1 = 0x0000004F |
KEY_NUM2 = 0x00000050 |
KEY_NUM3 = 0x00000051 |
KEY_NUM4 = 0x0000004B |
KEY_NUM5 = 0x0000004C |
KEY_NUM6 = 0x0000004D |
KEY_NUM7 = 0x00000047 |
KEY_NUM8 = 0x00000048 |
KEY_NUM9 = 0x00000049 |
KEY_NUM0 = 0x00000052 |
|
;// EXTENDED KEY CODES (MULTIMEDIA KEYBOARDS) |
|
KEY_MYDOCUMENTS = 0x0000014C |
KEY_MYPICTURES = 0x00000164 |
KEY_MYMUSIC = 0x0000013C |
KEY_MUTE = 0x00000120 |
KEY_PLAYPAUSE = 0x00000122 |
KEY_STOP = 0x00000124 |
KEY_VOLUMEUP = 0x00000130 |
KEY_VOLUMEDOWN = 0x0000013E |
KEY_PREVSONG = 0x00000110 |
KEY_NEXTSONG = 0x00000119 |
KEY_MEDIA = 0x0000016D |
KEY_MAIL = 0x0000016C |
KEY_WEBHOME = 0x00000132 |
KEY_MESSENGER = 0x00000105 |
|
KEY_CALCULATOR = 0x00000121 |
KEY_LOGOFF = 0x00000116 |
KEY_SLEEP = 0x0000015F |
|
;Keyboard modes (func 66,2) |
|
KBM_ASCII = 0 |
KBM_SCAN = 1 |
|
;------------------------------------------------------------------------------- |
;Colors------------------------------------------------------------------------- |
|
clWhite = 0FFFFFFh |
clBlack = 0 |
clRed = 0FF0000h |
clBlue = 0FF00h |
clGreen = 0FFh |
clGrey = 0888888h |
|
|
;------------------------------------------------------------------------------- |
;------------------------------------------------------------------------------- |
;------------------------------------------------------------------------------- |
;========== APIs macros ======================================================== |
;------------------------------------------------------------------------------- |
;------------------------------------------------------------------------------- |
;------------------------------------------------------------------------------- |
;------------------------------------------------------------------------------- |
|
macro DrawWindow x,y,w,h,nameW ;void |
{ |
if ~(x eq bx) |
mov bx,x |
end if |
rol ebx,16 |
mov bx,w |
if ~(y eq cx) |
mov cx,y |
end if |
rol ecx,16 |
mov cx,h |
mov edx,0x33FFFFFF |
mov esi,0x80333333 |
mov edi,nameW |
xor eax,eax |
int 40h |
} |
|
macro DrawPanel x,y,w,h,color ;void ;à¨áã¥â ¥¯¥à¥¬¥é ¥¬®¥ ¯à®§à 箥(¨«¨ 梥â color) ®ª® |
{ |
xor eax,eax |
if ~(x eq bx) |
mov bx,x |
end if |
rol ebx,16 |
mov bx,w |
if ~(y eq cx) |
mov cx,y |
end if |
rol ecx,16 |
mov cx,h |
mov edx,21000000h |
; add edx,color |
mov esi,01000000h |
; mov edi,color |
int 40h |
|
if ~(color eq) |
mov eax,13 |
xor bx,bx |
rol ebx,16 |
mov bx,w |
xor cx,cx |
rol ecx,16 |
mov cx,h |
mov edx,color |
int 40h |
end if |
} |
|
|
;WinClass |
; .Caption (offset Name) |
; .Color (color dword) |
; .Transparent (0/1) |
; .WorkTransp (0/1) |
; .Fix (0/1) |
; .Skin (0/1) |
; .CaptionColor (color dword) |
; .FrameColor (color dword) |
|
macro DrawWindowEx x,y,w,h,WinClass ;void ¬®¦¥â à¨á®¢ âì «î¡®¥ ®ª® |
{ |
if ~(x eq bx) |
mov bx,x |
end if |
rol ebx,16 |
mov bx,w |
if ~(y eq cx) |
mov cx,y |
end if |
rol ecx,16 |
mov cx,h |
|
if WinClass#.WorkTransp==1 |
WinClass#.WorkTransp=40000000h |
end if |
|
mov edx,3000000h+WinClass#.WorkTransp+WinClass#.Color |
mov esi,0x80333333 |
mov edi,WinClass#.Name |
xor eax,eax |
int 40h |
} |
|
macro DrawPix x,y,color ;void |
{ |
mov ebx,x |
mov ecx,y |
mov edx,color |
mov eax,1 |
int 40h |
} |
|
macro GetKeyPressed ;eax=1-¯ãáâ® «¨¡® al=0, ah=ª®¤ ¦ ⮩ ª« ¢¨è¨ «¨¡® |
{ ;al=2, ah=᪠ª®¤ ¦ ⮩
ª« ¢¨è¨,HI eax=á®áâ ã¯à ª« ¢¨è |
mov eax,2 |
int 40h |
} |
|
|
macro OutText x,y,Text,colorFon ;void |
{ |
if colorFon eq |
mov bx,x |
rol ebx,16 |
mov bx,y |
mov ecx,80000000h |
mov edx,Text |
mov eax,4 |
int 40h |
else |
mov bx,x |
rol ebx,16 |
mov bx,y |
mov ecx,0C0000000h |
mov edx,Text |
mov edi,colorFon |
mov eax,4 |
int 40h |
end if |
} |
|
macro Sleep time ;void |
{ |
mov ebx,time |
mov eax,5 |
int 40h |
} |
|
|
macro DrawImage x,y,w,h,Image ;void |
{ |
mov ebx,Image |
mov cx,w |
rol ecx,16 |
mov cx,h |
mov dx,x |
rol edx,16 |
mov dx,y |
mov eax,7 |
int 40h |
} |
|
macro DrawButton x,y,w,h,ID,color,Caption ;void |
{ |
if ID<1000000h |
mov bx,x |
rol ebx,16 |
mov bx,w |
mov cx,y |
rol ecx,16 |
mov cx,h |
mov edx,ID |
mov esi,color |
mov eax,8 |
int 40h |
|
sub edx,80000000h |
else |
mov eax,-1 |
end if |
|
if ~(Caption eq) |
mov bx,x |
add bx,5 |
rol ebx,16 |
mov bx,y |
add bx,5 |
mov ecx,80000000h |
mov edx,Caption |
mov eax,4 |
int 40h |
end if |
} |
|
macro DeleteButton ID ;void |
{ |
if ID<1000000h |
mov eax,8 |
mov edx,80000000h |
add edx,ID |
int 40h |
;else |
|
end if |
|
} |
|
macro GetThreadInfo Buffer,N ;1KB eax=max ®¬¥à ᫮⠯®â®ª |
{ |
mov ebx,Buffer |
if N eq |
mov ecx,-1 |
else |
mov ecx,N |
end if |
mov eax,9 |
int 40h |
} |
; +34 = X window |
; +38 = Y window |
; +42 = W window |
; +46 = H window |
|
|
macro WaitMessage ;eax=event(1=redraw,2=key,3=button,5=redrawBackgroud, |
{ ;6=mouse,7=IPC,8=ethernet,9=debug,16..31=IRQ0..IRQ15) |
mov eax,10 |
int 40h |
} |
|
macro ReadMessage ;eax=0-¯ãáâ® ¨ ç¥ á¬ WaitMessage |
{ |
mov eax,11 |
int 40h |
} |
|
macro RedrawWinBeg ;void |
{ |
mov eax,12 |
mov ebx,1 |
int 40h |
} |
|
macro RedrawWinEnd ;void |
{ |
mov eax,12 |
mov ebx,2 |
int 40h |
} |
|
macro DrawRect x,y,w,h,color ;void |
{ |
mov bx,x |
rol ebx,16 |
mov bx,w |
mov cx,y |
rol ecx,16 |
mov cx,h |
mov edx,color |
mov eax,13 |
int 40h |
} |
|
macro DrawClearRect x,y,w,h,color ;(à ¬ª¨. ¨áã¥â ¯à®áâ® à ¬ªã. ¥§ § ªà 訢 ¨ï ¢ãâà¨) |
{ |
mov eax,38 |
mov bx,x |
rol ebx,16 |
mov bx,x |
add bx,w |
mov cx,y |
rol ecx,16 |
mov cx,y |
mov edx,color |
int 40h |
|
mov eax,38 |
mov bx,x |
add bx,w |
rol ebx,16 |
mov bx,x |
add bx,w |
mov cx,y |
rol ecx,16 |
mov cx,y |
add cx,h |
mov edx,color |
int 40h |
|
mov eax,38 |
mov bx,x |
rol ebx,16 |
mov bx,x |
add bx,w |
mov cx,y |
add cx,h |
rol ecx,16 |
mov cx,y |
add cx,h |
mov edx,color |
int 40h |
|
mov eax,38 |
mov bx,x |
rol ebx,16 |
mov bx,x |
mov cx,y |
rol ecx,16 |
mov cx,y |
add cx,h |
mov edx,color |
int 40h |
} |
|
|
|
macro GetScreenSize ;eax=[xsize]*0x10000+[ysize]. 票ï 㦥 㢥«¨ç¥ë 1,â.¥. |
{ ;xsize ¨ ysize ¬®£ãâ ¡ëâì à ¢ë 1024 ¨ 768 ( ¯à¨¬¥à) |
mov eax,14 |
int 40h |
add eax,00010001h |
} |
|
macro RedrawDesktop |
{ |
mov eax,15 |
mov ebx,3 |
int 40h |
} |
|
macro GetButtonPressed ;eax=1(¯ãáâ®) ¨ ç¥ al=0(LButton)¨«¨ ª®¤ ¤à㣮© ª®¯ª¨ ¬ëè¨, |
{ ; HI eax ¨ ah ᮤ¥à¦ â ®¬¥à ª®¯ª¨ |
mov eax,17 |
int 40h |
} |
|
macro Minimize ;void |
{ |
mov eax,18 |
mov ebx,10 |
int 40h |
} |
|
macro SetMousePos x,y |
{ |
mov ecx,4 |
mov dx,x |
rol edx,16 |
mov dx,y |
mov eax,18 |
mov ebx,19 |
int 40h |
} |
|
macro WaitMessageT time |
{ |
mov ebx,time |
mov eax,23 |
int 40h |
} |
|
macro SetDefaultFolder folder |
{ |
mov ecx,folder |
mov eax,30 |
mov ebx,1 |
int 40h |
} |
|
macro GetDefaultFolder folderBuf,sizeBuf |
{ |
mov ecx,folderBuf |
moc edx,sizeBuf |
mov eax,30 |
mov ebx,2 |
int 40h |
} |
|
macro GetMousePos |
{ |
mov eax,37 |
xor ebx,ebx |
int 40h |
} |
|
macro GetMouseWinPos |
{ |
mov eax,37 |
mov ebx,1 |
int 40h |
} |
|
|
macro GetMouseKey |
{ |
mov eax,37 |
mov ebx,2 |
int 40h |
} |
|
macro LoadCursorF path |
{ |
mov ecx,path |
mov eax,37 |
mov ebx,4 |
mov dx,0 |
int 40h |
} |
|
macro LoadCursorM cur |
{ |
mov ecx,cur |
mov eax,37 |
mov ebx,4 |
mov dx,1 |
int 40h |
} |
|
macro LoadCursorStruct cur,x,y |
{ |
; mov edx,x*1000000h+y*10000h+0002 |
mov edx,x |
shl edx,24 |
xor ecx,ecx |
mov cx,y |
shl ecx,16 |
add edx,ecx |
add edx,2 |
mov ecx,path |
mov eax,37 |
mov ebx,4 |
int 40h |
} |
|
macro SetCursor Handle |
{ |
mov ecx,Handle |
mov eax,37 |
mov ebx,5 |
int 40h |
} |
|
|
macro DrawLine x1,y1,x2,y2,color |
{ |
mov bx,x1 |
rol ebx,16 |
mov bx,x2 |
mov cx,y1 |
rol ecx,16 |
mov cx,y2 |
mov edx,color |
mov eax,38 |
int 40h |
} |
|
macro SetMaskMessage Mask |
{ |
mov ebx,Mask |
mov eax,40 |
int 40h |
} |
|
macro DrawInt Int,Leng,x,y,color |
{ |
xor ecx,ecx |
mov cx,Leng |
shl ecx,16 |
add ebx,ecx |
|
mov ecx,Int |
mov dx,x |
rol edx,16 |
mov dx,y |
mov esi,color |
mov eax,47 |
mov ebx,080100000h ;+Leng*10000h+0000 |
int 40h |
} |
|
macro GetSkinH |
{ |
mov eax,48 |
mov ebx,4 |
int 40h |
} |
|
macro CreateThread start,stack |
{ |
mov ecx,start |
mov edx,stack |
mov eax,51 |
mov ebx,1 |
int 40h |
} |
|
|
|
macro SetKeyboardMode mode |
{ |
mov ecx,mode |
mov eax,66 |
mov ebx,2 |
int 40h |
} |
|
macro ResizeWindow x,y,w,h |
{ |
mov ebx,x |
mov ecx,y |
mov edx,w |
mov esi,h |
mov eax,67 |
int 40h |
} |
|
macro InitMemory ;eax=0(¥ãᯥå) ¨«¨ à §¬¥à ªãç¨ |
{ |
mov eax,68 |
mov ebx,11 |
int 40h |
} |
|
macro GetMemory size ;eax=Pointer |
{ |
mov ecx,size |
mov ebx,12 |
mov eax,68 |
int 40h |
} |
|
macro FreeMemory pointer ;eax = 0/1 = false/true |
{ |
mov ecx,pointer |
mov ebx,13 |
mov eax,68 |
int 40h |
} |
|
macro ReallocMemory pointer,newsize |
{ |
mov edx,pointer |
mov ecx,newsize |
mov ebx,20 |
mov eax,68h |
int 40h |
} |
|
macro ReadFile Struc,path,n,Buffer,posL;,posH |
{ |
mov dword [Struc],0 |
mov dword [Struc+4],posL |
mov dword [Struc+8],0;posH |
mov dword [Struc+12],n |
mov dword [Struc+16],Buffer |
mov byte [Struc+20],0 |
mov dword [Struc+21],path |
mov ebx,Struc |
mov eax,70 |
int 40h |
} |
|
macro CreateFile Struc,path,n,Buffer |
{ |
mov dword [Struc],2 |
mov dword [Struc+4],0 |
mov dword [Struc+8],0 |
mov dword [Struc+12],n |
mov dword [Struc+16],Buffer |
mov byte [Struc+20],0 |
mov dword [Struc+21],path |
mov ebx,Struc |
mov eax,70 |
int 40h |
} |
|
macro WriteFile Struc,path,n,Buffer,posL;,posH |
{ |
mov dword [Struc],3 |
mov dword [Struc+4],posL |
mov dword [Struc+8],0;posH |
mov dword [Struc+12],n |
mov dword [Struc+16],Buffer |
mov byte [Struc+20],0 |
mov dword [Struc+21],path |
mov ebx,Struc |
mov eax,70 |
int 40h |
|
} |
|
macro SetFileSize Struc,path,sizeL;,sizeH |
{ |
mov dword [Struc],4 |
mov dword [Struc+4],sizeL |
mov dword [Struc+8],0;sizeH |
mov dword [Struc+12],0 |
mov dword [Struc+16],0 |
mov byte [Struc+20],0 |
mov dword [Struc+21],path |
mov ebx,Struc |
mov eax,70 |
int 40h |
} |
|
macro GetFileInfo Struc,path,BufferInfo ;(40¡ ©â) |
{ |
mov dword [Struc],5 |
mov dword [Struc+4],0 |
mov dword [Struc+8],0 |
mov dword [Struc+12],0 |
mov dword [Struc+16],BufferInfo |
mov byte [Struc+20],0 |
mov dword [Struc+21],path |
mov ebx,Struc |
mov eax,70 |
int 40h |
} |
|
macro RunProgram Struc,path,params |
{ |
mov eax,70 |
mov ebx,Struc |
mov dword [Struc],7 |
mov dword [Struc+4],0 |
mov dword [Struc+8],params |
mov dword [Struc+12],0 |
mov dword [Struc+16],0 |
mov byte [Struc+20],0 |
mov dword [Struc+21],path |
int 40h |
} |
|
macro Remove Struc,path |
{ |
mov eax,70 |
mov ebx,Struc |
mov dword [Struc],8 |
mov dword [Struc+4],0 |
mov dword [Struc+8],0 |
mov dword [Struc+12],0 |
mov dword [Struc+16],0 |
mov byte [Struc+20],0 |
mov dword [Struc+21],path |
int 40h |
} |
|
macro CreateFolder Struc,path |
{ |
mov eax,70 |
mov ebx,Struc |
mov dword [Struc],9 |
mov dword [Struc+4],0 |
mov dword [Struc+8],0 |
mov dword [Struc+12],0 |
mov dword [Struc+16],0 |
mov byte [Struc+20],0 |
mov dword [Struc+21],path |
int 40h |
} |
|
macro SetWindowCaption caption |
{ |
mov eax,71 |
mov ebx,1 |
mov ecx,name |
int 40h |
} |
|
macro ExitThread |
{ |
mov eax,-1 |
int 40h |
} |
|
ExitProcess fix ExitThread |