Rev 3029 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3029 | Rev 3043 | ||
---|---|---|---|
Line 13... | Line 13... | ||
13 | dword I_Path = #program_path; |
13 | dword I_Path = #program_path; |
Line 14... | Line 14... | ||
14 | 14 | ||
15 | char param[4096]; |
15 | char param[4096]; |
Line -... | Line 16... | ||
- | 16 | char program_path[4096]; |
|
Line 16... | Line 17... | ||
16 | char program_path[4096]; |
17 | |
17 | 18 | #include "lib\strings.h" |
|
18 | 19 | ||
19 | //Events |
20 | //Events |
Line 210... | Line 211... | ||
210 | $mov eax,67; |
211 | $mov eax,67; |
211 | $int 0x40 |
212 | $int 0x40 |
212 | } |
213 | } |
Line 213... | Line 214... | ||
213 | 214 | ||
214 | //------------------------------------------------------------------------------ |
- | |
215 | - | ||
216 | inline fastcall dword strlen( EDI) |
- | |
217 | { |
- | |
218 | asm { |
- | |
219 | xor ecx, ecx |
- | |
220 | xor eax, eax |
- | |
221 | dec ecx |
- | |
222 | repne scasb |
- | |
223 | sub eax, 2 |
- | |
224 | sub eax, ecx |
- | |
225 | } |
- | |
226 | } |
- | |
227 | - | ||
228 | - | ||
229 | inline fastcall copystr( ESI,EDI) |
- | |
230 | { |
- | |
231 | $cld |
- | |
232 | l1: |
- | |
233 | $lodsb |
- | |
234 | $stosb |
- | |
235 | $test al,al |
- | |
236 | $jnz l1 |
- | |
237 | } |
- | |
238 | - | ||
239 | char buffer[11]; |
- | |
240 | inline fastcall dword IntToStr( ESI) |
- | |
241 | { |
- | |
242 | $mov edi, #buffer |
- | |
243 | $mov ecx, 10 |
- | |
244 | $test esi, esi |
- | |
245 | $jns f1 |
- | |
246 | $mov al, '-' |
- | |
247 | $stosb |
- | |
248 | $neg esi |
- | |
249 | f1: |
- | |
250 | $mov eax, esi |
- | |
251 | $push -'0' |
- | |
252 | f2: |
- | |
253 | $xor edx, edx |
- | |
254 | $div ecx |
- | |
255 | $push edx |
- | |
256 | $test eax, eax |
- | |
257 | $jnz f2 |
- | |
258 | f3: |
- | |
259 | $pop eax |
- | |
260 | $add al, '0' |
- | |
261 | $stosb |
- | |
262 | $jnz f3 |
- | |
263 | $mov eax, #buffer |
- | |
264 | $ret |
- | |
265 | } |
- | |
266 | - | ||
267 | inline fastcall dword StrToInt() |
- | |
268 | { |
- | |
269 | ESI=EDI=EAX; |
- | |
270 | IF(DSBYTE[ESI]=='-')ESI++; |
- | |
271 | EAX=0; |
- | |
272 | BH=AL; |
- | |
273 | do{ |
- | |
274 | BL=DSBYTE[ESI]-'0'; |
- | |
275 | EAX=EAX*10+EBX; |
- | |
276 | ESI++; |
- | |
277 | }while(DSBYTE[ESI]>0); |
- | |
278 | IF(DSBYTE[EDI]=='-') -EAX; |
- | |
279 | } |
- | |
280 | - | ||
281 | dword StrToCol(char* htmlcolor) |
- | |
282 | { |
- | |
283 | dword j, color=0; |
- | |
284 | char ch=0x00; |
- | |
285 | - | ||
286 | FOR (j=0; j<6; j++) |
- | |
287 | { |
- | |
288 | ch=ESBYTE[htmlcolor+j]; |
- | |
289 | IF ((ch>='0') && (ch<='9')) ch -= '0'; |
- | |
290 | IF ((ch>='A') && (ch<='F')) ch -= 'A'-10; |
- | |
291 | IF ((ch>='a') && (ch<='f')) ch -= 'a'-10; |
- | |
292 | color = color*0x10 + ch; |
- | |
293 | } |
- | |
294 | - | ||
295 | return color; |
- | |
296 | } |
- | |
297 | - | ||
298 | inline fastcall int strcmp(ESI, EDI) |
- | |
299 | { |
- | |
300 | loop() |
- | |
301 | { |
- | |
302 | IF (DSBYTE[ESI] |
- | |
303 | IF (DSBYTE[ESI]>DSBYTE[EDI]) RETURN 1; |
- | |
304 | IF (DSBYTE[ESI]=='\0') RETURN 0; |
- | |
305 | ESI++; |
- | |
306 | EDI++; |
- | |
307 | } |
- | |
308 | } |
- | |
309 | - | ||
310 | - | ||
311 | inline fastcall signed int strncmp( ESI, EDI, ECX) |
- | |
312 | { |
- | |
313 | asm { |
- | |
314 | MOV EBX, EDI |
- | |
315 | XOR EAX, EAX |
- | |
316 | MOV EDX, ECX |
- | |
317 | OR ECX, ECX |
- | |
318 | JE L1 |
- | |
319 | REPNE SCASB |
- | |
320 | SUB EDX, ECX |
- | |
321 | MOV ECX, EDX |
- | |
322 | MOV EDI, EBX |
- | |
323 | XOR EBX, EBX |
- | |
324 | REPE CMPSB |
- | |
325 | MOV AL, DSBYTE[ ESI-1] |
- | |
326 | MOV BL, DSBYTE[ EDI-1] |
- | |
327 | SUB EAX, EBX |
- | |
328 | L1: |
- | |
329 | } |
- | |
330 | } |
- | |
331 | - | ||
332 | - | ||
333 | inline fastcall unsigned int strchr(ESI,BL) |
- | |
334 | { |
- | |
335 | int jj=0, last=-1; |
- | |
336 | do{ |
- | |
337 | jj++; |
- | |
338 | $lodsb |
- | |
339 | IF(AL==BL) last=jj; |
- | |
340 | } while(AL!=0); |
- | |
341 | return last; |
- | |
342 | } |
- | |
343 | - | ||
344 | - | ||
345 | inline fastcall TitleCase( EDX) |
- | |
346 | { |
- | |
347 | AL=DSBYTE[EDX]; |
- | |
348 | IF(AL>='a')&&(AL<='z')DSBYTE[EDX]=AL&0x5f; |
- | |
349 | IF (AL>=160) && (AL<=175) DSBYTE[EDX] = AL - 32; //à-ï |
- | |
350 | IF (AL>=224) && (AL<=239) DSBYTE[EDX] = AL - 80; //à-ï |
- | |
351 | do{ |
- | |
352 | EDX++; |
- | |
353 | AL=DSBYTE[EDX]; |
- | |
354 | IF(AL>='A')&&(AL<='Z'){DSBYTE[EDX]=AL|0x20; CONTINUE;} |
- | |
355 | IF(AL>='')&&(AL<='')DSBYTE[EDX]=AL|0x20; // -¯ |
- | |
356 | IF (AL>=144) && (AL<=159) DSBYTE[EDX] = AL + 80; //à-ï |
- | |
357 | }while(AL!=0); |
- | |
358 | } |
- | |
359 | - | ||
360 | - | ||
361 | //------------------------------------------------------------------------------ |
215 | //------------------------------------------------------------------------------ |
362 | inline fastcall void PutPixel( EBX,ECX,EDX) |
216 | inline fastcall void PutPixel( EBX,ECX,EDX) |
363 | { |
217 | { |
364 | EAX=1; |
218 | EAX=1; |
365 | $int 0x40 |
219 | $int 0x40 |
Line 436... | Line 290... | ||
436 | } |
290 | } |
Line 437... | Line 291... | ||
437 | 291 | ||
438 | //------------------------------------------------------------------------------ |
292 | //------------------------------------------------------------------------------ |
439 | inline fastcall void debug( EDX) |
293 | inline fastcall void debug( EDX) |
440 | { |
- | |
441 | $push eax |
- | |
442 | $push ebx |
- | |
443 | $push ecx |
294 | { |
444 | $mov eax, 63 |
295 | $mov eax, 63 |
445 | $mov ebx, 1 |
296 | $mov ebx, 1 |
446 | next_char: |
297 | next_char: |
447 | $mov ecx, DSDWORD[edx] |
298 | $mov ecx, DSDWORD[edx] |
Line 453... | Line 304... | ||
453 | done: |
304 | done: |
454 | $mov cl, 13 |
305 | $mov cl, 13 |
455 | $int 0x40 |
306 | $int 0x40 |
456 | $mov cl, 10 |
307 | $mov cl, 10 |
457 | $int 0x40 |
308 | $int 0x40 |
458 | $pop eax |
- | |
459 | $pop ebx |
- | |
460 | $pop ecx |
- | |
461 | }16+y; |
309 | }16+y; |
462 | ><16+y; |
310 | ><16+y; |