![]() |
6 years ago | |
---|---|---|
examples | 6 years ago | |
.clang-format | 6 years ago | |
.gitignore | 6 years ago | |
LICENSE.md | 6 years ago | |
Makefile | 6 years ago | |
README.md | 6 years ago | |
bank.c | 6 years ago | |
bank.h | 6 years ago | |
base.h | 6 years ago | |
cli_main.c | 6 years ago | |
field.c | 6 years ago | |
field.h | 6 years ago | |
gbuffer.c | 6 years ago | |
gbuffer.h | 6 years ago | |
mark.c | 6 years ago | |
mark.h | 6 years ago | |
sim.c | 6 years ago | |
sim.h | 6 years ago | |
tool | 6 years ago | |
tui_main.c | 6 years ago |
README.md
ORCΛ

Each letter of the alphabet is an operation, lowercase letters typically operate on bang(*
), uppercase letters operate on each frame. Bangs can be generated by various operations, such as E
colliding with a 0
, see the bang.orca example. Watch a music video of ORCΛ in action.
C Port for the ORCΛ programming environment, with a commandline interpreter.
Prerequisites
Core library: A C99 compiler (no VLAs required), plus enough libc for malloc
, realloc
, free
, memcpy
and memset
.
Command-line interpreter: The above, plus POSIX.
Interactive terminal UI: The above, plus ncurses (or compatible curses library).
Build
The build script is in bash
. It should work with gcc
(including the musl-gcc
wrapper) and clang
, and will automatically detect your compiler.
Currently known to build on macOS (gcc
, clang
) and Linux (gcc
, musl-gcc
, and clang
, optionally with LLD
).
Not yet tested on Windows, but it's likely that it already works under cygwin
. Further testing will be performed soon.
There is a fire-and-forget make
wrapper around the build script.
Make
make debug # debugging build, binary placed at build/debug/orca
make release # optimized build, binary placed at build/release/orca
make clean # removes build/
Build Script
Run ./tool --help
to see usage info.
./tool build debug tui
# debug build of the terminal ui
# binary placed at build/debug/tui
./tool -c clang-7 build release tui
# build the terminal ui with a compiler named
# clang-7, with optimizations enabled.
# binary placed at build/release/tui
./tool clean
# same as make clean, removes build/
Run
CLI interpreter
The CLI (orca
binary) reads from a file and runs the orca simulation for 1 timestep (default) or a specified number (-t
option) and writes the resulting state of the grid to stdout.
orca [-t timesteps] infile
You can also make orca read from stdin:
echo -e "...\na34\n..." | orca /dev/stdin
Interactive terminal UI
tui [options] [file]
Run the interactive terminal UI, useful for debugging or observing behavior.
Controls
ctrl+q
orctrl+d
orctrl+g
: quit- Arrow keys or
ctrl+h/j/k/l
: move cursor A
-Z
,a
-z
,0
-9
, and other printable characters: write character to grid at cursor- Spacebar: step the simulation one tick
ctrl+u
: undo[
and]
: Adjust cosmetic grid rulers horizontally{
and}
: Adjust cosmetic grid rulers vertically(
and)
: resize grid horizontally_
and+
: resize grid vertically