The IEEE-696/S-100 Bus is known for its interoperability problems. Many times, boards from different manufacturers don’t work well together in a system. I’ve decided to investigate this problem, and determine a root cause. In the first part of my investigation, I look at the IEEE-696 strobe signals. The strobe signals tell slave devices “when” to do something, whereas the status signals (sMEMR, sWO, sINP, sOUT, sHLTA, sHLDA, along with the address bus, which I consider to be part of the status signals for purposes of this discussion) tell the slave what do do. When determining “what” to do (ie, assert a chip select (CS#) on a particular device) the status information should be used. When taking an action, such as reading data out of a device using the RD#, or writing data to it (WR#), the strobes should be used.
I’ve looked at the timing waveforms for all the 8080, 8085, and Z80 IEEE-696 / S-100 CPU cards that I have, and found about three general variations:
1. Cards whose strobes come out early.
2. Cards whose strobes adhere to the IEEE-696 Spec. (very few)
3. Cards whose strobes come out late.
The relevant strobes on the IEEE-696/S-100 bus are:
pSYNC / pSTVAL (status valid)
pDBIN (read strobe)
pWR# (write strobe)
I’ve found that in all cases, I was able to generate a mostly valid status strobe from pSYNC. Since various S-100 CPU cards have different ideas of what pSTVAL is supposed to be (some use the Phi-1 clock, some generate the IEEE-696 style pSYNC, and some don’t generate any signal at all.)
The mostly valid status strobe comes from gating pSYNC with the low state of the S-100 Phi clock (which is the buffered CPU Phi-2 clock.) In most CPU cards, this generates a nice, single strobe. In some cases however, this generates two strobe pulses, because the Phi-2 clock being low happens in the middle of the pSYNC cycle, and lasts for less than the full pSYNC assertion. This should not cause any problems for slave card operation, because the slave card should latch the S-100 address and status lines with this strobe, and so if the strobe happens twice, as long as the status/address lines don’t change (which they shouldn’t) everything will be ok.
The cards I looked at were:
California Computer Systems CCS-2810 (2- and 4-MHz operation)
California Computer Systems CCS-2820 (4-MHz operation)
CompuPro 8085/8088 (2- and 5-MHz operation)
Cromemco ZPU (2- and 4-MHz operation)
Cromemco DPU (4-MHz operation)
North Star ZPB-A2 (4-MHz operation)
IMS Z80 (4-MHz Operation)
IMSAI MPU-A (2-MHz 8080A)
Ithaca Audio 1010 Rev 2.0 (4-MHz operation)
Ithaca Audio IA-2000 (4-MHz operation)
Vector Graphics ZCB (4-MHz operation)
Manuals for most of these boards can be found at here.
I’d appreciate feedback on which S-100 CPU cards people are using in their systems, and with what other combinations of boards.
Next time, I will talk about the read and write strobes pDBIN and pWR#.
-Howard