Computing: Computer Administration

MS-DOS 6.22 post-install configuration.

The difference between nowadays DOS and the old DOS from the beginning of the PC era is not only that an operating system like FreeDOS comes with a whole bunch of applications, whereas PC-DOS and MS-DOS just included the system commands and some basic programs like a text editor, but also that modern DOS are configured during setup, whereas after install, a system like MS-DOS 6.22 is only a very basic operating system, without CDROM, mouse and sound support, for example. This document shows some configuration steps that you should do after MS-DOS 6.22 is installed. Some of the features described are included with MS-DOS and have just to be activated, others make the download of additional software necessary.

Enabling upper memory.

By enabling upper memory, you may load a part of the drivers into the memory area between 640 KB and 1 MB. This frees up conventional memory and thus increases the largest executable program size. The memory manager EMM386 is included with MS-DOS 6.22. You can load it during system boot by adding a line to CONFIG.SYS. The system files CONFIG.SYS and AUTOEXEC.BAT are located at C:\ and may be changed using the text editor EDIT.COM. EMM386 has to be loaded immediately after HIMEM.SYS (that is loaded with the MS-DOS default configuration). Here the directive:
    DEVICE=C:\DOS\EMM386.EXE NOEMS

To load DOS into the upper memory, use the following directive (replacing the original line in CONFIG.SYS):
    DOS=HIGH,UMB

You can also load the display driver into the upper memory by replacing the corresponding line in CONFIG.SYS:
    DEVICEHIGH=C:\DOS\DISPLAY.SYS CON=(EGA,,1)

Adding CDROM support.

CDROM support on DOS systems requires two software components: a CD driver, depending on the type of CD drive used and a generic program to handle CDROM access. At the DOS times, CD drives were rare and MS-DOS 6.22 doesn't include any CD software. For IDE CD drives, NEC_IDE.SYS from the Windows 95 CD (that may be downloaded from the WinWorld website) works fine together with MSCDEX.EXE (from the same CD). You can use a floppy diskette to copy the two files to your C:\DOS directory. The driver has to be loaded from CONFIG.SYS and, as DISPLAY.SYS, we can load it into high memory:
    DEVICEHIGH=C:\DOS\NEC_IDE.SYS /D:MSCD001

The /D parameter specifies a name for the driver. The same name must be used with the /D parameter of MSCDEX, that is typically launched from AUTOEXEC.BAT:
    C:\DOS\MSCDEX /D:MSCD001

Notes:

The big problem with DOS systems is their memory limitations. As "each byte" is needed to run your programs, it seems not useful to load the CD software when it's not needed. Loading it on demand could, for example, be done by using the CONFIG.SYS MENU directives, letting the user choose to boot the system with or without CD support. I actually use a different approach: Loading the CD software from a batch file when I need it. The problem with this way to do is that we have to load the CD driver (NEC_IDE.SYS), what is normally done from CONFIG.SYS. Fortunately, there is a utility called DEVLOAD (it is included on the FreeDOS CD, that you can download from the FreeDOS website), that is so to say a program that makes it possible to "execute a DEVICE directive from the command line". If you want to load CDROM support this way, remove the corresponding lines in CONFIG.SYS and AUTOEXEC.BAT, copy DEVLOAD.COM to the C:\DOS directory, and in this directory, create the file CDROM.BAT with the following content:
    @ECHO OFF
    DEVLOAD C:\DOS\NEC_IDE.SYS /D:MSCD001
    MSCDEX /D:MSCD001

Adding mouse support.

Programs running on a text based operating system like DOS mostly use menus that open by pushing a key combination of ALT and the first letter of the menu caption or pushing a function key, often associated with shortcuts for given menu items. This is mostly quicker and simpler than to use a mouse, that often appears as a small colored square that is sometimes difficult to move and place there where you want. On the other side, there are DOS programs (in particular games), that have a real mouse pointer and where the presence of a mouse is recommendable. I was surprised that MS-DOS 6.22 does not include a mouse driver. But, that's no problem: CuteMouse from the FreeDOS project works well with MS-DOS. Copy the file CTMOUSE.EXE to C:\DOS and add the following to your AUTOEXEC.BAT:
    LH C:\DOS\CTMOUSE.EXE

Note the usage of LOADHIGH (LH) in this command: It installs the mouse driver into the upper memory (saving space for executable programs in the conventional memory). We can do the same for the keyboard driver by replacing the corresponding line in AUTOEXEC.BAT (German keyboard in my case):
    LH C:\DOS\KEYB.COM GR,,C:\DOS\KEYBOARD.SYS

Adding sound support.

There is no special driver needed to add sound to a DOS machine. Just add the following line to your CONFIG.SYS (the parameters are defaults and should work in nearly all cases):
    SET BLASTER=A220 I5 D1 H5 P330

If you need a program to test if sound is working on your DOS system, you may want to download this simple sound test program (with Turbo Pascal source code) from my website.

Suspending "idle state" CPU.

If memory limitation is one big problem of DOS systems, power consumption of the CPU is another one. In fact, the CPU is never put in suspended mode, even not when it is in an "idle" state, i.e. when it does nothing (for example, when a program is waiting for user input). If you run MS-DOS 6.22 on a virtual machine (what you probably do), one of the host's CPUs is thus all the time "blocked" by the DOS machine, You can see it in Windows Task Manager and you can probably hear it, too: The CPU turning without interruption, the temperature fans will be put on.

There is a nice utility called DOSIDLE, that you can download from the fsck website (version 2.50 from 2015). DOSIDLE puts the CPU in suspend mode whenever it is in an "idle" state. This is either done by calling the Advanced Power Management (APM) BIOS of the system (if it exists), or by executing the HLT machine instruction. Copy the file DOSIDLE.EXE to the C:\DOS directory, and in the AUTOEXEC.BAT file, add the following line:
    C:\DOS\DOSIDLE.EXE -CPU -APM -FM2

Concerning the command line parameters of this utility and the possible problems that might occur with some (rare) applications, please, have a look at the DOSIDLE documentation (included with the download archive).

Enabling command history.

I think that there were a lot of users who didn't know that DOSKEY is included with MS-DOS 6.22, because it's not enabled by default. What does this utility do? It saves a list of the user input and, using the up and down arrows, the user can "play back" this input, thus it avoids the user to have to type the same commands again and again. DOSKEY may be launched from AUTOEXEC.BAT by adding the following line:
    LH C:\DOS\DOSKEY.COM

Remember that LH is used to load the program into high memory.

Changing directory sort options.

By default, files and folders, displayed by the DIR command, are sorted by name, independently of the fact if they are a subdirectory or a file. This is not really the best way to do and setting sort options as we know it, for example, from Windows Explorer, i.e. first all folders (sorted by name) and then the files (sorted by name), is lots more convenient. The DIR command sort options may be set in AUTOEXEC.BAT using the environment variable DIRCMD (if you are interested in what the options used here mean, have a look at the help content for the DIR command):
    SET DIRCMD=/P /OGN

Creating a temporary directory.

By default, the environment variable TEMP (used sometimes by applications to store temporary data) is set to C:\DOS, what is really not a great idea. Let's create a new directory C:\TEMP, and then telling DOS to use this directory for temporary files. You can create this directory by running the commands
    CD \
    MKDIR TEMP

where the first command makes C:\ the actual directory, and the second one creates the subfolder TEMP in the actual directory.

The environment variable may be defined in AUTOEXEC.BAT. Replace the corresponding line with the following:
    SET TEMP=C:\TEMP
    SET TMP=C:\TEMP

In fact, we here create two environment variables, called TEMP and TMP respectively, and assign them both to the newly created temporary directory C:\TEMP.

My actual MS-DOS 6.22 system files.

Here the actual content of my MS-DOS 6.22 CONFIG.SYS and AUTOEXEC.BAT, after I applied the changes, described above, to the original files. Note, that CD support is here loaded by default at boot time (and not using a separate batch file to load it on demand from the command line).

CONFIG.SYS for MS-DOS 6.22.
    FILES=30
    BUFFERS=30
    DEVICE=C:\DOS\SETVER.EXE
    DEVICE=C:\DOS\HIMEM.SYS
    DEVICE=C:\DOS\EMM386.EXE NOEMS
    DOS=HIGH,UMB
    COUNTRY=061,,C:\DOS\COUNTRY.SYS
    DEVICEHIGH=C:\DOS\DISPLAY.SYS CON=(EGA,,1)
    DEVICEHIGH=C:\DOS\NEC_IDE.SYS /D:MSCD001
    SET BLASTER=A220 I5 D1 H5 P330
    SHELL=C:\COMMAND.COM C:\ /P /E:800

AUTOEXEC.BAT for MS-DOS 6.22.
    @ECHO OFF
    C:\DOS\SMARTDRV.EXE /X
    PROMPT $p$g
    SET DIRCMD=/P /OGN
    PATH C:\ENSEMBLE;C:\DOS
    SET TEMP=C:\TEMP
    SET TMP=C:\TEMP
    MODE CON CODEPAGE PREPARE=((437) C:\DOS\EGA.CPI)
    MODE CON CODEPAGE SELECT=437
    LH C:\DOS\KEYB.COM GR,,C:\DOS\KEYBOARD.SYS
    LH C:\DOS\CTMOUSE.EXE
    LH C:\DOS\DOSKEY.COM
    C:\DOS\DOSIDLE.EXE -CPU -APM -FM2
    C:\DOS\MSCDEX /D:MSCD001

The screenshot below shows the console output during boot of MS-DOS 6.22 with the configuration as described above. We can see the code page selection (DISPLAY.SYS), the installation of the CuteMouse driver, DOSIDLE, that detects Advanced Power Management and the installation of the CDROM, drive D: being assigned (by default) to the CD drive.

MS-DOS 6.22 console output during boot with advanced configuration

Memory usage.

A summary of memory used and memory available may be displayed using the MEM utility without parameters. We can see on the screenshot on the left that 79 K from 638 K total conventional memory is actually used, letting a maximum of 558 K for running programs. That is actually not so bad. Don't forget that on a DOS system there is always one single program running and that large applications often use the overlay technique to avoid out of memory conditions. Beside that, really huge applications often come with special extenders, that allow DOS to run in protected mode (in opposition to real mode), where the 640 K limit is no more an issue. As I said above, we can load CDROM support on demand from the command line, instead of loading it by default at boot time. And if we have a look at the screenshot on the right, showing the details about conventional and upper memory usage (you get this output by running MEM with the /C parameter), you can see that MSCDEX uses 27 K of conventional memory (from the 79 K used in total)!

MS-DOS 6.22 memory usage: Summary
MS-DOS 6.22 memory usage: Conventional and upper memory details

Reboot and shutdown.

As on a DOS system there is one single task being executed at a time, closing the running program and shutting the computer down by pushing the power off button or rebooting by pushing the restart button (in the virtualization software GUI) isn't a problem. Thus, there is no real need for a special shutdown utility. Such programs, however, exist and if you want, you can download REBOOT.COM and SHUTDOWN.COM from the DOS Tools section at the PLOP website. After having copied the files to the C:\DOS directory, you can reboot and shut down your MS-DOS 6.22 computer using the following commands:
    REBOOT
    SHUTDOWN -S 0

where the -S parameter of the shutdown command lets you specify the number of seconds to wait before doing so.

As shutdown is nearly always meant to be done immediately, we can do the following in order to use SHUTDOWN without having to specify a time parameter. First, rename SHUTDOWN.COM to SHUTDWN.COM. Then, in C:\DOS, create a batch file called SHUTDOWN.BAT with the following content:
    @ECHO OFF
    SHUTDWN.COM -S 0


If you find this text helpful, please, support me and this website by signing my guestbook.