From 4b6beb5ba9f526c04a78e950a7473b447bc34de3 Mon Sep 17 00:00:00 2001 From: xamidev Date: Mon, 5 Aug 2024 19:25:13 +0200 Subject: [PATCH] Minor program improvements --- iso/boot/kernel.elf | Bin 26272 -> 26380 bytes src/kernel/kmain.c | 1 + src/kernel/shell.c | 10 +++++++++- src/programs/misc.c | 31 +++++++++++++++++++++++++++++++ src/programs/primes.c | 4 +++- src/programs/programs.h | 3 +++ 6 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 src/programs/misc.c diff --git a/iso/boot/kernel.elf b/iso/boot/kernel.elf index 8423cb09eb9cc4ae4fe968eddf0085df95a64272..3d9bb728f88dbbaaa01a57390af0488bdfd64aab 100755 GIT binary patch delta 7545 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 Ol`(Bel{QpbyZ!->NqIm3 delta 7054 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 EFJ+LFVE_OC diff --git a/src/kernel/kmain.c b/src/kernel/kmain.c index 246ca7c..5ca323b 100644 --- a/src/kernel/kmain.c +++ b/src/kernel/kmain.c @@ -33,6 +33,7 @@ int kmain(int retvalue) clear(); colorputs(ascii_title, 10); + colorputs(" by @xamidev - star the repo for a cookie!\n\n", 11); // TODO: Grub modules to load programs diff --git a/src/kernel/shell.c b/src/kernel/shell.c index 763500f..34831cb 100644 --- a/src/kernel/shell.c +++ b/src/kernel/shell.c @@ -21,7 +21,7 @@ void shell_install() } else if (strcmp(input_buffer, "help") == 0) { - printf("This is the Blank Operating System\ndesigned for fun by xamidev\n\nCommand help:\n\n\thelp - shows this message\n\tpanic - makes the kernel panic\n\twords - generates random words\n\tprimes - computes prime numbers\n"); + printf("help\tpanic\twords\tprimes\trainbow\tclear\n"); } else if (strcmp(input_buffer, "panic") == 0) { @@ -35,6 +35,14 @@ void shell_install() { program_primes(); } + else if (strcmp(input_buffer, "rainbow") == 0) + { + program_rainbow(); + } + else if (strcmp(input_buffer, "clear") == 0) + { + program_clear(); + } else { printf("Unknown command %s\n", input_buffer); } diff --git a/src/programs/misc.c b/src/programs/misc.c new file mode 100644 index 0000000..3836373 --- /dev/null +++ b/src/programs/misc.c @@ -0,0 +1,31 @@ +// Miscellaneous small programs + +#include "../libc/stdio.h" + +// Print a rainbow colorful text for testing + +#define BUF_SIZE 256 +#define COLORS 20 + +void program_rainbow() +{ + char input_buffer[BUF_SIZE]; + puts("What to print? "); + get_input(input_buffer, BUF_SIZE); + puts("\n"); + + for (int i=0; i