diff options
Diffstat (limited to 'source/arch/x86_64/src')
| -rw-r--r-- | source/arch/x86_64/src/kernel/main.cpp | 1 | ||||
| -rw-r--r-- | source/arch/x86_64/src/video/vga/text.cpp | 11 |
2 files changed, 11 insertions, 1 deletions
diff --git a/source/arch/x86_64/src/kernel/main.cpp b/source/arch/x86_64/src/kernel/main.cpp index 26ae730..0e90264 100644 --- a/source/arch/x86_64/src/kernel/main.cpp +++ b/source/arch/x86_64/src/kernel/main.cpp @@ -9,6 +9,7 @@ namespace teachos::arch::kernel using namespace video::vga; text::clear(); + text::cursor(false); text::write("TeachOS is starting up...", text::common_attributes::green_on_black); } } // namespace teachos::arch::kernel diff --git a/source/arch/x86_64/src/video/vga/text.cpp b/source/arch/x86_64/src/video/vga/text.cpp index ad9e46c..8259c5a 100644 --- a/source/arch/x86_64/src/video/vga/text.cpp +++ b/source/arch/x86_64/src/video/vga/text.cpp @@ -1,6 +1,7 @@ #include "arch/video/vga/text.hpp" #include "arch/boot/pointers.hpp" +#include "arch/video/vga/io.hpp" #include "memory/asm_pointer.hpp" #include <algorithm> @@ -30,9 +31,17 @@ namespace teachos::arch::video::vga::text std::ranges::fill_n(*text_buffer, 2000, std::pair{' ', attribute}); } + auto cursor(bool enabled) -> void + { + auto cursor_disable_byte = std::byte{!enabled} << 5; + + crtc::address_port::write(crtc::registers::cursor_start); + crtc::data_port::write(vga::crtc::data_port::read() | cursor_disable_byte); + } + auto write(std::string_view code_points, attribute attribute) -> void { std::ranges::for_each(code_points, [&](auto code_point) { write(code_point, attribute); }); } -} // namespace teachos::arch::video::vga::text
\ No newline at end of file +} // namespace teachos::arch::video::vga::text |
