2024-07-05 12:23:58 +00:00
|
|
|
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
|
|
|
|
|
2024-07-05 09:10:26 +00:00
|
|
|
klog_print_date:
|
2024-07-05 12:23:58 +00:00
|
|
|
@@:
|
|
|
|
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
|
2024-07-05 09:10:26 +00:00
|
|
|
|
|
|
|
ret
|
|
|
|
|
2024-07-05 12:23:58 +00:00
|
|
|
;; Function: klog
|
|
|
|
;; Output kernel log
|
|
|
|
klog:
|
|
|
|
call klog_print_date
|
|
|
|
|
|
|
|
call klog_print
|
|
|
|
|
|
|
|
mov esi, szCRLF
|
|
|
|
call klog_print
|
|
|
|
ret
|
2024-05-02 11:34:27 +00:00
|
|
|
|
2024-07-05 12:23:58 +00:00
|
|
|
szTime db '[00:00:00] ', 0
|
|
|
|
szCRLF db CR, LF, 0
|