und es geht doch... 
Nachdem ich nun noch weiter probiert habe, konnte ich das Problem mit den "verschobenen" Sektoren im GCR-Ringpuffer beseitigen.
Etwas trickreich war das Problem zu lösen, dass der letzte Sektor eines Tracks ja durchaus genau auf der hinteren Kante des Puffers liegen konnte und so nach vorn ge"wrap"t ist, dass ein Teil davon wieder am Anfang des GCR-Puffers lag.
Zum Vorgehen: ich suche ja aktiv nach den Sektoren-Markern (FFFF52 als Folge im GCR-Strom, die so nicht durch "normale Daten" codiert werden können).
Dieses Suchen beginnt am Anfang des GCR-Puffers und beim Erreichen jedes Sektors wird dann die Sektor-Nummer extrahiert und entsprechend dieser in die D64-Datei an einem bestimmten Offset die folgenden Daten dekodiert abgelegt.
Nach 256 Bytes fange ich wieder von vorn an und suche den nächsten Sektor... und so weiter. Dabei ist es mir dann egal, in welcher Reihenfolge die Sektoren vorkommen.. geschrieben wird entsprechend ihrer, im Sektor-Header abgelegten Nummer.
Komme ich nun ans Ende unseres GCR-Puffers und habe dort einen Track, der zwar vorher anfängt, jedoch dann seine restlichen Daten wieder am Anfang des Puffers liegen hat, so ist das ein Problem (siehe Zeichnung).
Zur Lösung habe ich nun einfach alle Daten, die mir am Anfang beim Suchen des ersten Markers (hier vom Sektor 19) unterkommen, direkt hinten ans Ende des GCR-Puffers geschrieben (dort wo nun etwas "extra Space") zur Verfügung steht - da hatte Thorsten Kattanek dankensweiser den Puffer schon etwas großzügig angelegt 
Und dann war da noch die Floppy-Disk-ID .. man erinnere sich; das ist eine 2-Stellige Zahl, die z.B. beim Formatieren mitgegeben werden kann und die fortan in die Sektoren-Header und auch in das Direktory geschrieben wird.
D64 kennt das aber garnicht und kann somit diese Header-Daten auch nicht ablegen bzw. bereitstellen, wenn die Format-Routine nochmals zurückliest, ob diese ID auch wirklich auf der Disk angekommen ist.
Gelöst habe ich es nun so, dass die ID als globale Variable beim Speichern abgelegt wird und beim Rücklesen dann genau diese Zahlen wieder in den erzeugten GCR-Datenstrom eingebaut werden.
Das Ergebnis : es Formatiert, es schreibt, es liest .. D64-Files. 
[x] D64-Write support done.
-> https://github.com/fook42/1541-rebuild

