Tuesday, August 2, 2011

Paul Allen and I

I was recently given a copy of Paul Allen’s autobiography, Idea Man. I haven’t read it yet, but I’ve skimmed the parts where I had a role. And my first reaction is:

Really Paul, you don’t know how to spell my name?

Other than that, everything that mentioned me seemed totally accurate.

Paul was my direct supervisor in my first stint at Microsoft (I think at that time everyone reported to either Paul or Bill). He conducted my face-to-face performance review in 1981. That review turned out to have an interesting moment.

When I was hired at Microsoft, I signed a modified employment agreement. The usual agreement would have given Microsoft the rights to anything I thought up while I worked there; the modification limited the scope to work that I was assigned to do.  The purpose of the change was to allow me to consult for my previous employer, Seattle Computer Products.

So while employed by Microsoft, I was a consultant to SCP, with Microsoft’s blessing. As an SCP consultant I designed an add-in card for the IBM PC that SCP sold as the RAM+. This was a memory card that also included a serial port. SCP priced it slightly less than IBM’s price for the memory card alone, and it was a huge success. The IBM PC only had five add-in slots, one of which was always taken up by a video card, so a multi-function card was particularly appealing.

During my December 1981 performance review, I learned from Paul that Microsoft was planning to come out with an IBM PC add-in memory card. It surprised me that Microsoft was getting into the hardware business. I had to tell Paul that I had designed what would be a competitive card for SCP. He was an easy-going guy, and just said something like “don’t do it again.” I was relieved to not be in any trouble. (I’m not sure if I had reported to Bill that I would have gotten off so easily.)

Saturday, April 16, 2011

All Those Floppy Disk Formats…

Seattle Computer Products adapted DOS to an array of floppy disk systems. We used North Star, Cromemco, and Tarbell floppy disk controllers, and later designed a floppy disk controller of our own (the “Disk Master”).

Floppy disks came in two sizes, which we called 5” and 8” (but the 5” was really 5.25”). The 8” disk came first, introduced by IBM with 77 tracks of 26 sectors, each storing 128 bytes of data, for a total capacity of 256,256 bytes. A single small hole was punched into the disk near the hub as the “index”, or starting point of each revolution. This means the disk was “soft-sectored”: there were no physical indications of sector boundaries. The sector start could only be determined by reading from the disk.

The North Star system used 5” disks with 35 tracks of 10 sectors of 256 bytes, for a total capacity of 89,600 bytes. The disks were “hard-sectored”, with 11 holes punched into them (10 for the sectors and an extra for the index). As far as I know this format was unique to North Star, and the rest of the industry evolved to use 40 tracks on the 5” disk with soft sectors.

Those 5” disks would spin at 300 RPM (5 revolutions per second), a little slower than the 360 RPM (6 revolutions per second) of 8” disks. And the 5” disks had exactly half the data rate, 125,000 bits per second, vs. 250 kbps for 8”.

Enter Double-Density

The way the stream of bits was stored on a floppy disk was very simple. First there was a “clock” pulse, which indicated a data bit was coming. This was followed by a data pulse for 1-bit, or no pulse for a 0-bit. At the 125 kbps rate of 5” floppy disks, the clock pulse would occur every 8 microseconds. The data pulse, if present, would follow 4 microseconds later, halfway between the clock pulses. For the 8” disk, all times were cut in half.

The clock pulses were sent to keep the disk controller “locked on” to the data stream. The motors spinning the disks weren’t guaranteed to be going exactly the right speed, so the clock pulses allowed the controller to adjust to the actual rate. Without them the controller could get lost after a long string of 0-bits (no pulses).

But someone figured out that 1-bits could serve as clock pulses (for locking on to the rate), allowing some clock pulses to be eliminated so the bits could be sent closer together. With that, double-density was born. You simply took out all the clock pulses except the ones between two 0-bits, and sent the data twice as fast.

So with double-density, as with the original single-density, the closest two pulses could be was still 4 microseconds apart (for 5” disks). A 0-bit following a 1-bit would be 6 microseconds apart, as would a 1-bit following a 0-bit. A string of pulses 4 microseconds apart could be either 0-bits (clock bits with no data bits) or 1-bits (data bits with no clock bits) – you had to keep track from the start. Once again, cut all times in half for 8” disks.

IBM PC Floppy Disks

IBM chose to use 5” double-density soft-sectored disks with 40 tracks, 8 sectors per track, and 512 bytes per sector. This gave their disk a total capacity of 163,840 bytes, known as the “160k disk”.

In the spring of 1981 I left Seattle Computer to work for Microsoft. My first task was to help put the finishing touches on the adaptation of DOS to the IBM PC hardware. This work was generally driven by bug reports and feature requests from IBM, and I stuck to doing the work I was asked to do. But eventually I got up the nerve to ask: Why were there only 8 sectors per track on the IBM floppy disk?

We had worked with many disk formats at Seattle Computer, and I had gotten deep into the nitty-gritty of how they were laid out. A 5” disk spun at 300 RPM, or 0.2 seconds per revolution. The double-density bit rate was 250 kbps, meaning there was time for 50,000 raw bits, or 6250 bytes, in one revolution. There was considerable overhead for each sector, something like 114 bytes. But IBM was only using (512 + 114) * 8 = 5008 bytes of the track. Adding a 9th sector on the track would increase this to 5634 bytes, still far less than the total available. You could almost fit a 10th sector, but not quite (or maybe you could reduce the overhead and make 10 fit!).

IBM’s response was something like “Oh, really?” They had never done the calculations. It was also too late to put a change like this into the product (it was probably 2 – 3 months before the PC shipped). They said they would save it as a new, upgraded feature for DOS 1.1. The first IBM PCs would ship with the 160k format.

More Formats

IBM refreshed the Personal Computer line around 6 months after the initial release. This not only included DOS 1.1, but now the floppy disk drives could use both sides of the disks, doubling the capacity.

For compatibility, they still had the single-sided format with 8 sectors per track – the 160k disk. But now older PCs (with single-sided disks) could upgrade to DOS 1.1 and use the 9-sector format – the 180k disk. And of course new machines would want to use the double-sided 9-sector format – the 360k disk. For some reason, IBM also supported a double-sided 8-sector format – the 320k disk – which served no useful purpose.

Two years later IBM introduced the Personal Computer AT, based on the Intel 286 microprocessor. With it came the high-capacity 5” floppy disk. It basically gave the 5” disk the same specifications as the older 8” disks – doubling the data rate and spinning the disk at the faster 360 RPM. Capacity increased to 1.2 MB, the same as the 8” disks.

Eventually the 5” floppy disk was replaced by the 3.5” disk with its 1.44 MB capacity. I still see a few of my computers around the office with 3.5” disk drives, but their time has passed as well.