MEM

Aus C64-Wiki
Zur Navigation springenZur Suche springen
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]

Solche Zeichensätze sind kein Problem (dieser ist aus der 64'er 5/88, von Ralph Schmieder)

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