diff --git a/src/boot.asm b/src/boot.asm index 4b73121..21f035e 100644 --- a/src/boot.asm +++ b/src/boot.asm @@ -33,7 +33,7 @@ extern kmain ; this function is gonna be located in our c code(kernel start: mov esp, stack_top -; cli ;clears the interrupts + cli ;clears the interrupts lgdt [gdt] mov ax, DATA_SEG diff --git a/src/isr.c b/src/isr.c index 0f46302..8e13800 100644 --- a/src/isr.c +++ b/src/isr.c @@ -4,6 +4,16 @@ #include "../include/screen.h" #include "../include/pic.h" +typedef size_t uword_t; +struct interrupt_frame +{ + uword_t ip; + uword_t cs; + uword_t flags; + uword_t sp; + uword_t ss; +}; + void isr_custom(); void default_handler(); @@ -56,22 +66,16 @@ void default_handler() } - -#include -#include -typedef size_t uword_t; -struct interrupt_frame +void handle_keyboard() { - uword_t ip; - uword_t cs; - uword_t flags; - uword_t sp; - uword_t ss; -}; + uint8_t scancode = inb(0x60); + printf("%X ", scancode); +} __attribute__((interrupt)) void isr_custom(struct interrupt_frame *frame) { - terminal_writestring("YOOOOO!!!!!! I LOVE KATYA!!!!"); + //terminal_writestring("YOOOOO!!!!!! I LOVE KATYA!!!!"); + handle_keyboard(); pic_end_int(0x21); } diff --git a/src/kernel.c b/src/kernel.c index 593a099..389ca56 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -26,10 +26,9 @@ void kmain() disk_info info; get_disk_info(&info); printf("CYL HEAD SECT: %X %X %X\n", info.cylinders, info.heads, info.sectors); - while(1) { - if(inportb(0x64) & 0x1) +/* if(inportb(0x64) & 0x1) { unsigned char key = inportb(0x60); if(key == 2) @@ -39,6 +38,6 @@ void kmain() else terminal_writestring("dunno what is it\n"); } - } +*/ } }