BTTR Software



Hosted products

Ports & builds




Products /
DRVEXCH - Exchange drive letters

Copyright © 1997-2001 BTTR Software



It is known that the way that DOS assigns drive letters to hard disk partitions at startup is not very conveniently for users, who have removable hard disks, i.e., mounted in "drawers", or just add a new hard disk to their systems.

On a two-disk system with 1 primary partition and 2 logical drives in an extended partition for each hard disk:

  • primary DOS partition on the first hard disk becomes drive C:
  • primary DOS partition on the second hard disk becomes drive D:
  • next drive letters are assigned to logical drives in extended partitions on the first hard disk
  • next drive letters are assigned to logical drives in extended partitions on the second hard disk

Therefore, if you have software installed in the extended partition of the first hard disk and you add or remove second hard disk, the drive letter changes and all paths (and maybe software configuration files) become invalid.

In addition, you can create (but not with standard DOS FDISK programs) more than one primary partition on each hard disk; this can be sometimes useful, e.g., when you want to have several versions of DOS and/or Microsoft Windows installed on your PC and want to keep them well separated.

As it is non-standard configuration, it is handled differently by different versions of DOS.

Very old DOS versions ignore the additional partitions. The MS-DOSes (including MS-DOS 7.x from Microsoft Windows 9x) and probably IBM PC-DOSes assign letters AFTER all logical drives in extended partitions on all hard disks to those primary partitions. The DR/Novell/Caldera DOSes assign letters to ALL primary partitions BEFORE all logical drives in extended partitions.

What a mess...

But now, after a long trial-and-error research, we managed to prepare a solution (or better: a partial solution) to this problem.

System requirements

  • Intel i8086 microprocessor (or compatibles)
  • Microsoft MS-DOS 3.00 (or compatibles)

Version history


  • fixed DOS version check
  • fixed DPB swapping to prevent trashing the DPB


  • first release by BTTR Software
  • name changed to DRVEXCH to avoid confusion with another existing utility
  • fixed bug in test of memory available to device driver
  • improved handling of command line parameters
  • maximum logical sector sector size is now 8 Kbytes, what should be enough for even most untypical configurations
  • code optimized slightly
  • messages printed on screen changed
  • source code reformatted and new comments added
  • documentation updated and reformatted


  • released initial public version, named DRVSWAP


Binary + Manual: (13.3 Kbytes)
Source code (The Netwide Assembler): (13.2 Kbytes)

Page last modified on 03-JUN-2018.
Copyright © 1997-2019 BTTR Software. All rights reserved.
Favicon contributed by Paul Blair. Used with permission.

Valid HTML 4.01 Transitional