Subversion Repositories Kolibri OS

Rev

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
}
309
}
462
>
310
>