diff options
Diffstat (limited to 'kernel/io/vga')
| -rw-r--r-- | kernel/io/vga/text_mode_display.c | 18 | ||||
| -rw-r--r-- | kernel/io/vga/text_mode_display.h | 4 |
2 files changed, 20 insertions, 2 deletions
diff --git a/kernel/io/vga/text_mode_display.c b/kernel/io/vga/text_mode_display.c index bfee909..db0e028 100644 --- a/kernel/io/vga/text_mode_display.c +++ b/kernel/io/vga/text_mode_display.c @@ -4,7 +4,7 @@ #define ROWS 25 #define FRAME_SIZE (ROWS * COLS) -char *video_ram = (char *)0xB8000; +char *video_ram = (char *) 0xB8000; int cursor_pos = 0; int char_attribute_byte = 0x07; @@ -45,4 +45,20 @@ void vga_print_raw(unsigned char byte) { video_ram[cursor_pos++] = byte; video_ram[cursor_pos++] = char_attribute_byte; +} + +// TODO - jump cursor to prev non 0 text char rather than reversing through whole array +void vga_backspace() +{ + if (cursor_pos != 0) + { + video_ram[--cursor_pos] = char_attribute_byte; + video_ram[--cursor_pos] = 0; + } +} + +void vga_newline() +{ + int current_line = cursor_pos / COLS; + cursor_pos = (current_line + 1) * COLS; }
\ No newline at end of file diff --git a/kernel/io/vga/text_mode_display.h b/kernel/io/vga/text_mode_display.h index 48bae85..6c46185 100644 --- a/kernel/io/vga/text_mode_display.h +++ b/kernel/io/vga/text_mode_display.h @@ -2,4 +2,6 @@ void vga_clear_screen(); void vga_print(char *msg); void vga_print_ln(char *msg); void vga_set_text_colour(int foreground, int background); -void vga_print_raw(unsigned char byte);
\ No newline at end of file +void vga_print_raw(unsigned char byte); +void vga_backspace(); +void vga_newline();
\ No newline at end of file |