On 18 Oct 2011 at 17:44, Eric Smith wrote:
Even though IBM didn't specify 128 bytes for FM,
I assume that you mean "MFM" (the 3740 format is 128 bytes FM and for
that matter the 53FD format is 128 FM on the first track.
I am rather surprised
I can't really imagine what sort of logic design
would lead to that. Interpreting the 00 length code as 80 bytes is
especially strange, and that makes me wonder if they didn't
intentionally do that in order to be compatible with some proprietary
system.
Hey, I didn't design the darned thing. :)
There's no obvious way to do such a thing as a
(somewhat-) compatible
extension of the standard formats. The ID field of a sector contains
a "physical record length" byte, and the FDC uses the value there to
determine how many data bytes to transfer before the CRC. The values
IBM defined are:
00 - 128 bytes (FM only)
01 - 256 bytes
02 - 512 bytes
03 - 1024 bytes (MFM only)
Take a look at the WD1771 data sheet, "Non IBM Formats" that states
in part:
"Non-IBM formats are very similar to IBM formats except a different
algorithm is used to ascertain the sector length from the sector
length field in the ID field. This permits a wide range of sector
lengths from 16 to 4096 bytes..."
In fact, when sending read or write commands to the 765, it's
customary to specify DTL in the command as 80 hex for 128-byte
sectors. For 256 byte sectors and up, DTL is 00.
For the meaning of DTL, read "When the value of N is 00, DTL stands
for the number of bytes users are going to read or write into the
sector." Whether or not this was intended for handling non-standard
sector length is open to speculation.
It's worth observing that when the WD 17/27 chips ruled the world,
many, if not most systems were not IBM-conforming, choosing to leave
out the IAM from their formats. This caused no end to problems when
systems with the old 8272 or 765 tried to read such disks, because
the NEC design originally had a very long "VCO sync" blind spot after
the index. The "A" parts pretty much halved that. But the early
5150 systems used the old 8272 , which created a bit of a problem.
--Chuck