/programs/develop/libraries/box_lib/C--/lib/RANDOM.H-- |
---|
0,0 → 1,52 |
/******************************************************************************* |
MenuetOS MineSweeper |
Copyright (C) 2003 Ivan Poddubny |
This program is free software; you can redistribute it and/or modify |
it under the terms of the GNU General Public License as published by |
the Free Software Foundation; either version 2 of the License, or |
(at your option) any later version. |
This program is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*******************************************************************************/ |
dword generator; // random number generator - äëÿ ãåíåðàöèè ñëó÷àéíûõ ÷èñåë |
:int random(int max) |
// get pseudo-random number - ïîëó÷èòü ïñåâäîñëó÷àéíîå ÷èñëî |
{ |
$rdtsc // eax & edx |
$xor eax,edx |
$not eax |
EBX = generator; |
$ror ebx,3 |
$xor ebx,0xdeadbeef |
EBX += EAX; |
generator = EBX; |
EAX += EBX; |
EAX = EAX % max; |
return EAX; |
} |
:randomize() |
// initialize random number generator - èíèöèàëèçèðîâàòü ãåíåðàòîð ñëó÷àéíûõ ÷èñåë |
{ |
asm |
{ |
mov eax,3 |
int 0x40 |
ror eax,16 |
} |
generator = EAX; |
} |
/programs/develop/libraries/box_lib/C--/lib/kolibri.h-- |
---|
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 |
} |
} |
} |
/programs/develop/libraries/box_lib/C--/lib/load_bmp.h-- |
---|
0,0 → 1,67 |
//Load BMP by Veliant |
struct readimage{ |
dword func, param1, param2, size, buffer; |
byte z; |
dword name; |
}; |
void Put_Image(dword x,y,w,h,name) |
{ |
int i, j, size, off, off2; |
byte r, g, b; |
readimage image; |
dword buf; |
size=w*h*3+100; |
buf=malloc(size); |
image.func = 0; |
image.param1 = 0; |
image.param2 = 0; |
image.size = size; |
image.buffer = buf; |
image.z = 0; |
image.name = #path; |
EAX = 70; |
EBX = #image; |
$int 0x40; |
for(i=0;i<h;i++) |
for (j=0;j<w/2;j++) |
{ |
off=w*3*i+buf+0x36; |
off2=w-j*3+off; |
off=j*3+off; |
r=ESBYTE[off2-3]; |
g=ESBYTE[off2-2]; |
b=ESBYTE[off2-1]; |
ESBYTE[off2-3]=ESBYTE[off]; |
ESBYTE[off2-2]=ESBYTE[off+1]; |
ESBYTE[off2-1]=ESBYTE[off+2]; |
ESBYTE[off]=r; |
ESBYTE[off+1]=g; |
ESBYTE[off+2]=b; |
} |
size=w*h; |
for(i=0;i<size/2;i++) |
{ |
off=buf+0x36; |
off2=size-i*3+off; |
off=i*3+off; |
r=ESBYTE[off2-3]; |
g=ESBYTE[off2-2]; |
b=ESBYTE[off2-1]; |
ESBYTE[off2-3]=ESBYTE[off]; |
ESBYTE[off2-2]=ESBYTE[off+1]; |
ESBYTE[off2-1]=ESBYTE[off+2]; |
ESBYTE[off]=r; |
ESBYTE[off+1]=g; |
ESBYTE[off+2]=b; |
} |
EAX = 7; |
EBX = buf+0x36; |
ECX = w<<16+h; |
EDX = x<<16+y+skin_width; |
$int 0x40 |
} |
/programs/develop/libraries/box_lib/C--/lib/memory.h-- |
---|
0,0 → 1,36 |
#code32 TRUE |
dword heap; |
inline fastcall dword malloc(dword ECX){ |
dword size; |
#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 |
} |
/programs/develop/libraries/box_lib/C--/lib |
---|
Property changes: |
Added: tsvn:logminsize |
+5 |
\ No newline at end of property |
/programs/develop/libraries/box_lib/C--/trunk/EditBox2.c-- |
---|
0,0 → 1,96 |
//EditBox in C-- example v0.1 |
//Veliant 2007 Leency 2008 |
#pragma option A |
#codesize |
#include "..\lib\kolibri.h--" |
#include "use_library.h--" |
////////////////////////////////////////////////////////////////// |
//Bit mask from editbox |
////////////////////////////////////////////////////////////////// |
//char edit_path[256] = "You can edit me!"; //ᮤ¥à¦¨¬®¥ EditBox'a |
char way_of_ini[250] = "/sys/lib/box_lib.obj",NULL; //ᮤ¥à¦¨¬®¥ EditBox'a |
edit_box edit1= {250,14,35,0xffffff,0x6f9480,0,0xAABBCC,0,248,#way_of_ini,2,20,20}; |
//ed_width equ [edi] ;è¨à¨ ª®¬¯®¥â |
//ed_left equ [edi+4] ;¯®«®¦¥¨¥ ¯® ®á¨ å |
//ed_top equ [edi+8] ;¯®«®¦¥¨¥ ¯® ®á¨ ã |
//ed_color equ [edi+12] ;梥â ä® ª®¬¯®¥â |
//shift_color equ [edi+16] ;=0x6a9480 |
//ed_focus_border_color equ [edi+20] ;梥â à ¬ª¨ ª®¬¯®¥â |
//ed_blur_border_color equ [edi+24] ;梥⠥ ªâ¨¢®£® ª®¬¯®¥â |
//ed_text_color equ [edi+28] ;梥â ⥪áâ |
//ed_max equ [edi+32] ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦® ¬ ªá¨¬ «ì® ¢¢¥á⨠|
//ed_text equ [edi+36] ;㪠§ â¥«ì ¡ãä¥à |
//ed_flags equ [edi+40] ;ä« £¨ |
//ed_size equ [edi+42] ;ª®«-¢® ᨬ¢®«®¢ |
//ed_pos equ [edi+46] ;¯®§¨æ¨ï ªãàá®à |
//ed_offset equ [edi+50] ;ᬥ饨¥ |
//cl_curs_x equ [edi+54] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® å |
//cl_curs_y equ [edi+58] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® ã |
//ed_shift_pos equ [edi+62] ;¯®«®¦¥¨¥ ªãàá®à |
//ed_shift_pos_old equ [edi+66] ;áâ ஥ ¯®«®¦¥¨¥ ªãàá®à |
proc_info Form; |
void main() |
byte id; |
{ |
load_dll(); |
draw_window(); |
loop() |
{ |
switch(WaitEvent()) |
{ |
//Button pressed---------------------------------------------------- |
CASE evButton: |
id=GetButtonID(); |
IF (id==1) || (id==2) ExitProcess(); |
break; |
//Key pressed------------------------------------------------------- |
case evKey: |
GetKey(); |
edit_box_key stdcall (#edit1); |
break; |
case evReDraw: draw_window(); break; |
// default: break; |
} |
edit_box_mouse stdcall (#edit1); |
} |
ExitProcess(); |
} |
void draw_window() |
{ |
WindowRedrawStatus(1); |
skin_width = GetSkinWidth(); |
DefineAndDrawWindow(400,200,280,200,0x04,0x00E4DFE1,0,0,0); DrawTitle("Extended EditBox in C--"); |
Form.getme(); |
//òåêñò |
WriteText(30,40,0x80,0," ¨¯à®á⥩訩 ¯à¨¬¥à EditBox'a --",0); |
WriteText(30,50,0x80,0,"® ¥£® ¬®¦® ¥¬®£® ãá«®¦¨âì á 楫ìî",0); |
WriteText(30,60,0x80,0,"㬥ìè¥¨ï ¯¥à¥à¨á®¢ª¨.",0); |
//êíîïû |
DrawFlatButton(100,105,70,22,2,0xD7D7D7,"Close"); |
//EditBox |
// DrawRegion(30,14,201,16,0x94AECE); //®¡®¤®ª ¯®«®áë ¤à¥á |
edit_box_draw stdcall (#edit1); |
// typedef void (*edit_box_draw)(dword edit_b); // ®¡ê¥¨¥ 㪠§ ⥫ï äãªæ¨î |
// edit_box_draw(edit_b); // ¢ë§®¢ äãªæ¨¨ |
WindowRedrawStatus(2); |
} |
stop: |
/programs/develop/libraries/box_lib/C--/trunk/EditBox2.lst |
---|
0,0 → 1,952 |
SPHINX/SHEKER C-- One Pass Disassembler. Version 0.239c b26 Apr 27 2007 |
..\lib\kolibri.h-- 4: char os_name[8] = {'M','E','N','U','E','T','0','1'}; |
00000000 4D454E5545543031 db 4Dh,45h,4Eh,55h,45h,54h,30h,31h |
..\lib\kolibri.h-- 5: dword os_version = 0x00000001; |
00000008 01000000 dd 1 |
..\lib\kolibri.h-- 6: dword start_addr = #main; |
0000000C 88050000 dd 588h |
..\lib\kolibri.h-- 7: dword final_addr = #stop+32; |
00000010 5D070000 dd 75Dh |
..\lib\kolibri.h-- 8: dword alloc_mem = #stop+0x100; |
00000014 3D080000 dd 83Dh |
..\lib\kolibri.h-- 9: dword x86esp_reg = #stop+0x100; |
00000018 3D080000 dd 83Dh |
..\lib\kolibri.h-- 10: dword I_Param = 0x0; |
0000001C 00000000 dd 0 |
..\lib\kolibri.h-- 11: dword I_Icon = 0x0; |
00000020 00000000 dd 0 |
..\lib\kolibri.h-- 39: void system_colors::get() |
00000024 55 push ebp |
00000025 89E5 mov ebp,esp |
..\lib\kolibri.h-- 41: EAX = 48; |
00000027 6A30 push 30h |
00000029 58 pop eax |
..\lib\kolibri.h-- 42: EBX = 3; |
0000002A 6A03 push 3 |
0000002C 5B pop ebx |
..\lib\kolibri.h-- 43: ECX = #frame; |
0000002D 8B4D08 mov ecx,[ebp+8] |
..\lib\kolibri.h-- 44: EDX = 40; |
00000030 6A28 push 28h |
00000032 5A pop edx |
..\lib\kolibri.h-- 45: $int 0x40 |
00000033 CD40 int 40h |
00000035 5D pop ebp |
00000036 C20400 ret 4 |
..\lib\kolibri.h-- 55: void mouse::get() |
00000039 55 push ebp |
0000003A 89E5 mov ebp,esp |
..\lib\kolibri.h-- 57: EAX = 37; |
0000003C 6A25 push 25h |
0000003E 58 pop eax |
..\lib\kolibri.h-- 58: EBX = 1; |
0000003F 31DB xor ebx,ebx |
00000041 43 inc ebx |
..\lib\kolibri.h-- 59: $int 0x40 |
00000042 CD40 int 40h |
..\lib\kolibri.h-- 60: $mov ebx, eax |
00000044 89C3 mov ebx,eax |
..\lib\kolibri.h-- 61: $shr eax, 16 |
00000046 C1E810 shr eax,10h |
..\lib\kolibri.h-- 62: $and ebx,0x0000FFFF |
00000049 81E3FFFF0000 and ebx,0FFFFh |
..\lib\kolibri.h-- 63: x = EAX; |
0000004F 8B7508 mov esi,[ebp+8] |
00000052 8906 mov [esi],eax |
..\lib\kolibri.h-- 64: y = EBX; |
00000054 895E04 mov [esi+4],ebx |
..\lib\kolibri.h-- 65: EAX = 37; |
00000057 6A25 push 25h |
00000059 58 pop eax |
..\lib\kolibri.h-- 66: EBX = 2; |
0000005A 6A02 push 2 |
0000005C 5B pop ebx |
..\lib\kolibri.h-- 67: $int 0x40 |
0000005D CD40 int 40h |
..\lib\kolibri.h-- 68: $mov ebx, eax |
0000005F 89C3 mov ebx,eax |
..\lib\kolibri.h-- 69: $and eax, 0x00000001 |
00000061 83E001 and eax,1 |
..\lib\kolibri.h-- 70: $shr ebx, 1 |
00000064 D1EB shr ebx,1 |
..\lib\kolibri.h-- 71: $and ebx, 0x00000001 |
00000066 83E301 and ebx,1 |
..\lib\kolibri.h-- 72: lkm = EAX; |
00000069 8B7508 mov esi,[ebp+8] |
0000006C 894608 mov [esi+8],eax |
..\lib\kolibri.h-- 73: pkm = EBX; |
0000006F 895E0C mov [esi+0Ch],ebx |
..\lib\kolibri.h-- 74: EAX = 37; //ª®«ñᨪ® |
00000072 6A25 push 25h |
00000074 58 pop eax |
..\lib\kolibri.h-- 75: EBX = 7; |
00000075 6A07 push 7 |
00000077 5B pop ebx |
..\lib\kolibri.h-- 76: $int 0x40 |
00000078 CD40 int 40h |
..\lib\kolibri.h-- 77: $mov ebx, eax |
0000007A 89C3 mov ebx,eax |
..\lib\kolibri.h-- 78: $shr eax, 16 |
0000007C C1E810 shr eax,10h |
..\lib\kolibri.h-- 79: $and ebx,0x0000FFFF |
0000007F 81E3FFFF0000 and ebx,0FFFFh |
..\lib\kolibri.h-- 81: vert = EBX; |
00000085 891D88070000 mov [788h],ebx |
0000008B 5D pop ebp |
0000008C C20400 ret 4 |
..\lib\kolibri.h-- 123: void proc_info::getme() |
0000008F 55 push ebp |
00000090 89E5 mov ebp,esp |
..\lib\kolibri.h-- 125: EAX = 9; |
00000092 6A09 push 9 |
00000094 58 pop eax |
..\lib\kolibri.h-- 126: EBX = #use_cpu; |
00000095 8B5D08 mov ebx,[ebp+8] |
..\lib\kolibri.h-- 127: ECX = -1; |
00000098 83C9FF or ecx,0FFFFFFFFh |
..\lib\kolibri.h-- 128: $int 0x40 |
0000009B CD40 int 40h |
0000009D 5D pop ebp |
0000009E C20400 ret 4 |
..\lib\kolibri.h-- 367: void WindowRedrawStatus(dword i) |
000000A1 55 push ebp |
000000A2 89E5 mov ebp,esp |
..\lib\kolibri.h-- 369: EAX = 12; // function 12:tell os about windowdraw |
000000A4 6A0C push 0Ch |
000000A6 58 pop eax |
..\lib\kolibri.h-- 370: EBX = i; // 1, start of draw |
000000A7 8B5D08 mov ebx,[ebp+8] |
..\lib\kolibri.h-- 371: $int 0x40 |
000000AA CD40 int 40h |
000000AC 5D pop ebp |
000000AD C20400 ret 4 |
..\lib\kolibri.h-- 374: void DefineAndDrawWindow(dword x,y,sizeX,sizeY,byte mainAreaType,dword mainAreaColour,byte headerType,dword headerColour,border |
000000B0 C8100000 enter 10h,0 |
..\lib\kolibri.h-- 378: arg1 = x << 16 + sizeX; |
000000B4 8B4528 mov eax,[ebp+28h] |
000000B7 C1E010 shl eax,10h |
000000BA 034520 add eax,[ebp+20h] |
000000BD 8945FC mov [ebp-4],eax |
..\lib\kolibri.h-- 379: arg2 = y << 16 + sizeY; |
000000C0 8B4524 mov eax,[ebp+24h] |
000000C3 C1E010 shl eax,10h |
000000C6 03451C add eax,[ebp+1Ch] |
000000C9 8945F8 mov [ebp-8],eax |
..\lib\kolibri.h-- 380: arg3 = mainAreaType << 24 | mainAreaColour; |
000000CC 0FB64518 movzx eax,[ebp+18h] |
000000D0 C1E018 shl eax,18h |
000000D3 0B4514 or eax,[ebp+14h] |
000000D6 8945F4 mov [ebp-0Ch],eax |
..\lib\kolibri.h-- 381: arg4 = headerType << 24 | headerColour; |
000000D9 0FB64510 movzx eax,[ebp+10h] |
000000DD C1E018 shl eax,18h |
000000E0 0B450C or eax,[ebp+0Ch] |
000000E3 8945F0 mov [ebp-10h],eax |
..\lib\kolibri.h-- 383: $mov eax, 0 |
000000E6 B800000000 mov eax,0 |
..\lib\kolibri.h-- 384: $mov ebx, arg1 |
000000EB 8B5DFC mov ebx,[ebp-4] |
..\lib\kolibri.h-- 385: $mov ecx, arg2 |
000000EE 8B4DF8 mov ecx,[ebp-8] |
..\lib\kolibri.h-- 386: $mov edx, arg3 |
000000F1 8B55F4 mov edx,[ebp-0Ch] |
..\lib\kolibri.h-- 387: $mov esi, arg4 |
000000F4 8B75F0 mov esi,[ebp-10h] |
..\lib\kolibri.h-- 388: $mov edi, borderColour |
000000F7 8B7D08 mov edi,[ebp+8] |
..\lib\kolibri.h-- 389: $int 0x40 |
000000FA CD40 int 40h |
000000FC C9 leave |
000000FD C22400 ret 24h |
..\lib\kolibri.h-- 392: void DefineButton(dword x,y,w,h,id,color) |
00000100 55 push ebp |
00000101 89E5 mov ebp,esp |
..\lib\kolibri.h-- 394: DrawButton(x<<16+w, skin_width+y<<16+h, id, color); |
00000103 8B5D1C mov ebx,[ebp+1Ch] |
00000106 C1E310 shl ebx,10h |
00000109 035D14 add ebx,[ebp+14h] |
0000010C 8B0D84070000 mov ecx,[784h] |
00000112 034D18 add ecx,[ebp+18h] |
00000115 C1E110 shl ecx,10h |
00000118 034D10 add ecx,[ebp+10h] |
0000011B 8B550C mov edx,[ebp+0Ch] |
0000011E 8B7508 mov esi,[ebp+8] |
00000121 E84E060000 call 774h |
00000126 5D pop ebp |
00000127 C21800 ret 18h |
..\lib\kolibri.h-- 397: void WriteText(dword x,y,byte fontType, dword color, text, len) |
0000012A 55 push ebp |
0000012B 89E5 mov ebp,esp |
..\lib\kolibri.h-- 399: EBX = x<<16+skin_width+y; |
0000012D 8B5D1C mov ebx,[ebp+1Ch] |
00000130 C1E310 shl ebx,10h |
00000133 031D84070000 add ebx,[784h] |
00000139 035D18 add ebx,[ebp+18h] |
..\lib\kolibri.h-- 400: ECX = fontType<<24+color; |
0000013C 0FB64D14 movzx ecx,[ebp+14h] |
00000140 C1E118 shl ecx,18h |
00000143 034D10 add ecx,[ebp+10h] |
..\lib\kolibri.h-- 401: EDX = text; |
00000146 8B550C mov edx,[ebp+0Ch] |
..\lib\kolibri.h-- 402: ESI = len; |
00000149 8B7508 mov esi,[ebp+8] |
..\lib\kolibri.h-- 403: EAX = 4; |
0000014C 6A04 push 4 |
0000014E 58 pop eax |
..\lib\kolibri.h-- 404: $int 0x40; |
0000014F CD40 int 40h |
00000151 5D pop ebp |
00000152 C21800 ret 18h |
..\lib\kolibri.h-- 413: void DrawBar(dword x,y,w,h,color) |
00000155 55 push ebp |
00000156 89E5 mov ebp,esp |
..\lib\kolibri.h-- 415: kos_DrawBar(x<<16+w,skin_width+y<<16+h,color); |
00000158 8B5D18 mov ebx,[ebp+18h] |
0000015B C1E310 shl ebx,10h |
0000015E 035D10 add ebx,[ebp+10h] |
00000161 8B0D84070000 mov ecx,[784h] |
00000167 034D14 add ecx,[ebp+14h] |
0000016A C1E110 shl ecx,10h |
0000016D 034D0C add ecx,[ebp+0Ch] |
00000170 8B5508 mov edx,[ebp+8] |
00000173 E8D2050000 call 74Ah |
00000178 5D pop ebp |
00000179 C21400 ret 14h |
..\lib\kolibri.h-- 418: void DrawRegion(dword x,y,width,height,color1) |
0000017C 55 push ebp |
0000017D 89E5 mov ebp,esp |
..\lib\kolibri.h-- 420: DrawBar(x,y,width,1,color1); //ïîëîñà ãîð ñâåðõó |
0000017F FF7518 push dword ptr [ebp+18h] |
00000182 FF7514 push dword ptr [ebp+14h] |
00000185 FF7510 push dword ptr [ebp+10h] |
00000188 6A01 push 1 |
0000018A FF7508 push dword ptr [ebp+8] |
0000018D E8C3FFFFFF call 155h |
..\lib\kolibri.h-- 421: DrawBar(x,y+height,width,1,color1); //ïîëîñà ãîð ñíèçó |
00000192 FF7518 push dword ptr [ebp+18h] |
00000195 8B4514 mov eax,[ebp+14h] |
00000198 03450C add eax,[ebp+0Ch] |
0000019B 50 push eax |
0000019C FF7510 push dword ptr [ebp+10h] |
0000019F 6A01 push 1 |
000001A1 FF7508 push dword ptr [ebp+8] |
000001A4 E8ACFFFFFF call 155h |
..\lib\kolibri.h-- 422: DrawBar(x,y,1,height,color1); //ïîëîñà âåðò ñëåâà |
000001A9 FF7518 push dword ptr [ebp+18h] |
000001AC FF7514 push dword ptr [ebp+14h] |
000001AF 6A01 push 1 |
000001B1 FF750C push dword ptr [ebp+0Ch] |
000001B4 FF7508 push dword ptr [ebp+8] |
000001B7 E899FFFFFF call 155h |
..\lib\kolibri.h-- 423: DrawBar(x+width,y,1,height+1,color1); //ïîëîñà âåðò ñïðàâà |
000001BC 8B4518 mov eax,[ebp+18h] |
000001BF 034510 add eax,[ebp+10h] |
000001C2 50 push eax |
000001C3 FF7514 push dword ptr [ebp+14h] |
000001C6 6A01 push 1 |
000001C8 8B450C mov eax,[ebp+0Ch] |
000001CB 40 inc eax |
000001CC 50 push eax |
000001CD FF7508 push dword ptr [ebp+8] |
000001D0 E880FFFFFF call 155h |
000001D5 5D pop ebp |
000001D6 C21400 ret 14h |
..\lib\kolibri.h-- 426: void DrawFlatButton(dword x,y,width,height,id,color,text) |
000001D9 55 push ebp |
000001DA 89E5 mov ebp,esp |
..\lib\kolibri.h-- 428: DrawRegion(x,y,width,height,0x94AECE); |
000001DC FF7520 push dword ptr [ebp+20h] |
000001DF FF751C push dword ptr [ebp+1Ch] |
000001E2 FF7518 push dword ptr [ebp+18h] |
000001E5 FF7514 push dword ptr [ebp+14h] |
000001E8 68CEAE9400 push 94AECEh |
000001ED E88AFFFFFF call 17Ch |
..\lib\kolibri.h-- 429: DrawBar(x+1,y+1,width-1,1,0xFFFFFF); //ïîëîñà ãîð áåëàÿ |
000001F2 8B4520 mov eax,[ebp+20h] |
000001F5 40 inc eax |
000001F6 50 push eax |
000001F7 8B451C mov eax,[ebp+1Ch] |
000001FA 40 inc eax |
000001FB 50 push eax |
000001FC 8B4518 mov eax,[ebp+18h] |
000001FF 48 dec eax |
00000200 50 push eax |
00000201 6A01 push 1 |
00000203 68FFFFFF00 push 0FFFFFFh |
00000208 E848FFFFFF call 155h |
..\lib\kolibri.h-- 430: DrawBar(x+1,y+height-1,width-2,1,0xC7C7C7); //òåíü âåðò |
0000020D 8B4520 mov eax,[ebp+20h] |
00000210 40 inc eax |
00000211 50 push eax |
00000212 8B451C mov eax,[ebp+1Ch] |
00000215 034514 add eax,[ebp+14h] |
00000218 48 dec eax |
00000219 50 push eax |
0000021A 8B4518 mov eax,[ebp+18h] |
0000021D 48 dec eax |
0000021E 48 dec eax |
0000021F 50 push eax |
00000220 6A01 push 1 |
00000222 68C7C7C700 push 0C7C7C7h |
00000227 E829FFFFFF call 155h |
..\lib\kolibri.h-- 431: DrawBar(x+1,y+1,1,height-1,0xFFFFFF); //ïîëîñà âåðò áåëàÿ |
0000022C 8B4520 mov eax,[ebp+20h] |
0000022F 40 inc eax |
00000230 50 push eax |
00000231 8B451C mov eax,[ebp+1Ch] |
00000234 40 inc eax |
00000235 50 push eax |
00000236 6A01 push 1 |
00000238 8B4514 mov eax,[ebp+14h] |
0000023B 48 dec eax |
0000023C 50 push eax |
0000023D 68FFFFFF00 push 0FFFFFFh |
00000242 E80EFFFFFF call 155h |
..\lib\kolibri.h-- 432: DrawBar(x+width-1,y+2,1,height-2,0xC7C7C7); //òåíü âåðò |
00000247 8B4520 mov eax,[ebp+20h] |
0000024A 034518 add eax,[ebp+18h] |
0000024D 48 dec eax |
0000024E 50 push eax |
0000024F 8B451C mov eax,[ebp+1Ch] |
00000252 40 inc eax |
00000253 40 inc eax |
00000254 50 push eax |
00000255 6A01 push 1 |
00000257 8B4514 mov eax,[ebp+14h] |
0000025A 48 dec eax |
0000025B 48 dec eax |
0000025C 50 push eax |
0000025D 68C7C7C700 push 0C7C7C7h |
00000262 E8EEFEFFFF call 155h |
..\lib\kolibri.h-- 433: DrawBar(x+2,y+2,width-3,height-3,color); //çàëèâêà |
00000267 8B4520 mov eax,[ebp+20h] |
0000026A 40 inc eax |
0000026B 40 inc eax |
0000026C 50 push eax |
0000026D 8B451C mov eax,[ebp+1Ch] |
00000270 40 inc eax |
00000271 40 inc eax |
00000272 50 push eax |
00000273 8B4518 mov eax,[ebp+18h] |
00000276 83E803 sub eax,3 |
00000279 50 push eax |
0000027A 8B4514 mov eax,[ebp+14h] |
0000027D 83E803 sub eax,3 |
00000280 50 push eax |
00000281 FF750C push dword ptr [ebp+0Ch] |
00000284 E8CCFEFFFF call 155h |
..\lib\kolibri.h-- 434: IF (id<>0) DefineButton(x,y,width,height,id+BT_HIDE,0xEFEBEF); //îïðåäåëÿåì êíîïêó |
00000289 837D1000 cmp dword ptr [ebp+10h],0 |
0000028D 741F je 2AEh |
0000028F FF7520 push dword ptr [ebp+20h] |
00000292 FF751C push dword ptr [ebp+1Ch] |
00000295 FF7518 push dword ptr [ebp+18h] |
00000298 FF7514 push dword ptr [ebp+14h] |
0000029B 8B4510 mov eax,[ebp+10h] |
0000029E 0500000040 add eax,40000000h |
000002A3 50 push eax |
000002A4 68EFEBEF00 push 0EFEBEFh |
000002A9 E852FEFFFF call 100h |
..\lib\kolibri.h-- 435: WriteText(-strlen(text)*6+width/2+x+1,height/2-3+y,0x80,0,text,strlen(text)); |
000002AE 8B7D08 mov edi,[ebp+8] |
000002B1 E887040000 call 73Dh |
000002B6 F7D8 neg eax |
000002B8 B906000000 mov ecx,6 |
000002BD F7E1 mul ecx |
000002BF 034518 add eax,[ebp+18h] |
000002C2 83D200 adc edx,0 |
000002C5 0FACD001 shrd eax,edx,1 |
000002C9 034520 add eax,[ebp+20h] |
000002CC 40 inc eax |
000002CD 50 push eax |
000002CE 8B4514 mov eax,[ebp+14h] |
000002D1 D1E8 shr eax,1 |
000002D3 83E803 sub eax,3 |
000002D6 03451C add eax,[ebp+1Ch] |
000002D9 50 push eax |
000002DA 6880000000 push 80h |
000002DF 6A00 push 0 |
000002E1 FF7508 push dword ptr [ebp+8] |
000002E4 8B7D08 mov edi,[ebp+8] |
000002E7 E851040000 call 73Dh |
000002EC 50 push eax |
000002ED E838FEFFFF call 12Ah |
000002F2 5D pop ebp |
000002F3 C21C00 ret 1Ch |
..\lib\kolibri.h-- 439: void PutImage(dword buf,w,h,x,y) |
000002F6 C8100000 enter 10h,0 |
..\lib\kolibri.h-- 442: EDI=buf; |
000002FA 8B7D18 mov edi,[ebp+18h] |
..\lib\kolibri.h-- 443: EAX = 7; |
000002FD 6A07 push 7 |
000002FF 58 pop eax |
..\lib\kolibri.h-- 444: EBX = buf; |
00000300 89FB mov ebx,edi |
..\lib\kolibri.h-- 445: ECX = w<<16+h; |
00000302 8B4D14 mov ecx,[ebp+14h] |
00000305 C1E110 shl ecx,10h |
00000308 034D10 add ecx,[ebp+10h] |
..\lib\kolibri.h-- 446: EDX = x<<16+y+skin_width; |
0000030B 8B550C mov edx,[ebp+0Ch] |
0000030E C1E210 shl edx,10h |
00000311 035508 add edx,[ebp+8] |
00000314 031584070000 add edx,[784h] |
..\lib\kolibri.h-- 447: $int 0x40 |
0000031A CD40 int 40h |
0000031C C9 leave |
0000031D C21400 ret 14h |
..\lib\kolibri.h-- 451: void copystr(dword s,d) |
00000320 55 push ebp |
00000321 89E5 mov ebp,esp |
..\lib\kolibri.h-- 453: $mov esi,s |
00000323 8B750C mov esi,[ebp+0Ch] |
..\lib\kolibri.h-- 454: $mov edi,d |
00000326 8B7D08 mov edi,[ebp+8] |
..\lib\kolibri.h-- 455: $cld |
00000329 FC cld |
..\lib\kolibri.h-- 457: $lodsb |
0000032A AC lodsb |
..\lib\kolibri.h-- 458: $stosb |
0000032B AA stosb |
..\lib\kolibri.h-- 459: $test al,al |
0000032C 84C0 test al,al |
..\lib\kolibri.h-- 460: $jnz l1 |
0000032E 75FA jne 32Ah |
00000330 5D pop ebp |
00000331 C20800 ret 8 |
..\lib\kolibri.h-- 464: int pos,razr,backup,j=0,chislo; |
00000334 00000000 dd 0 |
..\lib\kolibri.h-- 465: char buffer[11]=""; |
00000338 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
use_library.h-- 2: dword edit_box_draw = #aEdit_box_draw; |
00000344 5C030000 dd 35Ch |
use_library.h-- 3: dword edit_box_key = #aEdit_box_key; |
00000348 66030000 dd 366h |
use_library.h-- 4: dword edit_box_mouse = #aEdit_box_mouse; |
0000034C 74030000 dd 374h |
use_library.h-- 5: dword version_ed = #aVersion_ed; |
00000350 84030000 dd 384h |
use_library.h-- 28: dword am__ = 0x0; |
00000354 00000000 dd 0 |
use_library.h-- 29: dword bm__ = 0x0; |
00000358 00000000 dd 0 |
use_library.h-- 31: char aEdit_box_draw[9] = "edit_box\0"; |
0000035C 656469745F626F780000 db 'edit_box',0,0 |
use_library.h-- 32: char aEdit_box_key[13] = "edit_box_key\0"; |
00000366 656469745F626F785F6B6579 db 'edit_box_key' |
00000372 0000 db 0,0 |
use_library.h-- 33: char aEdit_box_mouse[15] = "edit_box_mouse\0"; |
00000374 656469745F626F785F6D6F75 db 'edit_box_mou' |
00000380 73650000 db 'se',0,0 |
use_library.h-- 34: char aVersion_ed[11] = "version_ed\0"; |
00000384 76657273696F6E5F65640000 db 'version_ed',0,0 |
use_library.h-- 36: char aCheck_box_draw [15] = "check_box_draw\0"; |
00000390 636865636B5F626F785F6472 db 'check_box_dr' |
0000039C 61770000 db 'aw',0,0 |
use_library.h-- 37: char aCheck_box_mouse [16] = "check_box_mouse\0"; |
000003A0 636865636B5F626F785F6D6F db 'check_box_mo' |
000003AC 7573650000 db 'use',0,0 |
use_library.h-- 38: char aVersion_ch [11] = "version_ch\0"; |
000003B1 76657273696F6E5F63680000 db 'version_ch',0,0 |
use_library.h-- 40: char aOption_box_draw [16] = "option_box_draw\0"; |
000003BD 6F7074696F6E5F626F785F64 db 'option_box_d' |
000003C9 7261770000 db 'raw',0,0 |
use_library.h-- 41: char aOption_box_mouse[17] = "option_box_mouse\0"; |
000003CE 6F7074696F6E5F626F785F6D db 'option_box_m' |
000003DA 6F7573650000 db 'ouse',0,0 |
use_library.h-- 42: char aVersion_op [11] = "version_op\0" ; |
000003E0 76657273696F6E5F6F700000 db 'version_op',0,0 |
use_library.h-- 65: $mov eax,40 |
000003EC B828000000 mov eax,28h |
use_library.h-- 66: $mov ebx,0x27 |
000003F1 BB27000000 mov ebx,27h |
use_library.h-- 67: $int 0x40 |
000003F6 CD40 int 40h |
use_library.h-- 69: $mov eax, 68 |
000003F8 B844000000 mov eax,44h |
use_library.h-- 70: $mov ebx, 19 |
000003FD BB13000000 mov ebx,13h |
use_library.h-- 71: ECX=#way_of_ini; |
00000402 B946040000 mov ecx,446h |
use_library.h-- 72: $int 0x40 |
00000407 CD40 int 40h |
use_library.h-- 73: $test eax, eax |
00000409 85C0 test eax,eax |
use_library.h-- 74: $jz exit |
0000040B 7435 je 442h |
use_library.h-- 77: $mov edx,eax |
0000040D 89C2 mov edx,eax |
use_library.h-- 78: ESI=#edit_box_draw; |
0000040F BE44030000 mov esi,344h |
use_library.h-- 80: $lodsd |
00000414 AD lodsd |
use_library.h-- 81: $test eax,eax |
00000415 85C0 test eax,eax |
use_library.h-- 82: $jz import_done |
00000417 7426 je 43Fh |
use_library.h-- 83: $push edx |
00000419 52 push edx |
use_library.h-- 85: $mov ebx,DSDWORD[EDX] |
0000041A 8B1A mov ebx,[edx] |
use_library.h-- 86: $test ebx, ebx |
0000041C 85DB test ebx,ebx |
use_library.h-- 87: $jz exit |
0000041E 7422 je 442h |
use_library.h-- 88: $push eax |
00000420 50 push eax |
use_library.h-- 90: $mov cl,DSBYTE[EAX]; |
00000421 8A08 mov cl,[eax] |
use_library.h-- 91: $cmp cl,DSBYTE[EBX]; |
00000423 3A0B cmp cl,[ebx] |
use_library.h-- 92: $jnz import_find_next |
00000425 7508 jne 42Fh |
use_library.h-- 93: $test cl,cl |
00000427 84C9 test cl,cl |
use_library.h-- 94: $jz import_found |
00000429 740A je 435h |
use_library.h-- 95: $inc eax |
0000042B 40 inc eax |
use_library.h-- 96: $inc ebx |
0000042C 43 inc ebx |
use_library.h-- 97: $jmp nex1 |
0000042D EBF2 jmp short 421h |
use_library.h-- 99: $pop eax |
0000042F 58 pop eax |
use_library.h-- 100: $add edx, 8 |
00000430 83C208 add edx,8 |
use_library.h-- 101: $jmp import_find |
00000433 EBE5 jmp short 41Ah |
use_library.h-- 103: $pop eax |
00000435 58 pop eax |
use_library.h-- 104: $mov eax,DSDWORD[edx+4] |
00000436 8B4204 mov eax,[edx+4] |
use_library.h-- 105: $mov DSDWORD[esi-4],eax |
00000439 8946FC mov [esi-4],eax |
use_library.h-- 106: $pop edx |
0000043C 5A pop edx |
use_library.h-- 107: $jmp import_loop |
0000043D EBD5 jmp short 414h |
use_library.h-- 109: return 0; |
0000043F 31C0 xor eax,eax |
00000441 C3 ret |
use_library.h-- 111: return -1; |
00000442 83C8FF or eax,0FFFFFFFFh |
00000445 C3 ret |
EditBox2.c-- 13: char way_of_ini[250] = "/sys/lib/box_lib.obj",NULL; //ᮤ¥à¦¨¬®¥ EditBox'a |
00000446 2F7379732F6C69622F626F78 db '/sys/lib/box' |
00000452 5F6C69622E6F626A00000000 db '_lib.obj',0,0,0,0 |
0000045E 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
0000046A 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
00000476 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
00000482 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
0000048E 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
0000049A 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
000004A6 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
000004B2 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
000004BE 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
000004CA 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
000004D6 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
000004E2 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
000004EE 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
000004FA 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
00000506 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
00000512 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
0000051E 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
0000052A 000000000000000000000000 db 0,0,0,0,0,0,0,0,0,0,0,0 |
00000536 00000000000000000000 db 0,0,0,0,0,0,0,0,0,0 |
EditBox2.c-- 15: edit_box edit1= {250,14,35,0xffffff,0x6f9480,0,0xAABBCC,0,248,#way_of_ini,2,20,20}; |
00000540 FA0000000E00000023000000 dd 0FAh,0Eh,23h |
0000054C FFFFFF0080946F0000000000 dd 0FFFFFFh,6F9480h,0 |
00000558 CCBBAA0000000000F8000000 dd 0AABBCCh,0,0F8h |
00000564 460400000200000014000000 dd 446h,2,14h |
00000570 140000000000000000000000 dd 14h,0,0 |
0000057C 000000000000000000000000 dd 0,0,0 |
EditBox2.c-- 39: void main() |
00000588 C8040000 enter 4,0 |
EditBox2.c-- 42: load_dll(); |
0000058C E85BFEFFFF call 3ECh |
EditBox2.c-- 44: draw_window(); |
00000591 E868000000 call 5FEh |
EditBox2.c-- 47: switch(WaitEvent()) |
00000596 E8B5010000 call 750h |
0000059B 83F801 cmp eax,1 |
0000059E 0F8441000000 jz 5E5h |
000005A4 83F802 cmp eax,2 |
000005A7 0F8423000000 jz 5D0h |
000005AD 83F803 cmp eax,3 |
000005B0 0F8534000000 jnz 5EAh |
EditBox2.c-- 51: id=GetButtonID(); |
000005B6 E8B0010000 call 76Bh |
000005BB 8845FC mov [ebp-4],al |
EditBox2.c-- 52: IF (id==1) || (id==2) ExitProcess(); |
000005BE 3C01 cmp al,1 |
000005C0 7404 je 5C6h |
000005C2 3C02 cmp al,2 |
000005C4 7505 jne 5CBh |
000005C6 E88B010000 call 756h |
EditBox2.c-- 53: break; |
000005CB E91A000000 jmp 5EAh |
EditBox2.c-- 56: GetKey(); |
000005D0 E887010000 call 75Ch |
EditBox2.c-- 57: edit_box_key stdcall (#edit1); |
000005D5 6840050000 push 540h |
000005DA FF1548030000 call dword ptr [348h] |
EditBox2.c-- 58: break; |
000005E0 E905000000 jmp 5EAh |
EditBox2.c-- 60: case evReDraw: draw_window(); break; |
000005E5 E814000000 call 5FEh |
EditBox2.c-- 65: edit_box_mouse stdcall (#edit1); |
000005EA 6840050000 push 540h |
000005EF FF154C030000 call dword ptr [34Ch] |
000005F5 EB9F jmp short 596h |
EditBox2.c-- 69: ExitProcess(); |
000005F7 E85A010000 call 756h |
000005FC C9 leave |
000005FD C3 ret |
EditBox2.c-- 74: WindowRedrawStatus(1); |
000005FE 6A01 push 1 |
00000600 E89CFAFFFF call 0A1h |
EditBox2.c-- 75: skin_width = GetSkinWidth(); |
00000605 E858010000 call 762h |
0000060A A384070000 mov [784h],eax |
EditBox2.c-- 76: DefineAndDrawWindow(400,200,280,200,0x04,0x00E4DFE1,0,0,0); DrawTitle("Extended EditBox in C--"); |
0000060F 6890010000 push 190h |
00000614 68C8000000 push 0C8h |
00000619 6818010000 push 118h |
0000061E 68C8000000 push 0C8h |
00000623 6A04 push 4 |
00000625 68E1DFE400 push 0E4DFE1h |
0000062A 6A00 push 0 |
0000062C 6A00 push 0 |
0000062E 6A00 push 0 |
00000630 E87BFAFFFF call 0B0h |
00000635 B9BA060000 mov ecx,6BAh |
0000063A E83B010000 call 77Ah |
EditBox2.c-- 77: Form.getme(); |
0000063F 68E6090000 push 9E6h |
00000644 E846FAFFFF call 8Fh |
EditBox2.c-- 79: WriteText(30,40,0x80,0," ¨¯à®á⥩訩 ¯à¨¬¥à EditBox'a --",0); |
00000649 6A1E push 1Eh |
0000064B 6A28 push 28h |
0000064D 6880000000 push 80h |
00000652 6A00 push 0 |
00000654 68D2060000 push 6D2h |
00000659 6A00 push 0 |
0000065B E8CAFAFFFF call 12Ah |
EditBox2.c-- 80: WriteText(30,50,0x80,0,"® ¥£® ¬®¦® ¥¬®£® ãá«®¦¨âì á 楫ìî",0); |
00000660 6A1E push 1Eh |
00000662 6A32 push 32h |
00000664 6880000000 push 80h |
00000669 6A00 push 0 |
0000066B 68F8060000 push 6F8h |
00000670 6A00 push 0 |
00000672 E8B3FAFFFF call 12Ah |
EditBox2.c-- 81: WriteText(30,60,0x80,0,"㬥ìè¥¨ï ¯¥à¥à¨á®¢ª¨.",0); |
00000677 6A1E push 1Eh |
00000679 6A3C push 3Ch |
0000067B 6880000000 push 80h |
00000680 6A00 push 0 |
00000682 681F070000 push 71Fh |
00000687 6A00 push 0 |
00000689 E89CFAFFFF call 12Ah |
EditBox2.c-- 83: DrawFlatButton(100,105,70,22,2,0xD7D7D7,"Close"); |
0000068E 6A64 push 64h |
00000690 6A69 push 69h |
00000692 6A46 push 46h |
00000694 6A16 push 16h |
00000696 6A02 push 2 |
00000698 68D7D7D700 push 0D7D7D7h |
0000069D 6837070000 push 737h |
000006A2 E832FBFFFF call 1D9h |
EditBox2.c-- 88: edit_box_draw stdcall (#edit1); |
000006A7 6840050000 push 540h |
000006AC FF1544030000 call dword ptr [344h] |
EditBox2.c-- 92: WindowRedrawStatus(2); |
000006B2 6A02 push 2 |
000006B4 E8E8F9FFFF call 0A1h |
000006B9 C3 ret |
000006BA 457874656E64656420456469 db 'Extended Edi' |
000006C6 74426F7820696E20432D2D00 db 'tBox in C--',0 |
000006D2 8DA0A8AFE0AEE1E2A5A9E8A8 db ' ¨¯à®á⥩è¨' |
000006DE A920AFE0A8ACA5E020456469 db '© ¯à¨¬¥à Edi' |
000006EA 74426F78276120ADA020912D db 'tBox'a -' |
000006F6 2D008DAE20A5A3AE20ACAEA6 db '-',0,'® ¥£® ¬®¦' |
00000702 ADAE20ADA5ACADAEA3AE20E3 db '® ¥¬®£® ã' |
0000070E E1ABAEA6ADA8E2EC20E120E6 db 'á«®¦¨âì á æ' |
0000071A A5ABECEE00E3ACA5ADECE8A5 db '¥«ìî',0,'㬥ìè¥' |
00000726 ADA8EF20AFA5E0A5E0A8E1AE db '¨ï ¯¥à¥à¨á®' |
00000732 A2AAA82E00436C6F736500 db '¢ª¨.',0,'Close',0 |
..\lib\kolibri.h-- 287: ECX=0; |
0000073D 31C9 xor ecx,ecx |
..\lib\kolibri.h-- 288: EAX=0; |
0000073F 89C8 mov eax,ecx |
..\lib\kolibri.h-- 289: ECX--; |
00000741 49 dec ecx |
..\lib\kolibri.h-- 290: $REPNE $SCASB |
00000742 F2AE repne scasb |
..\lib\kolibri.h-- 291: EAX=EAX-2-ECX; |
00000744 83E802 sub eax,2 |
00000747 29C8 sub eax,ecx |
00000749 C3 ret |
..\lib\kolibri.h-- 215: EAX = 13; |
0000074A 6A0D push 0Dh |
0000074C 58 pop eax |
..\lib\kolibri.h-- 216: $int 0x40 |
0000074D CD40 int 40h |
..\lib\kolibri.h-- 217: #codesize |
0000074F C3 ret |
..\lib\kolibri.h-- 156: EAX = 10; // wait here for event |
00000750 6A0A push 0Ah |
00000752 58 pop eax |
..\lib\kolibri.h-- 157: $int 0x40 |
00000753 CD40 int 40h |
00000755 C3 ret |
..\lib\kolibri.h-- 161: EAX = -1; // close this program |
00000756 83C8FF or eax,0FFFFFFFFh |
..\lib\kolibri.h-- 162: $int 0x40 |
00000759 CD40 int 40h |
0000075B C3 ret |
..\lib\kolibri.h-- 172: EAX = 2; // just read this key from buffer |
0000075C 6A02 push 2 |
0000075E 58 pop eax |
..\lib\kolibri.h-- 173: $int 0x40 |
0000075F CD40 int 40h |
00000761 C3 ret |
..\lib\kolibri.h-- 249: EAX = 48; |
00000762 6A30 push 30h |
00000764 58 pop eax |
..\lib\kolibri.h-- 250: EBX = 4; |
00000765 6A04 push 4 |
00000767 5B pop ebx |
..\lib\kolibri.h-- 251: $int 0x40 |
00000768 CD40 int 40h |
0000076A C3 ret |
..\lib\kolibri.h-- 184: EAX = 17; // Get ID |
0000076B 6A11 push 11h |
0000076D 58 pop eax |
..\lib\kolibri.h-- 185: $int 0x40 |
0000076E CD40 int 40h |
..\lib\kolibri.h-- 186: EAX = EAX >> 8; |
00000770 C1E808 shr eax,8 |
00000773 C3 ret |
..\lib\kolibri.h-- 151: EAX = 8; |
00000774 6A08 push 8 |
00000776 58 pop eax |
..\lib\kolibri.h-- 152: $int 0x40 |
00000777 CD40 int 40h |
00000779 C3 ret |
..\lib\kolibri.h-- 242: EAX = 71; |
0000077A 6A47 push 47h |
0000077C 58 pop eax |
..\lib\kolibri.h-- 243: EBX = 1; |
0000077D 31DB xor ebx,ebx |
0000077F 43 inc ebx |
..\lib\kolibri.h-- 244: $int 0x40; |
00000780 CD40 int 40h |
00000782 C3 ret |
/programs/develop/libraries/box_lib/C--/trunk/compile.bat |
---|
0,0 → 1,5 |
C-- EditBox2.c-- |
del EditBox2.kex |
rename EditBox2 EditBox2.kex |
rename EditBox2.com EditBox2.kex |
pause |
/programs/develop/libraries/box_lib/C--/trunk/use_library.h-- |
---|
0,0 → 1,112 |
//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 |
//dword |
//dword |
//dword |
//dword |
//dword |
//$edit_box_draw dword aEdit_box_draw |
//$edit_box_key dword aEdit_box_key |
//$edit_box_mouse dword aEdit_box_mouse |
//$version_ed dword aVersion_ed |
//$check_box_draw dword aCheck_box_draw |
//$check_box_mouse dword aCheck_box_mouse |
//$version_ch dword aVersion_ch |
//$option_box_draw dword aOption_box_draw |
//$option_box_mouse dword aOption_box_mouse |
//$version_op dword aVersion_op |
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; |
}; |
//void Edit_box_draw(dword edit_b) |
//{ |
// $ PUSH dword edit_b |
// $ CALL dword [edit_box_draw] |
//} |
//struct load_dll{ |
// dword way_of_ini, myimport; |
// void get(); |
//}; |
int load_dll(EAX) |
{ |
//set mask |
$mov eax,40 |
$mov ebx,0x27 |
$int 0x40 |
// load DLL |
$mov eax, 68 |
$mov ebx, 19 |
ECX=#way_of_ini; |
$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; |
} |
/programs/develop/libraries/box_lib/C--/trunk/warning.txt |
---|
0,0 → 1,50 |
..\lib\kolibri.h--(43)> Warning! ECX has been used by compiler. |
..\lib\kolibri.h--(63)> Warning! ESI has been used by compiler. |
..\lib\kolibri.h--(64)> Warning! Register ESI already initialized. |
..\lib\kolibri.h--(72)> Warning! ESI has been used by compiler. |
..\lib\kolibri.h--(73)> Warning! Register ESI already initialized. |
..\lib\kolibri.h--(126)> Warning! EBX has been used by compiler. |
..\lib\kolibri.h--(435)> Warning! Expansion variable. |
..\lib\kolibri.h--(435)> Warning! ECX has been used by compiler. |
..\lib\kolibri.h--(444)> Warning! Register EBX same as EDI. |
..\lib\kolibri.h--(439)> Warning! Local variable 'i' possible not used. |
..\lib\kolibri.h--(439)> Warning! Local variable 'r' possible not used. |
..\lib\kolibri.h--(439)> Warning! Local variable 'g' possible not used. |
..\lib\kolibri.h--(439)> Warning! Local variable 'b' possible not used. |
EditBox2.c--(42)> Warning! Missing parameter in function . |
EditBox2.c--(52)> Warning! Register AL already initialized. |
EditBox2.c--(52)> Warning! Register AL already initialized. |
EditBox2.c--(55)> Warning! Short operator 'CASE' may be used. |
EditBox2.c--(60)> Warning! Short operator 'CASE' may be used. |
EditBox2.c--(47)> Warning! Short operator 'SWITCH' may be used. |
EditBox2.c--(53)> Warning! Short operator 'BREAK' may be used. |
EditBox2.c--(58)> Warning! Short operator 'BREAK' may be used. |
..\lib\kolibri.h--(288)> Warning! Register EAX same as ECX. |
..\lib\kolibri.h--(4)> Warning! Variable 'os_name' possible not used. |
..\lib\kolibri.h--(5)> Warning! Variable 'os_version' possible not used. |
..\lib\kolibri.h--(6)> Warning! Variable 'start_addr' possible not used. |
..\lib\kolibri.h--(9)> Warning! Variable 'x86esp_reg' possible not used. |
use_library.h--(5)> Warning! Variable 'version_ed' possible not used. |
..\lib\kolibri.h--(464)> Warning! Variable 'pos' possible not used. |
..\lib\kolibri.h--(464)> Warning! Variable 'razr' possible not used. |
..\lib\kolibri.h--(7)> Warning! Variable 'final_addr' possible not used. |
..\lib\kolibri.h--(464)> Warning! Variable 'j' possible not used. |
..\lib\kolibri.h--(8)> Warning! Variable 'alloc_mem' possible not used. |
..\lib\kolibri.h--(451)> Warning! Function 'copystr' possible not used. |
..\lib\kolibri.h--(464)> Warning! Variable 'backup' possible not used. |
..\lib\kolibri.h--(464)> Warning! Variable 'chislo' possible not used. |
..\lib\kolibri.h--(465)> Warning! Variable 'buffer' possible not used. |
use_library.h--(29)> Warning! Variable 'bm__' possible not used. |
use_library.h--(28)> Warning! Variable 'am__' possible not used. |
use_library.h--(42)> Warning! Variable 'aVersion_op' possible not used. |
use_library.h--(38)> Warning! Variable 'aVersion_ch' possible not used. |
use_library.h--(40)> Warning! Variable 'aOption_box_draw' possible not used. |
use_library.h--(41)> Warning! Variable 'aOption_box_mouse' possible not used. |
use_library.h--(36)> Warning! Variable 'aCheck_box_draw' possible not used. |
use_library.h--(37)> Warning! Variable 'aCheck_box_mouse' possible not used. |
..\lib\kolibri.h--(10)> Warning! Variable 'I_Param' possible not used. |
..\lib\kolibri.h--(439)> Warning! Function 'PutImage' possible not used. |
EditBox2.c--(13)> Warning! Variable 'NULL' possible not used. |
..\lib\kolibri.h--(11)> Warning! Variable 'I_Icon' possible not used. |
..\lib\kolibri.h--(510)> Warning! Structure 'CopyFile_f' possible not used. |
..\lib\kolibri.h--(511)> Warning! Structure 'CopyFile_atr' possible not used. |
/programs/develop/libraries/box_lib/C--/trunk |
---|
Property changes: |
Added: tsvn:logminsize |
+5 |
\ No newline at end of property |
/programs/develop/libraries/box_lib/C-- |
---|
Property changes: |
Added: tsvn:logminsize |
+5 |
\ No newline at end of property |
/programs/develop/libraries/box_lib/trunk/box_lib.asm |
---|
0,0 → 1,67 |
;Libray from Editbox |
; SEE YOU File FAQ.txt and HISTORY. Good Like! |
;Last Change 13/02/2009 |
;;;;;;;;;;;;;;;;;; |
format MS COFF |
public EXPORTS |
section '.flat' code readable align 16 |
include 'macros.inc' |
include 'editbox.mac' ;¬ ªà®á ª®â®àë© ¤®«¦¥ ®¡«¥£ç¨âì ¦¨§ì :) á¯¥æ¨ «ì® ¤«ï editbox |
include 'checkbox.mac' ;¬ ªà®á ᮤ¥à¦¨â ॠ«¨§ æ¨î checkbox |
include 'optionbox.mac' ;¬ ªà®á ᮤ¥à¦¨â ॠ«¨§ æ¨î optionbox |
;---------------------------------------------------- |
;EditBox |
;---------------------------------------------------- |
use_editbox_draw ;¬ ªà®á à ááªàë¢ ¥â äãªæ¨î ®â®¡à ¦¥¨ï ¡®ªá . |
use_editbox_key ;¬ ªà®á à ááªàë¢ ¥â äãªæ¨î ®¡à ¡®âª¨ ª« ¢¨èì. |
use_editbox_mouse ;¬ ªà®á à ááªàë¢ ¥â äãªæ¨î ®¡à ¡®âª¨ ¬ëè¨. |
;---------------------------------------------------- |
;CheckBox |
;---------------------------------------------------- |
use_checkbox_draw ;¬ ªà®á à ááªàë¢ ¥â äãªæ¨î ®â®¡à ¦¥¨ï ¡®ªá . |
use_checkbox_mouse ;¬ ªà®á à ááªàë¢ ¥â äãªæ¨î ®¡à ¡®âª¨ ¬ëè¨. |
;-------------------------------------------------- |
;radiobutton Group |
;-------------------------------------------------- |
use_optionbox_driver ;¬ ªà®áë ª®â®àë¥ ã¯à ¢«ïîâ à ¡®â®© ¡®ªá ) |
use_optionbox_draw ;¬ ªà®á à ááªàë¢ ¥â äãªæ¨î ®â®¡à ¦¥¨ï ¡®ªá . |
use_optionbox_mouse ;¬ ªà®á à ááªàë¢ ¥â äãªæ¨î ®¡à ¡®âª¨ ¬ëè¨. |
align 16 |
EXPORTS: |
dd sz_edit_box, edit_box |
dd sz_edit_box_key, edit_box_key |
dd sz_edit_box_mouse, edit_box_mouse |
dd szVersion_ed, 0x00000001 |
dd sz_check_box_draw, check_box_draw |
dd sz_check_box_mouse, check_box_mouse |
dd szVersion_ch, 0x00000001 |
dd sz_option_box_draw, option_box_draw |
dd sz_option_box_mouse, option_box_mouse |
dd szVersion_op, 0x00000001 |
dd 0,0 |
sz_edit_box db 'edit_box',0 |
sz_edit_box_key db 'edit_box_key',0 |
sz_edit_box_mouse db 'edit_box_mouse',0 |
szVersion_ed db 'version_ed',0 |
sz_check_box_draw db 'check_box_draw',0 |
sz_check_box_mouse db 'check_box_mouse',0 |
szVersion_ch db 'version_ch',0 |
sz_option_box_draw db 'option_box_draw',0 |
sz_option_box_mouse db 'option_box_mouse',0 |
szVersion_op db 'version_op',0 |
;;;;;;;;;;; |
;;Data |
;;;;;;;;;;; |
align 16 |
mouse_flag dd 0x0 |
/programs/develop/libraries/box_lib/trunk/checkbox.mac |
---|
0,0 → 1,148 |
;ôàéë ñîçäàí 13.02.2009 <Lrz> Íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
;Ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
;Checkbox |
macro use_checkbox_draw |
{ |
check_box_draw: |
;ch_struc_size=24 |
ch_left equ [edi] ;êîîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî õ |
ch_top equ [edi+2] ;êîîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî ó |
ch_text_margin equ [edi+4] ;=4 ðàññòîÿíèå îò ïðÿìîóãîëüíèêà ÷åê áîêñà äî íàäïèñè |
ch_size equ [edi+8] ;12 ðàçìåð êâàäðàòà ÷åê áîêñà |
ch_color equ [edi+12] |
ch_border_color equ [edi+16] ; or [edi+4] ;öâåò ðàìêè checkbox åå ìîæíî çàäàòü ñàìîñòîÿòåëüíî |
ch_text_color equ [edi+20];[edi+4] ;öâåò òåêñòà |
ch_text_ptr equ [edi+24] ;óêàçàòåëü íà íà÷àëî òåêñòîâîé ñòðîêè |
ch_text_length equ [edi+28] |
ch_flags equ [edi+32] ;ôëàãè |
pusha ;ñîõðàíèì âñå ðåãèñòðû |
mov edi,dword [esp+36] |
mov eax,13 |
movzx ebx,word ch_left |
shl ebx,16 |
add ebx,ch_size |
mov ecx,ch_top |
shl ecx,16 |
add ecx,dword ch_size |
mov edx,dword ch_border_color |
mcall ;ðèñóåì ðàìêó |
mov edx,dword ch_color |
add ebx,1 shl 16 - 2 |
add ecx,1 shl 16 - 2 |
mcall ;çàêðàøèâàåì âíóòðåííîñòè ÷åêáîêñà |
test dword ch_flags,2 ;äîñòàòü çíà÷åíèå áèòà èç ïåðåìåííîé è ïîìåñòèòü â ôëàã CF |
jz @f ;â åñëè CF=1, òî âûïîëíèì ñëåäóþùóþ ïðîöåäóðó èíà÷å ïåðåéòè íà íèæíþþ @@ |
call check_box_draw_ch ;íàðèñîâàòü âêëþ÷åííûé ÷åê áîêñ |
@@: |
;---------------------------- |
;ðàñ÷åò êóäà áóäåò ïðîèçâåäåí âûâîä òåêñòà |
;---------------------------- |
movzx ebx,word ch_left ;çàãðóçèòü çíà÷åíèå õ äëÿ ÷åê áîêñà |
add ebx,dword ch_size |
add ebx,dword ch_text_margin;äîáàâèòü ðàçìåð ñòîðîíû è ðàññòîÿíèå íà êîòîðîì íà÷íåòñÿ âûâîä òåêñòà |
shl ebx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
mov bx,word ch_top ;çàãðóçèì çíà÷åíèå ïî y |
add ebx,ch_size |
mov ecx,dword ch_text_color ;çàãðóçèì öâåò íàäïèñè + flags |
sub ebx,7 ;äîáàâèì çíà÷åíèå äëèíû ñòîðîíû -9+2 |
mov edx,dword ch_text_ptr ;óêàæåì àäðåñ îò êóäà íóæíî âûâîäèòü ñòðîêó |
mov esi,dword ch_text_length |
;âíåñåì â eax çíà÷åíèå âûâîäà íàäïèñè íà êàíâó |
mov eax,4 |
mcall ;Âûâîä |
popa ;âîññòàíîâèòü çíà÷åíèÿ ðåãèñòðîâ èç ñòåêà |
ret 4 ;âûéäåì èç ïðîöåäóðû |
check_box_clear_ch: ;î÷èñòêà ÷åê áîêñà |
mov edx,dword ch_color ;öâåò âíóòðè ÷åê áîêñà |
jmp @f ;áåçóñëîâíûé ïðûæîê íà íèæíþþ ìåòêó @@ |
check_box_draw_ch: ;íàðèñîâàòü âêëþ÷åííûé ÷åê áîêñ |
mov edx,dword ch_border_color ;çàãðóçèòü öâåò |
@@: |
movzx ebx,word ch_left ;çàãðóçèòü êîîðäèíàòó ïî õ |
mov eax,dword ch_size |
push ax |
shr eax,2 |
add ebx,eax ;äîáàâèòü (ñòîðîíà ïðÿìîóãîëüíèêà/3) |
shl ebx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
pop bx |
shr bx,1 ;çàãðóçèòü (ñòîðîíà ïðÿìîóãîëüíèêà/2) |
mov bp,bx ;ñîõðàíèì ðåãèñòð bx â ðåãèñòðå óêàçàòåëÿ áàçû |
movzx ecx,word ch_top ;çàãðóçèòü êîîðäèíàòó ïî ó |
mov eax,dword ch_size |
shr eax,2 |
add ecx,eax ;äîáàâèòü (ñòîðîíà ïðÿìîóãîëüíèêà/4) |
shl ecx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
mov cx,bp ;çàãðóçèì çíà÷åíèÿ ðåãèñòðà óêàçàòåëÿ áàçû â cx |
mov eax,13 ;â eax - çíà÷åíèÿ ôóíêöèè äëÿ âûâîäà ïîëîñû ò.å. ïî ñóòè ïðÿìîóãîëüíèêà, êîòîðûé îòîáðàæàåò âêëþ÷åííûé êîìïîíåíò ÷åê áîêñ |
mcall ;âûâîä |
ret ;âûéòè èç ïðîöåäóðû |
} |
macro use_checkbox_mouse |
{ |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;Îáðàáîò÷èê mouse |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
check_box_mouse: ;îáðàáîòêà ìûøè |
pusha |
mov edi,dword [esp+36] |
mov eax,37 ;áóäåì ÷òî òî äåëàòü åñëè ó íàñ ÷òî - íèòü íàæàòî |
mov ebx,2 ;âíåñòè â ðåãèñòð çíà÷åíèå 2 |
mcall ;ïðîâåðêà íå íàæàë ëè ïîëüçîâàòåëü êíîïêó ìûøêè |
test eax,eax ;ïðîâåðêà åñëè ó íàñ â eax=0, òî óñòàíîâèì ôëàã è âûéäåì |
jnz @f ;ïåðåéòè íà íèæíþþ ìåòêó @@ |
btr dword ch_flags,2 ;èçâëå÷åíèå çíà÷åíèÿ çàäàííîãî áèòà â ôëàã cf è èçìåíåíèå åãî çíà÷åíèÿ íà íóëåâîå. |
jmp check_box_mouse_end |
@@: |
bts dword ch_flags,2 ;ïðîâåðêà ôëàãà ò.å. ïåðåíîñ â cf çíà÷åíèå áèòà è óñòàíîâêà áèòà â ñîñòîÿíèå âêëþ÷åíî |
jc check_box_mouse_end ;åñëè CF=1 òî ïåðåéòè â êîíåö ò.å. ýòî âûõîä |
mov esi,dword ch_text_length ;çàãðóçèòü êîë-âî ñèìâîëîâ â òåêñòîâîé ñòðîêå |
;Óìíîæåíèå íà 6 Áûñòðîå óìíîæåíèå ìîæíî âîñïîëüçîâàòüñÿ ëþáûì ìç ìåòîäîâ, íî íà ñòàðûõ Ïðîöåññîðàõ (386,486,P1)áûñòðåå áóäåò ñ èíñòðóêöèåé Lea |
;lea esi,[eax*2+eax] |
;shl eax,1 |
imul esi,6 ; èëè ìîæíî è òàê óìíîæèòü íà 6 |
add esi,dword ch_text_margin ;äîáàâèòü 3 - ðàññòîÿíèå îò ÷åê áîêñà äî íàäïèñè |
mov eax,37 ;ïîëó÷èì êîîðäèíàòû ìûøêè |
mov ebx,1 ;äîáàâèòü 1 |
mcall ;ïîëó÷èòü êîîðäèíàòû êóðñîðà îòíîñèòåëüíî îêíà |
movzx ebx,word ch_top ;çàãðóçèòü â bx çíà÷åíèå êîîðäèíàòû ó |
cmp ax,bx ;ñðàâíèòü ñ ñ êîîðäèíàòîé êóðñîðà |
jl check_box_mouse_end ;SF <> OF åñëè ìåíüøå |
add ebx,dword ch_size ;äîáàâèòü ðàçìåð |
cmp ax,bx ;ñðàâíèòü |
jg check_box_mouse_end ;ZF = 0 è SF = OF åñëè áîëüøå |
shr eax,16 ;ðàçäåëèì íà 65536 èëè ïðîñòî ñäâèíåì áèòû íà 16 çíà÷åíèé |
movzx ebx,word ch_left ;ïðîèçâåäåì àíàëîãè÷íîå ñðàâíåíèå |
cmp ax,bx ;ñðàâíèòü ðåãèñòðû |
jl check_box_mouse_end ;åñëè ìåíüøå |
add ebx,dword ch_size ;äîáàâèòü äëèíó ñòîðîíû ïðÿìîóãîëüíèêà |
add ebx,esi ;Ó÷åñòü â çíà÷åíèè ïî õ åùå è äëèíó íàäïèñè ê ÷åêáîêñó |
cmp ax,bx ;ñòðàâíèòü ðåãèñòðû |
jg check_box_mouse_end ;åñëè áîëüøå |
bts dword ch_flags,1 ;èçâëå÷åíèå çíà÷åíèÿ çàäàííîãî áèòà â ôëàã cf è èçìåíåíèå åãî çíà÷åíèÿ íà 1. |
jc @f ;CF=1 òî ïåðåéòè íà íèæíþþ @@ |
call check_box_draw_ch ;îòîáðàçèòü âêëþ÷åííûé ÷åê áîêñ |
; mov dword [esp+24],1 ;äàëüíåéøàÿ ïðîâåðêà ÷åê áîêñîâ áåñìûñëåíà, ïî ýòîìó â ñòåê, ãäå ðàñïîëàãàåòñÿ ecx ïîìåñòèòì 0 |
jmp check_box_mouse_end ;âûéòè |
@@: |
btr word ch_flags,1 ;èçâëå÷åíèå çíà÷åíèÿ çàäàííîãî áèòà â ôëàã cf è èçìåíåíèå åãî çíà÷åíèÿ íà íóëåâîå. |
call check_box_clear_ch ;âûêëþ÷èòü ÷åê áîêñ ò.å. íà ìåñòå çàêðàøåííîãî ïðÿìîóãîëüíèêà îòîáðàçèòü öâåò ôîíà. |
check_box_mouse_end: |
popa ;âîññòàíîâèòü ðåãèñòðû èç ñòåêà |
ret 4 ;âûéòè |
} |
/programs/develop/libraries/box_lib/trunk/config.inc |
---|
0,0 → 1,0 |
__CPU_type fix p5 |
/programs/develop/libraries/box_lib/trunk/editbox.mac |
---|
0,0 → 1,1397 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;Basic macros for use editbox ; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
macro use_editbox_draw |
{ |
edit_box: |
ed_width equ [edi] ;è¨à¨ ª®¬¯®¥â |
ed_left equ [edi+4] ;¯®«®¦¥¨¥ ¯® ®á¨ å |
ed_top equ [edi+8] ;¯®«®¦¥¨¥ ¯® ®á¨ ã |
ed_color equ [edi+12] ;梥â ä® ª®¬¯®¥â |
shift_color equ [edi+16] ;=0x6a9480 ¤«ï ¯à¨¬¥à ¢®§ì¥¬ ¦¥«¥ë© 梥⠡®ªá |
ed_focus_border_color equ [edi+20] ;梥â à ¬ª¨ ª®¬¯®¥â |
ed_blur_border_color equ [edi+24] ;梥⠥ ªâ¨¢®£® ª®¬¯®¥â |
ed_text_color equ [edi+28] ;梥â ⥪áâ |
ed_max equ [edi+32] ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦® ¬ ªá¨¬ «ì® ¢¢¥á⨠|
ed_text equ [edi+36] ;㪠§ â¥«ì ¡ãä¥à |
ed_flags equ [edi+40] ;ä« £¨ |
ed_size equ [edi+44] ;ª®«-¢® ᨬ¢®«®¢ |
ed_pos equ [edi+48] ;¯®§¨æ¨ï ªãàá®à |
ed_offset equ [edi+52] ;ᬥ饨¥ |
cl_curs_x equ [edi+56] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® å |
cl_curs_y equ [edi+60] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® ã |
ed_shift_pos equ [edi+64] ;¯®«®¦¥¨¥ ªãàá®à |
ed_shift_pos_old equ [edi+68] ;áâ ஥ ¯®«®¦¥¨¥ ªãàá®à |
ed_figure_only= 1000000000000000b ;®¤¨ ᨬ¢®«ë |
ed_always_focus= 100000000000000b |
ed_focus= 10b ;䮪ãá ¯à¨«®¦¥¨ï |
ed_shift_on= 1000b ;¥á«¨ ¥ ãáâ ®¢«¥ -§ ç¨â ¢¯¥à¢ë¥ ¦ â shift,¥á«¨ ¡ë« ãáâ ®¢«¥, § ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift |
ed_shift_on_off=1111111111110111b |
ed_shift= 100b ;¢ª«îç ¥âáï ¯à¨ ¦ ⨨ shift â.¥. ¥á«¨ ¦¨¬ î |
ed_shift_off= 1111111111111011b |
ed_shift_bac= 10000b ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥®£® shift â.¥. ¯à¨ ãáâ ®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥¨¥ |
ed_shift_bac_cl=1111111111101111b ;®ç¨á⪠¯à¨ 㤠«¥¨¨ ¢ë¤¥«¥¨ï |
ed_shift_cl= 1111111111100011b |
ed_shift_mcl= 1111111111111011b |
ed_left_fl= 100000b |
ed_right_fl= 1111111111011111b |
ed_offset_fl= 1000000b |
ed_offset_cl= 1111111110111111b |
ed_insert= 10000000b |
ed_insert_cl= 1111111101111111b |
ed_mouse_on = 100000000b |
ed_mous_adn_b= 100011000b |
ed_mouse_on_off=1111111011111111b |
ed_height=14 ; ¢ëá®â |
.draw: |
pushad |
;--- à¨á㥬 à ¬ªã --- |
mov edi,dword [esp+36] |
call .draw_border ; ãªæ¨ï áâ ¡¨«ì |
.draw_bg_cursor_text: |
;--- ¨§¬¥ï¥¬ ᬥ饨¥, ¥á«¨ ¤® --- |
call .check_offset ;¢ëç¨á«¥¨¥ ¯®§¨æ¨¨ ªãàá®à áâ ¡¨«ì |
;--- à¨á㥬 ¢ãâà¥îî ®¡« áâì --- |
call .draw_bg ; à¨á®¢ âì ¯àאַ㣮«ì¨ª à ¡®ç¥© ®¡« á⨠|
;---- à¨á㥬 ¢ë¤¥«¥¨¥, ¯® shift ¥á«¨ ¥áâì |
call .draw_shift |
.draw_cursor_text: |
;--- à¨á㥬 ªãàá®à --- |
;--- ¬®¦¥â ¥£® ¥ ¤® à¨á®¢ âì ---- |
test word ed_flags,ed_focus |
je @f |
call .draw_cursor |
@@: |
call .draw_text |
; ret |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;¡é¨© ¢ë室 ¨§ editbox ¤«ï ¢á¥å äãªæ¨© ¨ ¯®áâ ®¡à ¡®â稪®¢;; |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
.editbox_exit: |
popad |
ret 4 |
} |
macro use_editbox_key |
{ |
;========================================================== |
;=== ®¡à ¡®âª ª« ¢¨ âãàë ================================= |
;========================================================== |
edit_box_key: |
pushad |
mov edi,dword [esp+36] |
test word ed_flags,ed_focus ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬ |
je edit_box.editbox_exit |
test word ed_flags,ed_mouse_on |
jne edit_box.editbox_exit |
;஢¥àª ¦ â shift ? |
call edit_box_key.check_shift |
;---------------------------------------------------------- |
;--- ¯à®¢¥à塞, çâ® ¦ â® -------------------------------- |
;---------------------------------------------------------- |
use_key_process backspase,delete,left,right,home,end,insert |
;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
; £«ãèª ®¡à ¡®âªã ª« ¢¨è ¢¢¥àå ¨ ¢¨§ â.¥. ¯à¨ ®¡ à㦥¨¨ íâ¨å ª®¤®¢ ¯à®¨á室¨â ¢ë室 ¨§ ®¡à ¡®â稪 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
use_key_no_process up,down,esc,enter,tab,numl,capsl,scrolll |
;--- ¦ â ¤àã£ ï ª« ¢¨è --- |
;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;஢¥àª ãáâ ®¢«¥ «¨ ä« £ ¯à¨ ª®â®à®¬ 㦮 ¢ë¢®¤¨âì ⮫쪮 æ¨äàë ¢ 㦮¬ ¡®ªá¥ ¥á«¨ â ª®©¥®¡å®¤¨¬®á⨠¥â 㦮 § ª®¬¥â¨à®¢ âì ¬ ªà®á |
;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
use_key_figures_only |
;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;¯à®¢¥àª shift ¡ë« «¨ ¦ â |
;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
are_key_shift_press |
;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
; ¯à®¢¥à塞, 室¨âáï «¨ ªãàá®à ¢ ª®æ¥ + ¤ «ì¥©è ï ®¡à ¡®âª |
;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
are_key_cur_end |
;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;¡à ¡®âª ª« ¢¨è insert,delete.backspase,home,end,left,right |
;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
use_work_key |
} |
macro use_editbox_mouse |
{ |
;========================================================== |
;=== ®¡à ¡®âª ¬ëè¨ ======================================= |
;========================================================== |
;save for stdcall ebx,esi,edi,ebp |
edit_box_mouse: |
pushad |
mov edi,dword [esp+36] |
;debug |
;---------------------------------------------------------- |
;--- ¯®«ãç ¥¬ á®áâ®ï¨¥ ª®¯®ª ¬ëè¨ ----------------------- |
;---------------------------------------------------------- |
mcall 37,2 |
;---------------------------------------------------------- |
;--- ¯à®¢¥à塞 á®áâ®ï¨¥ ---------------------------------- |
;---------------------------------------------------------- |
test eax,1 |
jnz edit_box_mouse.mouse_left_button |
and word ed_flags,ed_mouse_on_off |
xor ebx,ebx |
mov dword [mouse_flag],ebx |
jmp edit_box.editbox_exit |
.mouse_left_button: |
;---------------------------------------------------------- |
;--- ¡«®ª¨à®¢ª ®â 䮪ãá¨à®¢ª¨ ¢ ¤àã£¨å ¡®ªá å ¯à¨ ¯®¯ ¤ ¨¨ ¨å ªãàá®à |
;---------------------------------------------------------- |
mov eax,dword [mouse_flag] |
test eax,eax |
jz @f |
cmp eax,edi |
je @f |
jmp edit_box_mouse._blur |
;---------------------------------------------------------- |
;--- ¯®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ ®â®á¨â¥«ì® 0 â.¥ ¢á¥© ®¡« á⨠íªà |
;---------------------------------------------------------- |
@@: mcall 37,1 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;ãªæ¨ï ®¡à ¡®âª¨ ¬ë誨 ¯®«ã票¥ ª®®à¤¨ â ¨ ¯à®¢¥àª ¨å + ¢ë¤¥«¥¨ï |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
use_work_mouse |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;¡é¨¥ äãªæ¨¨ ®¡à ¡®âª¨ |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
use_general_func |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;ãªæ¨¨ ¤«ï à ¡®âë á key |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
use_key_func |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;ãªæ¨¨ ¤«ï à ¡®âë á mouse |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
use_mouse_func |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;Bit mask from editbox |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
} |
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
;¨¦¥ à ᯮ«®¦¥ë äãªæ¨¨ ª®â®à묨 ॠ«¨§ã¥âáï ¢¥áì «£®à¨â¬ |
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
; ªà®á ¤«ï ¢ë¢®¤ ®á®¢ëå äãªæ¨© ª®â®àë¥ ¨á¯«ì§ãîâáï ¡®ªá®¬ |
macro use_general_func |
{ |
;debug_func |
;---------------------------------------------------------- |
;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ¢ë¤¥«¥®© ç á⨠----------------- |
;---------------------------------------------------------- |
edit_box.draw_shift: |
test word ed_flags,ed_shift_bac ;ãáâ ®¢ª ä« £ , ¢ë¤¥«¥®© ®¡« á⨠|
jz @f |
mov ebp,shift_color |
mov ebx,dword ed_shift_pos |
call edit_box_key.sh_cl_ |
@@: ret |
;---------------------------------------------------------- |
;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ⥪áâ -------------------------- |
;---------------------------------------------------------- |
edit_box.draw_text: |
;--- ¢ëç¨á«ï¥¬, ᪮«ìª® ¯®¬¥é ¥âáï ᨬ¢®«®¢ --- |
;--- çâ®¡ë ¬ãá®à ¥ à¨á®¢ âì --- |
call edit_box.get_n |
mov esi,ed_size |
mov ebx,ed_offset |
sub esi,ebx |
cmp eax,esi |
jae @F |
mov esi,eax ;çâ®¡ë ¥ ¢ë室¨âì § ¯à¥¤¥«ë íªà |
;--- à¨á㥬 ⥪áâ --- |
@@: mov eax,4 |
mov ebx,ed_left |
mov edx,ed_offset |
add ebx,2 |
shl ebx,16 |
add ebx,ed_top |
mov ecx,ed_text_color |
add ebx,4 |
add edx,ed_text |
mcall |
ret |
;---------------------------------------------------------- |
;--- ¯à®æ¥¤ãà ¯à®à¨á®¢ª¨ ä® ---------------------------- |
;¢å®¤ë¥ ¤ ë¥ |
;eax |
;edx - color |
;---------------------------------------------------------- |
;¢å®¤ ⮫쪮 梥â edx |
edit_box.draw_bg: |
mov ebx,ed_left |
add ebx,1 |
mov edx,ed_color |
shl ebx,16 |
add ebx,ed_width |
sub ebx,1 |
edit_box.draw_bg_eax: |
mov ecx,ed_top |
mov eax,13 |
add ecx,1 |
shl ecx,16 |
add ecx,ed_height |
dec ecx |
mcall |
ret |
;---------------------------------------------------------- |
;--- ¯à®æ¥¤ãà ¯®«ãç¥¨ï ª®«¨ç¥á⢠ᨬ¢®«®¢ ¢ ⥪ã饩 é¨à¨¥ ª®¬¯®¥â |
;---------------------------------------------------------- |
edit_box.get_n: |
mov eax,ed_width ;¯®«ã祬 è¨à¨ã ª®¬¯®¥â |
xor edx,edx ;१ã«ìâ â à ᯮ«®£ ¥âáï ¢ ¯ ॠedx:eax ¢ eax - ®áâ ⮪ |
sub eax,4 ;¢ëç⨬ 4 |
mov ebx,6 ;§ £à㧬¨ ¤¥«¨â¥«ì |
div ebx ;à §¬¤¥«¨¬ 6 |
ret |
;---------------------------------------------------------- |
;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï ªãàá®à -------------------------- |
;---------------------------------------------------------- |
;¢å®¤ë¥ ebp- 梥â |
edit_box.clear_cursor: |
mov edx,ebp |
mov ebx,cl_curs_x |
mov ecx,cl_curs_y |
jmp edit_box.draw_curs |
edit_box.draw_cursor: |
mov edx,ed_text_color |
mov ebx,ed_pos |
mov ecx,ed_offset |
sub ebx,ecx |
lea ebx,[ebx*2+ebx] |
shl ebx,1 |
;imul ebx,6 |
add ebx,ed_left |
mov ecx,ed_top |
inc ebx |
add ecx,2 |
mov ebp,ebx |
shl ebx,16 |
mov bx,bp |
mov ebp,ecx |
shl ecx,16 |
mov cx,bp |
add ecx,ed_height-4 |
mov cl_curs_x,ebx |
mov cl_curs_y,ecx |
edit_box.draw_curs: |
mcall 38 |
ret |
;---------------------------------------------------------- |
;--- ¯à®æ¥¤ãà à¨á®¢ ¨ï à ¬ª¨ ---------------------------- |
;---------------------------------------------------------- |
edit_box.draw_border: |
;--- 梥â à ¬ª¨ --- |
test word ed_flags,ed_focus |
mov edx,ed_focus_border_color |
jne @f |
mov edx,ed_blur_border_color |
@@: |
;--- ᢥàåã --- |
mov eax,38 |
mov ebx,ed_left |
mov ecx,ebx |
shl ebx,16 |
mov bx,cx |
add ebx,ed_width |
mov ecx,ed_top |
mov esi,ecx |
shl ecx,16 |
mov cx,si |
mcall |
;--- ᨧã --- |
mov esi,ecx |
add ecx,ed_height |
mov ebp,ecx |
shl ecx,16 |
mov cx,bp |
mcall |
;--- á«¥¢ --- |
mov cx,si |
mov ebp,ebx |
sub ebx,ed_width |
mcall |
;--- á¯à ¢ --- |
mov ebx,ebp |
shl ebx,16 |
mov bx,bp |
mcall |
ret |
;---------------------------------------------------------- |
;--- ¯à®¢¥àª , § 襫 «¨ ªãàá®à § £à ¨æë ¨, ¥á«¨ ¤®, --- |
;--- ¨§¬¥ï¥¬ ᬥ饨¥ ------------------------------------ |
;--- ¥á«¨ ᬥ饨¥ ¡ë«® ãáâ ®¢ª ä« £ ed_offset_cl ¨ ç¥ |
; ¥á«¨ ¨ç¥£® ¥ ¨§¬¥¨«®áì â® ¢ëáâ ¢«¥¨¥ ed_offset_fl |
; ¢ ®¡é¥© ¡¨â®¢®© ¬ àà¨æ¥ á®áâ®ï¨ï ª®¬¯®¥â®¢ word ed_flags |
;---------------------------------------------------------- |
edit_box.check_offset: |
pushad |
mov ecx,ed_pos |
mov ebx,ed_offset |
cmp ebx,ecx |
ja edit_box.sub_8 |
push ebx |
call edit_box.get_n ;¯®«ã稬 ª®«-¢® ᨬ¢®«®¢ ¢ ¯ ॠॣ¨áâ஢ edx:eax |
pop ebx |
mov edx,ebx |
add edx,eax ;ed_offset+width editbox |
inc edx ;¥®¡å®¤¨¬® ¤«ï ®¬ «ì®£® ¯®«®¦¥¨ï ªãàá®à ¢ ªà ©¥© «¥¢®© ¯®§¨æ¨¨ |
cmp edx,ecx |
ja @f |
mov edx,ed_size |
cmp edx,ecx |
je edit_box.add_end |
sub edx,ecx |
cmp edx,8 |
jbe edit_box.add_8 |
add ebx,8 |
jmp edit_box.chk_d |
edit_box.sub_8: cmp ecx,0 |
je edit_box.sub_min |
cmp ebx,8 |
jbe edit_box.sub_min |
sub ebx,8 ;ebx=ed_offset |
jmp edit_box.chk_d |
edit_box.sub_min: |
xor ebx,ebx |
jmp edit_box.chk_d |
edit_box.add_end:sub edx,eax |
mov ebx,edx |
jmp edit_box.chk_d |
edit_box.add_8: add ebx,edx |
edit_box.chk_d: mov ed_offset,ebx |
call edit_box.draw_bg |
and word ed_flags,ed_offset_cl |
edit_ex |
@@: |
or word ed_flags,ed_offset_fl |
edit_ex |
} |
macro use_key_func |
{ |
;¡à ¡®âª Shift ¤«ï áïâ¨ï ¢ë¤¥«¥¨ï ¥¨§¢¥á⮩ ®¡« á⨠|
edit_box_key.shift: ;;;;;;;SHIFT |
test word ed_flags,ed_shift |
je edit_box_key.f_exit |
@@: mov ebp,shift_color |
or word ed_flags,ed_shift_bac ;ãáâ ®¢ª ä« £ , ¢ë¤¥«¥®© ®¡« á⨠|
mov ebx,dword ed_shift_pos |
call edit_box_key.sh_cl_ |
jmp edit_box.draw_cursor_text |
;;;;;;;;;;;;;;;;;;;;; |
edit_box_key.f_exit: call edit_box.check_offset |
and word ed_flags,ed_shift_cl |
call edit_box_key.enable_null |
jmp edit_box.draw_cursor_text |
edit_box_key.sh_cl_: |
;;;;;;SHIFT end |
;®¡à ¡®âª ®ç¨á⪨, ¯à¨ «¥¢®¬ - ¯à ¢®¬ ¤¢¨¦¥¨¨ ¢ë¤¥«¥¨ï |
;¤«ï ®¡à ¡®âª¨ áïâ¨ï ¢ë¤¥«¥¨ï |
;¢å®¤ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos |
mov eax,dword ed_pos |
cmp eax,ebx |
jae edit_box_key.sh_n |
push eax ;¬¥ì襥 ¢ eax |
push ebx ;¡®«ì襥 |
jmp edit_box_key.sh_n1 |
;¥á«¨ ¨ ç¥ |
edit_box_key.sh_n: push ebx |
push eax |
edit_box_key.sh_n1: |
call edit_box.check_offset |
call edit_box.get_n |
mov edx,eax ;size of ed_box |
mov ecx,ed_offset |
add eax,ecx ;eax = w_off= ed_offset+width |
mov edx,eax ;save |
pop ebx ;¡®«ì襥 |
pop eax ;¬¥ì襥 |
cmp eax,ecx ;áà ¢¥¨¥ á ¬¥ì襣® á offset. |
jae edit_box_key.f_f ;¥á«¨ ¡®«ìè¥ |
xor eax,eax |
cmp edx,ebx ;cà ¢¨¬ à §¬¥à w_off á ¡®«ì訬 |
jb @f |
sub ebx,ecx |
jmp edit_box_key.nxt_f |
@@: mov ebx,edx |
sub ebx,ecx |
jmp edit_box_key.nxt_f |
edit_box_key.f_f: |
sub eax,ecx |
cmp edx,ebx ;cà ¢¨¬ à §¬¥à w_off á ¡®«ì訬 |
jle @f |
sub ebx,ecx |
sub ebx,eax |
jmp edit_box_key.nxt_f |
@@: |
mov ebx,edx |
sub ebx,ecx |
sub ebx,eax |
edit_box_key.nxt_f: |
mov edx,ebx |
lea ebx,[eax*2+eax] |
shl ebx,1 |
add ebx,ed_left |
inc ebx |
shl ebx,16 |
lea ecx,[edx*2+edx] |
shl ecx,1 |
mov bx,cx |
inc ebx |
mov edx,ebp;shift_color |
call edit_box.draw_bg_eax |
@@: call edit_box_key.enable_null |
ret |
;;;;;;;;;;;;;;;;;;;;; |
;áâ ®¢ª - áï⨥ ¢ë¤¥«¥¨ï ¢ ®¤¨ ᨬ¢®« |
;;;;;;;;;;;;;;;;;;;;; |
edit_box_key.drw_sim: |
mov eax,dword ed_pos |
call edit_box_key.draw_rectangle ; à¨á®¢ âì ¯àאַ㣮«ì¨ª á § ¤ ë¬ æ¢¥â®¬ |
jmp @b |
;;;;;;;;;;;;;;;;;;;;; |
;ãªæ¨ï ãáâ ®¢ª¨ ¢ë¤¥«¥¨ï ¯à¨ ¤¢¨¦¥¨ï ¢«¥¢® ¨ ¢¯à ¢® ¨ ¦ ⨨ shift |
;®£¨ª : |
;;;;;;;;;; |
edit_box_key.draw_wigwag: |
;äãªæ¨ï ãáâ ®¢ª¨ ¯¥à¥¬¥ëå |
mov ebp,shift_color |
call edit_box.clear_cursor |
or word ed_flags,ed_shift_bac ;ãáâ ®¢ª ä« £ , ¢ë¤¥«¥®© ®¡« á⨠|
mov ebp,shift_color |
mov eax,dword ed_pos |
test word ed_flags,ed_left_fl |
jz edit_box_key.low |
jmp @f |
;;;;;;;;;; |
;ãªæ¨ï 㤠«¥¨ï ¢ë¤¥«¥¨ï ¯à¨ ¤¢¨¦¥¨ï ¢«¥¢® ¨ ¢¯à ¢® ¨ ¦ ⨨ shift |
;®£¨ª : |
;;;;;;;;;; |
edit_box_key.draw_wigwag_cl: |
;äãªæ¨ï ãáâ ®¢ª¨ ¯¥à¥¬¥ëå |
mov ebp,ed_color |
call edit_box.clear_cursor |
mov ebp,ed_color |
mov eax,dword ed_pos |
test word ed_flags,ed_left_fl |
jz edit_box_key.low |
@@: call edit_box_key.draw_rectangle ; à¨á®¢ âì ¯àאַ㣮«ì¨ª § ªà 訢 ¥¬®© ®¡« á⨠|
ret |
edit_box_key.low: dec eax |
jmp @b |
;¢å®¤®© ¯ à ¬¥âà ebx - ed_pos |
edit_box_key.sh_first_sh: |
test word ed_flags,ed_shift |
je @f |
mov dword ed_shift_pos_old,ebx |
test word ed_flags,ed_shift_on |
jne @f |
mov dword ed_shift_pos,ebx |
or word ed_flags,ed_shift_on |
@@: ret |
;¡à ¡®âª ªà ©¨å ¯®«®¦¥¨© ¢ editbox ¯à¨ ¦ ⮬ shift |
;¯à®¨§¢®¤¨â áï⨥ ¢ë¤¥«¥¨¥, ¥á«¨ ¥â shift |
;¨ ç¥ ¢®®¡é¥ ¢ë室¨â |
edit_box_key.sh_st_of: |
test word ed_flags,ed_shift |
jne @f |
test word ed_flags,ed_shift_bac |
je @f |
mov ebp,ed_color |
mov ebx,dword ed_shift_pos |
call edit_box_key.sh_cl_ ;®ç¨á⪠¢ë¤¥«¥®£® äà £¬¥â |
and word ed_flags,ed_shift_cl ; ®ç¨á⪠®â ⮣® çâ® ã¡à «¨ ¢ë¤¥«¥¨¥ |
jmp edit_box.draw_cursor_text |
@@: |
and word ed_flags,ed_shift_off |
edit_ex |
;¯à®¢¥àª á®áâ®ï¨ï shift ¡ë« «¨ ® ¦ â à ìè¥? |
edit_box_key.sh_enable: |
test word ed_flags,ed_shift |
jne edit_box_key.sh_ext_en ; à¨á®¢ âì § ªà è¥ë© ¯àאַ㣮«ì¨ª |
test word ed_flags,ed_shift_bac |
je @f |
call edit_box.check_offset |
mov ebp,ed_color |
mov ebx,dword ed_shift_pos |
call edit_box_key.sh_cl_ ;®ç¨á⪠¢ë¤¥«¥®£® äà £¬¥â |
call edit_box_key.draw_wigwag_cl |
and word ed_flags,ed_shift_cl ; 1¢ à ¥ 㦮 |
ret |
@@: mov ebp,ed_color |
call edit_box.clear_cursor |
call edit_box.check_offset |
ret |
edit_box_key.sh_ext_en: |
call edit_box.check_offset |
test word ed_flags,ed_offset_fl |
je @f |
;¨á®¢ ¨¥ § ªà è¥ëå ¯àאַ㣮«ì¨ª®¢ ¨ ®ç¨á⪠¨å |
mov eax,dword ed_shift_pos |
mov ebx,dword ed_pos |
mov ecx,dword ed_shift_pos_old |
;¯à®¢¥àª ¨ à¨á®¢ ¨¥ § ªà è¥ëå ®¡« á⥩ |
cmp eax,ecx |
je edit_box_key.1_shem |
jb edit_box_key.smaller |
cmp ecx,ebx |
ja edit_box_key.1_shem |
call edit_box_key.draw_wigwag_cl ;clear |
jmp edit_box_key.sh_e_end |
edit_box_key.smaller: |
cmp ecx,ebx |
jb edit_box_key.1_shem |
call edit_box_key.draw_wigwag_cl ;clear |
jmp edit_box_key.sh_e_end |
;alike = |
edit_box_key.1_shem: call edit_box_key.draw_wigwag |
edit_box_key.sh_e_end: and word ed_flags,ed_shift_off |
ret |
@@: mov ebp,shift_color |
mov ebx,dword ed_shift_pos |
call edit_box_key.sh_cl_ |
jmp edit_box_key.sh_e_end |
;äãªæ¨ï ¤«ï ®¡à ¡®âª¨ shift ¯à¨ ¦ ⨨ home and end |
edit_box_key.sh_home_end: |
mov ebp,ed_color |
call edit_box.clear_cursor |
test word ed_flags,ed_shift_bac |
je @f |
mov ebp,ed_color |
mov ebx,dword ed_shift_pos_old |
call edit_box_key.sh_cl_ |
@@: test word ed_flags,ed_shift |
je edit_box_key.sh_exit_ ;¢ë©â¨ |
mov ebp,shift_color |
mov ebx,dword ed_shift_pos |
call edit_box_key.sh_cl_ |
or word ed_flags,ed_shift_bac ;ãáâ ®¢ª ä« £ , ¢ë¤¥«¥®© ®¡« á⨠|
jmp edit_box_key.sh_e_end |
edit_box_key.sh_exit_: call edit_box.check_offset |
ret |
;äãªæ¨ï ¢¥á¥¨ï 0 ¯® ¤à¥áã ed_size+1 |
edit_box_key.enable_null: |
pusha |
mov eax,ed_size |
mov ebx,ed_text |
test eax,eax |
add eax,ebx |
jne @f |
inc eax |
@@: xor ebx,ebx |
mov [eax],bl |
edit_ex |
;- 㤠«¥¨¥ ᨬ¢®« |
;å®¤ë¥ ¤ ë¥ edx=ed_size;ecx=ed_pos |
edit_box_key.del_char: |
mov esi,ed_text |
test word ed_flags,ed_shift_on |
je @f |
mov eax,dword ed_shift_pos |
mov ebx,esi |
cmp eax,ecx |
jae edit_box_key.dh_n |
mov ed_pos,eax ;çâ® ¡ë ¥ ¡ë«® ã¡¥£ ¨ï ªãàá®à |
mov ebp,ecx |
sub ebp,eax |
add ebx,eax ;eax ¬¥ìè¥ |
sub edx,ecx |
add esi,ecx |
mov dword ed_shift_pos,ebp |
jmp edit_box_key.del_ch_sh |
;¥á«¨ ¨ ç¥ |
edit_box_key.dh_n: |
mov ebp,eax |
sub ebp,ecx |
add ebx,ecx |
sub edx,eax |
add esi,eax |
mov dword ed_shift_pos,ebp |
jmp edit_box_key.del_ch_sh |
@@: add esi,ecx ;㪠§ ⥫ì + ᬥ饨¥ ª ॠ«ì®¬ã ¡ãää¥àã |
mov ebx,esi |
inc esi |
cld |
sub edx,ecx |
edit_box_key.del_ch_sh: |
push edi |
mov edi,ebx |
@@: |
lodsb |
stosb |
dec edx |
jns @b |
pop edi |
ret |
;¢ëç¨á«¨âì § ªà 訢 ¥¬ãî ®¡« áâì |
;ᮣ« 襨¥ ¢ ebp - ¯¥à¥¤ ¥âáï ed_size |
edit_box_key.clear_bg: |
call edit_box.get_n ;¯®«ãç¨âì à §¬¥à ¢ ᨬ¢®« å è¨à¨ë ª®¬¯®¥â |
push eax |
mov ebx,ed_offset |
add eax,ebx ;eax = w_off= ed_offset+width |
mov ebx,ebp ;ed_size |
cmp eax,ebx |
jb @f |
mov eax,ed_pos |
sub ebx,eax |
mov ecx,ed_offset |
sub eax,ecx |
jmp edit_box_key.nxt |
@@: mov ebx,ed_pos |
push ebx |
sub eax,ebx |
mov ebx,eax ;It is don't optimal |
pop eax ;ed_pos |
mov ecx,ed_offset |
sub eax,ecx |
edit_box_key.nxt: |
mov ebp,eax ;¯à®¢¥àª ¢ë室 § ªà 訢 ¥¬®© ®¡« á⨠§ ¯à¥¤¥«ë ¤«¨ë |
add ebp,ebx |
pop edx |
cmp ebp,edx |
je @f |
inc ebx |
@@: mov edx,ebx |
lea ebx,[eax*2+eax] |
shl ebx,1 |
add ebx,ed_left |
inc ebx |
shl ebx,16 |
lea ecx,[edx*2+edx] |
shl ecx,1 |
mov bx,cx |
mov edx,ed_color |
call edit_box.draw_bg_eax |
ret |
;;;;;;;;;;;;;;;;;;; |
;;; ¡à ¡®âª ¯à¨¬¨â¨¢®¢ |
;;;;;;;;;;;;;;;;;;;; |
; à¨á®¢ âì ¯àאַ㣮«ì¨ª, 梥⠯¥à¥¤ ¥âáï ¢ ebp |
;¢å®¤ë¥ ¯ à ¬¥âàë: |
;eax=dword ed_pos |
;ebp=-梥â ed_color or shift_color |
edit_box_key.draw_rectangle: |
mov ecx,dword ed_offset |
sub eax,ecx |
lea ebx,[eax*2+eax] |
shl ebx,1 |
inc ebx |
add ebx,ed_left |
shl ebx,16 |
add ebx,6 |
mov edx,ebp |
call edit_box.draw_bg_eax |
ret |
;;;;;;;;;;;;;;;;;; |
;;஢¥àª ¦ â «¨ shift |
;;;;;;;;;;;;;;;;;; |
edit_box_key.check_shift: |
pusha ;á®åà ¨¬ ¢á¥ ॣ¨áâàë |
mcall 66,3,1 |
test al,0x03 |
je @f |
or word ed_flags,ed_shift ;ãáâ ®¢¨¬ ä« £ |
@@:edit_ex |
} |
;¬ ªà®á ª« ¢¨è ª®â®àë¥ ¯à®¨á室¨â ॠªæ¨ï |
macro use_key_process backspase,delete,left,right,home,end,insert |
{ |
if backspase eq |
else |
cmp ah,8 |
jz edit_box_key.backspace |
end if |
if delete eq |
else |
cmp ah,0xb6 |
jz edit_box_key.delete |
end if |
if left eq |
else |
cmp ah,176 |
jz edit_box_key.left |
end if |
if right eq |
else |
cmp ah,179 |
jz edit_box_key.right |
end if |
if home eq |
else |
cmp ah,180 |
jz edit_box_key.home |
end if |
if home eq |
else |
cmp ah,181 |
jz edit_box_key.end |
end if |
if insert eq |
else |
cmp ah,185 ;insert |
jz edit_box_key.insert |
end if |
} |
macro use_key_no_process up,down,esc,enter,tab,numl,capsl,scrolll |
{ |
if up eq |
else |
cmp ah,177 |
jz edit_box.editbox_exit |
end if |
if down eq |
else |
cmp ah,178 |
jz edit_box.editbox_exit |
end if |
if esc eq |
else |
cmp ah,27 ;ESC - ª« ¢¨è )) |
jz edit_box.editbox_exit |
end if |
if enter eq |
else |
cmp ah,13 ;ENTER - ª« ¢¨è )) |
jz edit_box.editbox_exit |
end if |
if tab eq |
else |
cmp ah,9 ;TAB - ª« ¢¨è )) |
jz edit_box.editbox_exit |
end if |
if numl eq |
else |
cmp ah,4 ;Num Lock - ª« ¢¨è )) |
jz edit_box.editbox_exit |
end if |
if capsl eq |
else |
cmp ah,2 ;Caps Lock - ª« ¢¨è )) |
jz edit_box.editbox_exit |
end if |
if scrolll eq |
else |
cmp ah,1 ;Scroll Lock - ª« ¢¨è )) |
jz edit_box.editbox_exit |
end if |
} |
macro use_key_figures_only |
{ |
test word ed_flags,ed_figure_only ; ⮫쪮 æ¨äàë ? |
jz @f |
cmp ah,'0' |
jb edit_box.editbox_exit |
cmp ah,'9' |
ja edit_box.editbox_exit |
@@: |
} |
macro are_key_shift_press |
{ |
test word ed_flags,ed_shift_on |
je @f |
;å®¤ë¥ ¤ ë¥ edx=ed_size;ecx=ed_pos |
push eax |
mov edx,ed_size |
mov ecx, ed_pos |
pusha |
;;;;;;;;;;;;;;;;;;;;; |
;clear input arrea |
mov ebp,ed_color |
mov ebx,dword ed_shift_pos |
call edit_box_key.sh_cl_ |
mov ebp,ed_size |
call edit_box_key.clear_bg |
;;;;;;;;;;;;;;;;;;;;; |
popa |
call edit_box_key.del_char |
;;;; |
mov eax,dword ed_shift_pos |
mov ebx,ed_size |
sub ebx,eax |
mov ed_size,ebx |
pop eax |
@@: |
} |
macro are_key_cur_end |
{ |
mov ecx,ed_size |
mov edx, ed_max |
test word ed_flags,ed_insert |
jne @f |
cmp ecx,edx |
jae edit_box.editbox_exit |
@@: mov ebx, ed_pos |
cmp ebx,edx |
jl @f ; ¥á«¨ ¬¥ìè¥ ¨«¨ à ¢® |
jmp edit_box.editbox_exit |
@@: ; ᤢ¨£ ¥¬ ᨬ¢®«ë ¯®á«¥ ªãàá®à ¢¯à ¢® |
mov ecx,ed_size |
push edi eax |
mov ebp,edi |
mov esi,ed_text ; ª § â¥«ì ¡ãä¥à |
;㤥¬ à ¡®â âì á® áâப®© |
add esi,ecx ;add ed_size ¤®¡ ¢¨¬ max size |
mov edi,esi |
cmp ecx,ebx ; ᫨ ã á ¯®§¨æ¨ï ªãàá®à = ⥪ã饬ã à §¬¥àã ¯¥ç â ëå ᨬ¢®«®¢ â.¥. ªãàá®à á⮨⠢ ª®æ¥ |
je edit_box_key.In_k |
test word [ebp+40],ed_insert ;IF insert is enable â.ª. edi ¨§¬¥¥ ¤à¥á㥬 ç¥à¥§ ebp |
jne edit_box_key.ins_v |
;clear |
pusha |
mov edi,ebp |
mov ebp,ed_size |
call edit_box_key.clear_bg |
popa |
sub ecx,ebx ; ©¤¥¬ ª®«-¢® ᨬ¢®«®¢ ¤«ï ¯¥à¥¤¢¨¦¥¨ï. |
inc edi ;¬¥á⨬ è¨ á¨¬¢®«ë ¢ ¯à ¢® |
std |
inc ecx |
@@: |
;-------- |
lodsb |
stosb |
;-------- |
loop @b |
edit_box_key.In_k: cld |
pop eax |
mov al,ah |
stosb |
pop edi |
; ¢áâ ¢«ï¥¬ ª®¤ ª« ¢¨è¨ â㤠, £¤¥ ªãàá®à |
; 㢥«¨ç¨¢ ¥¬ § 票¥ à §¬¥à ¨ ¯®§¨æ¨¨ |
inc dword ed_size |
inc dword ed_pos |
call edit_box_key.draw_all2 |
jmp edit_box_key.shift |
} |
macro use_work_key |
{ |
edit_box_key.insert: test word ed_flags,ed_insert ;not word ed_insert |
je @f |
and word ed_flags,ed_insert_cl |
jmp edit_box.editbox_exit |
@@: |
or word ed_flags,ed_insert |
jmp edit_box.editbox_exit |
edit_box_key.ins_v: |
dec dword [ebp+42];ed_size ;processing is insert |
sub esi,ecx |
add esi,ebx |
mov edi,esi |
;clear |
pusha |
mov edi,ebp |
mov ebp,ed_pos |
call edit_box_key.clear_bg |
popa |
jmp edit_box_key.In_k |
;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
edit_box_key.delete: |
mov edx,ed_size |
mov ecx,ed_pos |
cmp edx,ecx |
jg edit_box_key.bac_del |
test word ed_flags,ed_shift_on |
jne edit_box_key.del_bac |
edit_ex |
edit_box_key.bac_del: |
call edit_box_key.del_char |
jmp edit_box_key.draw_all |
;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;--- ¦ â ª« ¢¨è backspace --- |
edit_box_key.backspace: |
; ¯à®¢¥à塞, ªãàá®à ã «¥¢®£® ªà ï ? |
mov ecx,ed_pos |
test ecx,ecx |
jnz edit_box_key.del_bac |
test word ed_flags,ed_shift_on |
jne edit_box_key.bac_del |
edit_ex |
edit_box_key.del_bac: |
mov edx,ed_size |
cmp edx,ecx ;if ed_pos=ed_size |
je @f |
dec ecx |
call edit_box_key.del_char |
@@: test word ed_flags,ed_shift_on |
jne edit_box_key.bac_del |
dec dword ed_pos |
edit_box_key.draw_all: |
push edit_box_key.shift;.draw_cursor_text;eax |
test word ed_flags,ed_shift_on |
je @f |
mov eax,dword ed_shift_pos |
mov ebx,ed_size |
sub ebx,eax |
mov ed_size,ebx |
mov ebp,ed_color |
call edit_box.clear_cursor |
call edit_box.check_offset |
call edit_box.draw_bg |
ret |
@@: dec dword ed_size |
edit_box_key.draw_all2: |
and word ed_flags,ed_shift_cl |
mov ebp,ed_color |
call edit_box.clear_cursor |
call edit_box.check_offset |
mov ebp,ed_size |
call edit_box_key.clear_bg |
ret |
;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;--- ¦ â ª« ¢¨è left --- |
edit_box_key.left: mov ebx,ed_pos |
test ebx,ebx |
jz edit_box_key.sh_st_of |
or word ed_flags,ed_left_fl |
call edit_box_key.sh_first_sh |
dec dword ed_pos |
call edit_box_key.sh_enable |
jmp edit_box.draw_cursor_text |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;--- ¦ â ª« ¢¨è right --- |
edit_box_key.right: mov ebx,ed_pos |
cmp ebx,ed_size |
je edit_box_key.sh_st_of |
and word ed_flags,ed_right_fl |
call edit_box_key.sh_first_sh |
inc dword ed_pos |
call edit_box_key.sh_enable |
jmp edit_box.draw_cursor_text |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
edit_box_key.home: |
mov ebx,ed_pos |
test ebx,ebx |
jz edit_box_key.sh_st_of |
call edit_box_key.sh_first_sh |
xor eax,eax |
mov ed_pos,eax |
call edit_box_key.sh_home_end |
jmp edit_box.draw_cursor_text |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
edit_box_key.end: |
mov ebx,ed_pos |
cmp ebx,dword ed_size |
je edit_box_key.sh_st_of |
call edit_box_key.sh_first_sh |
mov eax,ed_size |
mov ed_pos,eax |
call edit_box_key.sh_home_end |
jmp edit_box.draw_cursor_text |
} |
macro use_mouse_func |
{ |
;---------------------------------------------------------- |
;--- ¡à ¡®âª .mouse_wigwag |
;---------------------------------------------------------- |
edit_box_mouse.mouse_wigwag: |
shr eax,16 |
or word ed_flags,ed_shift_bac+ed_shift_on+ed_shift |
;;;;;;;;;;;;;;;;;; |
;;¯à®æ¥¤ãà ®¡à ¡®âª¨ ¯®«®¦¥¨ï ¢ë¤¥«¥®£® ⥪áâ , ª®£¤ ¯à®¨á室¨â ¢ë室 § ¯à¥¤¥«ë editbox |
;;;;;;;;;;;;;;;;;; |
test ax,0x8000 |
jnz edit_box_mouse.mleft |
mov ebx,ed_left |
cmp eax,ebx |
jb edit_box_mouse.mleft |
add ebx,ed_width |
cmp eax,ebx |
ja edit_box_mouse.mright |
sub ebx,ed_width |
xor edx,edx |
sub eax,ebx ; ¢ëç⨬ ¨§ ª®®à¤¨ â ¬ë誨 ¯® ®á¨ å ª®®à¤¨ âë ¤® editbox ¯® ®á¨ å |
mov ebx,6 |
div ebx |
;;;;;;;;;;;;;;;;;; |
;;¯à®æ¥¤ãà ®¡à ¡®âª¨ ¯®«®¦¥¨ï ¢ë¤¥«¥®£® ⥪áâ , ¢ ¯à¥¤¥« å ®¡« á⨠editbox |
;;;;;;;;;;;;;;;;;; |
;®«ã稫¨ ª®®à¤¨ âë ¢ eax ¬ë誨, â.¥. ªã¤ ® ¯¥à¥¬¥á⨫ áì |
;¨á®¢ ¨¥ § ªà è¥ëå ¯àאַ㣮«ì¨ª®¢ ¨ ®ç¨á⪠¨å |
add eax,ed_offset ;¤®¡ ¢¨¬ ᬥ饨¥ |
cmp eax,dword ed_size ;¥á«¨ ¢ë諨 § ¯à¥¤¥«ë, â® ¨ç¥£® ¥ ¤¥« âì |
ja edit_box_mouse.mwigvag |
edit_box_mouse.mdraw: |
mov dword ed_pos,eax ;á®åà ¨¬ ®¢®¥ § 票¥ |
;¨á®¢ ¨¥ § ªà è¥ëå ¯àאַ㣮«ì¨ª®¢ ¨ ®ç¨á⪠¨å |
mov ecx,dword ed_shift_pos |
mov ebx,dword ed_shift_pos_old |
mov dword ed_shift_pos_old,eax ;¢¥á¥¬ ®¢®¥ § 票¥ áâ ன ¯®§¨æ¨¨ ªãàá®à |
;¯à®¢¥àª ¨ à¨á®¢ ¨¥ § ªà è¥ëå ®¡« á⥩ |
cmp ecx,ebx ;¢ëïá塞 ªã¤ ¡ë«® ¤¢¨¦¥¨¥ ®¤¨ è £ § ¤ |
je edit_box_mouse.m1_shem ;¤¢¨¦¥¨ï ¥ ¡ë«® à ¥¥ |
jb edit_box_mouse.msmaller ;¤¢¨¦¥¨¥ ¡ë«® -> |
cmp ebx,eax ;¤¢¨¦¥¨¥ ¡ë«® ¤® í⮣® <- ¨ âãâ ¬ë ¯à®¢¥à塞 ᥩç á ªã¤ ¤¢¨¦¥¨¥ ¯à®¨á室¨â |
ja edit_box_mouse.m1_shem ;¥á«¨ ¡ë«® ¤¢¨¦¥¨¥ <- ⮠㦮 § ªà á¨âì ®¡« áâì |
je edit_box_mouse.mwigvag ;¥á«¨ ¨§¬¥¥¨ï ¥ ¡ë«®, â® ¨ç¥£® ¥ ¤¥« âì |
mov ebp,ed_color ;âãâ 㦮 ®ç¨áâ¨âì ®¡« áâì c ed_pos ed_shift_pos_old |
;¢å®¤ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos |
call edit_box_key.sh_cl_ |
jmp edit_box_mouse.mwigvag |
edit_box_mouse.msmaller: |
cmp ebx,eax |
jb edit_box_mouse.m1_shem |
mov ebp,ed_color |
;¢å®¤ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos |
call edit_box_key.sh_cl_ |
jmp edit_box_mouse.mwigvag |
;alike = |
edit_box_mouse.m1_shem: |
mov ebp,shift_color |
;¢å®¤ë¥ ¯ à ¬¥âàë ebp=color ebx=ed_shift_pos |
mov ebx,ecx |
call edit_box_key.sh_cl_ |
jmp edit_box_mouse.mwigvag |
edit_box_mouse.mwigvag: |
and word ed_flags,ed_shift_mcl |
jmp edit_box.draw_cursor_text |
; popa |
; ret |
edit_box_mouse.mleft: |
mov eax,ed_pos |
cmp eax,0 |
jbe edit_box_mouse.mwigvag |
dec eax |
call edit_box.check_offset |
push eax |
mov ebx,ed_shift_pos |
mov ebp,shift_color |
call edit_box_key.sh_cl_ |
pop eax |
jmp edit_box_mouse.mdraw |
edit_box_mouse.mright: |
mov eax,ed_pos |
mov ebx,ed_size |
cmp eax,ebx |
jae edit_box_mouse.mwigvag |
inc eax |
call edit_box.check_offset |
mov ebx,ed_shift_pos |
mov ebp,shift_color |
push eax |
call edit_box_key.sh_cl_ |
pop eax |
jmp edit_box_mouse.mdraw |
} |
macro use_work_mouse |
;---------------------------------------------------------- |
;--- ¥ 㤥ন¢ ¥¬ «¨ ¬ë ª« ¢¨èã ¬ë誨, ¯¥à¥¬¥é ï ªãàá®à, ¢® ¢á¥ à §ë¥ áâ®à®ë? |
;---------------------------------------------------------- |
{ |
test word ed_flags,ed_mouse_on |
jne edit_box_mouse.mouse_wigwag |
;---------------------------------------------------------- |
;--- ¯à®¢¥à塞, ¯®¯ ¤ ¥â «¨ ªãàá®à ¢ edit box ------------- |
;---------------------------------------------------------- |
mov ebx,ed_top |
cmp ax,bx |
jl edit_box_mouse._blur;.mouse_end_no_focus |
add ebx,ed_height |
cmp ax,bx |
jg edit_box_mouse._blur;.mouse_end_no_focus |
shr eax,16 |
mov ebx,ed_left |
cmp ax,bx |
jl edit_box_mouse._blur;.mouse_end_no_focus |
add ebx,ed_width |
cmp ax,bx |
jg edit_box_mouse._blur;.mouse_end_no_focus |
;--- ¨§¬¥ï¥¬ ¯®§¨æ¨î ªãàá®à --- |
push eax |
mov ebp,ed_color |
call edit_box.clear_cursor |
pop eax |
edit_box_mouse._mvpos: |
xor edx,edx |
sub eax,ed_left |
mov ebx,6 |
div bx |
add eax,ed_offset |
cmp eax,ed_size |
jna edit_box_mouse._mshift |
mov eax,ed_size |
edit_box_mouse._mshift: |
;;;;;;; |
;;¥ªæ¨ï ®¡à ¡®âª¨ shift ¨ ¢ë¤¥«¥¨ï ¯® shift |
;;;;;;; |
test word ed_flags,ed_shift_bac |
je @f |
mov ebp,dword ed_color |
mov ebx,dword ed_shift_pos |
push eax |
call edit_box_key.sh_cl_ |
and word ed_flags,ed_shift_bac_cl |
pop eax |
@@: |
test word ed_flags,ed_mouse_on |
jne @f |
mov dword ed_shift_pos,eax |
or word ed_flags,ed_mouse_on |
mov dword ed_pos,eax |
mov dword [mouse_flag],edi ;ãáâ ®¢¨¬ ¨¤¥â¨ä¨ª â®à |
bts word ed_flags,1 ;ãáâ ®¢ª 䮪ãá |
jmp edit_box_mouse.m_sh |
@@: |
cmp eax,dword ed_shift_pos ;¥á«¨ ¯®§¨æ¨¨ ¥ ¨§¬¥¨«¨áì |
je edit_box.editbox_exit |
mov ed_pos,eax |
mov ebp,dword shift_color |
mov ebx,dword ed_shift_pos |
call edit_box_key.sh_cl_ |
or word ed_flags,ed_mous_adn_b ;ãáâ ®¢¨¬ ¡¨â çâ® ¬ë ¢ë¤¥«¨«¨ +shift_on + |
edit_box_mouse.m_sh: call edit_box.draw_text |
call edit_box.draw_cursor |
;---------------------------------------------------------- |
;--- ¯à®æ¥¤ãà ãáâ ®¢ª¨ 䮪ãá --------------------------- |
;---------------------------------------------------------- |
jmp edit_box_mouse.drc |
edit_box_mouse._blur: |
test word ed_flags,ed_always_focus |
jne edit_box.editbox_exit |
btr word ed_flags,1 ; ¥á«¨ ¥ ¢ 䮪ãá¥, ¢ë室¨¬ |
jnc edit_box.editbox_exit |
mov ebp,ed_color |
call edit_box.clear_cursor |
edit_box_mouse.drc: call edit_box.draw_border |
jmp edit_box.editbox_exit |
} |
; ªà®á ¢ë室 |
macro edit_ex |
{ |
popad |
ret |
} |
macro debug |
{ |
;----------- ®â« ¤ª |
pushad |
; mov dword [ed_buffer.2],0 |
; mov eax,edi |
mov eax,dword [ed_buffer.2] |
mov edi,ed_buffer.3 |
call .str |
;à¨á®¢ ¨¥ ä® |
mov eax,13 |
mov ebx,178*65536+70 |
mov ecx,28*65536+10 |
xor edx,edx |
int 0x40 |
;¢ë¢®¤ § 票ï íªà |
mov eax,4 |
mov ebx,180*65536+30 |
mov ecx,0x10DDBBCC |
mov edx,ed_buffer.3 |
mov esi,8 |
int 0x40 |
popad |
;----------- ®â« ¤ª |
} |
macro debug_func |
{ |
.str: |
mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬ áç¨á«¥¨ï ¨§¬¥ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤ë¥ ¯ à ¬¥âàë eax - ç¨á«® |
;¯à¥à¥¢®¤ ç¨á« ¢ ASCII áâப㠢§®¤ë¥ ¤ ë¥ ecx=á¨á⥬ áç¨á«¥ï edi ¤à¥á ªã¤ § ¯¨áë¢ âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®¥æ ¯¥à¥¬¥®© |
cmp eax,ecx ;áà ¢¨âì ¥á«¨ ¢ eax ¬¥ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ @@-1 â.¥. pop eax |
jb @f |
xor edx,edx ;®ç¨áâ¨âì edx |
div ecx ;à §¤¥«¨âì - ®áâ ⮪ ¢ edx |
push edx ;¯®«®¦¨âì ¢ á⥪ |
;dec edi ;ᬥ饨¥ ¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®æ áâப¨ |
call .str;¯¥à¥©â¨ á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥â ¯®ª ¢ eax ¥ á⠥⠬¥ìè¥ ç¥¬ ¢ ecx |
pop eax |
@@: ;cmp al,10 ;¯à®¢¥à¨âì ¥ ¬¥ìè¥ «¨ § 票¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥ï 10 ¤ ï ª®¬ ¤ - «¨è ï)) |
;sbb al,$69 ;- ç¥áâ® ¤ ï ¨áâàãªæ¨ï ¬¥ï § áâ ¢«ï¥â § ¤ã¬ âìáï â.¥. ï ¥ § î ª ª íâ® à ¡®â ¥â |
;das ;¯®á«¥ ¤ ®© ª®¬ ¤ë ª ª ¡ë ¯à®¨á室¨â 㬥ì襨¥ al 66h (¢ ª¨£¥ ¯¨á ® ¤à㣮¥) |
or al,0x30 ;¤ ï ª®¬ ¤ ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥ |
stosb ;§ ¯¨á âì í«¥¬¥â ¨§ ॣ¨áâà al ¢ ï祪㠯 ¬ï⨠es:edi |
ret ;¢¥àãâìáï ç¥ì ¨â¥à¥áë© å®¤ â.ª. ¯®ª ¢ á⥪¥ åà ¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï |
} |
;;;;;;;;;;;;;;; |
;For LibGui |
;;;;;;;;;;;;;;; |
macro srt_ed_libgui |
{ |
ed_width equ [EditBox.ed_width] ;è¨à¨ ª®¬¯®¥â |
ed_left equ [EditBox.ed_left] ;¯®«®¦¥¨¥ ¯® ®á¨ å |
ed_top equ [EditBox.ed_top] ;¯®«®¦¥¨¥ ¯® ®á¨ ã |
ed_color equ [EditBox.ed_color] ;梥â ä® ª®¬¯®¥â |
shift_color equ [EditBox.shift_color] ;=0x6a9480 |
ed_focus_border_color equ [EditBox.ed_focus_border_color] ;梥â à ¬ª¨ ª®¬¯®¥â |
ed_blur_border_color equ [EditBox.ed_blur_border_color] ;梥⠥ ªâ¨¢®£® ª®¬¯®¥â |
ed_text_color equ [EditBox.ed_text_color] ;梥â ⥪áâ |
ed_max equ [EditBox.ed_max] ;ª®«-¢® ᨬ¢®«®¢ ª®â®àë¥ ¬®¦® ¬ ªá¨¬ «ì® ¢¢¥á⨠|
ed_text equ [EditBox.ed_text] ;㪠§ â¥«ì ¡ãä¥à |
ed_flags equ [EditBox.ed_flags] ;ä« £¨ |
ed_size equ [EditBox.ed_size] ;ª®«-¢® ᨬ¢®«®¢ |
ed_pos equ [EditBox.ed_poz] ;¯®§¨æ¨ï ªãàá®à |
ed_offset equ [EditBox.ed_offset] ;ᬥ饨¥ |
cl_curs_x equ [EditBox.cl_curs_x] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® å |
cl_curs_y equ [EditBox.cl_curs_y] ;¯à¥¤ë¤ã饥 ª®®à¤¨ â ªãàá®à ¯® ã |
ed_shift_pos equ [EditBox.ed_shift_pos] ;¯®«®¦¥¨¥ ªãàá®à |
ed_shift_pos_old equ [EditBox.ed_shift_pos_old] ;áâ ஥ ¯®«®¦¥¨¥ ªãàá®à |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;Bit mask from editbox |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
ed_figure_only= 1000000000000000b ;®¤¨ ᨬ¢®«ë |
ed_always_focus= 100000000000000b |
ed_focus= 10b ;䮪ãá ¯à¨«®¦¥¨ï |
ed_shift_on= 1000b ;¥á«¨ ¥ ãáâ ®¢«¥ -§ ç¨â ¢¯¥à¢ë¥ ¦ â shift,¥á«¨ ¡ë« ãáâ ®¢«¥, § ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift |
ed_shift_on_off=1111111111110111b |
ed_shift= 100b ;¢ª«îç ¥âáï ¯à¨ ¦ ⨨ shift â.¥. ¥á«¨ ¦¨¬ î |
ed_shift_off= 1111111111111011b |
ed_shift_bac= 10000b ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥®£® shift â.¥. ¯à¨ ãáâ ®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥¨¥ |
ed_shift_bac_cl=1111111111101111b ;®ç¨á⪠¯à¨ 㤠«¥¨¨ ¢ë¤¥«¥¨ï |
ed_shift_cl= 1111111111100011b |
ed_shift_mcl= 1111111111111011b |
ed_left_fl= 100000b |
ed_right_fl= 1111111111011111b |
ed_offset_fl= 1000000b |
ed_offset_cl= 1111111110111111b |
ed_insert= 10000000b |
ed_insert_cl= 1111111101111111b |
ed_mouse_on = 100000000b |
ed_mous_adn_b= 100011000b |
ed_mouse_on_off=1111111011111111b |
ed_height=24 ; ¢ëá®â |
} |
ed_struc_size=72 |
struc edit_box width,left,top,color,shift_color,focus_border_color,\ |
blur_border_color,text_color,max,text,flags,size,pos |
{ |
.width dd width |
.left dd left |
.top dd top |
.color dd color |
.shift_color dd shift_color |
.focus_border_color dd focus_border_color |
.blur_border_color dd blur_border_color |
.text_color dd text_color |
.max dd max |
.text dd text |
.flags dd flags+0 |
.size dd size+0 |
.pos dd pos+0 |
.offset dd 0 |
.cl_curs_x dd 0 |
.cl_curs_y dd 0 |
.shift dd 0 |
.shift_old dd 0 |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;Bit mask from editbox |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
ed_figure_only= 1000000000000000b ;®¤¨ ᨬ¢®«ë |
ed_always_focus= 100000000000000b |
ed_focus= 10b ;䮪ãá ¯à¨«®¦¥¨ï |
ed_shift_on= 1000b ;¥á«¨ ¥ ãáâ ®¢«¥ -§ ç¨â ¢¯¥à¢ë¥ ¦ â shift,¥á«¨ ¡ë« ãáâ ®¢«¥, § ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift |
ed_shift_on_off=1111111111110111b |
ed_shift= 100b ;¢ª«îç ¥âáï ¯à¨ ¦ ⨨ shift â.¥. ¥á«¨ ¦¨¬ î |
ed_shift_off= 1111111111111011b |
ed_shift_bac= 10000b ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥®£® shift â.¥. ¯à¨ ãáâ ®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥¨¥ |
ed_shift_bac_cl=1111111111101111b ;®ç¨á⪠¯à¨ 㤠«¥¨¨ ¢ë¤¥«¥¨ï |
ed_shift_cl= 1111111111100011b |
ed_shift_mcl= 1111111111111011b |
ed_left_fl= 100000b |
ed_right_fl= 1111111111011111b |
ed_offset_fl= 1000000b |
ed_offset_cl= 1111111110111111b |
ed_insert= 10000000b |
ed_insert_cl= 1111111101111111b |
ed_mouse_on = 100000000b |
ed_mous_adn_b= 100011000b |
ed_mouse_on_off=1111111011111111b |
ed_height=14 ; ¢ëá®â |
} |
/programs/develop/libraries/box_lib/trunk/editbox_ex.asm |
---|
0,0 → 1,245 |
;§ £®«®¢®ª ¯à¨«®¦¥¨ï |
use32 ; âà á«ïâ®à, ¨á¯®«ì§ãî騩 32 à §àï¤ëå ª®¬ ¤ë |
org 0x0 ; ¡ §®¢ë© ¤à¥á ª®¤ , ¢á¥£¤ 0x0 |
db 'MENUET01' ; ¨¤¥â¨ä¨ª â®à ¨á¯®«ï¥¬®£® ä ©« (8 ¡ ©â) |
dd 0x1 ; ¢¥àá¨ï ä®à¬ â § £®«®¢ª ¨á¯®«ï¥¬®£® ä ©« |
dd start ; ¤à¥á, ª®â®àë© á¨á⥬ ¯¥à¥¤ ñâ ã¯à ¢«¥¨¥ |
; ¯®á«¥ § £à㧪¨ ¯à¨«®¦¥¨ï ¢ ¯ ¬ïâì |
dd i_end ; à §¬¥à ¯à¨«®¦¥¨ï |
dd mem ; ¡ê¥¬ ¨á¯®«ì§ã¥¬®© ¯ ¬ïâ¨, ¤«ï á⥪ ®â¢¥¤¥¬ 0å100 ¡ ©â ¨ ¢ë஢¨¬ £à¨æã 4 ¡ ©â |
dd mem ; à ᯮ«®¦¨¬ ¯®§¨æ¨î á⥪ ¢ ®¡« á⨠¯ ¬ïâ¨, áà §ã § ⥫®¬ ¯à®£à ¬¬ë. ¥àè¨ á⥪ ¢ ¤¨ ¯ §®¥ ¯ ¬ïâ¨, 㪠§ ®¬ ¢ëè¥ |
dd 0x0 ; 㪠§ ⥫ì áâபã á ¯ à ¬¥âà ¬¨. |
dd way_of_ini |
include 'macros.inc' |
include 'editbox_ex.mac' |
start: |
;Get way for ini file. |
mov edi,way_of_ini |
mov ecx,1024 |
xor eax,eax |
cld |
repne scasb |
test ecx,ecx |
jz @f |
mov esi,1024 |
sub esi,ecx |
mov ecx,esi |
std |
mov al,'/' |
repne scasb |
test ecx,ecx |
jz next_way |
add edi,2 |
@@: |
mov esi,ini_file |
cld |
@@: lodsb |
test al,al |
jz @f |
stosb |
jmp @b |
@@: xor eax,eax |
stosb |
; load DLL |
mov ecx,way_of_ini |
mov eax, 68 |
mov ebx, 19 |
mcall |
test eax, eax |
jz next_way |
jmp import_init_ |
next_way: |
mov ecx,ini_file |
mov eax, 68 |
mov ebx, 19 |
mcall |
test eax, eax |
jz exit |
import_init_: |
; initialize import |
mov edx, eax |
mov esi,myimport |
import_loop: |
lodsd |
test eax, eax |
jz import_done |
push edx |
import_find: |
mov ebx, [edx] |
test ebx, ebx |
jz exit;import_not_found |
push eax |
@@: |
mov cl, [eax] |
cmp cl, [ebx] |
jnz import_find_next |
test cl, cl |
jz import_found |
inc eax |
inc ebx |
jmp @b |
import_find_next: |
pop eax |
add edx, 8 |
jmp import_find |
import_found: |
pop eax |
mov eax, [edx+4] |
mov [esi-4], eax |
pop edx |
jmp import_loop |
import_done: |
mcall 40,0x27 ;ãáâ ®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩ |
red_win: |
call draw_window ;¯¥à¢® ç «ì® ¥®¡å®¤¨¬® à¨á®¢ âì ®ª® |
align 4 |
still: ;®á®¢®© ®¡à ¡®â稪 |
mcall 10 ;¦¨¤ âì ᮡëâ¨ï |
dec eax |
jz red_win |
dec eax |
jz key |
dec eax |
jz button |
push dword edit1 |
call [edit_box_mouse] |
push dword edit2 |
call [edit_box_mouse] |
push dword check1 |
call [check_box_mouse] |
push dword check2 |
call [check_box_mouse] |
push dword Option_boxs |
call [option_box_mouse] |
push dword Option_boxs2 |
call [option_box_mouse] |
jmp still ;¥á«¨ ¨ç¥£® ¨§ ¯¥à¥ç¨á«¥®£® ⮠ᮢ ¢ 横« |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
button: |
mcall 17 ;¯®«ãç¨âì ¨¤¥â¨ä¨ª â®à ¦ ⮩ ª« ¢¨è¨ |
test ah,ah ;¥á«¨ ¢ ah 0, â® ¯¥à¥©â¨ ®¡à ¡®â稪 ᮡë⨩ still |
jz still |
exit: mcall -1 |
key: |
mcall 2 ;§ £à㧨¬ § 票¥ 2 ¢ ॣ¨áâ®à eax ¨ ¯®«ã稬 ª®¤ ¦ ⮩ ª« ¢¨è¨ |
push dword edit1 |
call [edit_box_key] |
push dword edit2 |
call [edit_box_key] |
jmp still |
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
align 4 |
draw_window: ;à¨á®¢ ¨¥ ®ª ¯à¨«®¦¥¨ï |
mcall 12,1 |
mcall 0,(50*65536+390),(30*65536+200),0xb3AABBCC,0x805080DD,hed |
push dword edit1 |
call [edit_box_draw] |
push dword edit2 |
call [edit_box_draw] |
push dword check1 |
call [check_box_draw] |
push dword check2 |
call [check_box_draw] |
push dword Option_boxs |
call [option_box_draw] |
push dword Option_boxs2 |
call [option_box_draw] |
mcall 12,2 |
ret |
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
;DATA ¤ ë¥ |
ini_file db '/sys/lib/box_lib.obj',0 |
myimport: |
edit_box_draw dd aEdit_box_draw |
edit_box_key dd aEdit_box_key |
edit_box_mouse dd aEdit_box_mouse |
version_ed dd aVersion_ed |
check_box_draw dd aCheck_box_draw |
check_box_mouse dd aCheck_box_mouse |
version_ch dd aVersion_ch |
option_box_draw dd aOption_box_draw |
option_box_mouse dd aOption_box_mouse |
version_op dd aVersion_op |
dd 0 |
dd 0 |
aEdit_box_draw db 'edit_box',0 |
aEdit_box_key db 'edit_box_key',0 |
aEdit_box_mouse db 'edit_box_mouse',0 |
aVersion_ed db 'version_ed',0 |
aCheck_box_draw db 'check_box_draw',0 |
aCheck_box_mouse db 'check_box_mouse',0 |
aVersion_ch db 'version_ch',0 |
aOption_box_draw db 'option_box_draw',0 |
aOption_box_mouse db 'option_box_mouse',0 |
aVersion_op db 'version_op',0 |
check1 check_box 10,45,6,12,0x80AABBCC,0,0,check_text,14,ch_flag_en |
check2 check_box 10,60,6,12,0x80AABBCC,0,0,check_text2,15 |
edit1 edit_box 350,3,5,0xffffff,0x6f9480,0,0xAABBCC,0,308,hed,ed_focus,hed_end-hed-1,hed_end-hed-1 |
edit2 edit_box 350,3,25,0xffffff,0x6a9480,0,0,0,99,ed_buffer,ed_figure_only |
op1 option_box option_group1,10,90,6,12,0xffffff,0,0,op_text.1,op_text.e1-op_text.1 |
op2 option_box option_group1,10,105,6,12,0xFFFFFF,0,0,op_text.2,op_text.e2-op_text.2 |
op3 option_box option_group1,10,120,6,12,0xffffff,0,0,op_text.3,op_text.e3-op_text.3 |
op11 option_box option_group2,120,90,6,12,0xffffff,0,0,op_text.1,op_text.e1-op_text.1 |
op12 option_box option_group2,120,105,6,12,0xffffff,0,0,op_text.2,op_text.e2-op_text.2 |
op13 option_box option_group2,120,120,6,12,0xffffff,0,0,op_text.3,op_text.e3-op_text.3 |
option_group1 dd op1 ;㪠§ ⥫¨, ®¨ ®â®¡à ¦ îâáï ¯® 㬮«ç ¨î, ª®£¤ ¢ë¢®¤¨âáï |
option_group2 dd op12 ;¯à¨«®¦¥¨¥ |
Option_boxs dd op1,op2,op3,0 |
Option_boxs2 dd op11,op12,op13,0 |
hed db 'BOXs load from lib <Lrz> date 27.09.2007',0 |
hed_end: |
rb 256 |
check_text db 'First checkbox' |
check_text2 db 'Second checkbox' |
op_text: ; ®¯à®¢®¦¤ î騩 ⥪áâ ¤«ï 祪 ¡®ªá®¢ |
.1 db 'Option_Box #1' |
.e1: |
.2 db 'Option_Box #2' |
.e2: |
.3 db 'Option_Box #3' |
.e3: |
ed_buffer rb 100 |
way_of_ini rb 1024 |
i_end: |
rb 1024 |
mem: |
/programs/develop/libraries/box_lib/trunk/editbox_ex.kex |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/programs/develop/libraries/box_lib/trunk/editbox_ex.mac |
---|
0,0 → 1,77 |
ed_struc_size=72 |
struc edit_box width,left,top,color,shift_color,focus_border_color,\ |
blur_border_color,text_color,max,text,flags,size,pos |
{ |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;Bit mask from editbox |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
ed_figure_only= 1000000000000000b ;®¤¨ ᨬ¢®«ë |
ed_always_focus= 100000000000000b |
ed_focus= 10b ;䮪ãá ¯à¨«®¦¥¨ï |
ed_shift_on= 1000b ;¥á«¨ ¥ ãáâ ®¢«¥ -§ ç¨â ¢¯¥à¢ë¥ ¦ â shift,¥á«¨ ¡ë« ãáâ ®¢«¥, § ç¨â ¬ë 㦥 çâ® - â® ¤¥« «¨ 㤥ন¢ ï shift |
ed_shift_on_off=1111111111110111b |
ed_shift= 100b ;¢ª«îç ¥âáï ¯à¨ ¦ ⨨ shift â.¥. ¥á«¨ ¦¨¬ î |
ed_shift_off= 1111111111111011b |
ed_shift_bac= 10000b ;¡¨â ¤«ï ®ç¨á⪨ ¢ë¤¥«¥®£® shift â.¥. ¯à¨ ãáâ ®¢ª¥ £®¢®à¨â çâ® ¥áâì ¢ë¤¥«¥¨¥ |
ed_shift_bac_cl=1111111111101111b ;®ç¨á⪠¯à¨ 㤠«¥¨¨ ¢ë¤¥«¥¨ï |
ed_shift_cl= 1111111111100011b |
ed_shift_mcl= 1111111111111011b |
ed_left_fl= 100000b |
ed_right_fl= 1111111111011111b |
ed_offset_fl= 1000000b |
ed_offset_cl= 1111111110111111b |
ed_insert= 10000000b |
ed_insert_cl= 1111111101111111b |
ed_mouse_on = 100000000b |
ed_mous_adn_b= 100011000b |
ed_mouse_on_off=1111111011111111b |
ed_height=14 ; ¢ëá®â |
.width dd width |
.left dd left |
.top dd top |
.color dd color |
.shift_color dd shift_color |
.focus_border_color dd focus_border_color |
.blur_border_color dd blur_border_color |
.text_color dd text_color |
.max dd max |
.text dd text |
.flags dd flags+0 |
.size dd size+0 |
.pos dd pos+0 |
.offset dd 0 |
.cl_curs_x dd 0 |
.cl_curs_y dd 0 |
.shift dd 0 |
.shift_old dd 0 |
} |
struc check_box left,top,ch_text_margin,ch_size,color,border_color,text_color,text,ch_text_length,flags |
{ ;áâàãªâãà ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá |
ch_flag_en=10b |
.left: dw left ;+0 ;¯®«®¦¥¨¥ ¯® å |
.top: dw top ;¯®«®¦¥¨¥ ¯® ã |
.ch_text_margin: dd ch_text_margin ;à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨ |
.ch_size: dd ch_size ;à §¬¥à ª¢ ¤à â 祪 ¡®ªá , ¤«ï ¯à¨¬¥à 12 |
.color: dd color ;梥⠢ãâਠ祪¡®ªá |
.border_color: dd border_color ;梥â à ¬ª¨ |
.text_color: dd text_color ;梥⠤¯¨á¨ |
.text: dd text ; ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à ᯮ«®¦¥ ⥪áâ |
.ch_text_length: dd ch_text_length ;¤«¨ áâப¨ á ᨬ¢®« ¬¨ |
.flags: dd flags+0 ; ä« £¨ |
} |
struc option_box point_gr,left,top,op_text_margin,op_size,color,border_color,text_color,text,op_text_length,flags |
{ ;áâàãªâãà ¯ à ¬¥â஢ ¤«ï 祪 ¡®ªá |
op_flag_en=10b |
.option_group: dd point_gr |
.left: dw left ;+0 ;¯®«®¦¥¨¥ ¯® å |
.top: dw top ;¯®«®¦¥¨¥ ¯® ã |
.ch_text_margin: dd op_text_margin ;à ááâ®ï¨¥ ®â ¯àאַ㣮«ì¨ª 祪 ¡®ªá ¤® ¤¯¨á¨ |
.ch_size: dd op_size ;à §¬¥à ª¢ ¤à â 祪 ¡®ªá , ¤«ï ¯à¨¬¥à 12 |
.color: dd color ;梥⠢ãâਠ祪¡®ªá |
.border_color: dd border_color ;梥â à ¬ª¨ |
.text_color: dd text_color ;梥⠤¯¨á¨ |
.text: dd text ; ¤à¥á ¢ ª®¤¥ ¯à®£à ¬¬ë £¤¥ à ᯮ«®¦¥ ⥪áâ |
.ch_text_length: dd op_text_length ;¤«¨ áâப¨ á ᨬ¢®« ¬¨ |
.flags: dd flags+0 ; ä« £¨ |
} |
/programs/develop/libraries/box_lib/trunk/macros.inc |
---|
0,0 → 1,502 |
@^ fix macro comment { |
^@ fix } |
macro m2m dest,src { |
push src |
pop dest |
} |
macro iglobal { |
IGlobals equ IGlobals, |
macro __IGlobalBlock { } |
macro uglobal { |
UGlobals equ UGlobals, |
macro __UGlobalBlock { } |
endg fix } ; Use endg for ending iglobal and uglobal blocks. |
macro IncludeIGlobals{ |
macro IGlobals dummy,[n] \{ __IGlobalBlock |
purge __IGlobalBlock \} |
match I, IGlobals \{ I \} } |
macro IncludeUGlobals{ |
macro UGlobals dummy,[n] \{ |
\common |
\local begin, size |
begin = $ |
virtual at $ |
\forward |
__UGlobalBlock |
purge __UGlobalBlock |
\common |
size = $ - begin |
end virtual |
rb size |
\} |
match U, UGlobals \{ U \} } |
uglobal |
endg |
iglobal |
endg |
; new application structure |
macro meos_app_start |
{ |
use32 |
org 0x0 |
db 'MENUET01' |
dd 0x01 |
dd __start |
dd __end |
dd __memory |
dd __stack |
if used __params & ~defined __params |
dd __params |
else |
dd 0x0 |
end if |
dd 0x0 |
} |
MEOS_APP_START fix meos_app_start |
macro code |
{ |
__start: |
} |
CODE fix code |
macro data |
{ |
__data: |
IncludeIGlobals |
} |
DATA fix data |
macro udata |
{ |
if used __params & ~defined __params |
__params: |
db 0 |
__end: |
rb 255 |
else |
__end: |
end if |
__udata: |
IncludeUGlobals |
} |
UDATA fix udata |
macro meos_app_end |
{ |
align 32 |
rb 2048 |
__stack: |
__memory: |
} |
MEOS_APP_END fix meos_app_end |
; macro for defining multiline text data |
struc mstr [sstring] |
{ |
forward |
local ssize |
virtual at 0 |
db sstring |
ssize = $ |
end virtual |
dd ssize |
db sstring |
common |
dd -1 |
} |
; macro for defining multiline text data |
struc mls [sstring] |
{ |
forward |
local ssize |
virtual at 0 |
db sstring ; mod |
ssize = $ |
end virtual |
db ssize |
db sstring |
common |
db -1 ; mod |
} |
; strings |
macro sz name,[data] { ; from MFAR [mike.dld] |
common |
if used name |
name db data |
.size = $-name |
end if |
} |
macro lsz name,[lng,data] { ; from MFAR [mike.dld] |
common |
if used name |
label name |
forward |
if lang eq lng |
db data |
end if |
common |
.size = $-name |
end if |
} |
macro szc name,elsz,[data] { ; from MFAR [mike.dld] |
common |
local s,m |
m = 0 |
if used name |
label name |
forward |
virtual at 0 |
db data |
s = $ |
end virtual |
d#elsz s |
if m < s |
m = s |
end if |
db data |
common |
.size = $-name |
.maxl = m |
end if |
} |
macro lszc name,elsz,[lng,data] { ; from MFAR [mike.dld] |
common |
local s,m,c |
m = 0 |
c = 0 |
if used name |
label name |
forward |
if lang eq lng |
virtual at 0 |
db data |
s = $ |
end virtual |
d#elsz s |
if m < s |
m = s |
end if |
db data |
c = c+1 |
end if |
common |
.size = $-name |
.maxl = m |
.count = c |
end if |
} |
; easy system call macro |
macro mpack dest, hsrc, lsrc |
{ |
if (hsrc eqtype 0) & (lsrc eqtype 0) |
mov dest, (hsrc) shl 16 + lsrc |
else |
if (hsrc eqtype 0) & (~lsrc eqtype 0) |
mov dest, (hsrc) shl 16 |
add dest, lsrc |
else |
mov dest, hsrc |
shl dest, 16 |
add dest, lsrc |
end if |
end if |
} |
macro __mov reg,a,b { ; mike.dld |
if (~a eq)&(~b eq) |
mpack reg,a,b |
else if (~a eq)&(b eq) |
mov reg,a |
end if |
} |
include 'config.inc' |
;__CPU_type equ p5 |
SYSENTER_VAR equ 0 |
macro mcall a,b,c,d,e,f,i { ; mike.dld, updated by Ghost for Fast System Calls |
local ..ret_point |
__mov eax,a |
__mov ebx,b |
__mov ecx,c |
__mov edx,d |
__mov esi,e |
__mov edi,f |
__mov ebp,i |
if __CPU_type eq p5 |
int 0x40 |
else |
if __CPU_type eq p6 |
push ebp |
mov ebp, esp |
push ..ret_point ; it may be 2 or 5 byte |
sysenter |
..ret_point: |
pop edx |
pop ecx |
else |
if __CPU_type eq k6 |
push ecx |
syscall |
pop ecx |
else |
display 'ERROR : unknown CPU type' |
int 0x40 |
end if |
end if |
end if |
} |
; ------------------------- |
macro header a,[b] { |
common |
use32 |
org 0 |
db 'MENUET',a |
forward |
if b eq |
dd 0 |
else |
dd b |
end if } |
macro section name { align 16 |
label name } |
macro func name { |
if ~used name |
display 'FUNC NOT USED: ',`name,13,10 |
else |
align 4 |
name: |
;diff16 `name,0,name |
;pushad |
;pushfd |
;dps `name |
;newline |
;mcall 5,1 |
;popfd |
;popad |
} |
macro endf { end if } |
macro diff16 title,l1,l2 |
{ |
local s,d |
s = l2-l1 |
display title,': 0x' |
repeat 8 |
d = '0' + s shr ((8-%) shl 2) and $0F |
if d > '9' |
d = d + 'A'-'9'-1 |
end if |
display d |
end repeat |
display 13,10 |
} |
macro diff10 title,l1,l2 |
{ |
local s,d,z,m |
s = l2-l1 |
z = 0 |
m = 1000000000 |
display title,': ' |
repeat 10 |
d = '0' + s / m |
s = s - (s/m)*m |
m = m / 10 |
if d <> '0' |
z = 1 |
end if |
if z <> 0 |
display d |
end if |
end repeat |
display 13,10 |
} |
; optimize the code for size |
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp> |
macro add arg1,arg2 |
{ |
if (arg2 eqtype 0) |
if (arg2) = 1 |
inc arg1 |
else |
add arg1,arg2 |
end if |
else |
add arg1,arg2 |
end if |
} |
macro sub arg1,arg2 |
{ |
if (arg2 eqtype 0) |
if (arg2) = 1 |
dec arg1 |
else |
sub arg1,arg2 |
end if |
else |
sub arg1,arg2 |
end if |
} |
macro mov arg1,arg2 |
{ |
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0')) |
if (arg2) = 0 |
xor arg1,arg1 |
else if (arg2) = 1 |
xor arg1,arg1 |
inc arg1 |
else if (arg2) = -1 |
or arg1,-1 |
else if (arg2) > -128 & (arg2) < 128 |
push arg2 |
pop arg1 |
else |
mov arg1,arg2 |
end if |
else |
mov arg1,arg2 |
end if |
} |
macro RGB [a] { |
common |
match (r=,g=,b),a \{ |
\dd ((r) shl 16) or ((g) shl 8) or (b) |
\} |
} |
struc POINT _t,_dx,_dy { |
.x _t _dx |
.y _t _dy |
} |
; structure definition helper |
include 'struct.inc' |
struct RECT |
left dd ? |
top dd ? |
right dd ? |
bottom dd ? |
ends |
struct BOX |
left dd ? |
top dd ? |
width dd ? |
height dd ? |
ends |
; structures used in MeOS |
struct process_information |
cpu_usage dd ? ; +0 |
window_stack_position dw ? ; +4 |
window_stack_value dw ? ; +6 |
dw ? ; +8 |
process_name rb 12 ; +10 |
memory_start dd ? ; +22 |
used_memory dd ? ; +26 |
PID dd ? ; +30 |
box BOX ; +34 |
slot_state dw ? ; +50 |
dw ? ; +52 |
client_box BOX ; +54 |
wnd_state db ? ; +70 |
rb (1024-71) |
ends |
struct system_colors |
frame dd ? |
grab dd ? |
grab_button dd ? |
grab_button_text dd ? |
grab_text dd ? |
work dd ? |
work_button dd ? |
work_button_text dd ? |
work_text dd ? |
work_graph dd ? |
ends |
struct FILEDATE |
Second db ? |
Minute db ? |
Hour db ? |
db ? |
Day db ? |
Month db ? |
Year dw ? |
ends |
struct FILEINFO |
Attributes dd ? |
IsUnicode db ? |
db 3 dup(?) |
DateCreate FILEDATE |
DateAccess FILEDATE |
DateModify FILEDATE |
Size dq ? |
ends |
; constants |
; events |
EV_IDLE = 0 |
EV_TIMER = 0 |
EV_REDRAW = 1 |
EV_KEY = 2 |
EV_BUTTON = 3 |
EV_EXIT = 4 |
EV_BACKGROUND = 5 |
EV_MOUSE = 6 |
EV_IPC = 7 |
EV_STACK = 8 |
; event mask bits for function 40 |
EVM_REDRAW = 1b |
EVM_KEY = 10b |
EVM_BUTTON = 100b |
EVM_EXIT = 1000b |
EVM_BACKGROUND = 10000b |
EVM_MOUSE = 100000b |
EVM_IPC = 1000000b |
EVM_STACK = 10000000b |
/programs/develop/libraries/box_lib/trunk/optionbox.mac |
---|
0,0 → 1,201 |
;ôàéë ñîçäàí 13.02.2009 <Lrz> Íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
;Ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
;Optionbox |
macro use_optionbox_driver ;ìàêðîñû êîòîðûå óïðàâëÿþò ðàáîòîé áîêñà ) |
{ |
option_box_draw: |
pusha |
mov eax,dword [esp+36] |
@@: mov edi,dword [eax] |
test edi,edi |
je option_check |
call option_box_draw_box |
add eax,4 |
jmp @b |
option_check: |
mov eax,dword [esp+36] |
@@: mov edi,dword [eax] |
test edi,edi |
je @f |
mov ebx,dword [edi] |
mov ebx,dword [ebx] |
cmp edi,ebx |
jne .clear_op |
pusha |
call option_box_draw_op |
popa |
add eax,4 |
jmp @b |
.clear_op: |
pusha |
call option_box_clear_op |
popa |
add eax,4 |
jmp @b |
@@: popa |
ret 4 |
; exit âîîáùå :) |
option_box_mouse: |
pusha |
mov eax,dword [esp+36] |
@@: mov edi,dword [eax] |
test edi,edi |
je option_check |
call option_box_mouse_op |
add eax,4 |
jmp @b |
} |
macro use_optionbox_draw |
{ |
option_box_draw_box: |
option_group equ [edi] |
op_left equ [edi+4] ;êîîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî õ |
op_top equ [edi+6] ;êîîðäèíàòà íà÷àëà ðèñîâàíèÿ ïî ó |
op_text_margin equ [edi+8] ;=4 ðàññòîÿíèå îò ïðÿìîóãîëüíèêà ÷åê áîêñà äî íàäïèñè |
op_size equ [edi+12] ;12 ðàçìåð êâàäðàòà ÷åê áîêñà |
op_color equ [edi+16] |
op_border_color equ [edi+20] ; or [edi+4] ;öâåò ðàìêè checkbox åå ìîæíî çàäàòü ñàìîñòîÿòåëüíî |
op_text_color equ [edi+24];[edi+4] ;öâåò òåêñòà |
op_text_ptr equ [edi+28] ;óêàçàòåëü íà íà÷àëî òåêñòîâîé ñòðîêè |
op_text_length equ [edi+32] |
op_flags equ [edi+36] ;ôëàãè |
pusha ;ñîõðàíèì âñå ðåãèñòðû |
movzx ebx,word op_left |
shl ebx,16 |
add ebx,dword op_size |
movzx ecx,word op_top |
shl ecx,16 |
add ecx,dword op_size |
mov edx,dword op_border_color |
mov eax,13 |
mcall ;ðèñóåì ðàìêó |
mov edx,dword op_color |
add ebx,1 shl 16 - 2 |
add ecx,1 shl 16 - 2 |
mcall ;çàêðàøèâàåì âíóòðåííîñòè ÷åêáîêñà |
; mov eax,dword option_group |
; mov dword eax,[eax] |
; cmp eax,edi |
; jne @f |
; call option_box_draw_op ;íàðèñîâàòü âêëþ÷åííûé ÷åê áîêñ |
;---------------------------- |
;ðàñ÷åò êóäà áóäåò ïðîèçâåäåí âûâîä òåêñòà |
;---------------------------- |
@@: movzx ebx,word op_left ;çàãðóçèòü çíà÷åíèå õ äëÿ ÷åê áîêñà |
add ebx,dword op_size |
add ebx,dword op_text_margin;äîáàâèòü ðàçìåð ñòîðîíû è ðàññòîÿíèå íà êîòîðîì íà÷íåòñÿ âûâîä òåêñòà |
shl ebx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
mov bx,word op_top ;çàãðóçèì çíà÷åíèå ïî y |
add ebx,op_size |
mov ecx,dword op_text_color ;çàãðóçèì öâåò íàäïèñè + flags |
sub ebx,7 ;äîáàâèì çíà÷åíèå äëèíû ñòîðîíû -9+2 |
mov edx,dword op_text_ptr ;óêàæåì àäðåñ îò êóäà íóæíî âûâîäèòü ñòðîêó |
mov esi,dword op_text_length |
;âíåñåì â eax çíà÷åíèå âûâîäà íàäïèñè íà êàíâó |
mov eax,4 |
mcall ;Âûâîä |
popa ;âîññòàíîâèòü çíà÷åíèÿ ðåãèñòðîâ èç ñòåêà |
ret ;âûéäåì èç ïðîöåäóðû |
option_box_clear_op: ;î÷èñòêà ÷åê áîêñà |
mov edx,dword op_color ;öâåò âíóòðè ÷åê áîêñà |
jmp @f ;áåçóñëîâíûé ïðûæîê íà íèæíþþ ìåòêó @@ |
option_box_draw_op: ;íàðèñîâàòü âêëþ÷åííûé ÷åê áîêñ |
mov edx,dword op_border_color ;çàãðóçèòü öâåò |
@@: |
movzx ebx,word op_left ;çàãðóçèòü êîîðäèíàòó ïî õ |
mov eax,dword op_size |
push ax |
shr eax,2 |
add ebx,eax ;äîáàâèòü (ñòîðîíà ïðÿìîóãîëüíèêà/3) |
shl ebx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
pop bx |
shr bx,1 ;çàãðóçèòü (ñòîðîíà ïðÿìîóãîëüíèêà/2) |
mov bp,bx ;ñîõðàíèì ðåãèñòð bx â ðåãèñòðå óêàçàòåëÿ áàçû |
movzx ecx,word op_top ;çàãðóçèòü êîîðäèíàòó ïî ó |
mov eax,dword op_size |
shr eax,2 |
add ecx,eax ;äîáàâèòü (ñòîðîíà ïðÿìîóãîëüíèêà/4) |
shl ecx,16 ;ñäâèíåì íà 16 ðàçðÿäîâ â ëåâî (óìíîæèì íà 65536) |
mov cx,bp ;çàãðóçèì çíà÷åíèÿ ðåãèñòðà óêàçàòåëÿ áàçû â cx |
mov eax,13 ;â eax - çíà÷åíèÿ ôóíêöèè äëÿ âûâîäà ïîëîñû ò.å. ïî ñóòè ïðÿìîóãîëüíèêà, êîòîðûé îòîáðàæàåò âêëþ÷åííûé êîìïîíåíò ÷åê áîêñ |
mcall ;âûâîä |
ret ;âûéòè èç ïðîöåäóðû |
} |
macro use_optionbox_mouse |
{ |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;Îáðàáîò÷èê mouse |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
option_box_mouse_op: ;îáðàáîòêà ìûøè |
pusha |
mov eax,37 ;áóäåì ÷òî òî äåëàòü åñëè ó íàñ ÷òî - íèòü íàæàòî |
mov ebx,2 ;âíåñòè â ðåãèñòð çíà÷åíèå 2 |
mcall ;ïðîâåðêà íå íàæàë ëè ïîëüçîâàòåëü êíîïêó ìûøêè |
test eax,eax ;ïðîâåðêà åñëè ó íàñ â eax=0, òî óñòàíîâèì ôëàã è âûéäåì |
jnz @f ;ïåðåéòè íà íèæíþþ ìåòêó @@ |
jmp option_box_mouse_end |
;åñëè íè÷åãî íå ïðîèçîøëî, òî âîññòàíîâèì çíà÷åíèÿ ðåãèñòðîâ èç ñòåêà |
;âûõîä |
@@: |
mov esi,dword op_text_length ;çàãðóçèòü êîë-âî ñèìâîëîâ â òåêñòîâîé ñòðîêå |
;Óìíîæåíèå íà 6 Áûñòðîå óìíîæåíèå ìîæíî âîñïîëüçîâàòüñÿ ëþáûì ìç ìåòîäîâ, íî íà ñòàðûõ Ïðîöåññîðàõ (386,486,P1)áûñòðåå áóäåò ñ èíñòðóêöèåé Lea |
;lea esi,[eax*2+eax] |
;shl eax,1 |
imul esi,6 ; èëè ìîæíî è òàê óìíîæèòü íà 6 |
xor ebx,ebx |
add esi,dword op_text_margin ;äîáàâèòü 3 - ðàññòîÿíèå îò ÷åê áîêñà äî íàäïèñè |
mov eax,37 ;ïîëó÷èì êîîðäèíàòû ìûøêè |
inc ebx ;äîáàâèòü 1 |
mcall ;ïîëó÷èòü êîîðäèíàòû êóðñîðà îòíîñèòåëüíî îêíà |
movzx ebx,word op_top ;çàãðóçèòü â bx çíà÷åíèå êîîðäèíàòû ó |
cmp ax,bx ;ñðàâíèòü ñ ñ êîîðäèíàòîé êóðñîðà |
jl option_box_mouse_end ;SF <> OF åñëè ìåíüøå |
add ebx,dword op_size ;äîáàâèòü ðàçìåð |
cmp ax,bx ;ñðàâíèòü |
jg option_box_mouse_end ;ZF = 0 è SF = OF åñëè áîëüøå |
shr eax,16 ;ðàçäåëèì íà 65536 èëè ïðîñòî ñäâèíåì áèòû íà 16 çíà÷åíèé |
movzx ebx,word op_left ;ïðîèçâåäåì àíàëîãè÷íîå ñðàâíåíèå |
cmp ax,bx ;ñðàâíèòü ðåãèñòðû |
jl option_box_mouse_end ;åñëè ìåíüøå |
add ebx,dword op_size ;äîáàâèòü äëèíó ñòîðîíû ïðÿìîóãîëüíèêà |
add ebx,esi ;Ó÷åñòü â çíà÷åíèè ïî õ åùå è äëèíó íàäïèñè ê ÷åêáîêñó |
cmp ax,bx ;ñòðàâíèòü ðåãèñòðû |
jg option_box_mouse_end ;åñëè áîëüøå |
mov eax,dword option_group |
mov [eax],edi |
option_box_mouse_end: |
popa ;âîññòàíîâèòü ðåãèñòðû èç ñòåêà |
ret ;âûéòè |
} |
/programs/develop/libraries/box_lib/trunk/proc32.inc |
---|
0,0 → 1,270 |
; Macroinstructions for defining and calling procedures |
macro stdcall proc,[arg] ; directly call STDCALL procedure |
{ common |
if ~ arg eq |
reverse |
pushd arg |
common |
end if |
call proc } |
macro invoke proc,[arg] ; indirectly call STDCALL procedure |
{ common |
if ~ arg eq |
reverse |
pushd arg |
common |
end if |
call [proc] } |
macro ccall proc,[arg] ; directly call CDECL procedure |
{ common |
size@ccall = 0 |
if ~ arg eq |
reverse |
pushd arg |
size@ccall = size@ccall+4 |
common |
end if |
call proc |
if size@ccall |
add esp,size@ccall |
end if } |
macro cinvoke proc,[arg] ; indirectly call CDECL procedure |
{ common |
size@ccall = 0 |
if ~ arg eq |
reverse |
pushd arg |
size@ccall = size@ccall+4 |
common |
end if |
call [proc] |
if size@ccall |
add esp,size@ccall |
end if } |
macro proc [args] ; define procedure |
{ common |
match name params, args> |
\{ define@proc name,<params \} } |
prologue@proc equ prologuedef |
macro prologuedef procname,flag,parmbytes,localbytes,reglist |
{ if parmbytes | localbytes |
push ebp |
mov ebp,esp |
if localbytes |
sub esp,localbytes |
end if |
end if |
irps reg, reglist \{ push reg \} } |
epilogue@proc equ epiloguedef |
macro epiloguedef procname,flag,parmbytes,localbytes,reglist |
{ irps reg, reglist \{ reverse pop reg \} |
if parmbytes | localbytes |
leave |
end if |
if flag and 10000b |
retn |
else |
retn parmbytes |
end if } |
macro define@proc name,statement |
{ local params,flag,regs,parmbytes,localbytes,current |
if used name |
name: |
match =stdcall args, statement \{ params equ args |
flag = 11b \} |
match =stdcall, statement \{ params equ |
flag = 11b \} |
match =c args, statement \{ params equ args |
flag = 10001b \} |
match =c, statement \{ params equ |
flag = 10001b \} |
match =params, params \{ params equ statement |
flag = 0 \} |
virtual at ebp+8 |
match =uses reglist=,args, params \{ regs equ reglist |
params equ args \} |
match =regs =uses reglist, regs params \{ regs equ reglist |
params equ \} |
match =regs, regs \{ regs equ \} |
match =,args, params \{ defargs@proc args \} |
match =args@proc args, args@proc params \{ defargs@proc args \} |
parmbytes = $ - (ebp+8) |
end virtual |
name # % = parmbytes/4 |
all@vars equ |
current = 0 |
match prologue:reglist, prologue@proc:<regs> \{ prologue name,flag,parmbytes,localbytes,reglist \} |
macro locals |
\{ virtual at ebp-localbytes+current |
macro label def \\{ match . type,def> \\\{ deflocal@proc .,label,<type \\\} \\} |
struc db [val] \\{ \common deflocal@proc .,db,val \\} |
struc du [val] \\{ \common deflocal@proc .,du,val \\} |
struc dw [val] \\{ \common deflocal@proc .,dw,val \\} |
struc dp [val] \\{ \common deflocal@proc .,dp,val \\} |
struc dd [val] \\{ \common deflocal@proc .,dd,val \\} |
struc dt [val] \\{ \common deflocal@proc .,dt,val \\} |
struc dq [val] \\{ \common deflocal@proc .,dq,val \\} |
struc rb cnt \\{ deflocal@proc .,rb cnt, \\} |
struc rw cnt \\{ deflocal@proc .,rw cnt, \\} |
struc rp cnt \\{ deflocal@proc .,rp cnt, \\} |
struc rd cnt \\{ deflocal@proc .,rd cnt, \\} |
struc rt cnt \\{ deflocal@proc .,rt cnt, \\} |
struc rq cnt \\{ deflocal@proc .,rq cnt, \\} \} |
macro endl |
\{ purge label |
restruc db,du,dw,dp,dd,dt,dq |
restruc rb,rw,rp,rd,rt,rq |
current = $-(ebp-localbytes) |
end virtual \} |
macro ret operand |
\{ match any, operand \\{ retn operand \\} |
match , operand \\{ match epilogue:reglist, epilogue@proc:<regs> |
\\\{ epilogue name,flag,parmbytes,localbytes,reglist \\\} \\} \} |
macro finish@proc \{ localbytes = (((current-1) shr 2)+1) shl 2 |
end if \} } |
macro defargs@proc [arg] |
{ common |
if ~ arg eq |
forward |
local ..arg,current@arg |
match argname:type, arg |
\{ current@arg equ argname |
label ..arg type |
argname equ ..arg |
if dqword eq type |
dd ?,?,?,? |
else if tbyte eq type |
dd ?,?,? |
else if qword eq type | pword eq type |
dd ?,? |
else |
dd ? |
end if \} |
match =current@arg,current@arg |
\{ current@arg equ arg |
arg equ ..arg |
..arg dd ? \} |
common |
args@proc equ current@arg |
forward |
restore current@arg |
common |
end if } |
macro deflocal@proc name,def,[val] |
{ common |
match vars, all@vars \{ all@vars equ all@vars, \} |
all@vars equ all@vars name |
forward |
local ..var,..tmp |
match =label,def \{ ..tmp equ \} |
match tmp,..tmp \{ ..var def val \} |
match ,..tmp \{ label ..var val \} |
match =?, val \{ ..tmp equ \} |
match any =dup (=?), val \{ ..tmp equ \} |
match tmp : value, ..tmp : val |
\{ tmp: end virtual |
initlocal@proc ..var,def value |
virtual at tmp\} |
common |
match first rest, ..var, \{ name equ first \} } |
macro initlocal@proc name,def |
{ virtual at name |
def |
size@initlocal = $ - name |
end virtual |
position@initlocal = 0 |
while size@initlocal > position@initlocal |
virtual at name |
def |
if size@initlocal - position@initlocal < 2 |
current@initlocal = 1 |
load byte@initlocal byte from name+position@initlocal |
else if size@initlocal - position@initlocal < 4 |
current@initlocal = 2 |
load word@initlocal word from name+position@initlocal |
else |
current@initlocal = 4 |
load dword@initlocal dword from name+position@initlocal |
end if |
end virtual |
if current@initlocal = 1 |
mov byte [name+position@initlocal],byte@initlocal |
else if current@initlocal = 2 |
mov word [name+position@initlocal],word@initlocal |
else |
mov dword [name+position@initlocal],dword@initlocal |
end if |
position@initlocal = position@initlocal + current@initlocal |
end while } |
macro endp |
{ purge ret,locals,endl |
finish@proc |
purge finish@proc |
restore regs@proc |
match all,args@proc \{ restore all \} |
restore args@proc |
match all,all@vars \{ restore all \} } |
macro local [var] |
{ common |
locals |
forward done@local equ |
match varname[count]:vartype, var |
\{ match =BYTE, vartype \\{ varname rb count |
restore done@local \\} |
match =WORD, vartype \\{ varname rw count |
restore done@local \\} |
match =DWORD, vartype \\{ varname rd count |
restore done@local \\} |
match =PWORD, vartype \\{ varname rp count |
restore done@local \\} |
match =QWORD, vartype \\{ varname rq count |
restore done@local \\} |
match =TBYTE, vartype \\{ varname rt count |
restore done@local \\} |
match =DQWORD, vartype \\{ label varname dqword |
rq count+count |
restore done@local \\} |
match , done@local \\{ virtual |
varname vartype |
end virtual |
rb count*sizeof.\#vartype |
restore done@local \\} \} |
match :varname:vartype, done@local:var |
\{ match =BYTE, vartype \\{ varname db ? |
restore done@local \\} |
match =WORD, vartype \\{ varname dw ? |
restore done@local \\} |
match =DWORD, vartype \\{ varname dd ? |
restore done@local \\} |
match =PWORD, vartype \\{ varname dp ? |
restore done@local \\} |
match =QWORD, vartype \\{ varname dq ? |
restore done@local \\} |
match =TBYTE, vartype \\{ varname dt ? |
restore done@local \\} |
match =DQWORD, vartype \\{ label varname dqword |
dq ?,? |
restore done@local \\} |
match , done@local \\{ varname vartype |
restore done@local \\} \} |
match ,done@local |
\{ var |
restore done@local \} |
common |
endl } |
/programs/develop/libraries/box_lib/trunk/readme.txt |
---|
0,0 → 1,14 |
<Lrz> Òåïëîâ Àëåêñåé, ×åëÿáèíñê. |
Ïðèìåð ïðîñòîãî èñïëüçîâàíèÿ editbox â áèáëèîòåêå, |
EditBox ïåðåïèñàí äëÿ ðàáîòû â áèáëèîòåêå. |
Äàòà 25.06.2008 |
ñäåëàíà ïîääåðæêà çàïóñêà àññåìáëåðíîãî ïðèìåðà ïðè ðàñïîëîæåíèè òåêóùåé áèáëèîòåêè ïî 2-ì ìåñòàì |
1. /sys/lib/box_lib.obj è êîãäà áèáëèîòåêà íàõîäèòüñÿ â ïàïêå ñ ïðîãðàììîé. |
Äàòà 21.09.2007 |
Ñäåëàí óïîð íà ïîääðåæêó Ñ è ïåðåäà÷è ïàðàìåòðîâ â ñòåêå stdcall. |
Íà äàííûé ìîìåíò, íîñèò ýêñïåðåìåíòàëüíûé, òåñòîâûé õàðàêòåð. |
Áèáëèîòåêó box_lib.obj íóæíî ïîìåñòèòü â ïàïêó ñ âûïîëíÿþùåéñÿ ïðîãðàììîé editbox_ex, èëè ïî àäðåñó /sys/lib/? íî òîãäà íóæíî ïîäìåíèòü ïóòü â ôàéëå ini_file íà ïóòü ê áèáëèîòåêå |
. Ïðèìåð ñàì âû÷èñëÿåò ïóòü ê áèáëèîòåêå, íå çàâèñèìî îò ñâîåãî ìåñòîðàñïîëîæåíèÿ |
13.09.2009 - îáðàáîòêà êëàâèøü NUM, Caps,Scroll Lock. Ïðè íàæàòèè íà íèõ, íå ïðîèñõîäèò îòîáðàæåíèå ñèìâîëà. |
24.09.2007 - ñäåëàë ïîääðåæêó checkbox. Äîáàâèë îøèáêè, ïðîãðàììà ãëþ÷èò î÷åíü ñåðüåçíî :( |
/programs/develop/libraries/box_lib/trunk/run.bat |
---|
0,0 → 1,4 |
@fasm.exe -m 16384 box_lib.asm |
@fasm.exe -m 16384 editbox_ex.asm editbox_ex.kex |
REM ..\FASM\kpack.exe editbox_ex |
@klbrinwin.exe editbox_ex.kex |
/programs/develop/libraries/box_lib/trunk/struct.inc |
---|
0,0 → 1,180 |
; Macroinstructions for defining data structures |
macro struct name |
{ fields@struct equ name |
match child parent, name \{ fields@struct equ child,fields@\#parent \} |
sub@struct equ |
struc db [val] \{ \common fields@struct equ fields@struct,.,db,<val> \} |
struc dw [val] \{ \common fields@struct equ fields@struct,.,dw,<val> \} |
struc du [val] \{ \common fields@struct equ fields@struct,.,du,<val> \} |
struc dd [val] \{ \common fields@struct equ fields@struct,.,dd,<val> \} |
struc dp [val] \{ \common fields@struct equ fields@struct,.,dp,<val> \} |
struc dq [val] \{ \common fields@struct equ fields@struct,.,dq,<val> \} |
struc dt [val] \{ \common fields@struct equ fields@struct,.,dt,<val> \} |
struc rb count \{ fields@struct equ fields@struct,.,db,count dup (?) \} |
struc rw count \{ fields@struct equ fields@struct,.,dw,count dup (?) \} |
struc rd count \{ fields@struct equ fields@struct,.,dd,count dup (?) \} |
struc rp count \{ fields@struct equ fields@struct,.,dp,count dup (?) \} |
struc rq count \{ fields@struct equ fields@struct,.,dq,count dup (?) \} |
struc rt count \{ fields@struct equ fields@struct,.,dt,count dup (?) \} |
macro db [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,db,<val> \} |
macro dw [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,dw,<val> \} |
macro du [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,du,<val> \} |
macro dd [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,dd,<val> \} |
macro dp [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,dp,<val> \} |
macro dq [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,dq,<val> \} |
macro dt [val] \{ \common \local anonymous |
fields@struct equ fields@struct,anonymous,dt,<val> \} |
macro rb count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,db,count dup (?) \} |
macro rw count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,dw,count dup (?) \} |
macro rd count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,dd,count dup (?) \} |
macro rp count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,dp,count dup (?) \} |
macro rq count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,dq,count dup (?) \} |
macro rt count \{ \local anonymous |
fields@struct equ fields@struct,anonymous,dt,count dup (?) \} |
macro union \{ fields@struct equ fields@struct,,union,< |
sub@struct equ union \} |
macro struct \{ fields@struct equ fields@struct,,substruct,< |
sub@struct equ substruct \} |
virtual at 0 } |
macro ends |
{ match , sub@struct \{ restruc db,dw,du,dd,dp,dq,dt |
restruc rb,rw,rd,rp,rq,rt |
purge db,dw,du,dd,dp,dq,dt |
purge rb,rw,rd,rp,rq,rt |
purge union,struct |
match name=,fields,fields@struct \\{ fields@struct equ |
make@struct name,fields |
fields@\\#name equ fields \\} |
end virtual \} |
match any, sub@struct \{ fields@struct equ fields@struct> \} |
restore sub@struct } |
macro make@struct name,[field,type,def] |
{ common |
if $ |
display 'Error: definition of ',`name,' contains illegal instructions.',0Dh,0Ah |
err |
end if |
local define |
define equ name |
forward |
local sub |
match , field \{ make@substruct type,name,sub def |
define equ define,.,sub, \} |
match any, field \{ define equ define,.#field,type,<def> \} |
common |
match fields, define \{ define@struct fields \} } |
macro define@struct name,[field,type,def] |
{ common |
local list |
list equ |
forward |
if ~ field eq . |
name#field type def |
sizeof.#name#field = $ - name#field |
else |
rb sizeof.#type |
end if |
local value |
match any, list \{ list equ list, \} |
list equ list <value> |
common |
sizeof.#name = $ |
restruc name |
match values, list \{ |
struc name value \\{ |
match any, fields@struct \\\{ fields@struct equ fields@struct,.,name,<values> \\\} |
match , fields@struct \\\{ label . |
forward |
match , value \\\\{ field type def \\\\} |
match any, value \\\\{ field type value |
if ~ field eq . |
rb sizeof.#name#field - ($-field) |
end if \\\\} |
common \\\} \\} \} } |
macro enable@substruct |
{ macro make@substruct substruct,parent,name,[field,type,def] |
\{ \common |
\local define |
define equ parent,name |
\forward |
\local sub |
match , field \\{ match any, type \\\{ enable@substruct |
make@substruct type,name,sub def |
purge make@substruct |
define equ define,.,sub, \\\} \\} |
match any, field \\{ define equ define,.\#field,type,<def> \\} |
\common |
match fields, define \\{ define@\#substruct fields \\} \} } |
enable@substruct |
macro define@union parent,name,[field,type,def] |
{ common |
virtual at 0 |
forward |
if ~ field eq . |
virtual at 0 |
parent#field type def |
sizeof.#parent#field = $ - parent#field |
end virtual |
if sizeof.#parent#field > $ |
rb sizeof.#parent#field - $ |
end if |
else if sizeof.#type > $ |
rb sizeof.#type - $ |
end if |
common |
sizeof.#name = $ |
end virtual |
struc name [value] \{ \common |
label .\#name |
last@union equ |
forward |
match any, last@union \\{ virtual at .\#name |
field type def |
end virtual \\} |
match , last@union \\{ match , value \\\{ field type def \\\} |
match any, value \\\{ field type value \\\} \\} |
last@union equ field |
common rb sizeof.#name - ($ - .\#name) \} } |
macro define@substruct parent,name,[field,type,def] |
{ common |
virtual at 0 |
forward |
if ~ field eq . |
parent#field type def |
sizeof.#parent#field = $ - parent#field |
else |
rb sizeof.#type |
end if |
local value |
common |
sizeof.#name = $ |
end virtual |
struc name value \{ |
label .\#name |
forward |
match , value \\{ field type def \\} |
match any, value \\{ field type value |
if ~ field eq . |
rb sizeof.#parent#field - ($-field) |
end if \\} |
common \} } |
/programs/develop/libraries/box_lib/trunk |
---|
Property changes: |
Added: tsvn:logminsize |
+5 |
\ No newline at end of property |
/programs/develop/libraries/box_lib/. |
---|
Property changes: |
Added: tsvn:logminsize |
+5 |
\ No newline at end of property |