From d286be47997ecfc4038ded9442770d603ce53b30 Mon Sep 17 00:00:00 2001 From: EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> Date: Sun, 17 Dec 2023 17:18:02 -0500 Subject: forgot what i did this commit it's been so long --- .gitignore | 5 ++++- grub.cfg | 6 ++++++ kernel/arch/i386/isr_handler.cpp | 6 +++--- kernel/dev/ps2kbd.cpp | 15 +++++++++++++++ kernel/include/dev/ps2kbd.h | 3 +++ 5 files changed, 31 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 44a413f..2c19c1b 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,7 @@ sysroot/ bx_enh_dbg.ini # temporarily ignored cause i have no idea how to set up cmake with this and dont really have much else to use it for yet -misc/ \ No newline at end of file +misc/ + +# not important +make.png diff --git a/grub.cfg b/grub.cfg index 036cfbd..71b0917 100644 --- a/grub.cfg +++ b/grub.cfg @@ -1,3 +1,9 @@ +set timeout_style=menu +if [ "${timeout}" = 0 ]; then + #set timeout=10 # comment this original + set timeout=0 # add this +fi + menuentry "emuos" { multiboot /boot/kernel.bin } \ No newline at end of file diff --git a/kernel/arch/i386/isr_handler.cpp b/kernel/arch/i386/isr_handler.cpp index a2fc23a..ba825dd 100644 --- a/kernel/arch/i386/isr_handler.cpp +++ b/kernel/arch/i386/isr_handler.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -12,10 +13,9 @@ extern "C" void exception_handler(int e) { printf("Exception\n"); } +#define PS2_DATA 0x60 extern "C" void ps2_handler() { - printf("b"); - inb(0x60); - printf("a"); + keyboard_write(inb(PS2_DATA)); pic_send_eoi(1); } \ No newline at end of file diff --git a/kernel/dev/ps2kbd.cpp b/kernel/dev/ps2kbd.cpp index a98ae51..ee282b6 100644 --- a/kernel/dev/ps2kbd.cpp +++ b/kernel/dev/ps2kbd.cpp @@ -3,8 +3,23 @@ #include #include +// Keycodes are sorted from left to right, up to down starting with esc +// 0x80 is reserved for nonexistant scancodes +// used for scan code set 2 +constexpr uint8_t scancodes[] = { + 9, 0x80, 5, 3, 1, 2, 12, 0x80, + 10, 8, 6, 4, 27, +}; + void keyboard_init() { irq_clear_mask(1); outb(0x60, 0xF4); inb(0x60); +} + +void keyboard_write(uint8_t scancode) { + printf("a\n"); + /*for (int i = 0; i < 7; i++) { + inputbuffer |= inb(PS2_DATA) << (i * 8); // lsb is the first scan code + }*/ } \ No newline at end of file diff --git a/kernel/include/dev/ps2kbd.h b/kernel/include/dev/ps2kbd.h index 2d1ecc2..0845351 100644 --- a/kernel/include/dev/ps2kbd.h +++ b/kernel/include/dev/ps2kbd.h @@ -1,6 +1,9 @@ #ifndef PS2_KBD_H #define PS2_KBD_H +#include + void keyboard_init(); +void keyboard_write(uint8_t); #endif \ No newline at end of file -- cgit v1.2.3-70-g09d2