Enabling CD-ROMs in DOS with generic drivers


DOS messages after a successful boot with generic CD-ROM drivers
DOS messages after a successful boot with generic CD-ROM drivers

Time for another eccentric, pointless how-to post concerning a topic probably nobody cares about! Once I've installed DOS in a virtual machine for some ridiculously fun nostalgia, the first thing I usually want to do is get the virtual CD-ROM drive working so I can more easily load in my ridiculous collection of old software from my childhood.

If you have a Windows 98 or Windows Millennium Edition boot disk, you're already half way there. If not, the easiest thing to do is grab yourself a pre-made disk image.

ASIDE: I’m not sure as to the legality of downloading old Microsoft disk images; to play it safe I suggest you have a legal licence for Windows 98. I am not a lawyer though, so don’t take this as legal advice!

Icon from the Tango Desktop projectBoot your MS-DOS guest, then mount the virtual disk image. You'll need to copy over A:\MSCDEX.EXE and A:\OAKCDROM.SYS. I like to keep my file system organised so I copy them to C:\DOSDRIVERS.

Now we need to edit C:\AUTOEXEC.BAT and add a line to load the driver with an 8 digit identifier and available drive letter. If you don't have a high memory manager installed, drop the LOADHIGH/LH command.


Then edit C:CONFIG.SYS and add the new device driver with the same identifier you used before. Again, if you don't have a high memory manager, swap DEVICEHIGH to DEVICE. You'll also need a LASTDRIVE command so there's a free drive letter to use:


Icon from the Tango Desktop project

Unmount your disk image and reboot… and enjoy a CD-ROM on DOS! Most people didn't have CD-ROMs at the time of DOS, so consider yourself lucky!

Since the older DOS days there have been some more memory efficient device drivers developed than these Oak and Microsoft ones, but generally these are a good pair to start with because they're the most compatible. In a future post I'll be talking about alternative drivers.

Author bio and support


Ruben Schade is a technical writer and infrastructure architect in Sydney, Australia who refers to himself in the third person. Hi!

The site is powered by Hugo, FreeBSD, and OpenZFS on OrionVM, everyone’s favourite bespoke cloud infrastructure provider.

If you found this post helpful or entertaining, you can shout me a coffee or send a comment. Thanks ☺️.