'@' für "send disc command" könnte noch nützlich sein.
Beiträge von Mac Bacon im Thema „DirectorySort 1280“
-
-
Man öffnet wie beschrieben "$" mit Sekundäradresse > 1, setzt dann aber per "B-P" den Pointer zurück auf das erste bzw. zweite Byte und liest somit direkt den Linkpointer auf den ersten Verzeichnisblock ((C) Skern). [...] Das Programm funktioniert dann auch in CMD-Unterverzeichnissen.
Damit sich niemand bei Experimenten eine Native-Partition zerschießt, hier noch eine Warnung: Mit der obigen Methode kann man zwar Track und Sektor des aktuellen Verzeichnisses finden, aber Directory-Editoren müssen bei CMD-Verzeichnissen noch ein zweites Problem beachten:
Meines Wissens enthält jedes Unterverzeichnis in seinem Headerblock einen Zeiger zurück auf seinen Verzeichniseintrag im übergeordneten Verzeichnis. Und zwar nicht nur Track+Sektor, sondern auch noch den Byte-Offset innerhalb des Blocks (oder die Eintrags-Nummer von 0 bis 7, weißnichmehr).
Wenn also beim Sortieren eines Verzeichnisses ein Unterverzeichniseintrag verrutscht, müsste anschließend noch der Rückwärtslink korrigiert werden. Oder man schreibt den Editor so, dass Verzeichniseinträge immer an ihren Platz bleiben müssen. -
Ich hab es nur ganz kurz im Emu angetestet:
a) Das Programm findet den Laufwerkstyp heraus, indem per Memory-Read das vorletzte Zeichen der Statusmeldung gelesen wird. Das versagt natürlich bei diversen Speedern und vermutlich auch bei SD2IEC. Besser wäre das Lesen des Formatbytes, das ist das erste Byte aus "$", wenn dieses mit Sekundäradresse > 1 geöffnet wird. Dann bekommt man:
Code"a" für 1541/1571 "c" für SFD/8050/8250 "d" für 1581 "h" für CMD Native CHR$(0) für SD2IEC außerhalb von ImagesWenn man allerdings wirklich nur das Verzeichnis bearbeiten will, geht es sogar noch einfacher: Man öffnet wie beschrieben "$" mit Sekundäradresse > 1, setzt dann aber per "B-P" den Pointer zurück auf das erste bzw. zweite Byte und liest somit direkt den Linkpointer auf den ersten Verzeichnisblock ((C) Skern). Die eigentlichen Daten liest man danach blockweise per U1.
Dann muss man den Laufwerkstyp nicht einmal wissen. Zusätzlicher Vorteil: Das Programm funktioniert dann auch in CMD-Unterverzeichnissen.b) Ich habe einen Syntax Error in 3340 bekommen; in der Zeile fehlt ein Doppelpunkt.