Add stage 2 loader entry point
This commit adds the entry point for the second stage of the loader. It currently doesn't contain a lot of code, but it will have to expand in the next bit of time.
This commit is contained in:
parent
d773a8f9e2
commit
5180348c39
|
@ -180,7 +180,7 @@ load_partition:
|
|||
|
||||
|
||||
jump_to_partition:
|
||||
jmp 0x0000:0xa000
|
||||
jmp 0x0a00:0x0000
|
||||
cli
|
||||
hlt
|
||||
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
; 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"
|
Loading…
Reference in New Issue