Hello, Guest the thread was viewed5.7k times and contains 94 replies

last post from Claus at the

Wie kann man eine Diskette "defragmentieren"?

  • Wenn man ein logisches Interleave vermeiden möchte, aber auf den Interleave trotzdem nicht verzichten möchte, ist auch ein Hardinterleave möglich. Da werden dann die Sektoren schon beim Formatieren im gewünschten Interleave angeordnet und die Dateien in logisch fortlaufenden Sektoren geschrieben. Das war bei frühen Festplatten verbreitet. Alte PC-BIOSe bis Anfang 486'er hatten oft noch einen Festplattenformatierer integriert, wo man den Interleave einstellen kann.


    Bei einer 1541-Diskette wäre das aber wohl kontraproduktiv, weil die vorhandenen Routinen auf eine fortlaufende Sektoranordnung optimiert sind. Eigentlich wundert es mich, daß man die Abfrage der Sektorreihenfolge nie als Kopierschutz genutzt hat. Als es noch keine Nibbler gab, hätte das sicher gut funktioniert.

  • Bei einer 1541-Diskette wäre das aber wohl kontraproduktiv, weil die vorhandenen Routinen auf eine fortlaufende Sektoranordnung optimiert sind.

    Sind sie eigentlich nicht, jedenfalls nicht die DOS-Routinen. (Transwarp würde vermutlich nicht drauf klarkommen, die meisten anderen Loader aber schon.)


    Das Problem mit dem Interleave aber ist, dass kein generell optimaler Interleave existiert, sondern der stark von vielen Faktoren und dem laufenden Programm und der Position auf Diskette usw. abhängt, von der Schnelligkeit des Loaders mal abgesehen.


    Schon die Directory hat einen anderen Interleave als Dateien beim Standard-DOS.

  • Was gesucht ist: Ein Programm, das die Reihenfolge der Dateinamen so beibehält, wie sie im aktuellen Directory stehen (das muss ja nicht zwingend alphabetisch sortiert sein). Es sollen nur intern die Lücken in der Directory durch "Hochschieben" geschlossen werden, dass eine neue Datei automatisch wieder als Letztes im Directory eingetragen wird.

    Wenn man Punkt 2 "interaktiv" wählt, werden die Einträge in der Reihenfolge wie im Directory angezeigt. Man muss nur ein paar Mal die Enter-Taste drücken.


    Also schon ziemlich automatisch. Ja, nicht ganz perfekt aber im Ergebins schon das, was gesucht wird.

  • Nicht ganz, weil man da öfter die Tasten drücken muss, um die Einträge von links nach rechts zu holen.

    Eine alphabetische Sortierung bringt ja die vorhandene Reihenfolge durcheinander.

    Einfach nur das Directory einlesen und unverändert schreiben entfernt die Lücken - und das geht mit diesem Tool nicht mit einem Klick.

    Eine "Ein"-Klick-Lösung war bis jetzt noch nicht gesucht (oder ich hab's überlesen).

  • Ich habe festgestellt, dass die C64-Programme "Dir Master" und "DirMaster 1581" eigentlich schon das machen, was ich brauche.



    Ich gehe jetzt zum Aufräumen der Disks folgendermaßen vor:

    1. Löschen der Dateien mit dem üblichen Diskkommando ("s:dateiname").
    2. Starten von "Dir Master".
    3. "Make your own Directory".
    4. Mit D alle *DEL Dateien löschen, die normalerweise unsichtbar sind.
    5. Directory mit W zurückschreiben.
    6. Fertig.

    Danach werden alle neu erzeugten Dateien im Directory wieder am Ende eingefügt. So wie es vor dem Löschen der Fall war.

    Ich finde das ist ein vertretbarer Aufwand. Damit kann ich leben.


    Das die eigentlichen Daten nicht defragmentiert werden, finde ich akzeptabel. Bei einer Workdisk spielt es für mich keine große Rolle, ob man da einen Block mehr- oder weniger auf der Disk hat. Falls das überhaupt einen Unterschied macht.


    Ich danke Euch für Eure Hilfe! :thumbsup:

  • Bei einer Workdisk spielt es für mich keine große Rolle, ob man da einen Block mehr- oder weniger auf der Disk hat. Falls das überhaupt einen Unterschied macht.

    Macht größen- und platztechnisch keinen Unterschied, aber für die Geschwindigkeit schon.

    Je stärker die Fragmentierung, desto öfter muss die Spur gewechselt werden, und der Kopf wandert unnötig kreuz und quer über die Disk.


    Der klassische Dirmaster (von dem es ca. 1000 Varianten verschiedener Szenegruppen gibt) tut auch das, was Du möchtest.

    Allerdings habe ich da auch noch keine Version gefunden, die die Directory automatisch aufräumt.

  • Macht größen- und platztechnisch keinen Unterschied, aber für die Geschwindigkeit schon.

    Je stärker die Fragmentierung, desto öfter muss die Spur gewechselt werden, und der Kopf wandert unnötig kreuz und quer über die Disk.

    Okay, das ist für mich in Ordnung. Wenn ich mit den Workdisks arbeite, habe ich "True Drive" meistens ausgeschaltet. Da sind die Zugriffe ohnehin hyper-schnell und kaum bemerkbar. Und ganz am Ende, wenn alles fertig ist, kopiere ich die einzelnen Dateien mit einem Filecopy-Programm von den ca. 10 Workdisks auf eine Final-Disk. Und dieser letzte Kopiervorgang räumt alles wieder auf.

  • Ich hätte zumindest erwartet, dass du GoDot solange ärgerst, bis er in TSB einen entsprechenden Befehl eingebaut hat. :D

    Das habe ich doch schon versucht. Aber er sagt, er hätte nur noch 2 Bytes frei in TSB und er käme gar nicht mehr dazu, seine Pflanzen zu gießen.

    2 Bytes! Eins für den neuen Befehl, und eins zum Blumen gießen. Passt doch. Wenn man die Bytes defragmentiert, packt sich das auch viel besser.

  • Wenn man die Bytes defragmentiert, packt sich das auch viel besser.

    Alle Bytes der Größe nach sortieren und Differenzcodieren, dass das noch keiner drauf gekommen ist!!!

  • Alle Bytes der Größe nach sortieren und Differenzcodieren, dass das noch keiner drauf gekommen ist

    Du meinst die Burrows-Wheeler-Transformation von 1994, die zB in bzip2 verwendet wird?

  • Du meinst die Burrows-Wheeler-Transformation von 1994, die zB in bzip2 verwendet wird?

    Danke, aber das haben Burrows und Wheeler wohl nicht konsequent zu ende gedacht, das ist ja dann gar nicht komplett sortiert :whistling::D