Halloween Special: BrainF--k Interpreter With RAM Chip
A Halloween special: BF computer built around a huge RAM chip. No discussion, just a circuit and a control table.
BF computer built with a RAM chip.
ADDRESS STORED VALUE
+--------------+ +-----------------------+
Command CODE ZMBD STEP STATE VECTOR NEXT STEP
-------------------------------------------------------------------------------
+ 000 X0XX 000 000 000 010 000 001
000 X0XX 001 000 000 011 000 010
000 X0XX 010 000 000 010 011 011
000 X0XX 011 000 000 011 011 000
000 X1X0 000 000 000 010 011 001
000 X1X0 001 000 000 011 011 000
000 X1X1 000 000 000 110 011 001
000 X1X1 001 000 000 111 011 000
- 001 X0XX 000 000 000 110 000 001
001 X0XX 001 000 000 111 000 010
001 X0XX 010 000 000 010 011 011
001 X0XX 011 000 000 011 011 000
001 X1X0 000 000 000 010 011 001
001 X1X0 001 000 000 011 011 000
001 X1X1 000 000 000 110 011 001
001 X1X1 001 000 000 111 011 000
> 010 X0XX 000 100 000 000 000 001
010 X0XX 001 000 000 010 001 010
010 X0XX 010 000 000 011 001 011
010 X0XX 011 010 000 100 000 100
010 X0XX 100 010 000 101 000 101
010 X0XX 101 000 000 010 011 110
010 X0XX 110 000 000 011 011 000
010 X1X0 000 000 000 010 011 001
010 X1X0 001 000 000 011 011 000
010 X1X1 000 000 000 110 011 001
010 X1X1 001 000 000 111 011 000
< 011 X0XX 000 100 000 000 000 001
011 X0XX 001 000 000 110 001 010
011 X0XX 010 000 000 111 001 011
011 X0XX 011 010 000 100 000 100
011 X0XX 100 010 000 101 000 101
011 X0XX 101 000 000 010 011 110
011 X0XX 110 000 000 011 011 000
011 X1X0 000 000 000 010 011 001
011 X1X0 001 000 000 011 011 000
011 X1X1 000 000 000 110 011 001
011 X1X1 001 000 000 111 011 000
. 100 X0XX 000 000 000 000 010 001
100 X0XX 001 000 001 000 010 010
100 X0XX 010 000 000 010 011 011
100 X0XX 011 000 000 011 011 000
100 X1X0 000 000 000 010 011 001
100 X1X0 001 000 000 011 011 000
100 X1X1 000 000 000 110 011 001
100 X1X1 001 000 000 111 011 000
, 101 X0XX 000 000 010 000 010 001
101 X0XX 001 000 000 100 000 010
101 X0XX 010 000 000 101 000 011
101 X0XX 011 000 000 010 011 100
101 X0XX 100 000 000 011 011 000
101 X1X0 000 000 000 010 011 001
101 X1X0 001 000 000 011 011 000
101 X1X1 000 000 000 110 011 001
101 X1X1 001 000 000 111 011 000
[ 110 00XX 000 000 000 010 011 001
110 00XX 001 000 000 011 011 000
110 10XX 000 001 000 010 011 001
110 10XX 001 000 000 011 011 000
110 X1X0 000 000 000 010 100 001
110 X1X0 001 000 000 011 100 010
110 X1X0 010 000 000 010 011 011
110 X1X0 011 000 000 011 011 000
110 X101 000 000 000 110 100 001
110 X101 001 000 000 111 100 010
110 X101 010 000 000 110 011 011
110 X101 011 000 000 111 011 000
110 X111 000 001 100 000 010 001
110 X111 001 000 000 010 011 010
110 X111 010 000 000 011 011 000
] 111 00XX 000 001 100 110 011 001
111 00XX 001 000 000 111 011 000
111 10XX 000 000 000 010 011 001
111 10XX 001 000 000 011 011 000
111 X1X1 000 000 000 010 100 001
111 X1X1 001 000 000 011 100 010
111 X1X1 010 000 000 110 011 011
111 X1X1 011 000 000 111 011 000
111 X100 000 000 000 110 100 001
111 X100 001 000 000 111 100 010
111 X100 010 000 000 010 011 011
111 X100 011 000 000 011 011 000
111 X110 000 001 000 000 010 001
111 X110 001 000 000 010 011 010
111 X110 010 000 000 011 011 000
-------------------------------------------------------------------------------
FLAGS = [Zero, Motion, Bracket match, Direction]
STATE VECTOR = [(WRITE_RAM, READ_RAM, TOGGLE_MOTION_FLAG),
(TOGGLE_COUNT_DIRECTION, HLT, TERMCLK),
(LOAD, COUNT, CLK), CTRSEL:3]
CTR 010 -- no counter selected CTR 000 -- memory counter
CTR 001 -- address counter CTR 011 -- program counter
CTR 100 -- bracket counter
===============================================================================