aboutsummaryrefslogtreecommitdiffstats
path: root/src/boot
diff options
context:
space:
mode:
Diffstat (limited to 'src/boot')
-rw-r--r--src/boot/boot.stage2.asm100
-rw-r--r--src/boot/boot.stage2.print.asm37
2 files changed, 50 insertions, 87 deletions
diff --git a/src/boot/boot.stage2.asm b/src/boot/boot.stage2.asm
index 968bedc..13d844b 100644
--- a/src/boot/boot.stage2.asm
+++ b/src/boot/boot.stage2.asm
@@ -1,75 +1,75 @@
- ;; boot.stage2.asm
+;; boot.stage2.asm
- [bits 16]
- [org 0x7e00]
-
- %include "common.asm"
+[bits 16]
+[org 0x7e00]
+
+%include "common.asm"
- jmp 0x0000:_s2_entry
+ jmp 0x0000:_s2_entry
_s2_entry:
- cli
- xor ax, ax
- mov ds, ax
+ cli
+ xor ax, ax
+ mov ds, ax
- mov si, DAP_kernel
- mov ah, 0x42
- int 0x13
- jc _kernel_load_err
- jmp _kernel_loaded
+ mov si, DAP_kernel
+ mov ah, 0x42
+ int 0x13
+ jc _kernel_load_err
+ jmp _kernel_loaded
_kernel_load_err:
- mov si, boot_kernel_err
- call _print_string
+ mov si, boot_kernel_err
+ call _print_string
- jmp $
+ jmp $
_kernel_loaded:
- mov si, boot_s2_msg
- call _print_string
+ mov si, boot_s2_msg
+ call _print_string
- call _enable_a20 ; Enable A20 line
- lgdt [GDT32_ptr] ; Load GDT
+ call _enable_a20 ; Enable A20 line
+ lgdt [GDT32_ptr] ; Load GDT
- ;; Setup Protected Mode
- mov eax, cr0
- or eax, 1
- mov cr0, eax
+;; Setup Protected Mode
+ mov eax, cr0
+ or eax, 1
+ mov cr0, eax
- jmp CODE_SEG32:_protected_mode
+ jmp CODE_SEG32:_protected_mode
- [bits 32]
+[bits 32]
_protected_mode:
- mov ax, DATA_SEG32
- mov ds, ax
- mov ss, ax
- mov esp, 0x90000
- and esp, 0xFFFFFFF0 ; Align to 16-byte boundary
+ mov ax, DATA_SEG32
+ mov ds, ax
+ mov ss, ax
+ mov esp, 0x90000
+ and esp, 0xFFFFFFF0 ; Align to 16-byte boundary
- mov esi, boot_protmode_msg
- call _print_string_pm_vga
+ mov esi, boot_protmode_msg
+ call _print_string_pm_vga
- call 0x10000
-
+ call 0x10000
+
boot_s2_msg:
- db "Entering Stage 2", 13, 10, 0
+ db "Entering Stage 2", 13, 10, 0
boot_protmode_msg:
- db "Enabling Protected Mode", 13, 10, 0
+ db "Enabling Protected Mode", 13, 10, 0
boot_kernel_err:
- db "Error loading kernel from disk", 13, 10, 0
+ db "Error loading kernel from disk", 13, 10, 0
- align 16
+align 16
DAP_kernel:
- db 0x10
- db 0
- dw 1 ; Number of sectors
- dw 0x0000
- dw 0x1000 ; Offset
- dq 66 ; Starting sector
+ db 0x10
+ db 0
+ dw 1 ; Number of sectors
+ dw 0x0000
+ dw 0x1000 ; Offset
+ dq 66 ; Starting sector
- %include "boot.stage1.print.asm"
- %include "boot.stage2.a20.asm"
- %include "boot.stage2.gdt32.asm"
- %include "boot.stage2.print.asm"
+%include "boot.stage1.print.asm"
+%include "boot.stage2.a20.asm"
+%include "boot.stage2.gdt32.asm"
+%include "common.protmode.print.asm"
diff --git a/src/boot/boot.stage2.print.asm b/src/boot/boot.stage2.print.asm
deleted file mode 100644
index 4527b87..0000000
--- a/src/boot/boot.stage2.print.asm
+++ /dev/null
@@ -1,37 +0,0 @@
- ;; boot.stage2.print.asm
-
- %define VGA_BUFFER 0xb8000
- %define WB_COLOR 0xf
-
-
-_print_string_pm_vga:
- pusha
- mov edi, VGA_BUFFER
- mov ah, WB_COLOR
- xor ecx, ecx
- xor edx, edx
-
- .print_loop:
- lodsb
- test al, al
- jz .done
-
- push eax
- mov eax, edx
- imul eax, eax, 160
- lea edi, [VGA_BUFFER + eax]
- lea edi, [edi + ecx * 2]
- pop eax
-
- ;; Advance cursor
- inc cl
- cmp cl, 80
- jb .print_loop
- xor cl, cl
- inc dl
-
- jmp .print_loop
-
- .done:
- popa
- ret