Setting Up a 386DX with Windows 95 using PCem 12

pcem-386win95Not along after posting about using PCem 11, version 12 was available for downloading literally a few days later. Due to this, I’ll briefly go over the changes before delving into setting up a virtual 386 PC with Windows 95.

Why a 386? Windows 95 required as a minimum a 386DX to run. Back in the day when a 386 was rather common, I’d only see them with 4 or 8 MB of RAM running Windows 3.1. However, in more recent times I did see someone who had a highly-spec’d multimedia 386 build with 64 MB of RAM on YouTube, and the performance of Windows 95 wasn’t that bad considering the hardware involved. This is an attempt to mimic that virtually.

Before proceeding, here’s a run-down of some of the changes between PCem 11 and 12:

BIOS – Version 12 added BIOS support for AMI 386DX and MR 386DX. Previously when using the AMI 386 BIOS ROM file (AMI386.BIN), it was named as a generic 386 clone with the ability to select either 386 SX or DX processors. Using the same ROM file in version 12 now designates it as a 386 SX only. In order to use a 386DX, another ROM file needs to be used instead named OPT495SX.AMI.

Mice – The ability to now select between serial, PS/2, and IntelliMouse, with the Microsoft 2-button serial mouse as the default option.

Joysticks – The ability to now select a joystick, including the Microsoft SideWinder Pad.

Wait states – Wait states replaces the cache setting from previous versions. This adjusts the speed when the processor has no instructions to process.

Voodoo graphics – The Voodoo graphics feature isn’t new, though the ability to select the type of Voodoo is. A new drop-down list has been added to select between the original Voodoo, Voodoo 2, and the Obsidian SB50 with Amethyst adapters.

Lastly PCem 12 can now synchronise the time with the host PC.

For this guide you’ll need to have:

  • PCem available on your PC
  • ROM files for motherboard BIOS and video
    • OPT495SX.AMI – 386DX-based BIOS; use with PCem 12 or later Download
    • AMI386.BIN – 386 BIOS; use with PCem 11 or earlier, otherwise it’s treated as a 386 SX (for the purpose of running Windows 95, I won’t be using this one) Download
    • ET4000.BIN – Tseng Labs ET4000AX with 1 MB video memory Download
  • CD or ISO image of Windows 95 (you also could use the floppy disk version)
  • Windows 95 boot disk Download

Setting Up PCem Itself

Firstly, I’d suggest having a read of my previous post, click here, as it covers the process of setting up PCem for the first time.

With the ROM files, place the OPT495SX.AMI file into the ami386dx sub-folder under the roms folder. If the AMI386.BIN file is to be used, this file is placed into the ami386 sub-folder instead at the same location. The ET4000.BIN file for the video is simply placed into the roms folder itself. Now that the ROMs are in their correct location, execute PCEM.EXE to start.

Upon starting PCem, an error message will appear due to the lack of having a configuration file. When closing the message, a PCEM.CFG file is created, and the error will no longer appear provided that the file is kept as is. It will then appear to be starting up the virtual PC, using 4 MB RAM and CGA graphics by default.


PCem starting up with default RAM and graphic settings.

Before commencing anything else, we’ll start configuring the virtual PC in order to meet the minimum requirements for running Windows 95. Select Settings followed by Configure from the menu bar. The Configure PCem dialog box appears.

I used the following configuration, though feel free to experiment:

  • Machine > AMI 386DX clone
  • Video > Tseng ET4000AX
  • CPU type > AMD
  • CPU > Am386DX/40
  • Video speed > Fast 16-bit (just for being more historically correct, as the faster VLB and PCI interfaces were introduced in the 486 era)
  • Sound card > Sound Blaster 16
  • Memory > 64 MB (the maximum amount the 386 BIOS can address)
  • Drive A > 3.5″ 1.44M
  • Drive B > 5.25″ 1.2M

Select OK to confirm the changes. PCem will mention this will restart itself; select OK again. You should notice the change in display and the additional memory detected.


PCem now starting up as a 386DX 40 Mhz with SVGA graphics card.

From here, it’s a good time to set up the hard disk and CD-ROM drive. Being a 386, the maximum size for hard disks supported were around 504 MB, and the only way to get around that was to either use a SCSI controller card or DDO (dynamic drive overlay) software.

Select Configure hard discs from the Disc menu. Choose hard drive and CD-ROM for C: and D: drives respectively. Under C: select New for the New Hard Disc dialog box to appear.


Setting up mass storage drives.

Update the cylinders values with 1024 to increase the capacity to 504 MB. Select the … button to provide a file name and specify the location where it’s to be saved, then select OK. PCem will remind you to partition and format the drive. Select OK again to close and save the changes in the Configure Hard Discs dialog box. Continue with restarting PCem when prompted to do so.

Upon restart, you’ll see once again (as shown above) a prompt to run the setup utility from the BIOS. Press the F1 key, and the AMI BIOS utility will appear. Highlight the Auto Detect Hard Disk option and press Enter. Shortly afterwards the hard drive should be detected as below. Press Y, then Enter. Repeat again for drive D when it detects no hard disk.


Successfully detecting the 504 MB hard disk.

Back at the main menu, highlight the Standard CMOS Setup option and press Enter. Here is where we align the floppy drives to what was set in PCem itself, in this case with drive B. Use the Page Up and Page Down keys to change the highlighted option.


Updating the floppy drive type.

When done press Esc to return to the main menu, and choose Write to CMOS and Exit to save the changes. Press then Enter upon confirmation. PCem will restart. Once it does, instead of seeing a prompt to run the setup utility, it will state there’s an issue with the HDD (hard disk drive) controller. The error will disappear following the next steps.

Preparing the Hard Disk

At this point mount the Windows 95 boot disk image file, by selecting Change Drive A: from the Disc menu. It’s also a good time to enable the virtual CD-ROM drive, as it’s disabled by default. To do so, select Settings from the menu, hover over CD-ROM, and select Empty for the time being. PCem will require a restart. Now CD-ROM drivers will then be able to detect a CD-ROM drive present.

As it restarts, PCem should now be starting from the boot disk in drive A. At the A:\> prompt, type fdisk then press Enter to start the FDISK utility. FDISK will bring up a menu with four options to select from. Press for the Create DOS partition or Logical DOS drive option followed by Enter. Another menu appears with three options to select from. Press for the Create Primary DOS Partition and press Enter. The hard disk is quickly scanned and you will be prompted if you wish to use the maximum available size of the hard disk. The default option is yes, so press Enter. You will be prompted to now restart the computer. From the File menu, select Ctrl+Alt+Del to restart bypassing the memory test.

Back at the A:\> prompt, type format c: then Enter. Press then Enter to proceed with the format.


Formatting the hard disk.

After formatting, you’ll be prompted to provide disk volume label, otherwise just proceed by pressing Enter. The hard disk is now ready for installing Windows.

At the C:\> prompt, type md win95 and press Enter. This creates a directory (folder) named win95 on the hard disk. Then type copy d:\win95\*.cab c:\win95 to copy the main installation files from the CD to the new directory on your hard disk, were d:\ is the CD-ROM drive. The purpose is to avoid an issue in the later stages of Windows 95 Setup after rebooting, where it’s unable to locate the CAB files from not having CD-ROM drivers loaded. The files can be deleted afterwards to save on the limited disk space of the drive. For now, we’re ready to install Windows 95.

Windows 95 Setup

At the DOS prompt, begin Windows 95 Setup by typing d:\setup (again change d:\ if your CD-ROM drive is designated a different letter).

Follow the prompts as your normally would during Setup. If you need more details on proceeding through with installation, I suggest checking out an earlier post (click here) where I was installing Windows 95 under Oracle VirtualBox. More specifically the section under the same name (Windows 95 Setup) as here. The only part I deviate here is skipping detection of network cards.

Eventually when installation completes, you should be able to see the desktop. Windows 95 came provided with drivers for the Tseng Labs ET4000 and Sound Blaster 16, so these work as is. The mouse under Device Manager was flagged with an issue, despite functioning okay. It was listed as a Standard Serial Mouse, though updating to the Microsoft Serial Mouse driver from the Windows CD sorted that out.


Windows 95 on a 386, usable with a little patience.

Going into MS-DOS mode, I ran SpeedSys to see how the results would turn out. The CPU score of 8.98 was within range of a real 386DX processor. The hard disk tests were automatically skipped, while memory performance flat-lined, though its throughput was higher by around 5 to 10 MB/s compared to using actual SIMM memory of the era from what I could see.


Results under SpeedSys.

Overall with plenty of RAM, Windows 95 was doable on a 386 upon release. The pain-point is with the software to run on it, as often releases would be requiring a 486 as a bare minimum, such as Microsoft Office 97 and Adobe Photoshop 4.0. It’s not really a compelling Windows upgrade, when you’re likely to be stuck with Windows 3.x and DOS applications.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s