mirror of
https://github.com/PDP-10/its.git
synced 2026-01-11 23:53:12 +00:00
344 lines
11 KiB
Plaintext
Executable File
344 lines
11 KiB
Plaintext
Executable File
AN ANNOTATED OUTLINE OF TECO COMMANDS
|
||
*************************************
|
||
|
||
|
||
META-NOTATION
|
||
=============
|
||
|x Denotes the single character, control-x.
|
||
| Used alone to denote alternation.
|
||
m | n | arg Integer arguments.
|
||
string String argument.
|
||
cmd A command string.
|
||
$ Denotes the character altmode unless mentioned otherwise.
|
||
k Denotes either "m,n", or "n"; a text range of characters m through
|
||
n, or n lines.
|
||
file Denotes a file name pair, e.g., "FOO BAR".
|
||
dir Denotes a device and directory specification, e.g., "DSK: USERS;".
|
||
|
||
|
||
SPECIAL CHARACTERS
|
||
==================
|
||
|G Quit to TECO top-level; cancels partial command line.
|
||
|Z Interrupt to DDT.
|
||
altmode Terminates text argument; two successive altmodes terminate
|
||
command string.
|
||
rubout Deletes last character typed in.
|
||
|
||
QUOTE
|
||
-----
|
||
|Q Quote next character.
|
||
|
||
MODIFIERS
|
||
---------
|
||
: | ^ Prefix to certain commands, modifies them.
|
||
|
||
LOGICAL CONNECTIVES
|
||
-------------------
|
||
& Logical and, an arithmetic operator.
|
||
# Inclusive or, an arithmetic operator.
|
||
|A Exclusive or, an arithmetic operator.
|
||
|
||
ARITHMETIC
|
||
----------
|
||
0-9 Digits: xxxx is interpreted in base FS IBASE$ (10)
|
||
xxxx. is interpreted in base FS I.BASE$ (8)
|
||
+ Addition, an arithmetic operator.
|
||
space Same as "+", except that space, by itself, is not a non-null arg.
|
||
- Subtraction, an arithmetic operator.
|
||
* Multiplication, an arithmetic operator(with no operator precedence).
|
||
/ Division, an arithmetic operator(with no operator precedence).
|
||
( | ) Parentheses, grouping in arithmetic expressions.
|
||
|
||
ARGUMENT SEPARATOR
|
||
------------------
|
||
, Separates numerical arguments.
|
||
|
||
|
||
THE BUFFER
|
||
==========
|
||
. Value is number of char to left of pointer.
|
||
Z Value is number of char in buffer*.
|
||
H Equivalent to "B,Z", i.e., specifies whole buffer*.
|
||
B Value is 0, i.e., beginning of buffer*.
|
||
*Meaning is modified by use of virtual boundaries.
|
||
|
||
INSERTING
|
||
---------
|
||
Istring$ Insert string in buffer to left of pointer.
|
||
^Ixstringx Insert string delimited by char x to left of pointer.
|
||
nI Insert the char with ASCII code n.
|
||
m,nI Insert m copies of the char with code n.
|
||
tab Horizontal tab, self-inserting character.
|
||
backspace Backspace, self-inserting character.
|
||
n\ Insert printed representation of n (in base ..E).
|
||
|^ Value = ASCII code of next char in cmd.
|
||
FI Read one char from TTY and return its ASCII code as value.
|
||
|
||
ASCII
|
||
-----
|
||
mA Value = ASCII code of char m positions to right of ptr.
|
||
0A => char to immediate left of ptr.
|
||
|
||
UPPER-CASE/LOWER-CASE
|
||
---------------------
|
||
F$ Controls case conversion on input/output ($ => dollar).
|
||
kFC Convert text range k to lower-case.
|
||
|
||
MOVING AROUND
|
||
-------------
|
||
|
||
ABSOLUTE POSITION
|
||
-----------------
|
||
mJ Position ptr to after m-th char in buffer.
|
||
|
||
RELATIVE CHARACTER POSITION
|
||
---------------------------
|
||
mR Move ptr left m char; R => 1R, -mR => mC.
|
||
m:R Same as mR but returns -1(move OK) or 0(if move would cause an error).
|
||
mC Move ptr right m char; C => 1C.
|
||
m:C Returns value like m:R.
|
||
\ Move ptr right over number, return number's value.
|
||
|
||
LINE POSITION
|
||
-------------
|
||
mL Move ptr to beginning of m-th line after current position;
|
||
0L => beginning of current line.
|
||
m,nL Same as m+n-.J, used by FW, etc.
|
||
m:L Do mL, then backup over CR-LF; :l => end of current line.
|
||
|
||
WORD POSITION
|
||
-------------
|
||
nFW Returns ".,m", a buffer range where m is the position immediately after
|
||
the n-th word(contiguous string of non-delimiters; see ..D, the delimiter
|
||
dispatch table).
|
||
-nFW Returns "m,.", the range to the left.
|
||
n:FW Same as FW, but stops before the n-th word; i.e., n:FWL = nFWL-FWL.
|
||
n^FW Same as FW, but finds LISP atoms, not words.
|
||
nFWL Do an nFW, yielding ".,m", move to m (=m+.-.J).
|
||
nFWR Same as nFWL.
|
||
|
||
LIST POSITION
|
||
-------------
|
||
nFL Returns ".,m", where m is the position immediately after the
|
||
n-th list to the right.
|
||
-nFL Returns "m,.", the range to the left.
|
||
n^FL Same as nFL, but finds S-expressions, not lists.
|
||
nFU Returns ".,m", where m is the position immediately after the n-th
|
||
level up in parentheses to the right.
|
||
-nFU Same as nFU, but returns "m,.", and works to the left.
|
||
nFD Returns ".,m", where m is the position immediately after the n-th
|
||
level down in parentheses to the right.
|
||
-nFD Same as nFD, but returns "m,.", and works to the left.
|
||
nFLL Does nFL, yielding ".,m", moves to m.
|
||
nFLR Same as nFLL.
|
||
|
||
DELETING
|
||
--------
|
||
|
||
ABSOLUTE POSITION
|
||
-----------------
|
||
m,nK Kill chars in the range m,n. Move ptr there.
|
||
|
||
CHARACTER
|
||
---------
|
||
nD Delete n chars to right of ptr.
|
||
-nD Delete n chars to left of ptr.
|
||
|
||
LINE
|
||
----
|
||
nK Kill chars from . to position nL would have moved to.
|
||
K => 1K, kill to beginning of next line.
|
||
n:K Kill chars from . to position n:L would have moved to.
|
||
:K => 1:K, kill to end of current line.
|
||
|
||
WORD
|
||
----
|
||
nFWK Do an nFW returning ".,m"; kill chars in this range.
|
||
nFWD Same as nFWK.
|
||
|
||
LIST
|
||
----
|
||
nFLK Do an nFL returning ".,m"; kill chars in this range.
|
||
nFLD Same as nFLK.
|
||
|
||
|
||
TYPE-OUT
|
||
========
|
||
kT Type out text in range k (n lines or m,n chars).
|
||
kV Display text in range k on CRT.
|
||
FTstring$ Types its string argument.
|
||
FVstring$ Displays its string argument.
|
||
kVW Does kV, then waits for TTY input of one char whose ASCII code
|
||
is returned as value.
|
||
k= Types out k ("n" or "m,n") in current output radix(in ..E).
|
||
|
||
|
||
SEARCH
|
||
======
|
||
nSstring$ Find n-th occurrence of string searching forward and position ptr after it.
|
||
-nSstring$ Same as nSstring$, but search backward and position ptr before n-th string.
|
||
n^Sxstringx Same as nSstring, where string is delimited by any char x.
|
||
n:Sstring$ Same as nSstring$, but returns value = -n if successful, 0 if not.
|
||
Special chars in string:
|
||
|B Matches any delimiter(see ..D).
|
||
|Nx Matches any char but x.
|
||
|O Divides string into alternate patterns.
|
||
|Qx Quotes x.
|
||
|X Matches any char.
|
||
nNstring$ Same as nSstring$, but does P if end of buffer is reached.
|
||
n_string$ Same as nSstring$, but does Y if end of buffer is reached.
|
||
kFBstring$ Same as Sstring$ in the search domain defined by k; for k = m,n where
|
||
m>n, search backwards; ":" and "^" modifiers work.
|
||
FK Returns value = - FS INSLEN$ = - length of last string inserted, or found
|
||
by search or FW. FK < 0 except for backward search or FW.
|
||
|
||
|
||
SORT
|
||
====
|
||
|Pcmd0$cmd1$cmd2$ ASCII sort command, with the following algorithm:
|
||
Move ptr to start of buffer;
|
||
..0 := cmd0; ..1 := cmd1; ..2 := cmd2;
|
||
Iterate:
|
||
Ptr is at start of next record;
|
||
Cmd0 moves ptr to start of key;
|
||
Cmd1 moves ptr to end of key;
|
||
Cmd2 moves ptr to end of record;
|
||
Do a sort of records based on keys;
|
||
Notes: Dollar signs in the cmdi are replaced by altmodes.
|
||
If FS ^P CASE$ .NEQ. 0, then |P ignores case.
|
||
|
||
|
||
FILES
|
||
=====
|
||
|
||
DIRECTORIES
|
||
-----------
|
||
ETfile$ Set default filenames to file.
|
||
EL Type out listing of default directory.
|
||
EYdir$ Same as EL, but with specified device and sname.
|
||
EM Insert listing of default directory in buffer.
|
||
EZdir$ Same as EM, but with specified device and sname.
|
||
|
||
OPEN READ
|
||
---------
|
||
ERfile$ Opens file for input.
|
||
EPfile$ Does ERfile$, then bigprints filename twice on device open for writing.
|
||
|
||
OPEN WRITE
|
||
----------
|
||
EI Open a file "_TECO_ OUTPUT" for writing on default device and sname.
|
||
0EI Same as EI, but sets default device to DSK:.
|
||
:EI Same as EI, but uses current filename defaults rather than "_TECO_ OUTPUT".
|
||
EWdir$ Same as EI, but with specified device and sname.
|
||
:EW dir file$ Same as EW, but also with specified filenames.
|
||
|
||
INPUT
|
||
-----
|
||
Y Kills the buffer; inserts one page from current input file into buffer.
|
||
^Y Kills the buffer; yanks the entire input file into buffer.
|
||
A Append next page of input file to buffer (no arg allowed).
|
||
n:A Append n lines or up to page boundary of input file to buffer.
|
||
^A Append all of input file, and close file.
|
||
nP Output buffer and "|L", kill buffer, read one page from input file;
|
||
all done n times.
|
||
|
||
OUTPUT
|
||
------
|
||
nP See description above under input.
|
||
m,nP Output specified range of buffer, but do not clear it or input.
|
||
nPW Output buffer and "|L", but do not clear it or input; done n times.
|
||
EEfile$ Same as "infinityP EFfile$ EC".
|
||
|
||
CLOSE
|
||
-----
|
||
EFfile$ Close the output file and change its name to "file".
|
||
EC Close the input file.
|
||
|
||
DELETE
|
||
------
|
||
EDfile$ Delete the file.
|
||
|
||
COPY
|
||
----
|
||
E_old$new$ Make a copy of file "old" and name it "new".
|
||
|
||
LINK
|
||
----
|
||
EQfrom$to$ Create a link named "from" pointing to the file "to".
|
||
|
||
RENAME
|
||
------
|
||
ENold$new$ Rename the file "old" to have name "new".
|
||
|
||
|
||
Q-REGISTERS
|
||
===========
|
||
:Iqstring$ Insert string into Q-reg q, replacing prior contents.
|
||
n:Iq Insert char with ASCII code n into Q-reg q, replacing prior contents.
|
||
^:Iqxstringx Same as :Iqstring$, where string is delimited by any char x.
|
||
m,n:Iq Same as n:Iq, but inserts m copies of char.
|
||
nUq Inserts number n in Q-reg q; returns no value.
|
||
m,nUq Inserts number n in Q-reg q; returns m.
|
||
kXq Inserts text range k into Q-reg q, replacing prior contents.
|
||
k^Xq Same as kXq, but appends text to q's contents.
|
||
kFXq Same as X and K combined, i.e., "kXq kK".
|
||
nFWXq Combines nFW with Xq.
|
||
nFLXq Combines nFL with Xq.
|
||
Gq Inserts text (or decimal representation of number) from Q-reg q into buffer.
|
||
FS INSLEN$ is set to length of inserted string.
|
||
%q Increments numeric contents of Q-reg q and returns result.
|
||
[q Push text or number from Q-reg q onto Q-reg push-down list.
|
||
]q Pop text or number from Q-reg push-down list into Q-reg q.
|
||
FQq Value = number of char in Q-reg q or -1 if a number.
|
||
|
||
|
||
MACROS
|
||
======
|
||
|
||
EXECUTE
|
||
-------
|
||
m,nMqstring$ Execute string or buffer contents of Q-reg q as a TECO command. If q
|
||
contains a number, execute the corresponding |R-mode character.
|
||
|
||
ARGUMENTS
|
||
---------
|
||
|X Value is m, first arg to m,nMq. Only used inside macros.
|
||
|Y Value is n, second arg to m,nMq (or only arg to nMq).
|
||
F|X Value is all args to kMq.
|
||
F|Y Value is number of args to kMq.
|
||
|]|X Reads and returns string arg which follows kMq.
|
||
|
||
ITERATION
|
||
---------
|
||
n< cmd > Command is executed n times, or indefinitely if n is null.
|
||
n; Does nothing if n<0, otherwise passes control to char after next ">",
|
||
i.e., terminates iteration. Null n => use value of last search.
|
||
|
||
TEST AND BRANCH
|
||
---------------
|
||
arg"x then-cmd '"# else-cmd '
|
||
Conditional which checks arg according to condition x; discards arg;
|
||
executes then-cmd if condition was true, else-cmd if false.
|
||
arg"x then-cmd '
|
||
Conditional without else-cmd.
|
||
argF"x Same as arg"x, but passes first arg to then-cmd or else-cmd.
|
||
Note: The conditions x are:
|
||
B Arg is ASCII code for a delimiter(see ..D).
|
||
C Arg is ASCII code for a non-delimiter.
|
||
E Arg = 0.
|
||
G Arg > 0.
|
||
L Arg < 0.
|
||
N Arg .NEQ. 0.
|
||
|
||
TAG
|
||
---
|
||
!label! Defines label, or brackets comments.
|
||
|
||
GOTO
|
||
----
|
||
Olabel$ Sends command execution to character after !label!.
|
||
|
||
|
||
Compiled by: Mike Wirth (MCW@MIT-MC)
|
||
Oct. 29, 1976
|
||
|