At VCF East this spring I demonstrated one of my vintage computer systems. My table was placed between two individuals using switches to enter software on their systems.
I was greatly intrigued by this idea, as I had never had a system that could be operated at such a low level.
When I heard that a large exhibit around the COSMAC (RCA 1802) processor would be at VCFMW, I considered that this would be an excellent time to assemble one of the Elf Membership Card kits in order to understand what the systems were all about.
After packing for VCFMW a day early, I found myself with some time the day before. I dug out the membership card, and looked for something interesting to do with a short program and the lights on the front.
I considered a number of things before doing some research into Conway’s Game of Life. Normally a 2D cellular automaton, I wondered if perhaps there wasn’t a 1D form. This led me to Rule 90, which describes the operation of a one dimensional “life form.”
Rule 90 can be characterized by one simple rule.
- If a cell has one and only one live neighbor cell, it will be alive in the next generation.
Initially, I considered the complexity of processing each bit at a time, but quickly realized that this is the XOR of the neighbor bits. As a result, the computation of all the bits can be easily implemented by computing the XOR of the current state shifted left once, and right once. This can be easily implemented by the below program.
The program reads the state of the switches as the initial state of the automaton. It then displays each generation on the LEDs.
00: 90 GHI R0
01: B1 PHI R1
02: F8 F0 LDI F0 ; Temp
04: A1 PLO R1
05: E1 SEX 1
06: 6C INP 4
07: A2 PLO R2 ; Loop: Save current
08: F6 SHR
09: 51 STR R1 ; Save shifted right
0A: F8 02 LDI 02
0C: B3 PHI R3
0D: 23 DEC R3 ; Wait
0E: 93 GHI R3
0F: 3A 0D BNZ Wait
11: 82 GLO R2 ; Get current state
12: FE SHL ; Shift left
13: F3 XOR ; XOR shifted right
14: 51 STR R1 ; Save result
15: 64 OUT 4
16: 21 DEC R1
17: 30 07 BR Loop
F0: 00 ; Temp