munch — munching squares

Synopsis

munch [-display host:display.screen] [-foreground color] [-background color] [-window] [-root] [-mono] [-install] [-visual visual] [-delay usecs] [-xor] [-noxor] [-clear number] [-simul number] [-classic | -mismunch | -random] [-fps]

Description

The munch program performs the munching squares hack. It picks square size, position, and gravity randomly. It also displays a creatively broken misimplementation of the classic algorithm.

The munching squares hack consists of drawing Y = X XOR T for a range of X and T over and over until all the possible combinations of X and T have come up. It was reportedly discovered by Jackson Wright in 1962 and took 5 instructions of PDP-6 code.

Options

munch accepts the following options:
-window
Draw on a newly-created window. This is the default.
-root
Draw on the root window.
-mono
If on a color display, pretend we're on a monochrome display.
-install
Install a private colormap for the window.
-visual visual
Specify which visual to use. Legal values are the name of a visual class, or the id number (decimal or hex) of a specific visual.
-delay usecs
The delay between steps of the animation, in microseconds. Default: 2500.
-xor
Use the XOR drawing function. This is the default.
-no-xor
Don't use the XOR drawing function.
-clear number
Number of squares to misdraw before clearing the display. Default: 65.
-simul number
Number of squares to misdraw simultaneously. Default: 5.
-classic
Draw classic munching squares only.
-mismunch
Draw "mismunch" only.
-random
Do one or the other.
-fps
Display the current frame rate and CPU load.

Environment

DISPLAY
to get the default host and display number.
XENVIRONMENT
to get the name of a resource file that overrides the global resources stored in the RESOURCE_MANAGER property.

History

HAKMEM: MIT AI Memo 239, Feb. 29, 1972.
Beeler, M., Gosper, R.W., and Schroeppel, R.

"Unless otherwise stated, all computer programs are in PDP-6/10 assembly language."

ITEM 146: MUNCHING SQUARES

Another simple display program. It is thought that this was discovered by Jackson Wright on the RLE PDP-1 circa 1962.

    DATAI 2
    ADDB 1,2
    ROTC 2,-22
    XOR 1,2
    JRST .-4

2=X, 3=Y. Try things like 1001002 in data switches. This also does interesting things with operations other than XOR, and rotations other than -22. (Try IOR; AND; TSC; FADR; FDV(!); ROT -14, -9, -20, ...)
ITEM 147 (Schroeppel):

Munching squares is just views of the graph Y = X XOR T for consecutive values of T = time.

ITEM 148 (Cohen, Beeler):

A modification to munching squares which reveals them in frozen states through opening and closing curtains: insert FADR 2,1 before the XOR. Try data switches =

    4000,,4    1000,,2002    2000,,4    0,,1002

(Notation: <left half>,,<right half>)
Also try the FADR after the XOR, switches = 1001,,1.