Out of the many flavors of DOS that exist, I chose "MSDOS 7.1". This is the version of DOS that comes with Windows 95 OSR2 and Windows 98. It supports large drives, and FAT32 partitions.

Drive Partitioning

First, a 500 meg FAT16 partition was created. This partition contains all of the software and a copy of Windows 95 OSR2, in case I ever need it. A second partition was created, which covers the rest of the drive . This serves as the storage area for all of my music.

Note: The version of Fdisk that comes with Windows 95 OSR2, 98, 98SE has a bug which prevents it working properly on drives larger than 64GB. An updated version of Fdisk is available from Microsoft. Some alternatives to Fdisk include Partition Magic, and Ghost's Gdisk. I've had good luck with both.


With plenty of hard drive space to burn, I did install a copy of Windows 95 OSR2, just in I need it for some reason in the future. Next a configuration change was necessary to make the machine boot into DOS, by default. This is done by doing the following in DOS:

Enter the following commands:
attrib c:\msdos.sys -h -r -s
edit c:\msdos.sys

Next look for a line like this: BootGUI=1 and change it to: BootGUI=0
To get rid of the startup screen (Optional) change or add the following: Logo=0
To stop scandisk when Windows isn't shut down properly: Autoscan=0
When you're done save, exit, and enter the following command:
attrib c:\msdos.sys +h +r +s

At this point DOS will be ready to go. If everything was done correctly rebooting will take you straight to a c:\ prompt. Additional configuration will be necessary. More to come in the next series of pages.

DOS Networking

DOS is certainly capable of being run in a networked environment, but requires third party software to make it happen. Out of the many networking packages available I tried the following:
Microsoft Network Client for DOS
Invisible LAN

Microsoft Network Client for DOS

This client allows a machine to connect to network shares on any Windows machine. The software is free and works with just about any network card that comes with NDIS drivers. The following page gives full details on where to download, and how to install this software. Additional work is needed in order to make shares available. The procedure is described here. The Microsoft Client worked as it should. Unfortunately the networking performance was sub-par.


I used PowerLAN for a while on my software development machine (I was using MSDOS 6.22 on this computer). With the installation of their network client on a Windows 9x machine, the two computers can talk to each other. The network performance was very good. The problem: PowerLAN's DOS client isn't compatible with DOS 7.1  PowerLAN and can be downloaded from this site.


Like PowerLAN, this networking package requires network client software to be installed on the Windows 9x machine so the two computers can talk to each other. It will work just about any network card that has a working NDIS driver. The InvisibleLAN software and documentation can be downloaded here. Like PowerLAN, Invisible LAN requires share.exe to be loaded before it'll start. Unfortunately, share.exe isn't included with, and isn't compatible with DOS 7.1 Share.exe doesn't harm anything when used anyway, if fact it does nothing except appease Invisible LAN.

(Under DOS 6.22 and earlier share.exe deals with file concurrency issues. Under DOS 7.1, with share.exe not doing it's job, it's important not to have more than one machine write information to the same file at the same time.)

A copy of share.exe can be downloaded from here. Copy it it the InvisibleLAN directory. (e.g. c:\ilan) Share.exe normally will refuse to run under DOS 7.1, but you can trick it into thinking it's being run under an older version of DOS. First enter the following command:
setver share.exe 6.22
Next add the following line to the config.sys


MPXPlay is an excellent DOS-Based WAV/MP3 player. The latest version can be downloaded from the author's website. The custom frontend software that I wrote is compatible with MPXPlay (1.46). This was the most recent non-beta version of MPXPlay available at the time.

Make a directory for MPXPlay and any of the frontend software you plan to use (e.g. c:\player). It's also a good idea to add MPXPlay to path statement in your autoexec.bat. That way MPXPlay can be run even when your not in the player's directory. To do this go into your autoexec.bat and look for a line like this:
Then add MPXPlay's directory to the path. If MPXPlay was placed in c:\player, the path should look similar to this:

MPXPlay can be used in a number of ways. If you're using a playlist, the syntax will look similar to this:
mpxplay -@ playlist.m3u

If you're not using playlists, the following can be done:
mpxplay *.*
This tells MPXPlay to play all music files in a particular directory.

MPXPlay normally reads its song info from the ID3 tags in the MP3 files. It is also possible to have it load this information from a file. The syntax for doing this is:
mpxplay *.* -il fileinfo.txt
assuming that fileinfo.txt is the textfile supplying the track information.

See MPXPlay's documentation for further info.

VCC - Virtual CD Changer for DOS

VCC is the custom frontend software that I wrote specifically for my car computer. It consists of two parts:
-- a front-end which handles the directory navigation
-- a tsr which becomes active while MPXPlay is running

Instead of including zillions of options I chose to keep the software simple. There are two advantages to this approach. First, it keeps the code simple and easy to maintain. Second, it keeps the software smaller and less resource-hungry.

The music is organized in a two-level directory structure. From the music directory there are 26 subdirectories (A,B,C,..,Z). In each of subdirectories is another set of directories which have the music files in them. The directory structure is like this:

                 /          \
                A    ...     Z
               /              \
          ACDC1      ...       ZZTOP3
         /     \              /      \
       01.wav...10.wav    01.mp3...10.mp3

The music directory can be in any place, but requires this structure for the software to function properly. The navigation is entirely directory-based. This eliminates the need for playlists and the hassle of maintaining them. This system works like a 26-cartridge cd-changer would, assuming the cds were grouped alphabetically. Short filenames are used for both the music directories and the sound files.

Track and disc info are stored in two text files: fileinfo.txt and discinfo.txt  This totally eliminates the need for long-filenames and/or id3 tags.

An example fileinfo.txt is as follows:
01.WAV Jailbreak
02.WAV You Ain't Got a Hold on Me
03.WAV Show Business
04.WAV Soul Stripper
05.WAV Baby Please Don't Go

Likewise, discinfo.txt looks like this:
'74 Jailbreak

As an added bonus, no special utilities are needed to update any of this information. Your favorite text editor will do the job.

Hardware Requirements:
Gravis Gamepad Pro (the normal one, not the USB model)
Matrix Orbital 2041 20X4 serial LCD display
Pentium Class PC (a Pentium 75 or better)

Software Requirements:
DOS (tested on MSDOS 6.22 and MSDOS 7.1)
MPXPlay 1.46 (will probably work on MPXPlay 1.43 and later)

Make a directory (e.g. c:\player )
Add this directory to the path statement in the autoexec.bat
Download and unzip MPXPlay 1.46 into this directory
Download and unzip VCC to the same directory
Make a music directory, and create the appropriate directory structure described above.

To make VCC startup automatically every time the machine is booted, add the following lines to the autoexec.bat:
c:\playerdir\frontend.bat musicdir

Replace playerdir and musicdir with the names of the directories that you made for the player and the music.


[Gravis Gamepad Pro]
The 4 trigger buttons are used to switch between discs and categories of discs. The red and green buttons are used to switch between tracks. On the left is rewind/ffd and a volume control. The start button is used to pause MPXPlay. The select button isn't being used at this time.

The following info is displayed on the 20X4 LCD:
[20X4 LCD in action]  Line1: Band Name
 Line2 : Album Title
 Line3: Track #  /  Track Title
 Line4: Time / Level meter  /  Volume

*There is no software adjustment of the LCD contrast.
*There is no method to play random tracks.

Tech Stuff:
The frontend is responsible for the directory navigation. It natively supports the Gamepad Pro, and displays Artist / Band info on lines 1 and 2.
The frontend requires the user to push the play button before the music starts. In addition, it also allows you to change the volume while the MPXPlay isn't running. These two features ensure that the player doesn't automatically start, playing music at too high of a volume.
The TSR becomes active whenever MPXPlay is running. It is responsible for reading information (track info, volume, level) from screen memory and displaying it on lines 3 and 4 on the LCD. In addition is also polls the joystick, and "fakes keystrokes", allowing a person to control MPXPlay from the GamePad Pro joystick.

Last Update: 12-22-2006