Breadboard computer

Original idea from Ben Eater

  • 256 byte RAM
  • 8 bit address register
  • 8 bit program counter
  • Stack/general purpose register
  • Hardware instruction step counter reset
  • Random number generator (LFSR)
  • Clock halt when in program mode
  • 6 bit instruction register, I’m using A0-A2 for step, A3-A8 for instruction and A9-A10 for flags. I use two different EEPROM images
  • Arduino for programming RAM
  • Replaced LED and resistors with network type
  • Decimal or hexadecimal output 

Instruction Set

List of instructions
NOP 0b000000 No operation
LDA 0b000001 Load address->A
ADD 0b000010 Add address
SUB 0b000011 Sub address
STA 0b000100 Store A->address
LDI 0b000101 Load immediate->A
JMP 0b000110 Jump address
JC 0b000111 Jump if carry->address
JZ 0b001000 Jump if zero->address
ADI 0b001001 Add immediate
SUI 0b001010 Sub immediate
LDB 0b001011 Load address->B
RND 0b001100 Random->A
OPM 0b001101 Output Memory address
OUT 0b001110 Output A
LDIS 0b001111 Load immediate->stack
MOAS 0b010000 Move A->Stack
MOSA 0b010001 Move Stack->A
ADS 0b010010 Add A+Stack
SUS 0b010011 Sub A-Stack
STS 0b010100 Store Stack->address
RTS 0b010101 Load address->Stack
STE 0b010110 Store sum->address
STSU 0b010111 Store sub->address
LFA 0b011000 Load from address in A
LFS 0b011001 Load from address in Stack
MAB 0b011010 Load A->B
MOSB 0b011011 Load Stack->B
OUS 0b011100 Output Stack
LOU 0b011101 Output LFSR
JNC 0b011110 Jump if Not Carry
JNZ 0b011111 Jump if Not Zero
CALL 0b100000 Call subroutine
RET 0b100001 Return from subroutine
MOES 0b100010 Move Sum->Stack