8-bit microprocessor in a 7-state vN CA

For discussion of other cellular automata.
Post Reply
User avatar
HactarCE
Posts: 8
Joined: March 16th, 2019, 4:41 pm

8-bit microprocessor in a 7-state vN CA

Post by HactarCE » October 27th, 2020, 11:16 pm

A year and I half ago a made a 7-state rotate4reflect vN wiring CA and built a partial implementation of a Picoblaze microcontroller as a final project for my Digital Electronics class. The rule is called "DECA" for "Digital Electronics Cellular Automaton."

Here is a video I made explaining the rule and the design of the processor.

And here is a GitHub repository containing the rule file and the processor itself. It has 16 8-bit registers and 1024 18-bit instructions. Only JUMP, ADD, ADDC, SUB, SUBC, AND, OR, XOR, and LD instructions are implemented, however more could certainly be implemented.

My goal with this rule was to make something simple to explain and easy to build large circuits in, using modular 4x4 elements with period 4. It does not support universal construction or anything fancy like that, but if you're interested in extending it, or supporting more of the Picoblaze ISA, be my guest! :)
Last edited by HactarCE on October 28th, 2020, 2:01 pm, edited 1 time in total.

Hunting
Posts: 4395
Joined: September 11th, 2017, 2:54 am

Re: 8-bit microprocessor in a 7-state vN CA

Post by Hunting » October 28th, 2020, 6:47 am

That's very interesting!

User avatar
rowett
Moderator
Posts: 3823
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: 8-bit microprocessor in a 7-state vN CA

Post by rowett » October 28th, 2020, 9:07 am

Excellent video and amazing work!

Here is the 7-segment display from your repo:

Code: Select all

x = 193, y = 334, rule = DECA
101.47C$101.C$99.51C$99.C$97.55C$97.C$95.59C$78.18C$78.C16.59C$78.C18.
C$78.C12.C.C3.55C3.C.C$78.C12.C.C5.C55.C.C$78.C10.C.C.C.C3.51C3.C.C.C
.C$78.C10.C.C.C.C5.C51.C.C.C.C$78.C8.C.C.C.C.C.C3.47C3.C.C.C.C.C.C$78.
C8.C.C.C.C.C.C53.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$
78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C
.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.
C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C
.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.
C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C
.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.
C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.
C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.
C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C
49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.
C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C
$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.
C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C
.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.
C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C
.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.
C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C
.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.
C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.
C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C
49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.
C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C
$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.
C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C
.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.
C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C$78.C6.C.C.C.C.C.C.C.C49.C.C.C.C.C.C
.C.C$78.C6.3C.C.C.C.C.3C49.3C.C.C.C.C.3C$78.C8.C.C.C.C.C.C53.C.C.C.C.
C.C$78.C8.3C.C.C.3C3.47C3.3C.C.C.3C$78.C10.C.C.C.C5.C51.C.C.C.C$78.C10.
3C.3C3.51C3.3C.3C$78.C12.C.C5.C55.C.C$78.C12.3C3.55C3.3C$78.C13.C4.C58.
C$78.C.13C2.59C2.10C$78.C.C12.3C69.C$78.C.C.12C.59C11.C$78.C.C.C14.C67.
C$78.C.C.C8.C.C3.55C3.C.C7.C$78.C.C.C8.C.C5.C55.C.C7.C$78.C.C.C6.C.C.
C.C3.51C3.C.C.C.C5.C$78.C.C.C6.C.C.C.C5.C51.C.C.C.C5.C$78.C.C.C4.C.C.
C.C.C.C3.47C3.C.C.C.C.C.C3.C$78.C.C.C4.C.C.C.C.C.C53.C.C.C.C.C.C3.C$78.
C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$78.C.C.C2.C.C.C.C.C.C.C.C49.
C.C.C.C.C.C.C.C.C$78.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$78.C.
C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$78.C.C.C2.C.C.C.C.C.C.C.C49.
C.C.C.C.C.C.C.C.C$78.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$78.C.
C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$78.C.C.C2.C.C.C.C.C.C.C.C49.
C.C.C.C.C.C.C.C.C$78.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$78.C.
C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$78.C.C.C2.C.C.C.C.C.C.C.C49.
C.C.C.C.C.C.C.C.C$78.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$78.C.
C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$78.C.C.C2.C.C.C.C.C.C.C.C49.
C.C.C.C.C.C.C.C.C$78.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$78.C.
C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$78.C.C.C2.C.C.C.C.C.C.C.C49.
C.C.C.C.C.C.C.C.C$78.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$78.C.
C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$78.C.C.C2.C.C.C.C.C.C.C.C49.
C.C.C.C.C.C.C.C.C$78.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$78.C.
C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$20.C57.C.C.C2.C.C.C.C.C.C.C.
C49.C.C.C.C.C.C.C.C.C$20.C57.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C
.C$20.C57.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$20.C57.C.C.C2.C.
C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$19.5C54.C.C.C2.C.C.C.C.C.C.C.C49.C.
C.C.C.C.C.C.C.C$19.C3.C54.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$
19.C3.C54.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$12.C6.C.3C54.C.C
.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$12.C6.C.CFDC53.C.C.C2.C.C.C.C
.C.C.C.C49.C.C.C.C.C.C.C.C.C$8.9C2.C4.C53.C.C.C2.C.C.C.C.C.C.C.C49.C.
C.C.C.C.C.C.C.C$8.C2E5.C2.C.2E.C53.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C
.C.C.C.C$8.2C2.3C.C2.3C2.C53.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C
.C$9.4C.C.C4.4C53.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$7.3C2.D.
D2C2.3C2.D53.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$7.C.2E2C.FC3.
C.2E2C53.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$7.2C2.C2.2C3.2C2.
C54.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$8.C2.2C7.C2.2C53.C.C.C
2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$8.C3.C7.C3.C53.C.C.C2.C.C.C.C.C
.C.C.C49.C.C.C.C.C.C.C.C.C$8.C3.C7.C3.C53.C.C.C2.C.C.C.C.C.C.C.C49.C.
C.C.C.C.C.C.C.C$8.C3.C7.C3.C53.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C
.C.C$8.C3.C7.C3.C53.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$8.C3.C
7.C3.C53.C.C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$8.A3.C7.A3.C53.C.
C.C2.C.C.C.C.C.C.C.C49.C.C.C.C.C.C.C.C.C$12.C11.C53.C.C.C2.C.C.C.C.C.
C.C.C49.C.C.C.C.C.C.C.C.C$12.C11.C53.C.C.C2.3C.C.C.C.C.3C49.3C.C.C.C.
C.3C.C$12.C11.C53.C.C.C4.C.C.C.C.C.C53.C.C.C.C.C.C3.C$12.A11.A53.C.C.
C4.3C.C.C.3C3.47C3.3C.C.C.3C3.C$78.C.C.C6.C.C.C.C5.C51.C.C.C.C5.C$78.
C.C.C6.3C.3C3.51C3.3C.3C5.C$78.C.C.C8.C.C5.C55.C.C7.C$78.C.C.C8.3C3.55C
3.3C7.C$78.C.C.C9.C4.C58.C8.C$78.C.C.C2.8C2.59C2.C8.C$78.C.C.C2.C7.3C
60.C8.C$78.C.C.C2.C.7C.59C2.C8.C$78.C.C.C2.C.C9.C58.C8.C$78.C.C.C2.C.
C9.55C4.C8.C$78.C.C.C2.C.C11.C56.C8.C$78.C.C.C2.C.C11.51C6.C8.C$78.C.
C.C2.C.C13.C54.C8.C$78.C.C.C2.C.C13.47C8.C8.C$78.C.C.C2.C.C68.C8.C$78.
C.C.C2.C.C.68C8.C$78.C.C.C2.C.C.C75.C$78.C.C.C2.C.C.C3.73C$78.C.C.C2.
C.C.C3.C$78.C.C.C2.C.C.C3.C$78.C.C.C2.C.C.C3.C8.43C$78.C.C.C2.C.C.CE2.
CE7.C41.C$78.C.C.C2.C.2CF3CF9C.41C$78.C.C.C2.C2.ECE.ECE9.C$78.C.C.C2.
C3.C3.C10.C5.35C$78.C.C.C2.C3.CE2.CE9.CE4.C33.C$78.C.C.C2.4CF3CF10CF6C
.33C$78.C.C.C5.ECE.ECE8.ECE6.C$78.C.C.C6.C3.C10.C7.C$78.C.C.C6.CE2.CE
9.CE6.CE$78.C.C.7CF3CF10CF7CF16C$78.C.C7.ECE.ECE8.ECE5.ECE14.C$78.C.C
8.C3.C10.C7.C15.C$78.C.C8.CE2.CE9.CE6.CE14.C$78.C.9CF3CF10CF7CF8C7.C$
78.C9.ECE.ECE8.ECE5.ECE6.C7.C$78.C.8C.C3.C10.C7.C7.C7.C$78.C.C6.3C3.2C
9.C7.C7.C7.C$78.C.7C7.C9.C7.C7.C7.C$78.C7.C.3C2.2C9.C7.C7.C7.C$78.C.7C
.C.C2.C10.C7.C7.C7.C$78.C.C7.C.C2.CE9.C7.C7.C7.C$78.C.9C.3CF4C6.C7.C7.
C7.C$78.C13.ECE2.C6.C7.C7.C7.C$32.C45.C14.C2.2C6.C7.C7.C7.C$31.EC45.C
14.C2.C7.C7.C7.C7.C$28.4CF7C38.3C7.6C2.C7.C7.C7.C7.C$28.C2.ECE2.E43.C
7.C7.C7.C7.C7.C7.C$28.C3.C3.C43.C7.C7.C7.C7.C7.C7.C$28.C3.C3.C43.C7.C
7.C7.C7.C7.C7.C$28.C3.5C43.C7.C7.C7.C7.C7.C7.C$28.C3.C47.C7.C7.C7.C7.
C7.C7.C$24.C3.C3.C47.C7.C7.C7.C7.C7.C7.C$23.EC3.C2.EC46.5C3.5C3.5C3.5C
3.5C3.5C3.5C$20.4CF7CF7C39.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C$20.
C2.ECE2.E2.ECE2.D42.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C$20.C3.C3.
C3.C3.C42.C.3C3.C.3C3.C.3C3.C.3C3.C.3C3.C.3C3.C.3C$20.C3.C3.C3.C3.C42.
C.CFDC2.C.CFDC2.C.CFDC2.C.CFDC2.C.CFDC2.C.CFDC2.C.CFDC$20.C3.5C3.5C42.
C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C$20.C3.C7.C46.C.2E.C2.C.2E.C2.
C.2E.C2.C.2E.C2.C.2E.C2.C.2E.C2.C.2E.C$20.C3.C7.C46.3C2.C2.3C2.C2.3C2.
C2.3C2.C2.3C2.C2.3C2.C2.3C2.C$20.C3.C6.EC48.4C4.4C4.4C4.4C4.4C4.4C4.4C
$20.C3.C3.4CF7C39.3C2.D2.3C2.D2.3C2.D2.3C2.D2.3C2.D2.3C2.D2.3C2.D$20.
C3.C3.C2.ECE2.E42.C.2E2C2.C.2E2C2.C.2E2C2.C.2E2C2.C.2E2C2.C.2E2C2.C.2E
2C$20.C3.C3.C3.C3.C42.2C2.C3.2C2.C3.2C2.C3.2C2.C3.2C2.C3.2C2.C3.2C2.C
$20.C3.C3.C3.C3.C43.C2.2C3.C2.2C3.C2.2C3.C2.2C3.C2.2C3.C2.2C3.C2.2C$20.
C3.C3.C3.5C43.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C$20.C3.C3.C3.C47.
C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C$16.C3.C3.C3.C3.C47.C3.C3.C3.
C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C$15.EC3.C2.EC3.C2.EC46.EC3.C2.EC3.C2.E
C3.C2.EC3.C2.EC3.C2.EC3.C2.EC3.C$12.4CF7CF7CF7C20.20CF7CF7CF7CF7CF7CF
7CF4C$12.C2.ECE2.E2.ECE2.D2.ECE2.D23.C18.ECE5.ECE5.ECE5.ECE5.ECE5.ECE
5.ECE$12.C3.C3.C3.C3.C3.C3.C23.C17.E.C5.D.C5.D.C5.D.C5.E.C5.E.C5.E.C$
12.C3.C3.C3.C3.C3.C3.C23.C15.E4C3.E4C3.E4C3.E4C3.E4C3.E4C3.E4C$12.C3.
5C3.5C3.5C23.C11.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C$12.C3.C7.
C7.C27.C10.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC$12.C3.C7.C7.C
27.12CF7CF7CF7CF7CF7CF7CF7CF2C$12.C3.C7.C6.EC27.C.D.D.D.D2.ECE5.ECE5.
ECE5.ECE5.ECE5.ECE5.ECE5.ECE$12.C3.C7.C3.4CF7C20.C.C.C.C.C3.C5.E.C5.D
.C5.D.C5.E.C5.E.C5.E.C5.E.C$12.C3.C7.C3.C2.ECE2.E23.C.11C3.E4C3.E4C3.
E4C3.E4C3.E4C3.E4C3.E4C$12.C3.C7.C3.C3.C3.C23.C11.C4.C2.C4.C2.C4.C2.C
4.C2.C4.C2.C4.C2.C4.C2.C$12.C3.C7.C3.C3.C3.C23.C10.EC4.C.EC4.C.EC4.C.
EC4.C.EC4.C.EC4.C.EC4.C.EC$12.C3.C7.C3.C3.5C23.12CF7CF7CF7CF7CF7CF7CF
7CF2C$12.C3.C7.C3.C3.C27.C.E.D.D.D2.ECE5.ECE5.ECE5.ECE5.ECE5.ECE5.ECE
5.ECE$12.C3.C7.C3.C3.C27.C.C.C.C.C3.C5.D.C5.E.C5.E.C5.E.C5.E.C5.D.C5.
E.C$12.C3.C6.EC3.C2.EC27.C.11C3.E4C3.E4C3.E4C3.E4C3.E4C3.E4C3.E4C$12.
C3.C3.4CF7CF7C20.C11.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C$12.C
3.C3.C2.ECE2.E2.ECE2.D23.C10.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.
C.EC$12.C3.C3.C3.C3.C3.C3.C23.12CF7CF7CF7CF7CF7CF7CF7CF2C$12.C3.C3.C3.
C3.C3.C3.C23.C.D.E.D.D2.ECE5.ECE5.ECE5.ECE5.ECE5.ECE5.ECE5.ECE$12.C3.
C3.C3.5C3.5C23.C.C.C.C.C3.C5.E.C5.D.C5.D.C5.E.C5.E.C5.E.C5.D.C$12.C3.
C3.C3.C7.C27.C.11C3.E4C3.E4C3.E4C3.E4C3.E4C3.E4C3.E4C$12.C3.C3.C3.C7.
C27.C11.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C$12.C3.C3.C3.C6.EC
27.C10.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC$12.C3.C3.C3.C3.4C
F7C20.12CF7CF7CF7CF7CF7CF7CF7CF2C$12.C3.C3.C3.C3.C2.ECE2.E23.C.E.E.D.
D2.ECE5.ECE5.ECE5.ECE5.ECE5.ECE5.ECE5.ECE$12.C3.C3.C3.C3.C3.C3.C23.C.
C.C.C.C3.C5.D.C5.D.C5.E.C5.E.C5.E.C5.E.C5.E.C$12.C3.C3.C3.C3.C3.C3.C23.
C.11C3.E4C3.E4C3.E4C3.E4C3.E4C3.E4C3.E4C$12.C3.C3.C3.C3.C3.5C23.C11.C
4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C$12.C3.C3.C3.C3.C3.C27.C10.
EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC$8.C3.C3.C3.C3.C3.C3.C27.
12CF7CF7CF7CF7CF7CF7CF7CF2C$7.EC3.C2.EC3.C2.EC3.C2.EC27.C.D.D.E.D2.EC
E5.ECE5.ECE5.ECE5.ECE5.ECE5.ECE5.ECE$4.4CF7CF7CF7CF7C20.C.C.C.C.C3.C5.
E.C5.E.C5.E.C5.D.C5.E.C5.E.C5.E.C$4.C2.ECE2.E2.ECE2.D2.ECE2.D2.ECE2.D
23.C.11C3.E4C3.E4C3.E4C3.E4C3.E4C3.E4C3.E4C$4.C3.C3.C3.C3.C3.C3.C3.C3.
C23.C11.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C$4.C3.C3.C3.C3.C3.
C3.C3.C3.C23.C10.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC$4.C3.5C
3.5C3.5C3.5C23.12CF7CF7CF7CF7CF7CF7CF7CF2C$4.C3.C7.C7.C7.C27.C.E.D.E.
D2.ECE5.ECE5.ECE5.ECE5.ECE5.ECE5.ECE5.ECE$4.C3.C7.C7.C7.C27.C.C.C.C.C
3.C5.E.C5.E.C5.E.C5.E.C5.D.C5.E.C5.E.C$4.C3.C7.C7.C6.EC27.C.11C3.E4C3.
E4C3.E4C3.E4C3.E4C3.E4C3.E4C$4.C3.C7.C7.C3.4CF7C20.C11.C4.C2.C4.C2.C4.
C2.C4.C2.C4.C2.C4.C2.C4.C2.C$4.C3.C7.C7.C3.C2.ECE2.E23.C10.EC4.C.EC4.
C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC$4.C3.C7.C7.C3.C3.C3.C23.12CF7CF7CF
7CF7CF7CF7CF7CF2C$4.C3.C7.C7.C3.C3.C3.C23.C.D.E.E.D2.ECE5.ECE5.ECE5.E
CE5.ECE5.ECE5.ECE5.ECE$4.C3.C7.C7.C3.C3.5C23.C.C.C.C.C3.C5.E.C5.E.C5.
E.C5.E.C5.E.C5.E.C5.E.C$4.C3.C7.C7.C3.C3.C27.C.11C3.E4C3.E4C3.E4C3.E4C
3.E4C3.E4C3.E4C$4.C3.C7.C7.C3.C3.C27.C11.C4.C2.C4.C2.C4.C2.C4.C2.C4.C
2.C4.C2.C4.C2.C$4.C3.C7.C6.EC3.C2.EC27.C10.EC4.C.EC4.C.EC4.C.EC4.C.EC
4.C.EC4.C.EC4.C.EC$4.C3.C7.C3.4CF7CF7C20.12CF7CF7CF7CF7CF7CF7CF7CF2C$
4.C3.C7.C3.C2.ECE2.E2.ECE2.D23.C.E.E.E.D2.ECE5.ECE5.ECE5.ECE5.ECE5.EC
E5.ECE5.ECE$4.C3.C7.C3.C3.C3.C3.C3.C23.C.C.C.C.C3.C5.E.C5.E.C5.E.C5.D
.C5.D.C5.D.C5.D.C$4.C3.C7.C3.C3.C3.C3.C3.C23.C.11C3.E4C3.E4C3.E4C3.E4C
3.E4C3.E4C3.E4C$4.C3.C7.C3.C3.5C3.5C23.C11.C4.C2.C4.C2.C4.C2.C4.C2.C4.
C2.C4.C2.C4.C2.C$4.C3.C7.C3.C3.C7.C27.C10.EC4.C.EC4.C.EC4.C.EC4.C.EC4.
C.EC4.C.EC4.C.EC$4.C3.C7.C3.C3.C7.C27.12CF7CF7CF7CF7CF7CF7CF7CF2C$4.C
3.C7.C3.C3.C6.EC27.C.D.D.D.E2.ECE5.ECE5.ECE5.ECE5.ECE5.ECE5.ECE5.ECE$
4.C3.C7.C3.C3.C3.4CF7C20.C.C.C.C.C3.C5.E.C5.D.C5.E.C5.E.C5.E.C5.E.C5.
E.C$4.C3.C7.C3.C3.C3.C2.ECE2.E23.C.11C3.E4C3.E4C3.E4C3.E4C3.E4C3.E4C3.
E4C$4.C3.C7.C3.C3.C3.C3.C3.C23.C11.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C
2.C4.C2.C$4.C3.C7.C3.C3.C3.C3.C3.C23.C10.EC4.C.EC4.C.EC4.C.EC4.C.EC4.
C.EC4.C.EC4.C.EC$4.C3.C7.C3.C3.C3.C3.5C23.12CF7CF7CF7CF7CF7CF7CF7CF2C
$4.C3.C7.C3.C3.C3.C3.C27.C.E.D.D.E2.ECE5.ECE5.ECE5.ECE5.ECE5.ECE5.ECE
5.ECE$4.C3.C7.C3.C3.C3.C3.C27.C.C.C.C.C3.C5.E.C5.D.C5.E.C5.E.C5.D.C5.
E.C5.E.C$4.C3.C6.EC3.C2.EC3.C2.EC27.C.11C3.E4C3.E4C3.E4C3.E4C3.E4C3.E
4C3.E4C$4.C3.C3.4CF7CF7CF7C20.C11.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.
C4.C2.C$4.C3.C3.C2.ECE2.E2.ECE2.D2.ECE2.D23.C10.EC4.C.EC4.C.EC4.C.EC4.
C.EC4.C.EC4.C.EC4.C.EC$4.C3.C3.C3.C3.C3.C3.C3.C3.C23.12CF7CF7CF7CF7CF
7CF7CF7CF2C$4.C3.C3.C3.C3.C3.C3.C3.C3.C23.C.D.E.D.E2.ECE5.ECE5.ECE5.E
CE5.ECE5.ECE5.ECE5.ECE$4.C3.C3.C3.5C3.5C3.5C23.C.C.C.C.C3.C5.D.C5.E.C
5.E.C5.D.C5.D.C5.E.C5.E.C$4.C3.C3.C3.C7.C7.C27.C.11C3.E4C3.E4C3.E4C3.
E4C3.E4C3.E4C3.E4C$4.C3.C3.C3.C7.C7.C27.C11.C4.C2.C4.C2.C4.C2.C4.C2.C
4.C2.C4.C2.C4.C2.C$4.C3.C3.C3.C7.C6.EC27.C10.EC4.C.EC4.C.EC4.C.EC4.C.
EC4.C.EC4.C.EC4.C.EC$4.C3.C3.C3.C7.C3.4CF7C20.12CF7CF7CF7CF7CF7CF7CF7C
F2C$4.C3.C3.C3.C7.C3.C2.ECE2.E23.C.E.E.D.E2.ECE5.ECE5.ECE5.ECE5.ECE5.
ECE5.ECE5.ECE$4.C3.C3.C3.C7.C3.C3.C3.C23.C.C.C.C.C3.C5.E.C5.E.C5.E.C5.
E.C5.D.C5.D.C5.E.C$4.C3.C3.C3.C7.C3.C3.C3.C23.C.11C3.E4C3.E4C3.E4C3.E
4C3.E4C3.E4C3.E4C$4.C3.C3.C3.C7.C3.C3.5C23.C11.C4.C2.C4.C2.C4.C2.C4.C
2.C4.C2.C4.C2.C4.C2.C$4.C3.C3.C3.C7.C3.C3.C27.C10.EC4.C.EC4.C.EC4.C.E
C4.C.EC4.C.EC4.C.EC4.C.EC$4.C3.C3.C3.C7.C3.C3.C27.12CF7CF7CF7CF7CF7CF
7CF7CF2C$4.C3.C3.C3.C6.EC3.C2.EC27.C.D.D.E.E2.ECE5.ECE5.ECE5.ECE5.ECE
5.ECE5.ECE5.ECE$4.C3.C3.C3.C3.4CF7CF7C20.C.C.C.C.C3.C5.E.C5.E.C5.D.C5.
E.C5.E.C5.D.C5.E.C$4.C3.C3.C3.C3.C2.ECE2.E2.ECE2.D23.C.11C3.E4C3.E4C3.
E4C3.E4C3.E4C3.E4C3.E4C$4.C3.C3.C3.C3.C3.C3.C3.C3.C23.C11.C4.C2.C4.C2.
C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C$4.C3.C3.C3.C3.C3.C3.C3.C3.C23.C10.EC4.
C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC$4.C3.C3.C3.C3.C3.5C3.5C23.12C
F7CF7CF7CF7CF7CF7CF7CF2C$4.C3.C3.C3.C3.C3.C7.C27.C.E.D.E.E2.ECE5.ECE5.
ECE5.ECE5.ECE5.ECE5.ECE5.ECE$4.C3.C3.C3.C3.C3.C7.C27.C.C.C.C.C3.C5.D.
C5.E.C5.E.C5.D.C5.D.C5.D.C5.D.C$4.C3.C3.C3.C3.C3.C6.EC27.C.11C3.E4C3.
E4C3.E4C3.E4C3.E4C3.E4C3.E4C$4.C3.C3.C3.C3.C3.C3.4CF7C20.C11.C4.C2.C4.
C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C$4.C3.C3.C3.C3.C3.C3.C2.ECE2.E23.C10.
EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC$4.C3.C3.C3.C3.C3.C3.C3.C
3.C23.12CF7CF7CF7CF7CF7CF7CF7CF2C$4.C3.C3.C3.C3.C3.C3.C3.C3.C23.C.D.E
.E.E2.ECE5.ECE5.ECE5.ECE5.ECE5.ECE5.ECE5.ECE$4.C3.C3.C3.C3.C3.C3.C3.5C
23.C.C.C.C.C3.C5.E.C5.E.C5.E.C5.E.C5.E.C5.E.C5.D.C$4.C3.C3.C3.C3.C3.C
3.C3.C27.C.11C3.E4C3.E4C3.E4C3.E4C3.E4C3.E4C3.E4C$4.C3.C3.C3.C3.C3.C3.
C3.C27.C11.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C4.C2.C$4.C2.EC3.C2.EC
3.C2.EC3.C2.EC27.C10.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC4.C.EC$8CF
7CF7CF7CF7C20.12CF7CF7CF7CF7CF7CF7CF7CF2C$C6.ECE2.D2.ECE2.D2.ECE2.D2.
ECE2.D23.C.E.E.E.E2.ECE5.ECE5.ECE5.ECE5.ECE5.ECE5.ECE5.ECE$C7.C3.C3.C
3.C3.C3.C3.C3.C23.C.C.C.C.C3.C7.C7.C7.C7.C7.C7.C7.C$C7.C3.C3.C3.C3.C3.
C3.C3.C23.C.C.C.C.C3.C$C7.5C3.5C3.5C3.5C23.C.11C$C7.C7.C7.C7.C27.C11.
C$C7.C7.C7.C7.C27.C11.C$8.C7.C7.C7.C27.C10.EC$8.C7.C7.C7.C27.12CF120C
$8.C7.C7.C7.C27.C10.ECE118.C$8.C7.C7.C7.C27.C11.C119.C$8.C7.C7.C7.C27.
C11.C119.C$8.C7.C7.C7.C27.C3.9C3.113C3.C$8.C7.C7.C7.C27.C3.C7.C3.C111.
C3.C$8.C7.C7.C7.C27.C3.C7.C3.C111.C3.C$16.C7.C7.C27.C3.C7.C3.C111.C3.
C$16.C7.C7.C27.C3.5C3.C3.C111.C3.C$16.C7.C7.C27.C7.C3.C3.C111.C3.C$16.
C7.C7.C27.C7.C3.C3.C109.E.C.E.C$16.C7.C7.C27.C7.C3.C3.C109.E3CE.C$16.
C7.C7.C27.C3.5C3.5C107.4C.C2.C$16.C7.C7.C27.A3.C119.C4.C2.C$16.C7.C7.
C27.B3.C119.2CE3C2.C$24.C7.C27.C3.C119.C2.2C3.C$24.C7.C27.C3.5C115.C2.
3C2.C$24.C7.C27.C7.C115.C4.C2.C$24.C7.C27.C7.C115.C3.2C2.C$24.C7.C27.
C7.C115.C3.C3.C$24.C7.C27.C3.5C115.C3.5C$24.C7.C27.C3.C119.C3.C$24.C7.
C27.C3.C119.C3.C$32.C27.C3.C119.C3.C$32.C27.C3.121C3.C$32.C27.C127.C$
32.C27.C127.C$32.C27.C127.C$32.C27.129C$32.C$32.C!

User avatar
blah
Posts: 311
Joined: April 9th, 2016, 7:22 pm

Re: 8-bit microprocessor in a 7-state vN CA

Post by blah » October 28th, 2020, 9:40 am

Added to the list.

Here's a Lua script to load the .mem files in Golly because I didn't want to deal with getting the Python program to work.

Code: Select all

--[[
	deca-asm.lua
	blah 2020

	A script to load data into Hactar's computer's ROM.
	Hacked together in a few hours.
]]

local g=golly()
g.warn("Ensure that data to load is in the clipboard, then press OK.")
prog = g.getclipstr()
-- write hex data
rom = {}
idx = 0
while true do -- for each line
	local new_idx = string.find(prog, "\n", idx+1)
	if new_idx == nil then
		break
	end
	local line = string.sub(prog,idx+1,new_idx-1)
	if string.sub(line,1,1) ~= "@" then
		--g.warn("<"..tonumber("0x"..line)..">")
		rom[#rom+1] = tonumber("0x"..line)
	end
	idx = new_idx
end
top, left = 47, 140 -- location of yellow '+'
for col = 1, 16 do
	for row = 1, 64 do
		-- get 18 bit instruction to draw
		local wnum = rom[(col-1)*64+row]
		if wnum == undefined then
			wnum = 0 -- default value
		end
		-- rotate depending on appropriate temporal offset
		-- equation derived via trial and error, and looking at Hactar's video,
		-- where counting.mem can be seen loaded in
		local t_off = -3 + (row-1)*8 - (math.floor(row/2)) - ((row-1)%2)*9 + (col-1)*10
		local w = {}
		for bit = 0, 17 do
			w[(bit+t_off)%18 + 1] = wnum%2
			wnum = math.floor(wnum/2)
		end
		-- draw electrons
		local x = left+21+(col-1)*40
		local y = top+(row-1)*6

		-- the electron stream is p4, but the temporal displacement between
		-- rows is 6 steps. The LCM of 4 and 6 is 12, which is 2 rows, so it
		-- suffices to deal with only even and odd rows.
		if row%2 == 1 then
			goto odd_row
		else
			goto even_row
		end

		::odd_row::
		for bit = 1, 9 do
			if w[bit] == 1 then
				g.setcell(x+1,y, 1)
				g.setcell(x+2,y, 2)
			else
				g.setcell(x+1,y, 3)
				g.setcell(x+2,y, 3)
			end
			if w[19-bit] == 1 then
				g.setcell(x,y+2, 2)
				g.setcell(x+1,y+2, 1)
			else
				g.setcell(x,y+2, 3)
				g.setcell(x+1,y+2, 3)
			end
			x = x + 4
		end
		goto loop_end

		::even_row::
		if w[18] == 1 then
			g.setcell(x,y, 2)
			g.setcell(x,y+1, 1)
		else
			g.setcell(x,y, 3)
			g.setcell(x,y+1, 3)
		end
		x = x + 2
		for bit = 1, 8 do
			if w[bit] == 1 then
				g.setcell(x+1,y, 1)
				g.setcell(x+2,y, 2)
			else
				g.setcell(x+1,y, 3)
				g.setcell(x+2,y, 3)
			end
			if w[18-bit] == 1 then
				g.setcell(x,y+2, 2)
				g.setcell(x+1,y+2, 1)
			else
				g.setcell(x,y+2, 3)
				g.setcell(x+1,y+2, 3)
			end
			x = x + 4
		end
		if w[9] == 1 then
			g.setcell(x,y+1, 1)
			g.setcell(x,y+2, 2)
		else
			g.setcell(x,y+1, 3)
			g.setcell(x,y+2, 3)
		end
		::loop_end::
	end
end
Also using "little endian" and "big endian" to refer to the organisation of bits in a byte rather than bytes in a word stored in memory is weird to me.

Overall in my opinion this is a good computer.
succ

Yoel
Posts: 396
Joined: July 2nd, 2020, 1:02 am
Location: Electronic jungle
Contact:

Re: 8-bit microprocessor in a 7-state vN CA

Post by Yoel » October 29th, 2020, 3:05 am

Amazing! It's a much better design than the famous Wireworld computer, which does not have an assembler and has a very minimalistic peculiar instruction set, although I am a fan of OISC (one instruction set computers) and invented one, implemented as a virtual machine with an assembler in Common Lisp.

Your make-rom.py script seems to be buggy though. I tried to run it on Python 2.7.18 under Debian, using your .mem files, and I keep getting the following error:

File "./make-rom.py", line 23
print("Warning: MEM file is longer than 1024 instructions; truncating to 1024 instructions", file=sys.stderr)
^
SyntaxError: invalid syntax


Your should also provide the opbasm assembler in your Github repository or at least a link to it.

Another question: Do you have a tool for automatic loading of .mem files into the CPU? How do you actually program your computer? Inserting the "electrons" by hand is tedious. That's why we don't see other programs besides the primes on the Wireworld computer...

User avatar
PHPBB12345
Posts: 1096
Joined: August 5th, 2015, 11:55 pm
Contact:

Re: 8-bit microprocessor in a 7-state vN CA

Post by PHPBB12345 » October 29th, 2020, 3:47 am

Logic gates:

Code: Select all

x = 84, y = 28, rule = DECA
15C.A14C.A14C$7.D15.D15.D$7.C15.C15.C10.3A2.A3.A.4A$7.C15.C15.C9.A3.A
.2A2.A.A3.A$7.C15.C15.C9.5A.A.A.A.A3.A$7.C15.C15.C9.A3.A.A2.2A.A3.A$
7.C15.C15.C9.A3.A.A3.A.4A$7.A15.C15.A3$15C.A14C.A14C$7.E15.E15.E$7.C
15.C15.C10.3A2.A3.A.4A2.A3.A2.3A2.5A$7.C15.C15.C9.A3.A.2A2.A.A3.A.2A
2.A.A3.A3.A$7.C15.C15.C9.5A.A.A.A.A3.A.A.A.A.A3.A3.A$7.C15.C15.C9.A3.
A.A2.2A.A3.A.A2.2A.A3.A3.A$7.C15.C15.C9.A3.A.A3.A.4A2.A3.A2.3A4.A$7.A
15.C15.A3$15C.A14C.A14C$6.2C14.2C14.2C$7.C15.C15.C9.A3.A2.3A2.4A$7.C
15.C15.C10.A.A2.A3.A.A3.A$7.C15.C15.C11.A3.A3.A.4A$7.C15.C15.C10.A.A
2.A3.A.A3.A$7.C15.C15.C9.A3.A2.3A2.A3.A$7.A15.C15.A!
Slow clock:

Code: Select all

x = 85, y = 4, rule = DECA
3C2.3C.3C.3C.3C.3C.3C.3C.3C.3C.3C.3C.3C.3C.3C.3C.3C$C.C2.C.E.C.E.C.E.
C.E.C.E.C.E.C.E.C.E.C.E.C.E.C.E.C.E.C.E.C.E.C.E.C.E$BA83C$3.3C.3C.3C.
3C.3C.3C.3C.3C.3C.3C.3C.3C.3C.3C.3C.3C!

wildmyron
Posts: 1544
Joined: August 9th, 2013, 12:45 am
Location: Western Australia

Re: 8-bit microprocessor in a 7-state vN CA

Post by wildmyron » October 29th, 2020, 11:30 am

Yoel wrote:
October 29th, 2020, 3:05 am
Your make-rom.py script seems to be buggy though. I tried to run it on Python 2.7.18 under Debian, using your .mem files, and I keep getting the following error:

File "./make-rom.py", line 23
print("Warning: MEM file is longer than 1024 instructions; truncating to 1024 instructions", file=sys.stderr)
^
SyntaxError: invalid syntax
That error is because make-rom.py is written with Python3 features but you are using Python2. Easiest solution would be if you could run it with Python3, but it doesn't look like there would be too many changes required to make it Py2 compatible.
Your should also provide the opbasm assembler in your Github repository or at least a link to it.
There's a link in the programs/README.md file
Another question: Do you have a tool for automatic loading of .mem files into the CPU? How do you actually program your computer? Inserting the "electrons" by hand is tedious. That's why we don't see other programs besides the primes on the Wireworld computer...
I'm pretty sure that's what make-rom.py is meant to do, but I haven't tried it myself.
The 5S project (Smallest Spaceships Supporting Specific Speeds) is now maintained by AforAmpere. The latest collection is hosted on GitHub and contains well over 1,000,000 spaceships.

Semi-active here - recovering from a severe case of LWTDS.

Yoel
Posts: 396
Joined: July 2nd, 2020, 1:02 am
Location: Electronic jungle
Contact:

Re: 8-bit microprocessor in a 7-state vN CA

Post by Yoel » October 29th, 2020, 9:30 pm

wildmyron wrote:
October 29th, 2020, 11:30 am
I'm pretty sure that's what make-rom.py is meant to do, but I haven't tried it myself.
It does work with Python3 and produces a partial product that still needs to be manually inserted into the CPU. This is the Fibonacci program produced by the script:

Code: Select all

x = 63, y = 282, rule = DECA
6$36.AB2$19.BA22.BA4$34.AB6$20.AB6.AB2$15.BA4$22.AB$45.A$17.BA26.B4$
16.AB10.AB10.AB2$11.BA10.BA2.BA4$22.AB6.AB2.AB2.AB2$29.BA6.BA2.BA6$
35.BA5$45.A$29.BA10.BA2.B6$31.BA10.BA4$34.AB6.AB2$37.BA2.BA6$31.BA2.B
A6.BA4$38.AB2.AB2$37.BA2.BA4$40.AB2.AB2$43.BA4$34.AB2.AB2.AB2$25.BA6.
BA4$28.AB6.AB2$15.BA22.BA2.BA4$14.AB6.AB6.AB2.AB6.AB$45.A$17.BA10.BA
2.BA2.BA6.B4$28.AB2.AB2.AB2.AB2.AB2$31.BA2.BA6.BA4$11.B2.AB2.AB10.AB
2.AB6.AB$11.A5$12.AB14.AB2$15.BA22.BA4$11.B10.AB6.AB2.AB2.AB$11.A$13.
BA6.BA6.BA10.BA4$16.AB22.AB2$19.BA2.BA6.BA2.BA4$11.B18.AB6.AB2.AB$11.
A33.A$13.BA10.BA6.BA10.B4$12.AB2.AB26.AB2$15.BA2.BA6.BA2.BA6.BA4$14.A
B6.AB2$17.BA2.BA2.BA2.BA2.BA4$16.AB14.AB2.AB6.AB2$27.BA2.BA10.BA4$14.
AB2.AB2.AB10.AB6.AB2$13.BA18.BA4$20.AB6.AB6.AB2.AB2$27.BA2.BA6.BA4$
14.AB2.AB6.AB2.AB$45.A$37.BA6.B4$16.AB6.AB10.AB2.AB2$19.BA2.BA10.BA4$
11.B6.AB2.AB6.AB2.AB$11.A$17.BA4$16.AB2.AB2.AB2.AB2.AB2.AB2.AB2$39.BA
2.BA4$18.AB2.AB6.AB2$13.BA2.BA6.BA2.BA4$16.AB14.AB10.AB2$19.BA6.BA14.
BA4$11.B$11.A$21.BA2.BA6.BA6.BA4$28.AB2$15.BA14.BA2.BA6.BA4$11.B6.AB$
11.A33.A$21.BA2.BA10.BA6.B4$20.AB2$15.BA6.BA2.BA2.BA2.BA2.BA4$11.B18.
AB6.AB2.AB$11.A$33.BA2.BA4$28.AB6.AB2$19.BA6.BA10.BA4$18.AB6.AB$45.A$
13.BA30.B4$12.AB6.AB2.AB6.AB2.AB6.AB6$14.AB2.AB6.AB2.AB6.AB2.AB2$13.B
A2.BA4$12.AB6.AB2.AB6.AB6.AB2$11.BA2.BA4$11.B14.AB2.AB$11.A5$20.AB10.
AB2.AB6.AB2$15.BA!

Post Reply