StupidOS/boot/efi/logger.inc

120 lines
1.7 KiB
PHP
Raw Normal View History

2024-09-07 12:40:28 +00:00
section '.text' code executable readable
;; Function: efi_log_init
efi_log_init:
mov eax, [pSystemTable]
add eax, EFI_SYSTEM_TABLE.ConOut
mov eax, [eax]
mov [pConOut], eax
mov ecx, [eax + EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.Reset]
mov [fnOutputReset], ecx
mov ecx, [eax + EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.OutputString]
mov [fnOutputStr], ecx
mov eax, [pRuntimeServices]
mov ecx, [eax + EFI_RUNTIMES_SERVICES.GetTime]
mov [fnGetTime], ecx
push 1
push [pConOut]
call [fnOutputReset]
add esp, 8
ret
;; Function: efi_log_time
efi_log_time:
; GetTime(EFI_TIME *time, EFI_TIME_CAPS *cap)
push 0
push stEfiTime
call [fnGetTime]
add esp, 8
; Hours
mov al, [stEfiTime + EFI_TIME.Hour]
xor ah, ah
mov cl, 10
div cl
add ah, 0x30
add al, 0x30
movzx cx, al
mov [szTime + 2], cx
movzx cx, ah
mov [szTime + 4], cx
; Minutes
mov al, [stEfiTime + EFI_TIME.Minute]
xor ah, ah
mov cl, 10
div cl
add ah, 0x30
add al, 0x30
movzx cx, al
mov [szTime + 8], cx
movzx cx, ah
mov [szTime + 10], cx
; Secondes
mov al, [stEfiTime + EFI_TIME.Second]
xor ah, ah
mov cl, 10
div cl
add ah, 0x30
add al, 0x30
movzx cx, al
mov [szTime + 14], cx
movzx cx, ah
mov [szTime + 16], cx
push szTime
push [pConOut]
call [fnOutputStr]
add esp, 8
ret
;; Function: efi_log
;;
;; In:
;; ESI - string to print
efi_log:
call efi_log_time
push esi
push [pConOut]
call [fnOutputStr]
add esp, 8
; print CRLF
push szEndLine
push [pConOut]
call [fnOutputStr]
add esp, 8
ret
section '.data' data readable writable
szTime du '[00:00:00] ', 0
szEndLine du CR, LF, 0
;; Variable: pConOut
;; Pointer to EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL
pConOut dd ?
fnOutputReset dd ?
fnOutputStr dd ?
stEfiTime EFI_TIME
fnGetTime dd ?