Using a CD-ROM drive in MS-DOS

Last Updated on April 17, 2024 by Dave Farquhar

Loading a CD-ROM device driver in DOS is a bit of a lost art and it wasn’t that easy to find information on how to do it in the 90s either. If you want to use a CD-ROM drive in MS-DOS, here’s how to find, load and configure the driver.

Using a CD-ROM drive in MS-DOS requires loading a CD-ROM driver in config.sys as well as loading MSCDEX.EXE in autoexec.bat. If you match the /D switch on both, the drive will work, but there are tricks to getting optimal performance and memory usage.

We’ll talk first about drives, but if you already have a working CD-ROM drive and just want to know how to load the CD-ROM driver in DOS, feel free to scroll past the next two sections.

Which CD-ROM drive to use?

Using a CD-ROM drive in MS-DOS
ATAPI CD-ROM drives function in MS-DOS and are easier to procure than older models that may be more period correct. I prefer to find drives that don’t have the drive speed printed on the door, as that makes the drive look more authentic even if it is faster than the drives we had in the 90s.

You can use any 40-pin ATAPI/IDE drive in a system with an IDE had drive in it. Many 486s came with 4X ATAPI CD-ROM drives by mid 1995. A Panasonic CR-563B was more common prior to 1995 because that was what Creative Labs most commonly bundled in their multimedia upgrade kits. If you want to use one of those, you’ll also need a sound card with a Panasonic CD-ROM interface, or a separate controller card with a Panasonic interface. The Panasonic interface looks like IDE but it isn’t.

Really early 1X drives like a Philips CM-100 are finicky and harder to get running. Use something newer unless the most important thing to you is having a really early drive.

An IDE drive will be easier to find, not to mention quite a bit faster, and more reliable. If you want vintage looks, the Panasonic might be a better choice. But if you plan to actually use the machine, an IDE drive is more usable. I can vouch that many 486s ended up with late 90s IDE CD-ROM drives in them, either because the owner was a little later than usual in upgrading, or to replace an older drive that broke. I installed dozens of IDE CD-ROMs in 486s in 1996 and 1997.

Pentiums followed a similar arc. Early Pentiums had Panasonic 2X drives in them because that’s what was available. As faster CD-ROM drives became available, they showed up in Pentiums first, as manufacturers used up their inventory of Panasonics on their entry-level 486s and installed the better drives in their pricier systems.

How to look period correct with a more recent CD-ROM drive

Toshiba and NEC drives were popular with power users in the mid 1990s because they were consistently among the fastest drives on the market at any given time, and the magazines of the day usually gave them good reviews. Newer drives from those companies look just like their 4X drives from the mid 90s, and their drives don’t have the speed printed on the tray. So if you get a newer drive from Toshiba or NEC, you can get a slightly newer, faster drive and still look vintage. For that matter, to a knowing eye it looks like a computer owned by someone who went out of their way to buy above-average hardware.

Also, the slightly newer drives tend to read CD-R and (especially) CD-RW discs more reliably than the older 2X drives did. That’s an important consideration if you need to use burned discs in your vintage DOS machine.

Using a CD-ROM drive in MS-DOS: The One True Way

Some sites claim to have the one true, correct way to load the CD-ROM driver and MSCDEX in your config.sys and autoexec.bat files. Their configurations will work 98 percent of the time, if not more than that. But chances are you’ll eventually find an edge case. Some games need a minimum of 618K of conventional memory available to run. Some want no memory manager at all because they have their own memory manager built in. You cannot possibly accommodate both with a single configuration because those requirements contradict each other.

What I tell you here will work for the overwhelming majority of titles. If you find another site that tells you to adjust some setting to accommodate some specific title, I’m not going to tell you that site is wrong. Some titles are fussy and want very specific settings. You may have to make some adjustments, or create a boot menu with special settings for certain games.

Configuring DOS games was tricky. Everyone who worked in a store that sold computer software in the mid 90s has stories of people trying to return games as defective because they couldn’t get their autoexec.bat and config.sys settings quite right for it.

Optimizing DOS memory is usually a good idea, but it’s a topic unto itself. Nothing here will wreck your DOS memory optimization though.

Loading the OAKCDROM.SYS DOS CD-ROM driver and MSCDEX

The most common combination uses the OAKCDROM.SYS MS-DOS CD-ROM driver, a universal IDE/ATAPI driver made by the company that originated the ATAPI chipset used inside most ATAPI CD-ROMs. Microsoft included this with Windows 95 and 98 to bootstrap its installation, since those operating systems had to be able to install from DOS. Oak’s DOS CD-ROM driver is highly compatible because they developed the chipset that ATAPI CD ROM drives used.

Use this line in config.sys to load the CD-ROM driver. This assumes you saved the driver in a subdirectory called C:\DRIVERS. You can adjust if necessary:

DEVICEHIGH=C:\DRIVERS\OAKCDROM.SYS /D:CD01

If you need to use another MS-DOS CD-ROM driver, say, Creative’s SBCD.SYS or a Panasonic driver for a 2X Panasonic-interface CD-ROM, substitute its name for OAKCDROM.SYS in the line above.

And use this line in autoexec.bat:

LH C:\DOS\MSCDEX.EXE /D:CD01

The /D parameter has to always match. It can be any combination of characters up to 8 characters in length. If you want to force a specific drive letter, add the /L: parameter to MSCDEX. For example, this command forces the CD-ROM to use drive R:

LH C:\DOS\MSCDEX.EXE /D:CD01 /L:R

Optimizing MSCDEX.EXE

You can get a little bit better performance out of MSCDEX.EXE in some cases by adding the /M and /E parameters. First, you have to make sure EMM386.EXE is using expanded memory in config.sys:

DEVICE=C:\DOS\EMM386.EXE RAM
DEVICEHIGH=C:\DRIVERS\OAKCDROM.SYS /D:CD01

Then, use this line in AUTOEXEC.BAT to load the CD-ROM extensions.

LH C:\DOS\MSCDEX.EXE /D:CD01 /M:12 /E

The default for /M if you don’t specify it is 4. You can specify up to 99. You don’t want to use a high value for this unless you configure it to use expanded (EMS) memory. Each buffer uses 2K of RAM, and memory below 1 MB is scarce, so unless you use the /E parameter, you want to keep this value low. But if you use the RAM parameter with EMM386, there’s no harm whatsoever in maximizing it, since EMS memory is plentiful. You can easily spare 200K of EMS memory for buffers in a system with several megabytes of RAM.

Balancing performance and memory usage

The default value for /M if you don’t specify a value is 4. So you can use a parameter of 0 if you want maximum available memory under 1 MB and can’t use EMS memory. If you want to balance performance while not using EMS, experiment with the value. Set the value, reboot, run the MEM command, then increase the value to the maximum you can without cutting into your available conventional memory.

Modern alternative CD-ROM drivers compatible with MS-DOS

If you don’t mind using newer software, you can use the CD-ROM driver and CD extensions from the FreeDOS project. These open-source alternatives also run under MS-DOS 6.22 if you’re more comfortable using genuine MS-DOS. In some cases you may find they work better (or use less memory) than the counterparts Microsoft supplied in 1994. But be aware your results will vary. Some titles will work fine with the newer software. Others get fussy and really want an old driver and genuine MSDCEX.

FreeDOS supplies SHSUCDX.EXE to replace MSCDEX.EXE. Notably, in addition to being slightly more memory efficient, SHSUCDX can try to use high memory instead of conventional memory, to free up even more.

For the CD-ROM driver itself, FreeDOS supplies UDVD2.SYS. Despite its name, it supports both CD-ROM and DVD drives.

To use these utilities, download them and store them on your DOS machine, then make changes similar to above. In config.sys, add this line:

devicehigh=c:\dos\udvd2.sys /d:cd01 /c

And then to autoexec.bat, add this line:

lh c:\dos\shsucdx.exe /d:cd01

Unlike the traditional Microsoft pairing, in this pairing, it’s the CD-ROM driver that provides the caching.

A warning about Windows 95 and 98

It’s very common for people to load CD-ROM drivers in config.sys and autoexec.bat in Windows 95 and 98. It’s not necessary and it can cause problems. So only load CD-ROM drivers on pre-Win95 machines. It will save you some headaches.

If you found this post informative or helpful, please share it!