How MS-DOS 6.22 Resolves Drive Conflicts at Boot

MS-DOS 6.22 resolves drive assignment conflicts during the boot sequence by using a rigid, deterministic enumeration hierarchy rather than dynamic conflict negotiation. Because the operating system does not identify volumes by unique identifiers (such as UUIDs), it prevents naming collisions by scanning physical hardware, partitions, and drivers in a predefined, sequential order. Drive letters are allocated on a first-come, first-served basis, automatically shifting secondary drive letters upward or utilizing driver-level letter swapping to ensure critical system drives retain their expected mappings.

1. Hardware and Partition Enumeration Order

The BIOS and the MS-DOS kernel (IO.SYS and MSDOS.SYS) initiate the allocation process before reading configuration files. Letters are assigned according to the following strict sequence:

  • Floppy Drives (A: and B:): The system always reserves A: for the first physical floppy drive. If a second floppy drive is present, it is assigned B:. If only one floppy exists, MS-DOS creates a logical B: that shares physical drive A: to allow floppy-to-floppy disk duplication.
  • Primary Partitions Across Disks: MS-DOS scans the Master Boot Record (MBR) of every physical hard disk detected by the system BIOS. It assigns letters to the active Primary DOS Partition on the first physical hard drive (C:), followed by the Primary DOS Partition on the second physical hard drive (D:), and so on.
  • Logical Drives in Extended Partitions: Once all primary partitions on all physical drives have consumed their letters, MS-DOS loops back to the first physical hard drive. It traverses the Extended Partition table, assigning sequential letters to each logical drive found on the first disk, before moving to the logical drives of the second disk.

This priority rule means adding a second hard drive with a primary partition will displace the logical drive letters of the first hard drive, as the new disk's primary partition claims the next letter in sequence before the extended partition logical drives are mapped.

2. Device Drivers and the LASTDRIVE Limit

Block devices initialized via CONFIG.SYS (such as RAMDRIVE.SYS) and external software such as MSCDEX.EXE (for CD-ROM drives) are evaluated after hardware partitions are established:

  • Sequential Allocation: Device drivers request a block unit and are automatically assigned the next available letter following the last partitioned drive.
  • The LASTDRIVE Directive: By default, MS-DOS sets the available letter ceiling to E:, unless physical partitions already exceed this letter. If a device driver attempts to mount a unit and no letters remain between the current assignment and LASTDRIVE, MS-DOS generates a boot error (e.g., "No drive letters available") and fails to mount the conflicting device. To resolve this, users must explicitly define LASTDRIVE=Z (or the desired letter) in CONFIG.SYS.

3. DriveSpace Letter Swapping

Drive assignment conflicts are particularly problematic for disk compression utilities like DriveSpace (DRVSPACE.BIN), which is native to MS-DOS 6.22. To ensure system files on the compressed volume remain accessible as C::

  • Internal Redirection: During pre-boot initialization, DRVSPACE.BIN loads before CONFIG.SYS is parsed. It reads DRVSPACE.INI, which designates a letter mapping table.
  • Host Drive Relocation: The physical boot drive containing the Compressed Volume File (CVF) is automatically shifted to a higher, unused drive letter (typically H: or a letter close to LASTDRIVE).
  • Virtual Mapping: The CVF itself is then mounted and mapped back to C:. This dynamic reassignment ensures software looking for system paths on the boot drive encounters no conflicts with the underlying physical storage.

4. Software Redirection Utilities

For conflicts that occur after the boot process has handed control over to COMMAND.COM, MS-DOS 6.22 relies on memory-resident redirection utilities:

  • SUBST: Replaces an existing drive letter or assigns an unused letter to map directly to a physical subfolder, overriding normal path conventions.
  • ASSIGN: Routes drive requests intended for one letter (such as A:) directly to another (such as C:), resolving software-specific letter hardcoding issues.