From aaf3c424a7039e21fc40666952f4f3d378b51eb4 Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Mon, 3 Nov 2008 13:17:14 +0000 Subject: [PATCH] Eolite, the lastest version git-svn-id: svn://kolibrios.org@903 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/fs/Eolite/trunk/lib/edit_box_lib.h-- | 81 ++++ programs/fs/Eolite/trunk/lib/kolibri.h-- | 392 ++++++++++++++++++ programs/fs/Eolite/trunk/lib/memory.h-- | 36 ++ 3 files changed, 509 insertions(+) create mode 100644 programs/fs/Eolite/trunk/lib/edit_box_lib.h-- create mode 100644 programs/fs/Eolite/trunk/lib/kolibri.h-- create mode 100644 programs/fs/Eolite/trunk/lib/memory.h-- diff --git a/programs/fs/Eolite/trunk/lib/edit_box_lib.h-- b/programs/fs/Eolite/trunk/lib/edit_box_lib.h-- new file mode 100644 index 0000000000..15968b60b6 --- /dev/null +++ b/programs/fs/Eolite/trunk/lib/edit_box_lib.h-- @@ -0,0 +1,81 @@ +//BOX_LIB +dword edit_box_draw = #aEdit_box_draw; +dword edit_box_key = #aEdit_box_key; +dword edit_box_mouse = #aEdit_box_mouse; +dword version_ed = #aVersion_ed; + +dword am__ = 0x0; +dword bm__ = 0x0; + +char aEdit_box_draw[9] = "edit_box\0"; +char aEdit_box_key[13] = "edit_box_key\0"; +char aEdit_box_mouse[15] = "edit_box_mouse\0"; +char aVersion_ed[11] = "version_ed\0"; + +char aCheck_box_draw [15] = "check_box_draw\0"; +char aCheck_box_mouse [16] = "check_box_mouse\0"; +char aVersion_ch [11] = "version_ch\0"; + +char aOption_box_draw [16] = "option_box_draw\0"; +char aOption_box_mouse[17] = "option_box_mouse\0"; +char aVersion_op [11] = "version_op\0" ; + + +struct edit_box{ +dword width, left, top, color, shift_color, focus_border_color, blur_border_color, +text_color, max, text, flags, size, pos, offset, cl_curs_x, cl_curs_y, shift, shift_old; +}; + + + +int load_dll(EAX) +{ +//set mask + $mov eax,40 + $mov ebx,0x27 + $int 0x40 +// load DLL + $mov eax, 68 + $mov ebx, 19 + ECX="/sys/lib/box_lib.obj"; + $int 0x40 + $test eax, eax + $jz exit + +// initialize import + $mov edx,eax + ESI=#edit_box_draw; +import_loop: + $lodsd + $test eax,eax + $jz import_done + $push edx +import_find: + $mov ebx,DSDWORD[EDX] + $test ebx, ebx + $jz exit + $push eax +nex1: + $mov cl,DSBYTE[EAX]; + $cmp cl,DSBYTE[EBX]; + $jnz import_find_next + $test cl,cl + $jz import_found + $inc eax + $inc ebx + $jmp nex1 +import_find_next: + $pop eax + $add edx, 8 + $jmp import_find +import_found: + $pop eax + $mov eax,DSDWORD[edx+4] + $mov DSDWORD[esi-4],eax + $pop edx + $jmp import_loop +import_done: + return 0; +exit: + return -1; +} diff --git a/programs/fs/Eolite/trunk/lib/kolibri.h-- b/programs/fs/Eolite/trunk/lib/kolibri.h-- new file mode 100644 index 0000000000..898cbf3e2f --- /dev/null +++ b/programs/fs/Eolite/trunk/lib/kolibri.h-- @@ -0,0 +1,392 @@ +//CODED by Veliant, Leency. GNU GPL licence. + +#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 = 0x00100000; +dword x86esp_reg = 0x00100000; // 0x0007fff0; +dword I_Param = #param; +dword I_Icon = 0x0; +dword skin_width; + +char param[256]=""; + +//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 + + + +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 +} +//------------------------------------------------------------------------------- + +inline fastcall dword WaitEvent(){ + EAX = 10; // wait here for event + $int 0x40 +} + +inline fastcall void ExitProcess(){ + EAX = -1; // close this program + $int 0x40 +} + +inline fastcall word GetKey(){ + EAX = 2; // just read this key from buffer + $int 0x40 + EAX = EAX >> 8; +} + +inline fastcall word GetButtonID(){ + EAX = 17; // Get ID + $int 0x40 + EAX = EAX >> 8; +} + + +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 DeleteButton(dword EDX) +{ + EAX = 8; + EDX = EDX + BT_DEL; + $int 0x40; +} + + +inline fastcall dword strlen(dword EDI) +{ +#speed + ECX=EAX=0; + ECX--; + $REPNE $SCASB + EAX=EAX-2-ECX; +#codesize +} + + +inline fastcall int strcmp(dword EAX,EBX) +{ +#speed + ESI=EAX; + EBX--; +TOP: + EBX++; + $LODSB + $CMP AL,0 + $JE HERE + $CMP DSBYTE[EBX],AL + $JE TOP +HERE: + AL-=DSBYTE[EBX]; + return AL; +#codesize +} + + +inline fastcall dword ChangeCase(dword EDX) +{ +#speed + AL=DSBYTE[EDX]; + IF(AL>='a')&&(AL<='z')DSBYTE[EDX]=AL&0x5f; + EDX++; + do{ + AL=DSBYTE[EDX]; + IF(AL>='A')&&(AL<='Z')DSBYTE[EDX]=AL|0x20; + EDX++; + }while(AL!=0); +#codesize +} + + +inline fastcall void WindowRedrawStatus(dword EBX) +{ + EAX = 12; // function 12:tell os about windowdraw + $int 0x40 +} + + +void DefineAndDrawWindow(dword x,y,sizeX,sizeY,byte mainAreaType,dword mainAreaColour,byte headerType,dword headerColour,EDI) +{ + EBX = x << 16 + sizeX; + ECX = y << 16 + sizeY; + EDX = mainAreaType << 24 | mainAreaColour; + ESI = headerType << 24 | headerColour; + $xor eax,eax + $int 0x40 +} + + +inline fastcall void SetEventMask(dword EBX,ECX,EDX) //Coded by Leency :D +{ + $mov eax,40 + $mov ebx,100111b + $int 0x40 +} + +void DefineButton(dword x,y,w,h,EDX,ESI) +{ + EAX = 8; + EBX = x<<16+w; + ECX = skin_width+y<<16+h; + $int 0x40 +} + +void WriteText(dword x,y,byte fontType, dword color, EDX, ESI) +{ + EAX = 4; + EBX = x<<16+skin_width+y; + ECX = fontType<<24+color; + $int 0x40; +} + +inline fastcall void PutPixel(dword EBX,ECX,EDX) +{ + EAX=1; + $int 0x40 +} + +void DrawBar(dword x,y,w,h,EDX) +{ +#speed + EAX = 13; + EBX = x<<16+w; + ECX = skin_width+y<<16+h; + $int 0x40 +#codesize +} + +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,0); +} + + +void PutImage(dword EBX,w,h,x,y) +{ + EAX = 7; + 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 j=0; +char buffer[11]=""; +inline fastcall dword IntToStr(dword ESI) +{ + $mov edi, #buffer + $mov ecx, 10 + $test esi, esi + $jns f1 + $mov al, '-' + $stosb + $neg esi +f1: + $mov eax, esi + $push -'0' +f2: + $xor edx, edx + $div ecx + $push edx + $test eax, eax + $jnz f2 +f3: + $pop eax + $add al, '0' + $stosb + $jnz f3 + $mov eax, #buffer + $ret +} + + +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=EBX, d=ECX, cBufer=0; + 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) + { + cBufer = 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 = cBufer; + 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 = cBufer; + CopyFile_f.rezerv = 0; + CopyFile_f.name = d; + $mov eax, 70 + $mov ebx, #CopyFile_f + $int 0x40 + } + } + +} diff --git a/programs/fs/Eolite/trunk/lib/memory.h-- b/programs/fs/Eolite/trunk/lib/memory.h-- new file mode 100644 index 0000000000..ad68fada36 --- /dev/null +++ b/programs/fs/Eolite/trunk/lib/memory.h-- @@ -0,0 +1,36 @@ +#code32 TRUE + +inline fastcall dword malloc(dword ECX){ + dword size, heap; + #speed + size = ECX; + EAX = 68; + EBX = 11; + $int 0x40; + heap = EAX; + IF (size<=heap) + { + EAX = 68; + EBX = 12; + ECX = size; + $int 0x40; + } + ELSE EAX=-1; + #codesize +} + +inline fastcall dword free(dword ECX){ + #speed + EAX = 68; + EBX = 13; + $int 0x40; + #codesize +} + +inline fastcall dword realloc(dword ECX, EDX){ + #speed + EAX = 68; + EBX = 20; + $int 0x40; + #codesize +}