Rev 3050 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3050 | Rev 3113 | ||
---|---|---|---|
1 | //CODED by Veliant, Leency 2008-2012. GNU GPL licence. |
1 | //CODED by Veliant, Leency 2008-2012. GNU GPL licence. |
2 | 2 | ||
3 | 3 | ||
4 | inline fastcall dword strlen( EDI) |
4 | inline fastcall dword strlen( EDI) |
5 | { |
5 | { |
6 | asm { |
6 | asm { |
7 | xor ecx, ecx |
7 | xor ecx, ecx |
8 | xor eax, eax |
8 | xor eax, eax |
9 | dec ecx |
9 | dec ecx |
10 | repne scasb |
10 | repne scasb |
11 | sub eax, 2 |
11 | sub eax, 2 |
12 | sub eax, ecx |
12 | sub eax, ecx |
13 | } |
13 | } |
14 | } |
14 | } |
15 | 15 | ||
16 | 16 | ||
17 | inline fastcall copystr( ESI,EDI) |
17 | inline fastcall copystr( ESI,EDI) |
18 | { |
18 | { |
19 | $cld |
19 | $cld |
20 | l1: |
20 | L1: |
21 | $lodsb |
21 | $lodsb |
22 | $stosb |
22 | $stosb |
23 | $test al,al |
23 | $test al,al |
24 | $jnz l1 |
24 | $jnz L1 |
25 | } |
25 | } |
26 | 26 | ||
27 | char buffer[11]; |
27 | char buffer[11]; |
28 | inline fastcall dword IntToStr( ESI) |
28 | inline fastcall dword IntToStr( ESI) |
29 | { |
29 | { |
30 | $mov edi, #buffer |
30 | $mov edi, #buffer |
31 | $mov ecx, 10 |
31 | $mov ecx, 10 |
32 | $test esi, esi |
32 | $test esi, esi |
33 | $jns f1 |
33 | $jns F1 |
34 | $mov al, '-' |
34 | $mov al, '-' |
35 | $stosb |
35 | $stosb |
36 | $neg esi |
36 | $neg esi |
37 | f1: |
37 | F1: |
38 | $mov eax, esi |
38 | $mov eax, esi |
39 | $push -'0' |
39 | $push -'0' |
40 | f2: |
40 | F2: |
41 | $xor edx, edx |
41 | $xor edx, edx |
42 | $div ecx |
42 | $div ecx |
43 | $push edx |
43 | $push edx |
44 | $test eax, eax |
44 | $test eax, eax |
45 | $jnz f2 |
45 | $jnz F2 |
46 | f3: |
46 | F3: |
47 | $pop eax |
47 | $pop eax |
48 | $add al, '0' |
48 | $add al, '0' |
49 | $stosb |
49 | $stosb |
50 | $jnz f3 |
50 | $jnz F3 |
51 | $mov eax, #buffer |
51 | $mov eax, #buffer |
52 | //$ret |
- | |
53 | } |
52 | } |
54 | 53 | ||
55 | inline fastcall dword StrToInt() |
54 | inline fastcall dword StrToInt() |
56 | { |
55 | { |
57 | ESI=EDI=EAX; |
56 | ESI=EDI=EAX; |
58 | IF(DSBYTE[ESI]=='-')ESI++; |
57 | IF(DSBYTE[ESI]=='-')ESI++; |
59 | EAX=0; |
58 | EAX=0; |
60 | BH=AL; |
59 | BH=AL; |
61 | do{ |
60 | do{ |
62 | BL=DSBYTE[ESI]-'0'; |
61 | BL=DSBYTE[ESI]-'0'; |
63 | EAX=EAX*10+EBX; |
62 | EAX=EAX*10+EBX; |
64 | ESI++; |
63 | ESI++; |
65 | }while(DSBYTE[ESI]>0); |
64 | }while(DSBYTE[ESI]>0); |
66 | IF(DSBYTE[EDI]=='-') -EAX; |
65 | IF(DSBYTE[EDI]=='-') -EAX; |
67 | } |
66 | } |
68 | 67 | ||
69 | dword StrToCol(char* htmlcolor) |
68 | dword StrToCol(char* htmlcolor) |
70 | { |
69 | { |
71 | dword j, color=0; |
70 | dword j, color=0; |
72 | char ch=0x00; |
71 | char ch=0x00; |
73 | 72 | ||
74 | FOR (j=0; j<6; j++) |
73 | FOR (j=0; j<6; j++) |
75 | { |
74 | { |
76 | ch=ESBYTE[htmlcolor+j]; |
75 | ch=ESBYTE[htmlcolor+j]; |
77 | IF ((ch>='0') && (ch<='9')) ch -= '0'; |
76 | IF ((ch>='0') && (ch<='9')) ch -= '0'; |
78 | IF ((ch>='A') && (ch<='F')) ch -= 'A'-10; |
77 | IF ((ch>='A') && (ch<='F')) ch -= 'A'-10; |
79 | IF ((ch>='a') && (ch<='f')) ch -= 'a'-10; |
78 | IF ((ch>='a') && (ch<='f')) ch -= 'a'-10; |
80 | color = color*0x10 + ch; |
79 | color = color*0x10 + ch; |
81 | } |
80 | } |
82 | return color; |
81 | return color; |
83 | } |
82 | } |
84 | 83 | ||
85 | inline fastcall signed char strcmp(ESI, EDI) |
84 | inline fastcall signed char strcmp(ESI, EDI) |
86 | { |
85 | { |
87 | loop() |
86 | loop() |
88 | { |
87 | { |
89 | IF (DSBYTE[ESI] |
88 | IF (DSBYTE[ESI] |
90 | IF (DSBYTE[ESI]>DSBYTE[EDI]) RETURN 1; |
89 | IF (DSBYTE[ESI]>DSBYTE[EDI]) RETURN 1; |
91 | IF (DSBYTE[ESI]=='\0') RETURN 0; |
90 | IF (DSBYTE[ESI]=='\0') RETURN 0; |
92 | ESI++; |
91 | ESI++; |
93 | EDI++; |
92 | EDI++; |
94 | } |
93 | } |
95 | } |
94 | } |
96 | 95 | ||
97 | 96 | ||
98 | 97 | ||
99 | inline fastcall signed int strchr(ESI,BL) |
98 | inline fastcall signed int strchr(ESI,BL) |
100 | { |
99 | { |
101 | int jj=0, last=-1; |
100 | int jj=0, last=-1; |
102 | do{ |
101 | do{ |
103 | jj++; |
102 | jj++; |
104 | $lodsb |
103 | $lodsb |
105 | IF(AL==BL) last=jj; |
104 | IF(AL==BL) last=jj; |
106 | } while(AL!=0); |
105 | } while(AL!=0); |
107 | return last; |
106 | return last; |
108 | } |
107 | } |
109 | 108 | ||
110 | 109 | ||
111 | inline fastcall TitleCase( EDX) |
110 | inline fastcall TitleCase( EDX) |
112 | { |
111 | { |
113 | AL=DSBYTE[EDX]; |
112 | AL=DSBYTE[EDX]; |
114 | IF(AL>='a')&&(AL<='z')DSBYTE[EDX]=AL&0x5f; |
113 | IF(AL>='a')&&(AL<='z')DSBYTE[EDX]=AL&0x5f; |
115 | IF (AL>=160) && (AL<=175) DSBYTE[EDX] = AL - 32; //à-ï |
114 | IF (AL>=160) && (AL<=175) DSBYTE[EDX] = AL - 32; //à-ï |
116 | IF (AL>=224) && (AL<=239) DSBYTE[EDX] = AL - 80; //à-ï |
115 | IF (AL>=224) && (AL<=239) DSBYTE[EDX] = AL - 80; //à-ï |
117 | do{ |
116 | do{ |
118 | EDX++; |
117 | EDX++; |
119 | AL=DSBYTE[EDX]; |
118 | AL=DSBYTE[EDX]; |
120 | IF(AL>='A')&&(AL<='Z'){DSBYTE[EDX]=AL|0x20; CONTINUE;} |
119 | IF(AL>='A')&&(AL<='Z'){DSBYTE[EDX]=AL|0x20; CONTINUE;} |
121 | IF(AL>='')&&(AL<='')DSBYTE[EDX]=AL|0x20; // -¯ |
120 | IF(AL>='')&&(AL<='')DSBYTE[EDX]=AL|0x20; // -¯ |
122 | IF (AL>=144) && (AL<=159) DSBYTE[EDX] = AL + 80; //à-ï |
121 | IF (AL>=144) && (AL<=159) DSBYTE[EDX] = AL + 80; //à-ï |
123 | }while(AL!=0); |
122 | }while(AL!=0); |
124 | } |
123 | } |
125 | 124 | ||
126 | 125 | ||
127 | 126 | ||
128 | inline fastcall strcpy( EDI, ESI) |
127 | inline fastcall strcpy( EDI, ESI) |
129 | { |
128 | { |
130 | $cld |
129 | $cld |
131 | l2: |
130 | L2: |
132 | $lodsb |
131 | $lodsb |
133 | $stosb |
132 | $stosb |
134 | $test al,al |
133 | $test al,al |
135 | $jnz l2 |
134 | $jnz L2 |
136 | } |
135 | } |
137 | 136 | ||
138 | 137 | ||
139 | inline fastcall strcat( EDI, ESI) |
138 | inline fastcall strcat( EDI, ESI) |
140 | { |
139 | { |
141 | asm { |
140 | asm { |
142 | mov ebx, edi |
141 | mov ebx, edi |
143 | xor ecx, ecx |
142 | xor ecx, ecx |
144 | xor eax, eax |
143 | xor eax, eax |
145 | dec ecx |
144 | dec ecx |
146 | repne scasb |
145 | repne scasb |
147 | dec edi |
146 | dec edi |
148 | mov edx, edi |
147 | mov edx, edi |
149 | mov edi, esi |
148 | mov edi, esi |
150 | xor ecx, ecx |
149 | xor ecx, ecx |
151 | xor eax, eax |
150 | xor eax, eax |
152 | dec ecx |
151 | dec ecx |
153 | repne scasb |
152 | repne scasb |
154 | xor ecx, 0ffffffffh |
153 | xor ecx, 0ffffffffh |
155 | mov edi, edx |
154 | mov edi, edx |
156 | mov edx, ecx |
155 | mov edx, ecx |
157 | mov eax, edi |
156 | mov eax, edi |
158 | shr ecx, 2 |
157 | shr ecx, 2 |
159 | rep movsd |
158 | rep movsd |
160 | mov ecx, edx |
159 | mov ecx, edx |
161 | and ecx, 3 |
160 | and ecx, 3 |
162 | rep movsb |
161 | rep movsb |
163 | mov eax, ebx |
162 | mov eax, ebx |
164 | } |
163 | } |
165 | }=159)>='')DSBYTE[EDX]=AL|0x20;>='Z'){DSBYTE[EDX]=AL|0x20;>=239)>=175)>='z')DSBYTE[EDX]=AL&0x5f; |
164 | }=159)>='')DSBYTE[EDX]=AL|0x20;>='Z'){DSBYTE[EDX]=AL|0x20;>=239)>=175)>='z')DSBYTE[EDX]=AL&0x5f; |
166 | >='f'))>='F'))>='9'))>6;> |
165 | >='f'))>='F'))>='9'))>6;> |