Hardware backward compatibility: The finicky floppy drive

I think the behavior is more petulant than finicky, but finicky is alliterative.

Back in the days of Windows 95, I was talking with the person responsible for, among other things, the floppy disk driver, and I learned about a particular driver hack that was needed to work around a flaw in a very common motherboard chipset.

Apparently the floppy disk controller in this chipset was very picky about how you talked to it. If the very first command it receives after power-on is a read request, and there is no disk in the drive, the controller chip hangs unrecoverably. Issuing a reset to the chip has no effect. It's gone. You have to power-cycle the machine and try again.

Comments (26)
  1. hagenp says:

    What did they do to prevent the hang? Issue another, non-read command first?

  2. Alexander Grigoriev says:

    But how did the chip survive BIOS floppy boot attempt without a disk?

  3. El Guapo says:

    Where's the rest of this post? Did you hit "Submit" accidentally?

  4. Barry Kelly says:

    I'm tempted to speculate that if it were Linux we were talking about, they'd refuse to support it and tell you to buy a different motherboard. Probably not the case for this specific chipset, but certainly has been the case in similar situations, especially where there are authoritative-sounding industry specifications, or if it's a software interface (extra especially if the source isn't available).

  5. Josh says:

    Was there a workaround? Some clever hack? Or were people with this motherboard screwed? I agree with El Guapo, it looks like the post is cut off mid-way through.

  6. Simon says:

    Don't leave us hanging!

  7. Roald says:

    He probably went to find some information for this post on a floppy disk…

  8. bd_ says:

    @Barry: Linux has workarounds for a number of other driver bugs – however, I don't think they'd be affected by this particular bug, as the Linux floppy driver issues a number of non-read commands during initialization anyway in an attempt to detect the model of floppy controller you have (this information is used for other bug workarounds).

  9. @Barry Kelly

    Obvious troll is obvious.

  10. blah says:

    People, people! Isn't it obvious, this post unrecoverably hung halfway through. We need to power-cycle the behemoth speed-demon MSDN blog system after inserting the correct Windows 95 floppy.

  11. Niclas says:

    Is that why a write request was issued, during boot?


  12. Anonymous Coward says:

    Floppy drives are horribly finicky things to write control software for. Even if they're working like they're supposed to, ‘unreliable’ is too kind a word to describe them.

  13. Paul says:

    It's Obvious that the problem here is that hagenp "wrote" his comment before he had finished reading Raymond's post and the rest of this entry has been lost

  14. frymaster says:


    that kind of post tends to be made in the situation where the active developers don't have access to the offending hardware… "look, we're doing it by the book, and it's not working, it's obviously buggy… buy one that's compliant, I can't fix it"

  15. Marquess says:

    Floppy drive? Isn't that one of the things they used in ye olde Dayes? (Well, up until Server 2003 at least, after which someone got the memo that the machines which needed an F6 driver wouldn't have a floppy drive.)

  16. Duke of New York says:

    So what's the proper "engineering purist" reaction here: tell the chipset manufacturer to fix their chips, tell the OEM to use a different chipset, or tell the end-users not to read an empty drive?

  17. John Muller says:

    re: (any open source project) 'they' don't support it unless you're under a support contract with a vendor, or someone out there feels like doing it for free to be nice/respected… But, the ultimate solution is, if you know what the problem is, and you have unencumbered access to the source, why not fix it yourself?

    (ultimatly, that's why I use commercial software, maybe I can't (as in 'not allowed', not 'not able') fix it myself.. but I don't HAVE to.)

  18. Antonio Rodríguez says:

    @Alexander Grigoriev:

    At that time, BIOSes had an option to skip floppy seek on boot. If set, and if the boot order was "C:, A:" (a sensible option, because many viruses of the era propagated through floppies' boot sector), the floppy drive wouldn't be touched during the POST, and any command issued to the floppy controller by the OS would be the first one.

  19. Wisefaq says:

    @Barry Kelly

    Back in those hair-shirt days of Linux, you'd be asked to write your own fix.   And/or compile the kernel with some strange configuration switch.

    There is a comment in Raymond's book about the issue falls back to being a Windows problem in the eyes of Joe Consumer.

  20. Edward says:


    Stop the self referential posting!

  21. Mark Robinson says:

    I think the post is complete – the guiding phrases are:

    "driver hack" and "work around"

  22. Lawrence says:

    The only thing missing from this post is some sort of punchline where to make the drive work, the driver issued commands that spelled out the name of the offending chipset manufacturer.

  23. Immo says:

    I can read the whole post. I guess those people who cannot had a freshly booted machined and immediately issued a read request of the blog post without having a floppy disk in their disk drives. Please reboot, put in the disk and reissue the read request.

    Needless to day, you also have to delete the browsing history.

  24. hagenp says:

    @Paul: I did read the post completely, but the final solution was not stated (i.e. which command they decided to issue first).

    Back as a student I got a project to work on where a prototype chip had a similar problem: before "reset", you had to send an "offline" command, otherwise after "reset" the chip itself would 'hang' and be unusable until the next power-cycle.

  25. Ricardo C. says:

    @John Muller: "I can't (as in 'not allowed', not 'not able')"

    Isn't exactly that the difference between "can't" and "cannot"? It should be self explanatory.

    Finicky spelling… =)

  26. Anonymous says:

    @Barry Kelly: I follow the Linux kernel development, and can see the ways they would usually react (after swearing at the people who created the broken hardware):

    * Detect that specific hardware, usually by adding its ID (or if there is no ID, detect the broken hardware in some way) to a "quirks" table, and when it is detected do a workaround (search for "quirk" around in the Linux kernel source code and you will see several);

    * Try to do things in the same way "another popular operating system from a big Redmond manufacturer" would do, since most hardware manufacturers only test with said OS (or at least the theory goes). This is particularly evident when dealing with the BIOS, in particular ACPI (they have given up following that spec by the letter);

    * Add a kernel command line option to enable a workaround. This was more popular in the past, but with the rise of user-friendly distributions, it is usually left as a way to test which workaround will work before adding it to a quirks table.

    "Buy a different motherboard" would be reserved only for the most broken of the hardware, and if it runs fine on Windows it is probably not *that* broken, or for hardware for which there are no specifications and which has not been completely reverse-engineered yet (a gradually shrinking class).

    After reading all these workarounds the kernel has to do, you gain a new level of respect for kernel developers (and lose quite a bit of respect for the hardware and firmware developers).

Comments are closed.