amigaksi wrote:
It's suppose to be missing the first bit according to my tests with floppy simulation.
The unencoded SYNC word string is 0x0000A1A1, which encodes to 0xAAAA (put clock pulses before data pulse, so 0000 becomes 10101010. Then encode A1A1, which would normally encode to 0x44A9 0x44A9. But the "FUNNY A1" encoding, as the Commodore engineers called it, didn't use the normal method of encoding for the sync word --- so the driver/software/whatever could tell the difference between the SYNC and real data. They instead opted to encode A1 as 0x4489 (44 is normal as is the 9), so the "missing clock pulse" referred to in the documentation is the 11th bit(counting L to R, MSB to LSB) which would normally be a "1" be changed to a "0" instead. Note that it also doesn't break any MFM encoding rules as far as too-long-run-of-0's-or-1's.
This, my friend, is the bit you are referring to. (not the first missing by mistake-in-some-versions-of-OS bit)

Normal MFM encoding of 0x0000A1A1 = 0xAAAA 0xAAAA 0x44A9 0x44A9
Special SYNC MFM encoding of 0x0000A1A1 = 0xAAAA 0xAAAA 0x4489 0x4489
Besides, the AAAA AAAA is considered to be a preamble, and you want something nice and consistent -- easy to PLL lock to for recovering the data. Most of the OS uses a 16-bit SYNC word of "0x4489" because this is the important stream of bits to ensure you are properly locked.
(the code in my floppy controller uses 4489, as well)
Hope this helps
P.S. you should probably respond to my blog posts on my blog versus on another website
P.P.S. Hopefully this is clear, it's 20 minutes to 2am.