S100 Computers
Home S-100 Boards History New Boards Software Boards For Sale
Forum Other Web Sites News Index    

The S-100 Bus Z180 SBC Board
   Z180 SBC V0.7 (FINAL)
  Z180 SBC V0.8 (FINISHED 2)
The original S100 bus Z80 CPU board has proven to be a very reliable S100 Board.  It was first designed and produced in 2010 and remained reliable and bug free ever since.
It was designed to be an all purpose master/slave S100 bus CPU board and counted on several other S100 bus boards to really function. Minimally you would need a RAM board and a console IO board. A more practical system would need a board such as our SMB and either a floppy or hard disk controller board as well.  Most experienced S100 bus users have these boards or are at least familiar with them enough to build one.

The ageing S100 bus community needs new users. A big hurdle for anybody getting into building and using an S100 bus computer is the above need to have several fairly complex boards built and functioning correctly right from the start.  For somebody starting off with limited electronics experience this can be a show stopper.

Presented here is a new S100 board to address this problem. It starts off initially as a Z80 (actually an Z180) CPU board which contains a flash RAM, a USB port interface and an SD Card that can immediately boot up CPM. While it is on an S100 Bus board, initially that board has only 8 significant chips and works as a self contained computer outside the bus with a simple 9V power supply.

Later on it can be built up further with more chips, placed in an S100 bus and one by one programed to interface with the 100's of S100 bus cards that are out there. It can in fact behave as a S100 bus master or slave as defined by the IEEE-696 specs.

While the board internally is quite complex,  externally it looks and behaves very simple. It will be an ideal board for somebody new getting into building an S100 bus system since with this board alone and a simple USB/PC interface they can have a complete working CPM3 system.

Keeping in mind the above potential audience, I will try and over-explain some things below.  Our "hard core" audience can just skip ahead.  That said this is NOT a board for a complete electronic novice. Minimally you should have some soldering experience and knowledge of electronic circuits.  You should for example be comfortable with web sites that describe Arduino or Raspberry circuits.  You should have a basic understanding of programming in assembly language for a Z80 and ideally experience using the disk operating system CPM.

For absolute beginners, rest assured,  you can more or less use the Flash RAM code examples below as "Black boxes" to get this board up and running. However you will be missing one major aspect of the board. By stepping along and understanding how the Z180 code works you will in the end have the ability to modify the board in amazing ways.

The Circuit

There is an almost endless list of single board computer circuits one could chose from these days. Even if we restrict ourselves to the Zilog family of CPU's. What I wanted was a minimum chip count to get up and going but with a well established software base.  One circuit that seemed to fit this bill is an outstanding one developed by Stephen C Cousins in the UK. He has put together an amazing "SC131 Pocket-sized Z180 RomWBW CP/M computer kit" which has great software capabilities yet a very minimal chip count.  The choice of a Z180 over the well known Z80 CPU allowed for this minimal circuit since many IO functions are handled internally by the Z180 itself.  Stephen supplies a BIOS to boot CPM2.2.  This circuit board is in fact a subset of a wide range of Z80 bus driven boards built around a "SC500 Bus".

We will use below a similar Z180 "core chip circuit"  on our S100 bus Z180 SBC. The nice thing about the Zilog Z180 is all you need is 8 chips to have a functional computer.  While this will occupy only 1/4 of our S100 board it is a complete functional CPU card when place in the S100 bus.  To interface with other S100 bus cards in the bus however we must bring the Z180 address, data and control lines out on to the S100 bus. As we saw for the Z80 CPU board, to reach IEEE-696 specs, we need quite a few 74xx chips to do this. The circuit is a little complex, most users can just regard it as a "black box". 

The board boots up from the onboard Flash RAM with two forms of Z180 code (programmed in Z80 assembly language).

Z180MON.Z180   This is a "warmed over" modification of our 12 year old Z80 ROM "Master" monitor code that has served us well in modified forms for all our S100Computers CPU boards. All the familiar menu commands are there for the core Z180 CPU.

RomWBW   This is an unmodified  version of the ROM-based operating used in the above SC131 computer. It includes CP/M 2.2 on the SD card. (A big thanks goes out to Wayne Warthen who help me splice in this software with this board).

Step By Step Building the Core Z180 S100 Board Circuit.
We will use a two step process to build this board. The first part of the board will be a core SC131 circuit put on an S100 bus board.  It contains the serial/USB port and an SD card to run CPM etc.  It should behave exactly like the SC131 computer family software runs.   The second part of the board, a more complex circuit will also contain circuitry to interface the S100 bus.

First the SC131 Circuit board.
The build instructions are fairly simple for this board but because it is a complex board building it should not be rushed.  As always, first examine the bare board carefully for scratches or damaged traces, use a magnifying glass if need be.  A broken trace is almost impossible to detect by eye on a completed board.

First we will build the core "SC131" circuit section.  Solder in all the required IC sockets, resistors, resistor arrays, capacitors, and jumpers on the full board. You should always keep an eye on the schematic to be sure you are adding the correct resistor or capacitor value so it matches  the resistor or capacitor number on the schematic.  Be sure the electrolytic caps
C24 and C34 have their + terminal correctly matched up with the + pad on the board.

All components on this board run at 5V.  The board must use the 5V regulator to supply this to all the chips on the board.  You have a choice of 5V regulators.  I like the Pololu regulators.  However they have become expensive. The cheaper EzSBC 3 pin 5V regulators seem to be just as good. While not recommended,  you can use the old LM7805 linear  5V regulators with a heat sink.

Note there are two sockets for the Pololu 5V regulator. Pololu made older regulators (D24V25F5) that are still available, for these use the
P14 socket. It seems Pololu is suggesting users now use the newer D24V22F5's (5V, 2.5 Amp) units, it has a different pinout, use this one in P13 .  Please note Pololu has recently come out with even more 5V regulators.  Please examine the pinouts and match them with the board sockets.  Unfortunately the newer 5V regulators look exactly the same on the surface.  If all of this is confusing use the 3 pin EzSBC 5V regulator in the 3 right most pins of P13 or the LM7805 socket. This is the regulator I used here.
Insert a linear 6 pin socket for the USB adaptor (see below).  We will not use the Serial B port or SD card section at this stage.

Take care to insert the DS1233-5 in K4 with the correct orientation. The flat side of the "transistor like" unit should be towards the bottom of the board.
  See the picture above.
Install the two resistor arrays RR8 (4.7K) and RR3 (1K).  Note RR3 is at the bottom of the board.
Install the jumpers pins JP3, JP5, K16, JP2,  K1, K5, and K7  (near the voltage regulator).
All the filter caps are 0.1uF, but note C3 is 1nF.

JACK_2P power socket and power supply  must be a center + power supply.   Look for the  "-----(+ "  symbol.  Anything between 8-12V DC is fine.
Note there are numerous board sockets for these 'Wall Warts" power supplies.  The actual connectors can vary just so long as the center tap is "+".
I use the Jameco
#2210677 one. (Please note this item is not listed in the board BOM below).

The board has 4 pin hole so you can connect a copper bridge for easy logic probe connections for +5 Volts and Ground connections.  Note this is a voltage output connection only.

JP9 jumpered is only required if you don't use the above external power supply. If it is jumpered you will be driving the SC131 circuit from the power supplied via your USB port on your PC.

The board in this mode uses about 110mA from your USB PC port -- be sure your PC can deliver it.

Install four LEDs D2 (red),  D3 (yellow), D1 (green) and D7 (green).
When adding the LED's be sure to orient them correctly. (Usually the longer lead in the square pad).
Please take care to not "slobber" solder on the sockets. They are very closely spaced on this board with vias often close to a socket pin. 
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. 
Be sure you solder in the PLCC socket in the correct orientation. The "notch" corner is on the bottom left hand side.

Before adding any chips (including the Z180 CPU) insert the 5V voltage regulator and hook up the 8-9V DC power supply to K6. 
With jumper K7 2-3 and check you have 5 Volts at the P17-P16 jumper.   The Reset LED (D3) should briefly come on and then stay off.

Insert P2 the 18.432 MHz Oscillator
U28 a 74LS259, U29 a 74LS139,   U30 a 74LS00
U36 a 74LS05 and U13 a 74HC139
U14 the 512K static RAM
IC1 the Zilog Z180 CPU.

The original SC131 SBC circuit calls for a 74HCT139 chip for U13.  I have use a 74LS139 and 74S139 -- all seem to work the same.

Jumper JP3, JP5, K10-1-2, JP2, K1 2-3, K5 2-3. 
JP6 allows the USB connection to supply 5V to the board/circuit. Normally we leave this open.

Here is a picture of the Board at this stage:-
     Z180 SBC V0.6
Do not hookup the USB adaptor to a PC yet.

First program the Flash RAM with the
TEST0.HEX code (See the bottom of this page).
On your "ROM Burner" you should have the following bytes at the start of the FLASH RAM

Place the Flashed RAM chip in the board socket (U3).
There are a number of possible serial to USB adaptors out there. I use the Adafruit CP2104's but it seems Adafruit is now recommending the equivalent CP2102F
Always check the pinout matches P6 on the board.
   Adafruit USB Adaptor   SparkFun USB Adaptor        SparkFun Adaptor 2
There is also the equivalent SparkFun USB adaptor (shown above). These adaptors require right angled pins. 
There is also an older one with direct pins e.g. SparkFun.
FWIW, I have always found the Adafruit adaptors easier to work with but the pinout is the same for both adaptors.
Note, some other USB adaptors from Sparkfun and Adafruit have different pinouts. Always check. 

Insert the serial to USB adaptor and set up your PC TTY terminal to
57,600 Baud N-8-1
I generally use single row sockets for these adaptors but you can solder them in directly.
Power up the board by plugging in the power supply connector and jumpering K7 2-3.
Note K7 can be used as a power switch on-off for the board at this stage
Hit the onboard reset button SW1.

You should see the following display in the USB port TTY display:-
You should see 255 characters of '3" then he CPU
Halt LED (D7) should light up. Do not go further until you get this to work.
One test if the above does not work is fill the Flash RAM with
76H's.  The CPU Halt light must come on immediately after a reset. 
If not you need to check the board for shorts etc.

The above program does not utilize the board RAM.  We will do so with the next program
Repeat the above process using the
TEST1.HEX file. You should  see the following text. Enter the ESC character to abort.
    Singno 0   
Repeat the above process using the Z180MON0.HEX file.  Keep your PC TTY terminal at 57,600, Baud N-8-1.  Power up the board.

You should see something like this:-
  Z180Mon1 Signon 
Note some of the above menu options do not work at this stage.

Finally add the original SC131 ROM code available at the bottom of this page. (Note Wayne Warthen's most recent updates are available here).
Again hookup the USB adaptor to a PC TTY window.
You will need to keep the PC TTY terminal set to
57,600, Baud N=8-1.
You should see something like this:-
  Z180 SC-131 ROM
From here you have an almost limitless number of CPM and other Z80 programs to play with. You can use the SD card to store your own programs.

Here is a summary of the jumper table for the basic SC131 circuit.
Jumper  Name Comments
K5 S100 Enable / S100 Disable 2-3 for the simple SC131 only circuit. The LED D4 to stay not be lit.
K1 Flash Write 2-3 Normally. 1-2 only if you want to program the Flash RAM (U3) onboard.
JP9 USB 5V Normally open. Jumper only in SC131 mode and you want power to come from your USB PC A port.
JP2 Adaptor B If no USB B adaptor present it does not matter. If you use a second USB adaptor then normally open. With a second USB adaptor (B) present, in SC131 mode jumper if you want power to come from your USB PC port add the jumper.  Note JP9 or JP2 serve the same function if both adaptors are present.
K10 Reset This determines the source of the Z180 reset signal. For the SC131 mode jumper 1-2. 
JP5 POC Does not matter. Not used in the basic SC131 circuit.
JP3 Slave Reset Does not matter. Not used in the basic SC131 circuit.
K9 SD Card port Defines the SD card data port configuration. Jumper 1-2.
K7 S100 or External Power 1-2 for board from 9V power supply socket in the SC131 circuit. . (Note pin 1 is on the right hand side)

No Other Jumpers need be installed.

The S100 Bus Z180 SBC Board with the S100 Bus Interface

At this point you have a basic SC131 functional circuit.  We will next extend the board circuit to interface with the S100 bus. 
First add all the remaining sockets, jumpers, resistors etc. Everything on the board (except the IC's) should be added. I like to solder in the 2MHz Oscillator (U32) on these boards
Here is a picture of the board at this stage:-
   Z180 SBC V0.8 (Sockets)

There are quite a few chips in this circuit. They should all be added carefully checking for bent pins, with the correct orientation etc.  All are necessary.
Install the following jumpers:-
K3 1-2,  K8 2-3, P9 both closed (vertical jumpers), P3 pSync RAW closed (vertical Jumper).
Start with 4 IO wait states -- so for P4 jumpers 1,2,3,4
For P5  jumper sINTA only with P1 jumpers 1,2,3 4
Jumper the reset option K10 2-3
Jumper K9 2-3 and  K10 2-3.
Jumper K5 1-2.  Make sure K1 is always 2-3 and K7 is 1-2.
JP9 is not jumpered in this mode.
The full board pulls about 560mA in the S100 bus.  While probably within the range of USB port power delivery for most PC's if there are few connections, we will not use it here.

      Jumpers 2       Jumpers 1
  Jumpers 4   Jumpers 3
Depending on the type of boards you have in your system you may need to add wait states for Z180 I/O access to the S100 bus.
There are two types of wait states you can configure:-
IO wait states for Z180 access to S100 bus I/O ports. You can add 1 to 8 wait states with jumpers on
P4. Start off with say four.
You can also have wait states added for the
sINTA signal, an M1 Z180 CPU cycle or any Z180 memory cycle.  Typically only an sINTA signal is considered (P5 1-2).  Again start off with four wait states with jumpers on P1.  In my system (with only S100Computers boards) no with states are actually needed.

S100 Bus Ports
There are two problems interfacing S100 bus ports with the "classical"  SC131 circuit.
First the Z180 upon power-up or reset utilized a number of "internal" IO ports to configure itself.  Unfortunately these ports lie in the range
00H-3FH, a range often used by S100 bus boards.
If you use S100 bus software you could upset major Z180 CPU functions by writing to them.  Fortunately the port addresses can be relocated by writing to port
3FH in the Z180.
So upon boot up the first thing we do in the ROM monitor code is relocate the Z180 internal ports from
00H-3FH to C0H-FFH.  This takes care of port addressing for many S100 I/O Boards.
However there are some boards that actually address ports in the
C0H-FFH range.  For these your software must first move the Z180 internal ports back down out of the way, write/read to/from the S100 port and then move the internal ports back to C0-FFH.  (if you look at my monitor SWITCH_8086 "O" command this is what we do to activate port EDH).
We also have to consider situations where you want to write to an internal Z180 port and don't want that effect going out to the same S100 bus port.  While not common, it can arise.
For this we temporally block the S100 bus
sOUT signal on the S100 bus by inputting from port 74H. Then write to the Z180 internal port and after that reactivate the S100 bus sOUT signal by again inputting port 74H.  The status of this block is read as bit 7 of port 75H (the IOBYTE port).   Whenever the S100 bus signal sOUT is active LED D6 is active.
Here is the core circuit:-
   Internal Ports

There is a second issue we also have to address with the SC131 circuit.  The SD card
CS* port (normally 0CH in software) is not completely decoded in the SC131 circuit.
We need to modify the circuit to exclusively configure the port address to
0CH with the following circuit.  This prevents other S100 bus board ports being activated.
   SD card Circuit

With these configuration (K9 2-3) in place you should be ready to try the board in the S100 bus.
Continue to use the flash RAM again with the Z180MON0.HEX file. Keep your PC TTY terminal at 57,600, Baud N-8-1.  Power up the board.
Make sure all four switches of the IOBYTE switch (
SW2) are open.
So the  IOBYTE is
xxxx1111B.  The monitor will initially boot up on the USB port.

Here is a picture of the board jumpers at this stage:-
  Z180 SBC V0.8 (FINISHED)
The monitor should sign-on via the Serial A port as it did above.
Next bring up the "
N" command S100 Bus Testing sub-menu.

0   Address line test (0 to FFFFH)
1   Send "33333..." to S100 Port 01H
2   S100 Input Port 01H Test
3   S100 Console I/O Test
4   Speech Test
5   Modem Port Test
6   Test Printer
ESC To return to Main Menu

The first menu option should simply read the RAM data in the
U14 chip on the board.  However the S100 bus address lines should change. BTW, if there is a RAM board in you system its contents are simply ignored. This CPU board has 512K of its own onboard (fast) RAM. All port I/O and interrupts are taken from the S100 bus. This is tested with menu options 1,2 and 3.  With menu option 1 for example you should see a continuous display of the number '3' on the Console IO Board (or any other S100 board that has 01H as its console output port).

Menu 3 is essentially a Console IO test for the board using the Console IO Board.
Menu 4 is specific for the speech synthesizer on the Serial IO Board. You should hear speech from that board if it is in your system. Note the Zilog Z8530 is already initialized in the Z180 monitor.
Menu 5 allows you to send characters back and forth between this board and your PC USB port (i.e. a TTY terminal) . It runs at
38,400 baud N-8-1 from the Serial IO Board Port A.
Menu 6 will send the above menu text to your S100 bus printer if it is connected to the Printer port on the Parallel ports board.

The above monitor has the capability to direct the console IO either to the SC131 circuit Serial Port A or the Propeller Driven S100 bus Console IO board. The right-most dip switch on SW2 determines the output.  If it is open all console IO goes to the onboard Serial A port. If it is closed it goes to the S100 bus Console IO Board.  Close the switch. Now all the above commands go to the S100 bus Console IO board. 

Interfacing S100 Board Ports.
It is important to remember that the Z180 and Z80 interface I/O ports differently. The classical Z80 IN or OUT instruction places the 8 bits of data in the A register to directly defined 8 bit address.  If a 16 bit address is needed,  the upper 8 bits will be whatever is in the C register. 

To have the Z180 monitor come up talking to the S100 bus Propeller Console IO board we need to close the right most dip switch of the IOBYTE switch SW2 (ON).  The monitor will see that the
IOBYTE port on the board (75H) see bit 0 as 0. Note this assumes we have Jumper K3 jumpered 2-3.
Here is a picture of the signon menu in this configuration.
   Z180MON3 Signon
The monitor should behave essentially the same as it did in our Z80 CPU board of our Z80 SBC Board or our FPGA Z80 Board.
As far as other S100 bus board are concerned they should not know a Z180 instead of a Z80 is driving the bus!
As an example to test our CF/IDE S100 bus board. Launch the above "Y" command.  You should see:-
   Monitor IDE Menu
You should be able to implement all the above CF/IDE board menu commands from that menu.

Another good example of this is using the Z180 to boot up a non-banked version of CPM3 with our IDE/CF card board using the above monitor "P" command.
Here is a signon example:-
   CPM3 Boot
Note this is a non-banked version of CPM3.  With this Z180 board we have 0-DFFFH available so the above CPM TPA could be larger,
but is is interesting that this is an unaltered CF card I made and used way back for the IDE/CF Board and the Z80 SBC.

I will leave it to others to write a very large banked version of CPM3 with this Z180 CPU and its 512K of RAM.

The Z180 handles interrupts a little different from the Z80.
The NMI interrupt (on the Z180 pin 9) when low,  will always force the Z180 to its NMI interrupt location 66H in RAM just like the Z80.  This pin is pulled high on the board. If jumper K2 is connected 2-3,  it is connected to the S100 bus pin 12.  For testing using the Z180MON.Z180 , briefly ground the S100 bus pin 12. The Z180 will immediately jump to location 66H in RAM where code for the following code resides.
    NMI Picture 

With an NMI the CPU will always go to that location -- no exceptions.  It is up to the user to write code to debounce the pulse etc. and handle the interrupt.

The "normal" interrupts on the Z180 are a little different than the Z80.  There are three CPU pins -- 
INT0, INT1 and INT2. We will use INT0 as the main Z80 type interrupt here. (INT1 and INT2 are connected via jumpers on P15 to the S100 bus vector interrupts 0-7).  As with the Z80, INT0 must first be enabled with the EI instruction.  The default interrupt RAM location page is 0H (set with LD I,0H).  We will use that page here.  Using the S100 Menu command and the N command to activate interrupts, then if you briefly ground the S100 bus pin 73 (INT*)  you will cause the Z180 to jump to location 38H and issue the following message.
Of course normally you would write an elaborate interrupt routine, disabling interrupts, doing the routine and re-enabling the interrupt etc.
BTW, remember that unlike the Intel CPU's which are often utilize an 8259A vector interrupt controller,  the Z180 (and Z80) does not issue two back to back INTA signals with an interrupt.  The Z180 issues only one.  Please note the above Int code at
38H is currently not implemented with the ROMWBW loaded Z180MON.Z180 monitor code. For testing, use the Z180MON.Z180 directly.

The SD Card Adaptor
Perhaps the most difficult to program for this board is the SC131 compatible onboard SD card adaptor.
These adaptors greatly simplify the hardware of interfacing a 3.3V driven SD card via a SPI communication protocol to the Z180 CPU.

There are two common types (which unfortunately have different pinouts).
The Sparkfun adaptor is shown below and is inserted in P20. Here is a picture of the adaptor.
    SparkFun microSD adaptor
It can be obtained from SparkFun or other places on the web. 

Another common microSD card adaptor with voltage level shifting is this one from Adafruit.   
It can be obtained from Adafruit or other places on the web. Note  there are other Adafruit SD adaptors with different pinouts.
We will use the Adafruit adaptor here.
Here is the connections for the Adafruit board:-
  SD card Hookup 2

Be sure to add the SparkFun SD adaptor to the P20 socket or the Adafruit SD adaptor to the P8 socket.
Use the Z180 monitor "W" command to bring up the SD card adaptor testing software.  The following menu should appear:-
    Monitor SD Menu
All the above menu commands should work correctly.  However remember some SD cards are 'finicky' about being initialized.  I always use "Gigastone" 8MG micro SD cards.

Remember you have two FLASH ROM options, the Z180MON.Z180 , the "warmed over" modification of our 12 year old Z80 ROM "Master" monitor code that has served us well in modified forms for all our S100Computers CPU boards. All the familiar menu commands are there for the core Z180 CPU.  It would primarily be used to debug S100 bus boards with this CPU.

The second is the RomWBW  ROM code. This is an unmodified  version of the ROM-based operating used in the above SC131 compute provided by Wayne Warthen. It includes CP/M 2.2 on the SD card. This monitor is enormous,  with many applications applications including one to boot the Z180MON.Z180 monitor above!  See the example below.

Booting from the ROMWBW ROM
The normal use of this board will be with the ROMWBW ROM.  This ROM has an enormous body of Z80 software associated with it. You should study the retro-comp Google Group to keep up to date on new additions etc.  Here is a picture of its signon and running:-
   ROM WBW Signon

At this stage the S100 Bus will display:-
    Z180 Mon2 Signon

Take care to always set the two right most IOBYTE switches on SW2 correctly.
The right-most switch when Closed/on will direct all monitor I/O to the S100 bus.  When Open/off, output will go to the USB port A.
The second right-most switch when using the ROMWBW monitor will always boot directly into the Z180MON.Z180 basic monitor bypassing all the other ROMWBW code if it is closed.

Here is a summary of the jumper table for the S100 bus board  circuit.
Jumper  Name Comments
K5  S100 Enable / S100 Disable 1-2 for Full Board circuit in S100 bus.
K1 Flash Write 2-3 Normally. 1-2 only if you want to program the Flash RAM (U3) onboard.
JP9 USB 5V Always open.
JP2 Adaptor B Always open
K10 Reset Jumper 2-3. This sets the Z180 reset signal to come from the S100 bus or the onboard switch SW1. 
JP5 POC Jumpered, signal from the s100 Bus. This should cause LED D4 to stay lit.
JP3 Slave Reset Jumpered, signal from the S100 bus.
K9 SD Card port Defines the SD card data port configuration. Jumper 2-3 (for exactly port 0CH)
K7 S100 or External Power 2-3 for board from the S100 bus. (Note pin 1 is on the right hand side)
K3 Non-IEEE Normally 2-3
K8 Port 64 or 74 The IOBYTE port. Normally 2-3 (Port 75H)
P9 S100 signals Jumper Clock and MWRT.  Both vertical jumpers.
P3 S100 pSync Normally "pSYNC RAW".  Right most vertical jumper.
K2 PWFAIL/NMI Normally either none or 2-3 (NMI)
JP7, JP6, JP8 IEEE-696 Ground Not normally required. (Use to ground S100 signals 20, 53,70 in a fully IEEE-696 S100 bus compliant system)
P4 IO Wait States 0 to 8 IO wait states can be added to the S100 bus to "stretch" the length of the fast Z100 port Read/write signal.
Experiment, lower is better, typically 0-4 states depending on your S100 boards. Jumper P4 1-2, 2-3, 4-5 & 6-7 for 4 wait states.
P5 sINTA,M1 or MEM Wait states 1-2 to add an interrupt acknowledge wait state. 2-3 for a Z80 "M1" memory read wait states. 4-5 for all memory wait states.
P1 Wait States As for P4 this determines the actual number of wait states requested by P5
P15 Select Interrupt Vectors These select whether the board handles incoming S100 interrupt signals VI0-VI7. (Not currently used)

Notes & Bugs
No hardware bugs noted so far.
  The lettering ("K4") for the DS1233-1 unit is slightly too low on the board's front silkscreen.
Please note this board and software went through a few versions before this final (V0.9) version. Some of the pictures above may be slightly different from your final version.

Most IC's for this  board are very common and can be obtained from Jameco, Unicorn, Mouser, DigiKey etc. 
The Z180 CPU is best found on eBay. Be sure and get one capable of running at 18MHz. Most do!
The 512k Microchip Flash RAM (SST39SF40) I obtained from DigiKey (# SST39SF040-70-4C-PHE-ND0
The 512K Alliance Memory Static RAM (AS6C4008-55PCN) I obtained from DigiKey (# 1450-1027-ND)
The Reset "IC Supervisor" TO92-3 (K4) DS1233-5  I obtained from DigiKey (# DS1233-5+CT-ND)
The PLCC 68 pin socket I obtained from DigiKey (# 2057-PLCC-68-AT-ND)
The board circuit can accommodate either 16 or 8 pin metal chip oscillators (provided they are plug into pin1)

Programming the Flash ROM
Beginners please note this board requires that you have a way to program the ROM code in the Flash RAM with a "ROM Programmer".
There are numerous types on the web.  The best in my opinion are the Wellon programmers.
If you are going to do any kind of serious work with S100 boards a ROM programmers is essential.
Also essential is a logic probe.

CPM Images
There are numerous CPM3 CF card images you can download to run on this card.
It's best to start with a simple "Non-banked" system such as the
CPM3 CF Card Image #1 and run it on our basic IDE/CF card using an 8 bit I/O port.
Write that CPM image to a CF card using the HDD Raw Copy Tool described on that page.  CPM should boot immediately with the monitor "P" command.
Not-banked CPM3 will require you to extensively modify your CPM3 BIOS to switch in/out RAM pages. I have not done this yet!

Also keep in mind the Z180
IN and OUT instructions assume a 16 bit port address with the high byte in [C]. Not all legacy software will have C=0H for port I/O.
So S100 boards must be either jumpered to 8 bit ports or the software modified to use the Z180
IN0 and OUT0 instructions.

A Production S-100 Board

Realizing that a number of people might want to utilize a board like this together with a group of people on the  Google Groups S100Computers Forum.
A "group purchases" is now open for a limited time.  Please go to this page and fill out the form.
Please note, the description and construction of the board illustrated here is for a V0.8 Prototype board.  The actual board supplied to people is a V0.9 board. 
The only difference between the boards are a few minor changes/updates. Everything here for the V0.8 board also works for the V0.9 board.

Folder containing Test Programs, the Z180 Monitor and  ALTAIR.COM  A .ZIP file             (V0.8   7/27/2023)

SC131 ROM Monitor
 A Binary File                                                                                 SC131-ROMWBW-SCZ180 V3.30-dev 40 (Wayne Warthen)   7/27/2023)


Z180 SBC KiCAD (V0.9) work folder (.Zip file)                                                               This .zip file contains all the KiCAD components to build the S100 board   (V0.9  2/4/2024)
Z180 SBC (V0.9) schematic (.Pdf)                                                                                  The Board Schematic    (V09   7/27/2023)
Z180 SBC Gerber Files  (V0.9)                                                                                      
Gerber files to manufacture the board.      (V0.9  7/27/2023)   
Z180_SBC Monitor (V0.34)                           
Z180_SBC Monitor .HEX file (V0.34)               (7/22/2023)

Z180_SBC V0.8 BOM (PDF)                             (8/6/2023)    Supplied by    Rick Bromagem     
Z180_SBC V0.8 BOM (xls)                               (8/6/2023)    Supplied by    Rick Bromagem     

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