Skip to content

An 8 Bit Computer built entirely from scratch on breadboards using discrete logic. Custom machine code and assembly language from scratch. Based on Ben Eater's 8 bit computer kit.

Notifications You must be signed in to change notification settings

JonahZil/8-Bit-Computer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

8-Bit-Computer

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.

ezgif-22e7bbf443f79e

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:

IMG_5097

In better lighting (though missing program register):

IMG_5049

About

An 8 Bit Computer built entirely from scratch on breadboards using discrete logic. Custom machine code and assembly language from scratch. Based on Ben Eater's 8 bit computer kit.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published