Conway's Game of Life - 1988 version

discussion of beeb/electron applications, languages, utils and educational s/w
Post Reply
User avatar
BigEd
Posts: 2591
Joined: Sun Jan 24, 2010 10:24 am
Location: West
Contact:

Conway's Game of Life - 1988 version

Post by BigEd » Wed Nov 02, 2016 12:02 pm

As mentioned in passing here, a friend of mine who wishes to remain anonymous has passed on some images of disks containing, hopefully, sources and binaries for his Life program from 1988. He had a Beeb (perhaps a Master) and a cheese wedge 6502 copro, I think.

It turns out the sources are not legal for Acorn's known versions of Basic - see that thread - but we can probably get them to assemble and run, and perhaps this thread is a good place to discuss the algorithm and coding technique and to show any results.

See attached for a recreated disk image. The contents of the original look like this:

Code: Select all

Disk title: New Disc4 #2 (92)  Disk size: &190 - 100K
Boot Option: 0 (None)   File count: 8

Filename:  Lck Lo.add Ex.add Length Sct
$.snacko       00A000 00A000 001732 151
$.6HUNT        000500 000500 006763 0E9
$.SNARK        000500 000500 003C1A 08D
S.SCREEN       000500 000500 00332F 059
O.Screen       FF21DE FF21DE 000956 026
$.             00A000 00A000 00150D 00E
$.BMK          000800 008023 000098 007
$.GRIDDO       000800 008023 0002B4 004
Edit: more discussion over here.
Attachments
Life88.zip
(23.25 KiB) Downloaded 29 times
Last edited by BigEd on Sun Jan 20, 2019 7:25 am, edited 1 time in total.

User avatar
hoglet
Posts: 8446
Joined: Sat Oct 13, 2012 6:21 pm
Location: Bristol
Contact:

Re: Conway's Game of Life - 1988 version

Post by hoglet » Wed Nov 02, 2016 12:45 pm

It does seem that there are a couple of pre-compiled versions on disk that actually run. The clue was the load/exec address of 0000A000.

One is called $.SNACKO the other is called "$." You need to rename the "$." one (e.g. in a binary editor or in DFS Explorer, say to $.TEST) for it to be runnable.

When you run them you get a single flashing dot, and a > cursor.

I think $.TEST is the more recent, and more functional of the two. It looks like the source for this is "$.6HUNT", as you can see the command processor in this code.

The commands I have sussed so far are:

Cursor keys move the dot around
Cursor keys with shift move the viewport around
F0 - clear cell
F1 - set cell
F2 - home cursor
F3 - origin to cursor
F4 - clear all cells
F5 - toggle 4-line text window - not found a purpose for this yet
F6 - Mode 4 - keeps the current cells intact
F7 - Mode 7- keeps the current cells intact
F8 - Run multiple generations
F9 - Run single generation

I've managed to run an r-pentomino to 1100 generations:
- in 80 seconds at 3MHz (our list life is currently 207.8s - we previously reported as 161s, so we have slowed down, I suspect the keyboard scanning but will investigate)
- in 26 seconds at 225MHz (our list life is currently 5.8s)

So it looks like the engine may be 2x faster, but the display updates 4x slower.

The universe does seem to be larger than the screen.

$.SNACKO I think is the older of the two - the keys below do work, but F0/F1 are awkward, as the need to be used together with a cursor key.

Post Reply