C 64
Listing des Monats

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 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.

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!

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)
0 :clr:goto380
10 ************************************
11 ***      =================       ***
12 ***      hypra-load-system       ***
13 ***      =================       ***
14 ***                              ***
15 ***      written 1984 by :       ***
16 ***      """""""""""""""""       ***
17 ***                              ***
18 ***     - karsten schramm -      ***
19 ***     - boris schneider -      ***
20 ***                              ***
21 ************************************
100 data011,008,192,007,158,051,050,051
101 data056,000,000,000,032,047,243,169
102 data226,162,248,133,167,134,168,169
103 data000,162,003,133,169,134,170,169
104 data008,032,012,237,169,111,032,185
105 data237,169,077,032,221,237,169,045
106 data032,221,237,169,087,032,221,237
107 data160,000,165,169,032,221,237,165
108 data170,032,221,237,169,030,032,221
109 data237,177,167,032,221,237,200,192
110 data030,144,246,032,254,237,024,165
111 data167,105,030,133,167,144,003,230
112 data168,024,165,169,166,170,105,030
113 data133,169,144,002,230,170,224,005
114 data144,173,201,000,144,169,169,008
115 data032,012,237,169,111,032,185,237
116 data169,077,032,221,237,169,045,032
117 data221,237,169,069,032,221,237,169
118 data139,032,221,237,169,004,032,221
119 data237,169,011,141,017,208,032,251
120 data237,234,234,076,046,240,169,011
121 data141,000,221,044,000,221,016,251
122 data169,003,141,000,221,162,005,202
123 data234,208,252,162,004,173,000,221
124 data042,042,102,176,106,102,176,234
125 data202,208,242,165,176,073,255,096
126 data032,082,239,201,255,240,248,160
127 data000,169,011,141,000,221,044,000
128 data221,016,251,169,003,141,000,221
129 data162,007,202,208,253,173,000,221
130 data042,042,102,176,106,102,176,234
131 data234,173,000,221,042,042,102,176
132 data106,102,176,234,234,173,000,221
133 data042,042,102,176,106,102,176,234
134 data234,173,000,221,042,042,102,176
135 data106,102,176,165,176,073,255,153
136 data166,251,200,208,180,096,120,169
137 data001,133,167,160,255,032,124,239
138 data192,255,240,064,162,002,165,167
139 data240,002,162,004,173,166,251,208
140 data007,238,167,251,173,167,251,044
141 data169,000,133,168,189,166,251,145
142 data174,230,174,208,002,230,175,232
143 data228,168,208,240,162,000,134,167
144 data173,166,251,208,198,169,053,133
145 data001,169,027,141,017,208,169,064
146 data133,144,024,096,169,053,133,001
147 data169,027,141,017,208,234,169,029
148 data056,096,160,000,185,066,240,153
149 data048,001,200,192,031,208,245,032
150 data210,239,076,048,001,234,008,072
151 data169,000,168,089,000,160,200,208
152 data250,201,128,240,004,169,055,133
153 data001,166,174,164,175,104,040,088
154 data096,221,016,173,240,034,173,161
155 data002,074,176,250,173,001,221,041
156 data253,141,001,221,173,001,221,041
157 data004,240,249,169,144,024,076,059
158 data239,173,161,002,041,018,240,243
159 data024,096,173,151,002,172,156,002
160 data204,155,002,240,011,041,247,141
161 data151,002,177,247,238,156,002,096
162 data009,008,141,151,002,169,000,096
163 data072,173,161,002,240,017,173,161
164 data002,041,003,208,249,169,016,141
165 data013,221,169,000,141,161,002,104
166 data096,165,000,041,006,201,002,240
167 data003,076,158,253,234,169,005,133
168 data009,162,090,134,075,162,000,169
169 data082,133,036,032,086,245,080,254
170 data184,173,001,028,197,036,240,009
171 data198,075,208,239,169,010,076,105
172 data249,080,254,184,173,001,028,149
173 data037,232,224,007,208,243,032,151
174 data244,165,022,069,023,069,024,069
175 data025,069,026,240,007,198,009,208
176 data192,076,030,244,165,024,197,006
177 data240,003,076,011,244,133,034,169
178 data006,133,049,076,060,004,165,018
179 data166,019,133,022,134,023,165,006
180 data133,024,165,007,133,025,169,000
181 data069,022,069,023,069,024,069,025
182 data133,026,032,052,249,162,090,032
183 data086,245,160,000,080,254,184,173
184 data001,028,217,036,000,240,006,202
185 data208,237,076,081,245,200,192,008
186 data208,234,032,086,245,080,254,184
187 data173,001,028,145,048,200,208,245
188 data160,186,080,254,184,173,001,028
189 data153,000,001,200,208,244,032,224
190 data248,165,056,197,071,240,003,076
191 data246,244,032,233,245,197,058,240
192 data003,076,002,245,160,000,169,085
193 data032,082,004,185,000,006,133,119
194 data044,000,024,016,251,169,016,141
195 data000,024,044,000,024,048,251,162
196 data000,138,102,119,042,042,102,119
197 data042,042,141,000,024,138,102,119
198 data042,042,102,119,042,042,141,000
199 data024,138,102,119,042,042,102,119
200 data042,042,141,000,024,138,102,119
201 data042,042,102,119,042,042,141,000
202 data024,162,002,202,208,253,169,015
203 data141,000,024,200,208,173,234,234
204 data234,234,234,234,234,173,000,028
205 data009,008,141,000,028,173,000,006
206 data208,003,076,158,253,197,024,208
207 data249,133,006,173,001,006,133,007
208 data076,101,003,133,119,044,000,024
209 data016,251,169,016,141,000,024,044
210 data000,024,048,251,162,004,169,000
211 data102,119,042,042,102,119,042,042
212 data141,000,024,202,208,240,234,234
213 data234,234,234,234,169,015,141,000
214 data024,096,096,133,000,088,165,000
215 data048,252,120,096,120,234,234,234
216 data234,234,234,165,024,141,000,006
217 data133,006,165,025,141,001,006,133
218 data007,169,004,133,120,169,226,032
219 data130,004,201,002,144,051,160,000
220 data132,120,164,120,185,219,254,240
221 data018,088,032,118,214,120,169,226
222 data032,130,004,201,002,144,026,230
223 data120,208,231,169,192,032,130,004
224 data169,226,032,130,004,201,002,144
225 data008,169,255,032,082,004,076,034
226 data235,173,000,006,240,248,197,024
227 data240,196,173,000,006,133,006,173
228 data001,006,133,007,076,160,004,234
229 data234,234,234,160,000,185,025,244
230 data153,048,001,200,192,031,208,245
231 data076,048,001,169,000,168,089,000
232 data160,200,208,250,201,128,240,007
233 data169,055,133,001,076,001,245,076
234 data048,244,160,000,177,187,201,036
235 data240,242,169,001,133,167,169,000
236 data133,144,165,167,032,012,237,169
237 data111,032,185,237,165,144,016,011
238 data230,167,165,167,201,016,208,230
239 data076,187,238,165,167,201,008,240
240 data239,160,000,185,122,244,240,006
241 data032,210,255,200,208,245,032,225
242 data255,208,251,238,234,234,234,234
243 data076,187,238,234,013,066,073,084
244 data084,069,032,078,085,082,032,070
245 data076,079,080,080,089,032,065,078
246 data083,067,072,065,076,084,069,078
247 data013,000,000,000,000,000,000,000
248 data000,000,000,000,000,120,169,055
249 data133,001,160,000,132,003,169,160
250 data133,004,177,003,145,003,230,003
251 data208,248,230,004,208,244,169,229
252 data141,214,253,169,076,141,114,254
253 data141,249,244,169,188,141,115,254
254 data169,254,141,116,254,169,009,141
255 data250,244,169,244,141,251,244,169
256 data018,133,003,169,010,133,004,169
257 data226,133,005,169,248,133,006,177
258 data003,145,005,200,208,249,230,004
259 data230,006,165,006,201,250,208,239
260 data169,016,162,008,133,003,134,004
261 data169,187,162,238,133,005,134,006
262 data177,003,145,005,200,208,249,230
263 data004,230,006,165,006,201,240,208
264 data239,185,067,013,153,095,228,200
265 data192,080,208,245,160,000,185,012
266 data012,153,009,244,200,192,148,208
267 data245,169,053,133,001,076,248,252
268 data234,234,000,032,066,089,084,069
269 data083,032,070,082,069,069,013,000
270 data000,000,000,000,000,000,147,013
271 data032,032,032,032,042,042,042,042
272 data032,067,054,052,045,072,089,080
273 data082,065,045,076,079,065,068,045
274 data083,089,083,084,069,077,032,042
275 data042,042,042,013,013,032,040,067
276 data041,056,052,032,018,084,082,073
277 data066,065,082,146,032,032,000,129
278 data072,032,000,000,000,000,000,000
279 data000,000,000,000,000,000,000,000
280 rem *******************************
290 rem *        checksummen          *
300 rem *******************************
310 data10355,10666,10986,11346,11058
320 data09936,08856,08690,09460,07556
330 data08119,08952,09829,10579,08282
340 data12151,09771,03416,00000,00000
350 rem *******************************
360 rem *    initialisiere datas      *
370 rem *******************************
380 print"{clr}{down}{down} haben sie mich abge saved?"
390 geta$:ifa$<>"j"anda$<>"n"then390
400 ifa$="n"thenprint:print:print"dann aber schnell {down}{down}":end
410 print:print:print"bitte geduld; ueberpruefe checksummen !"
420 dim s(18)
430 forx=1to18
440 fory=1to80:reada:s(x)=s(x)+a
450 nexty,x
460 forx=1to18
470 readcs:ifs(x)=csthennext:goto510
480 print:print:print"fehler in datenblock !!!"
490 print:print"zeilen";90+10*x;" -";99+10*x" !"
500 end
510 restore:print:print:print"daten werden abgespeichert ."
520 forx=0to1439:reada:poke2049+x,a:next
530 poke45,179:poke46,13:poke47,179:poke48,13
540 print:print"mit 'save' speichern ":print
550 print"mit 'run' aktivieren !"
560 clr
Listing. Basic-Lader von »HYPRA-LOAD«
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →