2011-01-30 16:54:21 +01:00
|
|
|
;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
|
2013-06-07 16:12:54 +02:00
|
|
|
call SysMsgBoard
|
2011-01-30 16:54:21 +01:00
|
|
|
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
|
|
|
|
|
2013-06-07 16:12:54 +02:00
|
|
|
SysMsgBoard:
|
2011-01-30 17:12:10 +01:00
|
|
|
push eax ebx ecx
|
2011-01-30 16:54:21 +01:00
|
|
|
mov cl, al
|
|
|
|
mov eax, 63
|
|
|
|
mov ebx, 1
|
|
|
|
int 0x40
|
2011-01-30 17:12:10 +01:00
|
|
|
pop ecx ebx eax
|
2011-01-30 16:54:21 +01:00
|
|
|
ret
|
|
|
|
|
|
|
|
SysMsgBoardStr:
|
|
|
|
push eax
|
|
|
|
@@:
|
|
|
|
lodsb
|
|
|
|
or al, al
|
|
|
|
jz @f
|
2013-06-07 16:12:54 +02:00
|
|
|
call SysMsgBoard
|
2011-01-30 16:54:21 +01:00
|
|
|
jmp @b
|
|
|
|
@@:
|
|
|
|
pop eax
|
|
|
|
ret
|
|
|
|
|
|
|
|
|
|
|
|
__hexdigits:
|
|
|
|
db '0123456789ABCDEF'
|