Hand-Optimizing VLIW Assembly Language as a Game
HOVALAAG is a small, free, lightweight Zachlike for Windows
(and Linux and Mac using WINE). You edit your assembly-language
programs using your editor of choice, run your program through
the command-line game, and debug it by browsing HTML-formatted
execution traces in a web browser.
Download HOVALAAG 1.08 for Windows
Windows 32-bit command-line program in a .zip file.
Works in Linux and Mac under WINE.
Features:
- retro 12-bit VLIW CPU with 9 independently-controlled units
- 13 programming problems
- Friend leaderboards (documentation)
Changes:
v1.08 fix bug in '-v' option which displayed leaderboard incorrectly
v1.07 add leaderboard support
v1.06 fix bug in log.html dissassembly introduced in 1.04 or 1.05
v1.05 error if characters after end of constant, e.g. "0x0"
v1.04 don't error on hex constants from $800..$FFF
v1.03 -m option to terminate long-running execution
v1.02 fix typo in PARITY description, typo in sample.vasm
v1.01 update in-game documentation re: termination,
and document MAX/MIN OFFSET buffering on IN2/OUT2
Miscellany:
vim syntax hilighting
Don't have any friends playing that you can compare your scores
to? Here are some scores you can compare to (I didn't
put much time into size-optimized):
Best times
Best sizes.
THE PROCESSOR
The game uses a fictional retro Very Long Instruction Word (VLIW)
processor, inspired in part by the MOS Technology 6502 (1970) and
the J1 Forth CPU (2010). The processor features 5 12-bit data
registers, a 1-bit flag, and an 8-bit program counter, each of
which can be independently controlled. In addition there is a
12-bit ALU which can perform one of 13 operations each cycle.
Between a counted loop instruction and the ability to branch in
every instruction, there is little need to unroll loops, making
programs smaller. A write buffer register increases flexibility,
and it is possible to perform both input and output in the same
cycle.
Documentation of the processor.
THE ENVIRONMENT
Programs are written in an abstract environment in which 12-bit
inputs are received on one of two input streams, and 12-bit
outputs are written to one of two output streams. No memory or
long-term storage is available to the processor.
Another fine product of Silver Spaceship Software.
Inspired by Zachtronics TIS-100.
Design consultation and alpha testing by:
Fabian Giesen (@rygorous) and Per Vognesen (@pervognsen).
Beta testers (changes were made post beta-testing, so no blame):
Mike Acton, Alex Austin, Won Chun, Jason Reed, Jon Olick,
Jeff Roberts, Cort Stratton, @clifton_r, @tinyconstruct