On Wed, 3 Aug 2005, Dwight K. Elvey wrote:
I see from Dave's post that this was one of those
redundant
information I was talking about. I wonder if all the
later PC controllers deal with these fields the same?
Pretty much so. (for compatibility reasons)
Int 13h will handle the whole process, and introduce some major
limitations.
VERY oversimplified (apologies to Dave and Allison):
It moves to the track (and head) of the sector that you specified.
It sets up the DMA.
It checks Int 1Eh for some parameters (gaps, bytes per sector, etc).
It looks on the current track for a sector with the CHRN values specified.
Because Int13h is using the cylinder, head, and sector number that you
specified for BOTH seeking to track and selecting head, AND for the CHRN
values looked for in the sector header, therefore, Int13h cannot
handle sectors with "invalid" headers.
That is the "redundancy".
If you go below the BIOS, and talk directly to the hardware,
those limitations disappear, since YOU seek to track, select head,
and then look for any CHRN header you want.
(CHRN == fields in sector header: Cylinder, Head, Record (sector) number,
bytes per sector (128 * 2**N, or 128<<N ). Sector header also has a CRC
that is checked to be sure that data read matches CRC. "VERIFY" does NOT
check whether correct content was written, only whether the data that is
there after writing has a valid CRC)
suggested reading: Int13h source in "Technical Reference Manual",
NEC and WD data sheets, Wiliam Barden's "TRS80 disk controller" paper,
"Beneath Apple DOS" for simple description of GCR, . . .
--
Grumpy Ol' Fred cisin at
xenosoft.com