//#include #include #include #include int kernel_main(void) { // Prepare the screen, and blank it out. screen_initialize(); // Prepare the serial console. init_serial(); serial_print(0x3F8, "[INFO] Serial ready.\r\n"); // Prepare the GDT serial_print(0x3F8, "[INFO] Beginning GDT subroutine.\r\n"); gdt_install(); serial_print(0x3F8, "[INFO] GDT subroutine complete.\r\n"); // Prepare interrupts serial_print(0x3F8, "[INFO] Beginning IDT subroutine.\r\n"); idt_install(); serial_print(0x3F8, "[INFO] IDT subroutine complete.\r\n[INFO] Enabling interrupts.\r\n"); asm volatile("sti"); serial_print(0x3F8, "[INFO] Starting System Clock.\r\n"); timer_install(); serial_print(0x3F8, "[INFO] All subsystems ready. Printing message.\r\n"); //Print a copyright message. term_writes("(c)"); term_setcolor(GREEN); term_writes(" Project"); term_setcolor(RED); term_writes("RED"); term_setcolor(WHITE); term_writes(", 2019\n"); serial_print(0x3F8, "[INFO] All operations complete. Checking for other tasks...\r\n"); for(size_t i = 0; i < 3000; i++) {} serial_print(0x3F8, "[DEBUG] Attempting a Divide by Zero error.\r\n"); //term_putchar(5/0); serial_print(0x3F8, "[DEBUG] Survived the error!\r\n"); for(;;) {} return 0; }