Get console building

This commit is contained in:
Eryn Wells 2016-02-27 13:02:49 -05:00
parent 5f0c65bf81
commit c6eaba487c
3 changed files with 16 additions and 9 deletions

View file

@ -8,14 +8,17 @@
#include "Console.hh" #include "Console.hh"
namespace kernel {
/** Create a VGA color pair. */ /** Create a VGA color pair. */
static inline uint8_t static inline uint8_t
makeVGAColor(Console::Color fg, makeVGAColor(Console::Color fg,
Console::Color bg) Console::Color bg)
{ {
return fg | bg << 4; return uint8_t(fg) | uint8_t(bg) << 4;
} }
/** Create a VGA character entry. */ /** Create a VGA character entry. */
static inline uint16_t static inline uint16_t
makeVGAEntry(char c, makeVGAEntry(char c,
@ -27,21 +30,20 @@ makeVGAEntry(char c,
} }
namespace kernel {
Console::Console() Console::Console()
: mBase(0xB8000), : mBase(reinterpret_cast<uint16_t *>(0xB8000)),
mCursor({0, 0}) mCursor{0, 0}
{ } { }
void
Console::clear(Console::Color color) 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 y = 0; y < Console::Height; y++) {
for (size_t x = 0; x < Console::Width; x++) { for (size_t x = 0; x < Console::Width; x++) {
const size_t index = y * Console::Width + x; const size_t index = y * Console::Width + x;
mBase[index] = makeVGAEntry(' ', color); mBase[index] = makeVGAEntry(' ', vgaColor);
} }
} }
} }

View file

@ -6,6 +6,10 @@
* Declaration of the Console class. Presents an API for a VGA console. * Declaration of the Console class. Presents an API for a VGA console.
*/ */
//#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
namespace kernel { namespace kernel {
struct Console struct Console
@ -40,11 +44,11 @@ struct Console
Console(); Console();
/** Clear the console to the provided color. */ /** Clear the console to the provided color. */
clear(Color color = Color::Black); void clear(Color color = Color::Black);
private: private:
uint16_t *const mBase; uint16_t *const mBase;
Cursor mCursor; Cursor mCursor;
}; };
} /* namespace kernel */ } /* namespace kernel */

View file

@ -10,6 +10,7 @@ files = [
'crti.s', 'crti.s',
'crtn.s', 'crtn.s',
'main.cc', 'main.cc',
'Console.cc'
] ]
toolchain_bin = Dir(os.environ['POLKA_TOOLCHAIN']).Dir('bin') toolchain_bin = Dir(os.environ['POLKA_TOOLCHAIN']).Dir('bin')