From 9e67c78271d79be8719837fd2fc53ff297dcd148 Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Sun, 28 Dec 2014 20:18:25 +0100 Subject: [PATCH] Add unicode replacement character onto VGA font. --- kernel/vga.cpp | 2 ++ kernel/vgatextbuffer.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/vga.cpp b/kernel/vga.cpp index 3879a4ff..a18d1c49 100644 --- a/kernel/vga.cpp +++ b/kernel/vga.cpp @@ -87,6 +87,8 @@ static void FetchVGAFont(uint8_t* font) // The font data is now at 0xA0000, so fetch it. Note that there is // reserved room for a 8x32 resolution but we are using 8x16. const uint8_t* data = (const uint8_t*) 0xA0000UL; + // Patch the replacement chararacter onto character 0. + memcpy((uint8_t*) data + ((32*8)/8 * 0), font_replacement_character, VGA_FONT_CHARSIZE); for ( size_t i = 0; i < VGA_FONT_NUMCHARS; i++ ) { const uint8_t* src = data + (32*8)/8 * i; diff --git a/kernel/vgatextbuffer.cpp b/kernel/vgatextbuffer.cpp index 6515fe27..cfb02e7c 100644 --- a/kernel/vgatextbuffer.cpp +++ b/kernel/vgatextbuffer.cpp @@ -55,7 +55,7 @@ static uint16_t CharToTextEntry(TextChar c) { int remap = VGA::MapWideToVGAFont(c.c); if ( remap < 0 ) - return (uint16_t) '?' | (uint16_t) COLOR8_RED << 8U; + remap = 0 /* replacement character */; return (uint16_t) remap | (uint16_t) c.vgacolor << 8U; }