MEM

Aus C64-Wiki
Wechseln zu: Navigation, Suche
MEM
Format: MEM
Parameter
keine
Einordnung
Typ: Anweisung
Kontext: Zeichensatzkontrolle
Aufgabe: Einschalten eines änderbaren Zeichensatzes
Abkürzung: keine
Verwandte Befehle
DESIGN - NRM


Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort MEM.

Typ: Anweisung 
Syntax: MEM

Mit MEM verwirft man den ROM-Zeichensatz des C64 und verlegt ihn 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.

(thumbnail)
Solche Zeichensätze sind kein Problem
   5 PRINT "{clear}{ctrl-n}Back at normal Basic..." 
     AT(0,7)"option10:list"
  10 IF PEEK($0288)<>204 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 erst, wenn das Programm beendet wurde. In Zeile 10 wird
getestet, ob der MEM-Befehl bereits aktiv ist (in $0288 steht der Ort des Bildschirmspeichers
- 204 entspricht hex $CC). 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 "insert.dmo" zu finden.