diff --git a/docs/USERS.md b/docs/USERS.md index 7d60abb..3adbd6d 100644 --- a/docs/USERS.md +++ b/docs/USERS.md @@ -39,7 +39,7 @@ Shows all of the available commands, which are explained here. #### `panic` -Triggers a kernel panic by trying to divide four by zero. +Triggers a kernel panic by reserved exception. #### `words` @@ -57,7 +57,7 @@ Options: - `` will default to `PRIMES_MAX` (a million) - `` will compute primes up to that number -#### `rainbow` +#### `rainbow ` Asks for text and then outputs it with different vibrant colors. @@ -77,11 +77,11 @@ A brainfuck interpreter with every instruction and default tape size (30k cells) Gets system uptime from the timer in ticks. Ticks are incremented at a rate of 18.222Hz (18.222 ticks per second). -#### `echo` +#### `echo ` The classic echo command, that outputs your input. -#### `sysinfo` +#### `sysinfo [option]` Outputs information about the current system (CPU and RAM). @@ -89,7 +89,7 @@ Options: - `` will show basic info about the CPUid and lower/upper memory. - `-v` will output the CPUID, lower/upper memory, and the memory map. -#### `conway` +#### `conway [option]` A classic Game of Life implementation with standard rules and 100 generations. @@ -98,14 +98,18 @@ Options: - `-g` will spawn a classic glider - `-l` will spawn a lightweight spaceship -#### `rot13` +#### `rot13 ` Encode a string using the rot13 cipher. -#### `morse` +#### `morse ` Convert a string to its morse equivalent. -#### `cowsay` +#### `cowsay ` Makes a cow speak! + +#### `pi ` + +Computes Pi up to a couple of digits using the Leibniz series; takes one integer argument, the number of terms of the series to compute. diff --git a/src/kernel/shell.c b/src/kernel/shell.c index de32a88..b99c03e 100644 --- a/src/kernel/shell.c +++ b/src/kernel/shell.c @@ -16,13 +16,35 @@ #define MAX_ARGS 64 // Splash screen: esthetic stuff. - -char* motd[] = +char* motd[] = { + "I should be root, really.", + "Not watching you!", "Now in 2D!", "Supercalifragilisticexpialidocious!", "Tylko jedno w glowie mam!", + "Greetings, magic poppy!", + "I'm stuck in this kernel's shell, get me out!", + "And now, solve that equation!", + "Powered by TCC Incorporated.", + "Compiled at 69, CoquaineBaule Ave.", + "Shouldn't we be, uh, doing something?", + "We are the florists, we pick the plants!", + "Lalalalala, I pick the plants!", + "Woah, we're half-way there...", + "The CROU will never die!", + "Technoblade never dies!", + "Hi. My name is Guitar.", + "space station No. 9", + "May the orange juice be with you !", + "Bloody grated carrots!", + "Good night, kiddos...", + "I like trains", + "I fear planes", + "Bruteforce.exe", + "Ohayogozaimasu!", }; + int motd_size = sizeof(motd)/sizeof(motd[0]); bool do_splash = true; @@ -113,6 +135,7 @@ void shell_install() register_command("time", program_time); register_command("read", program_read); register_command("reboot", program_reboot); + register_command("pi", program_pi); for (;;) { diff --git a/src/programs/misc.c b/src/programs/misc.c index 3706ff6..fa3be2c 100644 --- a/src/programs/misc.c +++ b/src/programs/misc.c @@ -73,7 +73,7 @@ void program_uptime() void program_help() { - printf("help\tpanic\twords\tprimes\trainbow\tclear\nmath\tbf\t uptime echo\t sysinfo\tconway\nrot13 morse\tcowsay time\t read\t reboot\n"); + printf("help\tpanic\twords\tprimes\trainbow\tclear\nmath\tbf\t uptime echo\t sysinfo\tconway\nrot13 morse\tcowsay time\t read\t reboot\npi\n"); } // Panic diff --git a/src/programs/pi.c b/src/programs/pi.c new file mode 100644 index 0000000..9db027e --- /dev/null +++ b/src/programs/pi.c @@ -0,0 +1,34 @@ +// Program for Pi computation using Leibniz series +// Author: xamidev +// Licensed under the Unlicense. See the repo below. +// https://github.com/xamidev/blankos + +#include "../libc/stdio.h" +#include "../libc/string.h" + +void program_pi(int argc, char* argv[]) +{ + if (argc < 2) + { + printf("Usage: %s \n", argv[0]); + return; + } + + double pi = 0.0; + int terms = atoi(argv[1]); + + for (int i=0; i