forked from Bananymous/banan-os
Kernel: Add prefs font for terminal output before file system
This commit is contained in:
@@ -8,9 +8,21 @@
|
||||
|
||||
#define PSF2_HAS_UNICODE_TABLE 0x00000001
|
||||
|
||||
extern char _binary_font_prefs_psf_start;
|
||||
extern char _binary_font_prefs_psf_end;
|
||||
|
||||
namespace Kernel
|
||||
{
|
||||
|
||||
BAN::ErrorOr<Font> Font::prefs()
|
||||
{
|
||||
size_t font_data_size = &_binary_font_prefs_psf_end - &_binary_font_prefs_psf_start;
|
||||
BAN::Vector<uint8_t> font_data;
|
||||
TRY(font_data.resize(font_data_size));
|
||||
memcpy(font_data.data(), &_binary_font_prefs_psf_start, font_data_size);
|
||||
return parse_psf1(font_data);
|
||||
}
|
||||
|
||||
BAN::ErrorOr<Font> Font::load(BAN::StringView path)
|
||||
{
|
||||
if (!VirtualFileSystem::is_initialized())
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include <kernel/multiboot.h>
|
||||
#include <kernel/VesaTerminalDriver.h>
|
||||
|
||||
VesaTerminalDriver* VesaTerminalDriver::create(const Kernel::Font& font)
|
||||
VesaTerminalDriver* VesaTerminalDriver::create()
|
||||
{
|
||||
if (!(g_multiboot_info->flags & MULTIBOOT_FLAGS_FRAMEBUFFER))
|
||||
{
|
||||
@@ -41,8 +41,7 @@ VesaTerminalDriver* VesaTerminalDriver::create(const Kernel::Font& font)
|
||||
framebuffer.height,
|
||||
framebuffer.pitch,
|
||||
framebuffer.bpp,
|
||||
framebuffer.addr,
|
||||
font
|
||||
framebuffer.addr
|
||||
);
|
||||
driver->set_cursor_position(0, 0);
|
||||
driver->clear(TerminalColor::BLACK);
|
||||
|
||||
@@ -81,10 +81,10 @@ extern "C" void kernel_main()
|
||||
MMU::intialize();
|
||||
dprintln("MMU initialized");
|
||||
|
||||
//TerminalDriver* terminal_driver = VesaTerminalDriver::create();
|
||||
//ASSERT(terminal_driver);
|
||||
//dprintln("VESA initialized");
|
||||
//TTY* tty1 = new TTY(terminal_driver);
|
||||
TerminalDriver* terminal_driver = VesaTerminalDriver::create();
|
||||
ASSERT(terminal_driver);
|
||||
dprintln("VESA initialized");
|
||||
TTY* tty1 = new TTY(terminal_driver);
|
||||
|
||||
InterruptController::initialize(cmdline.force_pic);
|
||||
dprintln("Interrupt controller initialized");
|
||||
@@ -99,15 +99,24 @@ extern "C" void kernel_main()
|
||||
Scheduler::initialize();
|
||||
Scheduler& scheduler = Scheduler::get();
|
||||
MUST(scheduler.add_thread(BAN::Function<void()>(
|
||||
[]
|
||||
[terminal_driver]
|
||||
{
|
||||
DiskIO::initialize();
|
||||
dprintln("Disk IO initialized");
|
||||
|
||||
auto font = MUST(Font::load("/usr/share/fonts/zap-ext-vga16.psf"));
|
||||
dprintln("Font loaded");
|
||||
|
||||
Shell(new TTY(VesaTerminalDriver::create(font))).run();
|
||||
auto font_or_error = Font::load("/usr/share/fonts/zap-ext-vga16.psf");
|
||||
if (font_or_error.is_error())
|
||||
dprintln("{}", font_or_error.error());
|
||||
else
|
||||
terminal_driver->set_font(font_or_error.release_value());
|
||||
}
|
||||
)));
|
||||
MUST(scheduler.add_thread(BAN::Function<void()>(
|
||||
[tty1]
|
||||
{
|
||||
Shell* shell = new Shell(tty1);
|
||||
ASSERT(shell);
|
||||
shell->run();
|
||||
}
|
||||
)));
|
||||
scheduler.start();
|
||||
|
||||
Reference in New Issue
Block a user