Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 1023 → Rev 1032

/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