Note that the precise distinctions between a Tool, a Platform, and a Library are debatable, and entries may be categorized somewhat arbitrarily.

Tools for Retrocomputing platforms might be found in the Retrocomputing article instead.

Formats often have tools for processing them, and those are listed along with the format instead of here.


Console::Virtual is a simple, lightweight abstraction layer which allows a program to interact with the user through a console, which is emulated on whatever user interface is really available.

Implementation: Console::Virtual (Perl module)


DiskSumo is a program to transfer disk images off a Commodore 64 over the RS-232 port via the XMODEM protocol at 300 baud.

Implementation: DiskSumo (BASIC)


Funicular is a system that semi-automates the creation of development environments on eclectic architectures. "Semi-automate" means it automates what it can, and provides repeatable instructions for you to follow for what it can't.

"Eclectic architectures" is not terribly-well defined, but it includes retrocomputing and esoteric architectures. Basically, if you've got an emulator for it and install and support images for it, you might be able to install and outfit and and run a system for it, using Funicular.

It replaces Amiga Gondola. It can handle such OS/emulator combinations as NetBSD under QEMU, FreeDOS under QEMU, and Commodore BASIC 2.0 on a Commodore 64.

Implementation: funicular


Guten-gutter is a command-line tool that removes the boilerplate from Project Gutenberg text files.

Implementation: guten-gutter (Python)


hatoucan is a tokenizer for Commodore BASIC 2.0 programs. It is compatible with a subset of petcat, but is written in Python and is in the public domain.

Implementation: hatoucan (Python)


kinoje is a templating-based animation tool. A provided template is filled out once for each frame of the animation; the result of the template expansion is used to create a still image; and the resulting sequence of images is compiled into the finished movie.

Implementation: kinoje (Python)


MARYSUE is the story generator used to generate the novel A Time for Destiny for NaNoGenMo 2015.

Implementation: MARYSUE (Python)


seedbank is a Python module which takes care of recording the seed used for random generation, and allowing a previously used seed to be used again in the future.

Implementation: seedbank (Python)


shelf is a "package manager" which doesn't actually install any files. Instead, it stores the source trees of sundry packages in a single directory, creates link farms to the interesting files within those trees, and manages your search paths to include those link farms. those trees. The source trees are typically the working directories of local git or Mercurial clones, or they can be source distributions from tarballs. shelf, written in Bourne shell, is a replacement for [toolshelf][], which was written in Python.



SITU-MON is a machine language monitor for 6502-based systems, written (by hand!) during RetroChallenge 2015/07 and entered into an emulated Commodore 64 using SITU-PAN.

Implementation: SITU-MON (Commodore 64)


SITU-PAN is a front-panel switches simulator for the Commodore 64. It displays 8 virtual LEDs and 8 virtual dip switches on the screen. The LEDs display the bit pattern at the current address in memory. Via the keyboard, the switches may be toggled, a new bit pattern written into memory, and the address advanced. In this way, machine code programs may be entered into memory, and then run. SITU-PAN was written during RetroChallenge 2015/07 for the purposes of entering SITU-MON into an emulated C64.

Implementation: frontpanel.bas

The Swallows Engine

The Swallows Engine is the engine used to generate The Swallows series of generated novels for NaNoGenMo 2013.

Implementation: The Swallows Engine (Python)


T-Rext is a command-line filter that attempts to clean up spaces and punctuation in a text file. Its purpose is so that, when you are writing a text generator, such as a Markov processor, you need not worry too much about its output format; just toss its output through T-Rext when you're done to make it more presentable.

Implementation: t-rext (Python)


yucca is a dialect-agnostic static analyzer for 8-bit BASIC programs. It can find GOTO's and GOSUB's which refer to non-existent line numbers, or line numbers which contain only a REM, among a few other modest features.

Implementation: yucca (Python)

Forked Tools


ee is the "easy editor" which comes with FreeBSD. Cat's Eye Technologies has forked it for use in The Platform.


tideay is Cat's Eye Technologies' fork of yaedit, a GtkSourceView-based text editor written by Paul Harrison. In addition to the features provided by yaedit, tideay supports things such as string-rewriting-based editing commands.

Implementation: tideay (Python)

Archival Tools


An IRC bot with no purpose or plan.

Implementation: mzstorkipiwanbotbotbot (Lua)

Implementation: Rtype


Rooibos is a parser combinator library for Python. Modelled somewhat after yeanpypa (self-contained, public domain), but compensates for what I considered a fatal flaw in yeanpypa (no good way to describe a recursive grammar.) Has a fatal flaw of its own (can only parse strictly LL(1) grammars — no backtracking is yet possible.) Originally used in Eightebed, but provided here for ease of transplanting into other projects.



This is a static analyzer, written in Scheme, which can check if given Scheme procedures are total (always terminate, on any input) by checking that they are specified primitive-recursively. What's more, it is written almost entirely in a primitive-recursive style, so it can check itself!

Implementation: TPiS (Scheme)


yoob.js is a framework for implementing esoteric programming languages in Javascript/HTML5. It has some differences from the earlier yoob framework, which is in Java.

Implementation: yoob.js (Javascript)