aboutsummaryrefslogtreecommitdiff
path: root/source/arch/x86_64/include
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2023-10-11 20:16:55 +0200
committerFelix Morgner <felix.morgner@ost.ch>2023-10-11 20:16:55 +0200
commit9e7fba5959bc91ad549809551c99756e34f245db (patch)
tree5a2975362c719221c849f6fdf4b1ffa45af46c7e /source/arch/x86_64/include
parent18863e0f3db23441c0213745ad6de3722fd4c845 (diff)
downloadteachos-9e7fba5959bc91ad549809551c99756e34f245db.tar.xz
teachos-9e7fba5959bc91ad549809551c99756e34f245db.zip
x86_64: vga: implement basic cursor configuration
Diffstat (limited to 'source/arch/x86_64/include')
-rw-r--r--source/arch/x86_64/include/arch/video/vga/io.hpp27
-rw-r--r--source/arch/x86_64/include/arch/video/vga/text.hpp13
2 files changed, 37 insertions, 3 deletions
diff --git a/source/arch/x86_64/include/arch/video/vga/io.hpp b/source/arch/x86_64/include/arch/video/vga/io.hpp
new file mode 100644
index 0000000..af77998
--- /dev/null
+++ b/source/arch/x86_64/include/arch/video/vga/io.hpp
@@ -0,0 +1,27 @@
+#ifndef TEACHOS_ARCH_X86_64_VIDEO_VGA_IO_HPP
+#define TEACHOS_ARCH_X86_64_VIDEO_VGA_IO_HPP
+
+#include "arch/io/port_io.hpp"
+
+#include <cstddef>
+
+namespace teachos::arch::video::vga
+{
+
+ namespace crtc
+ {
+
+ using address_port = arch::io::port<0x3d4, 1>;
+ using data_port = arch::io::port<0x3d5, 1>;
+
+ namespace registers
+ {
+ [[maybe_unused]] auto constexpr cursor_start = std::byte{0x0a};
+ [[maybe_unused]] auto constexpr curser_end = std::byte{0x0b};
+ } // namespace registers
+
+ }; // namespace crtc
+
+} // namespace teachos::arch::video::vga
+
+#endif \ No newline at end of file
diff --git a/source/arch/x86_64/include/arch/video/vga/text.hpp b/source/arch/x86_64/include/arch/video/vga/text.hpp
index c8ff162..e615eba 100644
--- a/source/arch/x86_64/include/arch/video/vga/text.hpp
+++ b/source/arch/x86_64/include/arch/video/vga/text.hpp
@@ -77,16 +77,23 @@ namespace teachos::arch::video::vga::text
* @brief Clear the VGA text mode buffer.
*
* @note This function also resets the text mode buffer pointer.
- *
+ *
* @param attribute The attribute to "clear" the screen with.
*/
auto clear(attribute attribute = common_attributes::gray_on_black) -> void;
/**
+ * @brief Enable or disable the VGA text mode cursor.
+ *
+ * @param enabled Whether or not to enable the cursors.
+ */
+ auto cursor(bool enabled) -> void;
+
+ /**
* @brief Write a string of code points to the VGA text buffer.
- *
+ *
* @note This function also updates the text mode buffer pointer.
- *
+ *
* @param code_points A string of (8-bit) code points to write to the VGA text mode buffer.
* @param attribute The attribute to apply to the written sequence of code points.
* @see vga::text::attribute