Nightloader/i386/loader/src-asm/entry.asm

76 lines
1.3 KiB
NASM
Raw Normal View History

; entry.asm: Entrypoint for the loader partition of the Nightloader.
; WARNING: Never import at the top of this file!
; If something has to be included, include it at the bottom!
STACK_SIZE equ 32768
UPPER_STACK_POINTER equ 0x100000
LOWER_STACK_POINTER equ (UPPER_STACK_POINTER - STACK_SIZE)
bits 16
org 0x0000
entry:
mov ebx, LOWER_STACK_POINTER
mov ss, ebx
mov esp, STACK_SIZE
mov ebp, STACK_SIZE
push dx
cli
.check_a20:
push ebp
mov ebp, esp
call check_a20_wraparound
mov esp, ebp
pop ebp
cmp eax, 1
je .a20_is_enabled
hlt
.a20_is_enabled:
; Reset Display
mov ah, 0x00
mov al, 0x03
int 0x10
mov ah, 0x0b
mov bh, 0x00
mov bl, 0
int 0x10
mov edi, ebp
mov esi, esp
push ebp
mov ebp, esp
push .flat_gdt_loaded
call load_flat_gdt
mov esp, ebp
pop ebp
.flat_gdt_loaded:
mov ebp, edi
mov esp, esi
; push ebp
; mov ebp, esp
; call setup_drivers
; mov esp, ebp
; pop ebp
cli
hlt
some_text:
db "This is some text.", 0x00
; Utilities
%include "utility/math.asm"
%include "utility/memory.asm"
; Memory Management
%include "memory/a20.asm"
%include "memory/gdt.asm"
; Driver Manager
; %include "drivers/manager.asm"