#include #include #include "bootinfo.h" #include "drivers/keycodes.h" #include "drivers/ps2ctrl.h" #include "drivers/ps2kb.h" #include "drivers/serial.h" #include "panic.h" #include "term.h" #include "interrupt/pic.h" #include "interrupt/idt.h" extern void kmain(void* boot_info) { term_clear(); term_setcol(0x0f); puts("loading kernel\n"); bootinfo_load(boot_info); puts("loaded boot info\n"); printf("cmdline: %s\n", bootinfo_get_cmdline()); idt_init(); puts("initialized idt\n"); pic_remap(PIC_REMAP_OFFSET); puts("remapped pic\n"); serial_init(); puts("initialized serial\n"); ps2ctrl_init(); puts("enabled ps/2 controller\n"); ps2kb_init(); puts("enabled keyboard\n"); while(1) { int_wait(); struct Keycode code = ps2kb_get(); if(code.key != KEY_NONE) { if(code.flags & KC_FLAG_ERROR) { printf("error: %X\n", code.key); } else if(code.flags & KC_FLAG_KEY_DOWN) { printf("pressed: %X\n", code.key); } else { printf("released: %X\n", code.key); } } } }