C 64/VC 20
Tips & Tricks

Vom Bildschirm auf Kassette/Diskette

Das kurze Maschinenprogramm dient dazu, den Bildschirminhalt beim Commodore 64 abzuspeichern und auch wieder einzuladen. Dies kann mit einem Recorder oder Diskettenlaufwerk geschehen. Dabei werden außer dem eigentlichen Bildschirmspeicher (der an eine beliebige Stelle verschoben sein kann und nicht ab Adresse 1024 liegen muß) auch das Color-RAM und die Tabelle der Doppelzeilenkennzeichnungen mitberücksichtigt. Das Abspeichern und Einladen erfolgt über einen Pufferbereich im »versteckten« RAM ab 40960, da die drei verschiedenen Speicherbereiche in einem Stück abgespeichert und außerdem die 1000 Farbnibbles zu 500 Bytes zusammengeschoben werden. Das erspart beim Arbeiten mit dem Recorder wertvolle Zeit.

Nach dem Eintippen des Basic-Loaders kann durch »RUN 16« geprüft werden, ob es richtig eingegeben wurde. Trotzdem sollte es vor dem Start abgespeichert werden, da auch durch Prüfsummen nicht alle Fehler erkannt werden können. Ausgegeben werden zwei Adressen für das Laden und Speichern. Das Programm kann an jede Stelle des Arbeitsspeichers geladen werden, in der vorliegenden Version lädt es sich an das Ende des Basic-Arbeitsspeichers. Es ist davon auszugehen, daß das Programm direkt nach dem Einschalten ohne andere Erweiterungen eingeladen und gestartet wird.

Soll ein Bildschirminhalt auf Diskette abgespeichert werden, so erfolgt dies durch
SYS 40738 »FILENAME«, 8

Beim Arbeiten mit Recorder kann (auch beim Einladen) die Gerätenummer entfallen; die Angabe einer Sekundäradresse ist nicht erlaubt. Durch das Abspeichern bedingte Betriebssystemmeldungen wie »PRESS RECORD & PLAY« sowie das Scrolling des Bildschirms sind unbedeutend und werden nicht berücksichtigt. Alle Bildschirmdaten werden zuvor in einen Zwischenspeicher übertragen.

Das Einladen solcherart abgespeicherter Bildschirminhalte geschieht mit
SYS 40833 »FILENAME«, 8

Zunächst werden die Daten in den Puffer von Adresse 40960 bis 42483 geladen und dann in MSB-Tabelle, Farbspeicher und die momentan gewählte Videomatrix übertragen.

(Ralph Babel)
0 rem speichern und laden des bildschirminhalts beim c64 - (c) by ralph babel
1 d=55:a=peek(56)*256+peek(d)-222:gosub4:clr:s=peek(56)*256+peek(55)
2 fori=stos+221:reada:pokei,a:next:a=s+173:d=s+1:gosub4:d=s+96:gosub4
3 print"{down}save:"s:print"{down}load:"s+95:end
4 poked,a-int(a/256)*256:poked+1,a/256:return
5 data32,,,162,4,177,7,145,9,200,208,249,230,8,230,10,202,208,242,162,24,181
6 data217,157,231,163,202,208,248,162,218,202,202,134,8,177,7,41,15,133,11,232
7 data232,134,8,177,7,10,10,10,10,5,11,145,9,200,208,229,230,10,224,219,208,224
8 data169,160,133,8,165,1,72,41,254,133,1,169,7,162,244,160,165,32,216,255,170
9 data104,133,1,138,176,1,96,76,249,224,32,,,169,,32,213,255,176,243,165,1,72
10 data41,254,133,1,162,4,160,,177,9,145,7,200,208,249,230,8,230,10,202,208,242
11 data162,24,189,231,163,149,217,202,208,248,162,218,202,202,134,8,177,9,145,7
12 data232,232,134,8,74,74,74,74,145,7,200,208,235,230,10,224,219,208,230,104
13 data133,1,96,32,87,226,162,1,32,121,,240,3,32,241,183,160,2,32,186,255,173,
14 data221,73,3,133,8,173,24,208,41,240,70,8,106,70,8,106,133,8,160,,132,7,132
15 data9,169,160,133,10,96
16 clr:fori=.to221:reada:x=a+x:y=a-y:next
17 print"{down}checksum "mid$("errorok",1-5*(x=27349andy=-217),5)
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →