/programs/fs/kfar/trunk/tools.inc |
---|
0,0 → 1,69 |
xmalloc: |
; in: eax=size |
; out: eax=pointer or NULL |
call mf_alloc |
.common: |
test eax, eax |
jnz @f |
call SayNoMem |
xor eax, eax |
@@: |
ret |
xrealloc: |
; in: eax=pointer, ebx=new size |
; out: eax=pointer or NULL |
call mf_realloc |
jmp xmalloc.common |
get_error_msg: |
; in: eax=error code |
; out: eax=pointer to message (in static buffer) |
push esi edi |
mov edi, error_msg |
cmp eax, 11 |
ja .no1 |
mov esi, [errors1+eax*4] |
jmp .copy |
.no1: |
cmp eax, 30 |
jb .no2 |
cmp eax, 32 |
ja .no2 |
mov esi, [errors2+(eax-30)*4] |
.copy: |
lodsb |
stosb |
test al, al |
jnz .copy |
.ret: |
mov eax, error_msg |
pop edi esi |
ret |
.no2: |
mov esi, aUnknownError |
push eax |
@@: |
lodsb |
stosb |
test al, al |
jnz @b |
pop eax |
push edx ecx |
test eax, eax |
jns @f |
mov byte [edi], '-' |
inc edi |
neg eax |
@@: |
xor edx, edx |
mov ecx, 10 |
div ecx |
add edx, '0' |
mov byte [edi], dl |
inc edi |
test eax, eax |
jnz @b |
pop ecx edx |
stosb |
jmp .ret |