#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=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=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 } } }