Moin moin,
anbei eine .NET 4.0 DLL, die es erlaubt, einzelne Sektoren einer G64 bzw. G71 zu lesen und zu schreiben. Er kommt auch mit dem sehr harten Testfall aus Neuer Cbm File Browser / Editor klar.
Benutzung etwa so:
GcrImage.GCRImage foo = new GCRImage("geos128r_d1.g64");
byte[] sector = foo.readSector(18, 0);
// After changing the content:
foo.writeSector(18,0,sector);
foo.save("foo.g64");
Daneben gibt es noch eine zweite Variante von "readSector" und "writeSector", die einen zusätzlichen Parameter haben, der dann als erstes angegeben werden muss. Es handelt sich um die physikalische Tracknummer - verdoppelt, damit ganzzahlig (Stichwort: Halftracks).
So kann der Track angegeben werden, auf den anch dem Sektor gescuht werden soll. Dies ist für die Rückseite einer G71 notwendig. Aber auch Disketten, die mit einem Offset k bespielt wuden, d. h. der Sollinhalt von Track i ist auf Track i+k geschrieben, können so verarbeitet werden. Um deren Verarbeitung zu unterstützen, gibt es noch eine Funktion
foo.getTrackFromHeader(trackNumber)
wobei wegen der Ganzzahligkeit auch hier die Tracknummer verdoppelt werden muss (Halftracks).
Grüße
Markus