This is the FreeDOS Games How-to about how to play classic DOS games on FreeDOS.

FreeDOS is ideal for anyone who wants to play those favorite DOS games. FreeDOS works great on old hardware, and in DOS emulators. Whether you prefer to have a dedicated PC for games, or to run a DOS emulator, FreeDOS will let you run your favorite classic DOS games.

FreeDOS is free because it is released under the GNU General Public License. This means you have access to the source code for all FreeDOS. For more information about FreeDOS, see the FreeDOS website.

Setting up your system

In order to play games on DOS, you’ll first need to set up your system. Most games require sound, some use a mouse, and a few need access to a CD-ROM drive. We’ll show you how to set up each of these components under FreeDOS.

Sound

Back in the day, SoundBlaster was the de facto standard for sound cards. So game developers pretty much wrote games that worked with the SoundBlaster. There were several variants: the SBPro and SB16 seem to have been most popular.

On a dedicated PC, you’ll first need a sound card. Assuming you have one from the era, note that most competing sound cards supported the SoundBlaster. You may have received a driver disk with your sound card. If so, you’ll need to install the drivers according to the instructions that came with the card. Since there are so many sound cards out there, I can’t help you very much with your specific card. Then you’ll need to set the BLASTER variable, below.

Inside a DOS emulator, things are a little easier. Most emulators will “fake” the sound card for you.

Next, you’ll just need to set a variable in AUTOEXEC.BAT that tell the game how your sound card is configured. This is set using the BLASTER variable to define the base address, IRQ, DMA, card type, MIDI port, high DMA, AWE32 port:

SET BLASTER=Aaddr Iirq Ddma Ttype Pmidi Hhigh_dma Eawe32

Only specify “E” if you have an Creative Labs AWE 32 sound card. This is the address of the wavetable chip in hex (for example, 620.)

The base address is usually 0x220 (just use 220), the IRQ is usually 7 or 5, and DMA is usually 1.

For card type, use this table:

Caption text
Number Card Type
1 SoundBlaster version 1.0 or 1.5 and compatibles
2 SoundBlaster Pro or Pro Compatibles with the SPC-2 chip
3 SoundBlaster version 2.0 or compatibles
4 SoundBlaster Pro or Pro Compatibles with the SPC-3 chip
5 SoundBlaster 16
6 SoundBlaster 16 ASP

For example, the Creative Labs AWE 32 sound card:

SET BLASTER=A220 I5 D1 T3 P330 H6 E620

Or, a SoundBlaster compatible card without music:

SET BLASTER=A220 I5 D1 T3 H6

If you don’t know a good setting, try the last example. These are the most common values found in sound cards of the era.

You may also want to look at the Wolfenstein 3D technical help, or DOS MAME sound setup.

Mouse

Looking to add mouse support for classic DOS games? See Mouse

CD-ROM

Supporting a CD-ROM in DOS is generally a two-step process: you need to load a driver in your CONFIG.SYS, and you need to load an extender to bind the CD-ROM to a drive letter.

On a dedicated PC, you’ll first need a CD-ROM drive. Note that most CD-ROM drives require specific drivers, so you’ll need to install the drivers according to the instructions that came with your CD-ROM drive. There are a lot of drives out there, and I can’t help you very much with your specific hardware.

However, Jeremy Davis has written a general ATAPI driver that should work with any CD-ROM drive. Use at your own risk. You load it like any other CD-ROM driver in your CONFIG.SYS file:

DEVICE=C:\ATAPICDD\ATAPICDD.SYS [options]

The most important option is to specify the device name of the CD-ROM. You’ll need this later. For example, specifying device name of ATAPICDD:

DEVICE=C:\ATAPICDD\ATAPICDD.SYS /D:ATAPICDD

Once you have the CD-ROM driver in your CONFIG.SYS file, you’ll need to load an extender in AUTOEXEC.BAT that binds the device name to a drive letter. Under MS-DOS, you probably used MSCDEX. Under FreeDOS, SHSUCDX is a replacement for MSCDEX. It is considerably smaller than MSCDEX (only 6.5K for one drive) and it provides access to long ISO names.

The basic usage of SHSUCDX is:

C:\SHSUCDX\SHSUCDX /D:{device_name}

Remember the device name we set when we loaded the CD-ROM driver in CONFIG.SYS? You’ll need that here with SHSUCDX. For example, specifying device name of ATAPICDD, add this to your AUTOEXEC.BAT file:

C:\SHSUCDX\SHSUCDX /D:ATAPICDD

And that should do it. Your CD-ROM should be bound to the next available DOS drive letter (usually D:).

Inside a DOS emulator, it’s easy. Many emulators will load a CD-ROM driver for you, so you should not need to load your own in CONFIG.SYS or AUTOEXEC.BAT. Check that your emulator provides this.

Memory

On a dedicated PC or virtual machine, you’ll need to add memory management on your own. DOS provides two programs to help you do this: EMM386 and HIMEM (newer: HIMEMX and JEMM386).

EMM386.EXE is a Extended Memory Manager used with Intel 80386 and above processors and allows DOS programs to have access to memory above 640k. FreeDOS EMM386 now (as of 2004) supports VCPI, so even protected mode DOS programs should be happy with it. HIMEM is driver that provides extended memory management. It is most often used with EMM386. Under FreeDOS, this is HIMEM. Most DOS games require access to memory above 640k, so you should add this to your CONFIG.SYS file:

DEVICE=C:\FDOS\HIMEM.EXE
DEVICE=C:\FDOS\EMM386.EXE NOEMS

Inside a PC emulator, things are a little easier. Many PC emulators will provide memory management for you, although you may need to specify if you want EMS (the older Expanded Memory) or XMS (the newer Extended Memory). Check your emulator for details.

Putting it all together

You’ve seen the specific examples to set up your system for sound, CD-ROM, and mouse support. Now, let’s put it all together and build a CONFIG.SYS and AUTOEXEC.BAT that should work for you.

CONFIG.SYS

LASTDRIVE=Z
BUFFERS=20
FILES=40
DOS=HIGH,UMB
DEVICE=C:\FDOS\BIN\HIMEM.EXE
DEVICE=C:\FDOS\EMM386.EXE NOEMS
DEVICE=C:\ATAPICDD\ATAPICDD.SYS /D:ATAPICDD
SHELLHIGH=C:\COMMAND.COM /E:256 /P

AUTOEXEC.BAT

SET BLASTER=A220 I5 D1 T3 H6
C:\SHSUCDX\SHSUCDX /D:ATAPICDD
C:\CTMOUSE\CTMOUSE

Of course, these are just examples; you may need to tweak these according to your specific system.

Select a configuration at boot time

You can make things a little more flexible by using MENU in CONFIG.SYS so you can select a configuration at boot time. Gregory Lumpkin posted his CONFIG.SYS and AUTOEXEC.BAT, using the MENU feature to make for easy setup:

CONFIG.SYS

LASTDRIVE=Z
BUFFERS=20     
FILES=40
DOS=HIGH,UMB
DOSDATA=UMB
set dircmd=/ogn
MENUCOLOR=7,0
MENUDEFAULT=1,5
MENU 1 - Load FreeDOS including HIMEM XMS-memory driver  
MENU 2 - Load FreeDOS with maximum RAM free, using EMM386
MENU 3 - Load FreeDOS without drivers 
12?DEVICE=A:\HIMEM.EXE
2?DEVICE=A:\EMM386.EXE
;rem replace ATAPICDD by your own CDROM driver, which is much better!
1?DEVICE=A:\atapicdd.sys /D:FDCD0001
12?SHELLHIGH=a:\command.com /P
3?SHELLHIGH=a:\command.com /D /P

AUTOEXEC.BAT

@echo off 
set PATH=A:
set temp=A:
set tmp=A:
SET BLASTER=A220 I5 D1 H5 P330
LH DISPLAY CON=(EGA,,1)
MODE CON CP PREP=((858) A:\cpi\EGA.CPI)
MODE CON CP SEL=858
rem below is the mscdex clone. Gives a volume letter (drive letter) to your CDROM device
rem if you have loaded a cdrom-driver driver in config.sys first
LH Shsucdx /D:?FDCD0001,D,,1 /D:?FDCD0002,D,,1 /D:?FDCD0003,D,,1 
LH KEYB US,,A:\KEY\US.KL  
CTMOUSE