From 578d467b80015c52d0c96c8443b4c13936f33365 Mon Sep 17 00:00:00 2001 From: Aleksa Vučković Date: Mon, 11 Oct 2021 11:35:59 +0200 Subject: (IDT + keyboard) finally working --- src/kernel.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 69 insertions(+), 17 deletions(-) (limited to 'src/kernel.c') diff --git a/src/kernel.c b/src/kernel.c index c6d1045..0882580 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -6,6 +6,17 @@ static const size_t VGA_WIDTH = 80; static const size_t VGA_HEIGHT = 25; +#define PIC1_COMMAND_PORT 0x20 +#define PIC1_DATA_PORT 0x21 +#define PIC2_COMMAND_PORT 0xA0 +#define PIC2_DATA_PORT 0xA1 +// IO Ports for Keyboard +#define KEYBOARD_DATA_PORT 0x60 +#define KEYBOARD_STATUS_PORT 0x64 + +extern char ioport_in(uint8_t port); +extern void ioport_out(uint8_t port, char data); + static inline uint8_t vga_entry_color(enum vga_color fg, enum vga_color bg) { return fg | bg << 4; @@ -23,24 +34,24 @@ uint16_t* terminal_buffer; void terminal_initialize(void) { - terminal_row = 0; - terminal_column = 0; - terminal_color = vga_entry_color(VGA_COLOR_LIGHT_GREY, VGA_COLOR_BLACK); - terminal_buffer = (uint16_t*) 0xB8000; - for (size_t y = 0; y < VGA_HEIGHT; y++) + terminal_row=0; + terminal_column=0; + terminal_color=vga_entry_color(VGA_COLOR_LIGHT_GREY, VGA_COLOR_BLACK); + terminal_buffer=(uint16_t*) 0xB8000; + for(size_t y=0;y= 128) return; + + if(keycode==14) + { + if(terminal_column) terminal_column--; + terminal_putchar(keyboard[keycode]); + terminal_column--; + return; + } - for(size_t i=0;i<50;i++) - { + terminal_putchar(keyboard[keycode]); + + } +} +void print_message() +{ + for(size_t i=0;i<50;i++) + { for(size_t j=0;j