On Tue, 29 Jan 2013, John S wrote:
To conclude, information such as the IDAM content
won't be readable by a
PC with a normal FDC, so this approach looks limited. I am in touch with
Ansgar reading his wonderful hpdir project, which I am using with my
Series 80 disks on an 82901M drive, so will point him here for a bit
more light reading ;-)
<Oversimplified>
PC WILL sense the IDAM.
In "normal" read/write, the PC works the same. It steps to the track,
finds a sector header, checks it, and if it is the one requested,
reads/writes.
The NEC chips even have a [little used] command to read sector header!
(usually only needed if the track number in the sector header is
inconsistent with the actual physical cylinder that you are on -
such as this, or 48tpi/96tpi, 67.5tpi/135tpi mismatch, OR bizarre
silliness along the lines of deliberate wrong head or sector numbers
(looking at YOU DS Kaypro))
NOTE: The HP LIF "Bad Track" marking scheme is dependent on being able to
successfully read part of the BAD TRACK to see the sector header mod that
identifies it as a bad track. A track that is completely bad can not be
marked as bad using that scheme.
Logical track numbers not matching physical ones!
Therefore, [hopefully?] to handle LIF "bad track"s:
1) step to the presumed track.
2) Try to read. If successful, then DONE.
If (err#4) /*sectors found, but not the right ones*/,
then read ID.
else (not err#4) pocess error
If ((Track# (from READID) shows as FFh) /*you have a "bad track"*/) ||
(track# is lower than expected)) /* due to a bad track earlier on the
disk?*/
then /*move to the next track*/ (if (not last head) increment head,
else (if on last head), zero head and step, STOP at end of disk!).
/* if track number reads HIGHER than expected, possible seek error, try
recalibrate (seek to 0) and back to #1 a few times*/
GOTO 2 /*retry read on what might now be the revised track*/
Have a user configurable "watchdog count".
I like 10 retires (V THREE!), but on a known bad disk with soft errors,
sometimes it is worth setting RETRIES to a higher number, or INFINITE!
("Recovery" mode: list known read errors, retry each on the list a few
times, and repeatedly cycle through the list until all errors have been
recovered)
</Oversimplified> ! More details available on request