DirectorySort 1280

Es gibt 48 Antworten in diesem Thema, welches 8.092 mal aufgerufen wurde. Der letzte Beitrag (2. November 2017 um 19:55) ist von Unseen.

  • Leider ist irgendwie nichts schickes zum Sortieren von Directorys für den 128'er auf dem 80-Zeichen-Screen zufinden (oder ich habs nur nicht gefunden), daher hab ich mich mal drangesetzt und und etwa Spaghetti-Code gebastelt (ein kleines Grundgerüst war schon vorhanden).

    Bitte gerne Ausprobieren und Meinungen/Verbesserungsvorschläge kundtun.

    Gruß, Gerd

    PS:
    - Rename File/Rename Disk ist noch inaktiv (kommt aber rein)
    - Delete Filename macht genau das wie es sich nennt, nämlich den Dateinamen im Directory löschen. Es werden Blöcke freigegeben, dazu muss ein Validate gemacht werden
    - nicht wundern: an dem Code ist noch nix optimiert oder aufgeräumt :saint:

  • Kleines Update.

    Neu hinzugekommen:
    - Dateien umbenennen
    - Disketten umbenennen
    - ID ändern
    - erweiterte ID (5 Zeichen) ändern

    Was könnte man noch so einbauen?

    Gruß, Gerd

  • Dateischutz vor löschen?

    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. / Bitte melde dich an, um diesen Link zu sehen.

    Nichts hält länger als ein Provisorium

  • 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 Images

    Wenn 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.

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • @Mac
    zu a: da bin ich auch schon drüber gefallen. Das hab ich jetzt erstmal abgestellt und gehe von 1541/71 aus. Hab ich aber auf dem Schirm und kommt wieder rein. Das das so wie es ist nicht mit allem läuft habe ich schon befürchtet...

    zu b: gefixt (schlicht ein Zeichen zuviel weggelöscht)

    Gruß, Gerd

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

  • 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.

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • Bitte melde dich an, um diesen Link zu sehen.
    Super, endlich ein geniales Tool für den C128

  • - zeigt jetzt Datei-Typ und -Größe an (Editieren ist noch angedacht)
    - löschen von Dateien (nicht nur von Dateinamen) ist auch in der Mache

    Wie immer: wer noch Ideen hat, immer her damit :smile:

    Gruß, Gerd

  • '@' für "send disc command" könnte noch nützlich sein.

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • Du könntest den Text rechts im Optionsfeld um ein zeichen weiter nach rechts schieben, dann würde das "DEL" nicht so am = kleben.

    Ich würde es übersichtlicher finden wenn die Details gleich rechts neben dem Dateinamen zu sehen wäre. Platz dafür wäre ja offensichtlich genug.
    Das Detailfeld könnte man ja zb. dafür nutzen um anzuzeigen wo sich die ausgewählte Datei auf der Diskette befindet. Wenn das möglich ist.


    Die Farbe zu ändern wäre noch ein nettes Feature.

    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. / Bitte melde dich an, um diesen Link zu sehen.

    Nichts hält länger als ein Provisorium

  • :thumbsup:

    So wärs perfekt :)

    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. / Bitte melde dich an, um diesen Link zu sehen.

    Nichts hält länger als ein Provisorium

  • Neu eingebaut:

    - Anzeige von Dateityp und Größe in linken Liste (siehe auch Screenshot oben)

  • So: kleine Update für zwichendurch.. (geht langsam auf die Version 1.0 zu :D )

    - diversen Unfug, geistigen Dünnschiss und programmtechnischen Quatsch sowie kleinere Bugs entfernt
    - nicht angeschlossene Floppylaufwerke werden ignoriert
    - Dateien löschen (Shift-DEL) eingebaut. Achtung: die Datei wird ohne weitere Nachfrage gelöscht. Die zuvor belegten Blöcke werden wieder freigegeben. Bei Dateien mit Scratch-Schutz muss dieser erst enfernt und das Directory zurückgeschrieben werden.
    - mit +/- kann man den Dateityp verändern (USR/DEL/SEQ/PRG/REL). Natürlich nur im Directory, das File selbst bleibt wie es ist.
    - damit es auch schön fluppt habe ich das ganze auch durch einen Compiler laufen lassen (bringt ganz gut was). Ist dann aber etwas größer (wegen der 5KB Runtime die er mitschleppt), aber ja ja wohl fast jeder mit einem FloppySpeeder unterwegs ist dürfte das nicht weiter auftragen).

    Beide Versionen im Anhang.

    Gruß, Gerd

    PS: mir fällt bestimmt noch was sinnvolles ein, was man einbauen könnte....

  • Klasse,nettes Tool.
    Ich hätte da auch noch eine oder zwei Ideen.
    Alphabetisch oder nach Namens- oder Filegröße sortieren.
    Vielleich auch das Farbschema mittels F-Tasten anpassen (Dateitypen mit separater Farbe darstellen)

    PS: Wenn ich das Prog. mit dem Blitz-Compiler128 compiliere bekomme ich eine Fehlermeldung in Zeile 1220
    In diesem Absnitt stört dem Compiler etwas

    getBitte melde dich an, um diesen Link zu sehen.,e$:ifasc(e$)=255then dr=0 else dr=0


    Gruß: Stephan

  • die Zeile 1220 kannst du weglassen, die ist im moment zu nix nutze (oder wahlfrei mit '1220 DR=0' ersetzen). War für die 1581 gedacht, ist aber müll, da ich hier einfach ein original Bios vorraussetze (was ja auch nicht jeder hat). Das muss ich nochmal ganz anders angehen.

    Eine Kompilierte Version hatte ich angehängt. Ist der Blitz besser was die Größe des Kompilats angeht? Der Speed ist ja so gut wie es ist (ist auch eigentlich nur eine Stelle die langsam wird wenn es sehr viele Dateien im Directory gibt).
    Muss ich mal antesten....

    Das mit dem Sortieren.... hmmm macht das Sinn? in den allermeisten Fällen eher nicht, oder? Ich schreibs mir mal auf.
    Ein wenig Farbe könnte es noch vertragen, da hast du recht und ist auch angedacht.

    Gruß, Gerd

    PS: Die Farben mache ich dann aber vermutlich fest und nicht einstellbar

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.

    Einmal editiert, zuletzt von ADAC (23. September 2017 um 21:16)

  • die Zeile 1220 kannst du weglassen, die ist im moment zu nix nutze (oder wahlfrei mit '1220 DR=0' ersetzen). War für die 1581 gedacht, ist aber müll, da ich hier einfach ein original Bios vorraussetze (was ja auch nicht jeder hat). Das muss ich nochmal ganz anders angehen.

    Eine Kompilierte Version hatte ich angehängt. Ist der Blitz besser was die Größe des Kompilats angeht? Der Speed ist ja so gut wie es ist (ist auch eigentlich nur eine Stelle die langsam wird wenn es sehr viele Dateien im Directory gibt).
    Muss ich mal antesten....

    Das mit dem Sortieren.... hmmm macht das Sinn? in den allermeisten Fällen eher nicht, oder? Ich schreibs mir mal auf.
    Ein wenig Farbe könnte es noch vertragen, da hast du recht und ist auch angedacht.

    Gruß, Gerd

    Danke. Die Zeile habe ich entfernt.
    Welcher Compiler schneller ist,genau das wollte ich teste. Bei dem Basic128 Compiler von Data Becker ist auch eine Codeoptimierung möglich falls benötigt.

    Gruß: Stephan

  • So grad mal nachgestellt:
    Die Zeile 1220 ändern in:
    'OPEN15,U,15:PRINTBitte melde dich an, um diesen Link zu sehen.,"m-r"CHR$(198)CHR$(229)CHR$(1):DR=0'

    Dann frisst das auch der Blitz (das Open wird später noch gebraucht).

    Aaaber:
    - der erzeugt kein kleiners Kompilat (ist sogar noch etwas größer. Vermutlich schleppt auch der eine entsprechende Runtime mit.
    - das läuft nicht. Liegt vermutlich an dem Stück Assembler, welches ich in $0e00 Benutze. Genau da fliegt der auf die Nase.
    Daher sehe ich im Blitz da jetzt erstmal keinen Vorteil der es rechtfertigt da was umzustricken damit es damit läuft.

    Die Optimierung ist schon auf hohe Stufe beim Basic128Compiler eingestellt.

    Gruß, Gerd

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen.