#include "../drivers/vga.h" #include "../drivers/serial.h" #include "../drivers/mouse.h" #include "../drivers/timer.h" #include "../drivers/speaker.h" #include "gdt.h" #include "idt.h" #include "pic.h" #include "logger.h" void kernel_main(void) { log_info(LOG_NORMAL, "Initializing serial..."); serial_init(); log_info(LOG_NORMAL, "Initializing VGA..."); vga_init(); log_info(LOG_NORMAL, "Setting color white on black"); vga_set_color(VGA_COLOR_WHITE, VGA_COLOR_BLACK); log_info(LOG_NORMAL, "Initializing GDT..."); gdt_init(); log_info(LOG_NORMAL, "Initializing IDT..."); idt_init(); log_info(LOG_NORMAL, "Remapping PIC..."); pic_remap(32, 40); log_info(LOG_NORMAL, "Unmasking IRQ 0... (timer)"); pic_clear_mask(0); log_info(LOG_NORMAL, "Unmasking IRQ 1... (keyboard)"); pic_clear_mask(1); log_info(LOG_NORMAL, "Unmasking IRQ 2... (slave pic)"); pic_clear_mask(2); log_info(LOG_NORMAL, "Unmasking IRQ 12... (mouse)"); pic_clear_mask(12); log_info(LOG_NORMAL, "Registering timer at 100Hz"); timer_init(100); log_info(LOG_NORMAL, "Registering mouse"); mouse_init(); log_info(LOG_NORMAL, "Enabling IRQ..."); __asm__ __volatile__("sti"); vga_set_color(VGA_COLOR_LIGHT_GREEN, VGA_COLOR_BLACK); vga_print("h"); speaker_beep(100, 10); vga_print("a"); speaker_beep(125, 10); vga_print("i"); speaker_beep(150, 10); vga_print("!"); speaker_beep(175, 10); vga_print("!"); speaker_beep(200, 10); vga_print("!"); speaker_beep(225, 10); vga_print("!"); speaker_beep(250, 10); vga_print("!"); speaker_beep(275, 10); vga_print("!"); speaker_beep(300, 10); vga_print("!"); speaker_beep(325, 10); vga_print("\n # ### #### \n #### ### # ## ### #### # # # \n # # ##### ## ##### # # # # ### \n # # # # # # # # # # \n #### ### # ### #### ### #### \n # \n"); speaker_beep(350, 400); vga_init(); vga_set_color(VGA_COLOR_LIGHT_GRAY, VGA_COLOR_BLACK); while (1); }