HYPRA-LOAD: Schnelles Laden von Diskette
Spontane Begeisterung und Zustimmung erhielten die beiden Autoren des folgenden Programms. Ein bis zu sechsmal schnelleres Laden von Programmen von der VC 1541 hatte uns bisher noch niemand angeboten. Wir meinen, ein echter Knüller, der es ganz bestimmt verdient, Listing des Monats zu werden.
Bisherige Versuche, die VC 1541 schneller zu machen, scheiterten fast alle. C 64-Besitzer hatten lediglich die Möglichkeit, mittels einer zusätzlichen IEEE-Schnittstelle eine der größeren Floppys (4040, 8250, etc.) anzuschließen. Viele waren der Meinung, daß die serielle Datenübertragung vom C 64 an die VC 1541 schuld an deren Trägheit hatte. Was natürlich nicht ganz stimmen kann. Denn es gibt serielle Schnittstellen, die mehr als 12000 Baud ( = Bit pro Sekunde) übertragen. Somit war klar, daß nicht die serielle Übertragung, sondern eher das DOS (Disk Operating System), die interne Software der Floppy, der große Hemmschuh sein mußte. Und in der Tat, wenn Sie in der Ausgabe 9/84 des 64'er-Magazins auf Seite 10 die Aktuell-Meldung über eine neue Alternativ-Floppy gelesen haben, konnten Sie erfahren, daß lediglich das kompatible DOS die mögliche Geschwindigkeit des TEAC-Laufwerkes stark einschränkte. Und hier setzten die beiden Autoren mit ihrer Arbeit an.
(gk)Zusammenarbeit und Ehrgeiz werden mit 2000 Mark belohnt
Ich, Boris Schneider, wurde am 5.7.66 in Grevenbroich (zirka 20 km südwestlich von Düsseldorf) geboren.
Genau 10 Jahre später erhielt ich meinen ersten Taschenrechner. Um 1978/79 hatte ich meine ersten Kontakte mit einem »richtigen« Computer: einem PET 2001, den mein Vater manchmal mit nach Hause brachte.
1980 erfolgte dann der Umzug nach Bayern; hier besuche ich das Gymnasium Vaterstetten, wo ich unter anderem auch Karsten Schramm kennenlernte, der sich nun ebenfalls kurz vorstellt:
Meine Geschichte begann am 1.3.66 in München.
Ich besuche zur Zeit ebenfalls das Gymnasium Vaterstetten, wo Boris und ich nächstes Jahr das Abitur machen wollen.
Mit 14 Jahren kam ich das erste Mal mit Computern in Kontakt, wobei ich prompt vom »Fieber« angesteckt wurde, so daß meine Eltern ernstlich um meine Zurechnungsfähigkeit besorgt sein mußten.
Meine Krankheit klang zum Glück schon nach einem Jahr ab, doch das Hobby blieb, und so besitze ich seit einem halben Jahr einen C 64, nachdem ich zuvor in der Schule auf CBM-Computern gearbeitet hatte.
Wir (Boris und ich) teilen uns die Leidenschaft, in Maschinensprache zu programmieren und dem Computer die letzten Geheimnisse zu entlocken!
Boris Oliver Schneider, Sudetenstraße 46, 8018 Grafing, Tel. 08092/6872.
Karsten Oliver Schramm, Herzog-Stephan-Weg 33, 8011 Zorneding, Tel. 08106/20252
Warum Zeit verschwenden? Laden Sie Ihre Programme in Zukunft fünfmal schneller.
Schon ganze Scharen von Computerbesitzern werden hilflos gestöhnt haben, als sie wieder einmal eine Kaffeepause einlegen mußten, um das Laden des nächsten Programms von Diskette abzuwarten. War das Programm dann auch noch länger als 150 Blocks, so konnte diese »Zwangssendepause« durchaus länger als 2,5 Minuten werden.
Auch Hardware-Hersteller haben diesen Mangel erkannt und bieten neuerdings immer mehr schnelle Laufwerke als Ersatz für die VC 1541 an.
Halt! Jetzt aber Schluß mit dem dauernden Herziehen über die VC 1541, die nämlich eigentlich gar keine Schuld an den langen Wartezeiten hat; vielmehr kann sie es, was die Geschwindigkeit betrifft, ohne weiteres mit den großen CBM-Floppys aufnehmen, oder anders formuliert, die VC 1541 ist genauso schnell wie zum Beispiel die CBM 2031.
Aber wo liegt denn dann nun der Haken? Das Stichwort lautet: Der serielle Bus, also die Schnittstelle zwischen Floppy und Computer. Diese Verbindung erfordert zwar weniger Materialaufwand als der üblicherweise bei Commodore benutzte IEEE-488-Bus, (der 8-Bit-parallel arbeitet). Der serielle Bus hat aber den Nachteil, daß die Geschwindigkeit bei der Übertragung im Normalbetrieb zirka 5 bis 6mal langsamer ist als beim IEC-Bus, was sich dann auch auf die Ladezeit auswirkt.
Die Hardwarelösung habe ich ja schon erwähnt: Sie erfordert außer einer neuen Floppy, auch noch das IEEE-Bus-Modul, da der C 64 in der Grundversion keine derartige Schnittstelle zu bieten hat. Mitunter ist also diese Lösung sehr teuer und übersteigt die Kaufkraft vieler C 64-Anwender.
Aber zum Glück gibt es noch eine Softwaremöglichkeit, hier effektiv einzugreifen. Das Prinzip ist denkbar einfach. Es beruht auf der Möglichkeit, in die Floppy Maschinenprogramme einzuspeichern und diese dann dort auszuführen.
In unserem Fall werden also modifizierte Busroutinen in der Floppy und im Computer abgelegt, die dann die sonst so langsame Übertragung auf ein Vielfaches steigern.
In Zahlen: Der serielle Bus wird durch diese Routinen weit über 10mal so schnell und das Laden geschieht nun mit der maximalen Floppygeschwindigkeit, die etwa 5 bis 6mal höher ist.
Nun aber zum Programm, damit Sie so schnell wie möglich in den Genuß von HYPRA-LOAD kommen: Wenn Sie den Basic-Lader eintippen, achten Sie bitte besonders sorgfältig auf richtiges Eingeben der Checksummen, da diese zur Fehlerkontrolle bei der Eingabe der DATAs dienen!
Vor dem ersten Startversuch das Programm bitte unbedingt auf Diskette speichern, da es sich bei der Ausführung automatisch überschreibt. Anschließend starten Sie mit RUN. Wurde alles korrekt eingegeben, wird am Basic-Anfang ein Maschinenprogramm generiert und das Basic-Programm gelöscht.
Dieses Maschinenprogramm ist das eigentliche HYPRA-LOAD und kann nun mit »SAVE« abgespeichert werden.
Um den Geschwindigkeitsvorteil auch wirklich nutzen zu können, wird empfohlen, HYPRA-LOAD möglichst auf alle Programmdisketten zu überspielen. Es wurde dazu extra sehr kurz (6 Blocks) gehalten. Müßten Sie nämlich nach jedem Laden zuerst die Diskette wechseln, so wäre die Effektivität von HYPRA-LOAD erheblich vermindert.
Übrigens: Die Einschaltmeldung von HYPRA-LOAD umfaßt auch eine Bytes-free-Meldung, welche jedoch ignoriert werden sollte, da die Zahlenangabe aus programmtechnischen Gründen falsch ist. Dies hat jedoch keinen Einfluß auf die einwandfreie Funktion des Computers!!!
Nun aber zu den besonderen Eigenschaften
- HYPRA-LOAD kopiert nach dem Kaltstart das gesamte Betriebssystem vom ROM ins darunterliegende RAM, jedoch ohne dabei Basic-Speicherplatz zu verbrauchen. Danach werden die einzelnen Programmteile im Betriebssystem verteilt und das Betriebssystem im RAM gestartet.
- Abzulesen ist die Aktivierung von HYPRA-LOAD an der Speicherstelle 1 der Zeropage. Diese enthält normalerweise den Wert 55, was besagt, daß ab $A000 ROM aktiviert ist, welches Basic und das Betriebssystem enthält.
HYPRA-LOAD schaltet den Wert auf 53 um und aktiviert dadurch anstelle von ROM-Bausteinen freien RAM Bereich, in dem nun das Betriebssystem und Basic stehen.
Man kann also ganz einfach HYPRA-LOAD abschalten, durch POKE 1,55 und, sofern nicht zerstört, mit POKE 1,53 wieder einschalten.
- Da HYPRA-LOAD im RAM steht, ergeben sich natürlich einige Probleme. So gibt es viele Programme, die beim Laden den Bereich ab $A000 überschreiben. Würde nach der Rückkehr aus der Laderoutine nun ins RAM ab $A000 gesprungen, so wäre ein »Aufhängen« des Computers fast unvermeidlich.
Gegen solche Programme ist HYPRA-LOAD abgesichert, und es wird nach dem Ladevorgang automatisch ins ROM-Basic zurückgesprungen. Bei mehrteiligen Programmen erkennt man dies daran, daß plötzlich wieder »normal« geladen wird.
Überschreiben Programme jedoch den Bereich ab $E000, so treffen sie früher oder später auf die Laderoutinen und der Computer »stürzt ab«. Bei solchen Programmen hilft nur das vorherige Ausprobieren. Es muß an dieser Stelle erwähnt werden, daß es auch Programme gibt, die ein Abschalten von HYPRA-LOAD erfordern, aber erst nachdem der Ladevorgang abgeschlossen ist. Auch hier hilft zum Erkennen solcher Programme nur das Ausprobieren.
Am besten arbeitet HYPRA-LOAD mit einteiligen Programmen, da es hier nicht vorkommt, daß der Bereich ab $EOOO überschrieben wird (solche Programme müßten nämlich den davorliegenden I/O-Bereich überschreiben) und so das gesamte Programm schnell geladen werden kann!
- Es sollte vielleicht noch einmal erwähnt werden, daß sich HYPRA-LOAD nur auf den LOAD-Befehl beschränkt, andere Diskettenoperationen bleiben davon unberührt.
- Da HYPRA-LOAD im Betriebssystem steht, vernichtet es zwangsläufig andere Routinen, das heißt, vor Kassetten- und RS232-Betrieb muß HYPRA-LOAD abgeschaltet werden.
- SYS 64738 als Reset reaktiviert auch HYPRA-LOAD, sofern es noch nicht zerstört oder ausgeschaltet ist.
- Nach einem Reset durch einen Taster kann HYPRA-LOAD, sofern noch nicht überschrieben, durch
POKE 1,53
wieder eingeschaltet werden. Wird danach jedoch langsam geladen, so ist im Basic-Teil etwas verändert worden, so daß HYPRA-LOAD auf das ROM umgeschaltet hat. - Ein Test hat ergeben, daß HYPRA-LOAD auf dem SX 64 trotz dessen angeblicher »Vollkompatibilität« nicht lauffähig ist.
- Da zusätzliche Peripheriegeräte und auch der Bildschirm den schnellen Busbetrieb stören, müssen diese entfernt, beziehungsweise abgestellt und der Bildschirm ausgeschaltet werden. Ist dies nicht geschehen, so macht HYPRA-LOAD darauf aufmerksam und wartet auf das Nachholen des Versäumten. Anschließend kann durch Drücken der RUN/STOP-Taste mit dem Laden begonnen werden. Es erfolgt keine weitere Kontrolle mehr!
- Betreiben Sie ein Floppy-Laufwerk zum Beispiel unter der Geräteadresse 9, so müssen folgende Änderungen durchgeführt werden:
Die DATAs in den Zeilen 104, 114 und 239; dort müssen die entsprechenden Zahlen (008) auf die neue Geräteadresse umgestellt werden. Natürlich ist auch ein Angleichen der Checksummen erforderlich. Es sind dies die 1., die 2. und die 12. Checksumme.
Übrigens: Für eventuelle Berichte über die Erfahrungen mit HYPRA-LOAD sowie Verbesserungsvorschläge wäre ich sehr dankbar.
Und nun viel Spaß mit einer 5 bis 6mal so schnellen VC 1541.
(K. Schramm/B. Schneider/gk)