Software Projects

Personal software projects: Common Lisp programs, emulators and tools for 1980s educational computers, some programs I wrote as a teenager and student, and a few pieces of writing. The story behind the old programs is told in 25 Years of Home Computing. The research software - Racer and nRQL, DLMAPS, VISCO, GenEd - is on the research and thesis work pages.

Common Lisp

Notes on Refactoring Exponential Macros
Notes on Refactoring Exponential Macros in Common Lisp.
Common Lisp Persistency Manager
A File-Based Fully Automatic Lisp Datastructure Serializer / Persistency Manager, Similar to "Pickle" for Python. Legacy code from my Lisp archive, published in 2021.
Tangram Puzzle Solver
A Tangram Puzzle Solver in Common Lisp that is capable of solving arbitrary geometric tiling problems. CLIM (Common Lisp Interface Manager) is used for its GUI.
Petri Net Editor and Simulator
A Simple Petri Net Editor and Simulator written in Common Lisp with CLIM (Common Lisp Interface Manager) GUI, written for a lecture about CLIM at the University of Hamburg.

Emulators and Tools for 1980s Educational Computers

Busch Microtronic 2090 Browser Emulator
Busch Microtronic 2090 Browser Emulator 10/2026 Claude Code-assisted
Busch Microtronic 2090 emulator for the browser, running the original TMS1600 firmware ROM (JavaScript only).
Kosmos CP1 Browser Emulator
Kosmos CP1 Browser Emulator 10/2026 Claude Code-assisted
Kosmos CP1 emulator for the browser, running the original Intel 8049 firmware ROM (JavaScript only).
Microtronic Firmware, Annotated
Microtronic Firmware, Annotated 07/2026 Claude Code-assisted
An annotated, explained disassembly of the original 1981 Busch Microtronic 2090 firmware ROM (TMS1600).
Kosmos CP1 Development Toolchain
Kosmos CP1 Development Toolchain 06/2026 Claude Code-assisted
Modern toolchain for the Kosmos CP1 (1983): a real assembler + reverse-engineered CP1/CP2 cassette WAV encoder/decoder. Load programs without hand-keying.
Recursive Towers of Hanoi on 1980s Educational Microcomputers
Tree recursion on the Busch Microtronic 2090 and the Kosmos CP1, whose machine languages have no stack. The overview paper describes both implementations side by side; its prose was written by Claude (Opus 4.7) from discussions of my source code.

New Programs for Old Machines (2021 - 2026)

TRACKER for the Amstrad CPC
TRACKER for the Amstrad CPC 09/2026 Claude Code-assisted
The MIDI/80 TRACKER on the Amstrad CPC, with the Ultimate MIDI Card: a Claude-generated port of the TRS-80 program, which adds MIDI clock out and realtime MIDI recording. Songs interchange between the two machines byte for byte.
TRACKER - a MIDI Step Sequencer for the TRS-80
TRACKER - a MIDI Step Sequencer for the TRS-80 2024 - 2026 Claude Code-assisted
A six-track, multi-timbral MIDI step sequencer with a full-screen pattern editor and a song arranger, the software for MIDI/80. I wrote the original; Claude later refactored the code.
CPC Tab Composer 2.0
CPC Tab Composer 2.0 09/2026 Claude Code-assisted
Forty years later, the program I wanted to write in 1986: in Z80 assembler, fast, and with MIDI. The tablature now scrolls past as the music plays. Claude wrote it; I directed and tested it.
Animated Speaking Vector Head
Animated Speaking Vector Head 09/2026 Claude Code-assisted
A Realtime-Animated Speaking Vector Head for the Amstrad CPC - Requires Amstrad SSA-1 or LambdaSpeak. Forty years on, the head from 1985 moves its mouth and speaks.
The Wrath of the MCPC
My entry for the #CPCRetroDev 2021 contest, in the pure BASIC category: the MCPC has taken over your CPC, and you have to defeat it in a light cycle game on a torus. Written entirely in Locomotive BASIC 1.0, without any machine code - the hard part was an AI opponent that drives well and still runs fast enough. Later versions add joystick support and speech output with LambdaSpeak. The game received the contest's special mention for the best artificial intelligence.

PC Programs (1994 - 1996)

Rotating Torus
A rotating torus with simple shading for DOS, written with Borland C - much better than the rotating hypercube on the Amiga eight years earlier.
The Fractal Master for Windows
The Fractal Master from the Amiga, reimplemented for Windows 3.1 with Borland Pascal 7.0.
Connect Four for Windows
The Windows 3.1 version of my Amiga Connect Four, written with Borland Pascal 7.0. It still ran on Windows XP.
Three-Layer Perceptron in Modula-2
A Simple Three-Layer Perceptron in Modula-2.
Setting up the network topology and the training run, and the trained network recognizing an 8x8 pattern:
Three-Layer Perceptron in Modula-2 Three-Layer Perceptron in Modula-2
PoorWorld aka WessCAD
A stereo 3D wire-frame CAD program for DOS in TopSpeed Modula-2, to be used with red/green 3D glasses. I had to write my own windowing system and GUI toolkit for it - about 500 KB of Modula-2 source code in the end.
The stereo 3D view for red/green glasses, and the world editor with its windows and menus:
PoorWorld aka WessCAD PoorWorld aka WessCAD

Amiga Programs (1988 - 1993)

Connect Four
Written with KickPascal on the Amiga, with my own recursive scoring function - I did not know the Minmax algorithm yet.
CoUnStuNa
An accounting program for a hospital ward, written on the Amiga 500 during my civil service - four weeks of nursing service traded for four weeks of full-time Amiga programming.
4D-Funktion
A three-dimensional function plotter for the Amiga, the successor of Colfunkt: one function determines the height, a second one the colour. Published in the Amiga Magazin 12/1989.
As published in the Amiga Magazin 12/1989:
4D-Funktion 4D-Funktion
The Fractal Master
Draw a basic turtle pattern with the mouse, and the program applies it recursively to itself to construct a fractal. The idea came from a task of the Bundeswettbewerb Informatik 1986. Written on the Amiga.
The editor for the basic turtle pattern, and the menu over a finished fractal:
The Fractal Master The Fractal Master
Rotating Hypercube
A smooth animation of a rotating four-dimensional hypercube in Amiga BASIC - one of my first Amiga programs, and something the CPC had been too slow for.

Amstrad / Schneider CPC Programs (1985 - 1988)

The Music Master
My last big CPC project.
Big Clock
A digital alarm clock with big 7-segment numbers covering the whole screen, running as a background task of the CPC's operating system and controlled by new BASIC commands (RSX) such as |clock, |setclock and |setalarm. Published in the CPC International. A big analogue clock had come before it, in 1985.
As published in the CPC International:
Big Clock Big Clock Big Clock
Color Chooser
A program for choosing and animating the colours of CPC screens, published as "Farbeneinsteller" in a special issue of the CPC International in 1988 - money for the Amiga.
As published in the CPC International, special issue 6/88:
Color Chooser Color Chooser
Colfunkt
A function plotter for functions of two variables: f(x,y) modulo 16 is the colour of the pixel at x,y. With colour cycling it produced spacey graphics. Published in the CPC International.
As published in the CPC International:
Colfunkt Colfunkt Colfunkt
Teaser
A CPC version of the electronic game Merlin.
The original Merlin, and the CPC version:
Teaser Teaser
Tab Composer CPC
The World's First (?) Tablature Composer Software - written in 1986 on an Amstrad CPC 464 in Locomotive BASIC, when I was 16 and used it to help me through my guitar lessons.
The Envelope Composer
A graphical editor for sound waveforms, controlling the volume envelopes of the CPC sound chip. The first program I sold: it was published in a special CPC issue of Happy Computer in 1987.
As published in Happy Computer, 1987:
The Envelope Composer The Envelope Composer The Envelope Composer The Envelope Composer
A Science Fiction Story Generator
A CPC BASIC program that generates science fiction stories.
Manic
Manic 1985 - 1986
A computer game for the CPC.
Two levels of the game:
Manic Manic
Vector Graphics Head
A vector graphics computer head, printed in a computer magazine, that I digitized by hand: I overlaid it with squared glassine paper to read off the coordinates, and wrote a BASIC program that drew the head on my CPC 464.
Galaxis
A CPC implementation of Galaxis, the Battleships-like electronic board game by Ravensburger. It took me weeks to finish.
The original Galaxis by Ravensburger, and the CPC version:
Galaxis Galaxis
Microtronic Emulator in BASIC
One of my first bigger CPC projects: an emulator of the Busch Microtronic in Locomotive BASIC - almost as fast as the real machine, and sometimes much faster. With the DK'tronics speech synthesizer, it was also a talking Microtronic.
The original - my Busch Microtronic in 1984 - and the CPC version:
Microtronic Emulator in BASIC Microtronic Emulator in BASIC

Writing and Documentation

Apple II Super Serial Card to Centronics GLP 3101
Apple II Super Serial Card to Centronics GLP 3101 over RS-232: working config, bootable ProDOS diagnostic disk, and DIP switch tables transcribed from the unscanned manual.
Educational Computers in Germany in the 1980s
The Busch Microtronic, Kosmos CP1 and Philips MasterLab - a revised English edition of two LOAD articles (Michael Wessel), with a speed benchmark, modern developments, and the Microtronic Phoenix. Markdown + print-ready PDF.
Busch Microtronic 2090 Manuals in English
Busch Microtronic 2090 Manuals in English 06/2026 Claude Code-assisted
English translations of the Busch Microtronic 2090 computer-system manual (Parts 1 and 2) and the 2094 Computer Spiele booklet - web + PDF + rendering pipeline. Hosted by permission of Jörg Vallen / Busch GmbH and Co. KG.
Heim's Mass Formula - Inspected
Heim's Mass Formula - Inspected 04/2026 Claude Code-assisted
An annotated reference implementation and sensitivity analysis of Burkhard Heim's 1989 elementary-particle mass formula.