DiskFix – ßeta6

Oh ha, 8 Wochen sind ins Land gezogen und ich sitze noch immer an der ßeta6. Durch das Ende von Corona und der epidemischem Lage, schrumpft leider meine Freizeit zusammen, in der ich mich an DiskFix setzen kann. Dazu kommt der Sommer, der Garten und Freizeitaktivitäten rufen 🙂 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 8 und 11 vorhanden sind. Bisher führte dies 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, 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 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 (A) und (B) die erkannten Werte. Bei der zweiten Erkennung wird das Laufwerk sauber resettet um auch die erste Meldung im Fehlerkanal aus zu lesen. Auch hier gab es noch Probleme mit der 1581 und oder verbautem JiffyDOS und der Zuweisung zur DC Variable, die Funktionen und Möglichkeiten des Laufwerke übergibt. 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“.
  • 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. Beim betreiben des Laufwerk an einem C64 „vergisst“ die 1571 diese Einstellung beim Laufwerks Reset oder neu einschalten. 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.
  • 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“ 😉 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 ja – ein wenig besser bin ich in der Zeit in Basic geworden 😉
  • Das Titelbild wurde nochmal angepasst
    Auch um eine Version für die DIGITAL TALK #112 zu erstellen. Wer möchte kann sich also auf dem Diskmagazin eine Version genauer anschauen 🙂 Freue mich total, das ich die Gelegenheit hatte eine kleine Story und eine ßeta Version dort bei zu steuern … oder wird es die ßeta6 ?
  • 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.

Was konnte bisher aus ßeta5 nicht umgesetzt werden?

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

  • Testzyklus alles Ultimate 1541 II+ virtuelle Laufwerkstypen und mit den implementierten Funktion abgeglichen.
  • 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 🙂
  • 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.
  • 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, muss ich noch herrausfinden, 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 😉

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.

Download Link

… Der Link zur D64 folgt, sobald das Multi-Format Modul fertig getestet wurde …

%d Bloggern gefällt das: