/programs/network/htmlv/browser/HTMLv.c |
---|
22,7 → 22,7 |
#define URL param |
char editURL[4096], |
char editURL[sizeof(URL)], |
page_links[12000], |
header[300]; |
31,7 → 31,7 |
}; |
int mouse_dd; |
edit_box edit1= {250,207,16,0xffffff,0x94AECE,0xffffff,0xffffff,0,248,#editURL,#mouse_dd,2,19,19}; |
edit_box edit1= {250,207,16,0xffffff,0x94AECE,0xffffff,0xffffff,0,sizeof(editURL),#editURL,#mouse_dd,2,19,19}; |
scroll_bar scroll1 = { 18,200,398, 44,18,0,115,15,0,0xeeeeee,0xD2CED0,0x555555,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1}; //details in scroll_lib.h-- |
183,7 → 183,7 |
void Draw_Window() |
{ |
int j; |
DefineAndDrawWindow(215,100,WIN_W,WIN_H,0x73,0x00E4DFE1,0,0,0); |
DefineAndDrawWindow(215,100,WIN_W,WIN_H,0x73,0x00E4DFE1,0); |
GetProcessInfo(#Form, SelfInfo); |
if (Form.status_window>2) //åñëè ñâåðíóòî â çàãîëîâîê, íè÷åãî íå ðèñóåì |
215,7 → 215,7 |
} |
int onLeft(dword right,left) {return Form.width-right-left;} |
int onTop(dword down,up) {return Form.height-GetSkinWidth()-down-up;} |
int onTop(dword down,up) {return Form.height-GetSkinHeight()-down-up;} |
stop: |
/programs/network/htmlv/browser/History.txt |
---|
1,3 → 1,15 |
16.07.12 - 0.96b |
- íåáîëüøèå óëó÷øåíèÿ â îáðàáîòêå ññûëîê è èçîáðàæåíèé; |
- âêëþ÷åíèå îáðàáîòêè ðàçðûâîâ ñòðîê ÷åðåç ìåíþ. |
14.07.12 - 0.96 |
- èñïðàâëåí áàã ñî ñòðîêîé àäðåñà |
- èñïðàâëåí áàã ñ íåçàêðûòûìè òåãàìè <a> |
- ÷àñòè÷íî èñïðàâëåí áàã ñ äëèííûìè àäðåñàìè óðëîâ |
- ìåíþ - íîâîå îêíî |
22.06.12 - 0.95 |
22.06.12 - 0.94c |
- èñïðâëåíà ðåãðåññèÿ ñî ññûëêàìè; |
- èñïðàâëåíà ðåãðåññèÿ ñ ïîëçóíêîì; |
/programs/network/htmlv/browser/TWB.h |
---|
8,7 → 8,7 |
char download_path[]="/rd/1/.download"; |
char search_path[]="http://nigma.ru/index.php?s="; |
char version[]=" Text-based Browser 0.95"; |
char version[]=" Text-based Browser 0.96b"; |
struct TWebBrowser { |
46,7 → 46,7 |
tag[100], |
tagparam[10000], |
parametr[1200], |
options[1000]; |
options[4096]; |
#include "include\history.h" |
#include "include\colors.h" |
83,11 → 83,19 |
if (!strcmp(#URL + strlen(#URL) - 4, ".gif")) || (!strcmp(#URL + strlen(#URL) - 4, ".png")) || (!strcmp(#URL + strlen(#URL) - 4, ".jpg")) |
{ |
//if (strstr(#URL,"http:")) |
RunProgram("/sys/media/kiv", #URL); |
strcpy(#editURL, BrowserHistory.CurrentUrl()); |
strcpy(#URL, BrowserHistory.CurrentUrl()); |
return; |
} |
if (!strcmpn(#URL,"mailto:", 7)) |
{ |
RunProgram("@notify", #URL); |
strcpy(#editURL, BrowserHistory.CurrentUrl()); |
strcpy(#URL, BrowserHistory.CurrentUrl()); |
return; |
} |
OpenPage(); |
return; |
104,6 → 112,13 |
case 021: //Ctrl+U |
ReadHtml(_UTF); |
break; |
case 004: //Ctrl+D |
ReadHtml(_DOS); |
break; |
case 001: |
if (!pre_text) pre_text=2; |
else pre_text=0; |
break; |
case BACK: |
if (!BrowserHistory.GoBack()) return; |
OpenPage(); |
186,18 → 201,23 |
} |
char *ABSOLUTE_LINKS[]={ "http:", "mailto:", "ftp:", "/sys/", "/rd/", "/fd/", "/bd/", "/hd/", "/cd/", "/tmp/", 0}; |
//dword TWebBrowser::GetNewUrl(dword CUR_URL, NEW_URL){ |
void TWebBrowser::GetNewUrl(){ |
IF (!strcmp(get_URL_part(2),"./")) strcpy(#URL, #URL+2); //èãíîðèì :) |
int i; |
if (URL[0] <> '/') |
&& (strcmp(get_URL_part(5),"http:")<>0) && (strcmp(get_URL_part(5),"mailt")<>0) && (strcmp(get_URL_part(5),"ftp:/")<>0) |
{ |
for (i=0; ABSOLUTE_LINKS[i]; i++) |
if (!strcmpn(#URL, ABSOLUTE_LINKS[i], strlen(ABSOLUTE_LINKS[i]))) return; |
IF (!strcmpn(#URL,"./", 2)) strcpy(#URL, #URL+2); //èãíîðèì :) |
if (URL[0] == '/') strcpy(#URL, #URL+1); |
strcpy(#editURL, BrowserHistory.CurrentUrl()); //äîñòà¸ì àäðåñ òåêóùåé ñòðàíèöû |
_CUT_ST_LEVEL_MARK: |
if (editURL[strrchr(#editURL, '/')-2]<>'/') // åñëè íå http://pagename.ua <-- íàõðåíà ýòà ñòðîêà??? |
if (editURL[strrchr(#editURL, '/')-2]<>'/') // åñëè íå http:// |
{ |
editURL[strrchr(#editURL, '/')] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî / |
} |
210,10 → 230,10 |
} |
if (editURL[strlen(#editURL)-1]<>'/') strcat(#editURL, "/"); |
strcat(#editURL, #URL); //êëåèì íîâûé àäðåñ |
strcpy(#URL, #editURL); |
} |
} |
247,6 → 267,7 |
strcpy(#editURL, #URL); |
BrowserHistory.AddUrl(); |
strcpy(#header, #version); |
pre_text =0; |
if (!strcmp(get_URL_part(5),"http:"))) |
{ |
KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ |
275,6 → 296,7 |
void TWebBrowser::ShowPage() |
{ |
edit1.size = edit1.pos = strlen(#editURL); |
edit1.offset=0; |
edit_box_draw stdcall(#edit1); //ðèñóåì ñòðîêó àäðåñà |
if (!filesize) |
309,7 → 331,7 |
for (j = 400; j < blink + 1; j++;) DeleteButton(j); |
blink = 400; |
b_text = i_text = u_text = s_text = pre_text = blq_text = first_line_drawed = |
b_text = i_text = u_text = s_text = blq_text = first_line_drawed = |
li_text = link = ignor_text = text_color_index = text_colors[0] = li_tab = 0; //îáíóëÿåì òåãè |
link_color = 0x0000FF; |
bg_color = 0xFFFFFF; |
317,11 → 339,13 |
strcpy(#page_links,"|"); |
strcpy(#header, #version); |
if (pre_text<>2) |
{ |
pre_text=0; |
if (!strcmp(#URL + strlen(#URL) - 4, ".txt")) pre_text = 1; |
if (!strcmp(#URL + strlen(#URL) - 4, ".mht")) ignor_text = 1; |
} |
debug("Start parsing"); |
for ( ; buf+filesize > bword; bword++;) |
{ |
bukva = ESBYTE[bword]; |
462,7 → 486,6 |
if (stroka * 10 + 15 <= height) |
DrawBar(left, stroka * 10 + top + 15, width - 15, -stroka * 10 + height - 15, bg_color); //çàêðàøèâàåì âñ¸ äî êîíöà |
if (lines.first == 0) lines.all = stroka; |
debug ("Pre end - anchor"); |
if (anchor) |
{ |
//åñëè ïîñðåäè òåêñòà ïîÿâèòñÿ íîâûé ÿêîðü - áóäåò áåñêîíå÷íûé öèêë |
470,7 → 493,6 |
lines.first=anchor_line_num; |
ParseHTML(buf); |
} |
debug("End parsing"); |
DrawScroller(); |
} |
487,7 → 509,6 |
//line = 123456789 |
//header = 1234 |
//line = 56789 |
debug("too long header"); |
strcpy(#temp, #line); |
temp[sizeof(header)-strlen(#version)-2]=0; |
strcpy(#header, #temp); |
495,7 → 516,6 |
} |
else |
{ |
debug("normal header"); |
strcpy(#header, #line); |
line=0; |
} |
612,14 → 632,17 |
{ |
if (rez) |
{ |
text_color_index++; |
text_colors[text_color_index] = text_colors[text_color_index-1]; |
if (link) IF(text_color_index > 0) text_color_index--; //åñëè ïðåäûäóùèé òåã à íå áûë çàêðûò |
_A_MARK: |
if (!strcmp(#parametr, "href=")) |
{ |
if (stroka - 1 > lines.visible) || (stroka < -2) return; |
if (link) && (text_color_index > 0) text_color_index--; //åñëè íå çàêðûò òýã |
text_color_index++; |
text_colors[text_color_index] = text_colors[text_color_index-1]; |
link = 1; |
blink++; |
text_colors[text_color_index] = link_color; |
745,6 → 768,7 |
IMG_TAG: |
if (!strcmp(#parametr,"src=")) //íàäî îáúåäèíèòü ñ GetNewUrl() |
{ |
if (!strcmpn(#URL, "http:", 5)) || (!strcmpn(#options, "http:", 5)) return; |
strcpy(#temp, BrowserHistory.CurrentUrl()); //äîñòà¸ì àäðåñ òåêóùåé ñòðàíèöû |
temp[strrchr(#temp, '/')] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî / |
strcat(#temp, #options); |
/programs/network/htmlv/browser/include/acid_0.1.htm |
---|
53,12 → 53,15 |
</pre> |
<!--ýòîãî òåêñòà çäåñü <íåò>--> |
<a href='/sys/index.htm'>Index.htm</a><br> |
<font color=#777777> |
<a href='/SYS/index.htm'>Index.htm</a><br> |
<a href='./index.htm'>Index.htm</a><br> |
<a href='/sys/index.htm'>Íåçàêðûòûé òåã à - Index.htm<br> |
<a href="/sys/kernel.mnt">Kernel.mnt</a><br> |
<a href="index.htm#2.1.4">index.htm#2.1.4</a><br> |
<a href="#2.1.4">#2.1.4</a><br> |
<a href="background.gif">Ôîíîâàÿ êàðòèíêà</a><br> |
</font> |
<a href='1111111111111111111111111111111111111111111111111111111111111111 |
1111111111111111111111111111111111111111111111111111111111111111 |
1111111111111111111111111111111111111111111111111111111111111111 |
/programs/network/htmlv/browser/include/menu_rmb.h |
---|
6,9 → 6,10 |
char *ITEMS_LIST[]={ |
"View in Tinypad F3",52, |
"View in TextEdit F4",53, |
"-",0, |
"KOI-8 Ctrl+K",11, |
"UTF Ctrl+U",21, |
"DOS Ctrl+D",04, |
"Line breaks ON" ,01, |
0}; |
35,6 → 36,11 |
id1=mm.y/ITEM_HEIGHT; |
if (id1<0) || (id1+1>items_num) || (mm.x<0) || (mm.x>ITEM_WIDTH) break; |
if (mm.lkm) || (mm.pkm) |
{ |
WB1.Scan(ITEMS_LIST[items_cur*2+1]); |
ExitProcess(); |
} |
if (items_cur<>id1) |
{ |
items_cur=id1; |
71,22 → 77,17 |
case evReDraw: |
while (ITEMS_LIST[items_num*2]) items_num++; |
DefineAndDrawWindow(Form.left+m.x,Form.top+m.y+GetSkinWidth()+3,ITEM_WIDTH,items_num*ITEM_HEIGHT+1,0x01,0x10FFFFFF,0,0,0); |
DefineAndDrawWindow(Form.left+m.x,Form.top+m.y+GetSkinHeight()+3,ITEM_WIDTH,items_num*ITEM_HEIGHT+1,0x01,0x10FFFFFF,0); |
DefineButton(0, 0, ITEM_WIDTH, ITEM_HEIGHT, 10+BT_HIDE+BT_NOFRAME, 0); //hack |
DrawRegion(0,0,ITEM_WIDTH,items_num*ITEM_HEIGHT+1,0x777777); //îáîäîê |
_ITEMS_DRAW: |
for (i=0; i<items_num; i++;) |
{ |
if (!strcmp(ITEMS_LIST[i*2],"-")) |
{ |
DrawBar(1, i*ITEM_HEIGHT+1, ITEM_WIDTH-1, ITEM_HEIGHT, 0xFFFFFF); |
DrawBar(1, i*ITEM_HEIGHT+1+9, ITEM_WIDTH-1, 1, 0x999999); |
continue; |
} |
DefineButton(0, i*ITEM_HEIGHT, ITEM_WIDTH, ITEM_HEIGHT, i+10+BT_HIDE, 0xFFFFFF); |
if (i<>items_cur) EDX=0xFFFFFF; else EDX=0x94AECE; |
DrawBar(1, i*ITEM_HEIGHT+1, ITEM_WIDTH-1, ITEM_HEIGHT, EDX); |
WriteText(8,i*ITEM_HEIGHT+6,0x80,0x000000,ITEMS_LIST[i*2],0); |
if (ITEMS_LIST[i*2+1]==1) && (pre_text==2) DrawBar(ITEM_WIDTH-18, i*ITEM_HEIGHT+8, 4, 4, 0x444444); |
} |
} |
} |
/programs/network/htmlv/browser/include/some_code.h |
---|
15,8 → 15,8 |
#define _UTF 3 |
dword get_URL_part(byte len) { |
char temp1[1000]; |
dword get_URL_part(int len) { |
char temp1[sizeof(URL)]; |
strcpy(#temp1, #URL); |
temp1[len] = 0x00; |
return #temp1; |
49,11 → 49,11 |
dword italic_buf; |
int tile_height=2, //áóäåì âûâîäèòü äâóõïèêñåëüíûìè ïîëîñêàìè |
shift=-2, //ñ äâóõïèêñåëüíûì ñìåùåíèåì |
i, skin_width; |
i, skin_height; |
italic_buf = mem_Alloc(w*h*3); |
skin_width = GetSkinWidth(); |
CopyScreen(italic_buf, x+Form.left+2, y+Form.top+skin_width, w, h); |
skin_height = GetSkinHeight(); |
CopyScreen(italic_buf, x+Form.left+2, y+Form.top+skin_height, w, h); |
FOR (i=0;i*tile_height<h;i++) |
PutImage(w*3*tile_height*i+italic_buf,w,tile_height,x+shift-i+1,i*tile_height+y); |
/programs/network/htmlv/lib/encoding.h |
---|
172,14 → 172,7 |
AL=symbol; |
} |
/*int hex2char(char c) |
{ |
if (c <=9) |
return (c+48); |
return (c - 10 + 'a'); |
} |
/* |
int hex2char(dword c) |
{ |
if (c <=9) |
/programs/network/htmlv/lib/file_system.h |
---|
25,33 → 25,10 |
/////////////////////////// |
// Ïàðàìåòðû ôàéëà // |
/////////////////////////// |
f70 getinfo_file_70; |
BDVK getinfo_file_info; |
dword GetFileInfo(dword file_name) |
{ |
getinfo_file_70.func = 5; |
getinfo_file_70.param1 = |
getinfo_file_70.param2 = |
getinfo_file_70.param3 = |
getinfo_file_70.param4 = #getinfo_file_info; |
getinfo_file_70.rezerv = 0; |
getinfo_file_70.name = file_name; |
$mov eax,70 |
$mov ebx,#getinfo_file_70.func |
$int 0x40 |
IF (EAX == 0) { |
EAX = #getinfo_file_info; |
} |
} |
/////////////////////////// |
// Çàïóñê ïðîãðàììû // |
/////////////////////////// |
f70 run_file_70; |
int RunProgram(dword run_path, run_param) |
:int RunProgram(dword run_path, run_param) |
{ |
run_file_70.func = 7; |
run_file_70.param1 = |
63,7 → 40,6 |
$mov eax,70 |
$mov ebx,#run_file_70.func |
$int 0x40 |
RETURN EAX; |
} |
/////////////////////////// |
70,7 → 46,7 |
// Ñîçäàíèå ïàïêè // |
/////////////////////////// |
f70 create_dir_70; |
void CreateFolder(dword new_folder_path) |
:int CreateFolder(dword new_folder_path) |
{ |
create_dir_70.func = 9; |
create_dir_70.param1 = |
88,7 → 64,7 |
// Óäàëåíèå ôàéëà/ïàïêè // |
//////////////////////////// |
f70 del_file_70; |
void DeleteFile(dword del_file_path) |
:int DeleteFile(dword del_file_path) |
{ |
del_file_70.func = 8; |
del_file_70.param1 = |
106,25 → 82,43 |
// Ïðî÷èòàòü ôàéë // |
//////////////////////////// |
f70 read_file_70; |
int ReadFile(dword pos, file_size, read_buffer, file_path) |
:int ReadFile(dword read_pos, read_file_size, read_buffer, read_file_path) |
{ |
read_file_70.func = 0; |
read_file_70.param1 = pos; |
read_file_70.param1 = read_pos; |
read_file_70.param2 = 0; |
read_file_70.param3 = file_size; |
read_file_70.param3 = read_file_size; |
read_file_70.param4 = read_buffer; |
read_file_70.rezerv = 0; |
read_file_70.name = file_path; |
read_file_70.name = read_file_path; |
$mov eax,70 |
$mov ebx,#read_file_70.func |
$int 0x40 |
} |
//////////////////////////// |
// Çàïèñàòü ôàéë // |
//////////////////////////// |
f70 write_file_70; |
:int WriteFile(dword write_file_size, write_buffer, write_file_path) |
{ |
write_file_70.func = 2; |
write_file_70.param1 = 0; |
write_file_70.param2 = 0; |
write_file_70.param3 = write_file_size; |
write_file_70.param4 = write_buffer; |
write_file_70.rezerv = 0; |
write_file_70.name = write_file_path; |
$mov eax,70 |
$mov ebx,#write_file_70.func |
$int 0x40 |
} |
/////////////////////////// |
// Ïðî÷èòàòü ïàïêó // |
/////////////////////////// |
f70 read_dir_70; |
int ReadDir(dword file_count, read_buffer, dir_path) |
:int ReadDir(dword file_count, read_buffer, dir_path) |
{ |
read_dir_70.func = 1; |
read_dir_70.param1 = |
138,45 → 132,45 |
$int 0x40 |
} |
/////////////////////////// |
// Ñêîïèðîâàòü ôàéë // |
// Ïàðàìåòðû ôàéëà // |
/////////////////////////// |
f70 CopyFile_f; |
inline fastcall dword CopyFile(dword EBX,ECX) |
f70 getinfo_file_70; |
BDVK getinfo_file_info; |
:dword GetFileInfo(dword file_path) |
{ |
BDVK CopyFile_atr; |
dword s=EBX, d=ECX, cBufer=0; |
CopyFile_f.func = 5; |
CopyFile_f.param1 = 0; |
CopyFile_f.param2 = 0; |
CopyFile_f.param3 = 0; |
CopyFile_f.param4 = #CopyFile_atr; |
CopyFile_f.rezerv = 0; |
CopyFile_f.name = s; |
getinfo_file_70.func = 5; |
getinfo_file_70.param1 = |
getinfo_file_70.param2 = |
getinfo_file_70.param3 = 0; |
getinfo_file_70.param4 = #getinfo_file_info; |
getinfo_file_70.rezerv = 0; |
getinfo_file_70.name = file_path; |
$mov eax, 70 |
$mov ebx, #CopyFile_f |
$mov ebx,#getinfo_file_70.func |
$int 0x40 |
} |
if (!EAX) |
/////////////////////////// |
// Ñêîïèðîâàòü ôàéë // |
/////////////////////////// |
:int CopyFile(dword copy_from, copy_in) |
{ |
cBufer = malloc(CopyFile_atr.sizelo); |
ReadFile(dword 0, CopyFile_atr.sizelo, cBufer, s); |
BDVK CopyFile_atr; |
dword cBufer=0; |
IF (!EAX) |
if (! GetFileInfo(copy_from)) |
{ |
CopyFile_f.func = 2; |
CopyFile_f.param1 = 0; |
CopyFile_f.param2 = 0; |
CopyFile_f.param3 = CopyFile_atr.sizelo; |
CopyFile_f.param4 = cBufer; |
CopyFile_f.rezerv = 0; |
CopyFile_f.name = d; |
$mov eax, 70 |
$mov ebx, #CopyFile_f |
$int 0x40 |
mem_Init(); |
cBufer = mem_Alloc(CopyFile_atr.sizelo); |
if (! ReadFile(dword 0, CopyFile_atr.sizelo, cBufer, copy_from)) |
if (! WriteFile(CopyFile_atr.sizelo, cBufer, copy_in)) return 1; |
} |
return 0; |
} |
} |
//Asper |
192,4 → 186,4 |
$mov eax,70 |
$mov ebx,#read_file_70.func |
$int 0x40 |
} |
} |
/programs/network/htmlv/lib/kolibri.h |
---|
33,7 → 33,7 |
struct mouse |
{ |
dword x,y,lkm,pkm,hor,vert; |
int x,y,lkm,pkm,hor,vert; |
void get(); |
}; |
165,7 → 165,7 |
byte reserved[1024-71]; |
}; |
void GetProcessInfo( EBX, ECX) |
inline fastcall void GetProcessInfo( EBX, ECX) |
{ |
$mov eax,9; |
$int 0x40 |
205,19 → 205,30 |
$int 0x40 |
} |
inline fastcall ExitProcess() |
inline fastcall int KillProcess( ECX) |
{ |
$mov eax,-1; |
$mov eax,18; |
$mov ebx,18; |
$int 0x40 |
} |
inline fastcall int KillProcess( ECX) |
inline fastcall int ExitSystem( ECX) |
{ |
$mov eax,18; |
$mov ebx,18; |
#define TURN_OFF 2 |
#define REBOOT 3 |
#define KERNEL 4 |
$mov eax, 18 |
$mov ebx, 9 |
$int 0x40 |
} |
inline fastcall ExitProcess() |
{ |
$mov eax,-1; |
$int 0x40 |
} |
//------------------------------------------------------------------------------ |
//eax = ÿçûê ñèñòåìû (1=eng, 2=fi, 3=ger, 4=rus) |
228,7 → 239,7 |
$int 0x40 |
} |
inline fastcall dword GetSkinWidth() |
inline fastcall dword GetSkinHeight() |
{ |
$push ebx |
$mov eax,48 |
244,12 → 255,17 |
$int 0x40 |
} |
inline fastcall dword GetScreenWidth() |
inline fastcall int GetScreenWidth() |
{ |
EAX = 14; |
EBX = 4; |
$mov eax, 14 |
$int 0x40 |
$shr eax, 16 |
} |
inline fastcall int GetScreenHeight() |
{ |
$mov eax, 14 |
$int 0x40 |
$and eax,0x0000FFFF |
} |
260,7 → 276,7 |
$int 0x40 |
} |
byte fastcall TestBit( EAX, CL) |
inline fastcall int TestBit( EAX, CL) |
{ |
$shr eax,cl |
$and eax,1 |
269,17 → 285,16 |
//------------------------------------------------------------------------------ |
void DefineAndDrawWindow(dword x,y,sizeX,sizeY,byte mainAreaType,dword mainAreaColour,byte headerType,dword headerColour,EDI) |
void DefineAndDrawWindow(dword x,y, sizeX,sizeY, byte WindowType,dword WindowAreaColor, EDI) |
{ |
EAX = 12; // function 12:tell os about windowdraw |
EBX = 1; |
$int 0x40 |
EAX = 0; |
EBX = x << 16 + sizeX; |
ECX = y << 16 + sizeY; |
EDX = mainAreaType << 24 | mainAreaColour; |
ESI = headerType << 24 | headerColour; |
$xor eax,eax |
EDX = WindowType << 24 | WindowAreaColor; |
$int 0x40 |
EAX = 12; // function 12:tell os about windowdraw |
289,7 → 304,7 |
inline fastcall MoveSize( EBX,ECX,EDX,ESI) |
{ |
EAX = 67; |
$mov eax, 67 |
$int 0x40 |
} |
316,6 → 331,13 |
$int 0x40; |
} |
dword GetPixelColor(dword x, x_size, y) |
{ |
$mov eax, 35 |
EBX= y*x_size+x; |
$int 0x40 |
} |
void PutImage(dword EBX,w,h,x,y) |
{ |
EAX = 7; |
365,7 → 387,7 |
//------------------------------------------------------------------------------ |
void DrawRegion(dword x,y,width,height,color1) |
:void DrawRegion(dword x,y,width,height,color1) |
{ |
DrawBar(x,y,width,1,color1); //¯®«®á £®à ᢥàåã |
DrawBar(x,y+height,width,1,color1); //¯®«®á £®à ᨧã |
373,7 → 395,7 |
DrawBar(x+width,y,1,height+1,color1); //¯®«®á ¢¥àåã á¯à ¢ |
} |
void DrawRegion_3D(dword x,y,width,height,color1,color2) |
:void DrawRegion_3D(dword x,y,width,height,color1,color2) |
{ |
DrawBar(x,y,width+1,1,color1); //¯®«®á £®à ᢥàåã |
DrawBar(x,y+1,1,height-1,color1); //¯®«®á á«¥¢ |
381,7 → 403,7 |
DrawBar(x,y+height,width,1,color2); //¯®«®á £®à ᨧã |
} |
void DrawFlatButton(dword x,y,width,height,id,color,text) |
:void DrawFlatButton(dword x,y,width,height,id,color,text) |
{ |
DrawRegion_3D(x,y,width,height,0x94AECE,0x94AECE); |
DrawRegion_3D(x+1,y+1,width-2,height-2,0xFFFFFF,0xC7C7C7); |
391,7 → 413,7 |
WriteText(width/2+x+1,height/2-3+y,0x80,0,text,0); |
} |
void DrawCircle(int x, y, r) |
:void DrawCircle(int x, y, r) |
{ |
int i; |
float px=0, py=r, ii = r * 3.1415926 * 2; |
/programs/network/htmlv/lib/mem.h |
---|
98,3 → 98,113 |
l2: |
} |
} |
/*:void fastcall memsetz( EDI, ECX) |
{ |
asm { |
XOR EAX, EAX |
MOV EDX, ECX |
SHR ECX, 2 |
REP STOSD |
MOV ECX, EDX |
AND ECX, 3 |
REP STOSB |
} |
} |
:void fastcall memset( EDI, ECX, AL) |
{ |
asm { |
MOV AH, AL |
MOVZX EDX, AX |
SHL EAX, 16 |
OR EAX, EDX |
MOV EDX, ECX |
SHR ECX, 2 |
REP STOSD |
MOV ECX, EDX |
AND ECX, 3 |
REP STOSB |
} |
} |
:void fastcall memcpy( EDI, ESI, ECX) |
{ |
asm { |
MOV EDX, ECX |
SHR ECX, 2 |
REP MOVSD |
MOV ECX, EDX |
AND ECX, 3 |
REP MOVSB |
} |
} |
:void fastcall memsetd( EDI, ECX, EAX) |
{ |
asm { |
REP STOSD |
} |
} |
:void fastcall memcpyd( EDI, ESI, ECX) |
{ |
asm { |
REP MOVSD |
} |
} |
:void fastcall memmov( EDI, ESI, ECX) |
{ |
asm { |
MOV EAX, ECX |
CMP EDI, ESI |
JG L1 |
JE L2 |
SAR ECX, 2 |
JS L2 |
REP MOVSD |
MOV ECX, EAX |
AND ECX, 3 |
REP MOVSB |
JMP SHORT L2 |
L1: LEA ESI, DSDWORD[ ESI+ECX-4] |
LEA EDI, DSDWORD[ EDI+ECX-4] |
SAR ECX, 2 |
JS L2 |
STD |
REP MOVSD |
MOV ECX, EAX |
AND ECX, 3 |
ADD ESI, 3 |
ADD EDI, 3 |
REP MOVSB |
CLD |
L2: |
} |
} |
:long fastcall memcmp( ESI, EDI, ECX) |
{ |
asm { |
MOV EAX, ECX |
SHR ECX, 2 |
REPE CMPSD |
MOV ECX, EAX |
AND ECX, 3 |
REPE CMPSB |
XOR EAX, EAX |
XOR ECX, ECX |
MOV AL, DSBYTE[ ESI-1] |
MOV CL, DSBYTE[ EDI-1] |
SUB EAX, ECX |
} |
}*/ |
/*#define memzset memsetz |
#define memset0 memsetz |
#define mem0set memsetz |
#define memset32 memsetd |
#define memcpy32 memcpyd*/ |
/programs/network/htmlv/lib/strings.h |
---|
13,7 → 13,72 |
// strtok( ESI) |
//------------------------------------------------------------------------------ |
inline fastcall signed int strcmp( ESI, EDI) |
{ |
loop() |
{ |
IF (DSBYTE[ESI]<DSBYTE[EDI]) RETURN -1; |
IF (DSBYTE[ESI]>DSBYTE[EDI]) RETURN 1; |
IF (DSBYTE[ESI]=='\0') RETURN 0; |
ESI++; |
EDI++; |
} |
} |
inline fastcall signed int strncmp( ESI, EDI, ECX) |
{ |
asm { |
MOV EBX, EDI |
XOR EAX, EAX |
MOV EDX, ECX |
OR ECX, ECX |
JE L1 |
REPNE SCASB |
SUB EDX, ECX |
MOV ECX, EDX |
MOV EDI, EBX |
XOR EBX, EBX |
REPE CMPSB |
MOV AL, DSBYTE[ ESI-1] |
MOV BL, DSBYTE[ EDI-1] |
SUB EAX, EBX |
L1: |
} |
} |
/* |
inline fastcall signed int strcmpi( ESI,EDI) |
uses EBX |
{ |
do{ |
$lodsb |
IF(AL>='a')&&(AL<='z')AL-=0x20; |
BL=DSBYTE[(E)DI]; |
IF(BL>='a')&&(BL<='z')BL-=0x20; |
AL-=BL; |
IF(!ZEROFLAG)BREAK; |
(E)DI++; |
}while(BL!=0); |
} |
inline char STRNCMPI((E)SI,(E)DI,(E)CX) |
{ |
(E)AX=0; |
LOOPNZ((E)CX){ |
$lodsb |
IF(AL>='a')&&(AL<='z')AL-=0x20; |
AH=DSBYTE[EDI]; |
IF(AH>='a')&&(AH<='z')AH-=0x20; |
EDI++; |
IF(AL==0)||(AH==0)||(AL!=AH)BREAK; |
} |
AL=AL-AH; |
}*/ |
inline fastcall unsigned int strlen( EDI) |
{ |
$xor eax, eax |
107,18 → 172,6 |
} |
inline fastcall signed int strcmp( ESI, EDI) |
{ |
loop() |
{ |
IF (DSBYTE[ESI]<DSBYTE[EDI]) RETURN -1; |
IF (DSBYTE[ESI]>DSBYTE[EDI]) RETURN 1; |
IF (DSBYTE[ESI]=='\0') RETURN 0; |
ESI++; |
EDI++; |
} |
} |
inline fastcall unsigned int strchr( ESI,BL) |
{ |
int jj=0; |
203,6 → 256,21 |
} |
} |
/* strtok( LPSTR dest, src, divs); |
src - óêàçàòåëü íà èñõîäíóþ ñòðîêó èëè ðåçóëüòàò ïðåäûäóùåãî âûçîâà |
dest - óêàçàòåëü íà áóôåð, êóäà áóäåò ñêîïèðîâàíî ñëîâî |
242,3 → 310,13 |
L4: POP ECX |
} DSBYTE[ EDX] = 0; |
} |
#define strncpy strcpyn |
#define strnmov strmovn |
#define stricmp strcmpi |
#define strcmpn strncmp |
#define strncmpi strcmpni |
#define stricmpn strcmpni |
#define strnicmp strcmpni |
#define strincmp strcmpni |
#define strcmpin strcmpni |