MEMSAVE (TSB)

Aus C64-Wiki
Wechseln zu: Navigation, Suche
MEMSAVE (TSB)
Format: MEMSAVE
Parameter
keine
Einordnung
Typ: Anweisung
Kontext: Einbindung einer RAM-Erweiterung (REU)
Aufgabe: Ablegen von Speicherbereichen des C64 in einer REU
Abkürzung: keine
Verwandte Befehle
MEMLOAD - MEMREAD - MEMDEF - MEMOR - MEMPOS - MEMLEN - MEMCONT - MEMRESTORE


Dieser Artikel beschreibt das Schlüsselwort MEMSAVE (TSB).

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


Beispiel: TSB-Programm "write image"

5 f$="christmasday.art": image=$4c00

10 MOD 1,0:CSET 2:POKE $d020,15
15 OPEN 1,10,2,f$: FOR i=0 TO 8001: GET#1,x$: IF x$="" THEN x$=CHR$(0)
20 IF (i AND 255)=0 THEN POKE $D020,f: f=f+1
25 x=ASC(x$): POKE $2ffe+i,x
30 POKE $dffe+i,x: NEXT
35 FOR i=0 TO 999: GET#1,x$: IF x$="" THEN x$=CHR$(0)
40 x=ASC(x$)
50 POKE $c000+i,x: NEXT
60 screensave: COLOUR 11,12,0
99 DO NULL
999 END

40000 PROC screensave
40010 MEMCONT 0
40020 MEMOR $c000: MEMPOS image,3
40030 MEMLEN 1000: MEMSAVE
40040 MEMOR $3000: MEMPOS image+$0400,3
40050 MEMLEN 8000: MEMSAVE
40060 END PROC

In diesem Programm wird das OCP-Art-Studio-Bild "christmasday.art" geladen. Art-Studio-Bilder beginnen mit 8000 Bytes Bitmap, worauf 1000 Bytes Farben folgen. Diese Daten liest das Programm byteweise ein und speichert es einerseits im Graphikbereich ($e000), damit man sieht, dass sich etwas tut (aus dem gleichen Grund schaltet sich auch die Randfarbe alle 256 eingelesene Bytes weiter). Die Daten werden andererseits aber auch ins BASIC-RAM nach $3000 geschrieben, da die REU nicht auf das RAM unter dem IO-Bereich zugreifen kann. Ist das Bild vollständig geladen, transferiert es das Programm von dort aus in die REU, hier an die Adresse $4c00 in Bank 3. Die Farben der Grafik liegen in TSB immer an der Adresse $c000. Wie man die Bilder wieder aus der REU herausbekommt, ist beim Befehl MEMLOAD beschrieben.