A simple virtual game console
Forth Java Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
docs added a maker directive for including raw binary files. Apr 15, 2013
games Correct stack effect comment for `act` ford Feb 1, 2014
src fixed an omission of generics arguments. Nov 1, 2013
tools added java target version information to the standalone build script.… Nov 1, 2013
.gitignore aaand now MASIC has basic (if you'll forgive the pun) graphics support. Nov 14, 2011
LICENSE.txt And y'know, fuck it. May 9, 2012
Readme.txt updated docs and added useful new constants to Lang.fs Feb 3, 2013
build.xml Remove executable permissions from files that aren't executable. Mar 17, 2013
readme.md Update readme.md Feb 17, 2013



Mako is a simple stack-based virtual game console, designed to be as simple as possible to implement. Maker is a compiler for a Forth-like language that targets the Mako VM.

Mako has two stacks- a parameter stack and a return stack. Most MakoVM instructions manipulate the top elements of the parameter stack. Instructions are normally a single word (signed 32-bit integer), but some (like JUMP and CALL) are followed by a second word which provides an argument. The Mako memory layout is controlled by a number of memory-mapped registers starting in the lowest address- 0. In addition to the program counter and stack pointers, Mako has registers which control a pixel-scrollable 31x41 grid of 8x8 background tiles, a set of 256 variable-size sprites, a random number generator, optional character I/O facilities for debugging and an 8-bit audio output port. Some implementations additionally provide simple support for filesystem I/O.

The Maker source files provided in the examples directory can be executed by compiling Maker and then invoking it with a filename and the '--run' flag. Without the flag, Maker will simply print a disassembly of the prepared Mako memory image.

To compile, run ant from the top directory.

To run an example, invoke Maker from the command line:

java -jar dist/Maker.jar /games/Pong/Pong.fs --run

Or use the 'maker' script to save a little typing:

./maker /games/Pong/Pong.fs --run