As a computing platform, Uxn is small, low-resource, and limited by design. This isn't an adequate description, checkout the links in the sidebar to learn about Uxn.

This page is a place for me to keep notes as I learn how to write Unxtal to create little programs of my own design. I'm mostly following along with the Compudanzas Uxn tutorials. If you're looking to learn this, I'd recommend going there rather than here - these are just my notes.


These are just my notes, please see the links for more authoritative information. I'm not trying to redefine anything here, and in the process of describing my understanding of things, I'm probably introducing inaccuracies.

What it is

Uxn refers to a few things that together make a small scale computing platform. The parts that make up Uxn primarily include Varvara, which is the virtual computer that will run programs, and Unxtal, the language used to write the programs.

I understand that the system has some inspiration in how old Nintendo code can be emulated and stored as roms. Part of creating a sustainable computing platform is designing a system that can be run on old hardware and any potential new hardware. Emulation means that Varvara can be setup on all kinds of devices (and already has been).

For a lot of regular computing contexts (like a laptop, not a gaming console), one would use the C based assembler to convert "tal" script files into "roms", which can then be run on a C based emulator. Indeed the Uxn code repo includes uxnasm for assembly and uxnemu for emulation. The emulator requires SDL2, this is a very common interface that exposes a useful API for accessing the screen, keyboard, sound, and other IO. Therefor the C based emulator is creating a "Varvara" by using SDL2, so you can enjoy the emulation withing your computer. Since Varvara has a known set of rules and requirements, one could create an emulation on any number of platforms, as long as access to a screen and input devices can be provided.


Unxtal is the language for Uxn. It compiles to (or maybe is a form of?) assembly language. It uses postfix notation, and is stack based - meaning information is pushed down a virtual "stack" and the operands (like +, -, etc) are written at the end. For example 1 + 2 is written 1 2 +