Uxn - Virtual Computer

Thank you very much!

Hi all! I hope you’re well.

Weathering Software Winter

I recently gave a little talk at Handmade Seattle that goes over much of the design process for this project. I tried to explain most of the choices, and experiments, that went into creating Uxn. I’d like to have a link to it on here for anyone else stumbling on this thread.

Something else

Here’s a tree in a few bytes of uxntal

|00 @System &vector $2 &pad $6 &r $2 &g $2 &b $2
|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1


	#23ef .System/r DEO2
	#3b7f .System/g DEO2
	#665f .System/b DEO2
	,draw-tree JSR


@draw-tree ( -- )

	#0060 .Screen/y DEO2
	( star )
		DUP2 ,draw-line JSR
	#0203 ,draw-line JSR
		,draw-line JSR
	( tree )
		DUP #0f AND STHr ADD #01 ,draw-line JSR
		INC GTHk ,&tree JCN
	( bark )
		#0802 ,draw-line JSR
		INC GTHk ,&bark JCN
	( ground )

@draw-line ( width color -- )

	,&c STR
	#00 SWP
		DUP2 .Screen/width DEI2 #01 SFT2 SWP2 SUB2 ,&o STR2
	DUP2 ADD2 INC2 #0000
		DUP2 [ LIT2 &o $2 ] ADD2 .Screen/x DEO2
		[ LIT &c $1 ] .Screen/pixel DEO
		INC2 GTH2k ,&l JCN
	.Screen/y DEI2k INC2 ROT DEO2


Enjoy, and keep warm :slight_smile:


Hi all, maybe a bit of a tangent, but this seems like the best place to ask. I have rediscovered my 6502 fandom and have soldered together the OS816 kit by Vienna-based c0pperdragon. The kit is a minimal design with a 65816 processor (a 16 bit variant of the 6502, used in SuperNES and Apple IIgs), some flash and RAM memory, a serial port, a machine monitor programm and really nothing more.

I am now contemplating how to get a screen and keyboard for the board. At some point, I will just attach a little TFT screen and PS/2 keyboard to it.

At first however, I want to stick with the serial line as the only interface to the 65816 board. On the host end, I would like to have somthing like a Varvara computer as a kind of thick client, being controlled through the serial interface. It would allow to interact with all the devices normally controlled from UXN from the 65816 CPU. This very same mode of control could be used by other microcontrollers, e.g. an Arduino, using Varvara in a similar way as Open Sound Control.

Has something like this been attempled?

Best regards,
– Olav


Hi everyone, I wanted to know, in particular from @garvalf , if the effort porting uxn to the Atari ST was still ongoing ?
I started my own implementation of uxn in Pascal, and got a very early version of an emulator running on Atari ST using Pure Pascal. So far, only the console device is implemented, but it’s enough to run the test suite and the canonical Fizzbuzz example :slight_smile:


Hi All. I’ve recently discovered Orca and am trying to figure out if I can run this using Uxn on an old portable 32bit windows 7 machine. I can load the included roms in the Uxn32 Essentials Pack, but when try to run the Orca rom (from: ~rabbits/orca-toy - Livecoding language, written in Tal - sourcehut git) I get (what I think is) a debugging window called ‘Beetbug’.

Please can anyone give me some pointers on what I might need to do?

Maybe try posting the issue in Uxn32’s GH. I haven’t used it myself but from the readme it should work on your system? Also you might get some help in Uxn’s IRC (ircs://irc.esper.net:6697/#uxn).


Thanks, I’ll give that a go.

@neauoire Ive been wondering, why choose a stack machine for Uxn, rather than a register machine? Not to disparage one or the other, but I mean like, what led you to that decision? Was it just easier to implement, or was it to be more like Forth?

Sorry for being away for a while, I’m back :slight_smile:

I think you might want to talk to Andreer who made the PotatoP which has (uxn) support, or Virgil on DuskOS for UXN.

There is an active ongoing Atari-ST port here, coded in Pascal.

I wanted to use a system at the assembly level, I didn’t want to have to write an higher level language to operate it. I always found Forth/RPN systems more comfy when writing assembly, as opposed to register machines. One of my interest with uxn was to explore self-modifying programming, and it was really painful to do what I had in mind by juggling registers.

I talk a bit about the choice for the design of the language here. I’ve been programming solely in Uxn for the past 2 years, and I’m very happy with the decision of going with a stack machine, it’s a lovely way to program and keep the cognitive load low. Eventually I’d like to write a rom that does stack-effect checking, I’ve done a bit of experiments in that direction but nothing reliable yet.

If I had to do it all over again, I would still not use a register machine, I’ve been implementing in Uxn a SECD(LispKit) abstract machine this month, after diving into lisp machine VM, perhaps there’s something there. Maybe an interaction nets-first VM might have been fun, or something more like the BQN virtual machine? But honestly, at the end of the day, all I really want is to make fun little toy programs, and Uxn gets me there and back!

If you’re curious about more details on the design, have a look at the devlog.

I’ve been working on a ton of things since last winter, here’s a few things:

Left is now an IDE

Ported Oquonie

Did a ton of shows with Orca running on Uxn

Sorry for being quiet these past few weeks, I lost my account password and it took me a while to get around to regain control of the email that control this account.


Yes, thank you, it’s mine. I quickly got the impression the path was clear for this conversion so I gave it a shot.
For the Pascal choice, it started as a need to compile the Dos version with turbo C. I got an error with TC 2.0 , so I started to rewrite it in Turbo Pascal 7.0 for Dos, as it was for me simpler than trying to understand the cryptic C compiler message :slight_smile:
After having ported the core to TP7.0 I discovered the existence of a very capable compiler for the Atari St and decided it would be more interesting than another DOS port.