diff options
Diffstat (limited to 'kernel/gpu/text_mode')
| -rw-r--r-- | kernel/gpu/text_mode/display.c | 60 | ||||
| -rw-r--r-- | kernel/gpu/text_mode/display.h | 9 |
2 files changed, 49 insertions, 20 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 diff --git a/kernel/gpu/text_mode/display.h b/kernel/gpu/text_mode/display.h index fec3314..9c76499 100644 --- a/kernel/gpu/text_mode/display.h +++ b/kernel/gpu/text_mode/display.h @@ -3,6 +3,11 @@ void scrn_clear(); void scrn_print(char *msg); void scrn_println(char *msg); void scrn_set_text_colour(int foreground, int background); -void scrn_putchar(unsigned char byte); +int scrn_get_char_attr_byte(); +void scrn_set_char_attr_byte(int byte); +void scrn_putchar(unsigned char c); void scrn_backspace(); -void scrn_newline();
\ No newline at end of file +void scrn_newline(); +void scrn_set_cursor_pos(unsigned int row, unsigned int col); +int scrn_get_cursor_row(); +int scrn_get_cursor_col();
\ No newline at end of file |