From d5cf6a9696f6f86bec5652f94ba7485aae4ca1bc Mon Sep 17 00:00:00 2001 From: James Barnett Date: Tue, 28 Aug 2018 16:21:37 +0100 Subject: Add print_ln function --- kernel/io/text_mode_display.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 kernel/io/text_mode_display.c (limited to 'kernel/io/text_mode_display.c') diff --git a/kernel/io/text_mode_display.c b/kernel/io/text_mode_display.c new file mode 100644 index 0000000..514ba9f --- /dev/null +++ b/kernel/io/text_mode_display.c @@ -0,0 +1,34 @@ +#define COLS 80 +#define ROWS 25 +#define FRAME_SIZE (ROWS * COLS * 2) // 2 bytes per char + +char *video_ram = (char *)0xB8000; +int cursor_pos = 0; + +void clear_screen() +{ + for (int i = 0; i < FRAME_SIZE; i = i + 2) + { + video_ram[i] = ' '; + video_ram[i + 1] = 0x07; + }; + cursor_pos = 0; +} + +void print(char *msg) +{ + int j = 0; + while (msg[j] != '\0') + { + video_ram[cursor_pos++] = msg[j]; + video_ram[cursor_pos++] = 0x07; + ++j; + } +} + +void print_ln(char *msg) +{ + print(msg); + int current_line = cursor_pos / COLS; + cursor_pos = (current_line + 1) * (COLS*2); +} -- cgit v1.2.3