; 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"