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.
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.
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:-
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:-
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.