0,0 → 1,558 |
#startaddress 0 |
#code32 TRUE |
|
char os_name[8] = {'M','E','N','U','E','T','0','1'}; |
dword os_version = 0x00000001; |
dword start_addr = #main; |
dword final_addr = #stop+32; |
dword alloc_mem = #stop+0x100; |
dword x86esp_reg = #stop+0x100; |
dword I_Param = 0x0; |
dword I_Icon = 0x0; |
dword skin_width; |
|
//Events |
#define evMouse 6 |
#define evButton 3 |
#define evKey 2 |
#define evReDraw 1 |
#define evNet 8 |
|
//Button options |
#define BT_DEL 0x80000000 |
#define BT_HIDE 0x40000000 |
#define BT_NOFRAME 0x20000000 |
|
#define OLD -1 |
#define true 1 |
#define false 0 |
|
struct FileInfo{ |
dword read, firstBlock, qnBlockRead, retPtr, Work; |
byte filedir; |
}; |
//------------------------------------------------------------------------- |
struct system_colors{ |
dword frame,grab,grab_button,grab_button_text,grab_text,work,work_button,work_button_text,work_text,work_graph; |
void get(); |
}; |
void system_colors::get() |
{ |
EAX = 48; |
EBX = 3; |
ECX = #frame; |
EDX = 40; |
$int 0x40 |
} |
|
|
int vert; |
struct mouse{ |
dword x,y,lkm,pkm; |
void get(); |
}; |
|
void mouse::get() |
{ |
EAX = 37; |
EBX = 1; |
$int 0x40 |
$mov ebx, eax |
$shr eax, 16 |
$and ebx,0x0000FFFF |
x = EAX; |
y = EBX; |
EAX = 37; |
EBX = 2; |
$int 0x40 |
$mov ebx, eax |
$and eax, 0x00000001 |
$shr ebx, 1 |
$and ebx, 0x00000001 |
lkm = EAX; |
pkm = EBX; |
EAX = 37; //ª®«ñᨪ® |
EBX = 7; |
$int 0x40 |
$mov ebx, eax |
$shr eax, 16 |
$and ebx,0x0000FFFF |
//hor = EAX; |
vert = EBX; |
} |
|
|
//--------------------------------------------------------------------------- |
struct f70{ |
dword func; |
dword param1; |
dword param2; |
dword param3; |
dword param4; |
char rezerv; |
dword name; |
}; |
//--------------------------------------------------------------------------- |
struct BDVK{ |
dword attr; |
byte type_name; |
byte rez1, rez2, rez3; |
dword timecreate; |
dword datecreate; |
dword timelastaccess; |
dword datelastaccess; |
dword timelastedit; |
dword datelastedit; |
dword sizelo; |
dword sizehi; |
char name[518]; |
}; |
//--------------------------------------------------------------------------- |
struct proc_info{ |
dword use_cpu; |
word pos_in_stack,num_slot,rezerv1; |
char name[11]; |
char rezerv2; |
dword adress,use_memory,ID,left,top,width,height; |
word status_slot,rezerv3; |
dword work_left,work_top,work_width,work_height; |
char status_window; |
void getme(); |
}; |
|
void proc_info::getme() |
{ |
EAX = 9; |
EBX = #use_cpu; |
ECX = -1; |
$int 0x40 |
} |
//------------------------------------------------------------------------------- |
|
/* |
âà¨á®¢ª ®ª |
{x_start|y_start}, {x_size|y_size}, color_back, color_title, color_frames |
|
DrawWindow( |
EBX = [x_start][x_size] |
ECX = [y_start][y_size] |
EDX, ESI, EDI = [00RRGGBB] |
) |
*/ |
|
inline fastcall void DrawWindow(dword EBX, ECX, EDX, ESI, EDI){ |
#speed |
EAX = 0; // function 0 : define and draw window |
$int 0x40 |
#codesize |
} |
|
inline fastcall void DrawButton(dword EBX, ECX, EDX, ESI){ |
EAX = 8; |
$int 0x40 |
} |
|
inline fastcall dword WaitEvent(){ |
EAX = 10; // wait here for event |
$int 0x40 |
} |
|
inline fastcall void ExitProcess(){ |
EAX = -1; // close this program |
$int 0x40 |
} |
|
/* |
02 = GET KEY |
|
ret: al 0 successful -> ah = key |
al 1 no key in buffer |
*/ |
inline fastcall word GetKey(){ |
EAX = 2; // just read this key from buffer |
$int 0x40 |
// EAX = EAX >> 8; |
} |
|
/* |
17 = GET PRESSED BUTTON ID |
|
ret: al 0 successful -> ah = id number |
al 1 no key in buffer |
*/ |
inline fastcall word GetButtonID(){ |
EAX = 17; // Get ID |
$int 0x40 |
EAX = EAX >> 8; |
} |
|
/* |
04 = WRITE TEXT TO WINDOW |
|
ebx [x start]*65536 + [y start] |
ecx text color 0x00RRGGBB |
edx pointer to text beginning |
esi text length |
ret: nothing changed |
*/ |
inline fastcall void WriteTextXY(dword EBX, ECX, EDX, ESI){ |
#speed |
EAX = 4; |
$int 0x40; |
#codesize |
} |
|
/* |
13 = DRAW BAR |
|
ebx [x start]*65536 + [x size] |
ecx [y start]*65536 + [y size] |
edx color 0x00RRGGBB |
ret: nothing changed |
*/ |
inline fastcall void kos_DrawBar(dword EBX, ECX, EDX){ |
#speed |
EAX = 13; |
$int 0x40 |
#codesize |
} |
|
/* function EBX=5 (GetBackgroun) ECX[]->EDX[], length ESI |
inline fastcall void GetBackground(dword ECX, EDX, ESI){ |
#speed |
EAX = 39; |
EBX = 5; |
$int 0x40 |
#codesize |
}*/ |
|
//CODED by Veliant |
/*eax = 38 - íîìåð ôóíêöèè |
ebx = [êîîðäèíàòà íà÷àëà ïî îñè x]*65536 + [êîîðäèíàòà êîíöà ïî îñè x] |
ecx = [êîîðäèíàòà íà÷àëà ïî îñè y]*65536 + [êîîðäèíàòà êîíöà ïî îñè y] |
edx = 0x00RRGGBB - öâåò |
edx = 0x01xxxxxx - ðèñîâàòü èíâåðñívé îòðåçîê (ìëàäøèå 24 áèòà èãíîðèðó³òñÿ) */ |
inline fastcall void DrawLine(dword EBX, ECX, EDX){ |
EAX = 38; |
$int 0x40 |
} |
|
inline fastcall void DrawTitle(dword ECX) |
{ |
EAX = 71; |
EBX = 1; |
$int 0x40; |
} |
|
inline fastcall dword GetSkinWidth() |
{ |
EAX = 48; |
EBX = 4; |
$int 0x40 |
} |
|
inline fastcall void ChangeSkin(){ |
EAX = 48; |
EBX = 8; |
ECX = #file_path; |
$int 0x40 |
} |
|
inline fastcall dword GetScreenWidth() |
{ |
EAX = 14; |
EBX = 4; |
$int 0x40 |
$shr eax, 16 |
$and eax,0x0000FFFF |
} |
|
inline fastcall void DeleteButton(dword EDX) |
{ |
EAX = 8; |
EDX = EDX + BT_DEL; |
$int 0x40; |
} |
|
inline fastcall dword LoadLibrary(dword ECX) |
{ |
$mov eax, 68 |
$mov ebx, 19 |
$int 0x40 |
} |
|
inline fastcall dword strlen(dword EDI) |
{ |
#speed |
ECX=0; |
EAX=0; |
ECX--; |
$REPNE $SCASB |
EAX=EAX-2-ECX; |
#codesize |
} |
|
//-1 - ¥ à ¢ë |
// 0 - ¥ à ¢ë |
inline fastcall dword strcmp(dword ESI,EDI) |
{ |
dword strcmp_i,ret=-1,len1,len2,sovpadenij=0,str1,str2; |
str1=ESI; |
str2=EDI; |
len1=strlen(str1); |
len2=strlen(str2); |
IF (len1==len2) |
{ |
FOR (strcmp_i=0;strcmp_i<len1;strcmp_i++) |
{ |
EAX = str1+strcmp_i; |
EAX = ESBYTE[EAX]; |
EBX = str2+strcmp_i; |
EBX = ESBYTE[EBX]; |
IF (EAX==EBX) sovpadenij++; |
} |
IF (sovpadenij==len1) ret=0; |
} ELSE ret=-1; |
EAX = ret; |
} |
|
inline fastcall dword upcase(dword ESI) |
{ |
dword str, i; |
str = ESI; |
for (i=0;i<strlen(str);i++) |
{ |
EAX = str+i; |
EDX = ESBYTE[EAX]; |
IF (EDX>=97) && (EDX<=122) ESBYTE[str+i] = DL - 32; //a-z |
IF (EDX>=160) && (EDX<=175) ESBYTE[str+i] = DL - 32; //à-ï |
IF (EDX>=224) && (EDX<=239) ESBYTE[str+i] = DL - 80; //ð-ÿ |
IF (EDX == 241) ESBYTE[EAX] = 240; //¿ |
} |
EAX = str; |
//EAX = ESDWORD[EAX]; |
//if (EAX != 0x5249443C) $int 3; |
} |
|
inline fastcall dword lowcase(dword ESI) |
{ |
dword str=ESI, i; |
FOR (i=0;i<strlen(str);i++) |
{ |
EAX = str+i; |
EDX = ESBYTE[EAX]; |
IF (EDX>=65) && (EDX<=90) ESBYTE[str+i] = DL + 32; //a-z |
IF (EDX>=128) && (EDX<=143) ESBYTE[str+i] = DL + 32; //à-ï |
IF (EDX>=144) && (EDX<=159) ESBYTE[str+i] = DL + 80; //ð-ÿ |
IF (EDX == 240) ESBYTE[EAX] = 241; //¿ |
} |
EAX = str; |
//EAX = ESDWORD[EAX]; |
//if (EAX != 0x5249443C) $int 3; |
} |
|
inline fastcall void dostowin (dword ESI) |
{ |
dword stroka,dlina; |
stroka = ESI; |
while (BL=ESBYTE[ESI]) |
{ |
IF (BL>128) |
IF (BL>=240) ESBYTE[ESI] = BL - 16; |
ELSE ESBYTE[ESI] = BL - 64; |
ESI++; |
} |
} |
|
void WindowRedrawStatus(dword i) |
{ |
EAX = 12; // function 12:tell os about windowdraw |
EBX = i; // 1, start of draw |
$int 0x40 |
} |
|
void DefineAndDrawWindow(dword x,y,sizeX,sizeY,byte mainAreaType,dword mainAreaColour,byte headerType,dword headerColour,borderColour) |
{ |
dword arg1, arg2, arg3, arg4; |
// |
arg1 = x << 16 + sizeX; |
arg2 = y << 16 + sizeY; |
arg3 = mainAreaType << 24 | mainAreaColour; |
arg4 = headerType << 24 | headerColour; |
// |
$mov eax, 0 |
$mov ebx, arg1 |
$mov ecx, arg2 |
$mov edx, arg3 |
$mov esi, arg4 |
$mov edi, borderColour |
$int 0x40 |
} |
|
void DefineButton(dword x,y,w,h,id,color) |
{ |
DrawButton(x<<16+w, skin_width+y<<16+h, id, color); |
} |
|
void WriteText(dword x,y,byte fontType, dword color, text, len) |
{ |
EBX = x<<16+skin_width+y; |
ECX = fontType<<24+color; |
EDX = text; |
ESI = len; |
EAX = 4; |
$int 0x40; |
} |
|
inline fastcall void PutPixel(dword EBX,ECX,EDX) //Coded by Leency :D |
{ |
EAX=1; |
$int 0x40 |
} |
|
void DrawBar(dword x,y,w,h,color) |
{ |
kos_DrawBar(x<<16+w,skin_width+y<<16+h,color); |
} |
|
void DrawRegion(dword x,y,width,height,color1) |
{ |
DrawBar(x,y,width,1,color1); //ïîëîñà ãîð ñâåðõó |
DrawBar(x,y+height,width,1,color1); //ïîëîñà ãîð ñíèçó |
DrawBar(x,y,1,height,color1); //ïîëîñà âåðò ñëåâà |
DrawBar(x+width,y,1,height+1,color1); //ïîëîñà âåðò ñïðàâà |
} |
|
void DrawFlatButton(dword x,y,width,height,id,color,text) |
{ |
DrawRegion(x,y,width,height,0x94AECE); |
DrawBar(x+1,y+1,width-1,1,0xFFFFFF); //ïîëîñà ãîð áåëàÿ |
DrawBar(x+1,y+height-1,width-2,1,0xC7C7C7); //òåíü âåðò |
DrawBar(x+1,y+1,1,height-1,0xFFFFFF); //ïîëîñà âåðò áåëàÿ |
DrawBar(x+width-1,y+2,1,height-2,0xC7C7C7); //òåíü âåðò |
DrawBar(x+2,y+2,width-3,height-3,color); //çàëèâêà |
IF (id<>0) DefineButton(x,y,width,height,id+BT_HIDE,0xEFEBEF); //îïðåäåëÿåì êíîïêó |
WriteText(-strlen(text)*6+width/2+x+1,height/2-3+y,0x80,0,text,strlen(text)); |
} |
|
|
void PutImage(dword buf,w,h,x,y) |
{ |
int i,r,g,b; |
EDI=buf; |
EAX = 7; |
EBX = buf; |
ECX = w<<16+h; |
EDX = x<<16+y+skin_width; |
$int 0x40 |
} |
|
|
void copystr(dword s,d) |
{ |
$mov esi,s |
$mov edi,d |
$cld |
l1: |
$lodsb |
$stosb |
$test al,al |
$jnz l1 |
} |
|
|
int pos,razr,backup,j=0,chislo; |
char buffer[11]=""; |
inline fastcall dword IntToStr(dword ESI) |
{ |
chislo=ESI; |
ECX=12; |
$push edi |
$mov edi,#buffer |
$xor al,al |
$cld |
$rep $stosb |
pos=razr=backup=j=0; |
if (chislo<0) |
{ |
buffer[pos]='-'; |
chislo=-1*chislo; |
pos++; |
} |
backup=chislo; |
do |
{ |
backup=backup/10; |
razr++; |
} |
while (backup!=0); |
razr--; |
FOR (j=razr+pos;j>pos-1;j--) |
{ |
backup=chislo/10; |
backup=backup*10; |
buffer[j]=chislo-backup+48; |
chislo=chislo/10; |
} |
//return #buffer; |
$pop edi; |
EAX = #buffer; |
} |
|
|
inline fastcall dword MoveSize(dword EBX,ECX,EDX,ESI) |
{ |
EAX = 67; |
$int 0x40 |
} |
|
|
f70 CopyFile_f; |
BDVK CopyFile_atr; |
inline fastcall dword CopyFile(dword EBX,ECX) |
{ |
dword s, d, bufer=0; |
s = EBX; |
d = ECX; |
|
CopyFile_f.func = 5; |
CopyFile_f.param1 = 0; |
CopyFile_f.param2 = 0; |
CopyFile_f.param3 = 0; |
CopyFile_f.param4 = #CopyFile_atr; |
CopyFile_f.rezerv = 0; |
CopyFile_f.name = s; |
$mov eax, 70 |
$mov ebx, #CopyFile_f |
$int 0x40 |
|
if (EAX == 0) |
{ |
bufer = malloc(CopyFile_atr.sizelo); |
CopyFile_f.func = 0; |
CopyFile_f.param1 = 0; |
CopyFile_f.param2 = 0; |
CopyFile_f.param3 = CopyFile_atr.sizelo; |
CopyFile_f.param4 = bufer; |
CopyFile_f.rezerv = 0; |
CopyFile_f.name = s; |
$mov eax, 70 |
$mov ebx, #CopyFile_f |
$int 0x40 |
|
IF (EAX == 0) |
{ |
CopyFile_f.func = 2; |
CopyFile_f.param1 = 0; |
CopyFile_f.param2 = 0; |
CopyFile_f.param3 = CopyFile_atr.sizelo; |
CopyFile_f.param4 = bufer; |
CopyFile_f.rezerv = 0; |
CopyFile_f.name = d; |
$mov eax, 70 |
$mov ebx, #CopyFile_f |
$int 0x40 |
} |
} |
|
} |