amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > TD_FORMAT "repariert" Disketten? [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

25.11.2006, 23:28 Uhr

woop
Posts: 67
Nutzer
Hallo,

da alle 735643987 mir bekannten ADF/ADZ/DMS-Reader/Writer nicht meine Anforderungen erfüllen (paranoides Verify wegen altersschwacher Disketten, 1.2 kompatibel, Transfer über serielle Schnittstelle) habe ich kurzerhand begonnen mir mein eigenes, 735643988te Tool hierfür zu schreiben.

Beim Beschreiben von Disketten via trackdisk.device habe ich folgende Vorgehensweise implementiert:

1. Schreiben eines kompletten Tracks per CMD_WRITE und auf Fehler prüfen
2. CMD_UPDATE und CMD_CLEAR und auf Fehler prüfen
3. Lesen des geschriebenen Tracks per CMD_READ und auf Fehler prüfen
4. Vergleichen der gelesenen Daten mit den geschriebenen
5. Wenn oben kein Fehler gehe zu 6.
5.1. Wenn Anzahl der Versuche pro Track größer x Fehler melden und abbrechen, ansonsten
5.2. Formatieren des Tracks per TD_FORMAT mit einem auf 0 gesetzten Buffer
5.3. gehe zu 1.
6. nächster Track...

Soweit so gut, allerdings funktioniert das etwas besser als ich erwartet habe:

In den letzten 20 Jahren habe ich eigentlich eine Diskette als endgültig zerstört angesehen, wenn sich diese mit dem normalen Format-Befehl nicht mehr formatieren ließ, mehrmals aufgerufen natürlich.
Von solchen Disketten habe ich einige, und so verwendete ich eine von diesen, um die Fehlerbehandlung in meinem Programm zu testen. Zu meinem Erstaunen lief ein ADF-Write vollständig durch und die Diskette war danach fehlerfrei lesbar und schreibbar.
Ich habe noch mit einigen anderen kaputten Disks getestet und überall dasselbe Ergebnis: Disketten, die sich vorher nicht formatieren ließen und wenn sie ohne Verify beschrieben wurden sich nicht fehlerfrei auslesen ließen funktionierten nach einem ADF-Write anstandslos und ließen sich auch wieder fehlerfrei formatieren.

Tja, was soll ich davon halten? Ich bin bisher einfach davon ausgegangen, dass ein Workbench-Format selbstverständlich TD_FORMAT benutzt und dass diese Vorgehensweise von mir jetzt nicht sonderlich ungewöhnlich ist, aber scheinbar ist das doch so, oder spielt mir hier nur der Zufall einen Streich?


[ - Antworten - Zitieren - Direktlink - ]

26.11.2006, 14:08 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von woop:
Tja, was soll ich davon halten? Ich bin bisher einfach davon ausgegangen, dass ein Workbench-Format selbstverständlich TD_FORMAT benutzt und dass diese Vorgehensweise von mir jetzt nicht sonderlich ungewöhnlich ist, aber scheinbar ist das doch so, oder spielt mir hier nur der Zufall einen Streich?


Ich denke, wenn überhaupt, dann nur maximal einmal (gefolgt von evtl. mehreren Schreibversuchen. Nach Deiner o.g. Vorgehensweise rufst Du bei Problemfällen mehrmals TD_FORMAT auf, das mag einen Unterschied machen. Ich kann mich auch dunkel daran erinnern, dass man bei einem fehlgeschlagenen Format mitunter einfach noch ein- zweimal probiert hat und es dann manchmal funktioniert hat.

Ob das bei wirklich altersschwachen Disketten so empfehlenswert ist, steht auf einem anderen Blatt.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

26.11.2006, 14:27 Uhr

DaxB
Posts: 1421
Nutzer
Ich habe damals immer FixDisk zum "retten" von DD Disketten benutzt. Das hat oft recht gut funktioniert. Falls du FixDisk nicht kennst, kannst du die es ja evtl. angucken (sollte im Aminet liegen).

[ - Antworten - Zitieren - Direktlink - ]

26.11.2006, 15:19 Uhr

geit
Posts: 332
[Ex-Mitglied]
Bei entsprechender Lagerung sind die Disketten noch in Ordnung. Die Daten gehen verloren, weil die Magnetisierung der Scheiben nachläßt.

Wenn du jetzt die Disketten neu schreibst, wird diese Magnetisierung aufgefrischt und die Disketten funktionieren wieder.

TD_Write und TD_Format unterscheiden sich auch technisch nicht wirklich.

Das Laufwerk beschreibt immer einen kompletten Track. Egal ob du 512 Bytes oder 4KB schreibst. Es wird immer der komplette Track neu formatiert.

TD_Write ließt den Track ein, ersetzt die neuen Bytes und schreibt den Track wieder komplett. (IMHO nutzt es dafür dann auch TD_FORMAT)
TD_Format schreibt einen kompletten Track auf die Schreibe.

Der Grund ist einfach. Laufwerke drehen nicht gleich schnell und sie reagieren nicht gleich schnell. Daher kann man nicht einen Sektor direkt ansprechen.

Es werden daher immer mehr Daten auf die Umdrehung geschrieben als draufpassen. Das geschieht durch eine Lücke vor den eigentlichen Sektoren. Diese Lücke wird wird dann am Ende des Tracks teilweise wieder mit Nutzdaten überschrieben. Würde man das erste Byte auf einem Track markieren und dann den Track lesen und wieder schreiben, würde dieses erste Byte komplett woanders auf der Scheibe liegen. Der Anfang eines Track wird durch eine Synckennung ermittelt. Das ist auch der Grund, warum man die Lücke schreiben muß. Es könnte sich ja zufällig hinter einem Track noch die alte Sync-Markierung finden und so hätte man plötzlich 2 Anfänge auf dem selben Track.

Einige Trackloader machen sich diese Eigenschaften zu nutze und schreiben längere Spuren um mehr Daten pro Track zu schreiben. Es gibt auch einige Treiber, die es ermöglichen auf eine Amiga Diskette 920 umd mehr KB unter zu bringen.

Geit


[ Dieser Beitrag wurde von geit am 26.11.2006 um 15:26 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

27.11.2006, 21:57 Uhr

woop
Posts: 67
Nutzer
Zitat:
Original von geit:
TD_Write und TD_Format unterscheiden sich auch technisch nicht wirklich.


Das klingt eigentlich plausibel, und dennoch, wenn ich das TD_FORMAT weglasse habe ich trotz x wiederholter CMD_WRITEs auf denselben Track bei einigen Disketten konstant Fehler; mache ich dann auf diesen Track _ein_ TD_FORMAT läuft der nächte Write durch und die Diskette bleibt dann auch erstmal heil, ein normales Format läuft dann mit der Diskette ohne zu Murren und Stocken durch, auch wenn es vorher schier unmöglich war de betreffende Disk zu formatieren, weswegen mir hier langsam das Testmaterial ausgeht ;)
Ich habe das auch auf mehreren Rechnern geprüft und überall dasselbe Ergebnis -- merkwürdig.

Ich habe mal ein Testbinary zu meinen Trackdisk/ADF-Klassen gebastelt, leider mit nur rudimentären (CLI-)Userinterface, ohne Unterstützung anderer Devices als trackdisk und ohne HD-Disketten-Unterstützung:
http://eazy.amigager.de/~kai/transdisk2.exe

Aufrufbeispiele:
transdisk2.exe FROM DF0: TO RAM:test.adf
transdisk2.exe FROM RAM:test.adf TO DF1:
transdisk2.exe FROM DF0: TO DF1:
transdisk2.exe FROM RAM:test.adf TO RAM:Copy_of_test.adf ;)

Es würde mich mal interessieren, ob das bei anderen auch so aussieht.



[ Dieser Beitrag wurde von woop am 27.11.2006 um 22:03 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > TD_FORMAT "repariert" Disketten? [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.