So, let’s have a dedicated Uxn thread!
- Sound potato
What?
Uxn is a portable 8-bit virtual computer inspired by forth-machines, capable of running simple tools and games programmable in its own assembly language.
In English: Imagine a workstation that is so simple that it can be implemented in an afternoon by a single person. Imagine that every tool/application is a only a few bytes. Software for Uxn are most similar to roms for the classic Nintendo, except that the console is designed especially for doing audio/visual works - with a mouse, a keyboard, midi I/O and Control Voltage.
It was designed with an implementation-first mindset with the goal of targeting salvaged computers. The distribution of Uxn projects is not unlike downloading a rom for a console, Uxn has its own emulator.
Background
Back in 2016, we experienced frequent failures with both software & hardware, largely due to our small energy storage and lack of reliable connectivity. The solution was to create tools that would be better suited to our needs. The objective was to replace the bloated, closed-source or subscription software that we were using to do creative work, such as Photoshop, Xcode and Ableton. We were somewhat familiar with web technologies, so we decided to build our programs on this new framework called Electron.
While solving some of our issues, Electron was rapidly increasing in size and soon joined the rest of the software that we wanted to do away with. Our focus shifted toward reducing our energy use, and to ensure reliability by removing all dependencies.
To transition toward our new goals, we developed offline web versions as temporary stand-ins while researching ways to build more resilient software. We eventually ported our tools to C, but while we had achieved ideal energy usage, portability was still an issue, so we kept looking. We learnt 6502 assembly , seeing players run our NES game on all these different platforms gave us a new idea.
And so, in 2021 we took our biggest leap yet toward longtermism and designed a small virtual machine with a focus on implementability; meaning that moving forward, our software will live on a virtual machine. In other words, the code will stop having to be ported, but instead to make something available on a new platform would our needs or devices change, the emulator remains the only piece of code to be ported, which is explicitly designed to be easily implemented.
This is where we are now. uxn may solve our cross-platform issues, while being extremely light. It took us a long while to get here, we hope that one day the Uxn versions of our software replace the desktop and web versions.
–
Installation
Download and install SDL2, and build the emulator and assembler.
git clone https://git.sr.ht/~rabbits/uxn
./build.sh
That will launch the piano demo from the examples folder.
Development
The following command will create an Uxn-compatible rom from an uxntal file, point to a different .tal file to assemble a different rom.
bin/uxnasm projects/examples/demos/life.tal bin/life.rom
To start the rom, point the emulator to the newly created rom:
bin/uxnemu bin/life.rom
You can find additional roms here.
This will be the official thread for Uxn related things, I’m currently porting Orca for this platform. If you’re interested in learning how to program for it, I’ll be happy to help you.