File: TECINS.TX of Disk: V50/Source/Source-Listing-MAC-2
(Source file text)
V50 Alphabetische Liste der TECO Instruktionen: ========================================== [Die CTRL X Befehle |^X| muessen als Control-character eingegeben werden, sonst darf man sie auch als ^,X Kombination eingeben] Oktal Befehl Funktion ===== ===== ======== Bchst 1 Bchst 2 ------ ------- 0000 ^@ Null: Wird vernachlaessigt. 0001 ^A Der Text zwischen zwei ^A's wird gedruckt [Begrenzer] 0002 ^B Os/8 Datum: Format: (Monat*32+Tag)*8+Jahr-1978 [Resultat: Numerisch] 0003 ^C Abbruch Befehl: Rueckkehr zum OS/8. |^C| {Tastatur: Bewirkt Abbruch des Programms} ^C [Programm: Sofortige Rueckkehr nach OS/8] 0004 ^D Setzt dezimale Rechenart [Schalter] 0005 ^E -- Gibt an ob gelesener Text durch FF abgeschlossen ist [Resultat: 0=Kein FF Abschluss, -1=FF Abschluss] Die folgenden 'Extended match controls' sind noch nicht aktiv. Die Befehle |^E|X, wenn sie in einem Suchtext vorkommen, ersetzen die folgenden Zeichen- Gruppen: |^E| A Irgendein Buchstabe B Irgendein Begrenzer (<SP>,<LF>,<TAB>, etc) C Irgendein Buchstabe oder Zahl D Irgendeine Zahl L Irgendein Zeilenbegrenzer (<LF>,<VT>,<FF>) V Irgendein Kleinbuchstabe W Irgendein Grossbuchstabe Oktal Befehl Funktion ===== ===== ======== Bchst 1 Bchst 2 ------ ------- 0006 ^F Gibt Wertdarstellung des 'Switch register' [Resultat: Zahl zwischen 0-4095] 0007 ^G od <BELL> [Programm: Gleiche Wirkung wie ^C] |^G| |^G| {Tastatur: Eingabenabbruch} |^G| <SP> {Tastatur: Wiederholt letzte Eingabezeile} |^G| <*> {Tastatur: Wiederholt letzten Eingabetext (alles)} 0010 ^H Multi-8 Zeit [Resultat: Stunden*64+Minuten] |BS| {Tastatur: Zeigt vorhergehende Zeile} #Text: Anschlag geht um eine Stelle zurueck# 0011 |^I| od <TAB> Gleiche Wirkung wie I (Insert), beginnt aber Zeile mit <TAB> [String Operator] #Text: Springt zum naechsten Tabulator# 0012 |^J| od <LF> [Programm: Ignoriert] {Tastatur: Zeigt naechste Zeile} #Text: 1 Zeilenvorschub# 0013 ^K od <VT> [Programm: Fehler] #Text: 4 Zeilenvorschuebe# 0014 ^L od <FF> [Programm: Gleiche Wirkung wie <FF>] #Text: 8 Zeilenvorschuebe# 0015 ^M od <CR> [Programm: Ignoriert] #Text: Macht Wagenruecklauf# 0016 ^N Gibt an ob Dateiende erreicht worden ist (EOF=|^Z|) [Resultat: 0=Kein EOF, -1=EOF gefunden] 0017 ^O Setzt oktale Rechenart [Schalter] |^O| {Tastatur: Unterbricht Ausgabe} 0020 ^P [Programm: Fehler] 0021 ^Q [Programm: Fehler] |^Q| {Tastatur: XON Funktion: Setzt XOF zurueck} 0022 ^R [Programm: Fehler] 0023 ^S [Programm: Fehler] |^S| {Tastatur: XOF Funktion. Haelt Ausgabe momentan an. Wird vom VT100 automatisch ausgefuehrt} Oktal Befehl Funktion ===== ===== ======== Bchst 1 Bchst 2 ------ ------- 0024 ^T Charakter Ein-Ausgabe [Numerischer Wert: ASCII Wert fuer {Tastatur Char}] [{Ausgabe Operator: n^T} Argument: ASCII Wert n ] 0025 ^U X Q-Register Ladebefehl [Q-Stringoperator: ^UX String$ laedt String in String-Teil von Q Register X] |^U| {Tastatur: Loescht bis zum Zeilenanfang} 0026 ^V [Programm: Fehler] 0027 ^W [Programm: Fehler] 0030 ^X [Programm: Fehler] |^X| Y Befehl im Suchtext. Alles was nicht gleich Y ist wird als Such-Charakter angenommen. [Suchstringbefehl] 0031 ^Y [Programm: Fehler] 0032 ^Z [Programm: Fehler] Ist das externe EOF 0033 |^[| od <ESC> Der T E C O Charakter ==ESCAPE== : Als '$' dargestellt [Programm: Loescht Zahl und Komma] [String-Begrenzer] <ESC><ESC> {Tastatur: Tastatur Eingabe beendet,[starte Programm]} 0034 ^\ [Programm: Fehler] 0035 ^] Tastatur Testbefehl (nur TECO V40: fuer Multi-8) [Resultat: 0=Es wurde {Eingabe gemacht} -1=Es wurde {keine Eingabe gemacht}] 0036 ^^ X Charakter => ASCII Wert Befehl [Resultat: ASCII numerischer Wert von X] 0037 ^_ Einer Komplement Operator n^_ [Resultat: einer Komplement von n] Oktal Befehl Funktion ===== ===== ======== Bchst 1 Bchst 2 ------ ------- 0040 <SP> Leertaste [ Wird ignoriert ] 0041 ! Das Ausrufzeichen umschliesst Kommentare und Adresse [Begrenzer] 0042 " X Ist logische Verzweigung. Die zweite Buchstabe gibt die Art der Verzweigung an. Zugehoerig sind ' und |. [Logische Verzweigung: n"X wahr | nicht wahr' ] [Wenn 'nicht wahr' leer ist, | nicht noetig] A Ist n ein Buchstabe? D Ist n eine Zahl? C od R Ist n ein Buchstabe oder Zahl? ( W Ist n ein Grossbuchstabe? ) noch nicht in V40 ( V Ist n ein Kleinbuchstabe? ) N Ist n ungleich Null? E od = Ist n gleich Null? G od > Ist n groesser als Null? L od < Ist n kleiner als Null? T War vorhergehende Operation wahr? F War vorhergehende Operation nicht wahr? S Hatte vorhergehende Operation Erfolg? (Succesful) U Hatte vorhergehende Operation keinen Erfolg? 0043 # n m#n macht 12-bit 'ODER' [Operator: akk.ODER.operand=>akk] (akk=Akkumulator) 0044 $ [Programm: Fehler] (Verwechslung mit <ESC>) 0045 % X Addiert 1 zum numerischen Wert von Q-Register X [Q-Operator: W(X)+1=>W(X), W(X)=> akk] 0046 & n m&n macht 12-bit 'UND" [Operator: akk.UND.operand=>akk] 0047 ' Ende der logischen Verzweigung [Begrenzer] Oktal Befehl Funktion ===== ===== ======== Bchst 1 Bchst 2 ------ ------- 0050 ( Klammert numerische Ausdruecke ein. [Operator: opr=>stack,akk=>stack,0=>akk] 0051 ) Ende Einklammerung. [Operator: stack=>oper,stack=>opr,akk.opr.oper=>akk] 0052 * n Multiplikation akk*n [Operator: akk*n=>akk] 12-bit? 0053 + n Addition akk+n [Operator: akk+n=>akk] 13-bit 0054 , Trennt zwei Argumente wie in m,nT [Trennoperator: n=>m,0=>n] 0055 - n Subtraktion akk-n [Operator: akk-n=>akk] 0056 . (dot) Gibt die jetzige Zeigerposition an. [Resultat: Zeigerstelle=>akk] 0057 / n Division akk/n [Operator: akk/n=>akk] / {Tastatur: Nach Fehlermeldung bewirkt ein sofortiges Eintippen von '/' einen umfassenden Fehlerumschrei- bungsausdruck} 0060 0 Ziffer: Aufeinander folgende Ziffern werden, je nach Rechenmodus, dezimal oder oktal, zu einer dezimalen oder oktalen Zahl zusammengebunden [Zahl: (((Zf1*basis+Zf2)*basis+Zf3)....)=>akk] 0061 1 ... 0062 2 ... 0063 3 ... 0064 4 ... 0065 5 ... 0066 6 ... 0067 7 ... 0070 8 ... 0071 9 ... Oktal Befehl Funktion ===== ===== ======== Bchst 1 Bchst 2 ------ ------- 0072 : Vorgesetzter Zusatzbefehl. [Modifikator] [Resultat: .TRUE. oder .FALSE.] E Verhindert Fehlermeldungen bei ER, EB, EW [Resultat: 0=Datei gefunden, -1=nicht gefunden] S N _ Verhindert Fehlermeldungen bei S,N,_ [Resultat: 0=Text gefunden, -1=nicht gefunden] G {Druckt Inhalt von Q-Register auf's Terminal} = == {Die Zahlen-Druckbefehle machen kein CRLF} 0073 ; Wird benuetzt um eine Iteration vorzeitig abzubrechen. [Begrenzer mit Argument: 0=Abbruch, -1=mache weiter] 0074 < n Iterationsanfang: die Befehle zwischen < und > werden eine bestimmte Anzahl oft ausgefuehrt. [Schleifenanfang mit Arg: 0 od - = keine Iteration n = n Iterationen ] [Schleifenanfang ohne Arg: (><) viele Iterationen] 0075 = {Schreibt Inhalt von akk auf's Terminal, dezimal} = = {Schreibt Inhalt von akk auf's Terminal, oktal} 0076 > Iterations Ende: siehe < 0077 ? Ermoeglicht Kontroll-Ausdruck [Programm Schalter] Erstes ? : {Programm Ablauf wird ausgedruckt} Zweites ?: [Programm laeuft normal] usw. ? {Tastatur: nach Fehlermeldung bewirkt das sofortige Eintippen von ? den Ausdruck des Programms bis zur Fehlerstelle} Oktal Befehl Funktion ===== ===== ======== Bchst 1 Bchst 2 ------ ------- 0100 @ Dieser Modifikator wird benuetzt um die normaler- weise durch <ESC> abgeschlossene Strings mit einer anderen Begrenzung zu versehen. [Vorgesetzter String-Begrenzungsmodifikator] S [Form: @nS*Text* wo '*' ein Beispiel fuer eine neue Begrenzung ist] Auch Zulaessig fuer diese Befehle: N [Es duerfen jetzt auch einzelne <ESC> Zeichen in _ *Text* vorkommen] FS FN F_ I ER EW EB ^UX EG ^A ! 0101 A Wenn dieser Befehl kein numerisches Argument hat: Befehl zum Anhaengen von Text aus Eingabedatei an Arbeitspuffer. [Mergebefehl] Wenn dieser Befehl mit einem numerischen Argument versehen ist: Befehl zum Umwandeln von Textzeichen in Zahl [Textzeichen-Wandler] Form: nA : Wandelt n+1'tes Zeichen vom Text nach dem Zeiger in eine Zahl 0102 B [Pufferanfangs Position] B=0 (immer) 0103 C Bewegt den Zeiger um eine bestimmte Anzahl Zeichen von der jetzigen Stelle [Positionsbefehl] [Form: nC, kein Arg => n=1] 0104 D Loescht eine bestimmte Anzahl Zeichen vor(+) oder hinten(-) dem Zeiger. [Zeichenloeschbefehl] [Form: nD, kein Arg => n=1] 0105 E Grosse Klasse von Doppelzeichen Befehle. [Datei Befehle] --------------- B [Edit Backup] [Form: EBger:name.ex$] Oeffnet name.ex zum Lesen und oeffnet name.bk zum Schreiben. Bei Datei Abschluss werden die Namen vertauscht. C Schreibt Eingabedatei in Ausgabedatei und schliesst die Ausgabedatei ab. F Schliesst Ausgabedatei in jetziger Zustand ab. G Gleiche Wirkung wie EX, aber geht zusaetzlich nach CCL. Form: [EG kein Arg] : Geht nach CCL und fuehrt letzter Kompilierklasse Befehl aus. [EGCOMMAND$] : Geht nach CCL mit CCL 'COMMAND'. K Vergesse letzte Ausgabedatei-Angabe (mit EB,EW) R Oeffne Datei zum Lesen W Oeffne Datei zum Schreiben (siehe EK) X Gleiche Wirkung wie EC, aber geht auch nach OS/8 Y Gleiche Wirkung wie Y, aber kein Pufferschutz. Oktal Befehl Funktion ===== ===== ======== Bchst 1 Bchst 2 ------ ------- 0105 E [Numerische Flag-Befehle] [Form] [m,nEX] : Loesche Bitwerte m, setze Bitwerte n [ nEX ] : Setze Bitwerte n, loesche alle andere [ EX ] : Ergibt numerischen Wert von Flag X * Init * Ist Anfangszustand von TECO Bitwert Wert Bedeutung D 1 0 Konvertiere in Suchtext ^X in |^X| 1 Konvertiere nicht *Init* 2 0 Textschutz bei Y und _ *Init* 1 Kein Schutz H 1 0 Wie Bitwert 2=1 1 Schreibe Mini-Fehlermeldung 2 0 Steuerung nach Bitwert 1 1 Kurze und lange Fehlermeldung *Init* 4 0 Keine ?-Simulation nach Fehler *Init* 1 ?-Simulation nach Fehler J Lese-nur Befehl mit num. Resultat 0 Multi-8 Terminal Nummer (OS/8=0) -1 Rechner Typ: PDP8=256 -2 Speicher Groesse: Letztes Feld -3 Q-Speicher Groesse: Anzahl Zeichen -4 Anzahl Zeichen jetzt in Q-Speicher -5 Geraete Nummer von wo TECO herkommt O TECO Version-Nummer (V40) S Wird momentan als Hilfsspeicher fuer CCL Befehle benuetzt. T 1 0 Zeichen werden in ^X Form konvertiert 1 Zeichen als Steuerzeichen geschickt 2 0 Kein Videoterminal *Init* (Scope) 1 Videoterminal *Init* (Scope) 4 0 Tastatur hat keine Kleinbuchstaben 1 Tastatur hat Kleinbuchstaben *Init* 8 0 ^T hat Echo, Multi-8 Echo *Init* 1 ^T hat kein Echo, Multi-8 kein Echo 32 0 Normale ^T Eingabe *Init* 1 ^T Eingabe ohne Warten: Wenn keine Eingabe gibt ^T -1 zurueck 128 0 ^C Abbruch *Init* (nach Teco's *) 1 Fehler Abbruch *Init* (vor Teco's *) 256 0 Lange Zeilen schreiben (VTEDIT)*Init* 1 Lange Zeilen abhauen (VTEDIT) 512 0 Keine VT52 Unterstuetzung *Init*Check 1 VT52,VT100 Unterstuetzung *Init*Check 2048 0 ^C bricht ab *Init* 1 ^C normales Zeichen (nur einmal) U Alle 0 Kleinbuchstaben werden konvertiert 'X 1 1 Grossbuchstaben werden konvertiert 2048 1 Keine Konversion *Init* Oktal Befehl Funktion ===== ===== ======== Bchst 1 Bchst 2 ------ ------- 0106 F Diese drei Befehle sind wie die entsprechenden Suchbefehle, aber ersetzen den gesuchten Text durch einen anderen. [Such-Ersetzbefehle Form: FXsuchtext$ersatz$] N Wie den Interseiten Suchbefehl N S Wie den Intraseiten Suchbefehl S _ Wie den Interseiten Suchbefehl _ 0107 G X Holt den Inhalt von Q-Textregister X ins Puffer Der Text wird an der Stelle des Zeigers eingefuegt [Q-Text Einfueger] 0110 H Numerischer Doppelwert B,Z fuer 2-Arg Operatoren [Resultat: B=>m Z=>n] ['Alles' Operator] 0111 I Der Befehl I mit Text und Begrenzer fuegt dieser Text an der jetzige Stelle des Zeigers im Puffer ein [Texteinfueger] Der Befehl I mit Arg und Begrenzer fuegt das ent- sprechende Zeichen an der jetzigen Stelle des Zeigers im Puffer ein [Zeicheneinfueger] (Null kann nicht eingefuegt werden) 0112 J Der Befehl nJ setzt den Zeiger an der Stelle n+1 [Zeigersetzer] [kein Arg => n=0] 0113 K Befehl mit 1 oder 2 Argumente zum Loeschen von Zeilen oder Pufferbereiche [Loeschbefehl] Form: (kein n => n=1) nK : Loescht vom Zeiger bis zum n'ten <LF> m,nK : Loescht das Bereich von Pos m bis Pos n 0114 L Befehl um Zeilenorientiert der Zeiger zu bewegen [Zeilen-Zeigersetzer] Form: (kein n => n=1) nL : Setzt Zeiger nach dem n'ten <LF> 0115 M X Ruft Subroutine oder Programm in Q-register X an [Call Funktion] Oktal Befehl Funktion ===== ===== ======== Bchst 1 Bchst 2 ------ ------- 0116 N Form: Ntext$. Sucht 'text' im Puffer. Wenn nicht gefunden, lese naechste Seite mit P Befehl. [Interseite Suchbefehl] 0117 O Form: Oadress$. Das TECO Programm geht beim Label !adress! weiter. [Unbedingte Verzweigung] 0120 P Befehl zum Herausschreiben vom Puffer in Datei nP : Schreibt Puffer heraus und liest neue Seite hinein. Die <FF>'s werden uebertragen Das ganze wird n mal ausgefuehrt m,nP Schreibt die Zeichen von Stelle m bis n in die Ausgabedatei. Das Puffer wird nicht geloescht W PW : Das ganze Puffer wird ausgegeben mit <FF> [Datei-Schreibbefehl] 0121 Q X Befehl zum Lesen des numerischen Teils des Q-Reg X [Resultat: W(X) => akk] 0122 R Form: nR : Der Zeiger wird um -n Stellen verschoben [Zeigerschieber] (Rueckwaerts, in Gegensatz zu C) 0123 S Form: Stext$ 'text' wird in der jetzigen Seite gesucht [Suchbefehl] 0124 T Bestimmte Teile des Puffers werden ausgedruckt Argumente wie beim K Befehl {Schreibbefehl} 0125 U X Das numerische Q-Reg X wird mit dem Argument gesetzt [Q-Reg Wertzuweisung] [akk => W(X)] 0126 V Die Zeile die den Zeiger enthaelt wird gedruckt [Zeilendrucker] (wie 0TT) 0127 W Dieser Befehl ist nur gueltig wenn ein VT52 kom- patibles Vidoterminal vorhanden ist Arg -1: Erfrische den ganzen Videoschirm Arg -n: Die ersten |n|-1 Zeilen muessen beim naechsten -1W Befehl unbedingt erfrischt werden 0130 X X Ein bestimmter Bereich vom Puffer wird im Text- teil des Q-Reg X geladen. Argumente wie bei K [Q Textlader] Oktal Befehl Funktion ===== ===== ======== Bchst 1 Bchst 2 ------ ------- 0131 Y Die naechste Seite der Eingabedatei wird im Puffer geladen (Normalerweise muss das Puffer leer sein: siehe ED und EY) [Pufferyanker] 0132 Z Numerischer Wert, der die Stelle des Puffer- endes darstellt [Resultat: Anzahl Zeichen => akk] 0133 [ [Programm: Fehler] 0135 \ Fuer Umwandlung von Textziffern in Zahl und umgekehrt [Zahlenumwandler] Form: n\ : Arg wird mit jetzigem Radix umgewandelt und an der jetzigen Stelle des Zeigers im Puffer eingefuegt \ : Resultat: Zahl, die der Zifferreihe, die auf den Zeiger folgt, entspricht. Zeiger nach Umwandlung nach Zifferreihe positioniert 0136 ] [Programm: Fehler] 0137 _ [Suchbefehl] Wie N aber ohne herausschreiben 0140-0176 Kleinbuchstaben: Werden vom TECO Programm wie Grossbuchstaben interpretiert 0177 <DEL> {Loescht eingegebene Zeichen} Dear Herbert, wie du vielleicht gemerkt hast, bin ich am Ende ein wenig muede geworden. Bitte mach die letzten 2-3 Seiten ein bisschen schoener. Sorry!