2024-03-26 07:39:40 +00:00
|
|
|
;; File: kernel.asm
|
2024-07-05 12:23:58 +00:00
|
|
|
format binary
|
|
|
|
|
2024-03-26 07:39:40 +00:00
|
|
|
include 'const.inc'
|
2024-03-20 15:51:27 +00:00
|
|
|
|
2024-03-26 07:39:40 +00:00
|
|
|
org KBASE
|
|
|
|
use32
|
2024-03-20 15:51:27 +00:00
|
|
|
|
2024-05-28 04:54:10 +00:00
|
|
|
jmp short kmain
|
|
|
|
|
|
|
|
db 'STPDKRNL'
|
|
|
|
db 32 dup(0)
|
2024-03-20 15:51:27 +00:00
|
|
|
|
2024-04-28 06:41:36 +00:00
|
|
|
;; Function: kmain
|
|
|
|
;;
|
|
|
|
;; Parameters:
|
|
|
|
;;
|
|
|
|
;; EAX - Boot Magic
|
|
|
|
;; EBX - Boot structure address
|
|
|
|
;;
|
2024-03-20 15:51:27 +00:00
|
|
|
kmain:
|
2024-07-06 13:19:35 +00:00
|
|
|
xchg bx, bx
|
|
|
|
|
2024-07-05 12:23:58 +00:00
|
|
|
mov esp, stack_top
|
|
|
|
|
2024-05-02 11:34:27 +00:00
|
|
|
cmp eax, STPDBOOT_MAGIC
|
2024-07-06 13:19:35 +00:00
|
|
|
jne .error_magic
|
2024-05-02 11:34:27 +00:00
|
|
|
|
2024-07-05 12:23:58 +00:00
|
|
|
; init memory manager
|
|
|
|
; init idt, gdt
|
|
|
|
; copy boot structure
|
2024-07-06 13:19:35 +00:00
|
|
|
;call vga_console_clear
|
2024-07-05 12:23:58 +00:00
|
|
|
|
|
|
|
mov [0xC03B0000], dword 0x08740953
|
|
|
|
mov [0xC03B0004], dword 0x05700675
|
|
|
|
mov [0xC03B0008], dword 0x03640469
|
|
|
|
mov [0xC03B000C], dword 0x0153024F
|
|
|
|
|
|
|
|
|
2024-07-05 09:10:26 +00:00
|
|
|
;KLOG_INIT
|
2024-05-02 11:34:27 +00:00
|
|
|
|
2024-07-05 12:23:58 +00:00
|
|
|
mov esi, szMsgKernelAlive
|
|
|
|
call klog
|
2024-05-02 11:34:27 +00:00
|
|
|
|
|
|
|
.halt:
|
|
|
|
hlt
|
|
|
|
jmp $
|
2024-07-06 13:19:35 +00:00
|
|
|
.error_magic:
|
|
|
|
mov esi, szErrorBootProtocol
|
|
|
|
.error:
|
|
|
|
call klog
|
|
|
|
jmp .halt
|
2024-03-20 15:51:27 +00:00
|
|
|
|
2024-07-05 12:23:58 +00:00
|
|
|
include 'klog.inc'
|
|
|
|
include 'dev/vga_console.inc'
|
|
|
|
include 'mm/mm.inc'
|
|
|
|
|
|
|
|
szMsgKernelAlive db "Kernel is alive", 0
|
2024-07-06 13:19:35 +00:00
|
|
|
szErrorBootProtocol db "Error: wrong magic number", 0
|
2024-03-20 15:51:27 +00:00
|
|
|
|
2024-07-05 12:23:58 +00:00
|
|
|
align 4
|
|
|
|
stack_bottom:
|
2024-03-20 15:51:27 +00:00
|
|
|
rb 0x4000
|
2024-07-05 12:23:58 +00:00
|
|
|
stack_top:
|
2024-03-20 15:51:27 +00:00
|
|
|
|
|
|
|
_end:
|
2024-07-05 12:23:58 +00:00
|
|
|
dd 0x0
|