Initializing own stack and moar multiboot stuff
- Not relying on Grub/Multiboot setting up stack for us - Preparing Multiboot headers so one day we can has graphical mode
This commit is contained in:
parent
aaffd2351f
commit
99e0b4debb
1 changed files with 17 additions and 8 deletions
25
start32.asm
25
start32.asm
|
@ -1,17 +1,27 @@
|
||||||
format elf
|
format elf
|
||||||
use32
|
use32
|
||||||
|
|
||||||
MULTIBOOT_PAGE_ALIGN equ (1 shl 0)
|
MULTIBOOT_PAGE_ALIGN equ (1 shl 0)
|
||||||
MULTIBOOT_MEMORY_INFO equ (1 shl 1)
|
MULTIBOOT_MEMORY_INFO equ (1 shl 1)
|
||||||
|
MULTIBOOT_VIDEO_REQUEST equ (0 shl 2)
|
||||||
MULTIBOOT_AOUT_KLUDGE equ (1 shl 16)
|
MULTIBOOT_AOUT_KLUDGE equ (1 shl 16)
|
||||||
MULTIBOOT_HEADER_MAGIC equ 0x1BADB002
|
MULTIBOOT_HEADER_MAGIC equ 0x1BADB002
|
||||||
MULTIBOOT_HEADER_FLAGS equ MULTIBOOT_PAGE_ALIGN or MULTIBOOT_MEMORY_INFO
|
MULTIBOOT_HEADER_FLAGS equ MULTIBOOT_PAGE_ALIGN or MULTIBOOT_MEMORY_INFO or MULTIBOOT_VIDEO_REQUEST
|
||||||
MULTIBOOT_CHECKSUM equ -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)
|
MULTIBOOT_CHECKSUM equ -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)
|
||||||
|
|
||||||
.multiboot: align 4
|
.multiboot: align 4
|
||||||
dd MULTIBOOT_HEADER_MAGIC
|
dd MULTIBOOT_HEADER_MAGIC
|
||||||
dd MULTIBOOT_HEADER_FLAGS
|
dd MULTIBOOT_HEADER_FLAGS
|
||||||
dd MULTIBOOT_CHECKSUM
|
dd MULTIBOOT_CHECKSUM
|
||||||
|
; dd 0 ; header address
|
||||||
|
; dd 0 ; load address
|
||||||
|
; dd 0 ; load end address
|
||||||
|
; dd 0 ; bss end address
|
||||||
|
; dd 0 ; entry address
|
||||||
|
; dd 0 ; video mode_type (0:fb, 1:txt) (set flags[2]!)
|
||||||
|
; dd 1024 ; video width
|
||||||
|
; dd 768 ; video height
|
||||||
|
; dd 32 ; video depth
|
||||||
|
|
||||||
section '.bss' writable align 16
|
section '.bss' writable align 16
|
||||||
stack_bottom:
|
stack_bottom:
|
||||||
|
@ -26,15 +36,15 @@ disable_cursor:
|
||||||
pushf
|
pushf
|
||||||
push eax
|
push eax
|
||||||
push edx
|
push edx
|
||||||
|
|
||||||
mov dx, 0x3D4
|
mov dx, 0x3D4
|
||||||
mov al, 0xA ; low cursor shape register
|
mov al, 0xA ; low cursor shape register
|
||||||
out dx, al
|
out dx, al
|
||||||
|
|
||||||
inc dx
|
inc dx
|
||||||
mov al, 0x20 ; bits 6-7 unused, bit 5 disables the cursor, bits 0-4 control the cursor shape
|
mov al, 0x20 ; bits 6-7 unused, bit 5 disables the cursor, bits 0-4 control the cursor shape
|
||||||
out dx, al
|
out dx, al
|
||||||
|
|
||||||
pop edx
|
pop edx
|
||||||
pop eax
|
pop eax
|
||||||
popf
|
popf
|
||||||
|
@ -42,14 +52,13 @@ disable_cursor:
|
||||||
|
|
||||||
_start:
|
_start:
|
||||||
; Setup stack
|
; Setup stack
|
||||||
;mov esp, stack_top
|
mov esp, stack_top
|
||||||
|
|
||||||
; Call the main kernel function.
|
; Call the main kernel function.
|
||||||
call disable_cursor
|
call disable_cursor
|
||||||
call kmain
|
call kmain
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@:
|
@@:
|
||||||
cli
|
cli
|
||||||
hlt
|
hlt
|
||||||
|
|
Loading…
Reference in a new issue