Introduction Many S-100 board manufactures had their own Video boards. Most initially were character based "video TTY's". The very early ones were restricted to 64 characters/line (for example the SSM board) but soon 80 characters per line became common. A good example is the SD Systems 8024 Board.
As time went on, boards started to get more sophisticated and began to offer fairly high resolution graphics capabilities. A good example of this would be the Matrox ALT512 board which offered color graphics at a 512 X 256 resolution. There were even a few of higher resolution. The NEC 7220 based video controller boards for example, which brought video display graphics to a new level. That chip was the NVIDEA chip of its day back in the early 1980's.
Once the IBM PC appeared on the scene video hardware compatibility with it became key. There were a few S-100 bus attempts to make equivalent cards. The Lomas "Color Magic" IBM-PC Color Graphics Adaptor (CGA) look-alike probably being the most successful. However with the phasing out of the S-100 bus in the late 1980's, no higher resolution S-100 video boards were ever produced.
On the IBM-PC side of things (and its clones), video boards of increasing resolution appeared, eventually culminating in "VGA" boards. At the same time a very long list of "all in one" PC video chips were developed. The firm Chips and Technologies was the first company (outside of IBM) to deliver a compatible VGA chipset, the 82C451. This market was then entered into by companies such as Trident Microsystems, Western Digital, Cirrus Logic, Oak Technologies, and others, until it was saturated. None of them exist today, nevertheless they started a whole industry of powerful all in one video chips. With one chip, a little DRAM and a ROM a complete video board could be constructed with outstanding capabilities.
With the recent of our introduction of our 16 bit 80486 based S-100 boards and MS-DOS based operating systems there is a clear need for a good high resolution 16 bit VGA style video board. The specifications of a VGA board is beyond the capability of discrete 74LSxx based TTL chips. This is the job of a dedicated "Video Controller Chip". What chip should one use ? There are a number of candidates. In the end I settled for the Cirrus Logic GD5420. Major points in its favor were SVGA resolution, an onboard DAC, an excellent manual describing the chip and reasonable availability. The only catch is that it only exists in a 164 pin surface mount version -- as do all these video chips.
Interfacing the chip to the S-100 bus at first looks quite simple but unfortunately it's not!
Very helpful was one of the few commercial board schematics put out by
WinSystems. See LPMMCM-SVGA.
More commonly in the past however the GD5420 was setup to directly interface with the PC ISA bus
(with no buffers or drivers). Unfortunately this will not work on the 8/16 bit wide S-100 bus. If we could guarantee the bus CPU would only send/receive 16 bit wide data it would be easy, but unfortunately VGA based software will often send and receive 8 bit wide data as well. In this case the S-100 bus goes through a rearrangement with separate 8 bit data in and out lines. See here for a detail description of this.
What this means is that the bus CPU (80486), has to monitor the bus to determine if the Cirrus GD5420 can accept a 16 bit word. If not it will return the IEEE-696 signal SIXTN* high. This will force the 80486 to send
the data as two back to back 8 bit bytes. This is essential for the working of the Cirrus chip. Unfortunately all our other 8086 style CPU boards do not have this ability and so will NOT work with this board.
Putting the GD5420 on
the S100 bus has a long history at S100Computers.com. Here is a picture of the first prototype done back in 2011. On that board we have to trap the board memory and I/O addresses that are relevant to the GD5420 chip and present them in a format that is ISA bus "like". Very fortunate for us is the fact that the chip has two pins MCS16* and IOCS16* that go low whenever the chip sees a RAM or an IO port address that is meant for it. ALL other addresses are ignored. This is the trick we used to build this boards interface around. The schematic for this board is shown here. Here is a picture of this first prototype board:-
In a typical IBM-PC, the video BIOS for the VGA board is at C000:0H to C000:7FFFH. If we display RAM in this region on this board pin 2 of the GD-5420 chip (EROM*) will go low. This activates the two onboard EEPROMS and their 74LS245 drivers. The fairly complex circuit on the right of the schematic (U11, U12, U14, U10 etc.) was to take care of the S-100 bus 8 and 16 bit data capabilities. This circuit is discussed in detail for our 4Mg RAM board.
So far so good. However when I went to utilize the GD-5420 I/O ports, the IOCS16* pin did not go low! After a few frustrating days I realized that the chip must first be "activated" by a few handshake signals to its ports 102H, and 46E8H. We had a chicken and egg situation because I cannot get to these ports unless IOCS16* goes low and these port addresses will not be seen/acknowledged by the chip unless it is activated!
The net result of all this is that I had to do a second prototype board where in hardware I "carve out" the GD-5420 ports (with 74LS682's), allowing them to interact with the chip in a ISA bus manner and interfacing the data to/from the chip with the S-100 bus. Here is the more elaborate schematic required. A Second Prototype Board The second VGA S-100 video board had circuitry to recognize I/O ports 3BDH-3DFH, 102H, 46EBH such that if these ports are accessed (read or write) the bus drivers are activated allowing communication with the Cirrus chip. Here is a picture of this second board:-
There were still problems with the board. The port addressing circuit had to be combine with the S100 Status sINP and sOUT. Unfortunately I still have problems with the board/circuit. For some reason Cirrus chip is not active (at least there is no DRAM refreshing).
Having come to a road block with the above board/Cirrus chip I decided to step back and first try and get the chip working in a standard PC ISA bus.
This is the bus for which there are almost countless versions of the board.
I reasoned if I could transplant the above circuit to an ISA bus, I would have a much better chance of
getting it to work later on the S100 bus.
An ISA Prototype
Cirrus
GD-5420 VGA Board The ISA version of the board is shown below. It was tested in an old 80286 motherboard running MS-DOS. I used an old IBM-PC CGA board for video output. The VGA ROM bios was initially removed on the Cirrus ISA board so it was not initialized at boot time. Once MS-DOS signs on (using the CGA board), I loaded the VGA BIOS ROM code to 6000:0H and with a diagnostic program I wrote called "Cirrus.COM" called the VGA BIOS at 6000:3H. The source for this program can be obtained at the bottom of this page. After a fair amount of testing I realized the problem was that the Cirrus chip requires the raw address lines to come into it unlatched. Apparently it latches them internally itself but require the extra time an unlatched address is delivered to function correctly. The ISA version of the above board was made and is shown here:-
A Second ISA Prototype
Cirrus GD-5420 VGA Board A second ISA prototype board was constructed to confirm the above observations. Here is a picture of this board:-On this board none of the IDE address lines are latched but go straight into the Cirrus chip. This board behaved well displaying a proper VGA signal and correct graphics. Here is a simple text display example
running on an 80286 motherboard with MSDOS V4.01:-
A very important observation was
made with this board; When I cut the trace on the board that returns IOCS16* to the AT motherboard.
(In this situation the AT motherboard will send all I/O (R/W) 16 bit signals as two back to back signals on an 8 bit bus),
the board still worked fine.
There still was some EPROM addressing problem with the EPROMS on this board
however. I cannot seem to access them (or have them recognized by the AT BIOS).
Sometime later I will circle back and determine what that problem was.
The focus was getting an S-100 bus version working. I got around
the EPROM problem by placing the Cirrus ROM BIOS in RAM (at 6000:0H) and using my cirrus.exe program to activate it (jump to the code at 6000:3). This will activate the ISA VGA board as shown above. All this is done with MSDOS Debug:-
DEBUG VGA-ROM.COM M 100,8100,6000:0 Q Cirrus Then menu # 8.
VGA-ROM.COM is the code taken directly from a Diamond Computers System
ISA bus, "Speedstar Pro" VGA board ROM.
Another prototype S100 board attempt will be made with this chip.