If you mess around with DOS long enough, you’ll eventually try to run a program and get an error message that says Incorrect DOS version. This means you’re trying to run a program designed for a version of DOS other than the one you’re running.
The best solution is to run programs under the same version of DOS they were designed to run under. But when you can’t do that, as long as you are running DOS 5.0 or newer, you can use the SETVER command to lie to the program and bypass the error check. The program will run, though there is a risk it may not be fully compatible.
Why programs report an incorrect DOS version
As DOS grew and evolved, it gained capabilities that earlier versions didn’t have. Some programs would check what DOS version you were running to make sure you were running something new enough. If you were running DOS 2.0 and tried to run a program designed to take advantage of DOS 3.3, the program would give an error message.
The problem was that some programs gave an error message if your DOS was newer than it expected, not just older. In theory, DOS 4.0 and newer should all be backward compatible with DOS 3.3. And in practice it pretty much was. But not all publishers were willing to take that chance.
With DOS 5.0, Microsoft included a utility called SETVER to make DOS 5.0 lie to older software so it would run under the new version. This almost always worked well. So Microsoft continued supplying SETVER with DOS 6, and with the versions of DOS included in Windows 95, 98, 98SE, and ME.
Why standard DOS commands report an incorrect DOS version
But sometimes you get the incorrect DOS version error when you’re running a standard DOS utility. Why’s that? Most of Microsoft’s own DOS commands check to make sure they match the DOS version they originally came with. Some of them, like the EMM386 memory manager and SMARTDRV disk cache, don’t, but disk utilities like CHKDSK and the COMMAND.COM command interpreter will. This way, if Microsoft made any changes to DOS, the commands wouldn’t get into trouble. It ensured if you made a DOS boot disk with an older DOS version and then tried to run commands from your hard drive containing a newer version of DOS, nothing bad would happen.
The way to prevent these problems is to not mix and match DOS versions. If you want to run DOS 6.22, install a fresh copy of DOS 6.22 from DOS disks and don’t copy files from a Windows 95 machine. And if you want a DOS boot disk, build the DOS boot disk from a machine running the specific version of DOS you want.
If you’re really careful about what you mix, you can mix and match certain programs to build a chimera DOS with certain attributes you want, but be prepared for lots of trial and error to get it working the way you want.
Using SETVER to lie to DOS programs
If you need to get certain programs to run under a version of DOS they don’t want to, you can use SETVER to force it. Add the following line to CONFIG.SYS:
Then, add appropriate lines to AUTOEXEC.BAT. Here’s one possible example:
setver c:\123\123.exe 3.3
This lies to 123.exe that it’s running DOS 3.3. You can either specify the full path, or just an individual filename. Add entries for any program that needs one. After you reboot, these programs will think they’re running under a different version of DOS, which may be desirable.
Using the FreeDOS VERSION command
If you use FreeDOS, it doesn’t include the SETVER command. But you can issue the VERSION command in config.sys to make FreeDOS report certain version numbers. Simply add the following line to config.sys:
Unlike MS-DOS or PC DOS, in FreeDOS, this command is global. Use a setting of 6.22 to imitate DOS 6.2, 5.0 to imitate DOS 5.0, or 7.1 to imitate Windows 98 in DOS mode. This will allow you to run programs that expect those versions, including utilities copied from that particular Microsoft version of DOS. That’s helpful if you like FreeDOS but prefer specific functionality from one of Microsoft’s DOS tools.
Those three versions are probably the most useful, but you can use any version you want.