File: TECINS.TX of Tape: OS8/OS8-Latest/new-15
(Source file text) 



	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!