MS-DOS 6.22 SETVER Utility Compatibility Guide

The SETVER utility in MS-DOS 6.22 resolves software compatibility conflicts by deceiving legacy applications into detecting their expected version of DOS. Many older programs were hardcoded to check for a specific operating system version upon launch and would automatically terminate if they detected a newer release like MS-DOS 6.22. SETVER operates by maintaining an internal version table that intercepts system version queries, returning an older version number on a per-program basis to ensure software continues to run smoothly.

The Version Check Problem

During the development of early PC software, programmers frequently implemented strict version-checking routines to prevent their applications from executing on unsupported DOS environments. When MS-DOS 6.22 was released, running a program designed strictly for MS-DOS 3.3, 4.0, or 5.0 often resulted in an immediate abort, accompanied by the error message "Incorrect DOS version." In most cases, the underlying MS-DOS APIs remained backward-compatible, meaning the application could function correctly if it simply bypassed the initial version check.

How SETVER Operates

SETVER functions in two distinct components: a device driver and an executable management command.

The device driver must be loaded during startup by including the following line in the CONFIG.SYS file:

DEVICE=C:\DOS\SETVER.EXE

Once resident in memory, SETVER intercepts software interrupts that query the operating system—specifically INT 21h, Function 30h (Get DOS Version). When an application calls this function, SETVER checks the executable's filename against its internal version table:

  • If the executable name matches an entry in the table, SETVER intercepts the call and reports the preconfigured version number (such as 5.00 or 3.30) directly to that specific program.
  • If the executable is not in the table, SETVER permits the standard MS-DOS 6.22 response to pass through unaltered.

Managing the SETVER Table

Users interact with and modify the compatibility list using the command-line utility from the DOS prompt:

  • Viewing the Table: Running SETVER without parameters displays all current software entries and their associated spoofed versions. MS-DOS 6.22 includes a default list of common commercial applications pre-populated in this table.
  • Adding or Updating an Entry: Typing SETVER PROGRAM.EXE X.XX (for example, SETVER OLDAPP.EXE 5.00) maps the executable to the specified DOS version.
  • Deleting an Entry: Typing SETVER PROGRAM.EXE /DELETE removes an entry from the list.

Any modifications made to the version table alter the SETVER.EXE file on disk. Consequently, changes do not take effect immediately; the computer must be restarted so the driver can reload the updated table into memory.

Limitations

While SETVER effectively circumvents rigid version checks, it only alters the reported version string. It does not restore discontinued APIs, alter low-level memory structures, or emulate obsolete internal behaviors. If an application fails due to genuine architectural incompatibilities rather than an artificial version check, SETVER cannot resolve the underlying failure.