How MS-DOS 6.22 Handles Low-Level Formatting

MS-DOS 6.22 does not directly communicate with hard drive controllers to execute low-level formatting, instead relying on BIOS interrupts for media initialization while restricting its native tools to high-level filesystem creation. Understanding this process requires examining the division of responsibility between the MS-DOS operating system, the ROM BIOS, and hardware drive controllers, as well as the distinction between floppy disk formatting and fixed disk management during the early-to-mid 1990s.

The Role of FORMAT.COM: High-Level vs. Low-Level Formatting

The native MS-DOS 6.22 utility FORMAT.COM does not perform true low-level formatting (LLF) on hard disks. A true low-level format writes physical track markers, sector headers, interleave gaps, and error-correcting code (ECC) bits directly to magnetic media.

When executed against a hard drive partition, FORMAT.COM only performs a high-level format:

  1. It verifies existing sector readability.
  2. It writes a new volume boot record (VBR).
  3. It initializes the File Allocation Tables (FAT16).
  4. It clears the root directory structure.

Because MS-DOS 6.22 was designed around device abstraction, the operating system kernel (MSDOS.SYS) and standard utilities do not include hardware-specific drivers for issuing raw ATA, IDE, or SCSI controller-level commands.

Floppy Disk Controller Management via BIOS INT 13h

The exception to MS-DOS 6.22 avoiding low-level operations is the floppy diskette. For floppy media, FORMAT.COM executes a combined physical and logical format.

Rather than sending commands directly to the Floppy Disk Controller (FDC) chip (typically an Intel 82072A or NEC µPD765), MS-DOS hands the operation over to the ROM BIOS:

  1. BIOS Invocation: MS-DOS calls software interrupt INT 13h, with register AH set to 05h (Format Track).
  2. Parameter Passing: The calling routine populates an address field buffer containing 4-byte headers for each sector on the track (Cylinder, Head, Sector number, and Sector Size code). Registers specify the drive number (DL), head (DH), and cylinder (CH).
  3. Hardware Execution: The ROM BIOS translates this software interrupt into physical I/O commands sent to the FDC through port registers 0x3F4 (Main Status Register) and 0x3F5 (Data Register), utilizing Direct Memory Access (DMA Channel 2) to transfer the sector headers.
  4. Drive Action: The controller drives the read/write head to the designated track, detects the index pulse, and writes the physical sector address marks, sync bytes, gaps, and fill characters across the track.

Hard Drive Low-Level Formatting Constraints

By the time MS-DOS 6.22 was released in 1994, IDE/ATA drives had completely superseded older MFM and RLL drives. IDE (Integrated Drive Electronics) relocated the disk controller directly onto the physical drive housing.

Because modern IDE drives utilized embedded servo data written at the factory to guide the read/write heads, issuing a classical low-level format command would destroy alignment data, rendering the drive permanently unusable. Consequently:

  • BIOS Blocking: Most PC BIOS implementations stripped the ability of INT 13h, AH=05h to format tracks on fixed disks, returning an error code if called on drive IDs 80h or higher.
  • Controller Encapsulation: ATA drives translated physical geometry (cylinders, heads, sectors) into logical geometry through internal translation mechanisms. MS-DOS had no awareness of the actual physical geometry.

How Low-Level Hard Drive Tasks Were Bypassed in the DOS Era

Because MS-DOS 6.22 lacked direct controller command dispatching for hard disks, users requiring low-level routines had to bypass the operating system entirely using one of three methods:

  1. Direct Debug Scripting for MFM/RLL Controllers: On older systems, users ran the MS-DOS utility DEBUG.EXE to jump directly into an onboard controller ROM address (commonly G=C800:5), which executed the controller manufacturer's native low-level formatting firmware.
  2. Dedicated ATA Command Tools: Specialized vendor software (such as utilities from Seagate, Western Digital, or Ontrack) bypassed MS-DOS system calls and wrote directly to ATA task file I/O registers (ports 0x1F0 through 0x1F7). These tools issued specific vendor firmware commands, or the ATA INITIALIZE DRIVE PARAMETERS (91h) command, to zero-fill sectors rather than physically restructure the tracks.
  3. SCSI Controller BIOS Menus: SCSI host adapters (such as Adaptec cards) maintained their own independent option ROMs. Low-level formatting of SCSI targets was handled inside the adapter's configuration menu during boot via the SCSI FORMAT UNIT (04h) command, independent of MS-DOS.

In summary, MS-DOS 6.22 manages drive controller commands during disk formatting entirely through software abstraction. It relies on the BIOS INT 13h interface for track-level formatting of floppy disks, while delegating high-level partition initialization to its native utilities and leaving true hard disk low-level management to specialized controller hardware and firmware.