Skip to content

... and the rest!

I can't talk about all of the utilities in Toast OS - as of writing, there are about 50 of them! I'll call out a few of my favorites, however

Colossal Cave Adventure

txt
/home/raydog$ advent

    Welcome to ADVENTURE!

  Original development by Willie Crowther.
  Major features added by Don Woods.
  Conversion to BDS C  by J. R. Jaeger.
  Unix standardization by Jerry D. Pohl.
  JS porting & tweaks  by Ray Myers.

    Would you like instructions?

? n
You are standing at the end of a road before a small brick
building.  Around you is a forest.  A small stream flows out
of the building and down a gully.
?

Colossal Cave Adventure (1976) is one of the first video games for the computer. At some point, I decided to traipse through the original FORTRAN code (along with a later C port) and convert the whole thing into JS.

I originally wanted to give this project its own dedicated page given how big of a pain-in-the-ass it was. However, the code itself ended up being kinda boring: the whole thing functions as a giant nightmarish state machine with a bevy of obtuse variables, confusing helper functions, and convoluted data logic. That's because the original code was giant nightmarish state machine with a bevy of obtuse variables, confusing helper functions, and convoluted data logic, and I chose to translate the original logic literally, without any complex cleanups, to prevent changes in game behavior. The resulting JS version functions mostly the same as the original, for better or for worse. Still, it's now possible to play a 50 year old computer game in my fake unix OS website, and that's pretty cool!

ls

txt
/home/raydog$ ls -lhSR
/home/raydog/:
-rw-r--r-- 1 root root 3.0KiB 2026-05-16 11:44 recipe.md
-rw-r--r-- 1 root root 1.4KiB 2026-05-16 11:44 resume.md
-rw-r--r-- 1 root root   602B 2026-05-16 11:44 projects.md
drwxr-xr-x 1 root root     0B 2026-05-16 11:44 brainfucks

/home/raydog/brainfucks/:
-rw-r--r-- 1 root root  15KiB 2026-05-16 11:44 mandelbrot.bf
-rw-r--r-- 1 root root 1.7KiB 2026-05-16 11:44 triangle.bf
-rw-r--r-- 1 root root 1.4KiB 2026-05-16 11:44 brainfuck.bf
-rw-r--r-- 1 root root   194B 2026-05-16 11:44 hello.bf

Toast OS has a ls implementation, with a surprising number of features, like recursive listings, different display modes, and so on.

Tree

txt
/home/raydog$ tree /var
/var
`--run
   `--init
      |--cmd.pipe
      |--logs
      |  |--boot.log
      |  |--fs.log
      |  |--init.log
      |  `--session.log
      `--status
         |--boot
         |--fs
         `--session

We also have a tree implementation. This functions similarly to ls, and indeed shares some code with it for things like suffixes, but I just like how the output looks!

grep

txt
/home/raydog$ grep -i cheese ./recipe.md
Dope Mac and Cheese Recipe
- 1 1/2 cups grated sharp white cheddar cheese
- 1 cup grated gruyere cheese
- 1/2 cup grated pepperjack cheese
1. Grate all of the cheeses, and mix them into the bechamel sauce. Keep folding
2. Combine the cold noodles and the cheese sauce into a larger pot. Be sure to
4. Pour the Mac and cheese into some bowls, and garnish with the bacon, either

Toast OS has a minimal grep implementation, that can read from either files or stdin. When implementing this, I didn't want to use JS regular expressions, since those are closer to PCREs in terms of functionality, whereas POSIX mandates Basic Regular Expressions (BREs). So the grep implementation includes a transpiler that will convert a BRE into a JS one, so we can have the correct level of functionality, but still perform matching at full speed.

expr

txt
expr ( 1 + 5 ) / 3 * ( 1 + 1 )
4

Toast OS also has a tiny expr implementation. It works with a simple recursive-descent parser, that then immediately evaluates the resulting tree. Note: the tokens have to be separate arguments, so there needs to be whitespace between them. That requirement comes from various standards, and is how GNU behaves as well.

lp

Toast OS also has a minimal printer driver, located at /dev/lp0. Commands can be sent to the driver, and it'll assemble those commands together, rendering into an invisible div element. It then uses the JS print() command to flush whatever was rendered to your physical printer. (Using print preview, of course.)

Try it with lp recipe.md! And then try making that recipe, it's actually really good. 😃

Shell

txt
cat ./resume.md | grep '^##*'
# Raymond Myers
## Education
## Experience
### Webflow (2015 - Current)
### Vungle (2012 - 2015)
### Tyco Electronics (2010 - 2012)

Toast OS also has a shell. It's not a complete shell (that would require conditions, loops, functions, etc.), but it does have have pipes, redirection, variables, history and a few other fancy features. I didn't need to have all those things, but once I had a parser for shell syntax, it felt necessary. 😃