MEMSAVE (TSB)

Aus C64-Wiki
Zur Navigation springenZur Suche springen
MEMSAVE (TSB)
Syntax: MEMSAVE
Parameter
keine
Einordnung
Typ: Anweisung
Kontext: Einbindung einer RAM-Erweiterung (REU)
Aufgabe: Ablegen von Speicherbereichen des C64 in einer REU
Abkürzung: mem sA
Token: $64 $7A $94 (100 122 148)
Verwandte Befehle
MEMLOAD - MEMREAD - MEMDEF - MEMOR - MEMPOS - MEMLEN - MEMCONT - MEMRESTORE


Dieser Artikel beschreibt das TSB-Schlüsselwort MEMSAVE (TSB).
Es gibt kein entsprechendes Simons'-Basic-Schlüsselwort.

Typ: Anweisung
Syntax: MEMSAVE

MEMSAVE legt einen vorher festgelegten Speicherbereich des C64 (MEMOR) von einer festgelegten Länge (MEMLEN) an einer ebenso festgelegten Adresse in einer REU (MEMPOS) ab. Der Befehl beachtet dabei die Einstellungen zur Transfer-Art (MEMCONT) und zum Autoload der Adress- und Zählregister der REU (MEMRESTORE). MEMDEF fasst diese MEM-Einzelbefehle zusammen.

Beispiele[Bearbeiten | Quelltext bearbeiten]

Die folgenden Beispiele zeigen, wie mit Hilfe von MEMSAVE und MEMLOAD Bilder geladen werden, bei denen dies wegen ihrer Formate nicht mit SCRLD möglich ist.

Art Studio[Bearbeiten | Quelltext bearbeiten]

100 f$="christmasday.art"
105 if a=0 then div: print "loading: ";f$
110 if a=0 then a=1: load f$,8,0,$4000
120 fehler
130 print: print ff;fb$;sp;se: pause 1
140 if ff>0 then end
150 image=$4c00
160 memdef 9000,$4000,image,3: memsave
170 screenload
180 cset 2: do null
190 nrm: colour 11,12
200 end
210 :
220 proc fehler
230 open 1,8,15
240 input#1,ff,fb$,sp,se
250 close 1
260 end proc
290 :
500 proc screenload
510 memdef 8000,$e000,image,3: memload
520 memdef 1000,$c000,image+8000,3: memload
530 end proc

In diesem Programm wird das Art-Studio-Bild "christmasday.art" geladen. Art-Studio-Bilder liegen im Hires-Format vor. Sie beginnen mit 8000 Bytes Bitmap, worauf 1000 Bytes Farben folgen. Die Bilddaten werden komplett geladen (Zeile 110) und ab der Adresse $4000 im Speicher des C64 abgelegt. Von dort transferiert sie das Programm mit MEMSAVE in die REU, hier an die Adresse $4C00 in Bank 3 (Zeile 160). Das Unterprogramm "screenload" holt nun die Teile für die Bitmap (Zeile 510) und die Farbe (Zeile 520) aus der REU in den C64, so dass das Bild in TSB angezeigt werden kann (Zeile 180).

Koala Painter[Bearbeiten | Quelltext bearbeiten]

100 f$="outrunmemo.koa"
110 if a=0 then div: print "loading: ";f$
120 if a=0 then a=1: load f$,8,0,$4000
130 fehler
140 if ff>0 then print ff;fb$: call fertig
150 image=$4c00
160 memdef 10001,$4000,image,3: memsave
170 screenload
180 cset 2: multi on: do null
190 proc fertig
200 div: nrm: colour 11,12,0
210 end
220 :
250 proc fehler
260 open 1,8,15
270 input#1,ff,fb$,sp,se
280 close 1
290 end proc
300 :
500 proc screenload
510 memdef 8000,$e000,image,3: memload
520 memdef 1000,$c000,image+8000,3: memload
530 memdef 1000,$d800,image+9000,3,128: memload
540 memdef 1,$d021,image+10000,3,128: memload
550 end proc

Dieses Beispiel lädt das Koala-Painter-Bild "outrunmemo.koa". Koala-Bilder besitzen ein Multicolor-Format. Sie bestehen aus 8000 Bytes Bitmap, 1000 Bytes Farben im Video-RAM, 1000 Bytes Farb-RAM und einem Byte für die Hintergrundfarbe. Die Bilddaten werden komplett geladen (Zeile 120) und ab der Adresse $4000 im Speicher des C64 abgelegt. Von dort transferiert sie das Programm mit MEMSAVE in die REU, hier an die Adresse $4C00 in Bank 3 (Zeile 160). Das Unterprogramm "screenload" holt nun die Teile für die Bitmap (Zeile 510), die Farbe aus dem Video-RAM (Zeile 520), die Farbe aus dem Farb-RAM (Zeile 530) und die Hintergrundfarbe (Zeile 540) aus der REU in den C64, so dass das Bild in TSB angezeigt werden kann (Zeile 180). Für den Zugriff auf das Farb-RAM ist der 5. Parameter von MEMDEF (siehe MEMRESTORE) mit gesetztem Bit 7 angegeben (Zeile 530). Im Gegensatz zum Hires-Modus muss man bei Multicolor beachten, dass das Farb-RAM auch vom Textmodus benutzt wird.