From 87aa7c4c44f24437d64b48e6f37aafbfd060824b Mon Sep 17 00:00:00 2001 From: Ole Morud Date: Thu, 1 Aug 2024 18:48:09 +0200 Subject: [PATCH] Fix terminal scroll --- src/lib/tty.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/lib/tty.c b/src/lib/tty.c index dd5a349..350b565 100644 --- a/src/lib/tty.c +++ b/src/lib/tty.c @@ -47,10 +47,14 @@ void terminal_putentryat(char c, uint8_t color, size_t x, size_t y) void terminal_scroll(int n) { + constexpr size_t buf_size = VGA_WIDTH * VGA_HEIGHT; + + const size_t offset = VGA_WIDTH * n; + const size_t len = buf_size - offset; memmove(terminal_buf, - terminal_buf + VGA_WIDTH * n, - VGA_WIDTH * (VGA_HEIGHT-n)); - for (size_t i = VGA_WIDTH * (VGA_HEIGHT-n); i < VGA_WIDTH * VGA_HEIGHT; i++) { + terminal_buf + offset, + len * sizeof *terminal_buf); + for (size_t i = len; i < buf_size; i++) { terminal_buf[i] = vga_entry(' ', t.color); } t.row -= n;