Saturday, September 6, 2014

A: B: and C: (and later D:)

A Brief Overview of the History of Disk Drives and DOS

MS-DOS assigns drive letters to disk drives, whether they are physical drives or virtual drives.  All user-level drive access through DOS is via drive letters.  This is why to copy a file from drive A: to drive B:, you can type at the command prompt :

copy b:\myfile.txt a:

The PC BIOS itself had no concept of drive letters, all it originally acknowledged were floppy controllers.  (The PC and PCjr. BIOSes also had routines to interface with a cassette recorder, but this was not accomplished with specialized hardware and is unique to these systems).  The PC Floppy controller could originally support two internal drives and two external drives, but few systems ever used a four drive system.

Due to the flexibility of the PC expansion bus, just about any kind of storage device could be made to work with the computer.  A tape drive, for example, may attach to a specialized interface card.  Later, it would likely be SCSI compatible and attach via a SCSI interface card.  An internal hard drive could use an ST-506  MFM or RLL style controller with the separate command and data ribbons, an IDE interface card or a SCSI interface card.  In order to do anything with these devices, either the PC BIOS had to be aware of them, they had to have BIOS extension ROMs on their interface cards, device drivers for the operating system with which they were intended to work or a specialized program that could talk directly to the card via I/O ports or its upper memory range.

In the days of PC-DOS 1.0-3.2, it would have been very unlikely for drive letters to get above C:.  This is because most computers used two floppy drives at best and hard drives were not yet ubiquitous.  A standard MFM controller could control a pair of drives, but not all systems had four half height 5.25" drive bays.  MFM controllers were generally limited to internal hard drives.  More importantly, hard drives cost a great deal in the 1980s, often half the price of a computer was due to the purchase of hard drives.

The use of the letters of the alphabet to access drives seemed reasonable at the time.  The concept of someone having twenty-six physical drives in a system was still more fantasy than reality.  Then DOS 3.3 came along with support for the creation of logical drives within the extended partition.  Prior to DOS 4.0, each drive letter could only recognize 32MB of storage.  Thus you could have one primary 32MB partition, the boot partition, and an extended partition up to 2GB.  Within the extended partition, you could carve out logical drives, each no larger than 32MB.  Each drive would get assigned a drive letter.  A: and B: being reserved for floppy drives, you could have a maximum amount of usable storage of 768MB in DOS 3.3 (24 x 32MB).  Because DOS 4.0 acquired a reputation of being a buggy memory hog, many people stayed with DOS 3.3 until the release of DR-DOS 5.0 in 1990 or MS-DOS 5.0 in 1991.

Even though MS-DOS 3.3 had severe partition limitations, few hard drives of its day came anywhere near 768MB.  However, each physical drive had to share the same 24 available drive letters.  MS-DOS 5.0 allowed each partition, whether primary or extended, to be up to 2GB.  The Int 13h disk BIOS routines only supported 8GB hard drive parameters, and thanks to different ATA IDE limitations, the storage space was even more limited to 504MB until BIOS makers began using workarounds such as LBA and BIOS translation.  By the time 2GB hard drives became affordable, Windows 95 was in use.

The CD-ROM drive, despite its read-only capabilities, was to be accessed like a disk drive.  While at first it used proprietary interfaces, usually tied to a sound card, eventually it would usually use IDE or SCSI interfaces.  While DOS increased its support for hard drive capacities over the years and the PC BIOSes added support for the standard AT-IDE interface starting with the IBM PC AT, full support for CD-ROM drives was never included in the BIOS and DOS never integrated it into its core operating files.  Instead, the CD-ROM was accessed through a device driver specific to the drive and interface loaded in CONFIG.SYS and MS-DOS CD-ROM extensions program MSCDEX loaded in AUTOEXEC.BAT.  MSCDEX would assign a drive letter to the CD-ROM drive.

Each set of IDE ports can support a master and a slave drive, and the PC can support up to four sets of IDE ports, the primary, secondary, tertiary and quaternary.  With IDE you can have eight devices, assuming you have a tower large enough to hold them.  One SCSI interface can support seven or fifteen devices (the interface counts as a device), depending on the SCSI version.

Drive Letter Assignment Over the Years

With the IBM PC, which only supported full height drives and typically came with two 5.25" full height double density Tandon TM100-1 (single sided) or -2A (double sided) drives, one drive was Drive A: and the other drive was Drive B:  There were only two bays for disk drives and they were only designed to support full-height drives.  More adventurous PC owners could find a third-party kit to mount two half-height drives in the full height bay, use a hard card or an external disk drive.  The IBM PCjr. only supported one disk drive, and it was Drive A: and B:, DOS being able to redirect commands meant for Drive B: to Drive A:

The IBM PC/XT shared the same number of bays as the PC and originally came with one 5.25" full height Tandon TM100-2A and one 10MB ST-412 MFM full height hard disk drive.  You might think that the hard drive would be assigned to Drive B:, but to maintain compatibility with two floppy disk systems, DOS 2.0 assigned it to drive C:   With the IBM PC AT, with two external half height bays and one internal half height bay, drives A:, B; and C: were now quite feasible.  A typical AT configuration would have one 1.2MB half height drive and one 360KB half height drive (for compatibility with double density disks) and a 20MB internal hard drive.  Unlike the PC and XT floppy controller, the AT hard disk and floppy controller did not have a port on the bracket for external floppy drives, so the two floppy drive maximum limit was firmly established with these machines.

Nonetheless, PC and MS-DOS 1.0-3.3 and DR-DOS up to and including 6.0 assigned drive letters to the first four floppy drives, then to other kinds of drives.  PC and MS-DOS 4.0 and above, reflecting a greater understanding of how PCs were actually used, assigned A: and B: to floppy drives, then C: and letters thereafter to hard drives, and then it assigned letters to any further floppy drives the user may have in the system.

However, drive lettering after C: was very flexible in DOS, and as most home users only had one hard drive, CD-ROM programs typically ran off Drive D:  In fact, there are some games, both for DOS and Windows 3.x and 9x, that refuse to run unless run off Drive D:  MSCDEX could reserve Drive D: for the CD-ROM drive, and hard drive partitions could be assigned to use Drive E: or above.

Even today with Windows 8.1, much of this drive lettering arrangement is still followed.  Drive letters A: and B: are still reserved for floppy drives, even though a typical user is unlikely to have physical floppy drives in his modern system.  Fortunately, floppy drive emulators can use A: and B: without difficulty.  Drive C: is always a boot drive.  Thereafter, things get very flexible.  Dual-boot Windows systems, like Windows XP and Windows 7 can each be Drive C:, depending on which OS is being active.  Drive C: can be just about anything except a floppy (too small) or an CD/DVD/Blu-ray (not made for rewriting) drive.  It could be a hard disk drive, a solid state drive, a Compact Flash or SD Card or a USB stick.  Drive D: and above could be an optical drive, physical or virtual or any of the above.  Windows will let you assign whatever drive letter you want.  However, there is no Drive AA:, even in Windows 8.1.  The twenty-three available drive letters can get fully used today.

The Ideal Vintage Drive Setup

I believe that if you are buying a specific system, like an IBM PC Model 5150, a Compaq Portable or a Tandy 1000 RLX-HD, it is usually preferable to stick with the drives it came with, especially the floppy drives, assuming they work.  For systems with few bays, using things like CF cards or DOMs mounted directly onto an XT-IDE header may be required.

For systems of the 1980s, it is typically best to have at least one 360KB drive and one 720KB drive, where possible, and a hard drive.  Actually, virtually any 1.44MB drive will work as a 720KB drive, which can be rare.  The same cannot be said for 1.2MB drives, and generally they were not used for games during the 1980s.  With such a setup, you have your A: B: and C:, and you can play just about anything.

For systems of the 1990s, it is best to have one 1.44MB drive, one 1.2MB drive and one CD-ROM (early to mid-90s) or DVD-ROM (late 90s) drive with a hard drive.  With your optical drive as D:, you have one of everything.  For the late 1990s, you can get away with the 1.44MB drive, or no floppy drive at all if you have no need for a boot disk.  Unfortunately, all floppy drive emulators that I know of require at least Windows 2000.

2 comments:

  1. "Drive C: can be just about anything except a floppy (too small) or an CD/DVD/Blu-ray (not made for rewriting) drive." => Historically, Windows did not have to be installed into C:\WINDOWS, it could be installed in a different directory, even on to another drive altogether. I'm uncertain if Microsoft still supports this config in the more recent versions, but they definitely used to. If SYSTEMDRIVE=D, and Windows is running out of D:\WINDOWS, then C drive might not exist at all – or could conceivably even be a floppy. All that said, I have no doubt heaps of third party software hardcodes C:\WINDOWS, and will just fail completely if it is something else – they are supposed to instead use the SystemRoot environment variable, or the GetWindowsDirectory/GetSystemDirectory APIs, but many don't.

    ReplyDelete
  2. Are there any accounts or videos of that 8 drive IDE system? I'd like to see one in operation.

    ReplyDelete