Would you like to be able to run DOS applications again?

Updated: June 29, 2006

Would you like to play good ole games like Warcraft, Wolfenstien, Doom 2, X-Wing, and others? Would you like to experience the 256-color beauty of 16-bit software? Sounds good, eh?

I have decided to look back at older operating systems about the time Windows XP SP2 was released. Following an update on one of my Windows machines, I suddenly realized that I could no longer play a very favorite game of mine, Caesar III. And then, after trying to install Transport Tycoon Deluxe once again (as a compensation for having lost Caesar), I was unpleasantly surprised to discover this funny little game would not run on Windows XP. Even though I have not played TTD since the days of Windows 98, and the sudden loss of two of my better games made me introspect profoundly.


Nothing I would do helped. Running applications in other modes under Windows XP did not work. Neither did the use of a variety of patches, specially designed to solve these kinds of problems. Then, I stumbled upon a great product called VMware Player. VMware Player is a virtualization software that allows you to run a variety of PC-based operating system as an application within your existing OS. Sounds great. You can read more about VMware Player in an article called VMware Player - a great friend.

I download and installed the VMware Player and started installing older operating systems that I had, hoping to restore the ability to play old games. Luck struck me twice. I was able to successfully install Windows XP Home SP1 as a virtual machine on one of my Windows XP Pro SP2 hosts. And inside the guest OS, I managed to install Caesar III and play it once again. Yes! And then, I came across Open TTD, the open-source clone of Transport Tycoon Deluxe, which allowed me to play this great game natively in Windows XP SP2.

You may want to read about how to install Windows XP in general and as a guest OS inside VMware Player in particular. You can read about my success with Caesar III in detail. You can also read my game review. You can read about Open TTD how to install and play as well as the separate game review. And then I got bold. Caesar III was a game released around 1998. Transport Tycoon Deluxe dates back to 1994. How about going even further back in time? How about DOS?

How to install DOS

If you do not know what DOS is, or do not care about it, you can stop reading right now. MS-DOS was one of the more popular desktop operating systems in the 80s and early 90s. It is now no longer supported for quite some time and getting a copy of it would probably be quite hard. But that should not worry you. Instead, there is the FreeDOS, a "100% MS-DOS compatible OS" (quote from the site).

I decided to try FreeDOS as my DOS platform. And since I could not afford to dual-boot FreeDOS on any of my machines, I opted to try it out in VMware Player, the cheapest, the fastest and the most sensible solution. This way, I could easily debug errors along the way, without any permanent changes or even damages to the system. You should follow my Linux From Scratch article to learn how to:
  1. Install and use VMware Player and QEMU.
  2. Create a .vmx virtual machine configuration file.
  3. Configure the .vmx file to boot from a virtual CD (mounted .iso).
  4. Create a virtual hard disk.
Nevertheless, I will elaborate some of the basics that I did to create my DOS environment.
  1. I downloaded the bootable FreeDOS .iso.
  2. I created the following .vmx configuration file (below); you can copy it and use it as your own. Just make sure you save it as an All Types file rather than a .txt file (in any text editor, e.g. Notepad).

config.version = "8"
virtualHW.version = "3"

guestOS = "other"

displayName = "FreeDOS"

numvcpus = "1"

memsize = "64"
MemAllowAutoScaleDown = "FALSE"
MemTrimRate = "-1"

uuid.action = "create"

tools.remindInstall = "TRUE"

hints.hideAll = "TRUE"

tools.syncTime = "TRUE"

usb.present = "TRUE"
usb.generic.autoconnect = "FALSE"

serial0.present = "FALSE"

serial1.present = "FALSE"

parallel0.present = "FALSE"

# Sound settings
sound.present = "TRUE"
sound.virtualdev = "sb16"

logging = "TRUE"
log.fileName = "FreeDOS.log"
log.append = "TRUE"
log.keepOld = "1"

isolation.tools.hgfs.disable = "FALSE"
isolation.tools.dnd.disable = "TRUE"
isolation.tools.copy.enable = "TRUE"
isolation.tools.paste.enabled = "TRUE"

ethernet0.present = "TRUE"
ethernet0.virtualDev = "vlance"
ethernet0.connectionType = "nat"
ethernet0.addressType = "generated"
ethernet0.generatedAddress = "00:0c:29:80:9c:48"
ethernet0.generatedAddressOffset = "0"

floppy0.present = "TRUE"
floppy0.startConnected = "TRUE"
floppy0.autodetect = "TRUE"

ide1:0.present = "TRUE"
ide1:0.deviceType = "cdrom-raw"
ide1:0.startConnected = "TRUE"
ide1:0.fileName = "auto detect"
ide1:0.autodetect = "TRUE"

ide1:1.present = "TRUE"
ide1:1.fileName = "fdbootcd.iso"
ide1:1.deviceType = "cdrom-image"
ide1:1.mode = "persistent"
ide1:1.startConnected = "FALSE"

ide0:0.present = "TRUE"
ide0:0.fileName = "freedos.vmdk"
ide0:0.mode = "persistent"
ide0:0.startConnected = "TRUE"
ide0:0.writeThrough = "TRUE"

ide0:0.redo = ""
uuid.location = "56 4d 2e 31 1d 13 5d 4f-0d a6 5c b7 54 80 9c 48"
uuid.bios = "56 4d 2e 31 1d 13 5d 4f-0d a6 5c b7 54 80 9c 48"

A great site that can help you in the creation of virtual machine configuration files is EasyVMX!. The site provides an interactive interface for the creation of .vmx configuration files, which can then be downloaded and used. I then used QEMU to create my virtual hard disk; I created a small 500Mb disk by typing the following command in the QEMU directory (command line):

qemu-img.exe create -f vmdk freedos.vmdk 500M

Then, with all files grouped in one folder, I started the VMware Player, booted off the CD (.iso) and installed FreeDOS. The installation is rather straightforward. I will not go into details, however, if I happen to get lots of emails (> 2) asking for detailed step-by-step guide, I might consider adding it later on. But again, it's very simple, just follow the instructions on the screen.

One of the marvels I discovered about FreeDOS was the CD-ROM support. I was rather enthusiastic, because I did not feel keen about working with floppy disks. So, I waited for the installation to complete. I rebooted. And then, I was presented with a number of choices. Of course, I decided to go for option 1, with all the drivers and most memory.

FreeDOS boot options

It did not work. Most of the drivers failed to initiate. I did not have High Memory. I did not have a mouse. I did not have a CD-ROM. Hmmm. I spent the next 2-3 days trying to figure out why the things did not work out properly. Eventually, I came to realize a few startling points:

  1. Paths to certain files and their names were not correct (in the fdauto.bat file).
  2. The CD-ROM driver was bad (in the fdconfig.sys file).

Modifying the system files

Well, without turning this article into a saga of trial and error, describing every step I did, I managed to solve all of the problems. I changed the original fdconfig.sys and fdauto.bat files to load the working drivers and execute the correct paths and filenames. I replaced the CD-ROM driver provided with FreeDOS with a working aoatapi.sys driver. And finally, I installed dosidle.exe to keep the CPU from working at full throttle non-stop (that's the way DOS works).

Because I'm unaware of the legal issues pertaining to aoatapi.sys and dosidle.exe, I will certainly not host them or direct-link to any of the sources available on the Internet. I cannot also guarantee the quality of these sources.

Therefore, the best advice I can offer you is to search for aoatapi.sys and dosidle.exe using search engines. I have managed to find reliable copies within minutes. You can try Google search for aoatapi.sys here and dosidle.exe here. You're welcome to your own choice or search engines and words.

The first thing I did was copy the two files onto a floppy disk and then copy them onto the hard disk of the virtual machine. I executed dosidle.exe and got my CPU breathing normally again. Below you can find my modified fdconfig.sys and fdauto.bat.


MENU 1 - Load FreeDOS, with maximum RAM free, using EMM386
MENU 2 - Load FreeDOS, including HIMEM XMS-memory driver
MENU 3 - Load FreeDOS without drivers




@echo off
prompt $p$g

IF not "%CONFIG%"=="1" goto noperuse
rem echo Load PERUSE scrolling driver?
rem lh c:\bin\peruse.exe
rem echo PERUSE loaded

IF "%CONFIG%"=="3" goto nomouse
lh c:\freedos\bin\ctmouse.exe /3 /V

if not exist CDRCACH$ goto normalcd
echo Activating cached CD-ROM drive now.
rem lh c:\freedos\bin\shsucdx.exe /D:CDRCACH$,N
lh c:\freedos\bin\shsucdx.com /D:CDRCACH$,N
goto nomorecd
rem the above goto avoids double SHSUCDX loading.
rem if not exist CDROM001 goto nomorecd
if not exist fdcd0001 goto nomorecd
echo Activating uncached CD-ROM drive now.
rem lh c:\freedos\bin\shsucdx.exe /D:CDROM001,N
lh c:\freedos\bin\shsucdx.com /D:FDCD0001,N



IF "%CONFIG%"=="3" goto noshare
rem LH c:\freedos\bin\share.exe /L:20 /F:2048
lh c:\freedos\bin\share.com /L:20 /F:2048

IF "%CONFIG%"=="3" echo The environment contents are:
rem echo. displays an empty line...
IF "%CONFIG%"=="3" echo.
IF "%CONFIG%"=="3" echo goto nopause


echo Welcome to FreeDOS. Press enter to go on and see environment:
rem pause
rem :nopause

echo FreeDOS is now at your service :-)



lh c:\freedos\bin\mouse.exe

Copy & paste the text into a text editor, save the files (I suggest .bak extension, All Types type), place them on a floppy and copy them onto the hard disk of your virtual machine. Backup the original fdconfig.sys and fdauto.bat and rename the newly created .bak to .bat and .sys respectively. Please bear in mind:

  1. I installed FreeDOS under C:\FREEDOS.
  2. I placed the aoatapi.sys and dosidle.exe in the root directory, i.e. C:\.
  3. Your country and language settings may differ.
  4. I left the existing non-functional command lines, I only commented them so they would not run. For instance, I left the PERUSE and mouse lines, although when active they would not execute properly - the PERUSE driver could not be found and the mouse would not work - however commented they have no impact. This is also true for CD-ROM, share etc.
  5. I left the original assignment of letters to CD-ROM drivers beginning at N (N:, O: etc.), however you can change this to anything you like, provided there are no conflicts.
Make necessary changes to file paths (if needed) in the fdconfig.sys and fdauto.bat to reflect your installation choices. Reboot. Luckily, your OS will work smoothly now.

Your OS environment should look like the image below, you should have a mouse available (test it by typing edit fdauto.bat, for instance; you should be able to see a mouse cursor), and you should have at least one CD-ROM driver available, if you used my .vmx conf file. Likewise, dosidle.exe should work, too. Basically, that's it. You have a working DOS now.

FreeDOS successful boot


In one of the next articles, I will write about my success (or lack thereof) at running the good ole games that built and shaped our character(s) in the early 90s. I'm aware that old games uses to query the serial and parallel ports (COM1, LPT1). To the best of my knowledge, some modern Windows OSes do not quite like that. I have observed this phenomenon with VMware Player, too. It's possible that the denied access to hardware, which is the main reason most of these games no longer run, could still impact the ability to play them. Nevertheless, I'll give it a try.

I have also heard that much like Open TTD, various projects exist, which have enabled the contemporary PC user to experience games like Doom and Duke Nukem 3D in modern operating systems. I will check these hopefully true rumors and keep you updated. On the other hand, if you have any news or suggestions for me, please email me. I will post them with due credits.

You will find the updates in my Reviving old games section, which also covers Caesar III and Open TTD. You can also read my reviews and view screenshots of these fine games in the separate Computer games category.