trios/kernel/main.c

45 lines
1.1 KiB
C

#include <sys.h>
#include <stdlib.h>
#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);
}
}
}
}