forked from Bananymous/banan-os
Kernel: zero initialize VGA_MEMORY and fix colors
This commit is contained in:
parent
79a2bccd21
commit
5f75479861
|
@ -24,12 +24,12 @@ namespace TTY
|
||||||
|
|
||||||
static size_t VGA_WIDTH;
|
static size_t VGA_WIDTH;
|
||||||
static size_t VGA_HEIGHT;
|
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_row;
|
||||||
static size_t terminal_col;
|
static size_t terminal_col;
|
||||||
static uint8_t terminal_color;
|
static uint8_t terminal_color;
|
||||||
static uint16_t* terminal_buffer;
|
static uint16_t* terminal_buffer = nullptr;
|
||||||
|
|
||||||
static char s_ansi_escape_mode = '\0';
|
static char s_ansi_escape_mode = '\0';
|
||||||
static int s_ansi_escape_index = 0;
|
static int s_ansi_escape_index = 0;
|
||||||
|
@ -61,6 +61,8 @@ namespace TTY
|
||||||
VGA_WIDTH = fb.width;
|
VGA_WIDTH = fb.width;
|
||||||
VGA_HEIGHT = fb.height;
|
VGA_HEIGHT = fb.height;
|
||||||
VGA_MEMORY = (uint16_t*)fb.addr;
|
VGA_MEMORY = (uint16_t*)fb.addr;
|
||||||
|
|
||||||
|
dprintln("width: {}, height: {}, bpp: {}, pitch: {}", fb.width, fb.height, fb.bpp, fb.pitch);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -77,14 +79,7 @@ namespace TTY
|
||||||
|
|
||||||
if (s_multiboot_info->flags & (1 << 12))
|
if (s_multiboot_info->flags & (1 << 12))
|
||||||
if (s_multiboot_info->framebuffer.type != 2)
|
if (s_multiboot_info->framebuffer.type != 2)
|
||||||
Kernel::panic("Invalid framebuffer_type in multiboot info");
|
dprintln("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');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void setcolor(uint8_t color)
|
void setcolor(uint8_t color)
|
||||||
|
@ -143,50 +138,50 @@ namespace TTY
|
||||||
terminal_color = vga_set_foreground(VGA_COLOR_BLACK, terminal_color);
|
terminal_color = vga_set_foreground(VGA_COLOR_BLACK, terminal_color);
|
||||||
break;
|
break;
|
||||||
case 31:
|
case 31:
|
||||||
terminal_color = vga_set_foreground(VGA_COLOR_RED, terminal_color);
|
terminal_color = vga_set_foreground(VGA_COLOR_LIGHT_RED, terminal_color);
|
||||||
break;
|
break;
|
||||||
case 32:
|
case 32:
|
||||||
terminal_color = vga_set_foreground(VGA_COLOR_GREEN, terminal_color);
|
terminal_color = vga_set_foreground(VGA_COLOR_LIGHT_GREEN, terminal_color);
|
||||||
break;
|
break;
|
||||||
case 33:
|
case 33:
|
||||||
terminal_color = vga_set_foreground(VGA_COLOR_LIGHT_BROWN, terminal_color);
|
terminal_color = vga_set_foreground(VGA_COLOR_LIGHT_BROWN, terminal_color);
|
||||||
break;
|
break;
|
||||||
case 34:
|
case 34:
|
||||||
terminal_color = vga_set_foreground(VGA_COLOR_BLUE, terminal_color);
|
terminal_color = vga_set_foreground(VGA_COLOR_LIGHT_BLUE, terminal_color);
|
||||||
break;
|
break;
|
||||||
case 35:
|
case 35:
|
||||||
terminal_color = vga_set_foreground(VGA_COLOR_MAGENTA, terminal_color);
|
terminal_color = vga_set_foreground(VGA_COLOR_LIGHT_MAGENTA, terminal_color);
|
||||||
break;
|
break;
|
||||||
case 36:
|
case 36:
|
||||||
terminal_color = vga_set_foreground(VGA_COLOR_CYAN, terminal_color);
|
terminal_color = vga_set_foreground(VGA_COLOR_LIGHT_CYAN, terminal_color);
|
||||||
break;
|
break;
|
||||||
case 37:
|
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;
|
break;
|
||||||
|
|
||||||
case 40:
|
case 40:
|
||||||
terminal_color = vga_set_background(VGA_COLOR_BLACK, terminal_color);
|
terminal_color = vga_set_background(VGA_COLOR_BLACK, terminal_color);
|
||||||
break;
|
break;
|
||||||
case 41:
|
case 41:
|
||||||
terminal_color = vga_set_background(VGA_COLOR_RED, terminal_color);
|
terminal_color = vga_set_background(VGA_COLOR_LIGHT_RED, terminal_color);
|
||||||
break;
|
break;
|
||||||
case 42:
|
case 42:
|
||||||
terminal_color = vga_set_background(VGA_COLOR_GREEN, terminal_color);
|
terminal_color = vga_set_background(VGA_COLOR_LIGHT_GREEN, terminal_color);
|
||||||
break;
|
break;
|
||||||
case 43:
|
case 43:
|
||||||
terminal_color = vga_set_background(VGA_COLOR_LIGHT_BROWN, terminal_color);
|
terminal_color = vga_set_background(VGA_COLOR_LIGHT_BROWN, terminal_color);
|
||||||
break;
|
break;
|
||||||
case 44:
|
case 44:
|
||||||
terminal_color = vga_set_background(VGA_COLOR_BLUE, terminal_color);
|
terminal_color = vga_set_background(VGA_COLOR_LIGHT_BLUE, terminal_color);
|
||||||
break;
|
break;
|
||||||
case 45:
|
case 45:
|
||||||
terminal_color = vga_set_background(VGA_COLOR_MAGENTA, terminal_color);
|
terminal_color = vga_set_background(VGA_COLOR_LIGHT_MAGENTA, terminal_color);
|
||||||
break;
|
break;
|
||||||
case 46:
|
case 46:
|
||||||
terminal_color = vga_set_background(VGA_COLOR_CYAN, terminal_color);
|
terminal_color = vga_set_background(VGA_COLOR_LIGHT_CYAN, terminal_color);
|
||||||
break;
|
break;
|
||||||
case 47:
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -310,6 +305,9 @@ namespace TTY
|
||||||
|
|
||||||
void putchar(char c)
|
void putchar(char c)
|
||||||
{
|
{
|
||||||
|
if (VGA_MEMORY == nullptr)
|
||||||
|
return;
|
||||||
|
|
||||||
if (s_ansi_escape_mode)
|
if (s_ansi_escape_mode)
|
||||||
return handle_ansi_escape(c);
|
return handle_ansi_escape(c);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue