Erinnert ihr euch? Beim letzten Mal haben wir uns etwas mit dem SD2IEC beschäftigt. Insgesamt gesehen ein echt nettes Teil, welches aber durch seine langen Ladezeiten negativ aufgefallen ist. Heute möchten auch für dieses Problem eine Lösung finden! 🙂
Generell würde ich gerne das Thema „Ladezeiten“ nochmal etwas behandeln. Bisher habe ich immer etwas von „wenigen Minuten“ oder „einige Sekunden“ gesagt – nicht gerade sehr konkret, Herr retrololo! 😀
Also gut, fangen wir von vorne an. Beim letzten Mal habe ich ja als letzte Amtshandlung „Tetris“ gestartet, um eine Runde zu spielen und etwas zu entspannen. Ich denke das Programm eignet sich mit seinen 96 Blöcken (entspricht 23,7kByte) perfekt als Testobjekt! 🙂
Natürlich habe ich mit der vermeintlich langsamsten Übertragungsart (Laden via Datassette) begonnen. Mit „WAV-PRG“ habe ich die „tetris.prg“ in ein Audiosignal konvertiert. Anhand der Länge der Audiodatei sieht man, wie lange es dauern würde das Spiel über eine Datassette (oder alternativ MP32C64) auf den C64 zu laden. Im normalen „Commodore“-Kassetten-Format hat die WAV-Datei knapp 8 Minuten. Mit einem vorgeschalteten Schnelllader (im Turbo Tape 64-Format) sind es nur noch 72 Sekunden – gar nicht mal so übel! 🙂
Ok, und wie sieht es aus, wenn wir Tetris von einer Diskette laden? Um das zu testen, habe ich die „tetris.prg“ mit Hilfe des XUM1541 auf die „retrololo“-Diskette aus Artikel 147 überspielt.
Anschließend habe ich den Ladevorgang mit Hilfe des Befehls „LOAD“TETRIS“,8,1“ gestartet. Insgesamt hat es 65 Sekunden gedauert das Spiel zu laden – nicht gerade beeindruckend! 😀
Fun Fact: Technisch gesehen liegt der langsame Ladevorgang daran, dass die seriellen Originalroutinen des C64 bzw. der 1541 nicht sonderlich effizient programmiert wurden. Es gibt zahlreiche Ecken, an denen nicht optimierte Algorithmen zum Einsatz kommen, so wird u.a. die Datenflusskontrolle per Software bearbeitet (ursprünglich sollte dafür das Hardware-Shiftregister der VIA 6522 in der 1541 genommen werden, wegen eines Hardwarefehlers wurde das jedoch kurzfristig geändert) und pro Schritt nur ein Bit übertragen.
Und wie sieht es aus, wenn wir das Spiel via SD2IEC laden? Das haben wir ja bereits beim letzten Mal getestet! Der reine Ladevorgang ist in 48 Sekunden abgeschlossen, allerdings muss man bedenken, dass man ja erst den Filebrowser laden und sich anschließend durch das Menü bis hin zur tetris.prg-Datei durchhangeln muss (das kostet selbst geübten Benutzern bestimmt 15-20 Sekunden). Trotzdem ist der reine Ladevorgang auch schon etwas schneller als über eine echte Diskette – immerhin!
Doch das ist natürlich noch nicht das Ende der Fahnenstange, denn analog den TurboTape-Programmen für Kassetten gibt es auch für Disketten sog. „Schnelllader“-Programme, mit welchen sich der Ladevorgang stark beschleunigen lässt! Eines dieser Programme nennt sich „Hypra-Load“. Woher ich das weiß? Nun, ich habe den Namen auf einer der alten Disketten aus Artikel 151 gefunden! 😀
Cool, vielleicht können wir die Software sogar direkt von der alten Diskette laden? Das Tool wird wie eine normale Programmdatei mit einem LOAD-Befehl (samt anschließendem RUN) gestartet. Sobald das Programm geladen wurde, muss ein weiterer LOAD-Befehl abgesetzt werden, mit welchem wir den Schnellladevorgang von Tetris anstoßen können.
Tatsächlich ist der reine Ladevorgang für Tetris jetzt nur noch 13 Sekunden – sehr beeindruckend! Allerdings muss man die sechs Sekunden, welche für den Ladevorgang von Hypra-Load selbst drauf gehen, auch mit einrechnen. Ein weiterer Nachteil ist, dass man (ähnlich wie beim SD2IEC) letztendlich zwei Programme laden und somit mehr Befehle eintippen muss. Dabei geht die gewonnene Zeit dann fast wieder verloren! 😀
Da sich Tetris auf einer anderen Diskette befindet, musste ich zwischen den Ladevorgängen auch noch die Diskette wechseln. Um genau das in Zukunft nicht mehr tun zu müssen, habe ich mir mit einem weiteren Tool namens „Filecopy“, welches ich auf einer anderen alten Diskette gefunden habe, Hypra-Load auf die retrololo-Diskette kopiert! 🙂
Fun Fact: Bei der Gelegenheit habe ich mir auch das Filecopy-Tool selbst mit auf die retrololo-Diskette kopiert. Zugegeben, das alles hätte man über „moderne Hilfsmittel“ wie z.B. das XUM1541 wesentlich schneller und komfortabler machen können, aber ich habe mir gedacht ich probiere es mal mit alten Tools direkt auf dem C64 – wenn schon retro, dann richtig! 🙂
An sich ist die fünffache Reduzierung der Ladezeit mit Hypra-Load schon eine feine Sache, aber das Eintippen mehrerer Befehle (2x LOAD und 2x RUN) geht mir echt auf den Zeiger. Nach einer Recherche im Internet habe ich herausgefunden, dass es eine neuere Version des Tools gibt, welche genau diesem Problem entgegenwirkt!
Leider liegt der Download nur als D64-Image vor und so musste ich mir mit Hilfe einer Software namens „D64 Editor“ erst die einzelne PRG-Datei extrahieren, bevor ich sie auf eine Diskette überspielen konnte. Oh Mann, immer diese ungeplanten Arbeitsschritte! 😀
Die neue Version hat es in sich! Mit dem Befehl „LOAD“↑*TETRIS“,8,1“ wird in einem Aufwasch Hypra-Load und anschließend das nach dem „*“ angegebene Programm (in unserem Fall Tetris) geladen sowie jeweils ein RUN-Command automatisch ausgeführt. Der kombinierte Ladevorgang dauert dementsprechend auch nur 17 Sekunden. Anstatt vier Befehlen wird jetzt nur noch einer benötigt und es lädt schnell – sehr geil! 🙂
Fun Fact: Die einzige Voraussetzung damit das klappt ist, dass die PRG-Datei von Hypra-Load mit einem „↑“ beginnt.
Schon sehr praktisch das alles. Leider bringt Hypra-Load nur etwas für „echte“ Disketten, denn es ist nicht mit einem Laufwerksemulator (wie z.B. dem SD2IEC) kompatibel – schade!
Doch nicht verzagen, denn es gibt tatsächlich eine noch bessere, bzw. schnellere Möglichkeit um Tetris zu laden! Bisher haben wir uns ja nur Software-Lösungen angesehen, allerdings gibt es aber auch Hardware-Schnellader. Diese werden entweder als Steckmodul an den Expansionsport des Computers gesteckt oder sogar in Form eigener Hardware (Platinen samt ROM-Chips) in den Computer und das Diskettenlaufwerk verbaut. Bekannte Vertreter sind z.B. JiffyDOS, SpeedDOS, EXOS oder Turbo Trans. Hier im Bild sehen wir einen SpeedDOS-Umbau:
Da ich kein Fan davon bin, die originale C64-Hardware (sei es nun der Computer oder das Laufwerk) großartig zu verändern, habe ich mich für eine Steckmodul-Lösung entschieden. Ein sehr bekannter Vertreter dieser Gattung ist die „Final Cartridge“. Neben Schnellladefunktionen bietet sie zahlreiche weitere Möglichkeiten das letzte bisschen Leistung aus dem C64 heraus zu kitzeln! 🙂
Das Modul wird leider schon lange nicht mehr produziert, trotzdem findet man manchmal Angebote auf eBay. Ebenso werden auch heute noch Bausätze von enthusiastischen Fans verkauft. Völlig klar, dass ich sofort zugeschlagen habe, als ein netter Verkäufer einen vollständigen Bausatz für 20€ auf eBay angeboten hat! 😉 Mit dabei war ein Bestückungsplan sowie der Link für die Anleitung als PDF zum Download.
Was den Zusammenbau des Moduls angeht, mussten die üblichen Bauteile verlötet werden. Erst Widerstände und Dioden…
…dann ein paar Kondensatoren, Taster und Jumper…
…und abschließend die IC-Sockel. Letztendlich war die Bestückung der Sockel mit den Chips fast das schwierigste, weil einer der Chips (der EEPROM mit der eigentlichen Software darauf) zwei doch arg verbogene Pins hatte, die ich erst mit einer Zange überreden musste wieder gerade zu werden! 😉
Fertig! 🙂
Fun Fact: Tatsächlich ist die Final Cartridge offiziell lediglich in Version 3 erschienen. Die hier gezeigte Version „III+“ ist ein von Fans erstelltes Update und enthält einige zusätzliche Programme! 🙂
Und wie funktioniert das Teil? Nun, als erstes muss die Final Cartridge in den Expansionsport des C64 eingesteckt werden.
Nach dem Einschalten des Commodore erscheint nicht mehr der BASIC-Prompt, sondern stattdessen der „Desktop“, eine Art grafische Oberfläche für den C64. Es gibt sogar einen Cursor, welcher sich mit der Tastatur, oder alternativ mit dem Joystick steuern lässt.
Über den Menüpunkt „Utilities => Disk“ lässt sich ein eigenes Menü zur Verwaltung des Disketteninhalts aufrufen:
Darin können wir sämtliche Befehle, welche sonst mühsam händisch eingetippt werden müssen, einfach grafisch per „Mausklick“ auswählen.
Über die Auswahl „DIR 1“ wird z.B. das Directory der Diskette gelesen. Klappt prima! 🙂
Um jetzt Tetris zu starten, müssen lediglich der Eintrag „TETRIS“ und die Aktion „RUN“ ausgewählt und mit einem abschließenden Klick auf „DO“ gestartet werden.
WOW – insgesamt hat der eigentliche Ladevorgang nur neun Sekunden benötigt! Das funktioniert, weil die Final Cartridge einen optimierten Lesealgorithmus implementiert. Schade ist nur, dass etwas Zeit für die Menünavigation (Diskmenü öffnen, Software auswählen und starten) draufgeht.
Ok, und wie sieht es mit der Kombination Final Cartrige + SD2IEC aus?
Im Prinzip funktioniert es genauso wie mit einem echten Diskettenlaufwerk, nur dass hier als Zwischenschritt noch der Filebrowser des SD2IEC geladen werden muss.
Zugegeben, das ist etwas aufwändig, aber sobald dieser mal läuft, profitiert er von allen Vorzügen der Final-Cartridge. Da wir nicht von einer echten Diskette sondern von SD-Karte laden, ist der reine Ladevorgang in vier Sekunden beendet – Wahnsinn! 🙂
Da das jetzt alles doch sehr verwirrend war hier nochmal eine kleine Tabelle als Übersicht. Die Ladezeit netto symbolisiert den eigentlichen Ladevorgang (nur für Tetris), mit der Ladezeit brutto habe ich versucht auch die Zeit für die Aktivitäten drum herum (z.B. Menünavigation, eintippen von Befehlen, etc.) mit zu betrachten – die Werte sind allerdings nur realistisch sofern man im Eintippen der Befehle geübt ist! 😀
Fun Fact: Natürlich habe ich der Vollständigkeit halber auch noch die Ladevorgänge über Datassette und MP32C64 ausprobiert. Von der Theorie her müssten sie exakt gleich lang sein. In der Praxis war es nicht so, ich vermute, dass der Motor meiner Datassette etwas langsamer eingestellt ist und dadurch etwas Zeit verliert. 🙂
So, genügend Infos für heute. Natürlich bietet die Final Cartridge noch zahlreiche weitere Funktionen, auf welche ich beim nächsten Mal noch etwas genauer eingehen möchte! 🙂
In diesem Sinne – bis die Tage! 🙂