aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorEmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com>2023-12-17 17:18:02 -0500
committerEmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com>2023-12-17 17:18:02 -0500
commitd286be47997ecfc4038ded9442770d603ce53b30 (patch)
tree697a58914befc58adbe7a7f27dfed049c9a6c5d2 /kernel
parenta78033acc941fc4bcf6188f1d48fd8e012673fff (diff)
forgot what i did this commit it's been so long
Diffstat (limited to 'kernel')
-rw-r--r--kernel/arch/i386/isr_handler.cpp6
-rw-r--r--kernel/dev/ps2kbd.cpp15
-rw-r--r--kernel/include/dev/ps2kbd.h3
3 files changed, 21 insertions, 3 deletions
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