Hier noch mal ein Status zu dem Synchronisationsproblem mit meinen Wang-Disketten:
Zunächst: Wie oben schon geschrieben wurde, sollten bei FM nur Flusswechsel im Abstand von 4us und 8us auftreten. Weiterhin sollten die kurzen Abstände immer nur im Päärchen auftreten. Jede Abweichung davon ist ein Fehler.
Auf den Disketten finden sich solche Fehler zunächst im Umfeld der Indexlöcher, dort also, wo beim Formatieren mit dem Schreiben angefangen wird und dabei irgendwelche Reste von früheren Aufzeichnungen überschrieben werden. Die nächste Fehlerhäufung findet sich nach den abschließenden CRC-Bytes - dort also, wo mit dem Schreiben aufgehört wird und Reste von früheren Aufzeichnungen beginnen.
Bei den Nutzdaten zwischendurch gibt es keinerlei Fehlstellen - mit Ausnahme der Fehler im zweiten Synchronisationsteil. Die ersten 160 Synchronbits sind fehlerfrei, bei der zweiten Gruppe kommt ziemlich regelmäßig eine kurze Sequenz mit Fehlern etwa ab dem 120. Bit.
Der Witz dabei ist: Je intensiver die Diskette nach dem Formatieren genutzt (beschrieben) wurde, desto wahrscheinlicher sind diese Fehler und auch die Länge des Fehlerbereichs nimmt zu. Ein Sektor, der nach dem Formatieren nie mehr beschrieben wurde, ist dagegen völlig fehlerfrei.
Meine Schlussfolgerung: Beim Schreiben eines Sektors muss der Diskettencontroller zunächst die Daten lesen, die gerade den Lesekopf passieren, um mitzubekommen, wann der richtige Sektor erreicht ist. Der erste Synchronblock (166 x Null, dann 2 Einsen) hilft ihm dabei, den Anfang der für ihn relevanten Information (Tracknummer und Sektornummer) zu finden.
Um die Nutzdaten zu schreiben muss dann auf Schreiben umgeschaltet werden, und das geht offenbar nicht schnell genug, um im bestehenden Rhythmus weiter zu schreiben. Es besteht also immer die Gefahr, am Beginn der Nutzdaten einen Fehler von ein paar Mikrosekunden zu erzeugen, der dann beim Lesen Schwierigkeiten macht.
Also erfolgt die Umschaltung früher - d.h. während des zweiten Synchronblocks, nach ca. 120 Bits oder einer knappen Millisekunde. Er schreibt dann noch 7 Null-Bytes (=56 Bits) und das Synchronbyte (3) neu und kann dann ohne Unterbrechung die Nutzdaten schreiben.
Ein weiteres Indiz für dieses Szenario ist die Datenlänge des zweiten Synchronblocks: : Ein frisch formatierter Sektor enthält dort 165 Nullbits vor dem Synchronbyte (woher die 5 zusätzlichen Bits kommen kann ich bisher nicht erklären - es sollten eigentlich 20x8=160 sein).
Bei einem beschriebenen Sektor kommen zunächst 120 Nullbits, dann ein paar Mikrosekunden "Störsignale", dann weitere 56 Nullbits und das Synchronbyte. Macht 176+X Bits - ein Beweis, dass beim Schreiben dieser zweite Synchronblock zumindest in Teilen neu geschrieben wird.
Was mich jetzt interessiert: Macht ein normaler FDC das genauso, oder kann der "übergangslos" von Lesen auf Schreiben umschalten, d.h. dabei den bisher gelesenen Takt halten? Bei der Wang wird das ja alles in Software (plus ein paar Monoflops) erledigt - da gibt es eben die Störungen beim Umschalten.
Für das Lesen der Disketten gilt nun einfach: Beim zweiten Synchronblock mindestens (120 * 8 + X) Mikrosekunden = ca. 1ms warten, bevor auf die beiden Eins-Bits zum Synchronisieren gewartet wird.