Hypra-Load
Kaffeepause! Dieses Wort kommt wohl jedem Commodore-64-Besitzer in den Sinn, der ein längeres Programm von der Diskette laden möchte. Es geht aber fünfmal schneller. Alles, was Sie benötigen, ist das Programm »Hypra-Load«.
Teilweiser Nachdruck aus 64'er Sonderheft 6/85, S. 10 (nur der Teil über Hypra-Load 2.1, ohne »Hypra-Perfekt«).
Daß die Floppy 1541 nicht gerade die schnellste ist, ist wohl allgemein bekannt. Zumindest ein Vorgang läßt sich mit relativ geringem Aufwand stark beschleunigen: Das Laden von Programmen.
Das Funktionsprinzip von Hypra-Load sieht folgendermaßen aus. Im Computer wie auch im Floppy-Laufwerk werden neue Laderoutinen installiert, die neue Busroutinen enthalten. Mit diesen neuen Busroutinen wird die Datenübertragung um den Faktor 8 bis 10 beschleunigt, so daß die Ladegeschwindigkeit auf das softwaremäßig erreichbare Maximum gebracht wird.
Eine Software-Lösung hat allerdings zwei entscheidende Nachteile: Einerseits muß vor dem schnellen Laden die neue LOAD-Routine in den Speicher gebracht werden, andererseits funktionieren manche Originalprogramme mit Kopierschutz nicht mehr. Diese Nachteile wurden bei der hier vorgestellten Version so gut wie möglich umgangen.
»Hypra-Load 2.1« ist eine besonders komfortable Hypra-Load-Version mit integriertem Auto-Starter und Auto-Lader. Sie wurde von den Autoren des original »Hypra-Load« (aus der 64'er-Ausgabe 10/84) völlig neu geschrieben.
Um Hypra-Load beim späteren Betrieb möglichst komfortabel zu halten, ist die Eintipparbeit etwas komplizierter. Sie benötigen als allererstes eine leere Diskette, die Sie am besten formatieren. Nun tippen Sie das Listing 1 mit dem MSE ab und speichern es genau auf dieser leeren Diskette. Sie sollten keinesfalls probieren, auf eine Diskette zu speichern, auf der schon Programme stehen, weil diese beim nächsten Schritt unrettbar verloren gehen!
Programme schneller laden
Nun tippen Sie das kurze Listing 2 ab. Legen Sie die Diskette, auf der sich das gespeicherte MSE-Listing befindet, ein und starten Sie das Basic-Programm. Nach wenigen Sekunden meldet sich der Computer mit READY. Nun ist Ihre Hypra-Load-Version fertig. Um sie auf andere Disketten zu überspielen, können Sie jedes beliebige Kopierprogramm für Einzelfiles verwenden. Die Disketten, auf die Hypra-Load dann kopiert werden soll, dürfen ruhig schon Programme enthalten, es müssen aber insgesamt fünf Blöcke auf der Diskette frei sein, damit noch Platz für Hypra-Load ist.
Wie arbeitet man nun mit Hypra-Load? Es gibt zwei Betriebsarten: In der normalen Betriebsart lädt man Hypra-Load mit LOAD":*",8,1. Daraus folgt, daß es das erste Programm auf der Diskette sein muß! Hypra-Load installiert sich dann vollautomatisch, ohne daß RUN eingetippt werden muß, und meldet sich mit den Namen der Autoren. Ab sofort wird von Diskette fünfmal schneller geladen. Zusätzlich sind als Standardwerte für den LOAD-Befehl »,8,1« schon fest vorgegeben. »LOAD"name"« lädt also immer von Diskette.
Bei einem Reset schaltet sich Hypra-Load ab, ebenso wenn wichtige Speicherbereiche überschrieben werden und somit ein Systemabsturz provoziert wird.
Viel interessanter und komfortabler, Hypra-Load zu nutzen, ist allerdings die zweite Methode. Wenn Hypra-Load sich zusammen mit anderen Programmen auf einer Diskette befindet, genügt der Befehl »LOAD"↑*name",8,1«, um mehrere Vorgänge gleichzeitig in Gang zu setzen: Hypra-Load wird geladen und gestartet, danach wird vollautomatisch das Programm mit dem Namen »name« schnell nachgeladen und ebenfalls gestartet. Voraussetzung dabei ist, daß die Hypra-Load-Version auf der Diskette genau mit dem im MSE-Listing angegebenen Namen (»↑HYPRA-LOAD«) gespeichert ist.
Einige Anmerkungen zum Auto-Lader: Nach der Installation von Hypra-Load wird überprüft, ob der aktuelle Filename mit einem "↑" (Pfeil nach oben) beginnt. Dann werden die ersten beiden Buchstaben vom Filenamen abgetrennt und das gewünschte Programm nachgeladen. Nach dem Laden desaktiviert sich Hypra-Load sofort und startet das geladene Programm durch Simulation des RUN-Befehls. Mehrteilige Programme laufen also ab dem zweiten Teil in der normalen Ladegeschwindigkeit ab. Für die meisten Anwendungsfälle ist diese Lösung allerdings vollkommen befriedigend.
Diese Hypra-Load-Version läuft unserer Erfahrung nach sowohl auf C 64- wie auch SX 64-Computern und dem C 128 im 64er-Modus. Als Laufwerke sind die 1541 und die 1571 von Commodore verwendbar.
Der Bildschirm bleibt während des Ladevorgangs ausgeschaltet, da sonst der VIC-Chip die schnellen Bus-Routinen aus dem Takt bringen würde. Das Blinken der roten Laufwerks-LED ist völlig normal, es zeigt jeweils einen übertragenen Programmblock an. Damit läßt sich optisch die Arbeit von Hypra-Load verfolgen.
Weitere, am seriellen Bus angeschlossene Geräte dürften die Übertragung nicht stören. Solange Hypra-Load aktiviert ist, führen Kassetten-Zugriffe zum System-Absturz!
Soll Hypra-Load abgeschaltet werden, genügt die Befehlsfolge »POKE 1,55«.
Der VERIFY-Befehl funktioniert nicht bei aktiviertem Hypra-Load.
Für diejenigen, die sich für die Programmierung des Autostarts von Hypra-Load interessieren: Er wurde durch Verbiegen des Stop-Vektors realisiert.
(Karsten Schramm/Boris Schneider/og)PROGRAMM : ^ HYPRA-LOAD ^ 02ED 07AA ----------------------------------- 02ED : A9 08 85 AF A9 00 85 AE 00 02F5 : A9 6A 8D 2C 03 A9 0B 8D 81 02FD : 2D 03 A9 ED 8D 28 03 A9 4D 0305 : F6 8D 29 03 60 86 AE 00 62 030D : 00 00 00 4C 48 B2 00 31 13 0315 : EA 66 FE 47 FE 4A F3 91 10 031D : F2 0E F2 50 F2 33 F3 57 24 0325 : F1 CA F1 ED 02 A9 BB A2 57 032D : EE 85 A7 86 A8 A9 00 A2 B6 0335 : 03 85 A9 86 AA A9 08 20 8E 033D : 0C ED A9 6F 20 B9 ED A9 73 0345 : 4D 20 DD ED A9 2D 20 DD 18 034D : ED A9 57 20 DD ED A0 00 B8 0355 : A5 A9 20 DD ED A5 AA 20 8A 035D : DD ED A9 1D 20 DD ED B1 4B 0365 : A7 20 DD ED C8 C0 1D 90 79 036D : F6 20 FE ED 18 A5 A7 69 11 0375 : 1D 85 A7 90 03 E6 A8 18 8B 037D : A5 A9 69 1D 85 A9 90 02 E1 0385 : E6 AA A5 A9 C9 D0 D0 AD 21 038D : A9 08 20 0C ED A9 6F 20 EE 0395 : B9 ED A9 4D 20 DD ED A9 55 039D : 2D 20 DD ED A9 45 20 DD 10 03A5 : ED A9 01 20 DD ED A9 04 A7 03AD : 20 DD ED 20 FB ED 20 B3 52 03B5 : EE 20 B3 EE 78 A9 0B 8D 9A 03BD : 11 D0 A9 00 85 BB A9 FE 7C 03C5 : 85 BC 20 39 F8 C9 FF F0 97 03CD : 61 20 39 F8 85 B7 20 39 B5 03D5 : F8 A8 A5 B7 D0 03 88 84 D2 03DD : BC A5 BB D0 0A C6 BC C6 CC 03E5 : BC 20 39 F8 20 39 F8 A0 10 03ED : 00 20 39 F8 91 AE C8 C4 A6 03F5 : BC D0 F6 18 A5 BC 65 AE 0D 03FD : 85 AE 90 02 E6 AF E6 BB 3D 0405 : A5 B7 D0 BA C6 BB D0 04 A7 040D : E6 BC E6 BC A5 BC C9 FE 08 0415 : F0 08 20 39 F8 E6 BC 18 22 041D : 90 F2 A9 00 2C A9 1D 85 20 0425 : 90 4C 85 F8 A5 90 C9 01 64 042D : 48 08 98 A6 AE A4 AF 4C DC 0435 : 61 00 A9 23 8D 00 DD 2C 0E 043D : 00 DD 50 FB A9 03 8D 00 A8 0445 : DD A2 07 CA D0 FD AD 00 42 044D : DD 2A 2A 66 B0 6A 66 B0 F0 0455 : EA EA AD 00 DD 2A 2A 66 C4 045D : B0 6A 66 B0 EA EA AD 00 AF 0465 : DD 2A 2A 66 B0 6A 66 B0 08 046D : EA EA AD 00 DD 2A 2A 66 DC 0475 : B0 6A 66 B0 A5 B0 49 FF 0F 047D : A2 03 8E 00 DD 60 68 A8 18 0485 : 68 AA 48 98 48 E0 E0 90 98 048D : 0D A9 00 A8 59 00 A0 C8 2E 0495 : D0 FA C9 80 D0 10 A9 00 99 049D : A8 59 BB EE C8 D0 FA C9 51 04A5 : 70 D0 03 A0 35 2C A0 37 F8 04AD : A9 85 8D 61 00 A9 01 8D 15 04B5 : 62 00 A9 28 8D 63 00 A9 CE 04BD : 68 8D 64 00 A9 60 8D 65 A4 04C5 : 00 A9 1B 8D 11 D0 4C 2B 31 04CD : F8 A5 00 29 06 C9 02 F0 56 04D5 : 03 4C 9E FD EA A9 05 85 81 04DD : 09 A2 5A 86 4B A2 00 A9 BC 04E5 : 52 85 24 20 56 F5 50 FE 5B 04ED : B8 AD 01 1C C5 24 F0 09 93 04F5 : C6 4B D0 EF A9 0A 4C 69 82 04FD : F9 50 FE B8 AD 01 1C 95 73 0505 : 25 E8 E0 07 D0 F3 20 97 14 050D : F4 A5 16 45 17 45 18 45 89 0515 : 19 45 1A F0 07 C6 09 D0 E2 051D : C0 4C 1E F4 A5 18 C5 06 68 0525 : F0 03 4C 0B F4 85 22 A9 63 052D : 06 85 31 4C EB 03 A5 12 5D 0535 : A6 13 85 16 86 17 A5 06 4D 053D : 85 18 A5 07 85 19 A9 00 E0 0545 : 45 16 45 17 45 18 45 19 26 054D : 85 1A 20 34 F9 A2 5A 20 CC 0555 : 56 F5 A0 00 50 FE B8 AD 09 055D : 01 1C D9 24 00 F0 06 CA 9C 0565 : D0 ED 4C 51 F5 C8 C0 08 22 056D : D0 EA 20 56 F5 50 FE B8 D4 0575 : AD 01 1C 91 30 C8 D0 F5 55 057D : A0 BA 50 FE B8 AD 01 1C A3 0585 : 99 00 01 C8 D0 F4 20 E0 6F 058D : F8 A5 38 C5 47 F0 03 4C BF 0595 : F6 F4 20 E9 F5 C5 3A F0 A3 059D : 03 4C 02 F5 A0 00 A9 55 61 05A5 : 20 74 04 B9 00 06 20 74 D1 05AD : 04 C8 D0 F7 AD 00 1C 49 26 05B5 : 08 8D 00 1C AD 00 06 D0 9C 05BD : 03 4C 9E FD C5 18 D0 F9 A2 05C5 : 85 06 AD 01 06 85 07 4C 1A 05CD : 65 03 78 A9 08 8D 00 18 24 05D5 : A5 18 8D 00 06 85 06 A5 DA 05DD : 19 8D 01 06 85 07 A9 04 FD 05E5 : 85 78 A9 E2 20 6B 04 C9 6E 05ED : 02 90 33 A0 00 84 78 A4 68 05F5 : 78 B9 DB FE F0 12 58 20 62 05FD : 76 D6 78 A9 E2 20 6B 04 16 0605 : C9 02 90 1A E6 78 D0 E7 7C 060D : A9 C0 20 6B 04 A9 E2 20 E5 0615 : 6B 04 C9 02 90 08 A9 FF 25 061D : 20 74 04 4C 22 EB AD 00 3A 0625 : 06 F0 F8 C5 18 F0 C4 AD 12 062D : 00 06 85 06 AD 01 06 85 58 0635 : 07 4C 15 04 85 00 58 A5 2D 063D : 00 30 FC 78 60 85 77 A2 F9 0645 : 01 8A 2C 00 18 F0 FB A9 E3 064D : 00 8D 00 18 8A 2C 00 18 51 0655 : D0 FB A2 00 8A 66 77 2A DA 065D : 2A 66 77 2A 2A 8D 00 18 1D 0665 : 8A 66 77 2A 2A 66 77 2A 4E 066D : 2A 8D 00 18 8A 66 77 2A 6F 0675 : 2A 66 77 2A 2A 8D 00 18 35 067D : 8A 66 77 2A 2A 66 77 2A 66 0685 : 2A 8D 00 18 A2 02 CA D0 80 068D : FD A9 08 8D 00 18 60 A0 96 0695 : 00 84 61 A9 A0 85 62 B1 88 069D : 61 91 61 E6 61 D0 F8 E6 4A 06A5 : 62 F0 0C A5 62 C9 C0 D0 50 06AD : EE A9 E0 85 62 D0 E8 A9 FC 06B5 : E5 8D D6 FD A9 4C 8D F9 FD 06BD : F4 A9 2C 8D FA F4 A9 F7 30 06C5 : 8D FB F4 A2 00 BD 00 08 DF 06CD : 9D 2C F7 E8 D0 F7 BD 00 5F 06D5 : 09 9D 2C F8 E8 E0 A4 D0 A1 06DD : F5 A2 00 BD A4 09 9D BB 5C 06E5 : EE E8 D0 F7 BD A4 0A 9D DF 06ED : BB EF E8 E0 C6 D0 F5 A9 14 06F5 : 08 8D DA E1 A9 01 8D DC 49 06FD : E1 A9 35 85 01 A0 00 B1 29 0705 : BB C9 5E F0 59 20 53 E4 08 070D : 20 BF E3 18 20 15 FD A9 FF 0715 : F7 A0 0B 20 1E AB 20 44 6C 071D : A6 4C 9D E3 0D 48 59 50 E6 0725 : 52 41 2D 4C 4F 41 44 20 3D 072D : 56 32 2E 31 20 28 43 29 F1 0735 : 20 31 39 38 35 20 54 52 8E 073D : 49 42 41 52 0D 42 4F 52 07 0745 : 49 53 20 53 43 48 4E 45 E5 074D : 49 44 45 52 2B 4B 41 52 0B 0755 : 53 54 45 4E 20 53 43 48 28 075D : 52 41 4D 4D 0D 00 18 A9 D1 0765 : 02 65 BB 85 BB 90 02 E6 CF 076D : BC C6 B7 C6 B7 EA A2 00 B0 0775 : BD 59 0C 9D C0 02 E8 E0 17 077D : 25 D0 F5 4C C0 02 20 53 54 0785 : E4 20 BF E3 18 20 15 FD B8 078D : 20 44 A6 20 D5 FF A9 37 EF 0795 : 85 01 A5 AE 85 2D A5 AF 92 079D : 85 2E 20 63 A6 20 8E A6 A1 07A5 : 4C AE A7 00 31 C9
10 OPEN 1,8,15 20 OPEN 2,8,2,"#" 30 PRINT#1,"U1 2 0 17 0" 40 PRINT#1,"B-P 2 2" 50 PRINT#2,CHR$(237);CHR$(2); 60 PRINT#1,"U2 2 0 17 0" 70 CLOSE 2,1 READY.