Uxn

Uxn is a personal computing stack created by 100 Rabbits and developed by an active community.

In 2021 I discovered Uxn. The challenge of operating in such a constrained environment fascinated me and many of my earliest projects (regular expressions, higher precision math) involved pushing the limits of what was possible. Beyond that, I continue to be inspired by the vision of a simple, durable computing environment that can be bootstrapped from almost nothing.

Talks

uxn: permacomputing & roguelikes

I gave a lightning talk at Roguelike Celebration 2024 where I discussed Uxn and other intentionally small computing environments in the context of roguelike game design. The slides for the talk were produced using a Uxn ROM (Adelie) and rendered during the talk using Uxn11.

Emulators

I've contributed to uxn11 and uxncli and also implemented many of my own emulators.

uxn-lfb

Emulator for the Linux framebuffer. Developed mainly for (and on) a 32-bit netbook with 1 GB of RAM running Alpine Linux.

uxntty

Varvara emulator for use in TTY terminals. Motivated by a desire to run Femto and other interactive terminal programs that want to read keystrokes as they become available.

Uxn 68k

Varvara emulator for classic Macintosh computers. Working title and no public source yet, but the initial goal is to be able to run Uxn ROMs on any Macintosh that can run System 7. Currently we have console programs working.

uxn-agon

Varvara emulator for the AgonLight2. Most devices work, but still working on the screen.

uxn-scm

Varvara implementation for Scheme.

programs

femto

Simple nano-esque text editor. Runs in the terminal using uxntty or any other console editor if the terminal is put into raw mode first.

kodiak

Klondike solitaire with bears!

m291 (coauthor)

Music player with interface reminiscent of early iPods. I mainly worked on the subprocess support but also helped a bit with some of the data processing.

electrum

Nanochat client with an intentionally lofi interface. The goal was to produce a chat client small enough to run on a Nintendo 3DS.

determ

Terminal emulator written in Uxntal, intended to be run in uxn11. Somewhere between a generic ANSI terminal and a VT100.

μxn

Uxn multiplexer! Runs one virtual screen in which many smaller ROMs can run. Introduces the muxn specification for smaller emulators/environments.

contact card

Based on this idea by chloe I implemented a multi-purpose contact card. Includes mazes, calendars, dungeons and dragons, and contact information.

weredice

Diceware password generator. Useful when you have physical dice but don't want to look up your dice rolls against a word list.

zaxen

Very work-in-progress coding environment and interactive debugger. Intended to feel a bit like a Zachtronics programming game.

ulz2

Streaming compressor/decompressor for the ULZ compression format.

libraries

math32.tal

Implements 32-bit unsigned integers using 8-bit and 16-bit integers.

fix32.tal

Implements 32-bit decimal fixed point values. The denominator is 1000, allowing values between ± 2 million to be represented with up to 3 decimal places. Used by Nebu, a simple spreadsheet ROM.

regex.tal

Implements strict regular expressions (without back references or other non-regular features). Used by Femto.

fix16.tal

Implements 16-bit fixed point values. The representation is 8.8 (8-bits for the whole number, 8-bits for the fraction), which makes it suitable for angles and other small-ish values.

arg.tal

Argument parsing library for Uxntal, which abstracts over the console vector types.

alloc.tal

Arena-based memory allocator.

tools & support

uxntal-mode

Emacs major-mode for writing Uxntal.

uxntal(7) manual page

Manual page describing the Uxntal system and instructions.

uxnrepl.py

Python interactive REPL powering uxnbot in the #uxn IRC channel.

back

last updated: Sun Jul 26 03:32:59 PM EDT 2026