S100 Computers

HomeS-100 Boards HistoryNew BoardsSoftwareBoards For Sale
ForumOther Web SitesNewsIndex  
  
An S-100 Bus 16 Bit Trident VGA Video Board.   
  VGA-16 Board
 
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 TVGA9000 made by Trident Microsystems.  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.   See here also for more information about this chip.

A while back I constructed an 8 bit video RAM version of the board for use with our 8 bit 8088 CPU board. With that CPU the board worked fine. Moving to a 16 bit RAM interface would appear simple.  However after numerous prototypes and approaches I concluded that interfacing such a chip to our 8086, 80286 and 80386 CPU boards was not possible with the layout on those boards.  The Trident (and other VGA chips like it) require the capability of the CPU circuit to accept 16 bit data in two back to back bytes.  This requires the CPU board to monitor the S100 bus signal SIXTN* to see if the target board of the CPU can accept 16 bit data.  Normally this is not a problem since all our S100Computers (and later S100 bus boards of the 1980's)  could work with 16 bit data.  Fortunately the 80486 CPU has the internal capability to talk to an 8, 16 or 32 bit data bus transparently "on the fly".  We have here an upgrade then of the earlier 8 bit Trident VGA board to allow the board to work with 16 and 8 bit video RAM and our 80486 CPU board.  Video RAM is faster not only because of the 16 bit data path but also because this board normally requires no wait states from the board itself. 


TVGA9000 General Information
The TVGA9000 according to Trident Microsystems is a versatile and full-featured single-chip solution for VGA (Video Graphics Array) systems. The chip provides register-level compatibility, enhanced graphics and text modes, support for 256Kx4 DRAMs, plasma display control; and support for analog VGA, , EGA, CGA, and MDA monitors. The chip provides register-level compatibility with standard IBM VGA modes and backward compatibility with EGA, CGA, MDA. and Hercules modes. The enhanced graphic and text modes provide high-resolution displays in 4, 16, and 256 colors. Support for 256x4 DRAMs saves board space and provides cost savings.

Display support for analog VGA. digital VGA, plasma, EGA, CGA, MDA. and Hercules monitors assures that the TVGA9000 board solution may be used with virtually any monitor on the market.

Compatibility
The TVGA9000 supports both the PC/AT bus and the PS/2 Micro Channel bus. The TVGA9000 is fully compatible with all standard IBM VGA modes and EGA. CGA. MDA, and Hercules modes, and allows the following: Use of all application software for VGA. EGA, CGA, MDA, and Hercules modes Emulation of EGA, CGA, MDA. and Hercules modes on a VGA monitor.

Text Modes
  
 Extended Graphics and Text Modes Extended graphics modes supported by the TVGA9000 include the following:
    64Ox400, 640x480 and 800x600 in 256 colors from a palette of 256K116M.
    800x600 and 1024x768 (interlaced or non-interlaced) in 16 colors from a palette of 256K116M.
    1024x768 in4 colors from a palette of 256K/16M.
    Extended text modes offer 132-column text with 25, 30,43. and 60 rows.
      
  Trident Chip
    
This chip is clearly an almost self contained XVGA board.  The only major support chips are a 27C256 BIOS EPROM and four 4X256K DRAM chips.   The datasheet for the chip can be obtained here.

Unlike the 8 bit VGA board I decided to use a 160 pin surface mount converter miniboard to mount the video chip.  This "adaptor" has extra long solder pads so soldering the Trident VGA chip to the adaptor board is very easy. 
  
  Adaptor
    
To do so, first apply plenty of solder flux paste to the pads, then with a fine tipped solder tip run solder along all the pads. It will bulge up on the pads themselves with no bridges.  Next place the Trident chip on the pads. Carefully aligned the chip so all pins are aligned. Then solder (only) pin 1 by lightly pressing down on the chips pin.  Next do the same for pin 81.  Very carefully look around the chip and be sure each pin is aligned up exactly with it's pad.  Use a sharp blade between pins to reposition a pin if necessary.   Then go around the chip by simply touching the boards solder pads at the end of each pin. The solder will quickly weak up under the pin.  No more than a half a second is required.  It actually becomes quite easy to do.  Afterwards spray the area with flux remover and inspect each pin under a magnifying glass/light by trying to move a pin with a blade edge. It should not move.

These 160 pin adaptors can also be obtained commercially (e.g.. Proto-Advantage.com).  However those adaptors have the normal small solder pads.  If you are good at soldering SMD chips this is not a problem.

Using an adaptor also allows one to better space components on the S100 board because the VGA video circuit can lie under the VGA chip itself.
   
   Under Chip
    
You do not actually have to use the four 20X2 sockets on the board, while not recommended,  you can press the adaptor pins directly into the holes on the S100 board. The connections are tight enough at least for testing. Once completed however I recommend soldering the adaptor in place.  With or without the board 40X2 sockets,  the height of the board is still within a standard S100 bus motherboard spacing. 

The third reason for using an adaptor is that in the future I intend to use other VGA chips.  In theory at least, the same S100 board can be used.  This may not be possible, don't count on it however.

The KiCAD data, schematic and GAL files for the board are given below.

I decided to stick with the 4 GAL chip approach used in our 8 bit VGA board rather than use a 1508 CPLD.  One could go either way.  At least with GAL's one does not need  a CPLD programmer for this board. Most modern ROM burners also burn GAL's.

I used the following schematic for data transfers.
  
  Data Buffers
    
The relevant GAL code is in the "ABC_GAL"

/A_SIGNAL = bsMEMR * ISA_SEL * bpDBIN * bsXTRQ                  ;Enable CPU READ 8 bits from U26
          + bsINP * ISA_SEL * bpDBIN * bsXTRQ
          + bsMEMR * ISA_SEL * bpDBIN * MEMCS16                 ;Enable CPU READ 8 bits from U26
          + bsINP * ISA_SEL * bpDBIN * MEMCS16

/DIRECTION_1 = bpDBIN                                            ;LOW, READ 8 bits, U26, Set pin 1 direction B -> A


/B_SIGNAL = bsMWRT * ISA_SEL * /bpWR * bsXTRQ                    ;Enable CPU WRITE 8 bits via U27
          + bsOUT * ISA_SEL * /bpWR * bsXTRQ
          + bsMWRT * ISA_SEL * /bpWR * MEMCS16                   ;Enable CPU WRITE 8 bits via U27
          + bsOUT * ISA_SEL * /bpWR * MEMCS16

DIRECTION_2 = /bpWR                                              ;HIGH, WRITE 8 bits, U27, Set pin 1 direction A -> B


/C_SIGNAL = bsMWRT * ISA_SEL * /bpWR * /bsXTRQ * /MEMCS16        ;WRITE 16 bits via U108 for video RAM
          + bsOUT * ISA_SEL * /bpWR * /bsXTRQ * /IOCS16
          + bsMEMR * ISA_SEL * bpDBIN * /bsXTRQ * /MEMCS16       ;READ 16 bits via U108 for video RAM
          + bsINP * ISA_SEL * bpDBIN * /bsXTRQ * /IOCS16

/DIRECTION_3 = bpDBIN                                            ;U108 & U3, Set pin 1 bi-direction for video RAM


/D_SIGNAL = bsMWRT * ISA_SEL * /bpWR * /bsXTRQ * /MEMCS16        ;WRITE 16 bits via U3 for video RAM
          + bsOUT * ISA_SEL * /bpWR * /bsXTRQ * /IOCS16
          + bsMEMR * ISA_SEL * bpDBIN * /bsXTRQ * /MEMCS16       ;READ 16 bits via U3 for video RAM
          + bsINP * ISA_SEL * bpDBIN * /bsXTRQ * /IOCS16


/X16_LED@ = ISA_SEL * bsXTRQ                                     ;Flash LED indicating a 16 bit board request

/SIXTN@   = ISA_SEL * /IOCS16                                    ;Indicating to S100 bus Trident chip can handle 16 bits
          + ISA_SEL * /MEMCS16

/ISA_SEL_LED@ = ISA_SEL                                          ;Board select signal
  
Those with some experience will see that the above code and chips are in fact somewhat redundant. One could program the above into 3 buffers, but since the is no shortage or real estate on this board I went with the simple direct approach. The GAL code for this board for the "VGA_IO_GAL", ISA_SEL_GAL" EXTRA_GAL" GALs is identical to the GALs on the 8 bit VGA board.  However the "ABC_GAL" code is different.

The Trident chip has a number of initial startup configuration options.  A number of these are brought out to the jumpers on P12 and P13.
     
  Jumpers
  
Here is the default configuration:-
     JumpersJPG
 
For those that wish to experiment, jumpers p12 5-6 and JP9 should allow you to disable the onboard ROM and use an external RAM based BIOS.  I have not succeeded in getting this to work so far. 

Board Construction
There is nothing particular special about constructing this board.  Use the normal construction process we have in the past. For example test the orientation of the LEDs by grounding the pins of U56 and U57 (without any board IC's) .  You can use an old 5A LM7805 voltage regulator or the newer Pololu or EzSBC 5V switching regulators.  There are footprints on the board for all three types. However the solder holes for the EzSBC 5V are slightly too close. Very carefully bend the two pins inwards and space the regulator away from the board with a washer. Remember these nuts act as a ground for the regulator. Make sure they are tight. Check the voltage before adding IC's.  Be careful to get the capacitor orientations correct. Don't forget R5 under U108. Add everything except the Trident chip first. The RAM and ROM LED's, D1 and D8 should flash with the 8086 memory map "A" command around the address range A0000-CFFFFH. If not check the programming of the U56, U57 or U19 GALs.  Be sure to insert jumpers JP9, P104 and P14 1-2 & 3-4.

BTW, I considered using an EEPROM (a 28C256) instead of the UV 27C256, (would need  two reconfiguration jumpers),  I stuck with the high speed UV chip (Jameco #29714 or #140476) however.  If I get the Cirrus Logic GD5420 driven board to work I will add that option. 

With the Trident chip present, the memory map should look like this:-
  
  MemMap

The VGA BIOS code resides in U101. Its a binary copy of the BIOS from a 1993 Diamond Inc. "Speedstore Pro" ISA PC VGA Board. The Binary file is supplied below.  You "burn" it directly into a 27256 or (better) 27C256 PROM.  Here are the relevant pictures for the Wellon VP290 Programmer.
  
  Burn ROM
  
Note because of the strange way the VGA chip accesses a single ROM, the ASCII display of the data shows only every second byte. Even bytes are in the lower half of the ROM, odd bytes in the top half.
 
VGA Board Bugs
/Notes
Please note this board will only work with our 8088, Baby and Full Size 80486 CPU boards. It will not work with our 8086, 80286 or 80386 CPU boards.  The latter boards do not recognize the S100 bus signal SIXTN*. This signal is returned to the CPU board if the target S100 board (RAM or I/O board) cannot process a 16 bit data word.  All our previous S100 boards can, and do, process 16 bit data with no problems.  However these VGA chips actually require the ability (upon initialization) to process 16 bit requests as two back to back 8 bit requests.  Our earlier CPU boards (and most old S100 bus 8086/80286 style CPU boards) cannot do this.  The 8088 and 80386 CPU do this internally within the CPU and so work fine.

There is an overwrite on the silk screen for the resistors R111, R112 & R110 at the top left of the board making the values hard to read.  Their values are shown here.
Overwrite

If you are pushing the 80486 to high clock rates try and have this board near the 80486 CPU board in the S100 bus. A characteristic of the board not responding correctly is the appearance of random white character squares on the screen with a screen scroll.  This can happen with a large 20 slot motherboard in particular. If it persists reduce your CPU board oscillator clock rate.

For high CPU clock speeds if you can, use a fast UV EPROM such as the AMD 27C256-55 (55ns), e.g. Jameco 266079.  Somewhat to my surprise I found it works best at high speeds with 74LS245 bus drivers rather than 74F245s.

I currently have 3 of these boards running. On one, very occasionally the Trident chip on power up does not initialize completely and comes up with a green background screen instead of the normal black background.  Hitting reset always corrects the problem.  I suspect the delayed reset pulse with R102 & C104 needs to be tweaked.

Our MSDOS support board supports most MSDOS programs right out of the box.  However it does not contain an 8237A DMA controller found on the IBM PC motherboard. Any VGA software that utilizes that chip will not work correctly in our system.  The only common (at the time) MSDOS program I have tried with the board that had this requirement was the DOS program "WindowDOS", a directory display program.  I have thought of doing yet another MSDOS support board (a V4 version) with a DMA controller chip onboard.  I'm open to opinions, however I may wait until I get a PDP-11 CPU S100 board working because that system makes extensive use of DMA.

Otherwise no hardware bugs have
been seen for this board to date.  It boots up MSDOS (V4.01)  fine.  There seems to be a software problem in the 80386/80486 ROM BIOS when running the board in the old IBM PC CGA board low graphics mode with programs like "PACMAN".  The graphics appears fine for the 8086/8088 BIOS.  If somebody has time perhaps they could dig into this.  I suspect it has to do with the initialization of low RAM in the 80386 BIOS code.  Here is a picture of the Pacman initial screen you can download from here.
     
     Pacman

    
Here is a short video showing the booting of MSDOS V4.01 on the VGA board.
  
 
  
      
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, "group purchases" are made from time to time.  Please see here for more information.
   
    
The links below will contain the most recent schematic of this board.
Note, they may change over time and some IC part or pin numbers may not correlate exactly with the text in the article above.
  
MOST CURRENT  VGA-16 BOARD SCHEMATIC   (V15a  7/15/2016)
MOST CURRENT VGA-16  BOARD LAYOUT    
(V15a   7/15/2016)
MOST CURRENT VGA-16  BOARD KiCAD Files     (V15a   7/15/2016)
MOST CURRENT VGA-16 GAL Files 
    (V15a   8/14/2016)
MOST CURRENT GERBER Files      (V15a   7/16/2016)

MOST CURRENT BOM  LIST              (From  Rick Bromagem  9/12/2016)
VGA BORD DIAGNOSTIC SOFTWARE (Cirrus.A86)  (V1.7  2/4/2015)
TRIDENT ROM  (.zip file)   (by Sergey Kiselev,    V15a  9/15/2016)

TRIDENT ADAPTOR BOARD LAYOUT      (V15a   7/16/2016)
TRIDENT ADAPTOR GERBER Files      (V15a   7/16/2016)


Other pages describing my S-100 hardware and software.

Please click here to continue...

This page was last modified on 11/30/2017