8080 MCU Project

My 8080 MCU Project

02/06/2021

I was recently reminded of a project I built for a Microprocessor Class back in the late 1970's.

It's something I've saved for over 40 years so I decided to dig it out and fire it up - still worked!!!


This device was originally built with 256 BYTES of ROM and 512 BYTES of RAM.

Later I realized I couldn't do what I really needed to do with such a limited amount of memory so I added another 1702 EPROM

to bring it up to a total 512 bytes of ROM. (back then this was actually quite a big deal as memory chips were expensive).


I recall at the time the tools I had access to were quite limited. I had no PC, only an oscilloscope, multimeter, and a

manual EPROM programmer (each byte had to be typed in). At the bottom of the page I've added links to scans of some of the

original documentation. Schematics were hand drawn and code was hand written. Any code change involved removing the EPROM,

reading it's contents into the programmer, keying in any changes byte by byte, then reprogramming a fresh EPROM while waiting

for the previous EPROM to be erased under a UV lamp.


Naturally when I connected everything up and hit the reset button

it didn't work. So I eventually built a board with 16 LEDs connected to the system's address lines and 8 LEDs on the data lines.

I added the red pushbutton and little slide switch you can see on the left side. When the switch was in the up position the system clock came from the red pushbutton. Now most of the 8080 instructions take 5 or more clock cycles so I do recall pushing that red

button a LOT of times. However this allowed me to step through the code and watch the state of the address & data lines.

It uncovered a few problems including a wiring error that had the R/W and RESET signals on the 8255 I/O chip reversed so as

soon as the code tried to write the control word to the I/O chip it world instead reset the chip.


One of my early additions to this project (again back in the early1980's) was to add code to allow saving and loading data

to/from an audio tape recorder. This worked but was finicky at best. Of course the only tape recorder it would work with

is now long gone.


That brings us back to present day... I got to thinking, a simple serial interface would

allow me to load & save programs from my PC much like my Z80 and HD6303 systems.

However this was a piece of my personal history and I really didn't want to rip it apart or change it.


So I figured out a way to build an expansion board that would plug into one of the EPROM sockets.

Using some of the existing address decoding logic signals (some of which were previously unused) I was able to

bring the total available ROM space up to just under 3k and by picking up a few unused I/O signals I could add

serial RXD and TXD signals. This was all accomplished with removeable connectors and sockets to allow me at

any time to restore it to it's original (limited) state simply by unplugging my expansion board & cable and replacing

the original EPROM.


Update 2/11/21:

Once everything was working nicely I thought about what to add. First thing that came up was a dis-assembly

feature. The problem was, I had a mere 1.8k of ROM space available. Nevertheless, I gave it a shot.

Working exclusively in the emulator this time I was able to code a working version with (what would

have been) 28 bytes of ROM space to spare. However while struggling to make the code fit I came up with

an idea for a simple wiring change that would get me an additional 4k bringing the total up to a whopping 7k.

Still this is 1400% increase from the original 512 bytes. Now I guess I'll need to put something new there.

Many thanks to Mike for pointing out that my original schematic is missing the write signal from the 8080 cpu

to the 8228 controller chip. I'm sure there's more stuff missing or wrong.



Resources and Tools:

The 8080 is well documented and I easily found a simple assembler online.

Once a reliable serial interface was developed I could once again use a Z80 Emulator ZEMU - Z80 Emulator by Joe Moore.

The Z80 supports all of the 8080 instructions so my 8080 code could execute on it.

This freed me from the cycle of ... flash EEPROM, move it to the 8080 system, test , repeat....

Once the HEX file upload feature was working I could assemble code on my PC and load it directly into the 8080 system RAM


Software:

The current code now takes up about 3k of the new EEPROM space.

The ROM Expander module installed and running.

The Expander module

View of the wire wrapped connections.
(over 40 years old and still working)

The external signal connectors fit perfectly on the wire wrap pins.

The results of all my work in 1979

The expanded system running an LCD Demo

File Links: (click to download) Description


8080Xpander_schematic_v1.2.pdf Expander Board schematic


MON8080E.ASM Monitor Source Code


8080pgmr.zip Source and binary for command line utility to upload a HEX file to the 8080 system


8080save.zip Source and binary for command line utility to retrieve a HEX file from the 8080 system


8080_System_Schematic.pdf Original (hand drawn) schematics.


8080_Project_Code_Listing.pdf Original (hand written) code listings.