aboutsummaryrefslogtreecommitdiff
path: root/kernel/gpu/text_mode/display.c
diff options
context:
space:
mode:
authorJames Barnett <noreply@jamesbarnett.xyz>2019-05-26 17:32:25 +0100
committerJames Barnett <noreply@jamesbarnett.xyz>2019-05-26 17:32:25 +0100
commiteb4de24523e8f0832daae89a083844c8e9a261e9 (patch)
tree15e5295c8bc8feecb069db0339cd7a1b6c1a7c3c /kernel/gpu/text_mode/display.c
parent820fa143edde3bf1ca103869dfaff8ba35e8702b (diff)
downloadtinyOS-eb4de24523e8f0832daae89a083844c8e9a261e9.tar.xz
tinyOS-eb4de24523e8f0832daae89a083844c8e9a261e9.zip
Explicitly enable hardware cursorkeyboard-support
Required for virtualbox
Diffstat (limited to 'kernel/gpu/text_mode/display.c')
-rw-r--r--kernel/gpu/text_mode/display.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/kernel/gpu/text_mode/display.c b/kernel/gpu/text_mode/display.c
index 19074f7..bacd9df 100644
--- a/kernel/gpu/text_mode/display.c
+++ b/kernel/gpu/text_mode/display.c
@@ -9,15 +9,15 @@ int cursor_pos = 0;
int char_attribute_byte = 0x0F;
extern void write_port(unsigned short port, unsigned char data);
+extern char read_port(unsigned short port);
-void scrn_clear()
+void scrn_enable_cursor(unsigned char start_line, unsigned char end_line)
{
- for (int i = 0; i < FRAME_SIZE; i = i + 2)
- {
- video_ram[i] = 0;
- video_ram[i + 1] = char_attribute_byte;
- };
- cursor_pos = 0;
+ write_port(0x3D4, 0x0A);
+ write_port(0x3D5, (read_port(0x3D5) & 0xC0) | start_line);
+
+ write_port(0x3D4, 0x0B);
+ write_port(0x3D5, (read_port(0x3D5) & 0xE0) | end_line);
}
void scrn_update_csr()
@@ -29,6 +29,16 @@ void scrn_update_csr()
write_port(0x3D5, csr);
}
+void scrn_clear()
+{
+ for (int i = 0; i < FRAME_SIZE; i = i + 2)
+ {
+ video_ram[i] = 0;
+ video_ram[i + 1] = char_attribute_byte;
+ };
+ cursor_pos = 0;
+}
+
void scrn_print(char *msg)
{
int j = 0;