aboutsummaryrefslogtreecommitdiff
path: root/kernel/gpu/text_mode/display.c
diff options
context:
space:
mode:
authorJames Barnett <noreply@jamesbarnett.xyz>2019-10-06 12:56:26 +0100
committerJames Barnett <noreply@jamesbarnett.xyz>2019-10-06 12:56:26 +0100
commit64aa82592c6c2b043d8c62100d4ce110bf616c1e (patch)
tree73387e2516ac2b7066c43ebf2dbe76e313edbcfc /kernel/gpu/text_mode/display.c
parentbd77381c27ef5b61bf1c123efef3895b98a7a615 (diff)
downloadtinyOS-64aa82592c6c2b043d8c62100d4ce110bf616c1e.tar.xz
tinyOS-64aa82592c6c2b043d8c62100d4ce110bf616c1e.zip
Add os statusbar. Start stdlib
Diffstat (limited to 'kernel/gpu/text_mode/display.c')
-rw-r--r--kernel/gpu/text_mode/display.c60
1 files changed, 42 insertions, 18 deletions
diff --git a/kernel/gpu/text_mode/display.c b/kernel/gpu/text_mode/display.c
index bacd9df..3758c71 100644
--- a/kernel/gpu/text_mode/display.c
+++ b/kernel/gpu/text_mode/display.c
@@ -39,32 +39,22 @@ void scrn_clear()
cursor_pos = 0;
}
-void scrn_print(char *msg)
+void scrn_set_text_colour(int foreground, int background)
{
- int j = 0;
- while (msg[j] != '\0')
- {
- video_ram[cursor_pos++] = msg[j];
- video_ram[cursor_pos++] = char_attribute_byte;
- ++j;
- }
+ char_attribute_byte = (background << 4) | foreground;
}
-void scrn_println(char *msg)
-{
- scrn_print(msg);
- int current_line = cursor_pos / COLS;
- cursor_pos = (current_line + 1) * COLS;
+int scrn_get_char_attr_byte() {
+ return char_attribute_byte;
}
-void scrn_set_text_colour(int foreground, int background)
-{
- char_attribute_byte = (background << 4) | foreground;
+void scrn_set_char_attr_byte(int byte) {
+ char_attribute_byte = byte;
}
-void scrn_putchar(unsigned char byte)
+void scrn_putchar(unsigned char c)
{
- video_ram[cursor_pos++] = byte;
+ video_ram[cursor_pos++] = c;
video_ram[cursor_pos++] = char_attribute_byte;
scrn_update_csr();
}
@@ -87,3 +77,37 @@ void scrn_newline()
scrn_update_csr();
}
+void scrn_print(char *msg)
+{
+ int j = 0;
+ while (msg[j] != '\0')
+ {
+ video_ram[cursor_pos++] = msg[j];
+ video_ram[cursor_pos++] = char_attribute_byte;
+ ++j;
+ }
+ scrn_update_csr();
+}
+
+void scrn_println(char *msg)
+{
+ scrn_print(msg);
+ scrn_newline();
+}
+
+void scrn_set_cursor_pos(unsigned int row, unsigned int col)
+{
+ cursor_pos = (row * COLS) + (col * 2);
+ scrn_update_csr();
+}
+
+int scrn_get_cursor_row()
+{
+ // 0 index
+ return cursor_pos / COLS;
+}
+
+int scrn_get_cursor_col()
+{
+ return (cursor_pos % COLS)/2;
+} \ No newline at end of file