An 8 Bit Computer built entirely from scratch on breadboards using discrete logic. Based on Ben Eater's 8 bit computer kit. Only has 16 lines of memory available (4 value bits, 4 address bits), so optimization was crucial.
- Custom machine code and assembly language from scratch.
- Includes a C++ file to convert assembly into machine code.
- The EEPROMs are programmed using an arduino nano and a small circuit to connect pins.
Uses an 8 bit bus to connect all areas of CPU. The machine code and equivalent assembly instruction includes the following:
- 0000 ____ (ADD): Add numbers in A and B register and store the value in the A register.
- 0001 ____ (SUB): Subtract numbers in A and B register and store the value in the A register.
- 0002 XXXX (LD): Load value from address (XXXX) into a register (AAAA). Uses two lines of memory.
- ____ AAAA
- 0003 XXXX (LDA): Load value from address (XXXX) into the A register
- 0004 XXXX (LDB): Load value from address (XXXX) into the B register
- 0005 ____ (CPY): Copies value from address (XXXX) to address (YYYY)
- XXXX YYYY
- 0006 (INC): Increment the program counter
- 0007 XXXX (LdM): Load value (XXXX) into memory address register
- 0008 XXXX (JMP): Jump to line (XXXX) in memory
- 0009 XXXX (JpE): Jump to line (XXXX) in memory if A and B registers are equal
- 0010 ____ (DiN): Load value on bus as an integer on the display register (Will display a number from 0-255)
- 0011 ____ (DiW): Load value on bus as a character/w on the display register (Will display a character between 0-127 if the 8th bit is 0, or custom word if 8th bit is 1)
- 0012 ____ (HLT): Halts the program (stops clock input from reaching rest of CPU).
The full circuit looks like this:
In better lighting (though missing program register):


