Introduction to PCem (Version 11)

intel-386dx-25cpuPCem I personally believe is one of the more interesting hypervisors available to emulate hardware. Originally released in 2007 when it was limited to emulating an original IBM XT, PCem now allows for a Pentium PC running Windows 98 or even Windows XP.

Usually hypervisors for the most part have rather limited flexibility of the type of hardware that can be emulated. For example Oracle’s VirtualBox allows you to change the amount of video memory, but you’re unable to change from one model of video card to another. PCem gives you such options. Granted it’s not immediately obvious to the average Joe setting it up and getting it to work smoothly. Before focussing on how to set up specific operating systems, this will be an introduction on PCem in general based on creating a 386 PC.


Installing PCem

PCem is available for both Windows and Linux, though I’ll be using the Windows version here. The Windows version is apparently more polished. Distributed as simply a ZIP file there’s no installation program whatsoever. It’s just a matter of extracting everything from here into its own folder on your computer.

pcem_intro1

PCem 11’s ZIP file shown in WinZip.

With the files extracted, you may get excited and double-click on PCEM.EXE to start it. However at this stage you will not get far as PCem attempts to find ROM files. These ROM files are utilised to emulate various types and models of hardware, more specifically motherboard BIOS’s and video cards. When there’s none to be found, PCem closes.

pcem_intro2

PCem on start up with no ROM files installed.

In the folder that you’ve extracted the PCem files to, you should see a sub-folder named roms. This folder contains a number of sub-folders with various names to match to the corresponding ROM. The ROM files are a separate download from PCem itself. Below I placed the ROM file of an AMI 386 BIOS into the folder matching the name. PCem only requires one ROM file to work, though your options will be severely limited. Repeat the process to increase your range of hardware options. Bear in mind, using other ROM files the process is similar however what you see on screen will likely not match the following screenshots.

 

pcem_intro3

Placing the ROM file for an AMI 386 BIOS.


First Time Running

With at least one ROM file placed within the roms folder, execute PCEM.EXE. You’ll likely find a new error message to appear but don’t be too concerned. The cause of the error is due to not having a configuration file present, though after selecting the OK button a file named PCEM.CFG will be created and the error message disappears. The BIOS ROM installed previously begins to initialise.

pcem_intro4

PCem generates this error when there’s no configuration file present.

With only the AMI 386 BIOS installed, PCem will begin to emulate a 386 PC on the lowest spec’d settings. Shown below PCem was set to running as an Intel 386 SX 16 Mhz PC, with 4 MB of RAM, and a CGA graphics card hence the low resolution text.

pcem_intro5

PCem running as a low-end 386 PC.

Not happy with 16 Mhz? Select Configure from the Settings menu for a comprehensive list of options. Under the CPU drop-down menu select say the i386DX/33 option.

pcem_intro6

Changing the CPU.

This was Intel’s fastest 386 processor running at 33 Mhz. AMD and Cyrix processors are also available via the CPU type drop-down menu. Select OK to confirm changes and close the settings dialog box.

Restart the emulator by selecting either Hard Reset or Ctrl+Alt+Del from the File menu.

Once it restarts, you’ll notice that the processor and rated clock speed have adjusted accordingly.

pcem_intro7

The CPU has been “upgraded”.


Menu Options

PCem’s menu is rather straightforward, there’s not much to see though some will be further explained later. Here’s a summary of what each option is:

File Menu

  • Hard Reset – The equivalent to physically pressing the reset button on your computer, also known as a cold boot as the computer momentarily has no power. When the emulator restarts it checks that the memory is okay.
  • Ctrl+Alt+Del – As you possibly guessed, it’s the equivalent to pressing the Control, Alt, and Delete keys simultaneously to restart, known as a warm boot. This skips the memory check on startup.

Disc Menu

  • Change Drive A/B – Two options to mount floppy disk images (IMG, IMA, and FDI formats). Drives A and B were traditionally reserved for floppy disk drives.
  • Eject Drive A/B – Another two options to simply dismount the floppy disk image that was previously mounted.
  • Configure Hard Discs – Provides the ability to add/remove a hard disk and CD-ROM drive, reserving drive letters C, D, E, and F for this purpose. New hard disks are saved in IMG format though some understanding on disk geometry is needed to articulate the size of the drive you want.

Settings Menu

  • Configure – As briefly shown before changing the processor, this provides the bulk of the settings such as the BIOS to use, video and sound cards, amount of RAM, and the capacity of the floppy disk drives for instance.
  • CD-ROM – A sub-menu that can mount CD-ROM disc images (ISO files) or refer to the optical drive connected to your physical computer.
  • Video – A sub-menu providing options on how the emulator is to be displayed such as resizing the window, full screen mode, and whether to use DirectDraw or Direct3D for rendering the display. DirectDraw provides a sharp and clear display, though Direct3D softens the display resembling how the software originally appeared on old CRT (cathode ray tube) monitors.
  • Load/Save Configuration – Allows to save and load the configuration of your emulator. Useful if you wish to swap between “different” computers.

Misc Menu

  • Status – A simple window shows providing some technical information on the emulator running such as CPU and FPU speed.

Configuring Hard Disks

By default PCem started with two 3.5″ floppy disk drives mounted, however unless you’re wishing to emulate something such as the original IBM XT you will likely need to add a hard disk to install an operating system.

pcem_intro8

Creating a hard disk image.

To start, select Configure hard discs from the Disc menu. In the dialog box that appears, ensure the radio button for Hard drive has been selected under C:, and select New. The New Hard Disc dialog appears for choosing the size of the drive as well as where to save it.

 

Select the button to choose where to save the file and what to name the hard disk file as. You may like to create a sub-folder within your PCem folder, e.g. named hdd to store all your hard disk files into. PCem provides by default geometry values to create a 250 MB hard disk. If you wish to use a different size you’ll need to modify the sector, head, and cylinder values. Traditionally this was detailed on the label stuck on the physical hard disk as computers didn’t necessarily have auto-detection mechanisms.

 

pcem_intro9

Geometry values for various hard disk sizes.

 

Instead of attempting random values to figure it out, here’s a table reflecting time accurate hard disk drive sizes from the DOS through to Windows 95 era of computing. A 386 typically choked on a hard disk larger than 500 MB due to limitations of the BIOS, so in this instance I’ll create a 340 MB drive. With the filename chosen, and the values set, click OK. PCem will advise to make sure you remember to partition and format the new drive. You’ll now see that the hard disk is to be Drive C in the Configure Hard Discs dialog box. Click OK to save the changes and PCem will wish to restart the emulator for the changes to take affect.

Unlike VMWare and VirtualBox, it’s not just a matter of creating a hard disk and off we go. PCem needs to be treated as though we are literally putting together a physical computer. This means that despite telling PCem there’s a hard disk, the 386 BIOS is none the wiser. When resetting the emulator, press Del to enter the BIOS.

 

pcem_intro10

AMI 386 BIOS Standard CMOS screen.

 

As shown here, the BIOS has no hard disks installed but two floppy drives. Using your arrow keys highlight to Hard Disk C: Type. Page Up and Down keys are used to modify the values. With no values shown, press Page Up once to bring up the option to manually enter the values. Enter the same values that were entered into PCem just before. The WPcom value is left at zero, while the LZone value is the same as the cylinder value.

 

pcem_intro11

Adding the values for the 340 MB drive.

 

Press the Esc key to bring up the main menu of the BIOS. This particular BIOS from this menu has the options to auto detect and format the drive so you may try doing so. Select Write to CMOS and Exit and press Enter. Confirm the changes by pressing Y followed by Enter.

I did discover a bit of an anomaly with this BIOS at this point. While the hard disk was successfully detected in the BIOS, upon restarting the emulator it would complain that the HDD controller has failed. However after continuing and booting from the MS-DOS 6.22’s installation disk to format the drive and install, the error went away.

As you can see, the drive is working with DOS installed.

pcem_intro12

The 340 MB drive with MS-DOS 6.22 freshly installed.


Give Me SVGA, not CGA!

PCem as the bare bones minimum provides CGA, Hercules, and MDA video capability. It’s fine if you want to emulate a 286 running a game from 1987 but it’s not going to cut it for running Quake on Windows 95.

For this 386 PC, I’ll upgrade from CGA to using a card with the S3 Virge chipset. Unlike the ROM file for the BIOS, the ROM file for the video card is placed directly into the roms folder of PCem. It’s also best to close and restart PCem altogether to detect the new ROM file.

 

pcem_intro13

The S3 Virge ROM file added.

Once added, start PCem again and select Configure from the Settings menu just as it was done before to adjust the processor. Under the Video drop-down menu, you should hopefully see the added ROM file appearing. If not, it’s either likely been placed in the wrong place or there’s incompatibility with the type of machine chosen. Depending on the video card added, the Configure button beside the drop-down menu may provide additional options size as the memory size for the video card. In this instance, it allowed me to change between 2 or 4 MB of video memory. Once done, select OK and restart the emulator.

 

The emulator restarts at a noticeably higher resolution. The BIOS will likely mention about there being a video mismatch, but will correct itself.

pcem_intro14

After upgrading the video card.

This 386 is now suitable for loading up Windows 3.1 thanks to the SVGA video card.


Other Bits & Pieces

Via the Settings dialog box previously used, there’s a few other settings that can be changed.

Cache – Vague descriptions, though my understanding is that it controls the amount of Level 1 and 2 memory caches available for the processor to access. The effectiveness of this setting is a bit of trial and error.

Video Speed – Controls the bus speed for the video card.

Sound Card – Allows to select from several models of sound cards, or not use one at all.

Memory – Adjust the amount of RAM.

Drives A & B – Configure the type of floppy drive to use. After changing here, you’ll need to modify to match in the BIOS itself.

To the bottom of the settings available, there’s a few extra hardware bits that can be used such as the Voodoo Graphics add-on card.

 


If you are new to PCem, I hope this is of use to you. I feel the biggest drawback with it is the lack of networking support but for gaming it really is something to be satisfied with. I personally haven’t spent much time using this emulator, but if you’re someone who doesn’t have a PC from this era it’s the next best thing.

Advertisements

Leave a Reply

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

WordPress.com Logo

You are commenting using your WordPress.com 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 )

Google+ photo

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

Connecting to %s