#ifndef VGATERMINAL_HPP #define VGATERMINAL_HPP #include "textoutput.hpp" #include #include class VGATerminal : public TextOutput { public: enum class Color : std::uint8_t { Black = 0, Blue, Green, Cyan, Red, Magenta, Brown, LightGray, DarkGray, LightBlue, LightGreen, LightCyan, LightRed, LightMagenta, LightBrown, White }; using enum Color; virtual void write(char c) noexcept final; private: static constexpr std::uintptr_t Videoram = 0xB8000; static constexpr unsigned Width = 80; static constexpr unsigned Height = 25; unsigned offset = 0; Color foreground = LightGray; Color background = Black; void put(char c) noexcept; void checkpos() noexcept; void updatecursor() const noexcept; }; #endif // VGATERMINAL_HPP