For MFM
is when the transiston occurs rather than how many. Generally the
Floppy generates what is by standard expected and the FDC external logic
will regenerate data pulses and data window (data window is a read clock).
Right. So with FM the datasep syncs to the high-frequency signal in Gap1,
then every time there's a 0 you'll pick up a 0/1/0/1 sequence for each read
window, and when there's a 1 you'll pick up a 1/1/1/1 sequence?
And with MFM, a 0 after a 0 would be 1/0, a 0 after a 1 would be 0/0 and a 1
would be 0/1?
Not always. The rate of transistions and symbols (zero or one) may not be
one to one for number transistions. Never quite got MFM in my head as
clear as FM.
0/1 taken to mean "first data window was empty, second had a pulse in it".
More like a 0 was a longer window than a one. where the FM the window
always has one transistion and if it's a one then there will be a
transistion near the middle of the window.
The trick with floppies is the drive has a narrow bandwidth and the typical
data rate must be in the range of F and 2F where F is some number of flux
transistion per unit time (and also realated to per inch at rotation speed).
MFM does some long string things to get the number of transistions to stay
within F and 2F bit does not have the clear 1:1 symbol corolation of FM.
Of course in real life not much of this is needed to assemble a working
FDC/Floppy interface.
Allison
Hi
My understanding was that both FM and MFM have the same
maximum average flux change rate. As I recall, FM was a
two cells for each data bit. clock in one and data in the other.
MFM was where in the cell the bit was found. If it was
early, it was a clock and late, it was the data bit. There
were some rules about placing two transitions right next
to each other so that a data "1" couldn't be followed by a clock.
The frequency of the input clock to the FDC needs to be
2X for the MFM because it has finer timing edges, otherwise the
average rate of pulses to the drive is the same.
For soft sectored, they had some special marks that violated
the rules for where a clock pulse should exist. The controller
would watch for the missing clock and then recognize the data
to determine what type of marker it was. This located things
like header fields and data fields.
I hope I got that right.
Dwight