Further to #1 and #3, I'm wondering if it would be possible to adapt this project to read 5.25" double density ("360KB"-ish) floppies, originally written via NEC 765 (original IBM PC-style) floppy controller, in a track-at-once mode?
As far as I can tell, the Amiga floppies the code currently reads are 3.5" double density floppies, written with a custom floppy controller (ie, part of the Amiga chipset, rather than a third party "floppy controller" chip like the NEC 765). These seem to be MFM encoded ("double density"), 8x track, double sided, 3.5" floppies, spun at 300rpm. And it appears that the Amiga always wrote them in "track at once" mode, which allowed omitting inter-sector gaps and thus fitting 11 * 512 byte sectors onto the track (versus the 9, or perhaps 10, possible with a NEC 765 style controller that tried to update individual sectors in place). Giving a total capacity of 880KiB (80 * 11 * 2 * 512 bytes) or so.
5.25" double density is also MFM encoded, onto floppies spun at 300rpm, and either single or double sided, with usually 4x tracks per side. These figures seem relatively close to what the code already supports (and track stepping is already independent of reading the track). As best I can remember/find out, 5.25" double density drives using MFM encoding had a data rate of 250Kbps, as discussed in #1, which means the bit rate might need changing.
This HxC thread seems to suggest the Amiga bit rate was close to 250Kbps but slightly different (the same thread suggests PC double density fits 12500 +/- 0.5% bits per track, just slightly less than the Amiga).
But I see in #1 you suggest the Amiga bit rate was 300Kbps? Do you happen to remember where you got the 300Kbps figure from? (It's fine if it was just off the top of your head; just trying to figure out how much the timing constants might need tweaking.)
There seem to be some magic values in the read code, which I'm guessing are related to the data rate coming in. Do you have any notes on how those values were calculated? And/or any other raw media bit rates values in the code to look out for (timer programming values)?
My thought here is that maybe it would be possible to read (I have no interest in writing) non-Amiga disks simply by stepping to the right track, doing a raw track media read with "read track" and then decoding both the MFM encoding and the sector data from the track bits on the PC side later. Does that sound plausible? From memory the NEC 765 style controllers write sector preambles and other framing that one can search for to locate the sectors out of the track bits, so I'm assuming given a MFM-transition timing accurate media bit rate read of the track data it should in theory be "just a matter of programming" to decode the sectors out of the MFM data, and put it into some suitable (existing) container format.
Does this sound plausible to you?
Thanks in advance,
Ewen