S100 Computers

HomeS-100 Boards HistoryNew BoardsSoftwareBoards For Sale
ForumOther Web SitesQuizIndex  
 
A MSDOS PC-AT Style S-100 Support Board
Introduction
One of the better features of the IBM-PC and its clones is the fact that the hardware is almost identical in all the systems anywhere in the world. Even different manufacturers used the same 8259A Interrupt controller (PIC), and 8254 timer etc, as well as the IBM designated ports in their own systems.  This continued on with the introduction of the IBM-AT system and continues even to this day in the highly integrated chip sets of our current PC motherboards.    This uniformity of the supporting CPU chip sets for Intel/AMD based PC's makes writing a ROM based BIOS and supporting disk operating system a little easier.  If you get the ROM BIOS correct the underlying software should not know it is not running on a standard IBM-AT.   Indeed for a very long time that was the basic requirement for Microsoft's MSDOS operating system.

Clearly I would be nice to have an S-100 board that would emulate an IBM-AT box for any 8086, 80286, 80386 etc. CPU we put in our system.  However there is one complication. In the PC-AT,  IBM added a Real Time Clock Chip (RTC) that allowed convenient time/date stamping of files. They used a Motorola CMOS MC146818 chip.   This chip also contained a small amount of non-volatile RAM that retained its contents (via a battery backup) when the power was switched off.   Today with gigabyte NAND memory it's hard to relate to this tiny improvement, but this CMOS RTC RAM was quiet useful in storing certain BIOS boot up variables.   In most AT clones that chip was replaced by a Dallas Semiconductor CMOS RTC chip that contained more RAM.  Over time, various RAM locations on the RTC essentially became standards for disk operating systems and other software.  It would be nice to have it in our S-100 systems.

Now we already have a good S100Computers/N8VEM PIC-RTC board. Well tested and very reliable in both 8 and 16 bit systems. Unfortunately however, that boards RTC chip (a 58167A), does not contain any available RAM as described above.

I decided to try and put together a kind of "catch all" S-100 board that would cleanup some loose ends need to easily run MSDOS on an S-100 system and with our future CPU boards.  Here is what I could fit on one S-100 board.

8259A PIC
First of course we need an 8259A interrupt controller. The PC had one, the AT has a second one acting as a slave to the first.  I considered doing the same for this board, however because the S-100 bus only has 8 interrupt lines and because we don't need some of the interrupts the AT motherboard uses (see below) I decided to stick with one.  The chip is hard wired to ports 20H and 21H -- ports almost ever PC 8259A in the world has is hard wired to!

One very useful feature I found on the PIC-RTC board was the LED bar that stretched any one of the eight S-100 bus pulses out to a visible light flash.   I added this useful debugging feature to our MS-DOS board.

CMOS DS12887 RTC
This is the most important component on the board. This chip is 100% software compatible with the PC-AT CMOS RTC chip. A detailed description of the chip can be obtained here.  On all PCs the RTC is on IO ports 70H and 71H. This is hard wired as such into our board.

8254 Timer
All PC's use this timer. Its kind of underutilized though. A detailed description of the chip can be obtained here.  Of the 3 timers on the chip, one is used for the system tick. Another is used to generate sound on a small speaker. The speaker is driven by a 75477 chip.  I added both chips to our MSDOS Board.  The PC uses an unusual clock frequency (1.193MHz) to drive the timer.   I generated this frequency using a common 14.318 MHz TV oscillator and a 74LS92 divide by 12 counter.  The counters can be configured to trigger any one or the S-100 bus interrupt lines (as on the PC).



EEPROM Circuit
For 8086 boards that do not have (or have a limited) an onboard boot ROM capability, I added two sockets and support circuitry to support 28C64 and 28C256 EEPROMS.   Again we already have a RAM/EPROM S-100 board that could be used. However that board is fairly complex, difficult to configure and has a slower access time because it can accommodate 8 bit ROMS, and/or 16 bit ROMS and/or RAM.   The EPROM circuit on this MSDOS support board is very simple with a fast access time (i.e. few wait states are required).  The EEPROMs can be located anywhere in the S-100 address space so they could be used for video or network card drivers. The 8086 Monitor/IBM BIOS has code to detect them as on  a PC.

Two Wait State Circuits
The board has a wait state circuit for the above dual 16 bit wide EEPROMS. From 0 -8 wait stares can be added for any CPU access.
However the board has a second wait state circuit that is a bit more unusual.  This circuit allows you to insert 1-8 wait state "holes" anywhere in the S-100's address space to accommodate a pocket of slow access RAM.  For example; I have a Lomas IBM compatible CGA S-100 video board who's RAM can be configured to add 2 wait states when it is addressed.   However if I run the 8086 board at 9MHz under MSDOS, the video RAM yields errors.   Using the above circuit, I can add 4 wait states to the S-100 bus only when the 8086 accesses RAM at B8000H-BFFFFH.  No video errors are detected.

Here is a picture of the prototype board.
MSDOS Prototype Board
  
Please excuse the wire jumper corrections. They will be corrected on the final board.

The Circuits
The circuitry for the board is fairly straightforward. It actually consists of four separate components. 
The PIC/interrupt circuit is perhaps the most complex.

  
PIC Circuit

   
In order to understand this circuit please read my write-up on the 8259A here first.   Note this circuit has to be very reliable. MSDOS requires the 8254 timer system tick to trigger an interrupt 18 times a second!

The CMOS RTC circuit is shown here:-
    
RTC Circuit
 
The timer data in and out lines share the same bi-directional 8 bit board data bus with the 8259A. Because they are addressed via different port numbers there is never a conflict.


The 8254 Timer circuit is shown here:-
  
Timer Circuit

Again the timer data in and out lines share the same bi-directional 8 bit board data bus with the 8259A and CMOS RTC chips. Because they are addressed via different port numbers there is never a conflict.

Software
Unfortunately I have to backtrack and update the clock driver on all my operating system disks to accommodate this new chip.  I have already done it for the Z80 Monitor which can be seen here (bottom of page).  The corresponding 8086 Monitor code can be seen here (bottom of page). 

A CPM3 BIOS Clock driver utilizing the DS12887 (or the older MM58167A chip) can be obtained here (bottom of page). 


Here is a small MSDOS diagnostic program to read and set the time and date for the DS12887 CMOS RTC chip.
CMOS-RTC Tests.pdf
CMOS-RTC.ZIP

Here is a small CPM3 diagnostic program to read and set the time and date for the DS12887 CMOS RTC chip.
Z-RTC.pdf
Z80 RTC Diagnostic.zip


A Production S-100 Board Production S-100 Board

Realizing that a number of people might want to utilize a board like this, together with Andrew Lynch at N8VEM (see here) we are now collecting names of people that might be interested in our next batch of boards. This will be the same as the board above except with Gold plated edge connectors i.e. a "proper" commercial type S-100 board.  If you want one please let Andrew know via e-mail at:-  lynchaj@yahoo.com. They will be about $40 each. As always, you get your own parts, no hand holding or manual!  I will however do a step by step construction write-up here when the boards arrive.
 
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.

MOST CURRENT MSDOS BOARD SCHEMATIC    
(V1  Prototype, 12/14/2011)
MOST CURRENT MSDOS BOARD LAYOUT 
(V1 Prototype 12/14/2011)

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

 

This page was last modified on 12/27/2011