Go to file
Matus Laslofi d2e054346f Declare snprintf to fix builds on macOS
For some reason on macOS, the functions `snprintf` and `vsnprintf` are
not in the X/Open 5 (ANSI C89) standard but rather in the X/Open
6 (ISO C99). A simplest solution seems to be to declaring the missing
functions before using them, which is what I did here. Another option
is to use the C99 standard with `#define _XOPEN_SOURCE 600`, which
seems to be an overkill for such a niche issue.

Quoting from the STANDARDS section in `man 3 snprintf` on macOS:

> ...the snprintf() and vsnprintf() functions conform to ISO/IEC
> 9899:1999 (“ISO C99”)...
2023-05-01 09:27:49 -07:00
etc Archived old core 2023-03-12 14:49:58 -07:00
projects (console) Use 0x00 for no-queue 2023-04-17 11:27:54 -07:00
src Declare snprintf to fix builds on macOS 2023-05-01 09:27:49 -07:00
.build.yml Re-enable automated Windows build. 2023-01-31 17:17:11 +00:00
.clang-format * 2021-01-30 14:25:48 -08:00
.gitignore Archived old core 2023-03-12 14:49:58 -07:00
LICENSE init 2021-01-29 11:17:59 -08:00
README.md (uxnemu) Only set zoom scale once on boot 2023-04-17 09:36:55 -07:00
build.sh (uxnemu) Only set zoom scale once on boot 2023-04-17 09:36:55 -07:00
mkfile fix plan 9 build now that we decided to use ifdefs 2023-03-20 16:57:43 +01:00

README.md

Uxn

An assembler and emulator for the Uxn stack-machine, written in ANSI C.

Download binaries

Binaries are available for 64-bit x86 computers running Linux, Windows and macOS.

Build

Linux/OS X

To build the Uxn emulator, you must install SDL2 for your distro. If you are using a package manager:

sudo pacman -Sy sdl2             # Arch
sudo apt install libsdl2-dev     # Ubuntu
sudo xbps-install SDL2-devel     # Void Linux
brew install sdl2                # OS X

Build the assembler and emulator by running the build.sh script. The assembler(uxnasm) and emulator(uxnemu) are created in the ./bin folder.

./build.sh 
	--debug # Add debug flags to compiler
	--format # Format source code
	--install # Copy to ~/bin

If you wish to build the emulator without graphics mode:

cc src/devices/datetime.c src/devices/system.c src/devices/file.c src/uxn.c -DNDEBUG -Os -g0 -s src/uxncli.c -o bin/uxncli

Plan 9

To build the Uxn emulator on 9front, via npe:

mk

If the build fails on 9front because of missing headers or functions, try again after rm -r /sys/include/npe.

Windows

Uxn can be built on Windows with MSYS2. Install by downloading from their website or with Chocolatey with choco install msys2. In the MSYS shell, type:

pacman -S git mingw-w64-x86_64-gcc mingw64/mingw-w64-x86_64-SDL2
export PATH="${PATH}:/mingw64/bin"
git clone https://git.sr.ht/~rabbits/uxn
cd uxn
./build.sh

If you'd like to work with the Console device in uxnemu.exe, run ./build.sh --console instead: this will bring up an extra window for console I/O unless you run uxnemu.exe in Command Prompt or PowerShell.

Getting Started

Emulator

To launch a .rom in the emulator, point the emulator to the target rom file:

bin/uxnemu bin/piano.rom

You can also use the emulator without graphics by using uxncli. You can find additional roms here, you can find prebuilt rom files here.

Assembler

The following command will create an Uxn-compatible rom from an uxntal file. Point the assembler to a .tal file, followed by and the rom name:

bin/uxnasm projects/examples/demos/life.tal bin/life.rom

I/O

You can send events from Uxn to another application, or another instance of uxn, with the Unix pipe. For a companion application that translates notes data into midi, see the shim.

uxnemu orca.rom | shim

GUI Emulator Options

  • -1x Force small scale
  • -2x Force medium scale
  • -3x Force large scale

GUI Emulator Controls

  • F1 toggle zoom
  • F2 toggle debug
  • F3 capture screen
  • F4 load launcher.rom

GUI Buttons

  • LCTRL A
  • LALT B
  • LSHIFT SEL
  • HOME START

Need a hand?

The following resources are a good place to start:

Contributing

Submit patches using git send-email to the ~rabbits/public-inbox mailing list.