DiskFix – ßeta 6 release notes

Nachtrag 22.09.2022 // Oh oh, 16 Wochen sind ins Land gezogen und ich sitze noch immer an der ßeta6. Durch das Ende von Corona und der epidemischem Lage, dem Anfang der Motorrad Saison und und und schrumpft leider meine Freizeit zusammen, in der ich mich an DiskFix setzen kann. Dazu kam der Sommer, der Garten und Freizeitaktivitäten rufen auch hier die Familie zusammen – Papa wird gebraucht 🙂

Im Grunde zeichnet diese Beta Version „nur“ Arbeiten unter der Motorhaube aus, aber auch die ersten Codeoptimierungen sind schon jetzt erfolgt! Denn um ein Paar Ziele zu erreichen musste die Vorarbeit erledigt werden. Eine Herausforderung war, das das Laufwerk 1571 (im Betrieb am C64) sauber erkannt wird. Das bisherige Modul konnte gerade diesen Laufwerkstyp nicht erkennen, da sich die 1571, als eine 1541 – gegenüber dem C64 präsentiert (mit der bisherigen Erkennung-Routine).

Der nächste große Schritt war, das nun eine Methode genutzt wird um die Laufwerkserkennung beim Laufwerkswechsel entlang der Daisy Chain des IEC Bus, genutzt wird. DiskFix erkennt im Bereich 8-11 nun vorhandene Laufwerke, auch wenn z.B. nur Laufwerk 9 und 11 vorhanden sind. Bisher führte die Abfrage immer zum Absturz des Programm, sobald ein Kanal angesprochen wurde, bei der kein Laufwerk vorhanden war.

Mit der Methodik (siehe Bild 1) prüft DiskFix jetzt vor dem Wechsel des Laufwerk mit + oder -, ob dort überhaupt ein Laufwerk erreichbar ist. Wenn nicht, wird der Kanal übersprungen. Natürlich wird das Laufwerk, dann entsprechend auch richtig erkannt und es gibt kein Timeout bedingten Absturz des C64 😉 Wer das selbst ausprobieren möchte, hier ein kleines Listing meiner Entwicklungsroutine, die dann in abgeänderter Form in DiskFix eingebunden wurde:

Bild 1: Daisy Chain Scan. IEC Bus wird abgefragt und Laufwerke werden ausgelesen.

Auch dieses Modul liegt dem Hauptprogramm im D64 bei. Zeigt aber auch die Herrausforderung ein echtes und virtuelle Laufwerke zu unterscheiden. Laufwerk 10 und 11 sind in diesem Fall virtuelle Laufwerke einer Ultimate1541II+ und Laufwerk 8 und 9 sind echte Laufwerke mit richtigem JiffyDOS ROM. Daher wird das Laufwerk mit der Erkennungsroutine nochmal auf eine andere Art abgetatstet. Wer mag, kann sich das Modul dann auch in Basic anschauen und nach Lust und Laune verändern oder weiter nutzen. Hab nur eine Bitte, wenn es verwendet wird. Nennt bitte die Quelle.

Was wurde in der ßeta 6 umgesetzt?

  • Das Modul Laufwerkserkennung wurde aufgebohrt, es erkennt nun auch das 1571 fehlerfrei.
    Ebenfalls wurde die Erkennungsmethode auf ein Modul reduziert, denn beim Laufwerkswechsel wurde bisher ein eigenes Scan Modul aus 2017 verwendet. Nun gibt es nur noch ein Modul um die erkannte Laufwerksbezeichnung zu ermitteln. Darüber hinaus gibt es nun die Option die Erkennung erneut aus zu führen. Dabei sammelt DiskFix in zwei Durchgängen (A) und (B) die erkannten Werte. Vor der zweiten Erkennung (B) wird das Laufwerk sauber resett’et um auch die erste Meldung im Fehlerkanal aus zu lesen (siehe Bild 1). Auch hier gab es noch Probleme mit der 1581 ohne und mit verbautem JiffyDOS sowie der Zuweisung zur DC Variable. Die Funktionen und Möglichkeiten des Laufwerk werden an Variable DC übergeben. Sollte danach bei Euch noch immer „Laufwerk nicht erkannt“ stehen – dann bitte schickt mir den Screenshot. Vielen Dank!
  • JiffyDOS Erkennung im C=64 und in den Laufwerken
    Die Laufwerkserkennungsmethode hat bisher wunderbar bei Laufwerken mit verbauten JiffyDOS funktioniert – jetzt auch mit dem Laufwerk 1571.
    Wie ich das JiffyDOS im C64 erkennen konnte, war mir bisher nicht so klar. Das wurde nun auch gelöst. Erschreckend einfach wird das mittels PEEK ausgelesen. Auch mal schön, wenn es einfach geht.
    Die Variablen JD und JC übergeben die Erkennung des Laufwerk (=JD) und des C64 (=JC) ob JiffyDOS verbaut wurde. Das wirkt sich dann auf die Optionen und Funktionen im “Multiformat Modul“. Dann werde im Code direkte JiffyDOS Kommandos benutzt!
  • Das Modul „m“ (=Modus) der 1571 wurde im Menü „f1“ (=Directory Commander) eingefügt.
    Damit kann man vom Betriebsmodus DOS 2.6 in DOS 3.0 umschalten. Damit ist es nun möglich die in das 1571 eingelegte Diskette einseitig (664 Blocks) oder doppelseitig (1360 Blocks) zu formatieren.
    Die Diskette muss also nicht „umgedreht“ werden um Sie voll zu beschreiben. Beim betreiben des Laufwerk an einem C64 „vergisst“ die 1571 diese Einstellung beim Laufwerks Reset oder neu einschalten des Laufwerk oder des C64.
    Auch hier gab es noch Probleme mit der Erkennung der Laufwerke und wann die “m“ Taste gedrückt werden kann. Natürlich wirkt sich das auch auf den Funktionsumfang im “Multiformat Modul“ aus.
    Beim beenden von DiskFix behält die 1571 Ihren Betriebszustand bei (DOS 2.6 oder DOS 3.0).
  • Straffen des Code – Part 1
    Im Code waren noch viele Zeilen oder ganze Routinen aus kommentiert. Diese Zeilen brachten 6 Blocks weniger Coder auf die Waage, leider wurden diese 6 Blocks durch die Erweiterung der beiden oben genannten Module wieder „konsumiert“ 😉
    Eingefügte REM Zeilen auf die mit Goto oder Gosub gesprungen wird – wurden ebenfalls entfernt.
    Im Zweiten und vermutlich Dritten Teil, wird der Programmablauf im ganzen nochmal betrachtet und bewertet, kann noch mehr zusammengefasst werden, oder sind Abfragen eleganter zu lösen? Immerhin sind teile des Programm aus dem Jahr 1986 oder 2017 und in meinen damaligen BASIC Kenntnissen ensprechend.
  • Das Titelbild wurde angepasst (für die Digital Talk #112)
    Im Oktober 2022 erscheint die DT#112 und eine DiskFix Version wird mit drauf sein. Ich freue mich total über die Möglichkeit auch eine kleine Story und eine ßeta Version dort bei zu steuern zu können! Bin gespannt, ob und wie es ankommt. Auch gerne hier – gerne Feedback 🙂
  • Umbau des Formatierungs Modul (1571 Modus Wechsel / JiffyDOS Integration)
    Jetzt ist es dank der Vorarbeit möglich, JiffyDOS und auch eine 1571 sicher zu erkennen. Somit kann mit dem Modul nun – mit oder ohne JiffyDOS formatiert werden und bei der Erkennung einer 1571 die eingelegte Diskette einseitig- oder doppelseitig zu formatiert werden. Ihr ahnt sicher wieviele Kombinationen das bei allen möglichen Laufwerken sind 😉 Nach dem Formatieren erfolgt eine Prüfung (=Verify) ob die Formatierung korrekt durchgeführt wurde, oder ob es zu einem Fehler kam. Der Fehlerkanal wird ausgelesen und angezeigt. Wenn jetzt “nochmal“ ausgewählt wird, werden alle Einstellungen übernommen, bis auf die ID, die wird eines hochgezählt und die neu eingelegt Diskette wird formatiert. So kann man ein 10 Pack Disketten bequem durch formatieren.
  • Neuer Optionspunkt “D“ im Hauptmenü eingefügt
    Mit “J“ und “D“ werden externe Programme aufgerufen. Vor dem Ausführen kann der Anwender wieder zurück zum Hauptmenü springen und bekommt in dem gesonderten Dialog auch noch Informationen zu dem Programm, welches aufgerufen wird. „J“ ruft das Justage und Speed Test Programm aus der Compute! Gazette auf und mit “D“ wird das Programm DraCopy aufgerufen in der Version 1.1e welches auch Unterstützung für die 1581 integriert hat.
  • Testzyklus aller Ultimate 1541 II+ virtuelle Laufwerkstypen
    Das mit und ohne JiffyDOS Kernal um die implementierten Funktion ab zu gleichen. Das kostete tatsächlich am meisten Zeit, denn hierbei habe ich wieder Bugs gefunden, die ich direkt behoben habe. War doch nicht so einfach die Variable DC auf zu bohren … Egal, geschafft!
  • D64 Image und Tools zusammenstellen
    Das D64 Image in dem alle Module in Basic einzeln vorhanden sind, sowie weitere Tools und natürlich das Justage Programm sowie DraCopy wurde nun endlich zusammen gestellt. Auch hier bin ich über eine Rückmeldung dankbar, sollte ihr ein Tool vermissen, das mit auf die Disk sollte. Wer die D64 auf eine echte Diskette kopiert wird sich ggf. über die Autoboot Funktion bei der Benutzung mit einem C128 freuen 🙂

Was konnte bisher aus ßeta5 nicht umgesetzt werden?

Schauen wir uns doch nochmal kurz an, was umgesetzt werden sollte:

  • Neu schreiben des Modul „File Copy“,
    aktivieren im Menü „f1 – Directory Commander“ und das lesen und schreiben von einer Diskette – auf eine Diskette zu kopieren (mit Diskettenwechsel von Laufwerk 8 auf Laufwerk 8). Dabei wird natürlich JiffyDOS mit eingebunden – wenn die benutzte Hardware das kann 🙂
  • Für den Laufwerkstyp CBM 1581,
    wird das Modul „UnScratch“ und „Header Rename“ nochmal überprüft. Ich werde es 100% kompatibel aufbauen.
  • Das Modul „Drucken“ muss erstellt werden
    Es wird dazu verwendet das Directory, den BAM oder die Übersicht der BAD BLOCKS auf einen virtuellen und echten Drucker (Star NC-10c kompatibel) zu drucken.
  • Das Multiformatmodul mit direkten JiffyDOS Kommandos im Code
    Die JiffyDOS Kommandos und das Wechselspiel der verschiedenen Laufwerke muss im Multifomatmodul noch abschließend umgesetzt und getestet werden. Gerade die JiffyDOS Kommandos, die per Basic aufgerufen werden können, wenn im C64 JiffyDOS verbaut ist, machen mir Probleme, denn wirklich viel an Dokumentation – ist darüber nicht mehr zu finden.

Die Liste wird also immer kürzer, aber noch ist es nicht geschafft, alles ab zu arbeiten …

Was ist sonst noch passiert?

Ab dieser Version wird DiskFix in einem D64 Image bereitgestellt und nicht mehr als Einzelprogramm. Es befinden sich dort weitere Tools für 1541, 1571 und 1581 Laufwerke drauf. Ich glaube, das macht den Umgang einfacher und neben dem Speed/Alignment und DraCopy, welche aus dem Programm gestartet werden, war halt noch Platz frei 😉

22.09.2022 // Nach einer langen Pause in der Weiterentwicklung, bin ich gestern wirklich sehr weit gekommen. Reinlesen in den Code ging schneller als erwartet 🙂 Da sich die Erkennung der Laufwerke und der Zustände von JiffyDOS geändert hat (Variable DC) musste ich gestern nochmal mit allen mir zur Verfügung stehenden Laufwerken (1541, 1541-II, 1571 und 1581 mit und ohne JiffyDOS und den gleichen virtuellen Laufwerken über ein U1541II+ sowie Kung-Fu Flash, EasyFlash und SD2IEC) alle Funktionen im Programm erneut prüfen. Diverse Bugs musste ich entfernen und die Laufwerke werden richtig erkannt und der entsprechende DC-Status wird richtig gesetzt.
Einzig die Multiformat Routine, die 1541/1581 und 1571 (hier Doppelseitige Formatierung) dann mit JiffyDOS im C64 und (wenn vorhanden: JiffyDOS) in den Laufwerken abprüft – da hänge ich derzeit …

Mit dem KungFu Flash und dem MiniFlash habe ich weitere Tests durchgeführt und konnte keinen Absturz provozieren. Mit diesen Modulen kann DiskFix problemlos direkt nach einem Reset / dem Anschalten ausgeführt werden. Jedoch möchte ich hier noch eine CRT Version basteln, in der das Speed/Alignment aus dem Compute! Magazin, direkt dabei ist.

Zum Thema Handbuch oder Anleitung, überlege ich gerade eine Version im StarTexter oder GeOS-Write Format mit auf das D64 Image zu legen – das wär doch witzig – oder?

Download Link

Hier der Download Link zur ßeta 6 Version. Es kommt in einem D64 Image: klick mich für Download
Würde mich wie immer über Feedback und Rückmeldungen zu Anzeige oder Programmfehlern freuen.

Wichtig: Da der MOS Compiler 2 derzeit kein JiffyDOS versteht und beim Kompilieren Fehlerzeilen auswirft, wurden alle speziellen JiffyDOS Funktionen auskommentiert. Bedeutet – bei Euch verbautes JiffyDOS wird erkannt – es passiert dann jedoch nix. Würde mich freuen, wenn der MOS Compiler solche Zeilen einfach ignoriert – nur ob das möglich ist … Ich weiss es nicht …

JiffyDOS Fehler beim Kompilieren in Zeile 3250

Nachdem ich mich gestern nochmal mit EgonOlsen71 aus dem Forum64 ausgetauscht hatte, habe ich bemerkt, das ich es mir unnötig kompliziert gemacht habe. JiffyDOS muss nicht dediziert über die Befehle aufgerufen werden, damit es die Befehle beschleunigt. Naja, aber das kann ich zur ßeta7 dann korrigieren 🙂

%d