15,6 → 15,7 |
char param[4096]; |
char program_path[4096]; |
|
#include "lib\strings.h" |
|
//Events |
#define evMouse 6 |
212,153 → 213,6 |
} |
|
//------------------------------------------------------------------------------ |
|
inline fastcall dword strlen( EDI) |
{ |
asm { |
xor ecx, ecx |
xor eax, eax |
dec ecx |
repne scasb |
sub eax, 2 |
sub eax, ecx |
} |
} |
|
|
inline fastcall copystr( ESI,EDI) |
{ |
$cld |
l1: |
$lodsb |
$stosb |
$test al,al |
$jnz l1 |
} |
|
char buffer[11]; |
inline fastcall dword IntToStr( ESI) |
{ |
$mov edi, #buffer |
$mov ecx, 10 |
$test esi, esi |
$jns f1 |
$mov al, '-' |
$stosb |
$neg esi |
f1: |
$mov eax, esi |
$push -'0' |
f2: |
$xor edx, edx |
$div ecx |
$push edx |
$test eax, eax |
$jnz f2 |
f3: |
$pop eax |
$add al, '0' |
$stosb |
$jnz f3 |
$mov eax, #buffer |
$ret |
} |
|
inline fastcall dword StrToInt() |
{ |
ESI=EDI=EAX; |
IF(DSBYTE[ESI]=='-')ESI++; |
EAX=0; |
BH=AL; |
do{ |
BL=DSBYTE[ESI]-'0'; |
EAX=EAX*10+EBX; |
ESI++; |
}while(DSBYTE[ESI]>0); |
IF(DSBYTE[EDI]=='-') -EAX; |
} |
|
dword StrToCol(char* htmlcolor) |
{ |
dword j, color=0; |
char ch=0x00; |
|
FOR (j=0; j<6; j++) |
{ |
ch=ESBYTE[htmlcolor+j]; |
IF ((ch>='0') && (ch<='9')) ch -= '0'; |
IF ((ch>='A') && (ch<='F')) ch -= 'A'-10; |
IF ((ch>='a') && (ch<='f')) ch -= 'a'-10; |
color = color*0x10 + ch; |
} |
|
return color; |
} |
|
inline fastcall 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 unsigned int strchr(ESI,BL) |
{ |
int jj=0, last=-1; |
do{ |
jj++; |
$lodsb |
IF(AL==BL) last=jj; |
} while(AL!=0); |
return last; |
} |
|
|
inline fastcall TitleCase( EDX) |
{ |
AL=DSBYTE[EDX]; |
IF(AL>='a')&&(AL<='z')DSBYTE[EDX]=AL&0x5f; |
IF (AL>=160) && (AL<=175) DSBYTE[EDX] = AL - 32; //à-ï |
IF (AL>=224) && (AL<=239) DSBYTE[EDX] = AL - 80; //à-ï |
do{ |
EDX++; |
AL=DSBYTE[EDX]; |
IF(AL>='A')&&(AL<='Z'){DSBYTE[EDX]=AL|0x20; CONTINUE;} |
IF(AL>='')&&(AL<='')DSBYTE[EDX]=AL|0x20; // -¯ |
IF (AL>=144) && (AL<=159) DSBYTE[EDX] = AL + 80; //à-ï |
}while(AL!=0); |
} |
|
|
//------------------------------------------------------------------------------ |
inline fastcall void PutPixel( EBX,ECX,EDX) |
{ |
EAX=1; |
438,9 → 292,6 |
//------------------------------------------------------------------------------ |
inline fastcall void debug( EDX) |
{ |
$push eax |
$push ebx |
$push ecx |
$mov eax, 63 |
$mov ebx, 1 |
next_char: |
455,7 → 306,4 |
$int 0x40 |
$mov cl, 10 |
$int 0x40 |
$pop eax |
$pop ebx |
$pop ecx |
} |