From 6dc29e41ee792b7378182520916c020b13c5f46a Mon Sep 17 00:00:00 2001 From: spikey Date: Sat, 17 Feb 2024 21:53:36 -0500 Subject: [PATCH] other changes --- Makescript | 2 ++ sys/drv/vga/include/video.h | 2 +- sys/drv/vga/video.c | 17 +++++++++++++---- sys/sysinit.c | 9 +++++++-- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/Makescript b/Makescript index e85ac06..a2c1a8f 100755 --- a/Makescript +++ b/Makescript @@ -1,5 +1,7 @@ #!/usr/bin/env sh +mkdir -p obj/ + INCLUDE="-Isys/drv/vga/include -Isys/include" CFLAGS="-g -m32 -ffreestanding -Wall -Wextra -pedantic -nostdlib $INCLUDE" ASFLAGS="-felf32" diff --git a/sys/drv/vga/include/video.h b/sys/drv/vga/include/video.h index 6e9b501..f3e663e 100644 --- a/sys/drv/vga/include/video.h +++ b/sys/drv/vga/include/video.h @@ -10,7 +10,7 @@ s32 unused = 0; s8 *vga_vidmem = (s8 *)0xb8000; s8 vga_unused = 0; -void vga_write(s8 *, s32, s8); +void vga_write(s8 *, s16, s8); void vga_clearscreen(void); #endif diff --git a/sys/drv/vga/video.c b/sys/drv/vga/video.c index d4a0d69..4029a0f 100644 --- a/sys/drv/vga/video.c +++ b/sys/drv/vga/video.c @@ -2,12 +2,12 @@ #include void -vga_write(s8 *sequence, s32 size, s8 flags) +vga_write(s8 *sequence, s16 size, s8 flags) { if (size > VGA_TEXT_SIZE) { - s32 using_size = size - VGA_SIZE; + s16 using_size = size - VGA_TEXT_SIZE; - for (s32 i = 0; i <= VGA_SIZE; i++) { + for (s16 i = 0; i <= VGA_SIZE; i++) { vga_vidmem[i] = sequence[using_size + i]; vga_vidmem[++i] = flags; } @@ -16,6 +16,15 @@ vga_write(s8 *sequence, s32 size, s8 flags) return; } + s16 needed_space = size + unused - VGA_TEXT_SIZE; + if (needed_space >= 0) { + for (s16 i = 0; i <= VGA_SIZE - needed_space; i++) { + vga_vidmem[i] = vga_vidmem[i + needed_space]; + } + + unused = VGA_SIZE - needed_space; + } + while (*sequence != '\0') { vga_vidmem[unused++] = *sequence; *sequence++; @@ -26,7 +35,7 @@ vga_write(s8 *sequence, s32 size, s8 flags) void vga_clearscreen(void) { - for (int i = 0; i <= VGA_SIZE; i++) { + for (s16 i = 0; i <= VGA_SIZE; i++) { vga_vidmem[i] = 0; } } diff --git a/sys/sysinit.c b/sys/sysinit.c index e900b88..2787d85 100644 --- a/sys/sysinit.c +++ b/sys/sysinit.c @@ -1,7 +1,12 @@ +#include + void sysinit(void) { vga_clearscreen(); - vga_write("Om Smart.", 9, 0x0F); - vga_write("Om Smarter.", 11, 0x0F); + vga_write("fish stick.", 10, 0x0F); + for (s16 i = 0; i <= 2000; i += 20) { + vga_write("Om Smart!", 9, 0x0F); + vga_write("Om Smarter!", 11, 0x0F); + } }