
About
Conway's Game of Life on a grid is a familiar sight. This is its one dimensional cousin, and on a text screen it turns out to be the more watchable of the two: every generation is a single line of asterisks, and the screen scrolls, so instead of a flat board you get a picture of the colony's whole history unfolding downwards. Blobs appear, spread outwards, weave around each other, knit together into arches and braids, and then thin out and die away.
It is a self booting disc. Put it in drive 0, and the program starts on its own.
What It Does
The first line is random: 39 cells, each either empty or holding a single celled organism shown as an asterisk. Every line after that is the next generation, worked out from the one above it.
A cell looks at the four cells around it, two on each side, and counts how many are alive:
- A living cell with two or four living neighbours survives. With any other number it dies, of loneliness or of overcrowding.
- An empty cell with two or three living neighbours has new life born into it.
That is the whole of it, and it is enough to produce the structures you see. After about twenty generations the colony has usually settled into something static or died out altogether, so the program throws it away, generates a fresh random line, and starts again. It never stops.
Running It
mame -rompath ~/roms einstein -flop1 ~/einstein/1DLIFE.DSK -windowIf you have not set MAME up yet, the site's guide to emulating the Tatung Einstein covers it.
The program asks you to press a key before it begins. That is deliberate, and it is the only input it wants. A program launched by an autoboot disc starts at exactly the same moment every time, so a clock based seed would give the same random line on every run. Counting upwards until a human presses a key gives a genuinely different starting colony each time.
From there it runs by itself. Close MAME or reset the machine to stop it.
Where It Came From
The rules and the original program are Nakazoto's, written in BASIC for the Centurion minicomputer and explained in his video about it. L. Boffin wrote his own version in 6502 assembly for the BBC Micro, then brought it to the Tatung Einstein in C.
On the Einstein it doubles as a worked example. Rather than stopping at Hello World, his GitHub repository walks through the whole business of writing C for the Einstein on a modern machine: compiling with the z88dk cross compiler, writing the result onto a disc image with the Einstein Disc Tools, and booting it in MAME, all driven from one batch file. If you have ever wanted to write something for the Einstein in C, it is the shortest route in that we know of.
About This Disc
The program on this disc was compiled from L. Boffin's source with z88dk 2.4, and written to a freshly formatted single sided disc that autoboots it. Two small changes were made to the source here at TatungBytes before compiling:
- A newline at the end of each generation. Without it the generations ran together on the 40 column screen and the pattern sheared diagonally instead of stacking. Nakazoto's BASIC prints the same newline at line 330.
- The two cells at each end are left alone. The original counted neighbours off the end of the array, so the edges of the colony were fed by whatever happened to be in memory next door.
Everything else is his. The source, with those two changes, is a two line difference from the copy on GitHub.


