This commit is contained in:
nub31
2025-09-01 20:49:15 +02:00
parent 7c6ff5d52d
commit 5927756988
6 changed files with 53 additions and 5 deletions

View File

@@ -1,15 +1,26 @@
#include "kernel.h"
#include "interrupts.h"
#include "keyboard.h"
#include "string.h"
#include "vga.h"
#include <stdarg.h>
#include <stddef.h>
void handle_keypress(const keyboard_event_t* event)
{
if (event->pressed && event->ascii)
{
kprintf("%c", event->ascii);
}
}
void kmain()
{
vga_clear();
pic_remap();
enable_interrupts();
init_keyboard();
register_keypress_handler(handle_keypress);
kprintf("Welcome to nub OS\n");
khalt();
@@ -18,6 +29,7 @@ void kmain()
void kpanic()
{
kprintf("Kernel panic!\n");
disable_interrupts();
khalt();
}
@@ -33,6 +45,7 @@ void kprintf(const char* fmt, ...)
if (should_format)
{
should_format = false;
if (fmt[i] == '%')
{
vga_put_char('%', 0x0F);
@@ -45,6 +58,11 @@ void kprintf(const char* fmt, ...)
vga_put_char(str[j], 0x0F);
}
}
else if (fmt[i] == 'c')
{
char character = (char)va_arg(args, int64_t);
vga_put_char(character, 0x0F);
}
else if (fmt[i] == 'd')
{
int64_t val = va_arg(args, int64_t);
@@ -65,6 +83,10 @@ void kprintf(const char* fmt, ...)
vga_put_char(buf[j], 0x0F);
}
}
else
{
vga_put_char(fmt[i], 0x0F);
}
}
else if (fmt[i] == '%')
{