MEM
MEM | |
Syntax: | MEM |
Parameter | |
keine | |
Einordnung | |
Typ: | Anweisung |
Kontext: | Zeichensatzkontrolle |
Aufgabe: | Einschalten eines änderbaren Zeichensatzes |
Abkürzung: | keine |
Token: | $64 $7a (100 122) |
Verwandte Befehle | |
DESIGN - NRM |
Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort MEM.
Typ: Anweisung
Syntax: MEM
MEM verlegt den ROM-Zeichensatz des C64 an die Speicherposition $E000, an der er mittels DESIGN editierbar ist. Diese Position liegt in der VIC-Speicherbank 3 ($C000 bis $FFFF), daher muss auch der Bildschirmspeicher verschoben werden. Er beginnt nach Anwendung von MEM an der Speicherstelle $CC00.
Da der DESIGN-Befehl zur Festlegung neuer Zeichen nicht dafür gedacht ist, einen kompletten Zeichensatz umzudefinieren (damit wäre der BASIC-Speicher bereits gefüllt und es bliebe kein Platz für das eigentliche Programm), sondern nur einzelne Zeichen, ist es sinnvoll, neue Zeichensätze mit geeigneten Editoren zu erstellen und dann innerhalb von Simons' Basic nach $E000 zu laden. Das unten stehende TSB-Beispielprogramm zeigt, wie das am besten erledigt werden sollte.
Der Anzeigemodus für geänderte Zeichensätze wird mit NRM wieder ausgeschaltet.
In TSB deaktiviert MEM die Befehle RENUMBER und PLACE, die ebenfalls den Speicherbereich $CC00-$CFFF benutzen. Mit NRM werden sie wieder aktiviert.
Beispiel[Bearbeiten | Quelltext bearbeiten]
(Hinweis: Unter TSBneo (ab TSB v2.31.113) werden die beiden Argumente von AT andersherum verwendet.)
5 PRINT "{clear}{ctrl-n}Back at normal Basic..." AT(0,7)"OPTION10:LIST" 10 IF DISPLAY<>$CC00 THEN MEM : I8=PEEK(186): DIM A$(2): LOAD "ZEICHENSATZ",I8,1 15 A$(0)="{neun Zeichen für INSERT}" 20 F=11: PRINT "{clear}{ctrl-n}";: COLOUR 0,1,F 30 FILL 0,0,40,25,96,F 40 PRINT " DESK FILE MISC BASIC " 50 INSERT A$(0),5,7,27,15,F 80 PRINT AT(12,7)"Welcome to TSB!" 85 PRINT AT(12,10)"If you notice any" 90 PRINT AT(10,11)"'similarities', they" 100 PRINT AT(8,12)"are absolutely intended." 110 PRINT AT(8,17)"(Please Press Any Key !)" 120 DO NULL 510 PRINT "{clear}Type NRM to return to normal Basic." 520 PRINT AT(0,4)"NRM" AT(0,1)""
Kommentar: Die Zeile 5 sieht man eigentlich erst, wenn das Programm beendet wurde. Zeile 10 ist in TSB-Syntax. In Simons‘ Basic müsste dort IF PEEK($0288)<>204 THEN...
stehen. Es wird getestet, ob der MEM-Befehl bereits aktiv ist (DISPLAY steht dann auf $CC00). Wenn nicht, wird MEM ausgeführt und der "Zeichensatz" vom aktuellen Laufwerk geladen. Der Rest erzeugt das, was im Beispielbild zu sehen ist. Das Programm geht im Original noch etwas weiter, es ist auf der TSB-Diskette unter dem Namen "zeichensatz.dmo" zu finden.
In TSB müssen die beiden Argumente der AT-Funktion gegeneinander ausgetauscht werden. In Zeile 5 heißt es unter TSB also nicht AT(0,7)
, sondern AT(7,0)
.
$ | % | @ | ANGL | ARC | AT | AUTO | BCKGNDS | BFLASH | BLOCK | CALL | CENTRE | CGOTO | CHAR | CHECK | CIRCLE | CMOB | COLD | COLOUR | COPY | CSET | DELAY | DESIGN | DETECT | DIR | DISABLE | DISAPA | DISK | DISPLAY | DIV | DOWN | DRAW | DUMP | DUP | ELSE | END LOOP | END PROC | ENVELOPE | ERRLN | ERRN | EXEC | EXIT | EXOR | FCHR | FCOL | FETCH | FILL | FIND | FLASH | FRAC | GLOBAL | GRAPHICS | HI COL | HIRES | HRDCPY | INKEY | INSERT | INST | INV | JOY | KEY | LEFT | LIN | LINE | LOCAL | LOOP | LOW COL | MEM | MERGE | MMOB | MOB OFF | MOB SET | MOD | MOVE | MULTI | MUSIC | NO ERROR | NRM | OFF | OLD | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PENX | PENY | PLACE | PLAY | PLOT | POT | PROC | RCOMP | REC | RENUMBER | REPEAT | RESET | RESUME | RETRACE | RIGHT | RLOCMOB | ROT | SCRLD | SCRSV | SECURE | SOUND | TEST | TEXT | TRACE | UNTIL | UP | USE | VOL | WAVE