23

I was reading this answer, as the question came to my mind: why does C: indicate the first hard drive partition?

The usage dates back to CP/M (as noted in a comment), was embraced by MS-DOS, and persists in Windows 10. I looked around but could not find any better explanation than

The computer reserves A: and B: drive letters for the floppy disk drive and removable media, such as tape drives, even if these devices are not installed in the computer. As you install other drives and create new partitions, they are assigned to other drive letters after C, such as D, E, F, G, etc.

which I took from here and it's basically the same thing that is on Wikipedia and in the aforementioned SE answer.

I may be in for disappointment, but I wonder if there is more to the story. To draw a parallel, in many scientific fields (𝑥, 𝑦, 𝑧) is acknowledged as a tuple of unknowns. The rationale behind this choice is likely that the first letters of the alphabet were used for known quantities, and the last for unknown quantities (as per this answer on MathOverflow).

So the question may probably be better phrased as: did C: have a meaning which was unrelated to the existence of two floppy drives?


UPDATES: It has been pointed out in a comment that a very similar question has also been asked, answered and massively upvoted on superuser SE. Does it even make sense at this point for this question to exist here? Mods and admins, feel free to close or take any action you deem appropriate!

12
  • 19
    If you've ever worked with floppies, you'll know that you'll need two drives to work comfortably. Most PC hardware had a controller with a cable where you could connect up to two floppy drive (but not everyone had two). That's why A: and B: are reserved, and C: was the next free one. No special meaning. BTW, drive letters go back to CP/M.
    – dirkt
    Dec 4 '20 at 15:54
  • 48
    Why is the stated reason not enough? The IBM PC configuration had room for 2 floppies. It is easier for the untutored user to be told "the hard disc is C:" than to hear "it depends...". Dec 4 '20 at 15:58
  • 3
    A similar line of logic led to :4 being used for the first hard drive partition in Acorn RiscOS. On the earlier BBC Micro, drives 0 and 1 referred to the first side of the two floppy drives you could attach to the i8271 or WD1770 controller (whichever was fitted), and drives 2 and 3 referred to the second side of the two drives. Drive 4 was thus the first drive number available for an ADFS-formatted hard drive, originally a "Winchester" ST-series drive connected through a SCSI controller and adapter board.
    – Chromatix
    Dec 4 '20 at 16:31
  • 4
    @wizclown Because these letters never had any meaning under CP/M or DOS. They simply number drives in sequence. Otherwise, why having A for a floppy and not F?
    – Raffzahn
    Dec 4 '20 at 16:32
  • 14
    @dirkt, it's more than just reserving 'B:' for a second drive. Even on a single-floppy system, you could copy a file from A: to B:. The copy routine would read bytes from the diskette that was in the drive when you gave the command, and then it would prompt you to pop that one out, and pop-in the one that you wanted to write. It might prompt you to switch back and forth several times depending on the size of the file and the amount of available RAM. See Raffzahn's answer and Chromatix answer (below) for the details. Dec 4 '20 at 18:50
60

TL;DR:

Why has “C:” been chosen for the first hard drive partition?

Because it is the first letter after A and B. Drives are simply numbered in sequence using letters. Since the vast majority of systems in use had only one or two floppy drives, C was usually the first number to be assigned to the next drive found after them.

Did C: have a meaning which was non-depending of the existence of two floppy drives?

No, drive letters have no meaning at all. They are simply variable names chosen in sequence of detection.


In Detail

why does C: indicate the first hard drive partition?

Because it is the first letter after A and B, which were defined for floppy drives - as in the beginning, there were only floppies.

The fact that C is always the primary HD (or partition) is, as explained in the linked answer, a later mechanic, made to please (install) software that was made to assume C the main installation drive.

The usage dates back to CP/M (as noted in a comment), was embraced by MS-DOS, and persists in Windows 10. I looked around but could not find any better explanation than [A&B are fixed while further letters are assigned in sequence of drives 'discovered']

That's exactly the point. Internally drives (in CP/M) were simply numbered. The use of letters is a translation of this number into a letter. 1st (Drive) -> A, 2nd -> B and so on.

The sequence was not related to types of media or drives. A hard disk could well be drive A, while the first Floppy could be E, being the 4th drive reported by BIOS. Similar there was mo virtual drive B. Only available drives got numbered.

MS-DOS changed this by putting floppies first and adding a virtual floppy drive B for single floppy systems (yes, they were common, after all, 160 KiB is a lot of storage). This simplifies operation of software that needs two disks at once - not just for copying, but every other usage - like having a system disk with OS and application, for example a word processor, and another for data (read: text files). With only one drive a software had to handle disk change on it's own, not a nice task - especially if other components may be needed from the system disk. Handling two disks independently in the same drive did away with all issues (*1), software could assume there are always two drives to work with (*2).

So in an MS-DOS system C was always the first available drive number (thus letter) after the mandatory (at the time) floppy(s). When (later) hard disks became available they were usually mounted as C. Again (much) later when hard disk became a commodity, software started to assume C as being a hard disk, the same way they did for A&B as floppies. Which of course did not work out as easy with systems offering more floppy drives than two. So, again later (with DOS 5) C was finally reserved for the primary boot disk/partition (if not being a floppy).

which I took from here and it's basically the same thing that is on Wikipedia and in the aforementioned SE answer.

Finding it in many variations should give a hint that it really is the way it was made.

I may be in for disappointment, but I wonder if there is more to the story.

No, there is no meaning with drive letters. It's simply meant to number the drives, so they can be distinguished.

To draw a parallel, in many scientific fields (𝑥, 𝑦, 𝑧) is acknowledged as a tuple of unknowns. The criteria behind this choice is likely that the first letters of the alphabet were used for known quantities, and the last for unknown quantities (as per this answer on MathOverflow).

Well, that's exactly as here. The sequence of known drives starts with A and goes up the alphabet order.

Did C: have a meaning which was non-depending of the existence of two floppy drives?

No, drive letters have no meaning at all. They are simply variable names chosen in sequence of detection.


Beyond One's Own Nose

Putting aside if meaningful drive names are a good thing or not, other systems did use more meaningful names, like Amiga-DOS used DFn for floppies (with n sequential numbered starting with Zero) and DHn for hard drives. The problem about locating the system drive was solved by adding logical names like SYS for the system drive/directory.

Then again, why use drive designators at all?

Like Unixoides, simply just work with their directory tree, having files (directories) from some various drives - and points thereof - simply mounted anywhere. Some not adding any way to access the drive as such, others offering symbolic entries to do so. Being somewhere in the middle between desktop and mainframe this dual handling makes quite sense.

And then there are systems, like all TSOS offspring, that do not care much about directories or alike but manage everything in a single catalogue database with volume names as attributes to the file entry. These being mainframe systems, the user does not have any idea about drives. For most parts not even drive types, or if it's on a disk or tape (*3) If at all, a volume were the file is located is known. In addition, drives do not have fixed hardware names - by exchanging a simple plug they can be renamed on the fly ...


*1 - That is except the dreaded message to swap floppies.

*2 - Apple did go a step further by using volume names, so the single Mac drive could handle multiple disks concurrently, notifying the user to swap whatever was needed next . Which is as well less tricky in a windowed system allowing modal message boxes than on a line based interface.

*3 - Random reads on non cached tape files just happened to be somewhat ... err .. . slow

15
  • 1
    Note that software which was designed to use one drive to work with information stored on multiple disks using one drive would generally work much better than Microsoft's "virtual drives", which could easily cause data corruption if one wasn't careful. If, for example, a file was open for writing on disk A when something needed to access something on disk B, one would be asked to insert the disk for drive B. If code then needed to write the data on disk A, it would prompt the user to insert the disk for drive A and--after the user hit a key--blindly write the data to the sector...
    – supercat
    Dec 4 '20 at 17:57
  • 2
    ...where it should have gone on disk A, even if disk B was still inserted at the time.
    – supercat
    Dec 4 '20 at 17:58
  • 1
    @supercat Indeed... At university in the second half of the 80s I spent many a happy(?) hour with a disk-editor patching up file allocation tables to retrieve as much as possible of overwritten files when others in the department had got this wrong... kind of "fun", in a masochistic sort of way!
    – TripeHound
    Dec 5 '20 at 12:40
  • 4
    It's arguable whether a single directory tree is better than drives (YMMV). But more importantly, the early IBM PCs with DOS didn't have directories. Then as a mix for compatibility and convenience, DOS kept track of the "current directory" per-drive - and of course, to better handle the "virtual floppy" scenario. MS-DOS was originally designed primarily for floppies, which accounts for quite a few of the quirky features - and missing features :)
    – Luaan
    Dec 5 '20 at 21:32
  • 2
    Funny I used DOS from the late 80's and despite knowing A and B represented floppy disks, I had no idea of the concept of a virtual B drive. Perhaps the machines we used at university always had 2 drives, I don't remember. Dec 7 '20 at 2:52
19

The letters A: and B: were reserved by MS-DOS, which was essentially a clone of CP/M and followed its usual practice, for floppy disk drives. If only one such drive was fitted, both letters were mapped to the same physical drive via prompts for the user to swap disks.

C: was simply the next available letter. Early filesystems had severe limits on how large a partition they could handle, so it was common for drives to have multiple partitions to collectively make use of an expensive hard disk's capacity, and these gained letters in sequence from there. The FAT16 filesystem in MS-DOS relieved these limits for some years, until hard disk capacity again caught up.

Drive M: was commonly used to refer to a temporary filesystem held in RAM. This was far enough ahead in the sequence that it didn't usually interfere with the above scheme.

When CD-ROMs became available, the driver installation scripts often also just picked the next available letter. This led to compatibility problems with some poorly-written game installers which assumed the user had a particular number of hard disk partitions, and hence a particular CD-ROM drive letter.

Network drives, where the physical storage was attached to a different computer entirely, usually avoided this situation by assigning letters late in the alphabet, such as T: or X:. Diskless workstations, however, could often be found running from a network drive mapped to C:. I used one such system while taking an office-computing class.

4
  • 5
    In general CP/M did not 'reserve' any drive letters for floppy or fixed drives -- the choice of mapping was left to whoever coded a particular implementation. Some systems (such as the Apricot PC, or the Amstrad PCW with Cirtech Gem drive) would use A: and B: for hard drives and C: and D: for the floppies.
    – john_e
    Dec 4 '20 at 17:09
  • 1
    CP/M Did not reserve letters, just assign them. So in a system with only one Floppy, there was no B. Also, depending on BIOS, A could be a hard disk and B a floppy.
    – Raffzahn
    Dec 4 '20 at 17:15
  • 2
    Pretty sure I remember back in the day seeing what would happen if I changed my hard drive letter to B and it would actually access the drive as B and my 51/4 floppy as A unless I put a disk into my 3.5 floppy, which was normally b: and then (I think) the next time you tried to change drives or read the drive you were on (unless it was A:), it froze up. I suppose I could be wrong, but I remember it well enough that if I end up finding out there is NO WAY that was possible I'd really be curious as to what I AM remembering that I think was this :)
    – Ron Kyle
    Dec 5 '20 at 0:05
  • 1
    @Chromatix The specific drive letters were manufacturer-specific. It was IBM's practice in PC-DOS to reserve the first couple of letters for floppies, I've seen the hard disc identified as A: on systems which were always sold with them (Sirius/Victor?) and as a much higher letter on systems which used different drive letters to identify the media format (e.g. A: for 800K DS and I: for 360K IBM-compatible). I'd add that the fdisk utility- when there was such a thing- came from the OEM, while format came from MS. Dec 5 '20 at 13:32
9

The bit that the previous answers are not emphasizing is that hard drives were unheard of. Computers came with floppy drives (if you were lucky...), more likely a cassette tape. So the numbering was logical, you booted from drive A: . If you were lucky to have a drive B: for data, then that was used, otherwise you took the program disk out of drive A: and put in your data disk.

There were no hard disks. Well there were - but these were luxury devices.

The first computer I programmed was my fathers TRS-80 that he ran his news-agency business from. All his customer data and accounting was stored on floppy disks, as well as all the software, and operating system.

You inserted your DOS Disk - there were a choice of flavors, including MS DOS, DR-DOS, PC-DOS etc. Then you inserted your expensive custom software program, then you inserted disks for storage when prompted.......

And now I feel old....

2
  • 1
    Thank you for sharing, Brenton! The aforementioned PC/AT I had my hands on as a kid already had a hard drive, nice to hear how it was in times before that!
    – wizclown
    Dec 5 '20 at 12:49
  • 1
    @BrentonThomas This naming practice comes from CP/M, ISIS and possibly OSes predating them. All of these systems had disc or similar random-access devices, I'm not sure that A:, B: etc. were ever used for (cassette or cartridge) tape drives on this type of system. On larger systems, it was very common to find tapes identified by a name in the (machine readable) label, in cases where a physical drive did have to be identified it would be by a device name or number which was either somewhere inside an overall namespace (unix) or distinct from the random-access namespace (most mainframes). Dec 5 '20 at 13:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.