From: "Chuck Guzis" <cclist at
sydex.com>
A little background on the subject...
I'm working with a number of old 100 TPI 5.25" HS diskettes and a
catweasel to read them. The data encoding is plain MFM and thus far,
the whole project involving some 27-year old media is going pretty
well, considering the age and condition of the media.
Occasionally, I'll pick up a data error (no big surprise). According
to what I've been able to determine from the CW output, most of the
errors involve extraneous noise in the read output. In other words,
if the normal pulse timings for MFM are 0.5 1.0 and 1.5 cell-time
units, a pulse will sometimes be seen that occurs less than 0.25 time
unit from the previous one.
The CW output is essentially a bunch of 7 bit numbers that express
the number of clocks seen since the last pulse was read.
My original thought was to ignore each noise pulse by adding its
clock-count value to that of the next pulse that comes along. In
other words, if I get a stream of pulses with clock counts of, say,
10 20 30 20 5 15 10..., I'd skip the 5 pulse and convert the 15 to a
20.
This doesn't work well. While it's better than acually counting the
extraneous pulse as a data pulse, much better results are obtained if
the pulse is simply ignored and the next pulse clock-count is used as-
is without "correction".
Does anyone know why this would be? I can't rationalize it.
Cheers,
Chuck
Hi
It might be better to use the CRC, since you know where in the data
field the error was. The alignment of the CRC can be guessed at and
several attempts made to see if the error location matches the
location you know to be the error.
If you take the calculated crc with the recorded crc, it can be
played backwards. When you get close, the end numbers in your
CRC back calculator will be zeros and the bits in the middle will
be the error mask.
Dwight
_________________________________________________________________
http://newlivehotmail.com