8-Bit Breadboard Emulator

Screenshot 1

Screenshot 2

An emulation of Ben Eater's 8-bit breadboard computer.

I highly recommend you visit Ben's website and view his excellent series of videos detailing the construction of his computer.

Installation

This software requires Python 2.7.x which is installed by default on most Linux distributions, Windows users can follow the download link and for Mac users I recommend using MacPorts.

Once Python is setup run the following command:

pip install -U ebbbe

This command can also be used to update the software to the latest version.

The source code is available on GitHub.

Usage

At a command prompt run:

ebbbe_start.py

The emulator boots-up with an example program to calculate the Fibonacci Sequence, to start it click the 'Run' button.

Running Programs

  1. First load a program using File->Open or pressing Ctrl-O.  Programs are stored in a 16 byte binary file - these can be created using a hex editor.
  2. Start the clock by pressing Run, pressing it again will stop the clock.  You can manually step through the program using the Step button.  The dial can be used to speed up the clock, at faster speeds the interface LEDs may not be updated until a HLT instruction is executed to prevent the user interface from becoming unresponsive.

Resetting

  • Soft Reset - Resets all the registers and flags but leaves the RAM contents intact.
  • Hard Reset - Resets everything including the data in RAM.

Viewing the Memory

The memory can be viewed by navigating to View->RAM or pressing Ctrl-M.

The RAM window displays the address, contents and disassembly of the memory along with the locations that the program counter (PC) and memory address register (MAR) point to.

Instruction Set

Instruction Hex Description
nop 0x00 No operation
lda <i> 0x1i Load A with the value at location i
add <i> 0x2i Add the value at location i to A, store in A
sub <i> 0x3i Subtract the value at location i from A, store in A
sta <i> 0x4i Store the value in A at location i
jmp <i> 0x5i Jump to location i
ldi <i> 0x7i Load A with the value i
jc <i> 0x8i Not currently implemented
out 0xe0 Load OUT with A
hlt 0xf0 Halt execution

 

If you have any questions or problems please leave them in the comments below.

Categories: 

Click to view comments

Click to add a comment