kolibrios/programs/fs/kfar/trunk/tools.inc

70 lines
1.4 KiB
PHP
Raw Normal View History

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