diff options
| author | Matteo Gmür <matteo.gmuer1@ost.ch> | 2024-11-10 09:34:21 +0000 |
|---|---|---|
| committer | Matteo Gmür <matteo.gmuer1@ost.ch> | 2024-11-10 09:34:21 +0000 |
| commit | edc11135d83ef1f8fcbc1575a290b31ccbdb7e07 (patch) | |
| tree | b4d151d94316a467a21a5aa0f344a59cbd2f59cb /arch/x86_64/src/video/vga/text.cpp | |
| parent | 4c030cbaee174a9f7f42d4f5ca7ddf6debbbe048 (diff) | |
| download | teachos-edc11135d83ef1f8fcbc1575a290b31ccbdb7e07.tar.xz teachos-edc11135d83ef1f8fcbc1575a290b31ccbdb7e07.zip | |
Identity map memory map and vga text buffer,w hen setting up kernel
Diffstat (limited to 'arch/x86_64/src/video/vga/text.cpp')
| -rw-r--r-- | arch/x86_64/src/video/vga/text.cpp | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/arch/x86_64/src/video/vga/text.cpp b/arch/x86_64/src/video/vga/text.cpp index 9eef288..0137ddb 100644 --- a/arch/x86_64/src/video/vga/text.cpp +++ b/arch/x86_64/src/video/vga/text.cpp @@ -11,9 +11,8 @@ namespace teachos::arch::video::vga::text { namespace { - auto constexpr default_text_buffer_address = 0xb8000; - auto constexpr default_text_buffer_width = 80; - auto constexpr default_text_buffer_height = 25; + auto constexpr DEFAULT_TEXT_BUFFER_WIDTH = 80U; + auto constexpr DEFAULT_TEXT_BUFFER_HEIGHT = 25U; extern "C" std::pair<char, attribute> * vga_buffer_pointer; auto constinit text_buffer = teachos::memory::asm_pointer{vga_buffer_pointer}; @@ -21,7 +20,7 @@ namespace teachos::arch::video::vga::text auto clear(attribute attribute) -> void { - *text_buffer = reinterpret_cast<decltype(text_buffer)::pointer>(default_text_buffer_address); + *text_buffer = reinterpret_cast<decltype(text_buffer)::pointer>(DEFAULT_VGA_TEXT_BUFFER_ADDRESS); std::ranges::fill_n(*text_buffer, 2000, std::pair{' ', attribute}); } @@ -35,21 +34,21 @@ namespace teachos::arch::video::vga::text auto newline() -> void { - auto base = reinterpret_cast<decltype(text_buffer)::pointer>(default_text_buffer_address); + auto base = reinterpret_cast<decltype(text_buffer)::pointer>(DEFAULT_VGA_TEXT_BUFFER_ADDRESS); auto & raw_buffer = *text_buffer; - auto current_line = (raw_buffer - base) / default_text_buffer_width; + auto current_line = (raw_buffer - base) / DEFAULT_TEXT_BUFFER_WIDTH; auto next_line = current_line + 1; - if (next_line >= default_text_buffer_height) + if (next_line >= DEFAULT_TEXT_BUFFER_HEIGHT) { - auto begin = base + default_text_buffer_width; - auto end = base + default_text_buffer_width * default_text_buffer_height; + auto begin = base + DEFAULT_TEXT_BUFFER_WIDTH; + auto end = base + DEFAULT_TEXT_BUFFER_WIDTH * DEFAULT_TEXT_BUFFER_HEIGHT; std::ranges::move(begin, end, base); - raw_buffer = base + current_line * default_text_buffer_width; + raw_buffer = base + current_line * DEFAULT_TEXT_BUFFER_WIDTH; } else { - raw_buffer = base + next_line * default_text_buffer_width; + raw_buffer = base + next_line * DEFAULT_TEXT_BUFFER_WIDTH; } } |
