Working CPU with eight 8-bit registers and eleven commands. Instructions in the project, command list below.

Commands:

LDA r - loads value from register r into accumulator

STA r - stores accumulator value in register r

CLR r - clears register r

INC r - increments the value of register r and replaces into r

DEC r - decrements the value of register r and replaces into r

COM r - stores the complement of the value in register r in the accumulator

ADD r - adds value in register r to the accumulator

SUB r - subtracts accumulator value from value in register r, replaces into accumulator

AND r - stores value of (accumulator AND r) in accumulator

IOR r - stores value of (accumulator OR r) in accumulator [inclusive or]

XOR r - stores value of (accumulator XOR r) in accumulator [exclusive or]

*Eight 8-bit registers: r must be a value between 0 and 7 and refers to the address of the register, not its contents*

**Y**et **A**nother **B**en **E**ater **I**nspired **S**imple **A**s **P**ossible System

I'm following along with the excellent YouTube instructional series Building an 8-bit breadboard computer! by Ben Eater.

Note that he credits the book "Digital Computer Electronics" by Albert Paul Mauvino for many of the SAP (Simple As Possible) ideas.

I'm mostly keeping it the same as his computer except:

- I decided to have an 8-bit address space rather than 4-bits.
- Indirect mode instructions require another register.
- Instructions only take as many clock cycles as they need as opposed to each instruction taking the same number of cycles and shorter instructions wasting the leftover cycles.
- I didn't implement the hex or digital multi-segment displays... man that looked tedious!
- I ended up having to do the microcode using combinational logic rather than EEPROM as the circuitverse EEPROM currently only supports 8 address lines and I needed at least 10

- I added 8 bit x 8 bit multiplication. This also involves a second accumulator register which is used with the primary accumulator to house the 16 bit result.

You can program the ROM to do simple operations like addition and subtraction. To run the program, set the clear input to ground.

The ROM currently performs 5+11-6.

Instruction OP-Code

- LDA - 0x
- ADD - 1x
- Subtract - 2x
- Output - ee
- Halt - ff