On 18 Mar 2012 at 16:11, Dave Dunfield wrote:
Cool - I didn't know that - I thought it was
"all or nothing" when it
came to 128/MFM.
The problem with the 765 core and 128 byte MFM is that the whole
sector doesn't get transferred--only the first 80 (decimal) bytes.
Don't know why that is, unless it ties into some glitch in
interpreting the N field in the address header when N=0. Playing
with DTL (has meaning when N=0) doesn't seem to matter. National
fixed this when the 847x chips came out, but all the other
manufacturers didn't bother.
Really frustratig was dealing with Intel when they brought out the AA-
1 version of the 82077--it broke FM writing. When I spoke with an
applications engineer at Intel, he came back with the response that
FM was obsolete and they weren't going to add the bug to their list.
Microsolutions discovered this the hard way and recalled the
Compaticards that escaped with the 82077AA-1 chips and replaced them
with PC8477s.
But don't you run into problems with the header
positions in some
layouts? To do this on a general basis, you would have to be able to
put 256, 512, 1024 etc. byte sectors into some multiple of 128 byte
sectors - for some of those it works out to significantly more space
than the same sized sector on a normally formatted track...
It takes some careful pencil-on-envelope work, but you know the
various gap sizes in advance--all are fixed except for the inter-
sector (write-splice area) gap. Recall that the XDF formatter moves
the physical location of sector 1 on each track to "skew" things, so
it can be done.
I suspect that it's entirely possible to write a little bit of code
to calculate the inter-sector gap (and perhaps whether or not to use
128 or 256 byte sectors during format) for a lot of different
combinations of sector size--but certainly not all.
FWIW, at least one copy-protection scheme used a track of 128-byte-
formatted sectors with N=2 in the ID fields, so that a program
attempting to copy by surveying the track with READ ID commands would
be presented with an impossible task.
It's also fun to layout a track with N=, say 6 in the first sector of
a 128-byte sector format. When you read it, you get a CRC error, of
course, but you also get the rest of the track, address marks and
all, so you can take a look at what the FDC is actually putting down.
Have you ever tried resetting the FDC after it has
written the last
header but before the index hole?
I've heard of that being done on some copy-protection schemes, but
the timing could be a bear. I have heard of a package that uses both
drives--one with a normally formatted floppy in one drive and a
"foreign" floppy in the other with MFM or FM data, but with
incompatible address headers switching drive select to pick up some
data from the foreign floppy.
--Chuck