summaryrefslogtreecommitdiff
path: root/src/kernel.asm
diff options
context:
space:
mode:
authorCarlos Maiolino <[email protected]>2025-07-17 19:20:28 +0200
committerCarlos Maiolino <[email protected]>2025-07-17 19:20:28 +0200
commitd8392002629bc97c05ca82961c7ab3439ed7248e (patch)
treedfd3f7dafd4e9efe10fe87b383c78430379580b9 /src/kernel.asm
parent7bcc28cb58e99927e14636fe199c5345f6c63a6f (diff)
Start writing the kernel and add a linker script
Move the code unders [BITS 32] label to its own file to be loaded as a kernel by the boot loader. Add a linker script to link the bootloader and the kernel in a single binary file. Add a build script to make it easier to use the cross compiler Update the Makefile to build everything and pack it into the os.bin Signed-off-by: Carlos Maiolino <[email protected]>
Diffstat (limited to 'src/kernel.asm')
-rw-r--r--src/kernel.asm27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/kernel.asm b/src/kernel.asm
new file mode 100644
index 0000000..93afff7
--- /dev/null
+++ b/src/kernel.asm
@@ -0,0 +1,27 @@
+[BITS 32]
+global _start
+
+CODE_SEG equ 0x08
+DATA_SEG equ 0x10
+
+; No access to BIOS from now on....
+_start:
+ ; Set all segments to the same as the DATA_SEG
+ mov ax, DATA_SEG
+ mov ds, ax
+ mov es, ax
+ mov fs, ax
+ mov gs, ax
+ mov ss, ax
+
+ ; Set the stack pointer and base pointer further in mem
+ mov ebp, 0x00200000
+ mov esp, ebp
+
+ ; Enable A20 line
+ in al, 0x92
+ or al, 2
+ out 0x92, al
+
+ jmp $
+