d2e054346f
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”)... |
||
---|---|---|
etc | ||
projects | ||
src | ||
.build.yml | ||
.clang-format | ||
.gitignore | ||
build.sh | ||
LICENSE | ||
mkfile | ||
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 zoomF2
toggle debugF3
capture screenF4
load launcher.rom
GUI Buttons
LCTRL
ALALT
BLSHIFT
SELHOME
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.