SPEAKER: реализован TIMER: не срет в логи больше KERNEL: крутая бутанимация со спикером
57 lines
1.9 KiB
C
57 lines
1.9 KiB
C
#include "../drivers/vga.h"
|
|
#include "../drivers/serial.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, "Registering timer at 100Hz");
|
|
timer_init(100);
|
|
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);
|
|
}
|