StupidOS/boot/loader/loader.asm
d0p1 🏳️‍⚧️ 74e09f7b33
Some checks are pending
Build / test (push) Waiting to run
Docs / test (push) Waiting to run
refactor: reorganize bootloader source code
2024-03-24 09:03:03 +01:00

70 lines
986 B
NASM

format binary
include '../common/const.inc'
include 'multiboot.inc'
org LOADER_BASE
use32
jmp _start
align 4
multiboot_header:
mb_header MultibootHeader multiboot_header
_start:
cmp eax, MULTIBOOT_MAGIC
je .multiboot
use16
;; non multiboot process
push cs
pop ds
mov si, msg_stage2
call bios_print
call a20_enable
jc .error_a20
; detect memory
call memory_get_map
jc .error_memory
xchg bx, bx
call video_setup
.multiboot:
jmp .hang
.error_memory:
mov si, msg_error_memory
jmp .error
.error_a20:
mov si, msg_error_a20
.error:
call bios_print
.hang:
hlt
jmp $
include 'a20.inc'
include '../common/bios.inc'
include 'memory.inc'
include 'video.inc'
msg_stage2 db "StupidOS Bootloader (Stage 1)", CR, LF, 0
msg_error_a20 db "ERROR: can't enable a20 line", CR, LF, 0
msg_error_memory db "ERROR: can't detect available memory", CR, LF, 0
;;
bi_screen_width: dw 0
bi_screen_height: dw 0
_edata:
; BSS
rb 0x4000
_end: