Go to file
aabacchus d9cdf192a8 add simple file sandboxing below cwd
Uses realpath(3) libc function to find the canonical and longest part of the
pathname which exists, then checking if it starts with cwd.

Prints a warning to stderr if an attempt is made to access a file outside the
sandbox.
2022-06-21 08:03:38 -07:00
etc Swapped opcodes 2022-04-18 09:28:14 -07:00
src add simple file sandboxing below cwd 2022-06-21 08:03:38 -07:00
.clang-format Added Fn keys controls 2022-04-05 20:06:42 -07:00
.gitignore Init 2022-03-26 17:23:52 -07:00
LICENSE Init 2022-03-26 17:23:52 -07:00
README.md Minor housekeeping 2022-06-13 11:21:15 -07:00
build.sh Added window padding 2022-06-15 09:10:13 -07:00

README.md

Uxn11

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

Uxn11/System

This emulator's system device supports changing a stack's location to a page of memory. The default memory mapping is as follows:

  • 0000-ffff, as RAM.
  • 10000-100ff, as working stack.
  • 10100-101ff, as return stack.

To use the last page of ram(0xff00) to host the working stack:

#ff .System/wst DEO

The stack mapping is 254 bytes of data, a byte for the pointer and a byte for an error code.

Building

Graphical

All you need is X11.

gcc -Os -DNDEBUG -g0 -s src/uxn.c src/devices/system.c src/devices/screen.c src/devices/controller.c src/devices/mouse.c src/devices/file.c src/devices/datetime.c src/uxn11.c -o bin/uxn11 -lX11

Terminal

If you wish to build the emulator without graphics mode:

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

Usage

The first parameter is the rom file, the subsequent arguments will be accessible to the rom, via the Console vector.

bin/uxnemu bin/polycat.rom arg1 arg2

Devices

  • 00 system
  • 10 console
  • 20 screen
  • 30 audio(missing)
  • 70 midi(missing)
  • 80 controller
  • 90 mouse
  • a0 file
  • c0 datetime

Emulator Controls

  • F2 print non-empty stacks
  • F4 load boot.rom, or reload rom

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.