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

89 lines
1.5 KiB
NASM
Executable File

; 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 0xa000
entry:
mov ebx, LOWER_STACK_POINTER
mov ss, ebx
mov esp, STACK_SIZE
mov ebp, STACK_SIZE
push dx
.check_a20:
push ebp
mov ebp, esp
call check_a20_wraparound
mov esp, ebp
pop ebp
cmp eax, 1
je .a20_is_enabled
cli
hlt
.a20_is_enabled:
; jmp .flat_gdt_loaded
; Reset Display
mov ah, 0x00
mov al, 0x03
int 0x10
; mov ah, 0x05
; mov al, 0
; int 0x10
mov ah, 0x0b
mov bh, 0x00
mov bl, 0
int 0x10
push ebp
mov ebp, esp
call setup_drivers
mov esp, ebp
pop ebp
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
mov ebx, some_text
push ebp
mov ebp, esp
push dword ebx
call dword write_text
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"