MEMRESTORE (TSB)
MEMRESTORE (TSB) | |
Syntax: | MEMRESTORE <swt> |
Parameter | |
swt: Flag für das Zurücksetzen der Transferregister | |
Einordnung | |
Typ: | Anweisung |
Kontext: | Einbindung einer RAM-Erweiterung (REU) |
Aufgabe: | Umschalter für das automatische Neuladen der Zähl- und Adressregister |
Abkürzung: | memresT |
Token: | $64 $7A $8C (100 122 140) |
Verwandte Befehle | |
MEMLOAD - MEMREAD - MEMSAVE - MEMDEF - MEMOR - MEMLEN - MEMCONT |
Dieser Artikel beschreibt das TSB-Schlüsselwort MEMRESTORE (TSB).
Es gibt kein entsprechendes Simons'-Basic-Schlüsselwort.
Typ: Anweisung Syntax: MEMRESTORE <swt>
MEMRESTORE steuert das automatische Neuladen der Übertragungsregister nach dem REU-Transfer. Der Wert
- 0 bedeutet "nicht neu laden" und belässt alle Register auf dem zuletzt bei der Übertragung erreichten Wert.
- 1 stellt alle Transferregister auf die vor dem Transfer eingestellten Werte zurück.
Außerdem erlaubt MEMRESTORE mit einem gesetzten Bit 7 im <swt>-Parameter, dass die Transferbefehle (MEMLOAD und MEMSAVE) auch auf das Farb-RAM zugreifen können und nicht nur auf das freie RAM darunter (ab TSB-Version 2.20826).
Beispiel[Bearbeiten | Quelltext bearbeiten]
Programm zum Anzeigen des Directory-Inhalts der REU unter GoDot:
80 cls: cset 1: d$="0123456789012345678": ls=len(d$): x$=chr$(0) 90 stringadresse holen 100 memdef ls,sa,0,0: memrestore 1: memload 105 f1=place(x$,mid$(d$,5,14))>0 110 f2=val(d$)=1.23456789e17:f3=asc(d$)=$c0 115 if f1 or f2 or f3 then do 120 memclr sa,ls,$c0 125 if f3 then print "PRG wiederholt gestartet.": end 130 if f2 then print "REU nicht da.": end 135 if f1 then print "Kein GoDot-Directory gefunden.": end 140 done 200 print "Directory of Drive 12: " mid$(d$,5,11): print 210 nx=asc(mid$(d$,2))+256*asc(mid$(d$,3)): bk=asc(mid$(d$,4)) 220 for fl=1 to 119 230 mempos fl*19,0: memor sa: memload 240 p=fl: if asc(d$)=$c0 then fl=119: goto 290 245 if place(x$,mid$(d$,4)) then memclr sa,ls,$c0: goto290 250 use" ### ",fl;: print mid$(d$,4) at(lin,28)"$" $$(asc(d$) and 15); 255 print $$asc(mid$(d$,3)); $$asc(mid$(d$,2)) 260 if lin=24 then keyget xx$: cls 290 next 300 print: print "Next entry at $" $$bk; $$nx; "," 120-p "entries left" 999 end 1000 proc stringadresse holen 1010 sys $8b65 d$: p=(peek(780)+256*peek(782))+1 1020 sa=d!peek(p) 1040 end proc
Erläuterungen:
- Zeile 80 und 90: Der Anzeigestring D$ ist 19 Zeichen lang (für einen Directory-Eintrag), die Adresse von D$ steht in SA
- Zeilen 100 bis 140: Fehlerabfangroutine (Keine REU? Vorher kein GoDot gestartet? PRG wiederholt aufgerufen?)
- Zeilen 200 bis 300: Ausgabe des GoDot-Directorys bis zum ersten Leereintrag (Erkennung in Zeile 240) oder Directory zerstört (Zeile 245)
- Zeilen 1000 bis 1040: Stringadresse ermitteln, Ergebnis in SA
$$ | %% | AT | CALL | CENTER | CHECK | COLD | COLOR | COPY | CLS | CSET | D! | D!PEEK | D!POKE | DIR | DISK | DISPLAY | DIV | DO | DO NULL | DRAW TO | DUMP | DUP | ELSE | ERROR | EXEC | FETCH | FIND | GRAPHICS | INSERT | INST | JOY | KEY | KEYGET | LIN | MAP | MEMCLR | MEMCONT | MEMDEF | MEMLEN | MEMLOAD | MEMOR | MEMPEEK | MEMPOS | MEMREAD | MEMRESTORE | MEMSAVE | MERGE | MOB ON/OFF | MOBCOL | MOD | MOVE | MULTI | NRM | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PLACE | RENUMBER | RESUME | RETRACE | SCRLD | SCRSV | SOUND | TEXT | TRACE | USE | WAVE | X!