munch(6)

munch6

Munching squares

Usage

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

Overview

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.

--window-id number

Draw on the specified 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.

XSCREENSAVER_WINDOW

The window ID to use with --root.

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.

From xscreensaver 6.15-1 in Arch Linux 2026-11-01. Parsed by carta from the page's man source.