SCRSV (TSB)
SCRSV (TSB) | |
Syntax: | SCRSV <fn>,<dr>,<sa>,<name>+",<ft>,W" |
Parameter | |
fn: Dateinummer | |
dr: Laufwerk | |
sa: Sekundäradresse (2, 3 oder 5) | |
name: Dateiname | |
ft: Dateityp (U, S, P) | |
Einordnung | |
Typ: | Anweisung |
Kontext: | Ein- / Ausgabe |
Aufgabe: | speichert einen Textbildschirm oder eine Grafik |
Abkürzung: | sC |
Token: | $64 $6d (100 109) |
Verwandte Befehle | |
SCRLD - MERGE - LIN - LOAD - SAVE - |
Dieser Artikel beschreibt das TSB-Schlüsselwort SCRSV (TSB).
Das entsprechende Simons'-Basic-Schlüsselwort lautet ebenfalls SCRSV.
Typ: Anweisung Syntax: SCRSV <fn>,<dr>,<sa>,<name>+",<ft>,W"
Beschreibung[Bearbeiten | Quelltext bearbeiten]
1. Alternative
Siehe den gleichlautenden Simons'-Basic-Befehl SCRSV, allerdings sollte dann die Sekundäradresse 0 oder 2 (oder eine beliebige gerade Zahl) lauten. Diese Alternative speichert den Textbildschirm inklusive seiner Farben (zusammen 2048 Bytes in 9 Disk-Blöcken). Das Dateiformat unterscheidet sich von dem des SCRSV in Simons' Basic: die Reihenfolge der gespeicherten Bytes ist anders und die Startadresse wird mitgespeichert.
2. Alternative
Der TSB-Befehl SCRSV ist zusätzlich in der Lage, das aktuelle Grafikbild abzuspeichern. Dazu muss die Sekundäradresse ungerade sein. Es gibt zwei Versionen:
- Mit der Sekundäradresse <sa> "3" sichert man nur die Bitmap. TSB speichert 8192 Bytes, d.h. den kompletten Grafikpuffer (unter TSB ab $E000), und erzeugt eine 33 Blöcke große Datei. Siehe dazu das Beispiel Bitmap speichern.
- Bitmap und Farben sichert man mit der Sekundäradresse <sa> "5". Zusätzlich zu den 8192 Bytes der Bitmap werden hierbei auch die Farbinformationen aus dem Farb-RAM und dem Video-RAM gespeichert, weshalb TSB hier eine 41 Blöcke große Datei erzeugt. Bei Bildern im Multicolor-Modus muss man nachvollziehbar die Hintergrundfarbe (die nicht mitgespeichert wird) vermerken, am besten im Dateinamen der Bilddatei oder an einer ungenutzten Stelle innerhalb der Datei, damit die Farbnummer nicht in Vergessenheit gerät. Siehe dazu das Beispiel Grafik mit Farben speichern.
- Diese Option steht seit TSB 2.20220 zur Verfügung.
Die Dateiformate von TSB und von HSAVE aus Simons Basic Extension sind nicht identisch.
Beachten:
- Entgegen der TSB-Eigenschaft, bei Befehlen, die die Floppy-Laufwerke ansprechen, die Gerätenummer wegfallen lassen zu können, muss sie bei SCRSV (genau wie bei OPEN) ausdrücklich mit angegeben werden. Intern greift TSB jedoch immer auf das mit USE eingestellte Laufwerk zu. Ist es nicht vorhanden, produziert dieser Zugriff einen Floppy-Error.
- Das Bandlaufwerk (Datassette) wird unterstützt, wenn man vor dem Abspeichern die Adresse des Kassettenpuffers ($033C in $B2/$B3) mit
D!POKE $B2,$033C
rekonstruiert. - Ein Dateityp muss nicht zwingend angegeben werden. Fehlt die Angabe, wird eine PRG-Datei erzeugt.
- Ist die angegebene Datei bereits auf der Diskette vorhanden, wird sie nicht überschrieben, das Speichern wird nicht ausgeführt. Um dies anzuzeigen, muss der Fehlerkanal ausgelesen werden (siehe Beispiele).
- Wird das Farb-RAM von SCRSV benutzt, sollte man nicht aus dem Textmodus heraus speichern, da durch die Befehlseingabe das Farb-RAM verändert werden kann.
Erweiterte Nutzung[Bearbeiten | Quelltext bearbeiten]
Die beiden zusätzlichen (ab TSB v2.20515 verfügbaren) Befehle
erweitern die Möglichkeiten von SCRSV (TSB). Sie funktionieren durch Modifikation der SCRLD/SCRSV-Routine und machen damit die sonst nötigen POKEs überflüssig.
Mit SCRSV DEF kann man Modifikationen mit den folgenden Wirkungen erstellen:
- Die Startadresse wird beim Speichern im Append-Modus weggelassen
- Die Anzahl der 256-Byte-Blöcke (Pages) für die Bitmap-Größe wird von 32 auf einen selbst gewählten Wert gesetzt
- Die Anzahl der 256-Byte-Blöcke für das Video-RAM bzw. Farb-RAM wird von 4 auf einen selbst gewählten Wert gesetzt
- Die Verarbeitung des Farb-RAMs wahlweise unterdrücken
- Das High-Byte der Speicheranfangsadresse vom Video-RAM wird von $04 auf einen selbst gewählten Byte-Wert gesetzt
- Das High-Byte der Speicheranfangsadresse der Bitmap wird von $E0 auf einen selbst gewählten Byte-Wert gesetzt
Wie das im Einzelnen geht, ist bei der Beschreibung der Parameter in SCRSV DEF erklärt.
Mit SCRSV RESTORE werden alle Werte wieder zurückgesetzt.
Eine typische erweiterte Nutzung hat dann die folgende Form:
SCRSV DEF hi,bl,m,sa SCRSV 2,8,2,"dateiname,P,W" SCRSV RESTORE
- Es ist wie bisher möglich, eine Grafik in zwei Dateien zu speichern, die erste für die Bitmap, die zweite (mit einer Dateilänge von 9 Blöcken) für die Farben. Siehe dazu das Beispiel Grafik in zwei Dateien speichern.
- Tatsächlich kann man aber auch zwei SCRSV-Durchgänge in eine Datei speichern, indem der zweite mit dem Namensanhang ",P,A" für "Append" durchgeführt wird. Allerdings muss bei der anzuhängenden Datei die Ausgabe der Startadresse unterdrückt werden, was mit dem Modus 2 im Befehl SCRSV DEF erledigt wird. So kann man z.B. das Format für Doodle-Bilder (Video-RAM + Bitmap) erzeugen. Siehe dazu das Beispielprogramm Doodle-Grafik speichern mit TSB.
- Der Bildschirmspeicher ab $CC00, wo er nach MEM liegt, kann mit Hilfe von SCRSV DEF gesichert werden. Siehe dazu das Beispiel Textbildschirm speichern nach MEM.
- Wenn man in SCRSV DEF mit dem Modus 1 die Verarbeitung des Farbbereichs 1 (Farb-RAM) unterdrückt, kann man ein Bild im Format von Hi-Eddi+ speichern. Es belegt auf der Diskette 37 Blöcke. Siehe dazu das Beispiel Hi-Eddi+-Grafik speichern mit TSB.
- Mit Hilfe von SCRSV DEF lässt sich ein beliebiger frei zugänglicher Speicherbereich von wählbarer Größe (in 256-Byte-Blöcken) - z.B. ein Zeichensatz - sichern. Angenommen, ein 2KB großer Zeichensatz liegt an Adresse $3000 im Speicher. Mit
SCRSV DEF $30,8,1,3: SCRSV 3,8,3,"zeichensatz,P,W": SCRSV RESTORE
kann er gesichert und jederzeit an eine beliebige andere Stelle zurückgeladen werden (mit SCRLD DEF und SCRLD).
Entwicklungsgeschichte[Bearbeiten | Quelltext bearbeiten]
SCRSV und SCRLD des originalen Simons' Basic sind nur für den Textbildschirm ab $0400. Die erste Erweiterung - die auch in TSB übernommen worden ist - wurde im 64'er-Magazin 3/85 veröffentlicht. Programmierer Hans Haberl hat die Möglichkeit, zusätzlich über die Wahl der Sekundäradresse auch die Bitmap speichern zu können, so implementiert, dass sie mit in den vorhandenen Speicherplatz (154 Bytes) von SCRSV und SCRLD passte. Um das zu erreichen, hat er (1.) die Save- und Load-Routinen in eine gemeinsame Programmschleife gepackt, und (2.) auch die Verarbeitung der Farbspeicher Video-RAM und Farb-RAM in einer Schleife statt in zwei getrennten erledigt.
- Der erste Punkt ist der Grund dafür, dass SCRSV DEF und SCRLD DEF sowie SCRSV RESTORE und SCRLD RESTORE austauschbar sind und dass sämtliche Modifikationen sich immer sowohl auf SCRSV als auch auf SCRLD auswirken.
- Der zweite hat zur Folge, dass das gespeicherte Grafikdatei-Format sehr eigentümlich und zu keinem anderen bekannten kompatibel ist. Nach der Bitmap (8192 Bytes) kommt der Farbspeicher (2×1024 Bytes) in einem "gemischten" Format: ein Byte aus dem Farb-RAM und eines aus dem Video-RAM. Wegen dieser Reihenfolge gibt es im Artikel SCRSV-LD DEF die Bezeichnungen "Farbbereich 1" und "Farbbereich 2". Die zusätzlichen Befehle sind nötig, wenn man Formate bekannter Grafikprogramme nutzen will. Doch selbst mit der erweiterten Nutzung gibt es einige Einschränkungen:
- Da SCRLD immer die Bitmap zuerst lädt, kann kein Grafikformat geladen werden, das dies anders macht, wie z.B. Doodle.
- Da wegen der nötigen Speicherplatz-Optimierung immer nur ganze Pages verarbeitet werden, können nur Dateiformate mit einem Bitmap-Bereich von 8192 Bytes und Farbbereichen von 1024 Bytes erzeugt bzw. geladen werden. Das als Quasi-Standard für Multicolor-Grafik geltende Koala-Format (8000 Bytes Bitmap, 1000 Bytes Video-RAM, 1000 Bytes Farb-RAM, 1 Byte Hintergrundfarbe) z.B. ist nicht dabei.
Erst nachdem durch umfangreiche Optimierungen von Arndt Dettke in TSB ausreichend neuer Speicherplatz frei geworden war, konnten weitere Entwicklungen erfolgen:
- Grafik mit Bitmap und Farbe speichern bzw. laden per Sekundäradresse 5. Hierzu musste die Routine zur Bitmap-Verarbeitung ausgelagert werden, was zusätzliche 34 Bytes benötigte.
- Zusätzliche Befehle SCRSV-LD DEF und SCRSV-LD RESTORE. Dies verbrauchte 74 und 33 Bytes.
GoDot Lader[Bearbeiten | Quelltext bearbeiten]
In GoDot gibt es (seit Mai 2022) Unterstützung für TSB-Bilder: den Lader ldr.TSB und den Saver svr.TSB. Man kann sowohl Hiresbilder als auch Multicolor-Bilder laden/speichern, sie werden beim Laden jeweils automatisch erkannt. Mit einem weiteren Lader (für Textbildschirme) kann man auch diese Bildschirmmasken bzw. PETSCII-Art-Bilder nach GoDot laden und in viele andere Formate konvertieren und auch in guter Qualität drucken.
Die Bilder müssen mit SCRSV und der Sekundäradresse 5 (wegen der Farben) gesichert worden sein, z.B.
SCRSV 1,dr,5,"Bildname,P,W"
Eine mit Sekundäradresse 3 gespeicherte Bitmap kann man mit in GoDot mit ldr.HiresBitmap oder ldr.MCBitmap laden.
Dateiformate[Bearbeiten | Quelltext bearbeiten]
Die Dateiformate besitzen keine Namenskennung und sind ungepackt. Sind beide Farbbereiche vorhanden (wie bei sa=2 oder sa=5), so ist der Farbteil 2048 Bytes groß und besteht abwechselnd aus einem Byte vom Farb-RAM und einem Byte vom Video-RAM.
Format | Startadresse | Bitmap | Farb-RAM | Video-RAM | Blöcke auf Diskette |
---|---|---|---|---|---|
sa=2 Textschirm | $0400 | 1024 Bytes | 1024 Bytes | 9 | |
sa=3 Grafik Bitmap | $E000 | 8192 Bytes | 33 | ||
sa=5 Grafik Farbe | $E000 | 8192 Bytes | 1024 Bytes | 1024 Bytes | 41 |
sa=5 dto. ohne Farb-RAM (*1) | $E000 | 8192 Bytes | 1024 Bytes | 37 |
(*1) Lässt sich nur mit POKE-Patches realisieren.
Beispiele[Bearbeiten | Quelltext bearbeiten]
Die hier aufgeführten Beispiele können in der vorliegenden Form ausgeführt werden. Besonders bequem geht das, wenn man mit dem Emulator VICE arbeitet und dort "Paste" (Reiter "Edit") benutzt:
- TSB in VICE starten.
- Kopieren des Programmbeispiels (aus dem Artikel, nicht aus dem Quelltext!)
- Einfügen in einen geeigneten Texteditor - etwa Notepad++, in Kleinschrift wandeln und "Kopieren" ausführen.
- Bei einem Doppelpunkt als erstem Zeichen hinter der Zeilennummer wird das Leerzeichen zwischen Zeilennummer und Doppelpunkt falsch dargestellt und muss noch einmal überschrieben werden.
- Mit der Paste-Funktion den Programmtext in VICE einfügen. Der dort enthaltene Tokenizer generiert den passenden BASIC-Code.
- Eventuell müssen noch nicht darstellbare Zeichen, die in geschweiften Klammern angegeben sind, im BASIC-Programm durch ihren korrekten Code ersetzt werden - wie z.B. {PI} in Zeile 140 vom Blazing Paddles Beispiel.
Textbildschirm speichern[Bearbeiten | Quelltext bearbeiten]
Normal[Bearbeiten | Quelltext bearbeiten]
Das Beispiel basiert auf dem im Simons' Basic Handbuch unter SCRSV angegebenen Programm.
100 CLS 110 FILL 6,10,20,4,160,2 120 FILL 10,10,20,4,160,1 130 FILL 14,10,20,4,160,6 140 WAIT 198,1 150 SCRSV 2,8,2,"TRICOLOR-TSB.SRC,P,W"
Zeile 150 sichert den Bildschirmspeicher auf die Diskette im mit USE (default: 8) definierten Laufwerk.
Mit einer Unterroutine, die den Fehlerkanal ausliest:
160 CLS: FEHLER 170 IF FF>0 THEN PRINT FF;FB$ 180 END 190 PROC FEHLER 200 OPEN 1,8,15 210 INPUT#1,FF,FB$,SP,SE 220 CLOSE 1 230 END PROC
Nach MEM[Bearbeiten | Quelltext bearbeiten]
Nach MEM liegt der Bildschirmspeicher bei $CC00. Mit den in Zeile 150 durch SCRSV DEF definierten Werten sichert SCRSV diesen Bereich. In Zeile 152 wird SCRSV auf die Standardwerte zurückgesetzt.
100 MEM 110 FILL 6,10,20,4,160,2 120 FILL 10,10,20,4,160,1 130 FILL 14,10,20,4,160,6 140 WAIT 198,1 150 SCRSV DEF $CC,4,0,2 151 SCRSV 2,8,2,"TRI-CC.SRC,P,W" 152 SCRSV RESTORE 160 CLS: FEHLER 170 IF FF>0 THEN PRINT FF;FB$ 180 END 190 PROC FEHLER 200 OPEN 1,8,15 210 INPUT#1,FF,FB$,SP,SE 220 CLOSE 1 230 END PROC
Bitmap speichern[Bearbeiten | Quelltext bearbeiten]
100 HIRES 15,0 110 FOR R=10 TO 90 STEP 5 120 CIRCLE 160,100,R,100-R,1 130 NEXT 140 COLOUR 12,12: WAIT 198,1 150 NRM: COLOUR 11,12: PRINT"SAVING ..."; 160 SCRSV 3,8,3,"BITMAP3,P,W" 170 FEHLER 180 IF FF>0 THEN PRINT FF;FB$ 190 END 200 PROC FEHLER 210 OPEN 1,8,15 220 INPUT#1,FF,FB$,SP,SE 230 CLOSE 1 240 END PROC
Grafik mit Farben speichern[Bearbeiten | Quelltext bearbeiten]
Das folgende Beispiel basiert auf einem Programm aus dem Buch Grafik auf dem C64 von Walter Bachmann.
Beachten: Vor dem Ausführen muss das {PI} in Zeile 130 durch π ersetzt werden.
100 REM--- TURTLE-MC-SAVE --- 110 HIRES 1,0: COLOUR11,0: MULTI10,8,2 120 A=10: B=A/1.6: AD=2: BD=AD/1.6 130 TD = 241: T=90:T0={PI}/180 140 REM TD:182/241/90.4 150 X0=90: Y0=100: C=1 160 REC 0,0,159,199,3 170 LOOP 180 : X = X0 + A*COS(T*T0) 190 : Y = Y0 + B*SIN(T*T0) 200 : EXIT IF X<0 OR X>159 OR Y<0 OR Y> 199 210 : LINE X0,Y0, X,Y, C 220 : X0 = X: Y0 = Y 230 : T = T + TD 240 : A = A + AD 250 : B = B + BD 260 : C=C+1:IF C>3 THEN C=1 270 END LOOP 280 COLOUR 12,0: WAIT 198,1: COLOUR11,0 290 REM --- SPEICHERN 300 SCRSV 3,8,5,"TURTLE-MC,P,W" 310 NRM: COLOUR 11,12,0 320 END
Grafik in zwei Dateien speichern[Bearbeiten | Quelltext bearbeiten]
Das Beispiel basiert auf dem im Simons' Basic Extension Manual unter HSAVE angegebenen Programm.
10 BG=0:HIRES 15,BG 20 FOR R=10 TO 90 STEP 5 30 CIRCLE 160,100,R,100-R,1 40 NEXT 50 COLOUR 12,12: WAIT 198,1: COLOUR 11,12 60 TSBSAVE 70 NRM: END 1500 PROC TSBSAVE 1510 SCRSV 1,I8,3,"IMAGE"+STR$(BG)+",P,W" 1520 SCRSV DEF $C0,4,0,2 1530 SCRSV 1,I8,2,"IMAGETOOLS,P,W" 1540 SCRSV RESTORE 1545 END PROC
Die Prozedur TSBSAVE speichert die Grafik samt Farben unter dem angegebenen Namen in zwei Dateien auf die Diskette von jenem Gerät, das mit USE festgelegt wurde. Der Wert der Variablen i8 wird hierfür nicht berücksichtigt. In Variable BG befindet sich die Nummer der Hintergrundfarbe.
Hi-Eddi+ Grafik speichern mit TSB[Bearbeiten | Quelltext bearbeiten]
Grafik im Format von Hi-Eddi+ speichern:
100 HIRES 15,0 110 FOR R=10 TO 90 STEP 5 120 CIRCLE 160,100,R,100-R,1 130 NEXT 140 COLOUR 12,12: WAIT 198,1 150 NRM: COLOUR 11,12 160 REM --- 170 CLS: PRINT"SAVING IMAGE ..." 180 SCRSV DEF $C0,4,1,2: REM KEIN FARBRAM 190 SCRSV 3,8,5,"HIRES5.HED,P,W" 200 SCRSV RESTORE 210 FEHLER 220 END 230 REM --- 240 PROC FEHLER 250 OPEN 1,8,15 260 INPUT#1,FF,FB$,SP,SE 270 IF FF>0 THEN CLS: PRINT FF;FB$ 280 CLOSE 1 290 END PROC
Doodle Grafik speichern mit TSB[Bearbeiten | Quelltext bearbeiten]
Grafik im Doodle-Format speichern:
100 HIRES 15,0:LOW COL 2,0,0 110 REC 0,0,319,199,1 120 FOR R=10 TO 90 STEP 5 130 LOW COL 15,0,0 140 CIRCLE 160,100,R,100-R,1 150 NEXT 160 COLOUR 12,12: WAIT 198,1:COLOUR 11,12 170 REM --- VIDEO-RAM --- 180 SCRSV DEF $C0,4,1,2: REM HIRES VIDEO-RAM, KEIN FARB-RAM 190 SCRSV 2,8,2,"CIRCLES.DD,P,W" 200 SCRSV RESTORE 210 FEHLER:IF FF>0 THEN END 220 REM --- APPEND BITMAP --- 230 SCRSV DEF $E0,32,2,3: REM KEINE STARTADRESSE 240 SCRSV 3,8,3,"CIRCLES.DD,P,A" 250 SCRSV RESTORE 260 FEHLER 270 NRM:PRINT"IMAGE SAVED" 280 END 290 REM --- 300 PROC FEHLER 310 OPEN 1,8,15 320 INPUT#1,FF,FB$,SP,SE 330 IF FF>0 THEN DO 340 : NRM: COLOUR 11,12 350 : PRINT FF;FB$ 360 DONE 370 CLOSE 1 380 END PROC
Das so erzeugte Bild kann nicht mit SCRLD geladen werden, da dabei immer die Bitmap am Anfang der Datei erwartet wird.
Blazing Paddles Grafik speichern mit TSB[Bearbeiten | Quelltext bearbeiten]
Die Turtle-Grafik malen und speichern im Blazing-Paddles-Format
- Ab Zeile 310: Die Hintergrundfarbe wird ins Byte $FF80 geschrieben (310). Das Farb-RAM wird nicht verärbeitet (SCRSV DEF Modus 1). Bitmap und Video-RAM werden gespeichert mit sa=5 (320-340).
- Ab Zeile 380: Das Farb-RAM wird im Farbbereich 2 (SCRSV DEF High-Byte: $d8, Modus: 2) angehängt mit sa=2, wobei die Ausgabe der Startadresse unterdrückt ist (380-400).
- Zeilen 330,390,530: Mit Hilfe der Funktion D!PEEK wird die Zeilennummer LN in den Zeilen mit SCRSV ermittelt und in der Floppy-Fehlermeldung mit ausgegeben.
Beachten vor dem Ausführen: {PI} in Zeile 140 muss durch π ersetzt werden.
100 REM--- TURTLE-SAVE+APPEND --- 106 REM --- BILD MALEN --- 110 BK=0: REM HINTERGRUNDFARBE 120 HIRES 1,BK: COLOUR11,BK: MULTI10,8,2 130 A=10:B=A/1.6:AD=2:BD=AD/1.6 140 TD = 241:T=90:T0={PI}/180 150 REM TD:182/241/90.4 160 X0=90:Y0=100:C=1 170 REC 0,0,159,199,3 180 LOOP 190 : X = X0 + A*COS(T*T0) 200 : Y = Y0 + B*SIN(T*T0) 210 : EXIT IF X<0 OR X>159 OR Y<0 OR Y>199 220 : LINE X0,Y0, X,Y, C 230 : X0 = X: Y0 = Y 240 : T = T + TD 250 : A = A + AD 260 : B = B + BD 270 : C=C+1:IF C>3 THEN C=1 280 END LOOP 290 REM --- SPEICHERN --- 300 COLOUR 12,0: PAUSE1;: COLOUR11,0 310 POKE $FF80,BK: REM HINTERGRUNDFARBE 320 SCRSV DEF $C0,4,1,2: REM NUR VIDEORAM 330 SCRSV 3,8,5,"PI.TURTLE,P,W":LN=D!PEEK(57) 340 SCRSV RESTORE 350 FEHLER 360 IF FF>0 THEN CALL ABBRUCH 370 REM COLOUR 12,0:PAUSE1;:COLOUR11,0 380 SCRSV DEF $D8,4,2,2: REM PLUS FARBRAM 390 SCRSV 2,8,2,"PI.TURTLE,P,A":LN=D!PEEK(57) 400 SCRSV RESTORE:DO NULL 410 FEHLER 420 IF FF>0 THEN CALL ABBRUCH 430 NRM:COLOUR11,12,0:CLS:PRINT"... SAVED" 440 END 450 REM --- 460 PROC FEHLER 470 OPEN 1,8,15 480 INPUT#1,FF,FB$,SP,SE 490 CLOSE 1 500 END PROC 505 REM --- 510 PROC ABBRUCH 520 NRM: COLOUR 11,12,0: CLS 530 PRINT FF;FB$;" - ERROR IN LINE";LN 540 END 550 END PROC
$$ | %% | 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!