C 64
Tips & Tricks

Neues vom Hypra-Load: Hypra-Perfekt

Es ist uns schon fast zur lieben Gewohnheit geworden, Ihnen das Hypra-Load in ständig verbesserter Form vorzustellen. Wir hoffen, daß wir die neueste Version nicht zu Unrecht »Hypra-Perfekt« genannt haben.

Hypra-Load ist zweifellos eines der interessantesten Programme, die jemals für den Commodore 64 verfügbar waren. Die zahlreichen Leserzuschriften und Telefonanrufe zu diesem Thema belegen die überwiegend positive Resonanz eines weiten Leserfeldes. Trotzdem muß zugegeben werden, daß auch ein gutes Programm noch verbessert werden kann. Mit Hypra-Perfekt haben wir nun eine Version entwickelt, die Ihnen hoffentlich ebenso gut gefällt wie uns.

Da eine reine Diskettenversion zwar die einfachste, aber leider nicht die kompatibelste Lösung ist, haben wir die Form des Kernal-ROMs gewählt. Das heißt, das Betriebssystem des Computers wird durch Austausch des Kernal-Speicherbausteins verändert. Als neuer Programmträger dient ein 2764-EPROM, dessen Inhalt mit dem nachfolgend abgedruckten Programm erzeugt wird. Wie das vonstatten geht, ist mit wenigen Worten erklärt. Das Betriebssystem (auch Kernal genannt) des Commodore 64 befindet sich im Speicherbereich von 57344 ($E000) bis 65535 ($FFFF). Es hat damit genau die Länge von 8 KByte. Das gesamte Kernal (Assemblerlisting) abzudrucken würde natürlich den Rahmen des Heftes sprengen. Ein kompletter Abdruck ist auch gar nicht notwendig, denn es werden ja nur bestimmte Teile des Betriebssystems verändert.

Das abgedruckte Programm kopiert dazu zunächst in den Speicherbereich 24576 ($6000) bis 49151 ($7FFF). Wer einen anderen Speicherbereich verwenden möchte, muß die Leseschleife in Zeile 30 und den Offset (OF) in Zeile 15 verändern. Soll das Kernal beispielsweise im Speicherbereich ab $5000 stehen, lautet die Zeile 30: 30 FOR I = 5*4096 TO7*4096-1 POKE I, PEEK(I+OF): NEXTI

Der Offset beträgt in diesem Fall 36864. Nach dem Kopieren befindet sich im Speicher ein genaues Abbild des Kernal-ROMs. Der nächste Schritt, der automatisch vom Programm ausgeführt wird, ist das Verändern der einzelnen Speicherstellen. Der gesamte Vorgang läuft automatisch ab, bis unser neues Kernal im Speicher steht. Am besten ist es, den Speicherbereich von $6000 bis $8000 nun mit einem Monitor abzuspeichern. Wer im Besitz eines EPROM-Programmiergerätes ist, sollte nicht lange warten und das neue Kernal auf ein 2764-EPROM brennen.

Bis hierhin war eigentlich alles relativ einfach, jetzt aber kommt die schwierigste Hürde auf dem Weg zum neuen Betriebssystem. Ein Adaptersockel muß eingebaut werden, denn leider sind die Pin-Belegungen des Original-ICs und die des 2764 nicht identisch. Solche Sockel kann man entweder kaufen (beispielsweise Roßmöller MR 2764) oder aber selbst bauen. Bild 1 zeigt, welche Pins des 24poligen Sockels mit denen des 28poligen verbunden werden. Das Ganze sieht nach der Fertigstellung wie ein kleiner Doppeldeckerbus mit überhängendem Dach aus. Im oberen Stockwerk dieses »Busses« nimmt nun der 2764 mit unserem neuen Betriebssystem Platz. Die 24 Pins des unteren Fahrwerks finden im (hoffentlich gesockelten) U4-Steckplatz des Computers ihre Heimat. Das überhängende Dach zeigt, zusammen mit der EPROM-Kerbe, in Richtung des User-Ports.

  • F1 = LOAD”$”,8 ohne Programmverlust
  • F2 = LOAD
  • F3 = LIST
  • F4 = SAVE
  • F5 = RUN
  • F6 = SYS64738
  • F7 = OPEN1,8,15,
  • F8 = CLOSE1
  • SHIFT & RUN/STOP lädt und startet das erste Programm von der Diskette
Bild 1. Die Belegung der Funktionstasten

Sollte sich (was sehr erfreulich wäre) der Computer mit geändertem Farbbild, aber sonst gewohnter Anzeige melden, haben Sie es geschafft. Ihnen steht nun eine recht leistungsfähige Variante des Hypra-Load zur Verfügung. Drucker, Plotter und weitere Laufwerke können jetzt beim Laden eingeschaltet bleiben. Die Funktionstasten sind belegt (Bild 2) und eine etwa sechsfache Ladegeschwindigkeit wird erreicht. Der Directory zerstört ein im Speicher befindliches Programm nicht mehr. Um die Kompatibilität zu fertigen Softwareprodukten so hoch wie möglich zu machen, wurde eine Umschaltautomatik mitprogrammiert. Sie schaltet auf langsame Ladegeschwindigkeit um, wenn ein schnelles Laden nicht möglich ist. Sollte dennoch einmal ein Programm nicht funktionieren, ist noch lange nicht aller Tage Abend. Die Speicherzelle 2, die zum Steuerregister umprogrammiert worden ist, schaltet die einzelnen Funktionen des Hypra-ROMs aus und an. Je nachdem, welcher Wert hier hineingeschrieben wird, schaltet sich eine Funktion nach der anderen aus. Im einzelnen bewirken:

POKE 2,32Funktionstasten abschalten
POKE 2,64Directory wird normal geladen (mit Programmverlust)
POKE 2,128Abschalten des Fast-Load-Modus
POKE 2,0Zurücksetzen in den Einschaltzustand

Natürlich sind auch Kombinationen möglich, beispielsweise:
POKE 2,32 + 64.

Alles in allem müßte das neue Hypra-ROM mit beinahe 99 Prozent aller erhältlichen Programme funktionieren. Was nicht geht, ist der Betrieb eines Datenrecorders; es sei denn, das neue Kernal wird auf einer Umschaltplatine in den Computer gesteckt. Solche Platinen werden von verschiedenen Herstellern angeboten und bieten Platz für zwei oder mehr Betriebssysteme, die über einen Drehschalter anwählbar sind. Prinzipiell genügt es aber, bei Bedarf auf das Original-Kernal zurückzugreifen. Übrigens: Wer sich sein Kernal in einer individuellen Farbkombination brennen möchte, braucht lediglich die Farbwerte in Zeile 50 bis 70 zu ändern. Und nun viel Freude mit »Hypra-Perfekt«.

(Arnd Wängler/Ernst Schöberl/gk)
28poliger Sockel 24poliger Sockel
1,28,27,26 24
2 21
3 1
4 2
5 3
6 4
7 5
8 6
9 7
10 8
11 9
12 10
13 11
14,20 12
15 13
16 14
17 15
18 16
19 17
20,14 12
21 19
22 20
23 18
24 22
25 23
1,28,27,26 24
Pin 1 eines jeden Sockels ist links von der Kerbe, Pin 24 beziehungsweise 28 ist rechts davon.
Bild 2. Das Verbindungsschema für den Adaptersockel
10 poke56,96:poke55,0:clr
15 of=32768
20 print"{clr}{down}{down}{down}kopieren der rom-daten nach $6000":print
30 fori=6*4096to8*4096-1:pokei,peek(i+of):nexti
40 rem einschaltfarben setzen
50 poke58677-of,5: rem zeichen gruen
60 poke60633-of,0: rem rahmen schwarz
70 poke60634-of,0: rem hintergr. schwarz
80 print"lesen der data-zeilen":print:print
100 t=0
110 t=t+1:read a:ifa=0then240
120 read b: rem anzahl der bytes
130 read p1: rem pruefsumme
140 p2=0:print"block ";t;"  ";
150 fori=a-oftoa-of-1+b
160 readd:pokei,d:p2=p2+d
170 nexti
180 ifp2<>p1then210
190 print"   ok"
200 goto110
210 print"pruefsumme falsch: ";p2;" statt ";p1:print
220 geta$:ifa$=""then220
230 goto110
240 print:print"fertig!":end
8000 rem *** block 1: $eb3f-$eb41 ***
8001 data 60223,3,359
8002 data76,32,251
8005 rem *** block 2: $fb20-$fb68 ***
8006 data64288,73,10154
8007 data232,134,198,201,133,144,4,201,141,144,3,76,66,235,157,119,2,72,152
8008 data72,160,0,169,32,37,2,208,13,185,162,251,221,119,2,240,11,200,192
8009 data224,208,243,104,168,104,76,66,235,200,185,162,251,201,133,144,4,201
8010 data141,144,238,236,137,2,176,233,157,119,2,232,134,198,76,79,251
8015 rem *** block 3: $fba0-$fbdf ***
8016 data64416,64,5759
8017 data252,255,133,76,207,34,36,34,44,56,13,137,76,79,65,68,134,76,73,83
8018 data84,13,138,83,65,86,69,135,82,85,78,13,139,83,121,54,52,55,51,56,13
8019 data136,79,208,49,44,56,44,49,53,44,34,140,67,76,79,83,69,49,13,136,255
8020 data255,255
8100 rem *** block 4: $e5ef-$e5f5 ***
8101 data58862,8,1523
8102 data32,235,240,134,198,189,255,240
8105 rem *** block 5: $f0d9-$f0ea ***
8106 data61657,45,5377
8107 data76,207,34,58,42,34,44,56,44,49,58,88,32,8,249,76,40,245,162,0,189
8108 data216,240,32,210,255,232,224,12,208,245,162,6,120,96,234,255,255,255
8109 data13,82,85,78,58,13
8110 rem *** block 6: $f4ad-$f4b7 ***
8111 data62637,11,1586
8112 data201,4,176,7,169,8,133,186,234,234,234
8115 rem *** block 7: $f4f9-$f500 ***
8116 data62713,8,820
8117 data165,2,48,4,76,44,247,234
8120 rem *** block 8: $f5ef-$f5f9 ***
8121 data62959,11,1586
8122 data201,4,176,7,169,8,133,186,234,234,234
8125 rem *** block 9: $f72c-$f7ff ***
8126 data63276,212,31985
8127 data160,0,177,187,201,36,208,63,76,224,251,255,255,255,255,255,255,255
8128 data255,165,186,32,12,237,169,111,32,185,237,169,77,32,221,237,169,45
8129 data32,221,237,169,69,32,221,237,169,69,32,221,237,169,193,32,221,237
8130 data32,254,237,32,239,237,76,21,249,255,255,255,255,255,255,255,255,169
8131 data28,162,249,133,167,134,168,169,0,162,3,133,169,134,170,165,186,32
8132 data12,237,169,111,32,185,237,169,77,32,221,237,169,45,32,221,237,169
8133 data87,32,221,237,160,0,165,169,32,221,237,165,170,32,221,237,169,30
8134 data32,221,237,177,167,32,221,237,200,192,30,144,246,32,254,237,24,165
8135 data167,105,30,133,167,144,3,230,168,24,165,169,166,170,105,30,133,169
8136 data144,2,230,170,224,5,144,173,201,0,144,169,165,186,32,12,237,169,111
8137 data32,185,237,169,77,32,221,237,169,45,32,221,237,169,69,32,221,237
8138 data169,139,32,221,237,169,4,32,221,237,173,0,221
8140 rem *** block 10: $f800-$f8ff ***
8141 data63488,256,38681
8142 data133,171,169,239,45,17,208,141,17,208,32,128,248,32,152,248,32,63
8143 data247,8,72,166,174,164,175,104,40,88,96,32,39,248,201,255,240,248,160
8144 data0,96,169,39,141,0,221,44,0,221,80,251,169,3,141,0,221,162,7,202,208
8145 data253,234,173,0,221,42,42,102,176,106,102,176,234,234,173,0,221,42
8146 data42,102,176,106,102,176,234,234,173,0,221,42,42,102,176,106,102,176
8147 data234,234,173,0,221,42,42,102,176,106,102,176,165,176,73,255,96,234
8148 data96,234,234,234,234,234,234,234,234,234,234,234,234,234,234,234,169
8149 data3,141,0,221,32,251,237,138,162,255,234,234,234,202,208,252,170,96
8150 data234,234,234,234,234,120,169,1,133,167,160,255,32,29,248,192,255,208
8151 data3,76,228,240,32,39,248,133,169,32,39,248,133,168,165,167,240,30,32
8152 data39,248,32,39,248,169,252,234,234,164,169,208,30,198,168,198,168,198
8153 data168,169,254,24,229,168,133,170,76,229,248,165,169,208,8,198,168,169
8154 data0,76,205,248,44,169,254,133,168,160,0,32,39,248,145,174,230,174,208
8155 data2,230,175,198,168,208,241,162,0,134,167,165,169,208,159,198,170
8160 rem *** block 11: $f900-$f9ff ***
8161 data63744,256,30043
8162 data240,6,32,39,248,76,254,248,169,16,13,17,208,141,17,208,165,171,141
8163 data0,221,169,64,133,144,24,96,255,165,0,41,6,201,2,240,3,76,158,253
8164 data234,169,5,133,9,162,90,134,75,162,0,169,82,133,36,32,86,245,80,254
8165 data184,173,1,28,197,36,240,9,198,75,208,239,169,10,76,105,249,80,254
8166 data184,173,1,28,149,37,232,224,7,208,243,32,151,244,165,22,69,23,69
8167 data24,69,25,69,26,240,7,198,9,208,192,76,30,244,165,24,197,6,240,3,76
8168 data11,244,133,34,169,6,133,49,76,92,4,165,18,166,19,133,22,134,23,165
8169 data6,133,24,165,7,133,25,169,0,69,22,69,23,69,24,69,25,133,26,32,52
8170 data249,162,90,32,86,245,160,0,80,254,184,173,1,28,217,36,0,240,6,202
8171 data208,237,76,81,245,200,192,8,208,234,32,86,245,80,254,184,173,1,28
8172 data145,48,200,208,245,160,186,80,254,184,173,1,28,153,0,1,200,208,244
8173 data32,224,248,165,56,197,71,240,3,76,246,244,32,233,245,197,58,240,3
8174 data76,2,245,160,0,169,85,32,232,3,185,0,6,32,232,3,200,208,247,240
8180 rem *** block 12: $fa00-$faff ***
8181 data64000,256,29911
8182 data111,234,234,234,133,119,162,1,138,44,0,24,240,251,169,0,141,0,24
8183 data138,44,0,24,208,251,162,0,138,102,119,42,42,102,119,42,42,141,0,24
8184 data138,102,119,42,42,102,119,42,42,141,0,24,138,102,119,42,42,102,119
8185 data42,42,141,0,24,138,102,119,42,42,102,119,42,42,141,0,24,162,2,202
8186 data208,253,169,8,141,0,24,96,234,169,8,141,0,24,96,234,234,234,234,234
8187 data234,234,234,234,234,234,234,234,234,234,234,234,234,234,173,0,28
8188 data9,8,141,0,28,173,0,6,208,3,76,158,253,197,24,208,249,133,6,173,1
8189 data6,133,7,76,101,3,234,234,234,234,234,234,234,234,234,234,234,234
8190 data234,234,96,96,133,0,88,165,0,48,252,120,96,120,169,8,141,0,24,234
8191 data165,24,141,0,6,133,6,165,25,141,1,6,133,7,169,4,133,120,169,226,32
8192 data130,4,201,2,144,51,160,0,132,120,164,120,185,219,254,240,18,88,32
8193 data118,214,120,169,226,32,130,4,201,2,144,26,230,120,208,231,169,192
8194 data32,130,4,169,226,32,130,4,201,2,144,8,169,255,32,232,3,76,34,235
8195 data173,0,6,240
8200 rem *** block 13: $fb00-$fb1f ***
8201 data64256,32,4506
8202 data248,197,24,240,196,173,0,6,133,6,173,1,6,133,7,76,160,4,234,234,234
8203 data234,160,0,185,25,244,153,255,255,255,255
8210 rem *** block 14: $fbe0-$fc3f ***
8211 data64480,96,12568
8212 data165,2,41,64,240,3,76,1,245,169,13,32,210,255,234,169,0,133,144,160
8213 data2,132,169,32,19,238,133,170,32,225,255,208,3,76,51,246,164,144,208
8214 data47,32,19,238,164,144,208,40,164,169,136,208,225,166,170,32,205,189
8215 data169,32,32,210,255,32,19,238,166,144,208,18,170,240,6,32,210,255,76
8216 data30,252,169,13,32,210,255,160,2,208,190,32,66,246,166,45,164,46,96
8217 data255
9000 data 0
9010 rem **** ende ****
Das Hypra-Perfekt-Listing
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →