Tuesday, September 18, 2012

486 DOS Gaming Machine

I put together a DOS gaming machine relatively recently, and while I have posted about it at the VOGONS Forums and The Vintage Computer Forums, I wanted to make sure that all the information was available here on my blog :

I.  CPU



I needed a system that would play most DOS games from 1988-1994.  Games prior to that can be played on my Tandy 1000, and games after that would be better on a Pentium machine.  So I had to pick a CPU that could be flexible, speed-wise.  I chose an Intel 486DX2/66, a very common option for 1993-1994 machines.  This is a standard 486DX2 that runs at 5V and has 8KB of write-through cache.  (There is an sSpec number, SX955, which supports write-back cache.)  It has 168 pins and uses a pin grid array.  Most retail motherboards for the 486 line use socket 3, so this CPU is perfect.  The CPU runs hot enough that a heatsink with a fan mounted on it or blowing at it is recommended.

I did not want to go too high end and use an AMD or Cyrix processor, because it would be easier to put together a Pentium system.  A Pentium, while having superior integer performance compared to a 486, completely outclasses the 486 when it comes to floating point performance.  True 3D space games like Quake use floating point math extensively, and barely run acceptably on the fastest 486-based CPUs.

II.  Motherboard



A proper motherboard is the next part that I needed to obtain to build a working system.  My requirements were for a middle-of-the-road motherboard.  I wanted to steer clear of PCI slots for several reasons.  First, PCI was just being released during the late 486/early Pentium era (1995) and the implementations had not worked all the bugs out.  Second, PCI makes for more complicated system setup.  Third, PCI video cards are much more likely to have VGA compatibility bugs than VLB cards.  Fourth, in no other system would I be able to run a VLB card.  So I had to find a board with two VLB slots, one for the video card, another for the hard drive controller.

Most motherboards I found that were sold as a part, as opposed to a system pull, were bare bones boards.  This means that there were no ports beyond the keyboard port, no headers for ports or drive interfaces, and no integrated hardware like a sound chip.  There would be ISA and VLB slots, the CPU socket, the RAM slots and the cache sockets.  The rest of the board would solely be dedicated to the system chipset.

When shopping for a vintage motherboard, it is critical to make sure you can find a manual for the board.  Even if the motherboard jumper's settings are silk screened on the board, the cryptic information may be difficult to decipher.  I chose a motherboard whose manual, or at least the board settings, was available online.  The motherboard is the ASUS VL/I-486SV2G.  This is the board's layout, from Total Hardware 99 :


This board uses the SiS 85C471 + 85C407 chipset.  One great feature of this board is that it uses standard 72-pin SIMM slots, instead of the older 30-pin SIMM slots still found on many 486 boards.  Only one SIMM is required in a 486 board to have working RAM because SIMM memory is 32-bit.  This board supports Fast Page Mode (FPM) DRAM, but not Extended Data Out (EDO) DRAM.  EDO support may be found on the last 486 boards.

The cache sockets support up to 1MB of cache, but finding nine cache chips of the appropriate speed and pin out is not easy.  Besides, external cache is nice, but more than 256KB really becomes subject to the law of diminishing returns.  However, external cache up to that amount really helps push this board beyond those that did not support external cache, so it was a must have requirement.

The final issue, and one that will not be shown on the diagram, is the board's battery support for the real time clock and saving the BIOS settings.  In 486 boards you will generally find three types of batteries.  First, there are batteries integrated into the clock chip.  This is the Dallas 1287 RTC, and once the battery has been depleted you must replace the chip.  Replacement chips are expensive these days, and I did not want to have to cut into the chip to solder on battery holder.  Second, there are batteries soldered onto the motherboard.  Usually these are three cells held together in a plastic package and are usually referred to as the "barrel type."  The problem with these, apart from needing to remove them from the motherboard, is that when the batteries get old they leak battery acid onto the board, damaging traces and components.  Third are the coin-slot holders, which usually hold a CR2032 3v cell.  These are the best because old batteries can be discarded and replaced without difficulty.  My board came with a CR2032 coin slot holder and keeps the date/time and settings perfectly.  There is a header to connect an external battery, and 4xAA battery packs are easy enough to find with a 4-pin header attached.

When shopping for motherboards, you may have a difficult time finding out what kind of BIOS it has.  Mine has an AMI BIOS, text-based.  The settings are a tad spartan and needed some tracking down to figure out what they do, but most are self-explanatory.  The neat feature about my board is that it supports the Large addressing and LBA modes for hard drives, so I need not be concerned with the 504MB BIOS barrier so frequently seen in 386 and 486 boards.  However, as my BIOS is dated prior to December, 1993, I must use the LBA mode, as the Large mode is buggy.  The LBA mode works fine with my 2GB Compact Flash card.

Other important settings for me is the ability to disable internal and (especially) external cache.  This is without a doubt the best way to implement slowdown.  Disabling internal cache can be done with software programs like cacheon and cacheoff.  Disabling the cache will result in remarkable slowdown, turning that 486DX2/66 into something like a 386DX40.  One performance feature I have noticed is that disabling the external cache will result in a measurable but not remarkable speed decrease and is best for fine tuning slowdown.  But if you disable the internal cache, it seems that the external cache has little effect on performance whether enabled or disabled.

Finally, there is the Turbo function.  My case has a Power button and a Turbo button, and both require a switch that will remember its position.  If your case does not have a turbo button, any switch with a catch and release mechanism can be used.  If using the Turbo function does not appeal, then you can put a jumper over the leads and your system will always be in Turbo mode.  If there is no switch connected or jumpers over the leads, then your system will not function as fast as it should.  The slowdown resulting from turning the Turbo off is equivalent in the benchmarks to disabling internal cache, but in my opinion it is not as smooth.  While Turbo in a 386 machine may actually reduce the clock speed to 8MHz, Turbo in a 486 machine generally inserts wait states from CPU to memory accesses.  However, the CPU is still processing data at 66MHz, so the effect is not uniform and jerkiness in games can result.

The program HIRAM supports this chipset, so you can load it to obtain Upper Memory Blocks without needing to load EMM386 or another Extended Memory Manager.  See my Ultima VII on Real Hardware post for more details.

Here are the fastest speed settings in the BIOS :

BIOS FEATURES SETUP :

CPU Internal Cache - Enabled
External Cache - Ditto
Quick Power On Self Test - Ditto
Boot Up Floppy Seek - Disabled
Boot Up System Speed - High
IDE HDD Block Mode - Enabled
Video BIOS Shadow - Enabled
C8000-CFFFF - Enabled
D0000-D7FFF - Ditto
D8000-DFFFF - Ditto

CHIPSET FEATURES SETUP :

Auto Configuration - Disabled
AT Bus Clock - 1/4CLKIN (33MHz / 4)
DRAM Speed - Fastest
DRAM Write WS - 0 WS
DRAM Write CAS - 1T
DRAM Write Burst - Enabled
Slow Refresh - Ditto
Hidden Refresh - Ditto
L2 Cache Scheme - Write Back
L1 Cache Scheme - Write Back (My 486 only supports Write Thru)
Cache Burst Read - 1T
Cache Write Cycle - 2T
Video Shadow - Cacheable
Fast Reset Emulation - Enabled
Fast Reset Latency - 2 us
Latch Local Bus - T2
Local Bus Ready - Transparent


III.  Video Card



In a 386 or lower system, the user is generally stuck with ISA graphics cards.  486 systems introduced the VESA Local Bus to implement faster access to hardware.  This helps eliminate the ISA bottleneck when playing first person shooters like DOOM or flight simulators like Microsoft Flight Simulator 5.  A VLB card was a necessity, and I especially wanted to avoid compatibility issues with games that used tweaked VGA features.  I chose the Diamond Stealth 24 VLB S3-805.  This card has 1MB of RAM and that is it, but it is enough.  I have had no graphics trouble with games or demos other than the Copper demo, which only works correctly with certain Tseng ET4000AX chips.  There are faster cards and better featured cards, but for what I want to run this card suits me fine.  It can support 640x480x256, 800x600x16 and 15-bit color modes.  It uses an S3 chipset, which includes Windows acceleration and a very respectable DOS performer.

IV.  Sound Cards

In this system, there is no one sound card that can do it all, so I have three in it.

A.  Roland MPU-401 + MIF-IPC-A



If this system were built in 1993, this card and breakout box would not be a contemporary of it.  However, it is the only Roland MPU-401 interface I own.  Its sole purpose is to handle MIDI output to my midi modules, of which I have five :

Roland MT-32
Roland CM-32L
Roland SC-55
Roland SC-55ST
Yamaha FB-01

B.  Sound Blaster Pro 1.0



I went back and forth about whether to put a SB Pro or a SB16 in this system, and I finally decided to keep the Pro.  My decision is based on the following :

1.  It is hard enough to find games that actually support OPL3 features, and many games that support dual OPL2 and OPL3 sound better on the older chipset.  Then as many of the games I play use Roland LA or GS synthesis as their preferred output device, the FM synthesis will not get much use.

2.  Most games this system will run use 8-bit digital sound.  The early 16s have poor sound output quality and insert pops and clicks when used with the 8-bit digital sound methods used by the Pro and earlier cards.

3.  I have a separate MIDI interface card that has no compatibility issues with games or handing note bugs.  The SB Pro's interface is NOT MPU-401 compatible at all, and that what games support (unless they have specific support for Sound Blaster MIDI).  Most later SB16s and all AWE32s suffer from the hanging notes MIDI bug, some more than others.

C.  Gravis Ultrasound ACE



I have discussed the gaming benefits of the Ultrasounds in an earlier post, and everything I said there relevant to this card applies.  The ACE is designed to function alongside a real Sound Blaster card.  The only issue is my card is a 1.0 version and I need to reverse the stereo outputs.  I also need to use a special version of ULTRINIT program to properly disable the joystick interface, even though this card does not have a joystick port.  The Adlib ports are obviously disabled, because this thing does not sound anything like a real Adlib.  However, the Ultrasound SBOS emulator works in this motherboard, meaning it has a working Non-Maskable Interrupt (NMI).  In this system I needed to set the ATCLK to 7.159MHz (or lower) and set separate GUS and MIDI IRQs for the music to work properly in games like DOOM and Epic Pinball.

V.  I/O Interface & Drives

This motherboard has no parallel, serial or game ports and no floppy or IDE interfaces.  I chose the Kouwell  KW-560D, since I could buy it used and a manual with the jumper settings is a must.  This card has 32 jumpers.  It supports two serial ports, (headers required), one parallel port, one game port, one ISA/IDE hard drive interface and one VL/IDE drive interface.  It uses the second VLB slot in this motherboard.

The serial supports 16550 FIFO, the floppy disk controller up to 2.88M drives, the parallel port can be set to unidirectional, bidirectional, EPP and ECP modes.  The gameport should not be used because it only supports 2 axes/2 buttons and is not speed sensitive.  The VLB/IDE port need not have the high speed features enabled if stability is crucial.  All of the above options except the VLB/IDE speed are set strictly by jumpers.  The card has no BIOS socket which can be used to break the 504MB hard drive barrier.  All ports can be disabled.

The VL/IDE interface offers increased speed through the VLB bus.  The 16-bit ISA/IDE tops out at 3MB or so a second, but the VLB interface will allow much more bandwidth.  However, the faster the speeds, the more likely hard drive corruption will occur.  I use a SanDisk 2GB Compact Flash card rated for 15MB/sec with a CF-IDE adapter.  SanDisk makes reliable cards and this was the fastest card available at this speed.  I wanted to keep to 2GB because that is the maximum drive partition size in MS-DOS 6.22.  Drive D should always be the CD-ROM drive, and 2GB should be enough to play most DOS games without having to add and remove games too often.

For my floppy drive, I use an Epson SD-880 combo 5.25"/3.5" drive.  This drive occupies only one 5.25" bay and supports both types of HD disks.  For the IDE CD-ROM, I picked something generic.  It is an HP CD-Writer Plus 9300, which was probably released close to the turn of the century.  It is reliable, not too noisy and will have no trouble with CD-R discs.  Early drives tend to be in tough shape, rely on very complicated mechanisms, use proprietary interfaces, and are not fast.  A universal cable will be needed to output stereo CD audio from the drive to a Sound Blaster Pro, which uses a white connector.

VI.  Case, Monitor, Speakers, Mouse, Keyboard & Joysticks

I bought a generic AT case off ebay, but it was new.  A new case is hard to come by, but this case does everything I need with no fuss.  It supports 2 x 3.5" bays (sideways) and 3 x 5.25" bays.  It has well-sized Power, Reset and Turbo buttons and a keylock.  I did not have any experience with a keylock function until I got this case, and the key has to be in the unlocked position or the machine will not accept input from the keyboard.  This is a desktop case, not a tower, which would have been more typical for a home user of the time.  I put an Intel Inside sticker on it to lessen the generic feel.

My monitor is a generic 17" VGA shadow mask device from KDS.  It has a nicely curved tube and displays color well.

I am using my Cambridge Soundworks Gigaworks S750.  This will change because the left and right speakers are eight inches away from each other, so I have no practical stereo separation.  I will try to get a pair of bookshelf speakers, but they must be in an off-white color to match the ascetic of the system.

My keyboard is an IBM Model M 1391401, the virtues of which I have previously waxed enthusiastically and need not repeat here.

My mouse is a generic three button serial mouse with a switch for Microsoft and Mouse Systems modes.  Microsoft mode supports 2 buttons, but Mouse Systems supports 3.

My first joystick is a Gravis Gamepad for responsive digital controls.  Commander Keen does not play the same with an analog stick.

My second joystick is a CH Products Flightstick Pro with four buttons and a throttle wheel.  If I were a sim junkie I would get a Thrustmaster FCS or FLCS, the Rudder Control System and the Weapons Control System Mark II (Throttle).  I am not, but this offers more functionality over the standard 2 button stick.

I will finish this article with my speedsys results for this system :


6 comments:

Jason Romano said...

Thanks for this write up! One question: what speed memory are you using?

Great Hierophant said...

I am using a pair of 8MB 72-pin SIMMs, supporting Fast Page Mode (FPM) and rated for 70ns.

Anonymous said...

Check this out. I'd say, for games SCC1/LAPC1 is the best ISA card when combined with GUS ACE and something like PAS/Thunderboard, but as for what a composer could do SW60XG ISA was as good as evidenced by some demos yamaha put out with it. Most people probably had the wavetable version of it.

https://soundcloud.com/oplawaai3/jimi-hendrix-voodoo-chile

As the VST synth sound the same (maybe even better if you have high end realtek codec), it's only interesting for someone building ISA based classic midi composing system.

One of the comments links to the XG stuff that I'd grab while there unless you want to try buy it (could be hard I think Yamaha ended their XG software line).

http://jasonwilliams400com.startlogic.com/snor/weeds/Yamaha_XG/

Anonymous said...

I would like to know if there is a board like the one you have, but with 4 pci slots instead of 2.

Anonymous said...

Sorry, I meant to say VLB slots, not PCI slots.

Great Hierophant said...

There many boards like mine with 3 VLB slots, but populating all three slots was seriously pushing the stability of a bus not designed for a direct connection to multiple peripheral cards. 4 VLB slot boards would be very rare, if they exist at all.