aboutsummaryrefslogtreecommitdiff
path: root/kernel/kernel-bootstrap.asm
diff options
context:
space:
mode:
authorJames Barnett <noreply@jamesbarnett.xyz>2019-05-25 20:11:52 +0100
committerJames Barnett <noreply@jamesbarnett.xyz>2019-05-25 20:11:52 +0100
commit506f1691f1ca7b562d82ab6f2280b87d0e4af84c (patch)
treebdb403c000cd15ab29cbce8b3bcec5077d6f9655 /kernel/kernel-bootstrap.asm
parentc1d948ce1973d9be37a43718f548776a0061807b (diff)
downloadtinyOS-506f1691f1ca7b562d82ab6f2280b87d0e4af84c.tar.xz
tinyOS-506f1691f1ca7b562d82ab6f2280b87d0e4af84c.zip
Add keyboard support
Diffstat (limited to 'kernel/kernel-bootstrap.asm')
-rw-r--r--kernel/kernel-bootstrap.asm45
1 files changed, 43 insertions, 2 deletions
diff --git a/kernel/kernel-bootstrap.asm b/kernel/kernel-bootstrap.asm
index 9e3b10e..8af3565 100644
--- a/kernel/kernel-bootstrap.asm
+++ b/kernel/kernel-bootstrap.asm
@@ -7,12 +7,53 @@ dd 0x1BADB002
dd 0x00
dd - (0x1BADB002 + 0x00) ; checksum
+global flush_gdt
+global read_port
+global write_port
+global load_idt
+global keyboard_handler
global start
+
extern kernel_entrypoint
+extern handle_keypress
+extern gdt_pointer
+
+flush_gdt:
+ lgdt [gdt_pointer]
+ mov ax, 0x10
+ mov ds, ax
+ mov es, ax
+ mov fs, ax
+ mov gs, ax
+ mov ss, ax
+ jmp 0x08:flush
+flush:
+ ret
+
+read_port:
+ mov edx, [esp + 4]
+ in al, dx
+ ret
+
+write_port:
+ mov edx, [esp + 4]
+ mov al, [esp + 4 + 4]
+ out dx, al
+ ret
+
+load_idt:
+ mov edx, [esp + 4]
+ lidt [edx]
+ sti
+ ret
+
+keyboard_handler:
+ call handle_keypress
+ iretd
+
- ; call kernel and halt
start:
- cli ; disable interrups
+ cli
mov esp, stack_space
call kernel_entrypoint
hlt