StupidOS/boot/loader/loader.asm

70 lines
986 B
NASM
Raw Normal View History

format binary
2024-03-20 09:48:47 +00:00
include '../common/const.inc'
include 'multiboot.inc'
org LOADER_BASE
use32
2024-03-20 09:48:47 +00:00
jmp _start
align 4
2024-03-20 09:48:47 +00:00
multiboot_header:
mb_header MultibootHeader multiboot_header
_start:
cmp eax, MULTIBOOT_MAGIC
je .multiboot
use16
2024-03-20 09:48:47 +00:00
;; 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'
2024-03-20 09:48:47 +00:00
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: