logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

munch - munching squares

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.

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:MITAIMemo239,Feb.29,1972.  Beeler, M., Gosper, R.W., and Schroeppel, R.

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

   ITEM146:MUNCHINGSQUARES
       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, ...)

   ITEM147(Schroeppel):
       Munching squares is just views of the graph Y = X XOR T for consecutive values of T = time.

   ITEM148(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.

Name

       munch - munching squares

Options

munch accepts the following options:

       --window
               Draw on a newly-created window.  This is the default.

       --root  Draw on the root window.

       --window-idnumber
               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.

       --visualvisual
               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.

       --delayusecs
               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.

       --clearnumber
               Number of squares to misdraw before clearing the display.  Default: 65.

       --simulnumber
               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.

See Also

X(1), xscreensaver(1),
       https://www.inwap.com/pdp10/hbaker/hakmem/hakmem.html

Synopsis

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]

See Also