This commit is contained in:
nub31
2025-09-01 20:28:02 +02:00
parent 1ed52d1e9e
commit 7c6ff5d52d
3 changed files with 86 additions and 60 deletions

View File

@@ -8,12 +8,10 @@
void kmain()
{
vga_clear();
pic_remap();
enable_interrupts();
kprintf("\nWelcome to nub OS\n");
kprintf("Welcome to nub OS\n");
khalt();
}
@@ -28,12 +26,18 @@ void kprintf(const char* fmt, ...)
va_list args;
va_start(args, fmt);
bool should_format = false;
for (size_t i = 0; fmt[i] != '\0'; i++)
{
if (fmt[i] == '%')
if (should_format)
{
i++;
if (fmt[i] == 's')
should_format = false;
if (fmt[i] == '%')
{
vga_put_char('%', 0x0F);
}
else if (fmt[i] == 's')
{
const char* str = va_arg(args, const char*);
for (size_t j = 0; str[j] != '\0'; j++)
@@ -43,20 +47,29 @@ void kprintf(const char* fmt, ...)
}
else if (fmt[i] == 'd')
{
int val = va_arg(args, int);
char buf[12];
itoa(val, buf);
int64_t val = va_arg(args, int64_t);
char buf[21];
itoa64(val, buf);
for (size_t j = 0; buf[j] != '\0'; j++)
{
vga_put_char(buf[j], 0x0F);
}
}
else
else if (fmt[i] == 'u')
{
vga_put_char('%', 0x0F);
vga_put_char(fmt[i], 0x0F);
uint64_t val = va_arg(args, uint64_t);
char buf[21];
uitoa64(val, buf);
for (size_t j = 0; buf[j] != '\0'; j++)
{
vga_put_char(buf[j], 0x0F);
}
}
}
else if (fmt[i] == '%')
{
should_format = true;
}
else
{
vga_put_char(fmt[i], 0x0F);