S100 Computers

Home S-100 Boards History New Boards Software Boards For Sale
Forum Other Web Sites News Index    
An S-100 8080 CPU Board.
  CPU Board

Every serious S-100 board manufacture had their own CPU card. Many had a number of them.  While almost everybody started off with Altair or IMSAI cards. These early
8080 based cards were quickly replaced by faster Z80 CPU boards.  Nevertheless most S100 and CPM based software stuck with the Intel 8080A, its software,  and indeed the Intel based assembly nemonics. 

If you look at the layout of the original MITS Altair 8080 CPU board you will notice that there are very few plated through holes on the board. That is because the (unknown) engineer who laid out the board picked the S100 pins that presented the shortest route to the CPU and the other components on the board.  In contrast to, for example the Intel multibus, the S100 bus address, data and control lines have no order on the bus.    This has allowed for the production of 8080 CPU boards with plenty of space to add extra components.   Over the years some manufactures went on to produced 8080 CPU S100 boards with numerous  "extra" components.

Recently Josh Bensadon of Toronto Canada (aka Crusty OMO) has designed and fabricated an excellent 8080 CPU board with many extra capabilities.   What I have here is essentially Josh's work.  I am presenting it here with his permission.  If you have specific questions or comments about the board and its related software,  please contact him directly.  CrustyOMO is a regular contributor to the Google Groups S10Computers forum.

The history of Intel's 8080 CPU can be seen here.

The 8080 CPU Board Circuitry

The complete schematic of the prototype board can be seen here.   Josh has also written up a nice manual to go with the board. It can be downloaded from here.  In fact much of what I have below is directly from that manual.    Before working with this board that manual should be read cover to cover.

The board can be configured as a bus master where the 8080A controls the bus completely or it can be configured in "slave mode" where the 8080A CPU is inactive but the other components on the board are active and available to another CPU on the bus.  Note this "slave mode" should not be confused with the normal IEEE-696 definition of the S100 bus in slave mode where two bus  CPU's transfer bus control back and forth between each other with a well defined handshake protocol (often one being a 16 bit CPU).  Slave mode here essentially means a board with the UARTs, the SD card, 8212's etc being available to another CPU on the bus.

The board also has two connections that hook up correctly to either the Altair or IMSAI front panels.  This conveniently allows you to review the CPU's in action, single step etc.
Address lines.
Pushing the sixteen 8080 address lines out on to the S-100 bus on this 8080 board is not complicated.  The two 74LS245 bus drivers  (IC-G8 and IC-F8) , do the job.  Pin 1 of each chip is grounded so the direction is always away from the CPU. As for most S100 CPU boards the address lines can be disabled by lowering the ADDR DSBL S100 pin #22.  This for example would be done by a DMA controller on the bus.

Data lines.
The S100 bus in 8 bit mode utilizes a separate data in and data out bus.  On this board it is handles by two 74LS245 bus drivers  (IC-I8 and IC-H8).    The direction (pin 1 in each case) is determined by the jumpers JP4 & JP5.  In the normal master mode they are jumpered 2-3 in each case.  Directions is normally from the CPU (I8 and H8,  pin 1 high) except for CPU reads/data in,  where the DBIN signal to gate D1 lowers pin 1 of I8.

Status lines.
The 8080A status lines essentially need no modifications and are posted directly to the S100 bus via  IC-J7 and IC-J8.

Control lines.
Likewise the 8080A control lines need no modifications and are posted directly to the S100 bus via  IC-E8.

The 8080A was the last of it's kind to require multiple input voltages. It required a 12V, -5V and 5V input.   It also required an elaborate clock structure, reset and ready signal.  These are provided by E7, an Intel 8224 clock generator.  With the onboard UARTs (see below), the board has no less than 6 different voltage regulators!   The primary 5V regulator (A7) supplies most of the power to the board. It should be a 7805C 1.5 Amp regulator.   Because the heat sink area is quite small special care must be used to get as much heat radiated away from the board as possible.  Use heat sink compound, a mica washer between the board and heat sink if possible.  I actually have one small heat sink inside the other to have more heat radiation fins.

The board has two 8250 UARTS (IC-A5 & IC-A6) along with RS232 line drivers 1488's and 1489's.    The RS232 signals are brought up to the top of the board and can be connected via the headers P1 and P2.

The board also has an a bit parallel port. Actually two (IC-J3 and IC-J5), one for input, one for output.  These are implemented with standard 8212's.  For more information is programming and using these chips see our Parallel Ports board.
SD Card
One really neat aspect of this card is the presence of an SD card socket.  This will allow the card to directly boot CPM and run the many 8080 programs available.  

Step By Step Building the 8080 CPU Board.
As always, first examine the bare board carefully for scratches or damaged traces, use a magnifying glass if need be. The quality of this  board is excellent.  However there is always a first time. A broken trace is almost impossible to detect by eye on a completed board.   I find it useful to carefully slide a file at 45 degrees along the edges (front & back) of the S100 connector for easier insertion into the bus. Carefully, just one or two strokes.  

There is a slight error on the board for the SD card interface.  Due to propagation issues with the Q1 transistor, it is necessary to direct connect the SD Memory card Data Output directly to the SPI MOSI. The VIH of the 74LS299 is 2V and the Data Output is 3.3V, that will not be enough for a safe logic “1”. This change requires cutting 1 trace and installing 1 jumper wire. Cut the trace on the component side between Pin 11 of IC H4 and the silk screen text “SD LOOP BACK”.  Install one jumper wire on the solder side between JP3 and Pin 11. We will omit Q1, R7 and R13 during the assembly below.  Here is a picture of the change. 
     Patch 1

Also pin 15 of the 8T97 (74LS367), IC H7, is left disconnected on the board.  We need to install a jumper from IC H7 pin 15 to IC H6 (74LS04) pin 2.
Alternatively, you can hide this jumper under IC H7 by placing it between pins 15 and pin 1 (or by adding a short solder bridge on the back of the board)
Here is a picture:-
  patch 2
Lets get started. First solder in all the required IC sockets, resistors, resistor arrays, capacitors, jumpers, and the six voltage regulators.  Do not add the LED's yet. Be sure you put the resistor array in with the correct orientation of pin 1. Check their values before  soldering (they are difficult to remove). 
The LM7805C (5.0V, 1.5A) regulator heat sink must as large as possible. Use a mica insulator to insulate the board a little from the heat it generates.   Use heat sink compound. 
For prototype boards I generally use "double swipe" IC sockets. For a critical board like this I prefer to use "Machine Tooled" IC sockets.  However they are more expensive and you have to be particularly careful not to bend the IC pins. 
Next insert the two LED's. Before soldering them in place ground pin 9 on the I5 socket and pin 5 of E2 to make sure they light up.  

Capacitors C15 to C19 are the 3.3uF Tantalums.  These are the capacitors that work on the voltage regulator outputs.  They may be somewhat overrated. You can probably use lower values if need be -- as low even as 0.33 uF.   The decoupler capacitor under IC-C2 are not critical and are placed there to save space. Use small 0.1uF caps if you have tem.

Check that voltage to sockets on the board are above 5V by placing the board in your S-100 system using an extender board. With no load you will typically get 5.00V  (+/- 0.25V).  Also check that you are getting +12V  and -5V  on pins 28  and 11 of the 8080A. BTW, your system should boot and run correctly with its Z80 master CPU board. If not, you have a serious solder bridge somewhere on the board.  Before you do anything else with a magnifying glass go over every socket on the board and examine for a proper solder joint.  Extra time here will save you hours later.  Pin 28  of the 8080 socket should read 12 volts. Its pin 11 should read -5 volts. Remember the 8080 goes on to this board upside-down.   Here is a picture of the board at this stage.
  Bare Board

Next install all the IC's on the board except:-
The two UARTs  (A5 & A6)
Two of the 3 8212's (J5 & J3)
J2 the 74HCT245
and the SD card holder.

Take care to insert the 8080A on to this board upside-down.  As we have done for all the other S100 bus CPU bards, we will first bring up the board in a very simple mode where it simply continuously sends a character to the console.   The board only takes a UV EPROM (a 27256 or 27C256), so burn the following code into such an EPROM.  

EA, 33, D3, 01, C3, 00, 00

I use the Wellon VP-290 to do this. The code is so short you can simply enter the bytes directly within its own programming interface.  The board need to be configured as a "master".  Unconnected to the front panel (if present) set the following jumpers:-

JP7  1-2
JP6  2-3
JP1  2-3
JP4  1-2

We will place our ROM starting at 0H in memory and utilize the full 64K or RAM space.  So jumper the ROM & RAM jumpers as shown here.

Remember on this board if there is no I/O port jumper,  that port address range is available from other S100 bus boards.  In my system the console I/O ports are 0H & 1H, so no jumper at the first position of JP10.  We will be using the onboard SD card (see below). I have assigned it to the 60H to 7FH ports range.   The only other boards I have here that use this range are the Lomas Video board and the old Tarbell cassette board.   With the above configuration the board came up fine displaying data on the console  as shown here:-
  Signon Test
  Signon Test2
If you do not see the above output it may be because this board does not supply the upper 8 address lines for port I/O.  Only address lines A0 to A7 are valid.  For many old S100 boards this is all that is decoded anyway. But IEEE-696 boards (and all of our own S100Computes boards), utilize the full 16 bit address range.    Fortunately these boards have a jumper to restrict the port range to 8 bits. On our Propeller Console IO board its jumper K5 2-3.

If you get this far you are well on your way to bringing up the board.  At this point you can either hook the board up to your Altair/IMSAI front panel or if you have one, insert the SMB.  In any case you need to insure that the S100 bus signal MWRT (S100 pin 68) is being generated in your system.   On the SMB this is jumper JP11.

Finally this board lets the IEEE-696 Address  lines A16 to A23 float.  If you are using IEEE-696 RAM/ROM boards these lines need to be grounded  if you use them.  Since the board has its own 64K of RAM this is probably not a big issue.  BTW, our V2-SMB has a circuit to ground these lines (when a 16 bit CPU is not being used). 

An 8080 Monitor.
In order to be of any use this board needs to be programmed for the 8080A.  We need a monitor program.  Monitors tend to be personal things everybody has their own favorites and requirements.   Mine is the format/menu of our Z80 "Master" monitor.    The problem is it is in Zilog nemonics and in places utilizes the unique special instructions of the Z80.  I had to hand recode it into Intel format and expand out the Zilog opcodes into the (longer) 8080A codes.  This monitor 8080.ASM can be obtained here.   For this board we have one further complication, unlike our Z80 CPU board the is no circuit for a "power on jump" to a specific RAM location (usually F000H).  Instead the CPU expects the monitor in ROM to start at 0H.  This is a problem for CPM which assumes the availability of low RAM.

Fortunately the board has the capability of switching out the onboard ROM chip giving it the full 64K complement or RAM.  Before we do this however we need to relocate the ROM code up to (say) F000H in RAM.  Jump to that location and then switch out the ROM.   We do this by outputting a zero on bit 1 to the SD card port (71H).  When done correctly the "SHADOW ROM" LED should go out.  

With all the above in place the monitor signs on nicely with all the usual commands such as display RAM, ports, MEM map, substitute RAM, Goto etc.
I have not yet implemented the boot CPM on the IDE of FDC board commands yet. Perhaps somebody else could do that for us all.  The code is there its just not yet debugged.
The 8080 Monitor can be downloaded from the link at the bottom of this page.

A Second Version of the 8080 CPU Board (Rev 1).
Josh has made a second version of the above board (Rev 1).  This board corrects the above small errors on the above board. The main changes are:-
  Added jumpers to be able to create a Memory Write signal without a Front panel (allows board to work stand alone, no need for front panel).
Added socket for the FT232 module
Rotated IMSAI connector to match those on the original IMSAI and Altair boards
Changed some text on the board
 Here is a picture of that board:-
CPU Board Rev 1
Two traces need to be cut if you intend to run this board as a SBC. 

A new jumper block, JP11, is made of 7 pins in 2 rows as follows:
1  2  3  4
5  6  7

On the top of the board, there are traces that connect pins 2-3 and 6-7. 
You will need to cut these traces and either install a jumper block or if you prefer you can just jumper the pads with some wire leads. 
The jumper settings for SBC is 1-2,  3-4,  5-6. 

If you are using the board as an ALTAIR or IMSAI cpu, with the front panel, then you don't need to cut the traces or install the jumper block.

This jumper reuses a NOR gate to create the Memory Write signal that would have been created by the front panel.

Josh tested the board for SBC use, it work fine, but you may need to apply a reset after power on (there is no power on reset circuit).
If this is important to you, then there are some 3 pin IC's (TO-92) that produce power on reset that can be added.

The very detailed manual and construction noted for this 8080 Rev 1 board can be downloaded from here.

A Production S-100 Board.
Realizing that a number of people might want to utilize a board like this Josh Bensadon at the Google Groups S100Computers forum has completed a "production" run of the of  this board. These are now all gone! We will collect names for another batch if needed -- possibly an updated version.  If you have an interest in such a bare board, let Josh know via a posting on the forum.

Please note all the above clearly applies only to people who know what they are doing and can  do a little soldering and board assembly. 
There will be little hand holding at this stage. 

The links below will contain the most recent schematic of this board.
Note, it may change over time and some IC part or pin numbers may not correlate exactly with the text in the article above.

8080 Board manual
 (V1.3    8/3/2014)
8080 Board Schematic   (V1,0    7/31/2014)
8080 Board Parts List   (  8/3/2014)

8080 Monitor Software   (V1,1    7/31/2014)
8080 Monitor & CPM Disk Software  (V2.1   12/28/2014)
More 8080 Monitor Software (AIR-V12.zip)  (V1,2   5/18/2016)
More 8080 Monitor Software (AIR-V23.zip)  (V2.3   5/18/2016)

Manual and software for the new Rev 1 8080 board   (Rev1 6/2/2016)

Other pages describing my S-100 hardware and software.
Please click here to continue...

This page was last modified on 06/13/2016