From c6eaba487cd624add12d195698e09aae3310bf64 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sat, 27 Feb 2016 13:02:49 -0500 Subject: [PATCH] Get console building --- src/Console.cc | 16 +++++++++------- src/Console.hh | 8 ++++++-- src/SConscript | 1 + 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/Console.cc b/src/Console.cc index ee0c197..56ef18f 100644 --- a/src/Console.cc +++ b/src/Console.cc @@ -8,14 +8,17 @@ #include "Console.hh" +namespace kernel { + /** Create a VGA color pair. */ static inline uint8_t makeVGAColor(Console::Color fg, Console::Color bg) { - return fg | bg << 4; + return uint8_t(fg) | uint8_t(bg) << 4; } + /** Create a VGA character entry. */ static inline uint16_t makeVGAEntry(char c, @@ -27,21 +30,20 @@ makeVGAEntry(char c, } -namespace kernel { - Console::Console() - : mBase(0xB8000), - mCursor({0, 0}) + : mBase(reinterpret_cast(0xB8000)), + mCursor{0, 0} { } +void Console::clear(Console::Color color) { - const uint16_t color = makeVGAColor(Color::LightGray, Color::Blue); + const uint16_t vgaColor = makeVGAColor(Color::LightGray, color); for (size_t y = 0; y < Console::Height; y++) { for (size_t x = 0; x < Console::Width; x++) { const size_t index = y * Console::Width + x; - mBase[index] = makeVGAEntry(' ', color); + mBase[index] = makeVGAEntry(' ', vgaColor); } } } diff --git a/src/Console.hh b/src/Console.hh index 7579cc0..531e9ab 100644 --- a/src/Console.hh +++ b/src/Console.hh @@ -6,6 +6,10 @@ * Declaration of the Console class. Presents an API for a VGA console. */ +//#include +#include +#include + namespace kernel { struct Console @@ -40,11 +44,11 @@ struct Console Console(); /** Clear the console to the provided color. */ - clear(Color color = Color::Black); + void clear(Color color = Color::Black); private: uint16_t *const mBase; Cursor mCursor; }; - + } /* namespace kernel */ diff --git a/src/SConscript b/src/SConscript index 62ea704..b0243ff 100644 --- a/src/SConscript +++ b/src/SConscript @@ -10,6 +10,7 @@ files = [ 'crti.s', 'crtn.s', 'main.cc', + 'Console.cc' ] toolchain_bin = Dir(os.environ['POLKA_TOOLCHAIN']).Dir('bin')