If your like me, you have a huge catalogue of really good PC games for MS-DOS and Windows 9x, many of which do not run properly (or at all) on modern PC's. There are emulators and virtual machine options available, but the end results can be quite variable, often frustrating and do not fully capture the charm of PC gaming in the 1990's.
To resolve this I decided to build myself a DOS and early Windows compatible PC to run my games properly. This sounded simple when I had the idea, but after a little contemplation I realised it's more complex than I first thought. The obvious solution would be to build a PC from the 1990's, but 1990's hardware is getting unreliable and often can be expensive as it becomes “collectible”. Besides, in the 1990's there was always a particular game which required a hardware upgrade to run properly which resulted in my PC evolving through the years and never remained static for long. Hmmm……
I quickly realised using the newest hardware possible for my PC would be better. It would be faster, more reliable and cheaper in many cases. Hardware from the Windows XP era is largely unwanted and cheap at the moment. I could also take advantage of some more modern hardware to give me performance I could only dream about in the 1990's.
For my PC project to meet my ideal requirements and enable me to play my whole back catalogue of games the hardware has to be compatible with MS-DOS, Windows 95, Windows 98, Windows ME and above all be able to run the games themselves. I limited it to CD-ROM based games, as most games from the floppy disk era can be easily run inside DOSBOX on a modern PC. I also wanted the PC to be as small as possible and needed it to fit inside a MicroATX desktop case I had lying around.
MS-DOS and Windows 9x will basically run on PC's that are relatively new due to the backward compatible nature of the x86 (and even x64) architecture. However, newer hardware can also have it's draw backs due to missing drivers or drivers which are not fully optimised for older OS's. Also, these older OS's do not support multiple cores or threads often found in hardware produced in the last decade or so. These issues can result in serious compatibility issues with the games. After some extensive research I determined the following;
Motherboard and CPU:
Neither MS-DOS or Windows 9x can utilise multiple cores or threads, so I found the best compromise of performance and compatibility was either an earlier single core Pentium 4 or AMD Athlon 64 processor. The Athlon 64 was easier and cheaper to find, so I opted for that.
The early single core Athlon 64 was available for 2 platforms, Socket 754 and Socket 939. Socket 754 was the earlier platform often with AGP chipsets and Socket 939 was newer with PCIe. Windows 98 / Me was natively compatible with AGP, but not PCIe. There are third party drivers and patches which will allow Windows 98 / ME to work with newer PCIe platforms, but to avoid compatibility problems I opted for the older Socket 754.
Without extra patches Windows 98 / Me will not work on processors over 2.2GHz or so.
Windows 95 has problems over 300MHz, but a tried and trusted patch is available.
Therefore an Athlon 64 around 2GHz would be perfect.
Many of the Socket 754 motherboards released in 2003-2004 actually have Windows 9x drivers available. After a quick search on Ebay I found the perfect candidate, a MSI K8MM-V (MS-7142) complete with an Athlon 64 3200+ (2.2GHz) CPU for less than £30. The K8MM-V is a Micro-ATX motherboard which will nicely fit in my chosen small form factor case and Windows 9x drivers were still available from the MSI support website.
MS-DOS and Windows 95 only uses up to 64MB memory.
Windows 98/ME works with up to 1GB memory, however, over 128MB can cause problems. Vcache is limited to a maximum of 800MB, however, on PC's with large amounts of RAM (over 128MB) the Vcache size can become large enough to consume all of the available address space in the system arena. This is particularly a problem if the computer has an AGP graphics adapter where the AGP aperture is mapped to this address space.
For systems with more than 128 MB of RAM, setting a VCache maximum of about 70% of your total RAM is recommended.
If you have more than 512 MB of RAM, a VCache maximum of 524,288 KB (or a little less) is recommended.
This is acheived by adding a MaxFileCache=x entry in the [vcache] section of SYSTEM.INI, where x is the maximum value you wish to set.
Systems with more than 1 GB of RAM are NOT recommended.
Microsoft state, “Windows Me and Windows 98 are not designed to handle more than 1 GB of RAM. More than 1 GB can lead to potential system instability.” Windows 98 or ME can continuously reboot, hang or perform serial reboots during the Windows upgrade process. Although, this can be resolved by adding a MaxPhysPage=40000 entry in the [386enh] section of SYSTEM.INI which limits the amount of RAM Windows can access to 1 GB.
As my system has 512MB I set the vcache value to 367000;
Whilst the motherboard has on-board video it is not particularly fast or compatible with MS-DOS games. The motherboard also has an AGP 8x slot for a much better add-on card. I looked at the following AGP 8x graphics cards;
||All ATI AGP cards from this era are not very suitable for MS-DOS. This is a shame as the Radeon 9800 Pro or XT is a very fast card in Windows 98/Me.
|S3 Savage 4
||Very compatible with MS-DOS, but older slow technology only available in AGP 4x.
||Not compatible with MS-DOS, poor gaming performance compared to Geforce 4 TI.
|Nvidia GeForce 4 TI
||Excellent MS-DOS compatibility, good performance in Windows9x.
Build quality of these cards can be a little variable due to cheaply mass produced models toward the end of the GeForce 4 life.
The recommended driver for Win9x is 61.76.
|Nvidia GeForce FX
||Still retain excellent MS-DOS compatibility.
Lower FX cards not as fast as GeForce 4 TI. FX5900 or FX5950 give good performance though.
The recommended driver for Win9x is 61.76.
|Nvidia GeForce 6 Series
||Excellent performance, particularly the 6600 and 6800. The 6800 is one of the fastest Windows 9x compatible AGP cards available and more than twice as fast as the FX5950 Ultra.
The GF 6 Series loses some backward compatibility as they dropped support for palettized textures, which is a problem for a few games.
GeForce 6200 / 6600 Requires later Win9x drivers (66.94, 71.84, 77.72 and 81.98) and there are various reports of instability and compatibility issues with these drivers, particularly with DOS based games. Driver 81.98 is probably the worst and should be avoided.
The latest recommended Nvidia driver for Win9x is 61.76 which is only compatible with the GeForce 6800.
Driver 61.76 supports DirectX9.0b, whereas 66.94 or newer supports DirectX9.0c. 66.94 was also the last release to support Windows 95.
GeForce 6200 with TurboCache does not work well with any of these Win9x Nvidia drivers.
As you can see from the research above the Nvidia GeForce cards are the best for both performance and compatibility in this application. It also seems the GeForce FX5900 or FX5950 would be a good compromise of performance and compatibility, so I chose the FX5900 XT which was available on Ebay for less than £30.
The Nvidia drivers are all still available on the Nvidia website;
Obviously a Creative Soundblaster Pro, 16 or AWE32 ISA card would be the best as they were fully compatible with both MS-DOS and Windows 9x. If the chosen motherboard has an ISA slot then go for either of them.
However, by the early 2000's many motherboards dumped ISA in favour of PCI slots. Early Soundblaster PCI cards had MS-DOS compatible drivers, but these were problematic and rarely worked well, particularly on cards which were wavetable based instead of FM synthesis.
There are a few good non-ISA alternatives though;
|VIA AC'97 Audio Chipsets
||These were often found built in to motherboards and many of the early chipsets had good MS-DOS drivers. Look for VIA VT82C686A/VT82C686B/VT8231 southbridges. Drivers can be found here;
|Realtek AC'97 Audio Codec
||These were often found either built into motherboards or on cheap generic audio cards. Many chipsets are compatible with their DOS driver.
|These were a cheap audio card that were more backward Soundblaster compatible than Soundblaster PCI cards themselves. Creative eventually purchased Ensoniq for their technology and continued to make cards with the Ensoniq chips. Earlier versions of the Ensoniq with the ES1370 chipset which were pre AC'97 are the most DOS compatible and can be found on sound cards such as the AudioPCI 3000.
|Creative Soundblaster PCI64
||Early models are apparently based on the Ensoniq design with the ES1370 chip and as a result it's DOS drivers are much better than other SB PCI cards. The first production batches of the PCI64 are reported to be Ensoniq audioPCI 3000 cards with a PCI64 label stuck over the chip. Later PCI64 and PCI128 cards were based upon the later 1371 and 1373 Ensoniq chip, but these are not quite as backward compatible.
|Creative Soundblaster Live!
||Reports on a few websites indicate that the DOS drivers supplied with the later Live! cards work pretty well.
|SiS 630 / 730 Chipsets
||These are often found on motherboards or budget sound cards supplied by companies like Yamaha, Cirrus Logic and Trident. Modified DOS drivers are available online and various reports indicate they work pretty well.
My chosen motherboard does not have ISA and the on-board VIA audio is not one of the chips compatible with their DOS drivers, so I opted for the Ensoniq AudioPCI 3000 card which I found on Ebay for £9.99.
A floppy disk drive is useful for installing the OS's and software so I added a temporary one to my PC. There is no room in my Micro-ATX case for a floppy drive so it will be removed once the setup is complete.
An IDE CD-ROM drive is essential, universally compatible and simple to install on all the operating systems. I happen to have an old Sony model lying around. Sorted!
Choosing hard disk storage is a little more complex. Windows 9x does not like hard disk drives larger than 128GB (LBA mode), and FAT32 is not recommended (by Microsoft) for partitions larger than 32GB.
If you are lucky enough to have built in SATA ports and a BIOS which has legacy options, then go with a SATA hard disk up to 128MB. 32GB or 64GB SSD's are perfect for use as the primary disk drive and in 2018 are readily available for very little money.
If the chosen motherboard does not have SATA then this means an IDE storage device is required. Using a later generation IDE hard disk, like the 500GB WD Black I have in my spares cupboard, is not really suitable. Another option would be to use an old 120GB IDE hard disk, but drives from this era were painfully slow and are probably getting a little unreliable by now.
However, there are some more modern storage options cheaply available in capacities less than 128GB, such as uSD / SD cards, Compact Flash cards, mSATA SSD's and even SATA SSD drives. Although none of the options are IDE there are adapters available. Using the actual hardware and a 32-bit Linux Live CD I tested the read performance of some of the storage options. A 120GB WD Caviar hard disk drive was used as a benchmark.
|120GB WD Caviar IDE
|32GB Sandisk uSD card in SD-CF adapter plugged into IDE-CF adapter
||Rated at 80MB/s, must be limited by the performance of the CF-uSD adapter.
|32GB mSATA SSD inserted into IDE-mSATA adapter
||Rated 220MB/s read & 90MB/s write, must be limited by maximum performance of the IDE-mSATA adapter.
|32GB Sandisk Extreme CF card in IDE-CF adapter
||UDMA 120MB/s rated card. Obtained slightly higher speeds than rated.
|64GB Sandisk SATA-III SSD in IDE-SATA adapter
||Rated 550MB/s read and 450MB/s write, must be limited by the maximum performance of the IDE-SATA adapter.
|64GB Sandisk SATA-III SSD on internal SATA-I port
||Rated 550MB/s read and 450MB/s write, must be limited by the maximum performance of the SATA-I port. Essentially this is the fastest storage option possible on this hardware.
As you can see, all the modern storage devices are faster than the original hard disk and as they are all solid state the access times are much much faster too.
The compact flash card was by far the fastest IDE option as it's UDMA architecture interfaces directly to the IDE port using the CF adapter. This meant is no extra hardware slowing down the storage device. Unlike modern SSD's, CF cards do not have intelligent storage management to prolong it's lifespan and is much better suited for static data which is read often. Operating systems like Windows perform a lot of write operations and would wear out a CF card a lot more quickly, but MS-DOS does not.
Luckily for my PC, the motherboard has 2 built in SATA-I ports and as you can see from the benchmark this is the fastest option available to me, so I have chosen to use a Sandisk 64GB SSD as my primary boot drive which I will install Windows 95, 98 and Me on. As the CF card performed so well I also opted to use this as a second drive with the MS-DOS partition and an extra FAT32 partition for storing data.
Final PC Build Specification:
- AMD Athlon 64 3200+, 2.2GHz, Socket 754 CPU (ADA3200AIO4BX)
- Akasa AK-CC1101EP02 Low Profile 80mm CPU Cooler
- MSI K8MM-V (MS-7142), Micro-ATX, Socket 754 Motherboard with on-board audio & video disabled.
- 512MB DDR400 Memory
- Nvidia GeForce FX 5900 XT, 128MB, AGP 8x Graphics Adapter
- Ensoniq AudioPCI 3000 Sound Card
- Sony CD-RW IDE Optical Drive
- Sandisk 64GB SATA-III SSD
- Sandisk Extreme 32GB Compact Flash (CF) storage with IDE-CF adapter
- CiT 300W Micro-ATX Power supply, M-300U
- Low Profile Micro-ATX Desktop Case
- MS-DOS 6.22, Windows 95 OSR2.5, Windows 98SE & Windows ME
Installing The Four Operating Systems
For the operating systems I decided on MS-DOS 6.22, Windows 95 OSR2.5, Windows 98 SE and Windows Me. MS-DOS 6.22 is considered the last of the proper DOS OS's. Windows 95 OSR2 is required for driver compatibility, but OSR2.5 includes the USB supplement which will allow me to use USB game controllers. Windows 98 SE was a lot more stable than the original 98.
Installing MS-DOS on the CF card is simple, so I thought I would start by doing the complicated part and installing Windows 95, 98 and Me on the single 64GB SSD.
Unlike MS-DOS, Windows 95 / 98 / Me are very particular about their boot drives (or partitions). The boot drive must be drive C, it must be a primary partition and it must start within the first 2GB of the hard disk. Also, most Windows 9x installers will refuse to install if it detects another Windows 9x OS on the drive. This makes installing more then one Windows 9x quite difficult, but with the help of a great little boot manager program called XOSL and a bit of trickery it is possible.
First of all 3 primary partitions need creating on the hard disk, one for each Windows OS. Do this without using FDISK, using instead a third party partition manager. For Windows, MiniTool Partition Wizard works great, or for Linux, Gparted. It is also neccessary to either connect the drive to another PC or use a suitable bootable CD in the system. As I have a bootable Linux Live CD I used that and Gparted.
I created 3 identical Primary FAT32 (LBA) partitions on my 64GB drive. Then I marked partition 1 as “bootable”. To allow the different Windows versions to install I marked the unused partitions as “Hidden”, in this instance partitions 2 and 3. This allows Windows to use the non hidden partition to be Drive C as it thinks it is the only one. This also hides any other Win9x OS you have installed previously.
With the hard disk in the PC I booted into the Windows 95 (OSR2.5) installer. My Windows 95 CD is bootable, but booting from a floppy disk is also possible as long as the correct CD-ROM drivers are installed. Then I ran the Windows 95 SETUP program and installed it.
Once completed the installer reboots and then fails to load Windows 95 with a “Windows Protection Error”. This is expected as Windows 95 only supports CPU's with a frequency less than 350MHz. Microsoft issued a patch back in the 90's, but this only worked up to 2.1GHz. As my PC runs at 2.2GHz I needed the excellent patch from LoneCrusader called FIX95CPU V3. There are many ways to install this patch, but I created a bootable floppy using the supplied image file and used that. Then I tried booting Windows 95 again and it worked. Windows 95 is now ready to have the drivers installed, but I will do that later once I have all the OS's installed and bootable.
Once I verified I had a booting Windows 95 install I proceeded to Windows 98. Before doing this I needed to change the partition flags. Again using my Linux Live CD and Gparted I set partition 1 and 3 as hidden and partition 2 not hidden and bootable. This allows the Windows 98 installer to only see partition 2. I then proceeded with the installer. Again, I have a bootable Windows 98SE install CD. Once the install was complete I rebooted to check it's fully functional. No patches needed for Windows 98.
Now it was time for Windows ME, so using the Linux Live CD I changed the partition flags yet again. This time partitions 1 & 2 as hidden and partition 3 not hidden and bootable. A bootable Windows ME CD made installation quick and simple. Another reboot to check ME was fully functional, which it was. I then used Gparted to reset all the partition flags to normal, no partitions hidden and partition 1 as bootable. This resulted in the PC only being able to boot into Windows 95.
Now I needed a way to select which OS to boot, which is where XOSL comes in. I booted into the XOSL installer from a floppy disk created from an image file I downloaded. The install process was self explanatory and after a reboot was greeted with the XOSL menu. From here I clicked “Setup” and created menu entries for my 3 partitions. The clever thing about XOSL is that you can configure it to automatically set other partitions as hidden when it boots from a partition. It is this feature which allows multiple Windows 9x installations to work from the same hard disk. So I configured this in the setup also. Another reboot and I am greeted by 3 OS choices in the XOSL menu, all of which worked perfectly.
Now for the easy part. I switched the primary boot drive to the CF card in my BIOS and used my trusty old MS-DOS 6.22 Install floppies to partition and format the CF card. I used FDISK to create a single primary partition of 2GB and set it as active. I then formatted drive C and used the install floppies to install MS-DOS. Once completed a quick reboot was needed to check it works OK and install the CD-ROM drivers. I then used Gparted on my Live CD to create 2 more partitions on the CF card, a second 2GB FAT16 partition and the remaining 28GB as FAT32 (LBA). Because DOS 6.22 does not support LBA these 2 also needed to be primary partitions as using an MS-DOS extended partition will reduce the drive capacity to 8.4GB. Upon another reboot the second FAT16 partition is seen as Drive D.
Warning: Using MS-DOS FDISK or Format to manage these 2 extra primary partitions could corrupt the entire disk.
Then I set the primary boot drive back to the 64GB SSD. Once booted to the XOSL menu I added a menu entry for MS-DOS. The MS-DOS installer only used 2GB of my 32GB CF card so I then booted into Windows ME and used the formatting utility to create a second 2GB FAT16 partition and the remaining 28GB as FAT32 for storing more Windows games.
That was it, all 4 operating systems installed and bootable. Now it was time to install all the required drivers on all 3 of the Windows installs.
The only drivers needed for most games are the CD-ROM driver (and MSCDEX) which I have already installed, Microsoft mouse driver and the audio driver. The mouse driver used is the standard Microsoft V8.2 driver. The audio driver for the Ensoniq AudioPCI 3000 sound card was found online and installation was simple. The audio driver was actually for the Soundblaster PCI64 which was a rebranded Ensoniq AudioPCI card.
I then ran Memmaker to give me the most available base RAM and configured EMM386 to give me 32MB EMS and 32MB XMS. This configuration works perfectly well for most DOS games I came accross.
There are no USB drivers for DOS and as a result only compatible with a PS/2 keyboard and mouse. Fortunately I managed to find a Logitech EX110 wireless keyboard and optical mouse which supports PS/2. This also works great in Windows.
Of the four operating systems Windows 95 was the most difficult.
The VIA Chipset driver I already had from MSI would not install. I then tried an older version obtained from VIA and this seemed to install OK.
I jumped immediately to the graphics driver. I tried various GeForce drivers, including 61.76 and 66.94, but non of them would install correctly. They caused Windows 95 to reboot when the driver was initialised. Booting in to safe mode throws up .dll errors. 66.94 is the last driver to support Windows 95.
Without working graphics driver Windows 95 was unusable.
Windows 98 & ME:
I have grouped these two OS's together as all the drivers I found for 98 also worked on ME. Before installing any drivers I edited the [vcache] section of the SYSTEM.INI on both OS's to 367000 as detailed in the "Memory" section of this document. This should keep the system running stably throughout the driver install process.
Firstly I installed the VIA 4in1 Chipset drivers which I obtained from the MSI Motherboard support page. As I have disabled the on-board audio and video I did not install those drivers. I then tried the LAN driver which was also obtained from the MSI Motherboard support page, but this failed to install. I then went to the VIA support site and downloaded the VT6103L LAN driver direct from VIA. This driver worked fine. The Ensoniq AudioPCI driver I obtained off DriverGuide.com also worked OK.
Now it was time for the Nvidia GeForce drivers. I tried the widely recommended version for Win9x, 61.76. This installed perfectly well and after a reboot I configured the Windows desktop resolution. I am using a 1080p LCD display and 1280 x 720 gives the nicest upscaled image on my monitor. Setting it to 1920 x 1080, which is the native resolution causes lots of random artefacts and wavy lines on the picture. I guess the old GeForce FX card does not play nice with my LCD monitor at higher resolutions. So 1280 x 720 it is.
I then tried installing a game, Tomb Raider 4. Tomb Raider 4 failed to run, in both Win98 and WinME, with driver 61.76. I tried another game, Rally Championship, which ran but had various graphical errors. I tried a third game, Virtua Cop 2, and this caused "Blue Screen Of Death" (BSOD) when run.
Not a good start, but not discouraged I checked Windows Device Manager to check all hardware was installed OK. Everything looked fine and Windows itself seemed to run properly and stably. As I was experiencing similar issues in both 98 and ME I decided to try the next Nvidia driver, 66.94. Tomb Raider 4 still would not run, Rally Championship still had graphics issues, but Virtua Cop 2 ran fine. We were making progress. I then tried driver 77.72 and voila! all 3 games ran perfectly.
I then installed more games and each one worked fine in both 98 and ME. It looks like the issue was resolved and contrary to many hours of research Nvidia driver 61.76 was not the best version. For me atleast it was 77.72.
The only oddity I came across was "Sin". This installed and ran OK, but when I changed the resolution to 1024 x 768 it corrupted the graphics driver and causes my PC to display garbage. Even after a reboot the display was corrupted when it switched to an SVGA display mode. It did this in both 98 and ME and the only way to recover it was to boot into safe mode, remove the graphics card from the device manager and then reboot letting Windows re-install the graphics driver. The really weird part was when I tried a higher resolution, such as 1280x1024, Sin worked fine. It's issue seems to be particular to 1024 x 768 resolution regardless of whether I was using software or hardware renderer.
Summary & Conclusion
Although this project was not 100% successful with Windows 95 not working as I hoped it acheived it's main objective of being able to run old CD based PC games.
All the DOS games I tried ran well, even "Prototype" which is renowned for being difficult to get running. My favourite classics like "Simon the Sourcerer", "Day of the Tentacle" and "Lemmings" played beautifully. This is testament to the backward compatibility of the Nvidia graphics card.
The Windows 9x games I tried in Windows 98, and they too worked perfectly. In particular, "Shadows of the Empire" ran really really well at 1280 x 720 resolution.
So there we are, the Ultimate MS-DOS and Windows 9x gaming PC. If this project taught me one thing it's that despite all the research and tips from other gamers, you don't know what will work until you try it yourself with your hardware.
I have not given up on Windows 95. I will continue to try and get the Nvidia drivers working and will update this project file if I do.