diff options
| author | kotorifan <kotorifan05@gmail.com> | 2026-03-08 15:33:02 +0100 |
|---|---|---|
| committer | kotorifan <kotorifan05@gmail.com> | 2026-03-08 15:33:02 +0100 |
| commit | ceedd4f2c7e990162f1b619f0d60471eea3aed1f (patch) | |
| tree | 640ffbfcb9428624b6386d45d28db35d9ccac756 /src/boot | |
| parent | f81dee10ef19f0c82eb89d0e528bcbfb7a38b016 (diff) | |
| download | kotori-os-ceedd4f2c7e990162f1b619f0d60471eea3aed1f.tar.gz | |
Made a common directory, moved the protmode print there
Diffstat (limited to 'src/boot')
| -rw-r--r-- | src/boot/boot.stage2.asm | 100 | ||||
| -rw-r--r-- | src/boot/boot.stage2.print.asm | 37 |
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 |
