kolibrios/programs/system/MyKey/trunk/debug.inc

164 lines
2.1 KiB
PHP
Raw Normal View History

;include 'kinc/imports.inc'
macro debug_print str
{
local ..string, ..label
jmp ..label
..string db str,0
..label:
pushf
pushad
;mov edx,..string
mov esi, ..string
;call debug_outstr
call SysMsgBoardStr
popad
popf
}
dps fix debug_print
macro debug_print_dec arg
{
pushf
pushad
if ~arg eq eax
mov eax,arg
end if
call debug_outdec
popad
popf
}
dpd fix debug_print_dec
;---------------------------------
debug_outdec: ;(eax - num, edi-str)
push 10 ;2
pop ecx ;1
push -'0' ;2
.l0:
xor edx,edx ;2
div ecx ;2
push edx ;1
test eax,eax ;2
jnz .l0 ;2
.l1:
pop eax ;1
add al,'0' ;2
call debug_outchar ; stosb
jnz .l1 ;2
ret ;1
;---------------------------------
debug_outchar: ; al - char
pushf
pushad
;mov cl,al
;mov eax,63
;mov ebx,1
;int 0x40
mov bl, al
mov eax, 1
call SysMsgBoard
popad
popf
ret
;debug_outstr:
; mov eax,63
; mov ebx,1
; @@:
; mov cl,[edx]
; test cl,cl
; jz @f
; int 40h
; inc edx
; jmp @b
; @@:
; ret
macro newline
{
dps <13,10>
}
macro print message
{
dps message
newline
}
macro pregs
{
dps "EAX: "
dpd eax
dps " EBX: "
dpd ebx
newline
dps "ECX: "
dpd ecx
dps " EDX: "
dpd edx
newline
}
macro debug_print_hex arg
{
pushf
pushad
if ~arg eq eax
mov eax, arg
end if
call debug_outhex
popad
popf
}
dph fix debug_print_hex
debug_outhex:
; eax - number
pushf
pushad
mov edx, 8
.new_char:
rol eax, 4
movzx ecx, al
and cl, 0x0f
mov cl, [__hexdigits + ecx]
pushad
mcall 63, 1
popad
dec edx
jnz .new_char
popad
popf
ret
SysMsgBoard:
push eax ebx ecx
mov cl, al
mov eax, 63
mov ebx, 1
int 0x40
pop ecx ebx eax
ret
SysMsgBoardStr:
push eax
@@:
lodsb
or al, al
jz @f
call SysMsgBoard
jmp @b
@@:
pop eax
ret
__hexdigits:
db '0123456789ABCDEF'