From 2c8cfb327ab8aff0deb44c826fe659bf0062fe59 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sun, 7 Feb 2021 18:06:51 +0200 Subject: Rename kernel/ to src/ --- src/vga.h | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/vga.h (limited to 'src/vga.h') diff --git a/src/vga.h b/src/vga.h new file mode 100644 index 0000000..3052dbc --- /dev/null +++ b/src/vga.h @@ -0,0 +1,39 @@ +#pragma once +#include + +class VGA : public Console { +public: + /* Hardware text mode color constants. */ + enum vga_color { + VGA_COLOR_BLACK = 0, + VGA_COLOR_BLUE = 1, + VGA_COLOR_GREEN = 2, + VGA_COLOR_CYAN = 3, + VGA_COLOR_RED = 4, + VGA_COLOR_MAGENTA = 5, + VGA_COLOR_BROWN = 6, + VGA_COLOR_LIGHT_GREY = 7, + VGA_COLOR_DARK_GREY = 8, + VGA_COLOR_LIGHT_BLUE = 9, + VGA_COLOR_LIGHT_GREEN = 10, + VGA_COLOR_LIGHT_CYAN = 11, + VGA_COLOR_LIGHT_RED = 12, + VGA_COLOR_LIGHT_MAGENTA = 13, + VGA_COLOR_LIGHT_BROWN = 14, + VGA_COLOR_WHITE = 15, + }; + + VGA(vga_color fg = VGA_COLOR_BLACK, vga_color bg = VGA_COLOR_LIGHT_GREY, uint32_t address = 0xB8000); + ~VGA() = default; + + void write(char c) override; + void write(ViewIterator& iter) override; + + void set_color(vga_color fg, vga_color bg) { color = (fg | bg << 4); } + +private: + const size_t max_columns = 80, max_rows = 25; + size_t column = 0, row = 0; + uint8_t color; + uint16_t* buffer; +}; -- cgit v1.2.1