diff options
| author | James Barnett <noreply@jamesbarnett.xyz> | 2019-05-25 20:11:52 +0100 |
|---|---|---|
| committer | James Barnett <noreply@jamesbarnett.xyz> | 2019-05-25 20:11:52 +0100 |
| commit | 506f1691f1ca7b562d82ab6f2280b87d0e4af84c (patch) | |
| tree | bdb403c000cd15ab29cbce8b3bcec5077d6f9655 /kernel/kernel-bootstrap.asm | |
| parent | c1d948ce1973d9be37a43718f548776a0061807b (diff) | |
| download | tinyOS-506f1691f1ca7b562d82ab6f2280b87d0e4af84c.tar.xz tinyOS-506f1691f1ca7b562d82ab6f2280b87d0e4af84c.zip | |
Add keyboard support
Diffstat (limited to 'kernel/kernel-bootstrap.asm')
| -rw-r--r-- | kernel/kernel-bootstrap.asm | 45 |
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 |