forked from Bananymous/banan-os
Kernel: Add temporary terminal output before controlling terminal
Starting work on getting this boot on real hardware.
This commit is contained in:
parent
773dcdd3a2
commit
39be6ab099
|
@ -6,6 +6,10 @@
|
||||||
#include <kernel/Terminal/TTY.h>
|
#include <kernel/Terminal/TTY.h>
|
||||||
#include <kernel/Timer/Timer.h>
|
#include <kernel/Timer/Timer.h>
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
|
extern TerminalDriver* g_terminal_driver;
|
||||||
|
|
||||||
namespace Debug
|
namespace Debug
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -64,6 +68,35 @@ namespace Debug
|
||||||
return Kernel::Serial::putchar_any(ch);
|
return Kernel::Serial::putchar_any(ch);
|
||||||
if (Kernel::TTY::is_initialized())
|
if (Kernel::TTY::is_initialized())
|
||||||
return Kernel::TTY::putchar_current(ch);
|
return Kernel::TTY::putchar_current(ch);
|
||||||
|
|
||||||
|
if (g_terminal_driver)
|
||||||
|
{
|
||||||
|
static uint32_t col = 0;
|
||||||
|
static uint32_t row = 0;
|
||||||
|
|
||||||
|
if (ch == '\n')
|
||||||
|
{
|
||||||
|
row++;
|
||||||
|
col = 0;
|
||||||
|
}
|
||||||
|
else if (ch == '\r')
|
||||||
|
{
|
||||||
|
col = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!isprint(ch))
|
||||||
|
ch = '?';
|
||||||
|
g_terminal_driver->putchar_at(ch, col, row, TerminalColor::BRIGHT_WHITE, TerminalColor::BLACK);
|
||||||
|
|
||||||
|
col++;
|
||||||
|
if (col >= g_terminal_driver->width())
|
||||||
|
{
|
||||||
|
row++;
|
||||||
|
col = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_prefix(const char* file, int line)
|
void print_prefix(const char* file, int line)
|
||||||
|
|
|
@ -82,6 +82,8 @@ static void parse_command_line()
|
||||||
extern "C" uint8_t g_userspace_start[];
|
extern "C" uint8_t g_userspace_start[];
|
||||||
extern "C" uint8_t g_userspace_end[];
|
extern "C" uint8_t g_userspace_end[];
|
||||||
|
|
||||||
|
TerminalDriver* g_terminal_driver = nullptr;
|
||||||
|
|
||||||
static void init2(void*);
|
static void init2(void*);
|
||||||
|
|
||||||
extern "C" void kernel_main()
|
extern "C" void kernel_main()
|
||||||
|
@ -114,6 +116,10 @@ extern "C" void kernel_main()
|
||||||
PageTable::initialize();
|
PageTable::initialize();
|
||||||
dprintln("PageTable initialized");
|
dprintln("PageTable initialized");
|
||||||
|
|
||||||
|
g_terminal_driver = VesaTerminalDriver::create();
|
||||||
|
ASSERT(g_terminal_driver);
|
||||||
|
dprintln("VESA initialized");
|
||||||
|
|
||||||
Heap::initialize();
|
Heap::initialize();
|
||||||
dprintln("Heap initialzed");
|
dprintln("Heap initialzed");
|
||||||
|
|
||||||
|
@ -141,11 +147,7 @@ extern "C" void kernel_main()
|
||||||
dprintln("Serial devices initialized");
|
dprintln("Serial devices initialized");
|
||||||
}
|
}
|
||||||
|
|
||||||
TerminalDriver* terminal_driver = VesaTerminalDriver::create();
|
auto vtty = MUST(VirtualTTY::create(g_terminal_driver));
|
||||||
ASSERT(terminal_driver);
|
|
||||||
dprintln("VESA initialized");
|
|
||||||
|
|
||||||
auto vtty = MUST(VirtualTTY::create(terminal_driver));
|
|
||||||
dprintln("Virtual TTY initialized");
|
dprintln("Virtual TTY initialized");
|
||||||
|
|
||||||
MUST(Scheduler::initialize());
|
MUST(Scheduler::initialize());
|
||||||
|
|
Loading…
Reference in New Issue