diff --git a/kernel/arch/i386/tty.cpp b/kernel/arch/i386/tty.cpp index fe445b8f..522fab2d 100644 --- a/kernel/arch/i386/tty.cpp +++ b/kernel/arch/i386/tty.cpp @@ -24,12 +24,12 @@ namespace TTY static size_t VGA_WIDTH; static size_t VGA_HEIGHT; - static uint16_t* VGA_MEMORY; + static uint16_t* VGA_MEMORY = nullptr; static size_t terminal_row; static size_t terminal_col; static uint8_t terminal_color; - static uint16_t* terminal_buffer; + static uint16_t* terminal_buffer = nullptr; static char s_ansi_escape_mode = '\0'; static int s_ansi_escape_index = 0; @@ -61,6 +61,8 @@ namespace TTY VGA_WIDTH = fb.width; VGA_HEIGHT = fb.height; VGA_MEMORY = (uint16_t*)fb.addr; + + dprintln("width: {}, height: {}, bpp: {}, pitch: {}", fb.width, fb.height, fb.bpp, fb.pitch); } else { @@ -77,14 +79,7 @@ namespace TTY if (s_multiboot_info->flags & (1 << 12)) if (s_multiboot_info->framebuffer.type != 2) - Kernel::panic("Invalid framebuffer_type in multiboot info"); - - for (int i = 0; i < 16; i++) - { - terminal_color = vga_entry_color((vga_color)i, VGA_COLOR_BLACK); - putchar('#'); - } - putchar('\n'); + dprintln("Invalid framebuffer_type in multiboot info"); } void setcolor(uint8_t color) @@ -143,50 +138,50 @@ namespace TTY terminal_color = vga_set_foreground(VGA_COLOR_BLACK, terminal_color); break; case 31: - terminal_color = vga_set_foreground(VGA_COLOR_RED, terminal_color); + terminal_color = vga_set_foreground(VGA_COLOR_LIGHT_RED, terminal_color); break; case 32: - terminal_color = vga_set_foreground(VGA_COLOR_GREEN, terminal_color); + terminal_color = vga_set_foreground(VGA_COLOR_LIGHT_GREEN, terminal_color); break; case 33: terminal_color = vga_set_foreground(VGA_COLOR_LIGHT_BROWN, terminal_color); break; case 34: - terminal_color = vga_set_foreground(VGA_COLOR_BLUE, terminal_color); + terminal_color = vga_set_foreground(VGA_COLOR_LIGHT_BLUE, terminal_color); break; case 35: - terminal_color = vga_set_foreground(VGA_COLOR_MAGENTA, terminal_color); + terminal_color = vga_set_foreground(VGA_COLOR_LIGHT_MAGENTA, terminal_color); break; case 36: - terminal_color = vga_set_foreground(VGA_COLOR_CYAN, terminal_color); + terminal_color = vga_set_foreground(VGA_COLOR_LIGHT_CYAN, terminal_color); break; case 37: - terminal_color = vga_set_foreground(VGA_COLOR_DARK_GREY, terminal_color); + terminal_color = vga_set_foreground(VGA_COLOR_LIGHT_GREY, terminal_color); break; case 40: terminal_color = vga_set_background(VGA_COLOR_BLACK, terminal_color); break; case 41: - terminal_color = vga_set_background(VGA_COLOR_RED, terminal_color); + terminal_color = vga_set_background(VGA_COLOR_LIGHT_RED, terminal_color); break; case 42: - terminal_color = vga_set_background(VGA_COLOR_GREEN, terminal_color); + terminal_color = vga_set_background(VGA_COLOR_LIGHT_GREEN, terminal_color); break; case 43: terminal_color = vga_set_background(VGA_COLOR_LIGHT_BROWN, terminal_color); break; case 44: - terminal_color = vga_set_background(VGA_COLOR_BLUE, terminal_color); + terminal_color = vga_set_background(VGA_COLOR_LIGHT_BLUE, terminal_color); break; case 45: - terminal_color = vga_set_background(VGA_COLOR_MAGENTA, terminal_color); + terminal_color = vga_set_background(VGA_COLOR_LIGHT_MAGENTA, terminal_color); break; case 46: - terminal_color = vga_set_background(VGA_COLOR_CYAN, terminal_color); + terminal_color = vga_set_background(VGA_COLOR_LIGHT_CYAN, terminal_color); break; case 47: - terminal_color = vga_set_background(VGA_COLOR_DARK_GREY, terminal_color); + terminal_color = vga_set_background(VGA_COLOR_LIGHT_GREY, terminal_color); break; } } @@ -310,6 +305,9 @@ namespace TTY void putchar(char c) { + if (VGA_MEMORY == nullptr) + return; + if (s_ansi_escape_mode) return handle_ansi_escape(c);