diff options
| author | EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> | 2023-12-17 17:18:02 -0500 |
|---|---|---|
| committer | EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> | 2023-12-17 17:18:02 -0500 |
| commit | d286be47997ecfc4038ded9442770d603ce53b30 (patch) | |
| tree | 697a58914befc58adbe7a7f27dfed049c9a6c5d2 | |
| parent | a78033acc941fc4bcf6188f1d48fd8e012673fff (diff) | |
forgot what i did this commit it's been so long
| -rw-r--r-- | .gitignore | 5 | ||||
| -rw-r--r-- | grub.cfg | 6 | ||||
| -rw-r--r-- | kernel/arch/i386/isr_handler.cpp | 6 | ||||
| -rw-r--r-- | kernel/dev/ps2kbd.cpp | 15 | ||||
| -rw-r--r-- | kernel/include/dev/ps2kbd.h | 3 |
5 files changed, 31 insertions, 4 deletions
@@ -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
@@ -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 <stddef.h>
#include <arch/i386/tmtty.h>
#include <arch/i386/ps2_controller.h>
+#include <dev/ps2kbd.h>
#include <arch/i386/pic.h>
#include <io.h>
@@ -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 <arch/i386/pic.h>
#include <io.h>
+// 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 <stdint.h>
+
void keyboard_init();
+void keyboard_write(uint8_t);
#endif
\ No newline at end of file |
