<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://fantasyconsoles.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=2607%3AFB90%3AEC95%3A618%3A2C1E%3A27CC%3AA1FF%3A8227</id>
	<title>Fantasy Console Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://fantasyconsoles.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=2607%3AFB90%3AEC95%3A618%3A2C1E%3A27CC%3AA1FF%3A8227"/>
	<link rel="alternate" type="text/html" href="https://fantasyconsoles.org/wiki/Special:Contributions/2607:FB90:EC95:618:2C1E:27CC:A1FF:8227"/>
	<updated>2026-05-31T03:52:44Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://fantasyconsoles.org/w/index.php?title=Varvara&amp;diff=344</id>
		<title>Varvara</title>
		<link rel="alternate" type="text/html" href="https://fantasyconsoles.org/w/index.php?title=Varvara&amp;diff=344"/>
		<updated>2026-05-31T01:05:29Z</updated>

		<summary type="html">&lt;p&gt;2607:FB90:EC95:618:2C1E:27CC:A1FF:8227: expanded the varvara and uxn specifications, and improved grammar and clarity. may need more citations.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Varvara&#039;&#039;&#039; (sometimes &#039;&#039;&#039;Varvara/Uxn&#039;&#039;&#039;, &#039;&#039;&#039;Uxn/Varvara&#039;&#039;&#039;, or mistakenly just &#039;&#039;&#039;Uxn&#039;&#039;&#039;) is a fantasy computer system created by [https://100r.co Hundred Rabbits]. It was designed by Rekka Bellum and Devine Lu Linvega as a minimalist specification to sustain creative work on the lower power supply of their sailboat, Pino, and the project is especially notable for its portability.&lt;br /&gt;
&lt;br /&gt;
== Capabilities ==&lt;br /&gt;
&lt;br /&gt;
Varvara has a variable screen resolution, but is limited to using four colors at a time (out of a total 4096 possible colors). Sound is output through four waveform audio channels, which can each play 16-bit PCM audio. Sprites and spritesheets can be read from &amp;lt;code&amp;gt;.icn&amp;lt;/code&amp;gt; files. Fonts can be read from &amp;lt;code&amp;gt;.ufx&amp;lt;/code&amp;gt; files, with &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; standing in for the given font&#039;s scale (&#039;&#039;&#039;1&#039;&#039;&#039; applies to 8x8 fonts, &#039;&#039;&#039;2&#039;&#039;&#039; applies to 16x16 fonts, and &#039;&#039;&#039;3&#039;&#039;&#039; applies to 24x24 fonts). Sprites, fonts, and audio can all be encoded as raw hex dumps in a project&#039;s source code.&lt;br /&gt;
&lt;br /&gt;
Varvara is designed to be minimal and functional on almost any platform, and can run on various microcontrollers and video game systems. Its own webpage showcases the project running on a Nintendo DS.&lt;br /&gt;
&lt;br /&gt;
== Distribution ==&lt;br /&gt;
&lt;br /&gt;
Programs for Uxn (and by extension, Varvara) are compiled into a &amp;lt;code&amp;gt;.rom&amp;lt;/code&amp;gt; binary format, specifically so that they can be transferred across platforms and devices with little-to-no overhead. There is currently no dedicated platform for hosting Uxn programs.&lt;br /&gt;
&lt;br /&gt;
== Uxn ==&lt;br /&gt;
&lt;br /&gt;
Uxn is a small virtual machine, also created by Hundred Rabbits. It is a stack-based virtual machine, mainly programmed in a Forth-like assembly language called &#039;&#039;&#039;Uxntal&#039;&#039;&#039;. It acts as the central processor of Varvara.&lt;br /&gt;
&lt;br /&gt;
=== Memory ===&lt;br /&gt;
&lt;br /&gt;
Memory in a Uxn computer consists in four separate areas: Main RAM with 64kb, 256 bytes each of: I/O memory, working stack, and return stack. Programs can move stacks into addressable range to allow reading and writing directly into stack memory. In this way, peripherals such as a controller, mouse, and keyboard can be addressed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
! Memory&lt;br /&gt;
| RAM&lt;br /&gt;
| Data&lt;br /&gt;
| 64kb&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
!rowspan=&amp;quot;6&amp;quot;|Stacks&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|Working Stack&lt;br /&gt;
| Data&lt;br /&gt;
| 254 bytes&lt;br /&gt;
|-&lt;br /&gt;
| Error&lt;br /&gt;
| 1 byte&lt;br /&gt;
|-&lt;br /&gt;
| Pointer&lt;br /&gt;
| 1 byte&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|Return Stack&lt;br /&gt;
| Data&lt;br /&gt;
| 254 bytes&lt;br /&gt;
|-&lt;br /&gt;
| Error&lt;br /&gt;
| 1 byte&lt;br /&gt;
|-&lt;br /&gt;
| Pointer&lt;br /&gt;
| 1 byte&lt;br /&gt;
|-&lt;br /&gt;
! I/O&lt;br /&gt;
| Devices&lt;br /&gt;
| Data&lt;br /&gt;
| 256 bytes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each byte in main memory has an address of 16 bits (2 bytes) in size, while each byte in the i/o memory has an address of 8 bits (1 byte) in size. Both can be accessed randomly.&lt;br /&gt;
&lt;br /&gt;
The first 256 bytes of the main memory constitute a section called the &amp;quot;zero page&amp;quot;. this section can be addressed by a single byte and it is meant for data storage during runtime. The main memory stores the program to be executed starting at the 257th byte, or 0x100. This byte is the 0100 starting memory address for a Uxntal program.&lt;br /&gt;
&lt;br /&gt;
== Devices ==&lt;br /&gt;
&lt;br /&gt;
Devices are external systems connected to the Uxn virtual machine by a system that utilizes it, such as Varvara. One machine can access a total of 16 devices, such as the screen, the mouse or the keyboard. Each device has 16 bytes, also called ports, of I/O memory. Vectors are ports holding an address in memory to evaluate when a device event is triggered, such as when the mouse is moved, or a key is pressed.&lt;br /&gt;
&lt;br /&gt;
* 00 - System&lt;br /&gt;
* 10 - Console&lt;br /&gt;
* 20 - Screen&lt;br /&gt;
* 30, 40, 50, 60 - Audio&lt;br /&gt;
* 70 - MIDI&lt;br /&gt;
* 80 - Controller&lt;br /&gt;
* 90 - Mouse&lt;br /&gt;
* a0, b0 - File&lt;br /&gt;
* c0 - Datetime&lt;br /&gt;
* d0 - Unused&lt;br /&gt;
* e0, f0 - Reserved&lt;br /&gt;
&lt;br /&gt;
The two reserved devices can be used for implementation specific features that do not need to be part of the specs, or other Uxn/Varvara instances.&lt;br /&gt;
&lt;br /&gt;
== Uxntal ==&lt;br /&gt;
&lt;br /&gt;
According to its specification by Eiríkr Åsheim, &amp;quot;Uxntal is an 8-bit instruction set for programming the Varvara virtual machine.&amp;quot; Uxntal, also referred to as just &#039;&#039;&#039;Tal&#039;&#039;&#039;, is a concatenative assembly language designed for Uxn. Uxntal source files are encoded into human-readable source files using the &amp;lt;code&amp;gt;.tal&amp;lt;/code&amp;gt; extension, which are then compiled into Uxn-compatible programs.&lt;br /&gt;
&lt;br /&gt;
=== Opcodes ===&lt;br /&gt;
&lt;br /&gt;
Uxn can perform 32 different operations, and each operation has 3 possible modes. The items in the following table include the Program Counter(PC), Memory(M), Devices(D) and Return Stack(rs).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Stack&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Memory&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;BRK/LIT&#039;&#039;&#039; - Literal&lt;br /&gt;
| a b c M[PC+1]&lt;br /&gt;
| &#039;&#039;&#039;LDZ&#039;&#039;&#039; - Load Zeropage&lt;br /&gt;
| a b M[c8]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;INC&#039;&#039;&#039; - Increment&lt;br /&gt;
| a b c+1&lt;br /&gt;
| &#039;&#039;&#039;STZ&#039;&#039;&#039; - Save Zeropage&lt;br /&gt;
| a {M[c8]=b}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;POP&#039;&#039;&#039; - Pop&lt;br /&gt;
| a b&lt;br /&gt;
| &#039;&#039;&#039;LDR&#039;&#039;&#039; - Load Rel&lt;br /&gt;
| a b M[PC+c8]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;NIP&#039;&#039;&#039; - Nip&lt;br /&gt;
| a c&lt;br /&gt;
| &#039;&#039;&#039;STR&#039;&#039;&#039; - Save Rel&lt;br /&gt;
| a {M[PC+c8]=b}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SWP&#039;&#039;&#039; - Swap&lt;br /&gt;
| a c b&lt;br /&gt;
| &#039;&#039;&#039;LDA&#039;&#039;&#039; - Load Abs&lt;br /&gt;
| a b M[c16]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ROT&#039;&#039;&#039; - Rotate&lt;br /&gt;
| c b a&lt;br /&gt;
| &#039;&#039;&#039;STA&#039;&#039;&#039; - Save Abs&lt;br /&gt;
| a {M[c16]=b}&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;DUP&#039;&#039;&#039; - Duplicate&lt;br /&gt;
| a b c c&lt;br /&gt;
| &#039;&#039;&#039;DEI&#039;&#039;&#039; - Device In&lt;br /&gt;
| a b D[c8]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;OVR&#039;&#039;&#039; - Over&lt;br /&gt;
| a b c b&lt;br /&gt;
| &#039;&#039;&#039;DEO&#039;&#039;&#039; - Device Out&lt;br /&gt;
| a {D[c8]=b}&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Logic&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Arithmetic&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;EQU&#039;&#039;&#039; - Equal&lt;br /&gt;
| a b?c&lt;br /&gt;
| &#039;&#039;&#039;ADD&#039;&#039;&#039; - Add&lt;br /&gt;
| a b+c&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;NEQ&#039;&#039;&#039; - Not Equal&lt;br /&gt;
| a b!c&lt;br /&gt;
| &#039;&#039;&#039;SUB&#039;&#039;&#039; - Subtract&lt;br /&gt;
| a b-c&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;GTH&#039;&#039;&#039; - Greater&lt;br /&gt;
| a b&amp;gt;c&lt;br /&gt;
| &#039;&#039;&#039;MUL&#039;&#039;&#039; - Multiply&lt;br /&gt;
| a b*c&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;LTH&#039;&#039;&#039; - Lesser&lt;br /&gt;
| a b&amp;lt;c&lt;br /&gt;
| &#039;&#039;&#039;DIV&#039;&#039;&#039; - Divide&lt;br /&gt;
| a b/c&amp;lt;br /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;JMP&#039;&#039;&#039; - Jump&amp;lt;br /&amp;gt;&lt;br /&gt;
| a b {PC+=c}&lt;br /&gt;
| &#039;&#039;&#039;AND&#039;&#039;&#039; - And&lt;br /&gt;
| a b&amp;amp;c&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;JCN&#039;&#039;&#039; - JumpCond&lt;br /&gt;
| a {(b8)PC+=c}&lt;br /&gt;
| &#039;&#039;&#039;ORA&#039;&#039;&#039; - Or&lt;br /&gt;
| &amp;lt;nowiki&amp;gt;a b|c&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;JSR&#039;&#039;&#039; - JumpStash&lt;br /&gt;
| a b {rs.PC PC+=c}&lt;br /&gt;
| &#039;&#039;&#039;EOR&#039;&#039;&#039; - ExclusiveOr&lt;br /&gt;
| a b^c&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;STH&#039;&#039;&#039; - Stash&lt;br /&gt;
| a b {rs.c}&lt;br /&gt;
| &#039;&#039;&#039;SFT&#039;&#039;&#039; - Shift&lt;br /&gt;
| a b&amp;gt;&amp;gt;c8l&amp;lt;&amp;lt;c8h&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Uxn virtual machine reads one byte at a time from the main memory starting at 0100. The program counter is a 16-bit word that indicates the address of the byte to read next. Each byte read corresponds to an opcode which may cause a change in the stack(s) or the normal flow of the program counter; instead of pointing to the next byte in memory, it can be made to point elsewhere, &amp;quot;jumping&amp;quot; from one place in memory to another. &lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
&lt;br /&gt;
* [https://100r.co/site/uxn.html Official webpage]&lt;br /&gt;
* [https://wiki.xxiivv.com/site/uxn.html Uxn documentation]&lt;br /&gt;
* [https://wiki.xxiivv.com/site/uxn.html Uxntal documentation]&lt;br /&gt;
* [https://wiki.xxiivv.com/site/varvara.html Varvara documentation]&lt;br /&gt;
* [https://compudanzas.net/uxn_tutorial.html Compudanzas&#039; Uxn tutorial]&lt;br /&gt;
&lt;br /&gt;
[[Category: Fantasy computers]]&lt;/div&gt;</summary>
		<author><name>2607:FB90:EC95:618:2C1E:27CC:A1FF:8227</name></author>
	</entry>
</feed>