Ok, since my floppy driver currently "works" as in the other Window there's Bochs which is currently reading track 1958/2880 quite happily, using DMA and interrupts, and what not, and since it was rather painful to find half decent documentation to figure out that stuff, with most examples being either seriously chaotic or in obfuscated assembler...
My driver currently supports the first drive in primary controller, assuming it's a 1.44MB 3.5" drive, with 1.44MB disk (80:2:18 format, 512 bytes/sector).
It is written in semimodular way, so adding support for more drives or more controllers, or whatever, shouldn't be huge amount of work. It has DMA routines basicly copypasted from the local Wiki (I found a bug there, have to remember to fix it), and is relatively heavily commented.
So before I go obfuscating it with how to recover from "fatal" error conditions, how to autodetect different types of media, how to check for media changes, and all that kind of stuff that makes source harder to read, I'm going to link the current version here.
It has not been testing on real hardware yet, and writing has not been tested at all yet, but since almost all code is shared by the read-code, I don't expect to find bugs there (there might be tons elsewhere though).
So here's a C example. It does require the ability to wait for interrupts though.
edit: attachment removed, nobody knows how the FDC works, but I know now: http://www.osdev.org/phpBB2/viewtopic.php?t=13524