From 64aa82592c6c2b043d8c62100d4ce110bf616c1e Mon Sep 17 00:00:00 2001 From: James Barnett Date: Sun, 6 Oct 2019 12:56:26 +0100 Subject: Add os statusbar. Start stdlib --- kernel/gpu/text_mode/display.c | 60 +++++++++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 18 deletions(-) (limited to 'kernel/gpu/text_mode/display.c') 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 -- cgit v1.2.3