Archives
- October 2025
- September 2025
- August 2025
- July 2025
- June 2025
- May 2025
- April 2025
- March 2025
- February 2025
- January 2025
- December 2024
- November 2024
- October 2024
- September 2024
- August 2024
- July 2024
- June 2024
- May 2024
- April 2024
- March 2024
- February 2024
- January 2024
- October 2023
- September 2023
- August 2023
- July 2023
- June 2023
- May 2023
- April 2023
- March 2023
- January 2023
- December 2022
- November 2022
- October 2022
- September 2022
- July 2022
- June 2022
- May 2022
- April 2022
- March 2022
- February 2022
- January 2022
- December 2021
- November 2021
- October 2021
- September 2021
- August 2021
- July 2021
- June 2021
- May 2021
- April 2021
- March 2021
- February 2021
- January 2021
- December 2020
- November 2020
- October 2020
- September 2020
- August 2020
- July 2020
- June 2020
- May 2020
- April 2020
- March 2020
- February 2020
- January 2020
- December 2019
- November 2019
- October 2019
- September 2019
- August 2019
- July 2019
- June 2019
- May 2019
- April 2019
- March 2019
- February 2019
- January 2019
- December 2018
- November 2018
- October 2018
- August 2018
- July 2018
- June 2018
- May 2018
- April 2018
- March 2018
- February 2018
- January 2018
- December 2017
- November 2017
- October 2017
- August 2017
- July 2017
- June 2017
- May 2017
- April 2017
- March 2017
- February 2017
- January 2017
- December 2016
- November 2016
- October 2016
- September 2016
- August 2016
- July 2016
- June 2016
- May 2016
- April 2016
- March 2016
- February 2016
- January 2016
- December 2015
- November 2015
- October 2015
- September 2015
- August 2015
- July 2015
- June 2015
- May 2015
- April 2015
- March 2015
- February 2015
- January 2015
- December 2014
- November 2014
- October 2014
- September 2014
- August 2014
- July 2014
- June 2014
- May 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- November 2013
- October 2013
- September 2013
- August 2013
- July 2013
- June 2013
- May 2013
- April 2013
- March 2013
- February 2013
- January 2013
- December 2012
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- January 2011
- November 2010
- October 2010
- August 2010
- July 2010
The XDF Diskette Format
In 1994, IBM started shipping software with support for XDF, or eXtended Density Format, first in OS/2 Warp and a few months later in PC DOS 7.0. Some of IBM’s software packages were also distributed on XDF diskettes. XDF allowed the user to format a 31⁄2” floppy which normally holds 1,440KB of data to a special format with 1,840KB capacity (well, almost—see below), or almost 28% improvement. This came at a time when CD-ROMs were not yet ubiquitous and software was distributed on rapidly growing piles of floppies. Since floppies were relatively expensive to manufacture and duplicate, shipping software on, say, 16 diskettes instead of 20 was an attractive proposition.
The XDF technology was not developed by IBM. The inventor was Roger D. Ivey (as can be seen in a XDF disk’s boot sector) and was first licensed to IBM by Backup Technologies, Inc. of Tampa, FL. Roger Ivey had previously written the Fastback PC backup software. Later releases of XDF software list Ametron Technologies, Inc. as the licensor. Ametron is a company specializing in selling intellectual property.
The XDF technology used several interesting techniques to achieve both higher storage capacity and speed. The XDF utilities mentioned “Patent(s) Pending” but there is no obvious record of a relevant patent ever being granted by the USPTO. Let’s take a look at some of XDF’s tricks.
The basic problem with higher density floppies when using 512-byte sectors is that once more than 10 or so sectors per track are used, significant capacity is lost to inter-sector gaps, address marks, CRCs, an other “useless” overhead. With 31⁄2” HD floppies, it is possible to use more than the standard 18 sectors per track; the hard limit appears to be 21 sectors which translates to 1,680KB total with 80 tracks. XDF squeezes another 160KB into the same space, using standard hardware and media.
Note that the rest of the article talks about the 1,840KB XDF format unless otherwise noted. XDF also supported a 1,520KB format for 51⁄4” HD floppies (normally 1.2MB) and a 3,680KB format for 31⁄2” ED media (normally 2.88MB).
XDF Format
The basic XDF approach involved the use of larger sectors, which reduced the sector overhead. On a 31⁄2” HD floppy (DD media were not supported by XDF), where the standard format used 18 sectors per track (9KB), a XDF track contained the equivalent of 23 sectors (11.5KB). Physically, the track was formatted with only four sectors in 8KB, 2KB, 1KB, and 512B sizes (for the 11.5KB total). With an unformatted capacity of about 12,500 bytes, there was just not quite enough space for one 8KB and one 4KB sector (let alone a single 16K sector), while the 8/2/1/0.5 breakdown was reliable.
From reading typical floppy controller documentation, it is not obvious whether a standard FDC would be able to create XDF diskettes. The FORMAT TRACK command takes the sector size as a parameter for the entire track, yet the data supplied to the command for each sector also includes the sector size code. Does the FDC observe the per-track sector size or the per-sector one? FDC documentation is typically annoyingly quiet on this.
The Hitachi HD63265 FDC user’s manual is one of the rare documents which addresses this. Hitachi unambiguously says (on page 56 of the manual) that the actual sector size will be as specified for the entire track, but the size code written to the sector ID fields will be as supplied for each sector. In other words, the sectors will always be the same size on a track. If that’s true, how did XDF format tracks with non-uniform sector sizes?
XDF—of course—cheated. When formatting a XDF track, the FDC was told to create 39 128-byte sectors. However, the sector sizes written to the sector IDs were entirely different. When the sector would be later written, the FDC would only pay attention to the sector size code in the ID field (as there’s no other sector size information on the medium) and happily overwrite the gaps, sector IDs, sync fields, and CRCs of the “fake” 128-byte sectors.
This way XDF circumvented the limited FDC capabilities and created a very unusual but valid format with standard floppy hardware.
The special sector layout was key for achieving high storage capacity. In addition to varying sector sizes, XDF used interleaving and sector slipping to speed up XDF media reading and writing. As a result, XDF was faster than alternative high-capacity formats.
DOS Implementation and Compatibility
On DOS, a XDF.COM utility (TSR) provided standard DOS access for XDF-formatted floppies. The XDFCOPY.EXE tool was used to copy XDF disks, create images from disks and write images to disks. As a side functionality , XDFCOPY also handled most standard DOS formats.
Given XDF’s highly non-standard format, one might think that the DOS-based XDF utilities needed to use direct FDC access. They did not—instead, they showed just how far the standard floppy BIOS services can be convinced to go.
For formatting, the BIOS user supplies a buffer containing per-sector parameters that the FDC then transfers during execution of the FORMAT TRACK command. For reads and writes, XDF dynamically changed the DPT (Diskette Parameter Table) and used the standard BIOS read/write services to access one sector at a time.
It is also apparent that without the XDF TSR loaded, BIOS/DOS won’t be able to do much with XDF media. To this end, XDF implemented a clever backwards compatibility scheme.
When the XDF TSR was loaded, a 31⁄2” HD XDF floppy looked like a medium with 80 cylinders and 23 sectors per track. When the XDF TSR wasn’t loaded, the same medium looked like a teensy disk with just a few sectors total, usually containing some text file showing the XDF disk’s contents or a readme file.
The first cylinder of a XDF floppy used standard 512-byte sectors, only with 19 sectors per track rather than the standard 18. The format used 11 sectors per FAT (for the 31⁄2” HD XDF variant, by far the one most widely used). It abused the fact that the second FAT is normally never read by DOS (as long as the first FAT copy is readable). The second FAT copy on a XDF disk therefore did not exist at all, but instead there was a small 8-sector backwards compatible image. The XDF sectors used high sector IDs and were thus not seen by standard DOS/BIOS. Track 0 (cylinder 0, head 0) was laid out as follows: 1 boot sector, 10 FAT sectors, 8 sectors of a backward compatible micro-disk. That is 19 sectors total.
The second track (cylinder 0, head 1) started with the one last FAT sector (for a total of 11), followed by the root directory (14 sectors) and finally the data area (4 sectors). Now there’s an obvious problem: The XDF disk claimed to have 23 sectors per track, therefore there should have been 9 data sectors (23 – 14) on the second track, but there were only 4. What happened with the missing 5 sectors? Easy: XDF marked the corresponding clusters in the FAT as bad.
To recap: XDF pretended that the first track (cylinder 0, head 0) contained the boot sector plus two FATs with 11 sector each (23 total). The next track (cylinder 0, head 1) then logically contained 14 sectors of root directory and 9 data sectors (23 total), out of which 5 were marked bad. In reality, the first track held 8 sectors of a compatible micro-disk and 11 sectors of XDF data (19 total); those were the XDF boot sector and the first 10 sectors of one FAT. The second track actually contained the last sector of FAT, 14 sectors of root directory, and 4 data sectors (19 total). Starting with cylinder 1, there was really the equivalent of 23 sectors (512 byte size) per track.
It is important to note that XDF images always contained full XDF-sized tracks, even for cylinder 0. Some sectors in a XDF image were thus not written to a disk, but the XDF image was uniform.
One pleasant side effect of the XDF scheme is that a typical XDF image looks like a proper DOS-formatted disk with 23 sectors per track and 3,680 512-byte sectors. Since the FAT filesystem uses logical sector numbers rather than C/H/S addressing, tools capable of processing FAT disk images can use XDF images without modification.
A further side effect is that when XDF images are used with virtualization software, DOS VMs may be able to access such images without the XDF TSR loaded.
Alternatives
Around the same time, Microsoft developed its own high-capacity format called DMF (Distribution Media Format). DMF was still a standard format on the BIOS level, with 80 cylinders and 21 sectors (interleaved) per track. Since DMF was optimized for distribution, it used larger clusters (and hence smaller FATs) and a minimal root directory with only 16 entries (one sector). This made DMF unsuitable as a general-purpose floppy format. At 1,680KB per disk, DMF also had noticeably lower storage capacity than XDF.
XDF’s closest cousin was the 2M format used by the eponymous DOS utility. The 2M format could store up to 1,972KB (or just over 2 million bytes) on a 31⁄2” HD floppy. 2M used a very similar strategy utilizing varying size sectors and thus minimizing sector overhead. Additionally, 2M used 82 tracks rather than the standard 80. It is questionable whether the use of 82 tracks was fully compatible with all drives. At any rate, the 2M format does not appear to have been used for commercial software distribution.
It is not entirely clear whether 2M or XDF was developed first, and whether their development was independent. Both were most likely initially written in 1993. It is apparent that XDF was considerably more successful, having been adopted by IBM for use in DOS and OS/2 and for distributing IBM software.
24 Responses to The XDF Diskette Format
Very interesting article. I didn’t really know how XDF worked internally.
Have you ever heard about a backup product called Central Point Backup? It was pretty popular around here back in the nineties, and it also used a special disk format which probably worked similar to XDF. It was also a lot faster than regular DOS floppies (same interleaving?) and contained a basic backwards-compatible root directory which contained a few 0-byte file entries with file names that, on a standard “dir”, spelled out that the disk is a CPBackup disk and can only be used with that program.
It would be interesting to compare that format to XDF
–Darkstar
Not only have I heard about CP Backup, I actually used it 20 years ago. I recall that it had several modes of operation and that the “native” mode was extremely fast. I only ever used CP Backup with 5.25″ floppies but I clearly remember that it could read the entire disk 2x-3x faster than DOS. Sector slipping and possibly interleaving is how I suspect CP Backup got its speed.
I don’t think the “special-format” floppies had significantly higher capacity, so I suspect the format wasn’t quite as interesting as XDF. But I’ll try to find my old backup floppies and run them through AnaDisk.
As I knew the author of 2M, I can assure that development of 2M was independent of XDF. He used his experience on PC hardware and the ideas of an electronics teacher in the university where we studied.
Also I remember that at some point of 2M evolution (possibly between versions 2 and 3) he started to receive e-mails from IBM. Were they interested on getting 2M (or him)? I don’t know. I know that the final messages were about “after many hours continuously formatting disks with the 2M formatter the drive starts to melt the disks”.
He said that “they look very interested in me saying that 2M formatter is the cause for the disk melting, and I’m not going to say it, so I have stopped replying them”. He did not try to verify what IBM claimed, but he said that after many hours of formatting, if the drive starts to melt disks, it must be the drive’s problem and it would melt disks regardless of the formatting sofware used.
If you are interested I can look the dates of 2M source code or more information in the home-made books of the author (in the chapter about the diskette controller he explains how 2M works).
About the use of 82 tracks: At the beginning of the 2M era, as it had a command line option to specify the number of tracks, I formatted all my diskettes using 84 tracks. Unfortunately, when I changed computer, I noticed that the new drive couldn’t access the last 2. So I started to try any drive on any PC I could use. I only found another drive supporting 84 tracks, but it seemed that every drive those days supported 82 tracks. But I stopped testing drives and using 2M when Windows 95 arrived (as it always re-writes the boot sector, it destroys 2M disks).
It would be interesting to know if 2M used the same method of formatting tracks with varying sector sizes, and when exactly it was developed. Pinning down the XDF origins might be a lot harder though.
The melting disk stuff sounds like an urban legend… but then again I’ve seen a CD explode in a CD-ROM drive, so who knows.
The problem is that even if just one drive out of 1,000 can’t do 82 tracks, that’s enough to kill the idea of using 82-track distribution media. Given that neither IBM nor Microsoft used it, I suspect some drives did not do 80+ tracks. Then again it’s possible that the companies were simply conservative because they couldn’t verify that every drive out there could handle 82 tracks.
The last printed edition (3rd) of the book is from 1994 February, and it explains how the last version of 2M works. But I must have also the 2nd edition (from 1993 or earlier) and I think it explained a previous 2M version. If I find it, I will say the date.
There is a 1997 edition (4th) in PDF but I think it is a re-formated for PDF version of the 3rd edition (no extra contents). It is free, but it is in Spanish:
ftp://ftp.cs.buap.mx/notas/programacion/ensamblador/El.Universo.Digital.del.IBM.PC.AT.y.PS2.(4%C2%AA.Edicion).pdf
2M explanation starts in page 309.
It used “normal” and “maximum” (/F) formats. Normal formats used only 1 Kb sectors. Maximum formats used 2 Kb sectors and 1 Kb and 512 byte sectors to complete the tracks (built on 128 byte sectors, like XDF). Track 0 was “more or less normal” using 512 byte sectors. The resident code reported 2 FAT copies, but the disk only contained one (again like XDF). It ignored writes to the 2nd copy and returned the 1st one when asked to read the 2nd. But track 0 included the resident code and installed it at boot, so you could make a 2M disk bootable.
And… I have seen melted 5,25″ diskettes, but that was a different story: That was how my uncle noticed that the fan of the power supply was not working. Ant that was the end of the old IBM XT because for the price of a new power supply he could buy a 386 clone.
The documentation that came with the last DOS release of 2M compares the variable sector size methods of XDF versus 2M. It points to IBM’s method being better able to handle slight differences in the rotational rate of drives while 2M’s method uses less memory. See 2M-INFO.FDA close to the end of either the Spanish or English sections. It also covers some downsides with the various methods.
The extra tracks was available on drives but some of the information I have seen suggests that the extra tracks were not always long-term reliable when written by the typical floppy drive which makes backing up diskettes problematic. Verbatim’s preformatted floppies put manufacturing information in the extra tracks and caused an amusing bug with Winimage if the diskette had been reformatted but the extra tracks left alone. Toshiba went one step further and supported 84 tracks. The drives that would not handle extra tracks (Flopticals, USB floppies) also do not work with XDF. http://toastytech.com/files/nformat.txt includes one of the few lists of overformatted support by brand.
DOS backup programs did lots of unusual diskette formats. http://www.oldskool.org/guides/dosbackupshootout dicusses some examples. Magazines during the 80s and 90s had occasional articles investigating how to shoe horn more data on a floppy but I can’t track down references to things I remember reading.
All standard USB floppy devices use a SCSI style interface, which definitely does not support any “funny stuff”. Just uniform geometries with constant sector sizes (not always 512-byte sectors though). So yeah, no XDF or 2M or anything like that for sure.
BTW, about using different sector sizes on the same track, page 310 says that in theory that’s not possible, but that certain commercial software had used this technique for copy protection. So, that’s probably where he got the “inspiration”.
I would like to think that when Ciriaco started to be e-mailed from IBM, they were deciding which format (XDF or 2M) to use for software distribution. If the story about melted disks was true (the message was, because I read an excerpt) then one thing is sure: IBM thoroughly tested 2M.
Tell me if you have something to ask him, we haven’t met for more than 20 years, but I have located his Facebook profile and maybe he will reply.
…LESS than 20 years, bad calculation 🙂
The fact that commercial software used non-uniform sector sizes for copy protection doesn’t necessarily imply such disks were formatted using a standard FDC…
If you can, ask the 2M author how exactly he got the not-really-128-byte-sectors formatting idea, because that’s something which is far from obvious. And please ask whether to his knowledge XDF or 2M was the first to use these techniques.
I asked him and gave my e-mail address this article’s URL, but his latest news in Facebook is from 2011…
I wonder what would have happened if MS took the OS/2 2.0 path, and thus OS/2 2.x replaced DOS/Windows by 1994 or so. MS would probably have to ship with applications that use DMF an extra disk with the update to OS/2 2.1 to recognize DMF.
Not that it is much of an argument not to take this path.
As you might expect, there’s at least on Linux utility capable of reading XDF disks. I made use of it a few years ago, when a copy of Warp 3 passed through my hands. Oddly, while one of the disks was not entirely readable with XDFCOPY in DOS, the Linux utility seemed to be more tolerant.
Yuhong: I am fairly certain that I installed software placed on DMF disks on OS/2 Warp with no problems. A DMF driver is tiny. So DMF would not matter in any joint IBM/MS project except for being one more trigger for yet another bureaucratic fight as various managers push their solutions.
Going the other way, having XDF disks for application deployment would be more problematic. Disk caching software often assumed that all sectors on a disk would be the same size. Caching software would have to be updated in order to permit installs from XDF floppies or users would need to follow instructions to turn off the cache. Special instructions leads to lots of support calls.
My quick check suggests that IBM only used XDF with OS related disks (Install and fixpack) but not on application software like Lotus SmartSuite.
Unless it was on the same machine, it may have been the drive and not the software that made the difference…
On the BIOS level, XDF disks (with the XDF TSR loaded) did look like regular 512-sector disks, just with 23 sectors per track. How else would they work with DOS?
For Lotus et al, a much bigger problem was bootstrapping. Not all systems they targeted supported XDF, which means they’d have to have some fallback mechanism to get XDF support in place. This wasn’t an issue for IBM’s DOS and OS/2 where the installation disks had to be booted anyway.
And by the time there might be any kind of significant number of machines with built-in XDF support out there, floppies as a distribution medium were dead anyway.
In theory, a floppy drive using SCSI, IDE/PATA or USB could support this format if the firmware manufacturer did take the extra effort it takes.
There are probably no such drives, but we shouldn’t rule it out.
In some cases it might even be possible to hack the firmware. Atleast Digitals scsi-floppy-interface (used in their desktop VAX computers e.t.c. in the 80’s) has IIRC a standard microprocessor and separate eprom 🙂
How do you think it could be done for e.g. USB floppies? Making it look like a disk with lots of 512-byte sectors? That should be technically doable, but I have no doubt that no one ever did it 🙂
That is because OS/2 Warp was updated to support XDF and DMF.
Thinking about it, installing any driver on OS/2 including a updated floppy driver would likely have required a reboot before the DMF floppies can be read.
This states clearly that NT 3.1 can’t read DMF disks and a new floppy driver is required:
http://web.archive.org/web/20090420082156/http://support.microsoft.com/kb/124970
Imagine if this new floppy driver had to be shipped with every copy of Office or other DMF applications.
This site uses Akismet to reduce spam. Learn how your comment data is processed.