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 3½” 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. Continue reading

Posted in Floppies, IBM | 24 Comments

Why Won’t IBM’s MSPS201.SYS Load?

Recently a minor mystery resurfaced. When IBM’s OS/2 1.2 SE is installed on any “normal” system (either physical or virtual) and the PS/2 mouse driver is installed (the typical choice), the mouse won’t work:

Error loading MSPS201.SYS

The MSPS201.SYS driver is intended for Microsoft (‘MS’) PS/2 (‘PS2′) mice for so-called Type 1 (’01’) aka AT-compatible systems. It should work, and it indeed does work in IBM’s as well as Microsoft’s OS/2 1.3. Continue reading

Posted in IBM, OS/2 | 8 Comments

Detecting Floppy Drives and Media

Detecting floppy drive types and installed media is a far trickier topic than it should have been. In the ideal world, software could determine how many floppy drives are attached, what their capabilities are, and what media is installed in them, if any. In the real world, software can only accomplish some of those tasks.

Detecting whether a drive is present is the only easy part. If a (functioning) drive is present, the RECALIBRATE command will succeed. If no drive is present, recalibration will fail because the FDC will never detect the TRK0 (track 0) signal (typically after stepping 80 or so tracks). If drive presence is detected, the real fun starts. Continue reading

Posted in Floppies, IBM, PC hardware | 18 Comments

Detecting an Empty Drive… Or Not

Detecting an empty drive with a NEC uPD765A or compatible FDC is theoretically easy using the ‘drive ready’ signal. In practice, the drive ready mechanism is completely unusable on IBM PCs and compatibles due to the way the FDC is wired.

AT-style controllers and drives support the disk change line signal which more or less replicates the drive ready functionality. To recap, the change line signal is controlled by the drive (the FDC merely selects which drive should be reporting it) and it goes active when the drive door is open. To deactivate the change line signal, there must be a medium inserted in the drive and the drive must receive a step pulse. Continue reading

Posted in OS/2, PC hardware | 16 Comments

OS/2 2.0 LA and “Large” IDE Disks

Attempting to boot OS/2 2.0 LA (Limited Availability) on many systems built in the last 20 years often results in the following crash:

OS/2 2.0 LA Trap 0

The trap screen claims there was an exception (Trap 0 or division overflow) in device driver A:, but that’s not quite true. The crash occurred in the disk driver (DISK01.SYS) which handles both the A: floppy drive and the C: etc. hard disks. Continue reading

Posted in IDE, OS/2 | 4 Comments

Twenty Years Ago Today…

On July 24th 1993, Microsoft finalized the first release of Windows NT, labeled version 3.1 “to avoid confusion”. This was a big day for Microsoft, although the practical impact on the computer industry was not particularly big, at least not immediately.

Windows NT 3.1 Disks

After years of hyping up a vaporware product originally known as N-10 and NT OS/2, Microsoft finally laid its cards on the table. Windows NT 3.1 was a modern 32-bit, portable operating system, with support for multiprocessor systems. It was designed by a core team of mostly ex-DEC engineers, all experienced system developers, led by David Cutler. But with its 12MB minimum RAM requirement (x86 version; 16MB for the RISC version), NT 3.1 was never going to be anywhere close to a mainstream OS—not in 1993 when MS-DOS and Windows 3.1 reigned supreme. Continue reading

Posted in Microsoft, NT | 6 Comments

UNIX Alphabet Soup

When reading historical UNIX documentation or source code, one is likely to come across various terms and acronyms that are now more or less completely forgotten, even among current developers of UNIX or UNIX-like systems. These acronyms might be the names of tools, directories, organizations, products, or documents.

Following is a random assortment of terms, with brief explanations where appropriate. Note that most acronyms still in current use are not listed. Continue reading

Posted in UNIX | 3 Comments

Preserving Floppies

For many years, software was delivered predominantly on floppies. This was true especially in the world of PCs where by definition (almost) every system contained at least one floppy drive and prior to the mid-1990s and mass arrival of CD-ROMs, there was no other standardized distribution medium (compare e.g. with UNIX workstations where software was typically delivered on tapes).

Since floppies, or indeed any storage medium, do not have unlimited lifespan, there is a need to preserve the contents of floppy disks. As time marches on, this is becoming a more pressing issue, especially with 5¼” disks; ironically, finding functioning drives is becoming harder than locating error-free floppies. But even with error-free disks and working drives, the next question is how exactly to preserve the data. There are numerous options, each with advantages and drawbacks. Continue reading

Posted in PC history, Virtualization | 25 Comments

ATI mach8/mach32/early mach64 Documentation?

It’s a long shot, but I’m looking for programming documentation for ATI’s mach8/mach32 and early mach64 chips (prior to 1996 or so). The earlier documents may have only existed in paper form. These used to be available from ATI but that was a long time ago. I’d be obviously happy to pay for shipping and other costs if physical items were involved.

I’m especially interested in mach8 and mach32 register references and programming guides, plus any sample code ATI may have had (I have the mach64 SDK and sample code disks, but nothing for mach8/mach32). I do have several documents describing the latter-day mach64 derivatives (Rage XL etc.) but am interested in the earlier chips, mach8/mach32 and the earlier mach64 GX/CX chips.

Posted in ATi, Documentation | 37 Comments

BSD Buglets

Last week I ran into two wholly unrelated problems while researching the history of BSD-derived Unix systems on PCs. Both are classics in their category and merit a closer look.

Y2K Strikes Again

The first issue is a very typical Y2K bug found in 386BSD 0.0 and 0.1. When the system comes up (if it does—it’s not easy to bring up 386BSD 0.x on anything remotely modern!), it shows the system date as January 1, 1970, i.e. the beginning of the UNIX epoch. This is not merely a cosmetic issue.

For example when rebuilding the 386BSD kernel, or indeed any software which uses the make utility, the source files will be timestamped 1992 or later, but the object files will be timestamped 1970. As a consequence, the object files will be always out of date and make will be forced to rebuild them. It gets much worse if the system is networked. It is possible to correct the date manually but it will be reset to 1970 every time the system boots, which is rather unsatisfactory. Continue reading

Posted in BSD, UNIX, x86 | 11 Comments