StupidOS/kernel/klog.inc

93 lines
1.1 KiB
PHP

CMOS_ADDRESS = 0x70
CMOS_DATA = 0x71
CMOS_REG_SECOND = 0x00
CMOS_REG_MINUTE = 0x02
CMOS_REG_HOUR = 0x04
COM1 = 0x3F8
klog_print:
mov dx, COM1
@@:
lodsb
or al, al
jz @f
out dx, al
jmp @b
@@:
ret
klog_print_date:
@@:
mov al, 0x0A
out CMOS_ADDRESS, al
in al, CMOS_DATA
and al, 0x80
jnz @b
mov al, CMOS_REG_HOUR
out CMOS_ADDRESS, al
in al, CMOS_DATA
mov ah, al
shr ah, 4
and ah, 0xF
and al, 0xF
add ah, 0x30
add al, 0x30
mov [szTime + 1], ah
mov [szTime + 2], al
mov al, CMOS_REG_MINUTE
out CMOS_ADDRESS, al
in al, CMOS_DATA
mov ah, al
shr ah, 4
and ah, 0xF
and al, 0xF
add ah, 0x30
add al, 0x30
mov [szTime + 4], ah
mov [szTime + 5], al
mov al, CMOS_REG_SECOND
out CMOS_ADDRESS, al
in al, CMOS_DATA
mov ah, al
shr ah, 4
and ah, 0xF
and al, 0xF
add ah, 0x30
add al, 0x30
mov [szTime + 7], ah
mov [szTime + 8], al
push esi
mov esi, szTime
call klog_print
pop esi
ret
;; Function: klog
;; Output kernel log
klog:
call klog_print_date
call klog_print
mov esi, szCRLF
call klog_print
ret
szTime db '[00:00:00] ', 0
szCRLF db CR, LF, 0