caos-with-snake/kernel.c

44 lines
1013 B
C
Raw Normal View History

asm(".asciz \"kernel start\\n\"");
2023-01-13 12:56:54 +04:00
#include "console.h"
#include "cpu/isr.h"
#include "cpu/gdt.h"
#include "drivers/keyboard.h"
2023-01-13 12:56:54 +04:00
#include "drivers/vga.h"
#include "drivers/ata.h"
#include "drivers/misc.h"
2023-01-13 12:56:54 +04:00
#include "drivers/uart.h"
#include "fs/fs.h"
#include "lib/string.h"
#include "proc.h"
2023-01-13 12:56:54 +04:00
void _start() {
load_gdt();
2023-01-21 13:55:26 +04:00
init_keyboard();
uartinit();
2023-01-21 13:55:26 +04:00
load_idt();
sti();
2023-01-13 12:56:54 +04:00
vga_clear_screen();
printk("YABLOKO\n");
printk("\n> ");
2023-01-21 13:55:26 +04:00
while (1) {
if (kbd_buf_size > 0 && kbd_buf[kbd_buf_size-1] == '\n') {
if (!strncmp("halt\n", kbd_buf, kbd_buf_size)) {
qemu_shutdown();
} else if (!strncmp("run ", kbd_buf, 4)) {
kbd_buf[kbd_buf_size-1] = '\0';
const char* cmd = kbd_buf + 4;
run_elf(cmd);
} else {
printk("unknown command, try: halt | run CMD");
}
kbd_buf_size = 0;
printk("\n> ");
}
2023-01-21 13:55:26 +04:00
asm("hlt");
}
2023-01-13 12:56:54 +04:00
}