Make putchar() handle newlines correctly
This commit is contained in:
+12
-2
@@ -57,6 +57,7 @@ uint8_t terminal_color;
|
||||
uint16_t *terminal_buffer = (uint16_t *)VGA_MEMORY;
|
||||
|
||||
void terminal_initialize(void) {
|
||||
|
||||
terminal_row = 0;
|
||||
terminal_column = 0;
|
||||
terminal_color = vga_entry_color(VGA_COLOR_LIGHT_GREY, VGA_COLOR_BLACK);
|
||||
@@ -79,6 +80,14 @@ void terminal_putentryat(char c, uint8_t color, size_t x, size_t y) {
|
||||
}
|
||||
|
||||
void terminal_putchar(char c) {
|
||||
if (c == '\n') {
|
||||
terminal_row += 1;
|
||||
terminal_column = 0;
|
||||
if (terminal_row == VGA_HEIGHT)
|
||||
terminal_row = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
terminal_putentryat(c, terminal_color, terminal_column, terminal_row);
|
||||
if (++terminal_column == VGA_WIDTH) {
|
||||
terminal_column = 0;
|
||||
@@ -88,9 +97,10 @@ void terminal_putchar(char c) {
|
||||
}
|
||||
|
||||
void terminal_write(const char *data, size_t size) {
|
||||
for (size_t i = 0; i < size; i++)
|
||||
for (size_t i = 0; i < size; i++) {
|
||||
terminal_putchar(data[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void terminal_writestring(const char *data) {
|
||||
terminal_write(data, strlen(data));
|
||||
@@ -101,5 +111,5 @@ void kernel_main(void) {
|
||||
terminal_initialize();
|
||||
|
||||
/* Newline support is left as an exercise. */
|
||||
terminal_writestring("Hello world from kernel.\n");
|
||||
terminal_writestring("Hello world!\nI'm in the kernel and no one can stop me now! =)");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user