why can't a usb floppy drive read a dmf formatted disk?
I have been wondering why a usb floppy can't fully read a dmf formatted floppy, i know that they will read 1.68 mb when put in a usb floppy drive but won't read more than a regular floppy capacity, as the usb floppy drive will give read errors when reading past 1.44 mb. So why can't a usb floppy drive fully read the dmf floppy format?
Comments
It's the same reason why common LCD monitors insist on stretching 4:3 images, Kingwin SATA to IDE will corrupt your data, motherboards stripped off COM, LPT, and real FDC ports, why BIOSes that do support FDCs only support ONE drive, why Windows XP supports 1.2mb disks but not 360K, why WinModems don't work in pure DOS, why most USB drives also don't support 720k even though they are supposed to, why cases and faceplates are only available in BLACK, why chip fans don't last for more than a year, and so on and so on. They do it just to be cheap dicks.
Ah, WinModems the most pieces of carp, I ever seen.
Trying to go from one os to the next and they don't have a driver for it! :x
Note: I was writing this at 11:48 pm local time.
USB floppy drives use a subset of the USB mass storage spec called "UFI" UFI was designed to give block level access to 1.44 meg floppy drives, and that's it.
http://www.usb.org/developers/docs/devc ... -ufi10.pdf
Regular floppy drives are very very very old tech that's very "low level" - Things like DMF use low level tricks and hacks to squeeze more data out. USB floppy drives aren't capable of low level access. Just block level access to 1.44 meg disks, and nothing else.
You'll run in to the same issue if, say, you wan to access old 800k or 400k disks on a mac with a USB floppy drive. Those older formats use a /completely/ different scheme (CLV) that the usb drives can't access.
I know all of the above because in the windows 10 developer preview people were saying that their USB floppy drives were not working. Turns out Microsoft was planning to get rid of UFI support (or it was broken). Whatever the reason, it's back in and you can use USB floppy drives on win10 machines.
Anyway, another issue on top of all that is that MS-DOS 3.3 and later supported "dynamic" disk formats. Earlier versions worked from a drive type lookup table and only a few standard disk formats were defined.
With DOS 3.3 or later you could arbitrarily specify the number of heads, sectors, and tracks, and if your BIOS and hardware could manage to read them, DOS would happily process it. This lead to a number of non-standard formats such as DMF.
Now, that does make format detection rather tricky. Even more so if disks are mis-formatted (such as 160K 8-sector disks that were actually formatted with 9 sectors - many disk tools fall down and go boom on that)
From my fiddling around, it does look like some of the better USB drives can sort of figure out the 21-sector part of DMF, but then run in to the fact that the official "standard" linked to above is limited to 720k, 1.44mb and the Japanese 1.2mb ("Mode 3") 3.5" formats. It doesn't even take 360K or 1.2mb 5.25" formats in to consideration.
Of course, on a real FDC you can do all kinds of tricks such as formatting different numbers of sectors or sector sizes on different tracks - which was often uses copy "protection".
Those can quickly become a headache if you need to abstract the FDC as a simple block device. Although I have never used one, I believe SCSI floppy drives run in to similar problems.
So you do have to draw a line somewhere, but I personally think the USB floppy spec should have included more flexibility.
The real reason they're around, of course, is because the first bondi blue imac back in 1998 was a smashing success.. And was the first mac to not ship with a floppy drive. It's also probably the first computer to make any serious use of USB in general.
Somewhere during the development of all those great generic USB class specifications someone realized (probably apple) that it would be a good idea to have a USB floppy drive and that the generic USB mass storage class did not quite have all the provisions they'd need to handle all the idoschnrosies of floppy operation.
USB mass storage, though, is really just there to shuffle blocks between devices. So abstracting a simple block device makes sense. All the grunt work will be handled by a small processor in the drive.
To support the more.. Creative floppy formats they'd have to have added significantly more functionality, the ability to tell the drive about the floppy disk geometry, etc. Routines to detect what kind of floppy you're reading. At some point it it stops being a simple block device and you begin emulating a floppy controller. Which is a whole other can of worms, especially considering that these devices are supposed to be cross-platform. - You can't really expect any of this to be in the USB stack either.
Worse, you can do some really abusive stuff to the old standard PC floppy controller. I remember having a DOS program that could read 400 and 800k mac formats in a PC drive by essentially bit-banging the FM signal off the read head. There's no way that's going to fly over any kind of cheap USB drive.
Fortunately today we've got smart people that like solving problems and archiving old computer data. And cheap FPGAs. There are a lot of projects like this one:
http://www.kryoflux.com/
Custom floppy controllers and a suit of software explicitly designed so you can read/image your old media while connected to your modern laptop that's 1000x faster and 10x cheaper than the computes of yesterday.
One right here, floppy emu it can do the apple Lisa.
http://hxc2001.com/img/hxcfe/Slim_SD_Hx ... 34_001.jpg