isr: improve keyboard handler
This commit is contained in:
+1
-1
@@ -33,7 +33,7 @@ extern kmain ; this function is gonna be located in our c code(kernel
|
|||||||
|
|
||||||
start:
|
start:
|
||||||
mov esp, stack_top
|
mov esp, stack_top
|
||||||
; cli ;clears the interrupts
|
cli ;clears the interrupts
|
||||||
|
|
||||||
lgdt [gdt]
|
lgdt [gdt]
|
||||||
mov ax, DATA_SEG
|
mov ax, DATA_SEG
|
||||||
|
|||||||
@@ -4,6 +4,16 @@
|
|||||||
#include "../include/screen.h"
|
#include "../include/screen.h"
|
||||||
#include "../include/pic.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 isr_custom();
|
||||||
void default_handler();
|
void default_handler();
|
||||||
|
|
||||||
@@ -56,22 +66,16 @@ void default_handler()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void handle_keyboard()
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
typedef size_t uword_t;
|
|
||||||
struct interrupt_frame
|
|
||||||
{
|
{
|
||||||
uword_t ip;
|
uint8_t scancode = inb(0x60);
|
||||||
uword_t cs;
|
printf("%X ", scancode);
|
||||||
uword_t flags;
|
}
|
||||||
uword_t sp;
|
|
||||||
uword_t ss;
|
|
||||||
};
|
|
||||||
|
|
||||||
__attribute__((interrupt)) void isr_custom(struct interrupt_frame *frame)
|
__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);
|
pic_end_int(0x21);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-3
@@ -26,10 +26,9 @@ void kmain()
|
|||||||
disk_info info;
|
disk_info info;
|
||||||
get_disk_info(&info);
|
get_disk_info(&info);
|
||||||
printf("CYL HEAD SECT: %X %X %X\n", info.cylinders, info.heads, info.sectors);
|
printf("CYL HEAD SECT: %X %X %X\n", info.cylinders, info.heads, info.sectors);
|
||||||
|
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
if(inportb(0x64) & 0x1)
|
/* if(inportb(0x64) & 0x1)
|
||||||
{
|
{
|
||||||
unsigned char key = inportb(0x60);
|
unsigned char key = inportb(0x60);
|
||||||
if(key == 2)
|
if(key == 2)
|
||||||
@@ -39,6 +38,6 @@ void kmain()
|
|||||||
else
|
else
|
||||||
terminal_writestring("dunno what is it\n");
|
terminal_writestring("dunno what is it\n");
|
||||||
}
|
}
|
||||||
}
|
*/ }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user