বিজ্ঞাপন
বিজ্ঞাপন
PDP-11
TECO User's Guide
Order No. DEC-11-UTECA-B-D
February 1980
This document describes the operating procedures for the TECO (Text Editor
and Corrector) program. TECO is distributed with DIGITAL Operating Systems,
but is unsupported by DIGITAL; TECO is Category C software.
PDP-11
TECO User's Guide
Order No. DEC-11-UTECA-B-D
SUPERSESSION/UPDATE INFORMATION: Supersedes DEC-11-UTECA-A-D
SOFTWARE VERSION: TECO-11 V36
TECO-10 V3
TECO-8 V7
To order additional copies of this document, contact the Software Distribution
Center, Digital Equipment Corporation, Maynard, Massachusetts 01754
digital equipment corporation - maynard, massachusetts
The information in this document is subject to change without notice
and should not be construed as a commitment by Digital Equipment
Corporation. Digital Equipment Corporation assumes no responsibility
for any errors that may appear in this document.
The software described in this document is furnished under a license
and may only be used or copied in accordance with the terms of such
license.
Digital Equipment Corporation assumes no responsibility for the use or
reliability of its software on equipment that is not supplied by
DIGITAL.
The software described in this manual is Category C software; DIGITAL
assumes no responsibility to support the software nor to answer
inquireis about it. If you have problems with this software, you may
contact the TECO Special Interest Group of DECUS (Digital Equipment
Corporation Users" Society) at the following address:
TECO SIG
c/o DECUS, MR2-3/E55
One Iron Way
Marlboro, MA 01752
Copyright © 1974, 1975, 1976, 1977, 1980 by Digital Equipment Corporation
The postage prepaid READER'S COMMENTS form on the last page of this
document requests the user's critical evaluation to assist us in
preparing future documentation.
The following are trademarks of Digital Equipment Corporation:
DIGITAL DECsystem-10 MASSBUS
DEC DECtape OMNIBUS
PDP DIBOL 0S/8
DECUS EDUSYSTEM PHA
UNIBUS FLIP CHIP RSTS
COMPUTER LABS FOCAL RSX
COMTEX INDAC TYPESET-8
DDT LAB-8 TYPESET-11
DECCOMM DECSYSTEM-20 TMS-11
ASSIST-11 RTS-8 ITPS-10
VAX VMS SBI
DECnet IAS PDT
DATATRIEVE TRAX
Standard TECO
INTRODUCTION
CHAPTER
1
e e e e se e e e es e e e
O OIE WWWWWN =
2 2 2 2 PP HP HH HH EH HH
INTERLUDE
CHAPTER
CHAPTER
CHAPTER
2
Ww
w wwwwwwwww
WW WWW UN NNN
4
e e. © . © ©
EWN) U“ N —
CONTENTS
BASICS OF TECO
USING TECO
DATA STRUCTURE FUNDAMENTALS
FILE SELECTION COMMANDS
Simplified File Selection
Input File Specification (ER command)
Output File Specification (EW command)
Closing Files (EX command)
INPUT AND OUTPUT COMMANDS
POINTER POSITIONING COMMANDS
TYPE OUT COMMANDS
Immediate Action Commands
TEXT MODIFICATION COMMANDS
SEARCH COMMANDS
SAMPLE EDITING JOB
INVOKING TECO
RUNNING TECO
CREATING A NEW FILE
EDITING AN EXISTING FILE
SWITCHES ON TECO AND MAKE COMMANDS
INVOKING A TECO PROGRAM
USER INITIALIZATION
CONVENTIONS AND STRUCTURES
TECO CHARACTER SET
TECO COMMAND FORMAT
Numeric Arguments
Text Arguments
Colon Modifiers
DATA STRUCTURES
Text Buffer
Q-registers
Q-register Push-down List
Numeric Values and Flags
COMMAND STRING EDITING
O OO Jane
17
18
18
18
18
19
20
21
22
Раде 1
Standard TECO
CHAPTER 5
o © e e o
н-Н-ок© 60 =) Сл осл 45 (50 ВО НОНО он ООН
. e
DUD WN
U1 UT UT UI UT UN UN UN UT UNI UT UN UT UT UNT UT UN
COMMAND DESCRIPTIONS
FILE SPECIFICATION COMMANDS
File Opening Commands
File Specification Switches
File Close and Exit Commands
Secondary Stream Commands
Wildcard Commands
Direct I/O to Q-Registers
PAGE MANIPULATION COMMANDS
BUFFER POINTER MANIPULATION COMMANDS
TEXT TYPE OUT COMMANDS
DELETION COMMANDS
INSERTION COMMANDS
SEARCH COMMANDS
SEARCH ARGUMENTS
Q-REGISTERS
ARITHMETIC AND EXPRESSIONS
SPECIAL NUMERIC VALUES
COMMAND LOOPS
BRANCHING COMMANDS
CONDITIONAL EXECUTION COMMANDS
RETRIEVING ENVIRONMENT CHARACTERISTICS
MODE CONTROL FLAGS
SCOPE COMMANDS
Video Terminal Scope Commands
Refresh Scope Commands
PROGRAMMING AIDS
Text Formatting
Comments
Messages
Tracing
Convenience Characters
Memory Expansion
Case Control
MANIPULATING LARGE PAGES
TECHNIQUES AND EXAMPLES
Page ii
Standard TECO
APPENDIX A
APPENDIX B
APPENDIX C
APPENDIX
APPENDIX
APPENDIX
APPENDIX
APPENDIX
APPENDIX
GLOSSARY
INDEX
Page iii
ASCII CHARACTER SET 91
ERROR MESSAGES 92
INCOMPATIBLE, OBSOLETE, AND SYSTEM-SPECIFIC
COMMANDS 98
SPECIFIC FEATURES OF TECO-11 98
TECO Commands 98
String Build Constructs 99
SPECIFIC FEATURES OF RT-11 100
SPECIFIC FEATURES OF RSTS/E 100
SPECIFIC FEATURES OF RSX-11/M, RSX-11/D,
and IAS 101
SPECIFIC FEATURES OF VAX/VMS 101
SPECIFIC FEATURES OF 0S/8 101
SPECIFIC FEATURES OF TOPS-10 101
RT-11 OPERATING CHARACTERISTICS 104
RSTS/E OPERATING CHARACTERISTICS 107
RSX-11 OPERATING CHARACTERISTICS 109
VAX/VMS OPERATING CHARACTERISTICS 114
0S/8 OPERATING CHARACTERISTICS 120
TOPS-10 OPERATING CHARACTERISTICS 130
136
147
Standard TECO Page 1
Introduction
INTRODUCTION
TECO is a powerful text editing program that runs under most DIGITAL
operating systems. TECO may be used to edit any form of ASCII text:
program sources, manuscripts, or correspondence, for example. Since
TECO is а character-oriented editor rather than a line editor, text
edited with TECO does not have line numbers associated with it, and it
is not necessary to replace an entire line of text in order to change
one character.
The versatility of TECO makes it complex. To help users deal with
this complexity, this manual presents TECO in two stages. The first
part (Chapter 1) contains basic information and introduces enough TECO
commands to allow the novice TECO user to begin creating and editing
text files after only a few hours of instruction. The introductory
commands are sufficient for any editing application; however, they
are less powerful, in many cases, than the advanced commands presented
later.
Subsequent chapters describe the full TECO command set, including a
review of the introductory commands presented in Chapter 1. These
chapters also introduce the concept of TECO as a programming language
and explain how basic editing commands may be combined into "programs"
sophisticated enough to handle the most complicated editing tasks.
The early sections of this manual include few specific examples of
commands, since all TECO commands have a consistent, logical format
which will quickly become apparent to the novice user. However, the
end of Chapter 1 does include an extensive example employing most of
the commands introduced up to that point, Students of TECO should
experiment with each command as it is introduced, then duplicate the
examples on their computer.
This manual is intended to be a reference manual and, except for
Chapter 1, is not a tutorial. After Chapter 1, it is assumed that the
reader has a general familiarity with TECO and is referring to this
manual to find detailed information.
The following notation is used in this manual to represent special
characters:
Notation ASCII code (octal) Name
<NULL> 0 Null
<B&> 10 Backspace
<TAB> 11 Tab
<LF> 12 Line Feed
<VT> 13 Vertical Tab
<FF> 14 Form Feed
<CR> 15 Carriage Return
<ESCAPE> or $ 133 Escape or Altmode
<CTRL/x> - Control-x
<space> 40 Space
<DELETE> 177 Delete or Rubout
Control characters, <CTRL/x>, are produced by striking the CONTROL key
and a character key simultaneously.
Throughout this manual, upper case characters will be used to
represent TECO commands.
Standard TECO Page 2
Basics of TECO
CHAPTER 1
BASICS OF TECO
1.1 USING TECO
TECO may be called from command level by typing the appropriate
command, followed by a carriage return:
For RT-11, 0S/8, TOPS-10, and TOPS-20 R TECO
For RSTS/E RUN STECO
For RSX-11 RUN STEC
For VAX/VMS RUN SYSSSYSTEM:TECO
TECO will respond by printing an asterisk at the left margin to
indicate that it is ready to accept user commands. At this point, you
may type one or more commands.
A TECO command consists of one or two characters which cause a
specific operation to be performed. Some TECO commands may be
preceded or followed by arguments. Arguments may be either numeric or
textual. A numeric argument is simply an integer value which can be
used to indicate, for example, the number of times a command should be
executed. A text argument is a string of ASCII characters which might
be, for example, words of text or a file specification,
If a command requires a numeric argument, the numeric argument always
precedes the command. If a command requires a text argument, the text
argument always follows the command. All text arguments are
terminated by a special character (usually an ESCAPE) which indicates
to TECO that the next character typed will be the first character of a
new command.
TECO accumulates commands as they are typed in a command string, and
executes commands upon receipt of two consecutive ESCAPE characters.
The ESCAPE is a non-printing character which may be labelled ESC, ALT,
or PREFIX on your keyboard. TECO echoes a dollar sign ($) whenever an
ESCAPE is typed. The dollar sign character is used in examples
throughout this manual to represent ESCAPE. Note that the carriage
return character has no special significance to TECO. Only the double
ESCAPE forces execution of the command string. |
TECO executes command strings from left to right until either all
commands have been executed or a command error is recognized. It then
prints an asterisk to signal that additional commands may be entered.
If TECO encounters an erroneous command, it prints an error message
and ignores the erroneous command as well as all commands which follow
it. All error messages are of the form:
2XXX Message
where XXX is an error code and the message is a description of the
error. Some error messages mention the specific character or string
of characters in error. In these error messages, TECO represents the
non-printing special characters as follows:
Standard TECO Page 3
Using TECO
Character Form Displayed
<TAB> <TAB>
<LF> <LF>
<VT> <VT>
<FF> <FF>
<CR> <CR>
<ESCAPE> <ESC>
<CTRL/x> <^х>
Every error message is followed by an asterisk at the left margin,
indicating that TECO is ready to accept additional commands. If you
type a single question mark character after a TECO-generated error
message, TECO will print the erroneous command string up to and
including the character which caused the error message. This helps
you to find errors in long command strings and to determine how much
of a command string was executed before the error was encountered.
You can correct typing errors by hitting the DELETE key, which may be
labeled DEL or RUBOUT on your keyboard. Each depression of the DELETE
key deletes one character and echoes it on your terminal, beginning
with the last character typed. If your terminal is a CRT, TECO will
actually erase the deleted character from the screen. You can delete
an entire command string this way, if necessary. To delete an entire
line of commands, enter the character <CTRL/U>, typed by holding down
the CONTROL key while depressing the "U" key.
When you are done editing, use the EX command to exit TECO, as
described below in section 1.3.4.
Standard TECO
Page 4
Data Structure Fundamentals
1.2 DATA STRUCTURE FUNDAMENTALS
TECO considers any string of ASCII codes to be text. Text is broken
down into units of characters, lines, and pages. A character is one
ASCII code. A line of text is a string of ASCII codes including one
line terminator (usually a line feed) as the last character on the
line. A page of text is a string of ASCII codes including one form
feed character as the last character on the page.
TECO maintains a text buffer in which text ¡is stored. The buffer
usually contains one page of text, but the terminating form feed
character never appears in the buffer. TECO also maintains a text
buffer pointer. The pointer is a movable position indicator which is
never located directly on a character, but is always between
characters: between two characters in the buffer, before the first
character in the buffer, or after the last character in the buffer.
Line feed and form feed characters are inserted automatically by TECO.
A line feed is automatically appended to every carriage return typed
to TECO and a form feed is appended to the contents of the buffer by
certain output commands. Additional line feed and form feed
characters may be entered into the buffer as text. If a form feed
character is entered into the buffer, it will cause a page break upon
output; text following the form feed will begin a new page.
Finally, TECO maintains an input file and an output file, both of
which are selected by the user through file specification commands.
The input file may be on any device from which text may be accepted.
The output file may be on any device on which edited text may be
written.
TECO functions as a "pipeline" editor. Text is read from the input
file into the text buffer, and is written from the buffer onto the
output file. Once text has been written to the output file, it cannot
be accessed again without closing the output file and reopening it as
an input file.
Standard TECO
Page 5
File Selection Commands
1.3 FILE SELECTION COMMANDS
Input and output files may be specified to TECO in several ways. The
following sections present first a simple method for specifying files,
and then more sophisticated commands that permit flexible file
selection.
NOTE
All of the following file selection commands are shown with a
general argument of "filespec". The actual contents of this
filespec argument are operating system dependent. See the
operating characteristics appendices. Examples include a
mixture of file specifications from various operating systems.
1.3.1 Simplified File Selection
For most simple applications, you can use special operating system
commands to specify the name of the file you wish to edit at the same
time that you start up TECO.
To create a new “ile:
MAKE filespec
This command starts up TECO and creates the specified file for output.
To edit an existing file:
TECO filespec
This command starts up TECO and opens the specified file for editing
while preserving the original file (as a backup file). It also
automatically brings the first page of the file into the text buffer.
These functions simulate the EB command described in Chapter 5.
If any of the above commands do not seem to work on your operating
System, consult the appropriate appendix for information about how to
install TECO and its associated operating system commands.
Standard TECO
Page 6
File Selection Commands
1.3.2 Input File Specification (ER command)
TECO will accept input text from any input device in the operating
system, The input device may be specified by means of an ER command
terminated by an ESCAPE. The ER command causes TECO to open the
specified file and print an error message if the file is not found.
This command does not cause any portion of the file to be read into
the text buffer, however. The following examples illustrate use of
the ER command.
COMMAND FUNCTION
ERfilespecS General form of the ER command where "filespec"” is
the designation of the input file. The command is
terminated by an ESCAPE, which echoes as a dollar
sign.
ERPR:$ Prepare to read an input file from the paper tape
reader.
ERPROG .MACS Prepare to read input file PROG.MAC from the
system's default device.
ERDX1 : PROG .FORS Prepare to read input file PROG.FOR from DXl:.
TECO will only keep one input and one output file open and selected at
a time. The current input file may be changed by simply using the ER
command to specify a new file,
It is not always necessary to specify an input file. If you want to
create a file without using any previously edited text as input, you
may type commands to insert the necessary text directly into the text
buffer from the keyboard and, at the end of each page, write the
contents of the buffer onto an output file. Since all input is
supplied from the keyboard, no input file is necessary.
Standard TECO Page 7
File Selection Commands
1.3.3 Output File Specification (EW command)
TECO will write output text onto any output device in the operating
system. The output file may be specified by means of an EW command
terminated by an ESCAPE. If the output device is a file-structured
device (for example, a disk), the file name and any extension must be
supplied. If a file name is specified but no device is explicitly
defined, the system's default device is assumed. The following
examples illustrate use of the EW command.
COMMAND FUNCTION
EWfilespecs$ General form of the EW command where "filespec" is
the designation of the output file. The command
is terminated by an ESCAPE, which echoes as a
dollar sign.
EWSYS:TEXT.LSTS Prepare to write output file TEXT.LST on SYS:.
EWPROGS Prepare to write output file PROG on the system's
default device.
ERDX1 : INPUT .MACSEWOUTPUT.MACSS
Open an input file INPUT.MAC to be found on DXl:
and open an output file named OUTPUT.MAC. The
double ESCAPE ($$) terminates the command string
and causes the string to be executed. Note that
the ESCAPE which terminates the EW command may be
one of the two ESCAPEs which terminates the
command string.
You do not need to specify an output file if you only want to examine
an input file, without making permanent changes or corrections. In
this case, the contents of the input file may be read into the text
buffer page by page and examined at the terminal. Since all output is
printed on the user terminal, no output file is needed.
Standard TECO
Page 8
File Selection Commands
1.3.4 Closing Files (EX command)
When you are finished editing a file, use the EX command to close out
the file and exit from TECO. The current contents of the text buffer
and any portion of the input file that has not been read yet are
copied to the output file before TECO exits. The EX command takes no
arguments.
COMMAND FUNCTION
EX Write the text buffer to the current output file,
move the remainder of the current input file to
the current output file, close the output file,
then return to the operating system.
ERFILE.MACSEWCOPY .MACSEXSS
Open an input file FILE.MAC and open an output
file named COPY.MAC, then copy all the text in the
input file to the output file, close the output
file, and exit from TECO.
Standard TECO Page 9
Input and Output Commands
1.4 INPUT AND OUTPUT COMMANDS
The following commands permit pages of text to be read into the TECO
text buffer from an input file or written from the buffer onto an
output file. Once a page of text has been written onto the output
file, it cannot be recalled into the text buffer unless the output
file is closed and reopened as an input file.
COMMAND FUNCTION
Y Clear the text buffer, then read the next page of the input
file into the buffer. Since the Y command causes the contents
of the text buffer to be lost, it is not permitted if an
output file is open and there is text in the buffer.
P Write the contents of the text buffer onto the next page of
the output file, then clear the buffer and read the next page
of the input file into the buffer.
nP Execute the P command n times, where n must be a positive
(non-zero) integer. If n is not specified, a value of 1 is
assumed.
After each Y, P, or nP command, TECO positions the pointer before the
first character in the buffer.
Standard TECO Page 10
Pointer Positioning Commands
1.5 POINTER POSITIONING COMMANDS
The buffer pointer provides the means of specifying the location
within a block of text at which insertions, deletions or corrections
are to be made. The following commands permit the buffer pointer to
be moved to a position between any two adjacent characters in the
buffer.
COMMAND FUNCTION
J Move the pointer to the beginning of the buffer.
L Move the pointer forward to a position between the next line
feed and the first character of the next line. That is,
advance the pointer to the beginning of the next line.
nL Execute the L command n times, where n is a signed integer. A
positive value of n moves the pointer to the beginning of the
nth line following the current pointer position. A negative
value moves the pointer backward n lines and positions it at
the beginnning of the nth line preceding the current position.
If n is zero, the pointer is moved to the beginning of the
line on which it is currently positioned.
C Advance the pointer forward across one character.
nC Execute the C command n times, where n is a signed integer. A
positive value of n moves the pointer forward across n
characters. A negative value of n moves the pointer backward
across n characters. If n is zero, the pointer position is
not changed. Remember that there are two characters, <CR> and
<LF>, at the end of each line in the buffer.
These commands may be used to move the buffer pointer across any
number of lines or characters in either direction; however, they will
not move the pointer across a page boundary. If a C command attempts
to move the pointer backward beyond the beginning of the buffer or
forward past the end of the buffer, an error message is printed and
the command is ignored.
If an L command attempts to exceed the page boundaries in this manner,
the pointer is positioned at the boundary which would have been
exceeded. Thus, in a page of 2000 lines, the command "-4000L" would
position the pointer before the first character in the buffer. The
command "4000L" would position the pointer after the last character in
the buffer. No error message is printed in either case.
Standard TECO Page ll
Type Out Commands
1.6 TYPE OUT COMMANDS
The following commands permit sections of the text in the buffer to be
printed out on your terminal for examination. These commands do not
move the buffer pointer.
COMMAND FUNCTION
T Type the contents of the text buffer from the current position
of the pointer through and including the next line feed
character.
nT Type n lines, where n is a signed integer. A positive value
of n causes the n lines following the pointer to be typed. A
negative value of n causes the n lines preceding the pointer
to be typed. If n is zero, the contents of the buffer from
the beginning of the line on which the pointer is located up
to the pointer is typed. This is useful for verifying the
location of the buffer pointer.
HT Type the entire contents of the text buffer.
Vv Type the current line. Equivalent to the sequence "OTT".
1.6.1 Immediate Action Commands [not in ТЕСО-10]
In addition, there are two special type out commands available as a
convenience. They are abbreviations for two frequently used commands.
These commands consist of a single character and must be the very
first character typed after TECO prints its prompting asterisk. They
take effect immediately; there is no need to follow these commands by
an ESCAPE character. For this reason, these commands are known as
immediate action commands.
COMMAND FUNCTION
<LF> Immediately execute the LT command. This command is issued by
typing the line feed key as the first keystroke after TECO'S
prompt. It causes TECO to move the pointer ahead one line and
then type out the new line.
<BS> Immediately execute the -LT command. This command is issued
by typing the backspace key as the first keystroke after
TECO's prompt. It causes TECO to move the pointer back one
line and then type the line just moved over on the terminal.
On terminals without a backspace key, typing <CTRL/H> has the
same effect.
These commands are useful for "walking through" a file, examining
and/or modifying lines one at a time. |
Standard TECO Page 12
Text Modification Commands
1.7 TEXT MODIFICATION COMMANDS
You can insert or delete text from the buffer using the following
commands:
COMMAND FUNCTION
ItextS Where "text" is a string of ASCII characters terminated by an
ESCAPE (which echoes as a dollar sign). The specified text is
inserted into the buffer at the current position of the
pointer. The pointer is positioned immediately after the last
character of the insertion,
K Delete the contents of the text buffer from the current
position of the pointer up to and including the next line feed
character.
nK Execute the K command n times, where n is a signed integer. A
positive value of n causes the n lines following the pointer
to be deleted. А negative value of n causes the n lines
Preceding the pointer to be deleted. If n is zero, the
contents of the buffer from the beginning of the line on which
the pointer is located up to the pointer is deleted.
HK Delete the entire contents of the text buffer.
D Delete the character following the buffer pointer,
nD Execute the D command n times, where n is a signed integer. A
positive value of n causes the n characters following the
pointer to be deleted. A negative value of n causes the n
characters preceding the pointer to be deleted. If n is zero,
the command is ignored.
Like the L and C commands, the K and D commands may not execute across
page boundaries. If a K command attempts to delete text up to and
across the beginning or end of the buffer, text will be deleted only
up to the buffer boundary and the pointer will be positioned at the
boundary. No error message is printed. A D command attempting to
delete text past the end or beginning of the text buffer will produce
an error message and the command will be ignored.
Standard TECO Page 13
Search Commands
1.8 SEARCH COMMANDS
The following commands may be used to search the input file for a
specified string of characters.
COMMAND FUNCTION
Stext$ Where "text" is a string of ASCII characters terminated by an
ESCAPE (which echoes as a dollar sign). This command searches
the text buffer for the next occurrence of the specified
character string following the current pointer position. If
the string is found, the pointer is positioned after the last
character on the string. If it is not found, the pointer is
positioned immediately before the first character in the
buffer and an error message is printed.
Ntext$ Performs the same function as the S command except that the
search is continued across page boundaries, if necessary,
until the character string is found or the end of the input
file is reached. If the end of the input file is reached, an
error message is printed. You must then close the output file
and reopen it as an input file before you can edit the file
further.
Both the S command and the N command begin searching for the specified
character string at the current position of the pointer. Therefore,
neither command will locate any occurrence of the character string
which precedes the current pointer position, nor will it locate any
character string which is split across a page boundary.
Both commands execute the search by attempting to match the command
argument, character for character, with some portion of the buffer
contents. If an N command reaches the end of the buffer without
finding a match for its argument, it writes the contents of the buffer
onto the output file, clears the buffer, reads the next page of the
input file into the buffer, and continues the search.
Standard TECO Page 14
Sample Editing Job
1.9 SAMPLE EDITING JOB
The following sample editing job is included to help the new user to
achieve a greater understanding of the basic TECO commands. The
entire terminal output from the editing run is reproduced intact, with
numbers added in the left margin referring to the explanatory
paragraphs which follow.
1< *EWDT1:FILEl.TXTSS
2< *HKIMR. JOHN P. JONES
! COMPUTER ELECTRONICS CORPORATION
BOSTON, MASAASACHUSETTS
DEAR MR. JONES:
I WAS PLEASED TO RECEIVE YOUR REQUEST FOR INFORMATION
PERTAINING TO THE NEW TECO TEXT EDITING AND CORRECTING
PROGRAM.
ENCLOSED IS A COPY OF THE TECO USERS'S GUIDE, WHICH
SHOULD ANSWER ALL OF YOUR QUESTIONS.
A .= ..— 0 tow 0 0-3 (=> Sem Sum las Gum Cas Gum 00 0 dm eo
DATEK ASSOCIATES, INC.
122 MAIN STREET WEST
AUSTIN, TEXAS
SINCERELY,
$$
3< *-20LSETTS$I 02150$$
! *STIONS2C13DIREGARDINGSS
4< *SGUIDES-SDIMANUALS$
! *SELYSOTSS
! SINCERELY*OKIVERY TRULY YOURSS$S
! *HTSS
! MR. JOHN P. JONES
! COMPUTER ELECTRONICS CORPORATION
! BOSTON, MASSACHUSETTS 02150
1
! DEAR MR. JONES:
1
! I WAS PLEASED TO RECEIVE YOUR REQUEST FOR INFORMATION
! REGARDING THE NEW TECO TEXT EDITING AND CORRECTING
! PROGRAM,
|
! ENCLOSED IS A COPY OF THE TECO USER'S MANUAL, WHICH
! SHOULD ANSWER ALL OF YOUR QUESTIONS.
|
! VERY TRULY YOURS,
|
!
!
!
!
5< *EXSS
! (TECO is rerun, operating system dependent)
! *ERDT1:FILE1.TXTSEWLP:$$
6< *YSKIMR. JAMES B. SMITH
|
!
!
!
Standard TECO Page 15
Sample Editing Job
DEAR MR. SMITH:
$$
*НТ$ $
MR. JAMES B. SMITH
DATEK ASSOCIATES, INC.
122 MAIN STREET WEST
AUSTIN, TEXAS
DEAR MR. SMITH:
I WAS PLEASED TO RECEIVE YOUR REQUEST FOR INFORMATION
REGARDING THE NEW TECO TEXT EDITING AND CORRECTING
PROGRAM,
ENCLOSED IS A COPY OF THE TECO USER'S MANUAL, WHICH
SHOULD ANSWER ALL OF YOUR QUESTIONS.
VERY TRULY YOURS,
Gem ©== Gum Gum Sum On 6-5 Pum Gun Gum @= Фе Фет Фе Фе Cas 65 Фет Фет 65 65 0-5 Фе om
*EXSS
1) At this point, the user called TECO into memory. TECO responded by
printing an asterisk at the left margin. The user then entered an EW
command, opening an output file called "FILE1l.TXT" on DTI. There is
no input file. Upon receipt of the double ESCAPE ($$), TECO created
the designated output file, then printed another asterisk at the left
margin.
2) The user entered a command string consisting of two commands. The
HK command cleared the text buffer (not really necessary, since it was
already empty), and the I command inserted 18 lines of text into the
buffer, including 8 blank lines. TECO executed these commands upon
receipt of the second double ESCAPE. At this point, the buffer
pointer was positioned at the end of the buffer, following the last
line feed character in the text. Note that the user made an error
while typing the word "MASSACHUSETTS". He typed "MASA", then realized
his mistake and struck the DELETE key once to delete the second "A".
TECO echoed the deleted character. The user then typed the correct
character and continued the insertion.
3) The user typed -20L to move the pointer to the beginning of the
buffer and SETTSS to position the pointer immediately after the
character string "ETTS" (which terminates the word "MASSACHUSETTS").
He then used an I command to insert one space and a five-digit zip
code. A second S command positioned the pointer after the word
"INFORMATION". The 2C command moved the pointer to the beginning of
the next line (carriage return and line feed count two characters),
and the user deleted the words "PERTAINING TO" and replaced them with
the word "REGARDING".
4) The user continued editing by positioning the pointer after the
word "GUIDE". He then deleted this word, and replaced it with the
word "MANUAL". Finally, he searched for the word "SINCERELY", typed
OT to determine that the pointer was correctly positioned between the
Y and the comma which follows it, and typed OK to delete everything on
the line except the comma. He then inserted "VERY TRULY YOURS" in
place of the word "SINCERELY". An HT command caused the edited text
to be printed at the terminal.
Standard TECO
Page 16
Sample Editing Job
>) The command string EX$$ caused the contents of the buffer to be
written onto the output file and closed the output file. The user
then reentered TECO and reopened the file "FILEl.TXT" as an input file
and specified the line printer as an output file.
6) This command string reads the first (and only) page of "“"FILEl,TXT"
into the buffer, deleted the first 5 lines, replaced them with a
different address and salutation, then printed the contents of the
buffer on the terminal for verification and finally printed the new
version of the letter onto the line printer. Note that the previous
version of the letter still resides in file "FILEl1.TXT" on DTi.
Standard TECO Page 17
Interlude
INTERLUDE
The rest of this manual is a description of TECO in all its glory.
TECO is a complex editor and has many features because it has been
under development for a long time. (TECO is older than some of the
readers of this manual!) Do not try to understand everything the first
time through. If you find that what you are reading seems hopelessly
obscure, or makes no sense whatsoever, skip to the next section and
come back to it some time later. It will be a while before you need
all of TECO's features.
This manual is meant to be a reference manual and not a tutorial.
Readers who are first learning TECO may wish to consult the following
document (available from Digital Equipment Corporation) for more basic
material: DEC-10-UTECA-A-D INTRODUCTION TO TECO.
The commands described in this manual are those implemented in TECO-11
Version 36, TECO-8 Version 7, and TECO-10 Version 3. Some of the more
obscure commands may not be present under some operating systems, in
which case this is indicated by a note in the form [Not in TECO-x].
This manual also describes some (but not necessarily all) of the
obscure commands that belong to one implementation of TECO but not to
the other implementations. Such commands are flagged by a note of the
form [TECO-x only]. These commands are not to be considered part of
the so-called "Standard TECO" and should not be used in applications
that may be run on multiple operating systems. Consult also the
appendices for commands that are very operating system dependent.
Standard TECO Page 18
Invoking TECO
CHAPTER 2
INVOKING TECO
2.1 RUNNING TECO
To run TECO with no special options or defaults, use the same command
on your operating system that you would use to run any other program,
The command is system dependent but is usually something like
RUN TECO
Consult the appendix that describes your operating system's
characteristics for details.
2.2 CREATING A NEW FILE
As described in Chapter 1, most operating systems use the same command
to invoke TECO for the purpose of creating a new file:
MAKE filespec
The "MAKE filespec" command takes as its single argument the file
specification for the file to be created. This file specification
must conform to the conventions used by your operating system. If a
file by that name already exists, TECO will give you a warning message
telling you that you are superseding an existing file.
The MAKE command invokes TECO and performs an effective EWfilespecSS
command, as described in Chapter 1.
2.3 EDITING AN EXISTING FILE
As Chapter 1 states, most operating systems use the same command to
invoke TECO for the purpose of editing an existing file:
TECO filespec
The "TECO filespec" command takes as its argument the file
specification for the file to be edited. The file will be opened for
input and output, with back-up protection. That means that the system
will save the original version of the source file (in case you 'blow'
the edit). If your operating system supports file version numbers, a
new version will be created. If your operating system does not
support file version numbers, the original file will be preserved in a
file with the same name but with a backup extension (.BAK).
The TECO command invokes TECO and performs an effective EBfilespec$vYss
command. Note that the first page of the file is brought into memory
and that the text buffer pointer is positioned at the start of the
file.
If, at any time during the edit, you discover that the edit is
invalid, slowly (so TECO can respond to them) type enough <CTRL/C>s to
get you back to the operating system. You will find that your
original file has been preserved.
TECO remembers the filespec given in a MAKE or TECO command. ТЕ TECO
is invoked with the command "TECO", with no filespec, it will open the
file edited last (i.e., the remembered filespec).
Standard TECO
Switches on TECO and MAKE Commands
Page 19
2.4 SWITCHES ON TECO and MAKE COMMANDS
The TECO and MAKE commands can take switches (qualifiers) of the form
/SWITCH.
System
RSTS/E
RSTS/E
RSX-11
VAX/VMS
Switch
/SIZE:n
/SIZE:+n
/INSPECT
/FIND
/NOCREATE
/NOINI
/NOMEMORY
/ SCROLL
/VTEDIT
These switches are described below.
SWITCHES ON COMMAND LINES
Meaning
start with nK word editing area
start with nK additional words of editing
area
Do not create an output file
Initially position to the position marker
left in the file by the VTEDIT macro and
delete the marker.
Do not automatically create a new file if the
file specified by the TECO command does not
exist,
Do not use TECO.INI to perform initialization
Do not remember the argument to the
invocation command.
Automatically enter split screen scrolling
mode, using 1/4 of the screen's lines as the
scrolling area (available on VT100 terminals
only).
Load VTEDIT video terminal editor
The /SCROLL switch may take a value of the following form:
/SCROLL:n
Enter split screen scrolling mode, using n
lines for the scrolling area.
The /VTEDIT switch may also take values (of the form :value).
/VTEDIT: HOLD
Start up in hold screen mode
/VTEDIT:SEEALL Start up in SEEALL mode
These values can be combined, viz.: /VTEDIT:HOLD:SEEALL.
Standard TECO Page 20
Invoking a TECO Program
2.5 INVOKING A TECO PROGRAM
All operating systems except TOPS-10 and TOPS-20 use the same command
to let you start up execution of a TECO program (macro). This is the
MUNG command.
The MUNG command has the form
MUNG filespec
where filespec is the name of the TECO program that is to be run. If
no file extension (file type) is specified, .TEC is assumed. This
command executes the TECO code that appears within the specified file.
It invokes TECO and performs an effective EIfilespec$SS command
(consult the appendices for operating-system dependent differences).
The contents of the specified file should generally end with a double
ESCAPE so that execution will start immediately.
Another form of this command is
MUNG filespec,data
where "data" is any string of ASCII characters to be passed to the
TECO program. This version of the MUNG command invokes TECO and
issues an effective
IdataSEI filespec$$
command. Under TECO-11, a space, tab, or a slash (/) may be used
instead of the comma.
Standard TECO Page 21
User Initialization
2.6 USER INITIALIZATION
You can specify initialization commands to TECO by creating a file
called TECO.INI. If, upon start-up, TECO finds a file called TECO.INI
in your area, TECO executes the commands in that file. You can use
TECO.INI commands to set initial values of flags and to tailor TECO to
your needs. You must, however, be very careful in constructing code
for your TECO.INI file: an error in this code may keep TECO from
running at all!
If you include unusual commands in your initialization file, you would
be prudent to surround such commands with the ? command. This causes
TECO to type the commands out when they are executed (see section
5.18.4). You should also print an informative message on the terminal
reminding other users that this version of TECO has been customized.
Example 1:
21ED?
The user initialization file sets the ED flag to 1 so that
characters in search strings have their traditional meaning (do not
convert the next character to a control character). The file also
causes the command to be typed out when it is executed.
Example 2:
0,16ED “A[Dot preserved on failing searches]”A 13°T 10°T
The user initialization file causes future search string failures to
preserve the pointer position. It also prints a message informing all
users of this feature.
In TECO-11, the TECO.INI commands may return a value to the command
processor. Such a value, if present, is interpreted as a set of bit
encoded flags that control the startup processing. The following bits
may be set:
Values: Automatically load the VTEDIT macro (as if the
user had typed TECO/VTEDIT).
Valuesd4 Inhibit use of the memory file (as if the user had
typed TECO/NOMEMORY).
Value&l6 Automatically load VTEDIT and start it in SEEALL
mode (as if the user had typed
TECO/VTEDIT:SEEALL).
Value&32 Automatically load VTEDIT and start it in
HOLDSCREEN mode (as if the user had typed
TECO/VTEDIT: HOLD) .
Value&l28 Automatically enter split screen scrolling mode
(as if the user had typed TECO/SCROLL).
Value&256 Inhibit automatic creation of the output file if
the input file does not exist (as if the user had
typed TECO/NOCREATE).
For additional information on initialization, consult the operating
system specific appendices.
Standard TECO Page 22
Conventions and Structures
CHAPTER 3
CONVENTIONS AND STRUCTURES
3.1 TECO CHARACTER SET
TECO accepts the full 7-bit ASCII character set; all characters have
their 8th bit (the parity bit) trimmed off. ТЕ your terminal does not
transmit or receive all of the ASCII codes, you can still insert the
full character set into your TECO buffer, using special commands (see
section 5.6).
TECO command strings may be entered using upper case characters (as
shown throughout this manual) or lower case characters. The commands
MO, mQ, Mg, and mq are treated alike. A file containing upper and
lower case text can be edited in the same way as a file containing
upper case only, although this may be clumsy to do from an upper case
only terminal. TECO can be set to convert lower case alphabetics to
upper case as they are typed in; commands to enable or disable lower
case type-in will be presented in section 5.16.
Control characters are generally echoed by TECO as a caret or up-arrow
followed by the character. Some control characters, such as <CTRL/L>
(form feed) and <CTRL/G> (bell) echo as the function they perform. In
many cases, you can type a control character as a caret (up-arrow)
followed by a character, and it will be treated as if it had been
entered using the control key.
There are exceptions to the interchangeable use of the CONTROL key and
the caret. When a control character is used as the delimiter of a
text string (as explained in Section 3.2.2 below), it must be entered
in its <CTRL/x> form. This form must also be used if the control
character is the second character of a two-character command, or ¡is
being entered as an immmediate action command. Since certain control
Characters have special meaning in text arguments, some of them (such
as <CTRL/N> and <CTRL/X>), must be entered into a text string using
the CONTROL key and preceded by <CTRL/Q>, “Q, <CTRL/R>, or “R.
3.2 TECO COMMAND FORMAT
A TECO command consists of one or two characters, optionally preceded
by a numeric argument and sometimes followed by a text argument. TECO
commands may be strung together by concatenating them into a single
command string. No delimiter is necessary between commands, although
a single ESCAPE or caret-[ may be inserted between them if desired.
This ESCAPE will keep numeric values generated by the preceeding
command from affecting the commands that follow the ESCAPE.
TECO commands are accumulated into a command string as they are typed.
The command string is executed when it is terminated by typing two
consecutive ESCAPE characters. TECO then executes the commands in the
order in which they appear in the command string, until the string is
exhausted or an error occurrs.
Standard TECO Page 23
Conventions and Structures
3.2.1 Numeric Arguments
Most TECO commands may be preceded by a numeric argument. Some
numeric arguments must be positive; others can be negative or zero.
The maximum size of any numeric argument is restricted, as summarized
in the following table:
Signed Unsigned
System Min Max Max
TECO-8 -2*%*12+1 +2** 12-1 2** 13-1
ТЕСО-1 0 -2* * 34 +2** 34-1 2** 35-1
TECO-11 -2** 15 +2** 15-1 2** 16-1
TABLE 3-1 Restrictions on numeric arguments
Exceeding these ranges of values can cause unpredictable results, So
can using a negative argument with a command that takes only an
unsigned argument.
Numeric arguments can be used in the following ways:
- Character commands such as J, С, В, and D take a single
numeric argument which represents the number of characters
that the command is to act on.
- Such commands as P, PW, and < perform an action that can be
repeated. The numeric argument is the repetition count.
- Some commands, such as ED, ET, “E, “X, ES, EU, and EV,
control the setting of variables called flags. When a
numeric argument is specified, the value of that argument
becomes the new value of the associated flag. When no
numeric argument is specified, these command return the
value of the associated flag.
- Line commands such as T, К, X, FB, and FC operate on lines.
They take zero, one, or two numeric arguments. If one
argument (n) is specified, it represents the number of lines
over which the command is to have effect, beginning at the
| current buffer pointer position. A positive (non-zero) n
affects a text running from the current pointer position to
the nth following line delimiter. A negative n affects a
text running from the pointer back to the beginning of the
line containing the nth previous line delimiter. When n is
zero, the affected text runs from the beginning of the
current line to the current pointer position. N = 1 15
assumed when n is omitted.
When a line command contains two numeric arguments (m,n),
these represent the pointer positions between which text is
affected. Unless the description of the command says the
order of these two arguments is important, they may be
entered in either order.
Standard TECO Page 24
Conventions and Structures
When a command that normally takes an argument is specified with no
argument, TECO executes the command in the most common or most useful
way, as shown in the following table:
Command Default Argument Default Action
Advance 1 character
Back over 1 character
Advance 1 line
Jump to start of buffer
View 1 line
Delete 1 character
Kill 1 line
Search for first occurrence
Increment Q-register by 1
Extract one line
N, etc.
-
XHNNXUO<UHDON
HHHHHHOHHH
Table 3-2 Default Arguments
These default arguments reduce the number of keystrokes needed for
common TECO actions.
3.2.2 Text Arguments
Many TECO commands take a text (character string) argument, The
string is placed immediately after the command and consists of a
sequence of ASCII characters terminated by an ESCAPE character (or in
the case of ! and "A commands, by the command character). The string
of ASCII characters may not include an ESCAPE, since this would
terminate the string prematurely, but may include any other character.
(Some characters may be difficult to enter from a terminal because
they are TECO immediate action commands or because they have been
filtered out by the operating system).
Examples of text arguments:
Sabc$ Search for the string "abc"
“UAHELLOS Insert the text "HELLO" into
Q-register A
OBEGINS Branch to the tag specified by the
string "BEGIN"
Some TECO commands require two text arguments. Each argument must be
followed by an ESCAPE character, as follows:
FSabcSdef$ Replace string "abc" by "def"
You can include an ESCAPE character in a text string by using another
format of text argument. In this alternate form, the string is
delimited on both sides by any ASCII code that does not otherwise
appear in the string. You signal that this format is being used by
inserting an @ character before the command, as follows:
@ERSTEST.FORS Open the file "TEST.FOR"™ for input.
The delimiter used is "5"
e A+Hello out there!+ Type the message "Hello out there!"
on the terminal. The delimiter is
"|"
Unpredictable results will occur if another TECO command intervenes
Standard TECO Page 25
Conventions and Structures
between an @ sign and the command that it is supposed to affect. Note
that a control character used as a delimiter must be entered as
<CTRL/x>.
3.2.3 Colon Modifiers
The colon (:) command modifies the action of the next command. In
some cases, it will cause the next command to return a value
indicating whether it has failed or succeeded. A zero (0) indicates
that the command has failed, while a -1 indicates that it has
succeeded. The colon modifier is used this way with such commands as
:ER, :EB, :EN, :S, :N, :FS, :FN, :FB, and :FC. If the next sequential
command requires a positive argument, the -1 is interpreted as the
largest possible positive number. In other cases, such as :Gq and :=,
the colon modifier changes the meaning of the command. Unpredictable
results may occur if you place a colon directly before a TECO command
that does not normally accept a colon modifier,
If both the : and the @ (string delimiter) are used with the same
command, they may be placed in any order.
Standard TECO Page 26
Conventions and Structures
3.3 DATA STRUCTURES
A good way to begin the study of a programming language is to forget
the commands, for the moment, and concentrate instead on the data
structures. This section follows that approach, describing both the
values on which TECO operates and the buffers and registers in which
these values are stored.
TECO manipulates two types of data, namely,
o The character string: a sequence of zero or more ASCII
characters, and
o The integer: a numeric value that may be signed or unsigned.
The text that TECO edits is, of course, a character string. Less
obviously, the command string by which the user controls TECO is also
a character string. The counters and indices for character string
manipulation, and the repetition counts for loops are integers.
Character strings and integers have distinct internal representation
and this is reflected in the design of the TECO commands. Commands
designed for character strings do not work on integers and vice versa.
The data structures described in this section are frequently applied
to character strings. Structure is never "built into” the data, but
rather is attributed to the data by particular commands and
conventions. Thus "lines" of characters are recognized by line
manipulation commands, but not by character manipulation commands,
which view an end-of-line character as just another ASCII code.
The following are definitions for the line and the page in TECO:
o Any character string can be divided into TECO lines by
considering the line to be ended by either
a line feed (octal 12)
a form feed (octal 14)
a vertical tab (octal 13) or
the end of the given character string
o Any character string can be divided into TECO pages by
considering the page to be ended hy either
a form feed (octal 14) or
the end of the given character string
These data structures are used to achieve two quite separate results:
the formatting of type out and the logical division of data.
3.3.1 Text Buffer
The main storage of TECO is the text buffer. The text buffer stores a
single character string that TECO edits. A text buffer pointer is
used to address text in the buffer; it is moved about by many TECO
commands. The text buffer pointer never points to characters in the
buffer; it is always pointing at pointer positions (between
characters). The available pointer positions in the text buffer are
sequentially numbered beginning with 0. Pointer position 0 is the
position at the start of the buffer, just to the left of the first
character. Pointer position 1 is the next position, just to the right
Standard TECO Page 27
Conventions and Structures
of the first character, etc. As an example, suppose the text buffer
contains the string FOOBAR. Then seven text buffer pointer positions
are determined as shown by the arrows in the following figure:
F О О В А Е
Note that there are 6 characters in the buffer and that the highest
numbered pointer position is 6. The pointer position number is equal
to the number of characters preceding that position.
Useful definitions of "current" objects are made with respect to the
text buffer pointer as follows:
1. The current character of the text buffer is the character just to
the right of the pointer. If the pointer is at the end of the
text buffer, there is no character to the right of the buffer
pointer, and the current character does not exist.
2. The current line of the text buffer is the TECO line that contains
the current character. In the special case that the pointer is at
the end of the buffer, the current line is everything back to (but
not including) the last end-of-line character.
3. The current page of the text buffer is the TECO page that contains
the current character. In the special case that the pointer is at
the end of the buffer, the current page is everything back to (but
not including) the last form feed character (or the beginning of
the buffer).
When the text buffer pointer is at the end of the text buffer and the
last character of the buffer is an end-of-line character, then the
current line is an empty string according to the definition just
given. In this case, TECO performs the required operation on this
empty string. For example, if the pointer is at the end of the buffer
and TECO is commanded to kill (delete) the next 3 lines, then the
empty string is killed 3 times. Similarly, if the pointer is at the
end of the buffer and TECO is commanded to advance the pointer 5
lines, the pointer will remain at the end of the buffer. No error
message will be given. In a like fashion, if the pointer is at the
end of the first line of the buffer, and TECO is instructed to extract
the previous 4 lines (into a Q-register), then only the first line is
extracted since it is presumed to be preceded by 3 empty lines.
3.3.2 Q-registers
TECO provides 34 data storage registers, called Q-registers, which may
be used to store single integers and/or ASCII character strings. The
Q-registers have one character names: A through Z and 0 through 9.
Each O-register is divided into two storage areas. In the numeric
storage area, each )-register can store one signed integer. In the
text storage area, each Q-register can store an ASCII character string
which may be either text or a TECO command string.
Various TECO commands allow the storing and retrieving of numerical
values from the numeric storage areas of the O-registers. Other TECO
commands allow the storage and retrieval of strings from the text
storage areas of the Q-registers.
Standard TECO
Page 28
Conventions and Structures
3.3.3 Q-register Push-down List [not in TECO-8)]
The Q-register pushdown list is a stack that permits the numeric and
text storage areas of Q-registers to be saved and restored.
3.3.4 Numeric Values and Flags
TECO has many special numeric values and flags which are accessible
through TECO commands. Some of these values, such as the text buffer
pointer, reflect the state of TECO. Others control TECO'S behavior in
various ways.
Standard TECO Page 29
Command String Editing
CHAPTER 4
COMMAND STRING EDITING
While you are typing command strings at a terminal, TECO considers
certain ASCII characters to have special meaning. Most of the special
characters are immediate action commands, which cause TECO to perform
a specified function immediately, instead of waiting for the double
ESCAPE which terminates a command string. Immediate action commands
may be entered at any point in a command string - even in the middle
of a command or text argument.
Many immediate action commands, such as DELETE, which deletes the
immediately preceding character, cannot be used as regular TECO
commands. If you enter a DELETE into a command string executed from a
macro, the DELETE will not delete a character as part the execution of
the command string.
Some characters, like <CTRL/U>, are both regular TECO commands and
immediate action commands. The command string “Ugtext$ enters the
specified text into Q-register gq. However, <CTRL/U> typed while
entering a command string is an immediate action command which deletes
the current line. Thus you cannot type a <CTRL/U> (or any other
sequence which doubles as an immediate action command) directly into
TECO as part of a command string. Nevertheless, <CTRL/U> is still a
valid TECO command; should TECO encounter it in a macro or indirect
file, it will have its regular TECO effect (“Ugtext$).
Control characters used in immediate action commands must be entered
using the CONTROL key; they will not be recognized if entered as a
caret or up-arrow.
Tables 4-1 and 4-2 list the immediate action commands and explain
their functions.
Standard TECO Page 30
Command String Editing
TABLE 4-1: IMMEDIATE ACTION COMMANDS
These commands take immediate effect and are used to edit a command
string as it is being entered:
CHARACTER EXPLANATION
<ESCAPE><ESCAPE>
The double <ESCAPE> character sequence tells TECO to
begin execution of the command string just typed in.
It echoes as $$ and also inserts two <ESCAPE>s into the
command string. The two ESCAPES must be typed
successively. If any other character is typed in
between the two ESCAPEs (even if subsequently DELETE),
then the two ESCAPEs might be treated simply as two
ESCAPES to be entered into the command string rather
than as an immediate action command.
If you need to enter two ESCAPES into a command line,
as in the case where you want to use the Fsstring$$
command to delete a string, you can keep TECO from
recognizing $$ as an immediate action command. Type
<ESCAPE><SPACE><DELETE><ESCAPE> and then continue
entering the remainder of, your command string.
A single ESCAPE character is not a special character
and performs no immediate action.
<DELETE> Typing a DELETE character (DEL or RUBOUT on some
terminals) deletes the last character typed. DELETE
can be typed repeatedly to erase multiple characters.
TECO echoes the deleted character whenever a DELETE is
typed, indicating to you that the character has been
rubbed out. If you are doing your editing on a scope
terminal, then the action of this key is different:
the character that has been rubbed out will disappear
from the screen of your editing terminal and the cursor
will be moved back one position.
If you delete a line feed, form feed, or vertical tab,
the cursor will move up the screen and position itself
at the end of the text that immediately preceded the
line feed, form feed, or vertical tab.
<CTRL/C> <CTRL/C> echoes as ^С (Caret-C) and aborts the entering
of the command string. The exact action of the
<CTRL/C> key depends on the operating system being used
(See appendices).
<CTRL/U> <CTRL/U> causes the current line of the current command
line to be deleted. TECO echoes the character as “U
followed by <CR><LF> and an asterisk prompt. If you
are using a scope terminal, the visible action of
typing this key is different. The current line
physically disappears from the screen and the cursor is
positioned back at the beginning of the line,
<CTRL/G><CTRL/G>
Typing two consecutive <CTRL/G> characters causes all
commands which have been entered but not executed to be
erased. (If the terminal has a bell, it will ring.)
This command is used to erase an entire command string.
A single <CTRL/G> character is not a special character.
Standard TECO Page 31
Command String Editing
<CTRL/G><space>
<CTRL/G> followed by a space causes the line currently
being entered into the command string to be retyped.
<CTRL/G>* <CTRL/G> followed by an asterisk causes all the lines
typed by the user from the last TECO prompt (the
asterisk) to be retyped.
<CR> Typing a carriage return enters a carriage return
followed by a line feed into the command string. To
enter a carriage return without a line feed, type
<CR><DELETE>.
<CTRL/2><CTRL/Z><CTRL/2>
RSX-11 TECO uses the triple <CTRL/Z> command as an
immediate action command. See the appropriate appendix
for more details.
The <CTRL/Z> character is used as an end-of-file terminator in some
contexts on some operating systems. While its presence is usually
harmless in disk files, it may cause premature end of file if the file
is copied to other media (e.g., paper tape).
Standard TECO Page 32
Command String Editing
TABLE 4-2: IMMEDIATE ACTION AIDS
These immediate action commands are aids to the user. They have
special meaning and take immediate effect only if they are typed as
the very first keystroke after TECO's asterisk prompt.
CHARACTER EXPLANATION
? If the previous command aborted because of an error,
this immediate action command causes TECO to print the
erroneous command string from the beginning of the
current macro level up to and including the character
that caused the error.
/ If TECO has just printed an error message, type this
immediate action command to receive a more detailed
explanation of the error.
[Not in TECO-11]
<LF> Typing this immediate action command, line feed, as the
first keystroke after TECO's prompt causes TECO to
immediately execute the LT command. This aid lets you
"walk through" a file on a non-scope terminal, (If the
EV flag is non-zero, then the T portion of this command
is redundant and therefore is not performed.) If you
are already positioned at the end of the text buffer,
TECO-11 will not type out anything.
[Not in TECO-10]
<BS> Typing this immediate action command, backspace, (as
the first keystroke after TECO's prompt) causes TECO to
immediately execute the -LT command. (If the EV flag
is non-zero, then the T portion of this command is
redundant and therefore is not performed.)
[Not in TECO-10]
* а When an asterisk followed immediately Бу а Q-register
name (any alphanumeric character, here represented by
q) is the first keystroke after TECO's prompt, TECO
Places the previous command string into Q-register q.
[In TECO-8, only the *Z command is permitted, and TECO
will automatically type the Z.] Note that since *q is
itself an immediate action command, it may not be
edited with other immediate action commands. In other
words, you can't use DELETE to delete an incorrectly
typed *.
[In TECO-10, *q must be followed by <ESC><ESC>.]
Standard TECO Page 33
Command String Editing
Although TECO accepts all 128 characters of the 7-bit ASCII character
set, whether encountered in a macro, or entered directly into a
command string from the terminal, some operating systems filter out
certain characters typed at a terminal and do not pass them to TECO.
So that you can be aware of the possible difficulty of entering these
characters directly into a TECO command string, we list them below in
Table 4-3. Note that these characters are still valid characters to
TECO, but must be entered indirectly, such as by entering them into a
macro using the nIS$ command.
TABLE 4-3: OPERATING SYSTEM CHARACTER FILTERS
SYSTEM CHARACTER SYSTEM's USE
RT-11 “A VT11 support [only if GT ON]
^ В Background control [F/B systems only]
^Е VT11 support [only if GT ON]
°F Foreground control (F/B systems only]
“0 Output control
^ © Terminal Synchronization
^5 Terminal Synchronization
RSTS/E ^С Output control
°C Terminal Synchronization
“6 Terminal Synchronization
VAX/VMS ^ С Output control
°C Terminal Synchronization
"e Terminal Synchronization
“X Cancel Type-ahead
Y Process Interruption
RSX-11 ^ © Output control
o Terminal synchronization
^5 Terminal synchronization
Xx Task control [RSX-11D only]
TOPS-10 EC Job interruption
“0 Output control
a Terminal synchronization
^5 Terminal synchronization
CT System status
TOPS-20 Ec Job interruption
“0 Output control
“0 Terminal synchronization
^5 Terminal synchronization
CT System status
05/8 ^ Background control [F/B systems only]
B
“F Foreground control [F/B systems only]
Y Reboot indicator [F/B systems only]
Standard TECO
Page 34
Command Descriptions
CHAPTER 5
COMMAND DESCRIPTIONS
This chapter presents a detailed description of the full TECO command
set, functionally organized. It assumes that the reader is familiar
with the elementary TECO commands presented earlier.
In the sections following, the letters "m" and "n" are used in command
formats to represent numerical arguments. These may be either simple
integers or complex expressions. The letter "q" represents any
Q-register.
Standard TECO Page 35
File Selection Commands |
5.1 FILE SPECIFICATION COMMANDS
You must specify an input file whenever you want TECO to accept text
from any source other than the terminal. You must specify an output
file whenever you want to make a permanent change to the input file.
Input and output files are selected by means of file specification
commands.
File specification formats are operating system dependent and are
fully described in the operating characteristics appendices at the end
of this manual.
Almost every editing job begins with at least one file specification
command. Additional file specification commands may be executed
during an editing job whenever required; however, TECO will keep only
one input file and one output file selected at a time.
TECO-11 recognizes two input and two output "streams" called the
primary and secondary streams. The primary input and output streams
are initially selected when TECO is invoked. Most file selection
commands, and all of the other TECO commands (page manipulation,
etc.), operate on the currently selected input and/or output stream.
The following sections list all of the file specification commands.
Unless otherwise noted, all of these commands leave the text buffer
unchanged. Examples of some of these commands appear in Chapter 1.
5.1.1 File Opening Commands
The following commands are used to open files for input and output:
TABLE 5-1A: FILE SPECIFICATION COMMANDS
COMMAND FUNCTION
EBfilespec$ Edit Backup. This command is recommended for most
editing jobs. It is used for files on file-structured
devices only. It opens the specified file for input on
the currently selected input stream and for output on
the currently selected output stream. The EB command
also keeps the unmodified file (the latest copy of the
input file) available to the user; details of this
process are system dependent (See appendices).
ERfilespec$ Edit Read. Opens a file for input on the currently
selected input stream.
EWfilespecs$ Edit Write. Opens a file for output on the currently
selected output stream.
:EBfilespec$ Executes the EB command, and returns a numeric value.
-1 returned indicates success: the file is open for
input. A 0 indicates the specified file could not be
found, and no error message is generated. Other errors
(e.g., hardware errors, protection violations, etc.)
generate messages and terminate command execution as
usual.
:ERfilespec$ Executes the BR command, and returns a numeric value.
See the :EB command, above.
Standard TECO Page 36
File Specification Switches
5.1.2 File Specification Switches
Various system-dependent switches (qualifiers) of the form /SWITCH can
be used with the file specification in ER, EW, and EB commands. These
switches are listed below. Consult the operating system specific
appendices for further details.
TABLE 5-1B: SWITCHES ON FILE SPECIFICATIONS
System Switch Meaning
05/8 / 5 Ignore end-of-file (<CTRL/Z>s) on input.
(SUPER TECO mode)
RSTS/E /B Read and write with unfiltered 8-bit
/B+ Handle a BASIC-PLUS file
/B2 Handle a BASIC-PLUS-2 file
/CLUSTERSIZE:n Specifies output file cluster size
/MODE:n Use non-standard open mode
/n Handle BASIC-PLUS-2 continuation character
(€) in column n
RSX-11
VAX/VMS /B2 Handle a BASIC-PLUS-2 file
/CR Implied carriage control
/-CR No (internal) carriage control
/FT FORTRAN carriage control
/RW Rewind magtape before opening file
/SH Open the file in shared mode
TOPS-10 / APPEND Append to existing output file (EW only)
/ASCII File is ASCII
/GENLSN Generate line sequence numbers
/NOIN Don't put user type-in into log file
/NONSTD Open DECtape in non-standard mode
/NOOUT Don't put TECO's type out into log file (EL
only)
/OCTAL Read file in octal
/PROTECT:n Specify protection code
/SIXBIT Read file in pure SIXBIT
/SUPLSN Suppress line sequence numbers
5.1.3 File Close and Exit Commands
The following commands are used to close files and exit from TECO:
TABLE 5-1C: FILE CLOSE AND EXIT
EC Moves the contents of the text buffer, plus the
remainder of the current input file on the currently
selected input stream, to the current output file on
the currently selected output stream; then closes
those input and output files. Control remains in TECO.
EC leaves the text buffer empty.
EF Closes the current output file on the currently
selected output stream. The EF command does not write
the current contents of the buffer to the file before
closing it.
EGS Performs the same function as the EC command, but then
Standard TECO
File Close and Exit Commands
EGtext$
:EGtext$
EK
ELfilespec$
EX
EZfilespecs$
<CTRL/C>
Page 37
exits from TECO and re-executes the last COMPIL class
command (.COMPILE, .LINK, EXECUTE, etc.)
[Not in TECO-11]
Performs the same function as the EC command, but then
exits from TECO and passes "text" to the operating
system as a command string to be executed (see
appendices).
Performs the same function as the EC command, and then
performs an operating system specific function.
Consult the appendices for details.
Kill the current output file on the currently selected
output stream. This command, which purges the output
file without closing it, is useful to abort an
undesired edit. Executing the EK command after an EW
which is superseding an existing file leaves the old
file intact. The EK command also "undoes" an EB
command. (See appendices for details.)
Open the specified file for output as a log file. Any
currently open log file will be closed. If the /APPEND
switch is given, future logs will append to the file
(if it already exists). The default is to supersede.
All type-in to TECO and all type out from TECO goes
into the log file. The log file is automatically
closed by the EX and <CTRL/C><CTRL/C> TECO commands.
[TECO-10 only]
Performs the same function as the EC command, but then
exits from TECO. For safety reasons, this command is
aborted if there is text in the text buffer but no
output file is open. To exit TECO after just looking
at a file, use the command string HKEX.
This command is useful for outputting to magtapes and
DECtapes, on which it initializes (zeros) the specified
output device before switching the ouput to the primary
output stream. In the case of a magtape, this command
rewinds the magtape to load point. If the output
device is a disk, this command works exactly like the
EW command.
[TECO-10 only]
The <CTRL/C> (caret/C) command terminates execution of
the current command string and returns control to
TECO's prompt. (Under TECO-8, the <CTRL/C> command
currently acts as <CTRL/C><CTRL/C>.)
<CTRL/C><CTRL/C>
The “C<CTRL/C> command causes an immediate abort and
exit from TECO. Currently open files are not
necessarily closed. See the appendices for more
details. Note that the second <CTRL/C> may not be
entered in up-arrow mode.
Standard TECO Page 38
Secondary Stream Commands
5.1.4 Secondary Stream Commands
TECO-11 provides secondary input and output streams. These permit the
user to have two input and two output files open at the same time, and
to switch processing back and forth between them. Each stream
maintains its file position independently, so that one can read from
one stream (for example), switch to the other, and then switch back to
the first and resume from where one left off. In addition, a separate
command stream allows one to execute TECO commands from a file without
disturbing either input stream.
The following commands manipulate the secondary input and output
streams:
TABLE 5-1D: SECONDARY STREAM COMMANDS
[Not in TECO-8 or TECO-10]
Input commands (do not open or close any file; do not change the text
buffer):
EP Switches the input to the secondary input stream.
ERS Switches the input to the primary input stream.
Output commands (do not open or close any file; do not change the
text buffer):
EA Switches the output to the secondary output stream.
EWS Switches the output to the primary output stream.
Indirect file commands:
EIfilespec$ Opens a file as an indirect command file, so that any
further TECO requests for terminal input will come from
this file. At end-of-file, or upon TECO's receipt of
any error message, the indirect command file will be
closed and terminal input will be switched back to the
terminal. Note that this command only presets where
input will come from; it does not "splice" the file's
data into the current command string. While
end-of-file closes the indirect command file, it does
not automatically start execution of commands.
Execution will begin only upon TECO's receipt of two
adjacent ESCAPEs.
All commands encountered in the indirect file will have
their normal TECO meaning (as opposed to any immediate
action meaning). For example, a <CTRL/U> encountered
in an indirect file will not erase the command line in
which it occurs. Instead, it will be treated as the
TECO “Ugtext$ command. The only exception to this rule
is the <ESC><ESC> command, which directs TECO to
execute the preceding command string and then return to
the indirect file at the point following the
<ESC><ESC>.
EIS If an indirect command file is active, this command
will close it and resume terminal input from the
terminal. Any portion of the file after a double
ESCAPE which has not yet been read is discarded. This
command has no effect if no indirect file is already
open.
Standard TECO Page 39
Wildcard Commands
5.1.5 Wildcard Commands
TECO-11 supports wild card file processing with a set of special
commands, to allow TECO programs to operate on a set of files.
TABLE 5-1E: WILDCARD COMMANDS
[Not in TECO-8 or TECO-10]
ЕМ 1 1е5рес$ This command presets the "wild card" lookup filespec.
It is only a preset; it does not open, close, or try
to find any file. The "wild card” lookup is the only
filespec that can contain any wild card notations. See
the appendices for the allowed wild fields in each
operating system.
ENS Once the wild card lookup filespec has been preset,
executing this command will find the next file that
matches the preset wild card lookup filespec and will
load the filespec buffer with that file's name. The G*
command (see Appendix C, section C.l.1) can be used to
retrieve the fully expanded filespec. When no more
occurences of the wild card filespec exist, the ?FNF
error is returned.
: ENS Executes the ENS command, and returns a numeric value.
A -1 indicates that another match of the wild card
filespec exists and has been loaded into the filespec
buffer. A 0 indicates no more occurences exist. No
error message is generated.
The filespec argument to the file selection commands in TECO-11 can
use the string building characters described in Table 5-8A (see
section 5.8). The <CTRL/E>Q* construct, described in Appendix C, is
especially useful in TECO-11.
5.1.6 Direct I/O to Q-Registers
TECO-10 provides commands to do 1/0 directly to and from the
Q-registers, allowing I/O to bypass the text buffer.
TABLE 5-1F: DIRECT I/O TO Q-REGISTERS
[Not in TECO-8 or TECO-11]
EQgfilespec$ Read specified file into Q-register q. No <NULL>s or
<FF>s are removed from the file, except that trailing
<{NULL>s are discarded. The only switch permitted on
the filespec in this command is the /DELETE switch,
which causes TECO to delete the file after reading it,
providing that the file is less than 500 characters
long. This command supports the pseudo-device TMP:,
for TMPCOR. Consult the appropriate appendix for
details,
[TECO-10 only]
Etgf£filespecS Create the specified file. The contents of the file
will be the contents of Q-register q with no <NULL>s
deleted. No switches are permitted on the filespec of
this command. This command supports the pseudo-device
TMP:, for TMPCOR. Consult the appropriate appendix for
details.
[TECO-10 only]
Standard TECO Page 40
Page Manipulation Commands
5.2 PAGE MANIPULATION COMMANDS
The following commands permit text to be read into the text buffer
from an input file or written from the buffer onto an output file.
All of the input commands listed in this table assume that the input
file is organized into pages small enough to fit into available
memory. If any page of the input file contains more characters than
will fit into available memory, the input command will continue
reading characters into the buffer until a line feed is encountered
when the buffer is about 3/4 full. See the appendices for more
details. Special techniques for handling pages larger than the buffer
capacity will be presented later in this chapter.
TABLE 5-2: PAGE MANIPULATION COMMANDS
COMMAND FUNCTION
APPEND commands:
A Appends the next page of the input file to the contents of
the text buffer, thus combining the two pages of text on a
single page with no intervening form feed character. This
command takes no argument. To perform n Appends, use the
n<{A> construct. Note that nA is a completely different
command.
:A Equivalent to the A command except that a value is returned.
-1 is returned if the append succeeded, and 0 is returned if
the append failed because the end-of-the-input-file had
previously been reached (°N flag is -1 at start of this
command).
[Not in TECO-8]
n:A Appends n lines of text from the input file to the contents
of the text buffer. A value is returned indicating whether
or not there were in fact n lines remaining in the input
file. -1 is returned if the command succeeded. 0 is
returned if end-of-file on the input file was encountered
before all n lines were read in. Note that the command can
succeed and yet read in fewer than n lines in the case that
the text buffer fills up.
[Not in TECO-8]
PAGE Commands:
P Writes the contents of the buffer onto the output file, then
clears the buffer and reads the next page of the input file
into the buffer. A form feed is appended to the output file
if the last page read in (with a P, Y, or A command) was
terminated with a form feed.
:P Same as the P command except that a value is returned. -1
is returned if the command succeeded. 0 is returned if the
command failed because the end-of-file on the input file had
been reached prior to the initiation of this command.
[Not in TECO-8]
np Executes the P command n times, where n must be a non-zero
positive integer.
PW Write the contents of the buffer onto the output file and
append a form feed character. The buffer is not cleared and
Standard TECO Page 41
Page Manipulation Commands
nPW
m,nPW
HP
the pointer position remains unchanged.
Executes the PW command n times, where n must be a non-zero
positive integer.
Writes the contents of the buffer between pointer positions
m and n onto the output file. m and n must be positive
integers. A form feed is not appended to this output, nor
is the buffer cleared. The pointer position remains
unchanged.
Equivalent to m,nPW.
Equivalent to the PW command except that a form feed
character is not appended to the output.
Equivalent to HPW.
YANK commands:
Y
EY
: EY
Clears the text buffer and then reads the next page of the
input file into the buffer. As the Y command can result in
the loss of data, it is not permitted under certain
circumstances (see ED flag in 5.14).
Same as the Y command but a value is returned. -1 is
returned if the Yank succeeded. 0 is returned if the Yank
failed because the end-of-file had heen reached on the input
file prior to the initiation of this command.
[Not in TECO-8]
Same as the Y command, but its action is always permitted
regardless of the value of the Yank Protection bit in the ED
flag.
Same as the :Y command, but its action is always permitted
regardless of the value of the Yank protection bit in the ED
flag.
[Not in TECO-8]
Standard TECO Page 42
Buffer Pointer Manipulation Commands
5.3 BUFFER POINTER MANIPULATION COMMANDS
Table 5-3 describes all of the buffer pointer manipulation commands
These commands may be used to move the pointer to a position between
any two characters in the buffer, but they will not move the pointer
across a buffer boundary. If any R or C command attempts to move the
pointer backward beyond the beginning of the buffer or forward past
the end of the buffer, the command is ignored and an error message is
printed. If any L command attempts to exceed the buffer boundaries,
the pointer is positioned at the boundary which would have been
exceeded and no error message is printed.
TABLE 5-3: BUFFER POINTER MANIPULATION COMMANDS
COMMAND FUNCTION
CHARACTER commands:
C Advances the pointer forward across one character.
nC Executes the C command n times. If n is positive, the
pointer is moved forward across n characters. If n is
negative, the pointer is moved backward across n characters.
If n is zero, the pointer position is not changed.
n:C Same as nC except that a value is returned. If the command
succeeded, -1 is returned. If the command failed, the
pointer does not move and a value of 0 is returned.
[TECO-10 only]
:C Equivalent to 1:C.
-C Equivalent to -1С.
JUMP commands:
J Moves the pointer to a position immediately preceding the
first character in the buffer. Equivalent to 0J.
nJ Moves the pointer to a position immediately following the
nth character in the buffer.
ZJ Moves the pointer to a position immediately following the
last character in the buffer.
n:J Same as the nJ command except that if pointer position n is
outside of the buffer, the pointer does not move and a value
of 0 is returned. If the command succeeded, a value of -1
is returned.
[TECO-10 only]
LINE commands:
L Advances the pointer forward across the next line terminator
(line feed, vertical tab, or form feed) and positions it at
the beginning of the next line.
nL Executes the L command n times. A positive value of n
advances the pointer to the beginning of the nth line
following its current position. A negative value of n moves
the pointer backwards to the beginning of the nth complete
line preceding its current position. If n is zero, the
pointer is moved to the beginning of the line on which it is
Standard TECO Page 43
Buffer Pointer Manipulation Commands
-L
currently positioned.
Equivalent to -1L.
REVERSE commands:
R
nR
Moves the pointer backward across one character.
Executes the R command n times. If n is positive, the
pointer is moved backward across n characters. If n is
negative, the pointer is moved forward across n characters.
If n is zero, the position of the pointer is not changed.
Equivalent to -1R.
Same as the nR command except that a value is returned. If
the command succeeded, then a value of -1 is returned. If
the command failed, then the buffer pointer is not moved and
a value of 0 is returned.
[TECO-10 only]
Equivalent to 1:R.
Standard TECO Page 44
Text Type Out Commands
5.4 TEXT TYPE OUT COMMANDS
Table 5-4 describes the commands used to type out part or all of the
contents of the buffer for examination. These commands do not move
the buffer pointer.
TABLE 5-4: TEXT TYPE OUT COMMANDS
COMMAND FUNCTION
T Types out the contents of the buffer from the current
position of the buffer pointer through and including the
next line terminator character.
nT Types n lines. If n is positive, types the n lines
following the current position of the pointer. If n is
negative, types the n lines preceding the pointer. If n is
zero, types the contents of the buffer from the beginning of
the line on which the pointer is located up to the pointer.
-T Equivalent to -1T.
m,nT Types out the contents of the buffer between pointer
positions m and n.
es +nT Types out the n characters immediately following the buffer
pointer. n should be greater than zero.
e-n,.T Types the п characters immediately preceding the buffer
pointer. n should be greater than zero.
n°T Types out the character whose ASCII code is n. This can be
used to output any ASCII character to the terminal.
HT Types out the entire contents of the buffer.
Vv Types out the current line. Equivalent to OTT.
nv Types out n-1 lines on each side of the current line.
Equivalent to l-nTnT.
[Not in TECO-8]
m, nV Types out m-1 lines before and n-1 lines after the current
line.
[Not in TECO-8]
“Atext<CTRL/A>
Types "text" on the terminal. While the command may begin
with <CTRL/A> or Caret/A, the closing character must be a
<CTRL/A>. A numeric argument must not be specified with
this command.
@“A/text/ Equivalent to the “A command except that the text to be
printed may be bracketed with any character. This avoids
the need for the closing <CTRL/A>.
Standard TECO Page 45
Text Type Out Commands
You may stop or delay the output of any type out command by typing
certain special characters at the keyboard while TECO is typing out at
the terminal (via a T, V, “A, or :G command). These characters are
described in the table below:
TABLE 5-4B: TYPE OUT TIME COMMANDS
CHARACTER FUNCTION
<CTRL/O> Stops the terminal output of the current command string.
TECO continues to run and to send characters to the
terminal, however, these characters are suppressed from
actually printing on the terminal. You can resume
printing characters by typing another <CTRL/O> while type
out is being suppressed. TECO cancels this suppression
the next time that it prompts for command string input.
A TECO macro can cancel the effect of any <CTRL/O> by
setting the 16's bit in the ET flag (see section 5.16).
<CTRL/S> Freezes the terminal output of the current command
string. TECO stops running the next time it tries to
output a character to your terminal, and waits for you to
type a <CTRL/Q> to indicate that output should resume.
<CTRL/Q> Causes TECO to resume any type out that was frozen via
use of the <CTRL/S> command described above. This
character has this effect only while typout is frozen.
Striking any key other than <CTRL/Q> or <CTRL/C> while
type out is frozen will have unpredictable results;
consult the appropriate operating system manual.
Note that <CTRL/O>, <CTRL/Q>, and <CTRL/S> are legal TECO commands as
well. When TECO is not typing on the terminal (when you are entering
a command string, for example), these characters do not have the
effect described above. They may be entered into your command string
just like any other control character (except under operating systems
that filter out these characters).
Standard TECO Page 46
Deletion Commands
5.5 DELETION COMMANDS
Table 5-5 summarizes the text deletion commands, which permit deletion
of single characters, groups of adjacent characters, single lines, or
groups of adjacent lines.
TABLE 5-5: TEXT DELETION COMMANDS
COMMAND FUNCTION
DELETE commands:
D Delete the first character following the current position of
the buffer pointer.
nD Execute the D command n times. If n is positive, the n
characters following the current pointer position are
deleted. If n is negative, the n characters preceding the
current pointer position are deleted. If n is zero, the
command is ignored.
-D Equivalent to -1D.
m, nD Equivalent to m,nK.
[TECO-11 only]
n:D Same as nD but returns a value (-1 if command succeeds, 0 if
command failed because the range of characters to be deleted
fell outside the text buffer).
[TECO-10 only]
FDtext$ Search for the specified text string and delete it. (See
search commands in section 5.7.)
[TECO-10 only]
@FD/text/ Equivalent to FDtext$ except that the <ESCAPE> character is
not necessary.
FRS Equivalent to -nD where n is the length of the last insert,
get or search command. See the description of the FRtext$
command in section 5.6 for more details.
@FR// Form of the FR$ command that does not require use of the
<ESCAPE> character.
KILL commands:
K Deletes the contents of the buffer from the current position
of the buffer pointer through and including the next line
terminator character.
nK Executes the K command n times. If n is positive, the n
lines following the current pointer position are deleted.
If n is negative, the n lines preceding the current pointer
position are deleted. If n is zero, the contents of the
buffer from the beginning of the line on which the pointer
is located up to the pointer is deleted. It is not an error
if more lines are specified than occur when a boundary of
the text buffer is encountered.
-K Equivalent to -1K.
m, nK Deletes the contents of the buffer between pointer positions
Standard TECO Page 47
Deletion Commands
FKtext$
eFK/text/
HK
m and n. The pointer moves to the point of the deletion.
The ?POP error message (or its equivalent) is issued if
either m or n is out of range.
Executes a Stext$ command then deletes all the text from the
initial pointer position to the new pointer position.
[TECO-10 only]
Equivalent to FKtextS except that "text" may contain any
character, including <ESCAPE>, other than the delimiter
(shown here as /).
[TECO-10 only]
Deletes the entire contents of the buffer.
Standard TECO Page 48
Insertion Commands
5.6 INSERTION COMMANDS
Table 5-6 lists all of the text insertion commands. These commands
cause the string of characters specified in the command to be inserted
into the text buffer at the current position of the buffer pointer.
Following execution of an insertion command, the pointer will be
positioned immediately after the last character of the insertion.
The length of an insertion command is limited primarily by the amount
of memory available for command string storage. During normal editing
jobs, it is most convenient to limit insertions to about 10 or 15
lines each. When command string space is about to run out, TECO will
ring the terminal's bell after each character that is typed. From the
time you hear the first warning bell, you have 10 characters to type
in order to clean up your command line. Attempting to enter too many
characters into the current command string causes unpredictible
results to occur and should be avoided. Use the DELETE key to shorten
the command to permit its termination.
As explained above in Chapter 4, certain characters are filtered out
by the operating system and/or may perform special functions, and some
characters are immediate action commands and have special effect. If
you want to insert such characters into the text buffer, use the nI$
command described in the following table. It will insert any ASCII
character into the buffer, including the special characters that could
not ordinarily be typed at a terminal.
TABLE 5-6: TEXT INSERTION COMMANDS
COMMAND FUNCTION
INSERT commands:
Itexts$ Where "text" is a string of ASCII characters terminated by
an ESCAPE. The specified text string is entered into the
buffer at the current position of the pointer, with the
pointer positioned immediately after the last character of
the insertion.
nI$ This form of the I command inserts the single character
whose 7-bit ASCII code 15 п into the buffer at the current
position of the buffer pointer. (n is taken modulo 128.)
nIS is used to insert characters that are not available on
the user's terminal or special characters such as DELETE
which may not be inserted from a terminal with the standard
I command.
@I/text/ Equivalent to the I command except that the text to be
inserted may contain ESCAPE characters. A delimiting
character (shown as a slash here) must precede and follow
the text to be inserted, as described in Section 3.1.2
above.
neI// Equivalent to the nIS command, but does not require the
ESCAPE character.
<TAB>textS This command is equivalent to the I command except that the
<TAB> is part of the text which is inserted into the buffer.
FRtext$ Equivalent to "-nDItext$", where "n" is obtained from the
most recent occurrence of the following: (a) the length of
the most recent string found by a successful search command,
(b) the length of the most recent text string inserted
Standard TECO Page 49
Insertion Commands
eFR/text/
(including insertions from the FS, FN, or FR commands), or
(с) the length of the string retrieved by the most recent
"С" command. In effect, the last string inserted or found
is replaced with "text", provided that the pointer has not
been moved.
[Not in TECO-8]
Equivalent to "FRtext$”, except that "text" may contain
ESCAPE characters.
[Not in TECO-8]
Standard TECO Page 50
Search Commands
5.7 SEARCH COMMANDS
In many cases, the easiest way to position the buffer pointer is by
means of a character string search. Search commands cause TECO to
scan through text until a specified string of characters is found, and
then position the buffer pointer at the end of the string. A
Character string search begins at the current position of the pointer.
It proceeds within the current buffer in a forward or a reverse
direction or through the file in a forward direction. Specifying a
negative numeric argument to the search command causes the search to
proceed backwards from the pointer.
Your last explicitly specified search string is always remembered by
TECO. If a search command ¡is specified with a null search string
argument, the last explicitly defined search string will be used.
This saves having to retype a complex or lengthy search string on
successive search commands.
Normally searches are "unbounded" - they search from the current
position to the end of the text buffer (or in the case of backwards
searches, until the beginning of the buffer). A bounded search,
however, will only search from the current position to the specified
bound limit. If the search string is found within the bound límits,
the pointer is positioned immediately after the last character in the
string. If the string cannot be found, the pointer is left unchanged.
A special case of the bounded search occurs when the upper and lower
bound limits are the same. In such a case, the search command is
called an anchored search, and is used to compare the search argument
against the character string immediately followina the text buffer
pointer.
TECO-8 does not permit backward, bounded, or anchored searches. This
is a general property and will not be specifically mentioned again in
the following tables,
Standard TECO Page 51
Search Commands
TABLE 5-7A: SEARCH COMMANDS
Stexts$ Where "text" is a string of characters terminated by an
ESCAPE. This command searches the text buffer for the next
occurrence of the specified character string following the
current position of the buffer pointer. If the string is
found, the pointer is positioned after the last character in
the string. If it is not found, the pointer is positioned
immediately before the first character in the buffer (i.e.,
a 0J is executed) and an error message is printed.
nStext$ This command searches for the nth occurrence of the
specified character string, where n is greater than zero.
It is identical to the S command in other respects.
-nStext$ Identical to "nStext$" except that the search proceeds in
the reverse direction. If the string is not found, the
pointer is positioned immediately before the first character
in the buffer and an error message is printed. If the
pointer is positioned at the beginning of or within an
occurrence of the desired string, that occurrence is
considered to be the first one found. Upon successful
completion, the pointer is positioned after the last
character in the string found.
-Stext$ Equivalent to -1IStextS.
Ntext$ Performs the same function as the S command except that the
search is continued across page boundaries, if necessary,
until the character string is found or the end of the input
file is reached. This is accomplished by executing an
effective P command after each page is searched. If the end
of the input file is reached, an error message is printed
and it is necessary to close the output file and re-open it
as an input file before any further editing may be done on
that file. The N command will not locate a character string
which spans a page boundary.
nNtext$ This command searches for the nth occurrance of the
specified character string, where n must be greater than
zero. It is identical to the N command in other respects.
_text$ The underscore command is identical to the N command except
that the search is continued across page boundaries by
executing effective Y commands instead of P commands, so
that no output is generated. Since an underscore search can
result in the loss of data, it is aborted under the same
circumstances as the Y command (see the ED flag in section
5.16). Note that underscore is backarrow on some terminals.
n_text$ This command searches for the nth occurrence of the
specified character string, where n must be greater than
zero. It is identical to the __ command in other respects.
E text$ Same as text$ command except that effective EY (rather than
Y) commands are used. Thus, this command is never aborted
and is not controlled by the Yank protection bit in the ED
flag.
nE_text$ Same as n_text$ command except that effect Aive EY (rather
than Y) commands are used.
Standard TECO Page 52
Search Commands
TABLE 5-7B: BOUNDED SEARCH COMMANDS
m,nStext$ System specific command. Consult Appendix C.
m,nFBtextS Performs the same function as the nStext$ command, but m
nFBtext$
FBtext$
-FBtext$
+ :Stext$
The search
functions
and n (inclusive) serve as bounds for the search. In order
for a search to be successful, the first character to match
must occur between buffer pointer positions m and n. The
string that is matched is permitted to extend beyond the
search limits specified, provided that ¡it begins within
bounds. If m<n, then the search proceeds in a forwards
direction. If m>n, then the search proceeds in the reverse
direction.
Performs a bounded search over the next n lines. If n is
positive, the search proceeds forward over the next n lines;
if n is negative the search proceeds backwards over the n
preceding lines; if n is zero, the search proceeds
backwards over the portion of the line preceding the
pointer.
Equivalent to l1FBtext$.
Equivalent to -1FBtext$.
Compare command. The ::S command is not a true search. If
the characters in the buffer immediately following the
current pointer position match the search string, the
pointer is moved to the end of the string and the command
returns a value of -1; i.e., the next command is executed
with an argument of -1. If the characters in the buffer do
not match the string, the pointer is not moved and the
command returns a value of 0. Identical to ".,.:FBtext$".
and replace commands listed below perform equivalent
to the search commands listed next to them, but then delete
"textl" and replace it with "text2".
TABLE 5-7C: SEARCH AND REPLACE COMMANDS
Search & Replace Search Command
FStextl$text2$ Stext1$
nFStextl$text2$ nStextl$
FNtextl$text2$ Ntext1$
nFNtextl$text2$ nNtextl$
F textl$text2$ _text1$
[not in TECO-10]
nF_textlStext2$ n textlS
[Not in TECO-10]
FCtextl$text2$ FBtext1$
nFCtextlStext2$ nFBtext1$
m,nFCtextl$text2$ m,nFBtext1$
Standard TECO Page 53
Search Commands
In addition, the four following commands can be used on TECO-10:
FDtext$ Identical to the "FStext$$" command.
[TECO-10 only]
nFDtext$ Identical to the "nFStext$$" command.
[TECO-10 only)
nFKtext$ Searches for the nth following occurrence of "text" and then
deletes all characters in the text buffer between the
pointer positions before and after the search.
[TECO-10 only]
FKtext$ Equivalent to l1FKtext$
[TECO-10 only]
The FS, F_, and FN commands above can also be reverse searches (n<0)
or bounded searches (m,n argument). A reverse F or FN acts like a
reverse S; that is the search terminates when the “beginning of the
text buffer is encountered.
If a search command is entered without a text argument, TECO will
execute the search command as though it had been entered with the same
character string argument as the last search command entered. For
example, suppose the command “"STHE ENDS$” results in an error message,
indicating that character string "THE END" was not found on the
current page. Entering the command "N$" causes TECO to execute an N
search for the same character string. Although the text argument may
be omitted, the command terminator (ESCAPE) must always be entered.
Search commands can make use of the colon modifier described ¡in
Chapter 3. The following examples illustrate use of the colon
modifier:
COMMANDS: n:Stext$
m,n:StextS
n:Ntext$
n: text$
n:FStextlStext2$
m,n:FStextl1$text2$
n:FNtextlStext2$
etc,
FUNCTION: In each case, execute the search command. If the
search is successful, execute the next sequential
command with an argument of -1. If the search fails,
execute the next command with an argument of zero. If
the next command does not require a numeric argument,
execute it as it stands.
All search commands may also use the @ modifier to use alternate
delimiters, to allow <ESCAPE> characters in search strings or to avoid
the use of <ESCAPE> characters in command strings. Such search
commands take the following forms:
COMMANDS: eS/text/
m,n@FB/text/
n@FS/textl/text2/
@:N/text/
etc.
Standard TECO Page 54
Search Arguments
5.8 SEARCH ARGUMENTS
TECO builds the search string by loading its search string buffer from
the supplied search command argument. To help you enter special
characters or frequently used character sequences, the argument may
contain special string building characters. Table 5-8A lists the
string building characters and their functions.
TECO-8 does not support the extended String Build functions or Match
Control Constructs that begin with <CTRL/E>. This is a general
property and will not be repeated in the following tables.
Note that, as explained in Chapter 3, a caret (up-arrow) may be used
to indicate that the character following it is to be treated as a
control character. Any of the commands below may be entered using the
caret. This function of the caret can be disabled by using the ED
flag (see 5.16 and appendices).
TABLE 5-8A: STRING BUILDING CHARACTERS
CHARACTER FUNCTION
<CTRL/Q> A <CTRL/Q> character in a search command argument
indicates that the character following the <CTRL/Q> is
to be used literally rather than as a match control
character.
<CTRL/R> Same as <CTRL/O>.
<CTRL/V> A <CTRL/V> character in a search command argument
indicates that the character following the <CTRL/V> is
to be used as the equivalent character in the lower
case ASCII range (i.e., octal 100 to 137 is treated as
octal 140 to 177).
<CTRL/V><CTRL/V>
Two successive <CTRL/V> characters in a string argument
indicate to TECO that all following alphabetic
characters in this string are to be converted to lower
case unless an explicit “W is given to override this
state. This state continues until the end of the
string or until a “W”W construct is encountered.
[TECO-10 only]
<CTRL/W> A <CTRL/W> character in a search command argument
indicates that the character following the <CTRL/W> is
to be used as the equivalent character in the upper
case ASCII range (i.e., octal 140 to 177 is treated as
octal 100 to 137).
<CTRL/W><CTRL/W>
Two successive <CTRL/W> characters indicates to TECO
that all following alphabetic characters in this string
are to be converted to upper case unless an explicit “V
is encountered to override this state. This state
continues until the end of the string or until a “vv
construct is encountered.
[TECO-10 only]
<CTRL/E>Qq <CTRL/E>Qq indicates that the string stored in
Q-register д is to be used in the position occupied by
the “EQg in the search string. 7 registers are
discussed in section 5.9 below.
Standard TECO Page 55
Search Arguments
[Not in TECO-10]
<CTRL/E>Uq <CTRL/E>Uq indicates that the character whose ASCII
code 1s specified by the numeric storage area of
Q-register q is to be used in the position occupied by
the “EUg in the search string.
[TECO-11 only]
String build characters are also permitted inside the string arguments
of the O, EB, ER, EW, and EG commands.
TECO executes a search command by attempting to match the search
command argument character-by-character with some portion of the input
file. There are several special control characters that may be used
in search command arguments to alter the usual matching process.
Table 5-8B lists these match control characters and their functions.
TABLE 5-8B: MATCH CONTROL CHARACTERS
CHARACTER FUNCTION
<CTRL/X> A <CTRL/X> character indicates that this position in
the character string may be any character. TECO
accepts any character as a match for <CTRL/X>.
<CTRL/S> A <CTRL/S> character indicates that any separator
character is acceptable in this position. TECO accepts
any character that is not a letter (upper or lower case
A to 2) or a digit (0 to 9) as a match for <CTRL/S>.
<CTRL/N>x TECO accepts any character as a match for the <CTRL/N>x
combination EXCEPT the character which follows the
<CTRL/N>. <CTRL/N> can be combined with other special
characters. For example, the combination
<CTRL/N><CTRL/E>D means match anything except a digit
in this position.
<CTRL/E>A <CTRL/E>A indicates that any alphabetic character
(upper or lower case A to Z) is acceptable in this
position,
<CTRL/E>B Same as <CTRL/S>.
<CTRL/E>C <CTRL/E>C indicates that any character that is legal as
: part of a symbol constituent is acceptable in this
position. TECO accepts any letter (upper or lower case
A to 2), any digit (0 to 9), a dot (.), or a dollar
sign ($) as a match for <CTRL/E>C. Additional
characters may be matched depending upon the operating
system; consult the appropriate appendix.
<CTRL/E>D <CTRL/E>D indicates that any digit (0 to 9) is
acceptable in this position.
<CTRL/E>Gq <CTRL/E>Gq indicates that any character contained in
Q-register q is acceptable in this position. For
example, if Q-register A contains "A#*:" then TECO
accepts either A, *, or : as a match for <CTRL/E>GA.
[Not in TECO-10]
<CTRL/E>L <CTRL/E>L indicates that any line terminator (line
feed, vertical tab, or form feed) is acceptable in the
Standard TECO Page 56
Search Arguments
position occupied by <CTRL/E>L in the search string.
<CTRL/E>M <CTRL/E>M indicates that any non-zero number of
occurrences of the immediately following character or
match control construct is acceptable at this position.
(TECO-10 only]
<CTRL/E>R <CTRL/E>R indicates that any alphanumeric character
(letter or digit as defined above) is acceptable in
this position.
<CTRL/E>S <CTRL/E>S indicates that any non-null string of spaces
and/or tabs is acceptable in the position occupied by
<CTRL/E>S.
<CTRL/E>V <CTRL/E>V indicates that any lower case alphabetic
character is acceptable in this position.
<CTRL/E>W <CTRL/E>W indicates that any upper case alphabetic
character is acceptable in this position.
<CTRL/E>X Equivalent to <CTRL/X>.
<CTRL/E><nnn> <CTRL/E><nnn> indicates that the character whose ASCII
octal code is nnn is acceptable in this position.
[TECO-10 only]
<CTRL/E>[a,b,c,...]
<CTRL/E>[a,b,c,...] indicates that any one of the
specified characters is acceptable in this position.
One or more characters or other match control
constructs are permitted.
[TECO-10 only] |
TEC0-8 uses special symbols to represent certain match control
characters when they are displayed by an error message. These display
symbols are:
Character Display
^^ <NOT>
^5 <SEP>
ex <ANY>
Standard TECO Page 57
Q-registers
5.9 Q-REGISTERS
TECO provides 36 data storage registers, called Q-registers, which may
be used to store single integers and/or ASCII character strings. Each
Q-register is divided into two storage areas: a number storage area
and a text storage area. The number storage area can store one signed
integer. The text storage area can store an ASCII character string
which may be either text or a TECO command string. Each Q-register
has a single character name which is one of the letters A to Z or one
of the digits 0 to 9. Upper and lower case letters may be used
interchangeably.
TECO-10 allows additional Q-registers besides the 36 described above.
Consult Appendix I for further details.
Table 5-9A lists the commands which permit characters to be loaded
into the Q-registers.
TABLE 5-9A: Q-REGISTER LOADING COMMANDS
COMMAND FUNCTION
nUq Put n in the numeric storage area of Q-register q.
m, nUq Equivalent to the nUgm command. That is, this command puts
the number n into the numeric storage area of Q-register q
and then returns the number m as a value. The command UAUB
is useful at the beginning of a macro to save the two
arguments specified on the macro call. (See the m,nMq
command below.)
n%g Add n to the contents of the number storage area of
Q-register q. The resulting value contained in Q-register q
is used as a numeric argument for the next command. If the
next command does not require a numeric argument, this value
is discarded.
п%49$ Same as n%q but discards the value returned.
sq Equivalent to 1%g.
“Ugstring$
This command inserts character string "string” into the text
storage area of (Q-register q. When entering a command
string from the terminal, you must specify “U using the
caret/U format, since the <CTRL/U> character is the line
erase immediate action command.
: Ugstring$
This command appends character string "string" to the text
storage area of Q-register "q".
[not in TECO-8]
п^иа$ This form of the “Ug$ command inserts the single character
whose 7-bit ASCII code is n into the text storage area of
Q-register "q".
[not in TECO-8]
n: Ug$ This form of the :“Ug$ command appends the single character
whose 7-bit ASCII code is n to the text storage area of
Q-register "gq".
[not in TECO-8]
Standard TECO Page 58
Q-registers
a” Ug/string/
e: Ug/string/
ne" ug//
ne: Ua//
nXq
Xq
-Xq
m, nXq
e ,.+nXq
o-n, e Xq
n: Xq
Equivalent, respectively, to the “Ugstring$, :"Ugstring$,
n“Ug$, and n:” Ug$ commands, except that alternate delimiters
are used and no <ESCAPE> characters are necessary.
Clear Q-register q and move n lines into it, where n is a
signed integer. If n is positive, the n lines following the
current pointer position are copied into the text storage
area of Q-register q. If n is negative, the n lines
preceding the pointer are copied. If n is zero, the
contents of the buffer from the beginning of the line on
which the pointer is located up to the pointer is copied.
The pointer is not moved. The text is not deleted.
Equivalent to 1Xq.
Equivalent to -1Xq.
Copy the contents of the buffer from the m+lth character
through and including the nth character into the text
storage area of Q-register д. M and n must be positive, and
m should be less than n.
Copy the n characters immediately following the buffer
pointer into the text storage area of Q-register q. N
should be greater than zero.
Copy the n characters immediately preceeding the buffer
pointer into the text storage area of QO-register q. N
should be greater than zero.
Append n lines to Q-register q, where n is a signed integer
with the same functions as n in the nXq command above. The
pointer is not moved.
[not in TECO-8]
The colon construct for appending to a O-register can be
used with all forms of the X command.
Pop from the Q-register push-down list into Q-register q.
Any previous contents of Q-register gq are destroyed. Both
the numeric and text parts of the Q-register are loaded by
this command. The O-register push-down list is a last-in
first-out (LIFO) storage area. This command does not use
numeric values. Numeric values are passed through this
command as if it did not occur. This allows macros to
restore Q-registers and still return numeric values.
[Not in TECO-8]
Execute the ]q command and return a numeric value. A —-l
indicates that there was another item on the Q-register
push-down list to be popped. A 0 indicates that the
Q-register push-down list was empty, so Q-register q was not
modified.
[Not in TECO-8]
Standard TECO Page 59
Q-registers
Table 5-9B lists the commands which permit data to be retrieved from
the Q-registers.
TABLE 5-9B: Q-REGISTER RETRIEVAL COMMANDS
COMMAND FUNCTION
Qq Use the integer stored in the number storage area of
Q-register q as the argument of the next command.
nQq Return the ASCII value of the (n+l)th character in
| Q-register д. The argument n must be between 0 and the
Q-register's size minus 1. If n is out of range, a value of
-1 is returned. Characters within a Q-register are numbered
the same way that characters in the text buffer are
numbered. The initial character is at character position O,
the next character is at character position 1, etc.
Therefore, if O-register A contains "xyz", then 0QA will
return the ASCII code for "x" and 10A will return the ASCII
code for "y".
:Qq Use the number of characters stored in the text storage area
of Q-register q as the argument of the next command.
Gq Copy the contents of the text storage area of Q-register q
into the buffer at the current position of the buffer
pointer, leaving the pointer positioned after the last
character copied.
:Gq Print the contents of the text storage area of Q-register q
on the terminal. The text buffer and buffer pointer are not
changed by this command.
Mg Execute the contents of the text storage area of Q-register
q as a command string. Mg commands may be nested
recursively as far as TECO's push down storage will permit.
nMg Execute the Mg command, using n as a numeric argument for
the first command contained in Qregister q.
m,nMq Execute the Mg command, using m,n as a numeric argument for
the first command contained in Qregister q.
[q Copy the contents of the numeric and text storage areas of
Q-register q into the Q-register push-down list. This
command does not alter either the numeric or text storage
areas of Q-register gq. It does not use numeric values.
Numeric values are passed through this command as if it did
not occur, allowing macros to save temporary Q-registers and
still accept numeric values. The command sequence [A ]B
copies the text and numeric value from Q-register A to
Q-register B.
[Not in TECO-8]
Standard TECO
Page 60
Arithmetic and Expressions
5.10 ARITHMETIC AND EXPRESSIONS
The numeric argument of a TECO command may consist of a single
integer, any of the characters listed in Table 5-11, the numeric
contents of any Q-register, or an arithmetic combination of these
elements. If an arithmetic expression is supplied as a numeric
argument, TECO will evaluate the expression. All arithmetic
expressions are evaluated from left to right without any operator
precedence.
evaluation
Parentheses may be used to override the normal
of an expression.
within the parentheses are performed,
outside the parentheses.
order of
all operations
before operations
in which case the
If parentheses are used,
left to right,
Parentheses may be nested,
innermost expression contained by parentheses will be evaluated first.
Table
5-10A lists all of the arithmetic operators that may be used in
arithmetic expressions.
OPERATOR
+
EXAMPLE
8*2=16
8/3=2
12&10=8
12#10=14
TABLE 5-10A:
Negation,
ARITHMETIC OPERATORS
FUNCTION
Ignored if used before the first term in an
expression.
Addition, if used between terms.
if used before the
expression.
first term in an
Subtraction, if used between terms
Multiplication. Used between terms.
Integer division with loss of the remainder. Used
between terms.
Bitwise logical AND of the binary representation
of the two terms. Used between the terms.
Bitwise logical OR of the binary of the two terms.
Used between the terms.
Unary one's complement. Used after an expression.
This is a TECO command that complements its
argument. Strictly speaking, it is not a unary
operator.
Standard TECO Page 61
Arithmetic and Expressions
COMMAND
n=
=
i
i
33 3
n°R
TABLE 5-10B: CONVERSION AND RADIX CONTROL COMMANDS
FUNCTION
This command causes the value of n to be output at the
terminal in decimal followed by a carriage return and line
feed. Decimal numeric conversion is signed. For example,
the unsigned number 65535 will output as -1 оп ТЕСО-11.
TECO's radix is unaltered.
This command causes the value of n to be output at the
terminal in octal (base 8) followed by a carriage return and
line feed. Octal numeric conversion is unsigned. For
example, the unsigned number 8191 (decimal) will output as
17777 on TECO-8. TECO's radix is unaltered.
This command causes the value of n to be output at the
terminal in hexadecimal (base 16) followed by a carriage
return and line feed. Hexadecimal output is unsigned.
TECO's radix is unaltered.
[TECO-11 only]
These commands are equivalent to n=, n==, and n===, except
that they leave the carriage positioned at the end of the
output.
<CTRL/O> (caret/0) causes all subsequent numeric input to be
accepted as octal numbers. Numeric conversions using the \
or n\ commands will also be octal. The digits 8 and 9
become illegal as numeric characters. The octal radix will
continue to be used until the next “D command is executed or
until TECO's radix is changed by an n"R command.
NOTE: On TECO-10, this command only affects the immediately
following digit string.
<CTRL/D> (caret/D) causes all subsequent numeric input to be
accepted as decimal numbers. This is the initial setting.
[Not in TECO-10]
This command returns the binary value of TECO's current
radix.
[TECO-11 only]
This command sets TECO's radix to the value of n. It is
currently implemented only in TECO-11, where n may only be
one of the values 8, 10, or 16 (representing octal mode,
decimal mode, or hexadecimal mode). If n is not one of
these values, TECO's radix remains unchanged and the ?IRA
error message is produced.
A backslash character which is not preceded by a numeric
argument causes TECO to evaluate the digit string (if any)
beginning with the character immediately following the
buffer pointer and ending at the next character that is not
valid for the current radix. The value becomes the numeric
argument of the next command. The first character may be a
digit or + or -. As the backslash command is evaluated,
TECO moves the buffer pointer to a position immediately
following the digit string. If there is no digit string
following the pointer, the result is zero and the pointer
position remains unchanged. Except on TECO-8, the digits 8
and 9 will stop the evaluation if TECO's current radix is
Standard TECO
Arithmetic and Expressions
n\
Page 62
octal.
The backslash command preceded by an argument inserts the
value of n into the text buffer at the current position of
the pointer, leaving the pointer positioned after the last
digit of the insertion. The insertion is either signed
decimal (decimal radix), unsigned octal (octal radix), or
unsigned hexadecimal (hexadecimal radix). Note that \ is a
"bidirectional" command. n\ inserts a string into text
while \ (no argument) returns a numeric result.
Standard TECO Page 63
Special Numeric Values
5.11 SPECIAL NUMERIC VALUES
TECO maintains several internal variables which record conditions
within TECO. The variable name is equivalent to the current contents
of the variable and may be entered as a numeric argument to TECO
commands. When the command is executed, the current value of the
designated variable becomes the numeric argument of the command.
Some of the characters which stand for specific values associated with
the text buffer have been introduced earlier in this manual. For
example, the dot character (.), which represents the current pointer
position, may be used in the argument of a T command. The command
".7,e.+5T”" causes the 5 characters following the buffer pointer to be
typed out. When this command is executed, the number of characters
preceding the buffer pointer is substituted in each case for the
“dot”. The addition is then carried out, and the command is executed
as though it were of the form "m,nT".
Table 5-11 lists all of the characters which have special numeric
values. Any of these characters may be used as numeric argument in
place of the value it represents.
TABLE 5-11: CHARACTERS ASSOCIATED WITH NUMERIC QUANTITIES
CHARACTER FUNCTION
B Always equivalent to zero. Thus, B represents the position
preceding the first character in the buffer.
2 Equivalent to the number of characters currently contained
in the buffer. Thus, 2 represents the position following
the last character in the buffer.
. Equivalent to the number of characters between the beginning
of the buffer and the current position of the pointer. Thus
м" "
.‚ represents the current position of the pointer.
H Equivalent to the numeric pair "B,Z", or "from the beginning
of the buffer up to the end of the buffer." Thus, H
represents the whole buffer.
nA Equivalent to the ASCII code for the .+n+lth character in
the buffer (that is, the character to the right of buffer
pointer position .+n). The expression -1A is equivalent to
the ASCII code of the character immediately preceding the
pointer and OA is equivalent to the ASCII code of the
character immediately following the pointer (the current
character). If the character position referenced lies
outside the bounds of the text buffer, this command returns
a -l.
МЧ The Mg command (execute the contents of the text storage
area of O-register "q" as a command string) may return a
numeric value if the last command in the string returns a
numeric value and is not followed by an ESCAPE.
Qq Equivalent to the value stored in the number storage area of
Q-register q.
:Qq Equivalent to the number of characters in the text storage
area of Q-register q.
[Not in TECO-8]
Standard TECO Page 64
Special Numeric Values
n°F
Backslash is equivalent to the numeric value of the digit
string in the text buffer at the current pointer position,
interpreted in the current radix. The pointer is moved to
the end of the digit string.
<CTRL/B> (caret/B) is equivalent to the current date via the
following equations:
0S/8: "B = (((month*32)+day)*8)+((year-1970)&7) +k
where k = 4096 if year>1977
and k=0 otherwise
RT-11: “B = (((month*32)+day)*32)+year-1972
RSTS/E: “B = ((year-1970)*1000)+day within year
RSX-11: “B = ((year-1900)*16+month)*32+day
VAX/VMS: “B = ((year-1900)*16+month) *32+day
TOPS-10: ^В = (((year-1964)*12+month-1)*31+day-1)
<CTRL/E> (caret/E) is equivalent to -1 if the buffer
currently contains a full page of text (which was terminated
by a form feed in the input file) or 0 if the buffer
contains only part of a page of text (which either filled
the buffer to capacity before the terminating form feed was
read or which was not terminated by a form feed.) The “E
flag is tested by the P command and related operations to
determine whether a form feed should be appended to the
contents of the buffer on output.
<CTRL/F> (caret/F) is equivalent to the current value of the
console switch register.
A<CTRL/F> is the terminal number plus 200000 (octal) for job
n's terminal. -1”F is the terminal number plus 200000
(octal) for your job's terminal. The result is 0 if the
specified job is detached or if there is no such job.
[TECO-10 only]
<CTRL/H> (caret/H) is equivalent to the current time of day
via the following equations:
05/8: °H= 0
RT-11: ^Н = (seconds since midnight)/2
RSTS/E: ^Н = minutes until midnight
RSX-11: ^Н = (seconds since midnight)/2
VAX/VMS: “H = (seconds since midnight)/2
TOPS-10: ^Н = 60ths of a second since midnight
(or 50ths of a second where 50 Hz power is used)
<CTRL/N> (caret/N) is the end of file flag. It is
equivalent to -1 if the file open on the currently selected
input stream is at end of file, and zero otherwise.
<CTRL/S> (caret/S) is equivalent to the negative of the
length of the last insert, string found, or string inserted
with a "G" command, whichever occurred last. To back up the
pointer to the start of the last insert, string found, etc.,
type ""sc".
[Not in TECO-8]
<CTRL/T> (caret/T) is equivalent to the ASCII code for the
next character typed at the terminal. Every “T command
executed causes TECO to pause and accept one character typed
at the terminal. See the ET flag description (section 5.16)
for variations.
Standard TECO Page 65
Special Numeric values
Y
<CTRL/Y> (caret/Y) is equivalent to ".+°S,.", the n,m
numeric argument spanning the text just searched for or
inserted. This value may be used to recover from inserting
a string in the wrong place. Type "“YXAFRS" to store the
string in Q-register A and remove it from the buffer. You
can then position the pointer to the right place and type
"GA" to insert the string.
[TECO-11 only]
<CTRL/2> (caret/Z) is equivalent to the total space occupied
by text in the OQ-registers (including the command line
currently being executed).
[TECO-11 only]
The combination of the Control-caret (double caret or double
up-arrow) followed by any character is equivalent to the
value of the ASCII code for that character. The "x” in this
example may be any character that can be typed in to TECO.
MODE CONTROL FLAGS
The use of these flags is described below in section 5.16.
ED
EH
EO
ES
ET
EU
EV
Equivalent to the current value of the edit level flag.
Equivalent to the current value of the help level flag.
Equivalent to the version number of the version of TECO
which is currently being run. This manual describes TECO-11
version 36, TECO-8 Version 7, and TECO-10 Version 3.
Equivalent to the current value of the search verification
flag.
[Not in TECO-8]
Equivalent to the current value of the type out control
flag.
Equivalent to the current value of the upper/lower case
flag.
Equivalent to the current value of the edit verify flag.
[TECO-11 only]
<CTRL/X> (caret/X) is equivalent to the current value of the
search mode flag.
[Not in TECO-8]
Standard TECO Page 66
Command Loops
5.12 COMMAND LOOPS
You can cause a command string to be executed any number of times by
placing the command string within angle brackets and preceding the
brackets with a numeric argument designating the number of iterations.
Iterated command strings are called command loops. Loops may be
nested so that one command loop contains another command loop, which,
in turn, contains other command loops, and so on. The maximum depth
to which command loops may be nested is determined by the size of
TECO's push-down list (system dependent), but is always greater than
10.
The general form of the command loop is:
n<command string>
where "command string” is the sequence of commands to be iterated and
n is the number of iterations. If n is not supplied then no limit is
placed on the number of iterations. If n is 0 or less than 0 then the
iteration 1s not executed at all; command control skips to the
closing angle bracket. If n is greater than 0, then the iteration is
performed n times,
Search commands inside command loops are treated specially. If a
search command which is not preceded by a colon modifier is executed
within a command loop and the search fails, a warning message is
printed (on TECO-11], the command loop is exited immediately and the
command following the right angle bracket of the loop is the next
command to be executed. If an unmodified search command in a command
loop is immediately followed by a semicolon, it is treated as if it
were a colon-modified search (see section 5.13).
Standard TECO Page 67
Branching Commands
5.13 BRANCHING COMMANDS
TECO provides an unconditional branch command and a set of conditional
execution commands. To branch within a command string, you must be
able to name locations inside the string. TECO permits location tags
of the form:
tag!
to be placed between any two commands in a command string. The name
"tag" will be associated with this location when the command string is
executed. Tags may contain any number of ASCII characters and any
character except an exclamation mark. (When using the € form of this
command, any character except the delimiter is legal.) Since tags are
ignored by TECO except when a branch command references the tagged
location, they may also be used as comments within complicated command
strings.
The unconditional branch command is the O command which has the form:
Otag$
where "tag" is a location named elsewhere in the command string and
"$" signifies an ESCAPE. When an O command is executed, the next
command to be executed will be the one that follows the tag referenced
by the O command. Command execution continues normally from this
point.
Use of the O command is subject to two restrictions. First, if an O
command is stored in a Q-register as part of a command string which is
to be executed by an M command, the tag referenced by the O command
must reside in the same Q-register.
Second, an O command which is inside a command loop may not branch to
a tagged location preceding the command loop. However, it is always
possible to branch out of a command loop to a location which follows
the command loop and then branch to the desired tag.
The string argument in the O command has the same format as the string
arguments in the search and E commands. String build characters such
as "EQQ can be embedded within the string in TECO-11. Also, in
TECO-11 and TECO-10, the O command may be é-sign modified. In that
case, the syntax of the command would be d0/tag/ where / represents
any delimiting character that does not appear within the tag.
Branching into a conditional poses no problems, but branching into a
command loop will causes unpredictable results.
Although tags may contain any sequence of ASCII characters, good
programming practice dictates that tags should not contain unusual
characters (such as space, comma, ESCAPE, etc.) and that they should
be mnemonic for the piece of code to which they refer.
There are many other branching commands. Most of these are
considerably faster than the O command and should be used wherever
convenient. They are all described in the table below.
Standard TECO
Branching Commands
COMMAND
Otag$
e0/tag/
Page 68
TABLE 5-13: BRANCHING COMMANDS
FUNCTION
This command causes TECO to branch to the first occurrence
of the specified label (tag) in the current macro level. In
TECO-8 and TECO-11, branching to the left of the start of
the current iteration is not permitted, and this command
will only look for an occurrence of the specified tag
following the < of the current iteration, if you are in an
iteration. In any case, branching out of an iteration is
poor programming practice. Command execution resumes at the
first character after the delimiter terminating the
specified tag. Using this syntax, any character except
<ESC> is permitted in the tag specification. The usual
string build characters are permitted when specifying the
tag.
Equivalent to Otag$ except that a delimiter (shown here as
/) is used before and after the specified tag. Any
character other than that delimiter is permitted inside the
tag. The usual string build characters are permitted when
specifying the tag.
[Not in TECO-8]
nOtag0,tagl,tag2,...$
This command causes TECO to branch to the tag specified by
the nth tag in the accompanying list. The string argument
to this command consists of a sequence of tags separated by
commas. The tags may contain any characters other than
comma or <ESC>; however, good programming practice dictates
that the tags should consist only of letters and digits.
There must be no intervening spaces since these would be
considered part of the tag. If n is out of range, then
command execution continues with the first command following
the <ESC> that delimits this command.
[TECO-11 only]
ne0/tag0,tagl,tag2,.../
Same as the preceding command except that the list of tags
is bracketed by a delimiter shown here as "/". The
delimiter can be any character that does not appear within
the list of tags. In particular, using comma for the
delimiter would not be very useful.
[TECO-11 only]
This command causes TECO to branch out of the current
iteration, if the immediately preceding search (or search
and replace) command failed. In that case, control resumes
at the character following the matching > at the end of the
current iteration. On the other hand, if the preceding
search succeeded, command execution continues with the
character following the ;. If this command is encountered
from outside of an iteration (in the current macro level),
then the ?SNI error message is issued.
This command causes TECO to branch out of the current
iteration if the value of n is greater than or equal to 0.
In that case, command execution resumes at the character
following the matching > at the end of the current
iteration. On the other hand, if n is less than 0, command
execution continues with the character following the ;. If
this command is encountered from outside of an iteration (in
the current macro level), then the ?SNI error message is
Standard TECO Page 69
Branching Commands
Фе
ve
F>
F<
ve
issued.
This command causes TECO to branch out of the current
iteration if the immediately preceding search (or search and
replace) command succeeded. In that case, control resumes
at the character following the matching > at the end of the
current iteration. On the other hand, if the preceding
search failed, command execution continues with the
character following the ;. If this command is encountered
from outside of an iteration (in the current macro level),
then the ?SNI error message is issued.
[TECO-1] only]
This command causes TECO to branch out of the current
iteration if the value of n is less than 0. In that case,
command execution resumes at the character following the
matching > at the end of the current iteration. On the
other hand, if n is greater than or equal to 0, command
execution continues with the character following the ;. ТЕ
this command is encountered from outside of an iteration (in
the current macro level), then the ?SNI error message is
issued.
[TECO-11 only]
This "command" is actually part of the syntax of TECO
conditionals. It has no affect if "executed" other than to
signify termination of the current conditional level. If an
argument is specified to this command, the result is not
defined. (Arguments pass through this command on TECO-11.)
Conditionals are described in section 5.14.
This "command" is actually part of the syntax of TECO
conditionals. If executed, it causes control to branch to
the end of the conditional. Command execution resumes with
the character following the ' that ends the current
conditional with the ELSE clause being skipped.
This "command" is actually part of the syntax of TECO
iterations. If executed, it causes TECO to bump the current
iteration count by 1 and test to see if the resulting count
is equal to the maximum count permitted for the iteration
(specified as an argument before the matching <). If the
iteration count has not expired, then control returns to the
command following the < at the beginning of the current
iteration. If the iteration has expired, then command
execution continues with the character following this >. If
this command is encountered outside of an iteration (within
the current macro level), then the ?BNI error message (or
its equivalent) is issued.
This command causes TECO to branch (flow) to the end of the
current iteration. TECO effectively resumes execution at
the matching >. The iteration count is tested as usual. If
it has not expired, control returns back to the start of the
iteration with the count having been incremented by 1. If
the count was up, the iteration is exited and control
continues with the first command after the 5. If this
command is encountered outside of an iteration, it has the
same effect as the <ESC><ESC> command.
[TECO-11 only]
This command causes TECO to branch (flow) to the start of
the current iteration. TECO effectively resumes execution
at the first command following the < at the beginning of the
Standard TECO Page 70
Branching Commands
F'
F |
$$
п$$
п, п$$
“C<CTRL/C>
current iteration. The iteration count is not affected. ТЕ
this command is issued outside of an iteration, it causes
TECO to branch back to the start of the current command
string (in the current macro level).
(TECO-11 only]
This command causes TECO to branch (flow) to the end of the
current conditional. TECO effectively resumes execution at
the first command following the ' at the end of the current
conditional. Numeric arguments are eaten up by this
command. If this command is issued while not in a
conditional, the ?MAP error (or its equivalent) is issued.
(TECO-11 only]
This command causes TECO to branch (flow) to the else clause
of the current conditional. TECO effectively resumes
execution at the first command following the | at the end of
the current THEN clause. If the current conditional has no
ELSE clause, or if an unmatched ' is encountered before an
unmatched |, then control resumes at the command following
the ' . Numeric arguments are eaten up by this command. If
this command is issued while not in a conditional, the ?MAP
error (or its equivalent) is issued, Well-structured
programs should not need to use this command.
[TECO-11 only]
The <ESC><ESC> command causes TECO to exit from the current
macro level. If this command is issued from top level (not
from within a macro), then the command string execution is
terminated and TECO returns to prompt level. Note that the
second <ESC> must be a true ESCAPE and may not be a ^[.
Also, note that both ESCAPES must be true TECO commands and
not part of the syntax of some previous command. That is,
the first <ESC> does not count if it is the delimiting
ESCAPE of a string.
This command causes TECO to exit from the current amcro
level, returning the number n as a value. This value will
be used as the numeric argument to the first command
following the macro call.
This command causes TECO to exit from the current macro
level, returning the pair of values m and n as arguments to
the first command following the macro call. Good
programming practice dictates that all ways of exiting a
macro return the same number of arguments.
The <CTRL/C> (Caret-C) command when executed as a TECO
command, causes command execution to stop and control return
to TECO's prompt. No clean-up of push-down lists, flag
settings, etc. is done. This command lets a macro abort
TECO's command execution.
[On TECO-8 and TECO-10, this command causes control to
return to the operating system.]
[On TECO-11, this command returns to the operating system if
executed from the top level.]
Consult the appendices for specific details concerning your
operating system.
This command causes TECO to unconditionally abort and
control exits from TECO. Control returns to the operating
system. The second <CTRL/C> must be a true <CTRL/C> and may
not be a Caret-C.
Standard TECO Page 71
Conditional Execution Commands
5.14 CONDITIONAL EXECUTION COMMANDS
All conditonal execution commands are of the form:
п"Х command-string '
or
n"X then-command-string | else-command-string '
In the first form of the command, "n”* is a numeric argument on which
the decision is based, "X" is any of the conditional execution
commands listed in table 5-14, and "command string” is the command
string which will be executed if the condition is satisfied. The
numeric argument is separated from the conditional execution command
by a double quote (") and the command string is terminated with an
apostrophe ('). If the condition is not satisfied, the command string
will not be executed; execution will continue with the first command
after the apostrophe.
In the second form of the command, two command strings are specified.
The first one is executed if the condition is satisfied and the second
is executed if the condition is not satisfied. Only one of the
command strings will be executed. After execution of the appropriate
command string, control will continue with the first command after the
apostrophe (unless the command string caused a branch out of the
conditional to occur), since execution of the vertical bar command (|)
causes TECO to scan to the next matching apostrophe.
Conditional commands are similar to the IF-THEN-ELSE constructs that
you find in other structured programming languages, although none can
match the brevity and elegance of TECO's implementation. Nonetheless,
you must use these facilities wisely. Good programming practice
dictates that a branch into the range of a conditional (from outside
that range) should not occur.
Conditional execution commands may be nested in the same manner as
iteration commands. That is, the command string which is to be
executed if the condition on n is met may contain conditional
execution commands, which may, in turn, contain further conditional
execution commands.
TABLE 5-14: CONDITIONAL EXECUTION COMMANDS
COMMAND FUNCTION
n"A Execute the following command string if n equals the ASCII
code for an alphabetic character (upper or lower case A to
2).
n"C Execute the following command string if n is the ASCII code
of any character that is a symbol constituent. This is
usually one of the upper or lower case letters A to Z, one
of the digits 0 to 9, or period, or dollar sign, but may
include additional characters on some operating systems.
Consult the appropriate appendix.
n"D Execute the following command string if n equals the ASCII
code for a digit (0 to 9).
n"E Execute the following command string if n is equal to zero.
n”F Execute the following command string if n is FALSE.
Equivalent to n"E.
Standard TECO Page 72
Conditional Execution Commands
n"G
n"L
n"N
Execute the following command string if n is greater than
zero.
Execute the following command string if n is less than zero.
Execute the following command string if n is not equal to
zero.
Execute the following command string if n equals the ASCII
code for an alphanumeric (upper or lower case A to Z or 0 to
9).
Execute the following command string if n is SUCCESSFUL.
Equivalent to n"L.
Execute the following command string if n is TRUE.
Equivalent to n"L.
Execute the following command string if n is UNSUCCESSFUL.
Equivalent to n"E.
Execute the following command string if n equals the ASCII
code for a lower case alphabetic character (lower case A to
2).
[Not in TECO-8]
Execute the following command string if n equals the ASCII
code for an upper case alphabetic character (upper case A to
2).
[Not in TECO-8]
Identical to n"L
Identical to n"G
Identical to n"E
Standard TECO Page 73
Retrieving Environment Characteristics
5.15 RETRIEVING ENVIRONMENT CHARACTERISTICS
The following TECO commands return values of interest to users who
want information about their current job, the operating system, their
terminal, etc.
All negative EJ commands return an operating system dependent value.
Consult the appendices for operating system unique commands.
TABLE 5-15A: RETREIVING ENVIRONMENT CHARACTERISTICS
COMMAND FUNCTION
-1EJ Return a number representing the computer and operating
system upon which TECO is currently running. This value has
the form 256m+n where m is a number representing the
computer in use and n is a number representing the operating
system that is running. Current values of m and n are:
Computer (m) Operating System (n)
0 PDP-11 RSX-11D
RSX-11M
RSX-11S
IAS
RSTS/E
VAX/VMS
(compatibility mode)
RSX-11M+
RT-11
05/8
TOPS-10
TOPS-20
VAX/VMS
(native mode)
ne wNHOo
PDP-8
DEC-10
DEC-20
VAX-11
SW N --
OCOOOIJD
OEJ Returns a value equal to your job number. On single-user
systems, this is always a 0.
1EJ Returns a value equal to your console keyboard number (the
keyboard you detached from if you are running detached). On
single-terminal systems, this is always a 0.
2EJ Returns a value equal to your operating system's user
identification number. This may be called your UIC, PPN,
Group, etc. under various operating systems. Consult the
appendices for more information.
Standard TECO Page 74
Retrieving Environment Characteristics
n,1EJ
n,2EJ
TABLE 5-15B: SETTING ENVIRONMENT INFORMATION
Set the terminal number to receive output. This will not
affect terminal input. Your job will remain attached to, or
detached from, your terminal, whichever it was before.
Output will only occur if the specified terminal is ASSIGNed
with a monitor ASSIGN command (you may °C, issue that
command and continue) and if your job has POKE privileges.
This command also sets the terminal to be reattached if the
set detach flag (64&ET) is cleared. The reattaching
operation requires [1,2] or JACCT privileges.
[TECO-10 only]
Sets your [p,pn] to n where n has the same format as the
number returned by the 2EJ command. Issuance of this
command requires the appropriate privileges.
[TECO-10 only]
Standard TECO Page 75
Mode Control Flags
5.16 MODE CONTROL FLAGS
TECO has flags which control various aspects of its operation. You
can find a flag's current setting by executing its command name
without an argument; the current setting of the flag is returned as a
value. A flag may be set to a specific value by executing its command
name preceded by a numerical argument; the flag is set to the value
of the argument.
The following table describes the commands that set and clear flags;
<flag> represents any of the flags listed above.
TABLE 5-16A: FLAG MANIPULATION COMMANDS
<flag> Return value of flag.
n<flag> Set value of flag ton.
m,n<flag> In the flag, turn off those bits specified by m and
turn on those bits specified by п.
O,n<flag> Turn on the bits in the flag specified by n.
m,0<flag> Turn off the bits in the flag specified by m.
The flags have the following functions:
TABLE 5-16B: MODE CONTROL FLAGS
COMMAND FUNCTION
ED The edit level flag, a bit-encoded word that controls TECO's
behavior in various respects. Any combination of the
individual bits may be set as the user sees fit. The bits
have the following functions:
Ер& 1 Allow caret (”) in search strings. If this bit is
clear, a caret (°) in a search string modifies the
immediately following character to become a
control character. When this bit is set, a caret
in a search string is simply the literal character
caret. If you are editing a file that contains
many caret characters (e.g., a RUNOFF file with
case control), you will want to set this bit.
ED&2 Allow all Y and _ commands. If this bit is set,
the Y (Yank) command and _ (underscore or
backarrow) command work unconditionally as
described earlier in the manual. If clear, the
behavior of the Y and commands are modified as
follows: If an output file is open and text
exists in the text buffer, the Y or _ command will
produce an error message and the command will be
aborted leaving the text buffer unchanged. Note
that if no output file is open the Y and
commands act normally. Furthermore, if the text
buffer is empty the Y command can be used to bring
in a page of text whether or not an output file is
open (HKY will always work). The command will
succeed in bringing one page of text into an empty
text buffer but will fail to bring in successive
Standard TECO
Mode Control Flags
EH
ED&4
ED&8
ED&16
ED&32
ED&64
Page 76
pages if an output file is open.
When this bit is clear, TECO will try to expand
memory as much as it can in order to try to fit
entire pages into memory when requested to do so.
If this bit is set, arbitrary memory expansion
will not occur. In that case, TECO will expand
memory only on the A command and not on the Y, P,
or N commands. This bit is always set in TECO-10
and has no significance in TECO-8 or in TECO-11 on
RT-11 e
Reserved for future use by TECO-8.
Allow failing searches to preserve dot. If this
bit is set, then whenever a search fails, the
original location of the text buffer pointer will
be preserved. If this bit is clear, then failing
searches (other than bounded searches) leave the
text buffer pointer at pointer position 0 after
they fail.
[hot in TECO-8]
Reserved for future use by TECO-11.
Only move dot by one on multiple occurence
searches. If this bit is clear, TECO treats
nStext$ exactly as n<lStext$>. That is, skip over
the whole matched search string when proceeding to
the nth search match. For example, if the text
buffer contains only A's, the command 5SAAS will
complete with dot equal to ten (10). If this bit
is set, TECO increments dot by one each search
match. In the above example, dot would become
five (5).
(TECO-11 only]
The initial value of ED&] is system dependent (See
appendices). The initial value of the other bits in the ED
flag is O.
The help level flag, which controls the printing of error
messages and failed commands.
EH&3
EH&4
The low two bits of EH (value range 0 through 3)
control the printing of TECO error messages as
follows (assuming the low two bits have value m):
If m is equal to 1, error messages are output in
abbreviated form ("?2XXX"). If m is equal to 2,
error messages are output in normal form ("?XXX
Message"). If mis equal to 3, error messages are
output in long or "War and Peace" form, that is, a
paragraph of informative material is typed
following the normal form of the error message.
This mode is not implemented in TECO-11, in which
case m=3 is equivalent to m=2.
If this bit of EH is set, the failing command is
also output up to and including the failing
character in the command followed by a question
mark. (Just like TECO's response to the typing of
a question mark immediately after an error.) This
bit is not supported by TECO-10.
Standard TECO Page 77
Mode Control Flags
EO
ES
ET
The initial value of the EH flag is 0 which is equivalent to
a value of 2.
Setting the value of the EO flag to n allows features that
were peculiar to that version of TECO to work.
[TECO-10 only]
The search verification flag, which controls the text typed
out after searches.
If n is equal to 0, nothing is typed out after searches. If
n is —-l, the current line is typed out when a successful
search at top level is completed (i.e., a V command is done
automatically). If n is between 1 and 31, the current line
is typed out with a line feed immediately following the
position of the pointer to identify its position. If n is
between 32 and 126, the current line is typed out with the
ASCII character corresponding to the value of n immediately
following the position of the pointer to identify its
position. If you want to see more than one line of type
out, use the form m*256+n. The n is the same as above. The
m is the number of lines of view. For example, 3*256+""!
would give two lines on either side of the found line, and
the found line with the character "1" at the pointer's
position. The ES flag does not apply to searches executed
inside iterations or macros; lines found inside iterations
or macros are never typed out.
[Not in TECO-8]
The initial value of ES is 0.
The ET flag is a bit-encoded word controlling TECO's
treatment of the console terminal. Any combination of the
individual bits may be set. The bits provide the following
functions, when set:
ET&l Type out in image mode. Setting this bit inhibits
all of TECO's type out conversions. All
characters are output to the terminal exactly as
they appear in the buffer or “A command. For
example, the changing of control characters into
the "caret/character" form, and the conversion of
<ESCAPE> to S (dollar sign) are suppressed. This
mode is useful for driving displays. It should be
used with caution, especially if you are talking
to TECO over a dial-up line.
ET&2 Process DELETES and <CTRL/U>s in "scope" mode.
Scope mode processing uses the cursor control
features of CRT type terminals to handle character
deletion by actually erasing characters from the
screen.
ET&4 Read lower case. TECO normally converts all lower
case alphabetics to upper case on input. Setting
this bit causes lower case alphabetics to be input
as lower case. TECO commands and file specifiers
may be typed in either upper or lower case. For
the purpose of searches, however, upper and lower
case may be treated as different characters, (See
“x flag).
ET48 Read without echo for “T commands. This allows
data to be read by the “T command without having
Standard TECO Page 78
Mode Control Flags
EU
the characters echo at the terminal. Normal
command input to TECO will echo.
ET&16 Cancel <CTRL/O> on type out. Setting this bit
will cancel any outstanding <CTRL/O> when the next
type out occurs. After TECO has canceled the
<CTRL/O>, it will automatically clear the bit,
ET&32 Read with no wait. This enables the “T command to
test if a character is available at the user
terminal. If a character has been typed, “T
returns the value of the character as always. If
no character has been typed, “T immediately
returns a value of -1 and execution continues
without waiting for a character.
ET&64 Detach flag (See appendices).
ET&128 When this bit is set: 1) all informational
messages are supressed, 2) any <CTRL/C> causes the
immediate termination of TECO, and 3) any error
causes the termination of TECO after the error
message is printed.
ET&256 If this bit is set, all lines output to the
terminal are truncated to the terminal's width if
needed. (RSTS/E, RSX-11, and VAX/VMS only.)
ET&512 If this bit is set, the scope "WATCH" feature of
TECO is present and your terminal is a scope type
terminal. This bit is a read-only bit; ¡its state
cannot be altered. (See Section 5.17.)
ET&1024 If this bit is set, the refresh scope "WATCH"
feature of TECO is present and a refresh scope is
available. This bit is a read-only bit; its
state cannot be altered. (See Section 5.17.)
ET&32768 If this bit is set and a <CTRL/C> is typed, the
bit is turned off, but execution of the current
command string is allowed to continue. This
allows a TECO macro to detect typed <CTRL/C>s.
In TECO-8, this bit is the 2048's bit rather than
the 32768's bit,
The initial setting of ET is operating system dependent (See
appendices). In addition, some of the ET bits are
automatically turned off by certain error conditions.
The upper/lower case flag.
If n is -1, no case flagging of any type is performed on
type out, lower case characters are output as lower case
characters. If n is 0, lower case characters are flagged by
outputting a ' (quote) before the lower case character and
the lower case character is output ¡in upper case; upper
case characters are unchanged. If n is +1, upper case
characters are flagged by outputting a ' (quote) before each
one and then the upper case character is output; lower case
characters are output as their upper case equivalents.
The initial value of the EU flag is -1 if TECO can tell from
the operating system that the user's terminal supports
display of lower case characters; otherwise te initial
Standard TECO
Mode Control Flags
EV
Page 79
value is 0. Consult the appendices for more details.
The edit verify flag is decoded just like the ES flag. Just
before TECO prints its prompting *, the EV flag is checked.
If it is non-zero the lines to be viewed are printed on the
terminal.
The initial value of the EV flag is 0.
[TECO-11 only]
The search mode flag.
[Not in TECO-8]
If n is 0, the text argument in a search command will match
text in the text buffer independent of case in either the
search argument or the text buffer. Thus the lower case
alphabetics match the upper case alphabetics and wre, "{r,
"|", "}", "-" match "6", "[", "N", "]", "°" respectively.
If n is -1, the search will succeed only if the text
argument is identical to text in the text buffer.
The initial value of the “X flag is 0.
Standard TECO Page 80
Scope Commands
5.17 SCOPE COMMANDS
The W command (scope "WATCH") is present in most implementations of
TECO. There are two different variations of the W command. Neither,
one, or both may be present. ET flag Bits 9 and 10 indicate which
variation(s) are configured and can be used.
5.17.1 Video Terminal Scope Commands
If the VT support is present and your terminal is a video terminal
(such as a vTO5S, VT52, or VT100), ET flag Bit 9 (value 512) will be
on.
TABLE 5-17A: VIDEO TERMINAL WATCH COMMANDS
COMMAND FUNCTION
-1W Refresh the terminal's screen to show the contents of the
text buffer.
-nW Tell the video terminal screen refresher that the top n-l
lines of the screen have been altered. The screen refresher
will completely redraw the top n-1 lines of the screen upon
the next -1W command.
nw Place the default cursor line at line n of the screen. The
initial default cursor line is line 16. This command makes
the window support forget the screen image and any special
associated modes (SEEALL, MARK, HOLD).
OW Equivalent to "16W".
W Forget screen image and special scope modes.
-1000W Forget that output was done. Normally, if the user outputs
to the terminal with a command such as T, n"T, or “A, TECO
will believe that the window needs updating, and upon the
next -1W command, TECO will refresh the entire window
display. Issuing the -1000W command informs TECO that the
output command did not destroy the window.
[TECO-11 only]
The :W command is used to interrogate and set video terminal status
information, as well as implement some of the more advanced features
of the video terminal "WATCH" functions.
TABLE 5-17B: VIDEO TERMINAL STATUS COMMANDS
COMMAND FUNCTION
O:W Return a number representing the type of scope in use as the
editing terminal. Current values are:
VT52
VT61 [TECO-10 only]
VT100 in VT52 mode
VT100 in ANSI mode
VTO5S
DEN =O
:W Equivalent to O:W
Standard TECO Page 81
Video Terminal Scope Commands
Return the horizontal size of the user's editing scope.
This number represents the number of character positions
available horizontally along the face of the scope.
Return the vertical size of the user's editing scope. This
number represents the number of lines of text that can
appear on the screen of the terminal.
Returns SEEALL mode. 0 represents off and -1 represents on.
In SEEALL mode, a visible indication is shown in the window
for every character, including characters that normally
don't print.
Returns mark status of window support. 0 means that no mark
has been set. A value of n means that a mark has been set
at buffer ("dot") position n-1. This status is used by
software that uses the window support and by the support
itself in the case of scopes that support reverse video.
Returns the hold mode indicator. 0 means off, -1 means hold
whole screen, and a positive value, n, means hold all but
top and bottom n lines. If hold mode is on, then scrolling
is inhibited until the cursor is about to run off either end
of the screen. This makes the window display more palatable
on terminals on a slow line. If hold mode is on, the window
support will scroll the window as necessary in an attempt to
keep the cursor centered.
Returns buffer pointer position of character that was in the
upper left hand corner of the window as of the last -1W
command.
Returns the number of scrolling lines. If n is zero, then
scrolling is turned off. When scrolling is enabled, n lines
as specified are reserved at the bottom of the screen to
scroll the terminal interaction. The remainder of the
screen is used as a window and is updated by TECO
immediately before each command prompt. The scrolling
feature only functions on terminals capable of split screen
scrolling functions, such as the VT100.
Sets the entity represented by n:W to m. Specific operating
systems may put restrictions on the valid values for m.
5.17.2 Refresh Scope Commands
If refresh scope support is present and a refresh scope is available
(such as a VS60 or a VR12), bit value 1024 of the ET flag will be on.
COMMAND
W
OW
пи
TABLE 5-17C: REFRESH SCOPE WATCH COMMANDS
FUNCTION
Update the refresh scope screen to reflect the contents of
the text buffer surrounding the text pointer ("dot").
Turn off the refresh scope display.
Set the number of lines to be displayed around the text
pointer to n.
Standard TECO Page 82
Programming Aids
5.18 PROGRAMMING AIDS
In addition to the command string editing capabilities described in
Chapter 4, TECO includes various features to facilitate programming.
These are described in the following sections.
5.18.1 Text Formatting
The characters carriage return, line feed, and space are ignored in
command strings, except when they appear as part of a text argument.
Numeric values are not affected. (Inserting a space between digits
within a digit string may cause unpredictable results). These
characters may be inserted between any two TECO commands to lend
clarity to a long command string. The carriage return/line feed
combination is particularly useful for typing command strings which
are too long to fit on a single line.
If the character form feed is encountered in a command string and it
is not part of a text argument, a form feed is output to the terminal.
This can be used to format terminal output. On TECO-10, execution of
the form feed command will clear the screen if TECO is in scope
command string editing mode (2&ET on).
5.18.2 Comments
One of the most powerful features of TECO is its ability to store very
long command strings so that a given sequence of commands may be
executed whenever needed. Long command strings may be thought of as
editing programs and, like any other type of program, they should be
documented by means of comments.
Comments may be inserted between any two commands by using a tag
construction of the form:
I THIS IS A COMMENT!
Comments may contain any number of characters and any characters
except the special characters. Thus a long TECO macro might look
like:
TECO commands !This comment describes line 1!
TECO commands !This comment describes line 2!
more commands
more commands !end of comment string!
Do not use <TAB> characters to format long command strings! Only
<space>, <CR>, and <LF> can be used to format command strings since
<TAB> is an insertion command.
Good TECO code is well structured and adequately commented.
Unfortunately, massive comments in a TECO macro tend to slow
execution, especially if they appear within text scanned by GOTOs or
unsatisfied conditionals. Unless speed is not a goal, it is common
practice in larger TECO programs to strip out comments before loading
up TECO macros. Thus the TECO program can be adequately commented,
yet still run efficiently.
A large TECO program can start by placing a comment stripper in a
Q-register, say Q-register С. Then it can successively put
subroutines (macro text) into the text buffer, do an MC, and load the
appropriate Q-register with the resulting text buffer, until all the
subroutines have been loaded. Finally, Q-register C can be zeroed and
Standard TECO Page 83
Programming Aids
the program started.
In order for you to strip the comments without losing essential tags,
you must make a convention for the format of your comments so that
your comment stripper can distinguish them from tags. There are two
common conventions, In one, the first character in every comment
after the initial ! is some distinctive character, such as *. In the
other, all tags start in the left margin and all comments are embedded
within the text. Any large comment that wants to be on a line by
itself starts with a <space> before the !. Both methods allow for
readabie code and easy comment stripping.
5.18.3 Messages
The <CTRL/A> command may be used to print out a statement at any point
during the execution of a command string. The <CTRL/A> command has
the general form:
“Atext<CTRL/A>
or
e A/text/
The first “A is the actual command, which may be entered by striking
the control key and the A key simultaneously or by typing a caret
(uparrow) followed by an A character. The second <CTRL/A> character
of the first form shown is the command terminator, which must be
entered by typing the control key and the A key simultaneously. In
the second form, the second occurrence of the delimiting character
(shown as slash in the example) terminates the message. Upon
execution, this command causes TECO to print the specified message at
the terminal.
The “Amessage<CTRL/A> command is particularly useful when it precedes
a command whose numeric argument contains “T or “F characters. The
message may contain instructions notifying the user as to what sort of
input is required.
5.18.4 Tracing
A question mark entered betweeen any two commands in a command string
causes TECO to print all subsequent commands at the terminal as they
are executed. Commands will be printed as they are executed until
another question mark character is encountered or the command string
terminates.
Standard TECO Page 84
Programming Aids
5.18.5 Convenience Characters
In addition to the characters mentioned in Section 5.18.1, there are
several characters which have no special meaning to TECO but which may
be used to help format your TECO programs and command strings.
Judicious use of these commands will make your program easier to read
and maintain. These characters are described in the table below:
TABLE 5-18A: CONVENIENCE CHARACTERS
CHARACTER MEANING
<NULL> A null (ASCII 0) encountered as a TECO command
will be ignored. Numeric values are not affected.
A null read in from an input file will be
discarded (except under RSX-11 and VAX/VMS). A
null typed in from a terminal will be ignored.
<ESCAPE> An ESCAPE that is executed as a TECO command (аз
distinct from an ESCAPE that is part of the syntax
of some other TECO command) is ignored by TeCO;
however any pending numeric values are discarded.
This command is useful for discarding the value
returned from a command (such as n%g) when that
value is not needed.
^[ Same as <ESCAPE>. Like any other TECO command
that is a control character, it may be entered in
up-arrow mode. In that mode, ^[ is useful on
systems whose line-printer spoolers do not visibly
print the ESCAPE character.
<ALTMODE> On some older terminals, there is no ESCAPE key.
Instead, there may be a key labelled ALTMODE or
PREFIX which sends TECO a character whose ASCII
value is 175 or 176. In such a case, TECO will
treat these characters as if they were typed in as
an ESCAPE (Octal 33), provided lower to upper case
conversion is enabled.
$ (dollar sign) Same as <ESCAPE>, but as a command only, not as a
string terminator.
[TECO-10 only]
Note that <TAB> and <FORM FEED> are valid TECO commands and must not
be used as aids to formatting TECO programs.
5.18.6 Memory Expansion
The nEC command can be used to make TECO reclaim lost space after ¡it
had expanded memory usage. nEC tells TECO to expand or contract until
it uses nK words of memory. If this is not possible, then TECO's
memory usage does not change. The OEC command tells TECO to shrink
back to its original size (use the least amount of memory possible).
[TECO-10 only]
Standard TECO Page 85
Programming Aids
5.18.7 Case Control
The <CTRL/V> and <CTRL/W> TECO commands are used to specify automatic
case control for alphabetic characters typed into strings.
CHARACTER
“Vv
TABLE 5-18B: CASE CONTROL CHARACTERS
MEANING
<CTRL/V> puts TECO into lower case conversion mode. In this
mode, all alphabetic characters in string arguments are
automatically changed to lower case. This mode can be
overridden by explicit case control within the search
string. This command makes all strings behave as if they
began with a “vv.
[TECO-10 only]
<CTRL/W> puts TECO into upper case conversion mode. In this
mode, all alphabetic characters in string arguments are
automatically changed to upper case. This mode can be
overriden by explicit case control within the search string.
This command makes all strings behave as if they began with
WWW.
(TECO-10 only)
Returns TECO to its original mode. No special case
conversion occurs within strings except those case
conversions that are explicitly specified by “V and “Ww
string build constructs located within the string.
[TECO-10 only)
Same as “V.
[TECO-10 only]
Standard TECO Page 86
Manipulating Large Pages
5.19 MANIPULATING LARGE PAGES
TECO is designed to operate most efficiently when editing files that
contain no more than several thousand characters per page. (TECO
storage includes Q-register storage and buffer space. The size of the
text storage area is dynamic and depends on the amount of available
memory.) If any page of an input file is too large to fit in the text
area, the TECO input commands will terminate reading that page into
memory when the first line feed is encountered after a point that the
buffer is 3/4 full. (See appendices for details.) You can make room
by positioning the pointer past a section of text at the beginning of
the buffer and moving that section out of the buffer with the
commands:
0,.PWO,.K
It is sometimes advantageous to restrict the amount of the file that
is present in the buffer. For example, each insert and delete command
must move the entire text that is beyond the point of insertion or
deletion. An operation that does many small inserts or deletes may
therefore run extremely slowly if the text buffer is large. Such an
operation can be sped up substantially by reading the input file with
n:A commands and explicitly writing the processed text.
Standard TECO Page 87
Techniques
5.20 TECHNIQUES AND EXAMPLES
The most elementary TECO application, described in Chapter 1 of this
manual, is creating and editing ASCII files on-line. The user enters
short command strings, often consisting of a single command, and
proceeds from task to task until the file is completely edited.
Since every editing job is simply a long sequence of TECO commands,
you may accomplish an entire job with one long command string made up
of all the short command strings placed end to end with the
intervening double ESCAPE characters removed. A long command string
that performs a certain editing task can be considered a TECO "editing
program”. Editing programs may be written (using TECO) and stored in
the same manner as any other ASCII file. Whenever the program is
needed, it may be read into the buffer as text, stored ina
Q-register, and executed by an Mg command.
For more complex editing jobs, you may want to write and maintain a
collection of specialized "editing subroutines." TECO subroutines can
perform such elementary functions as replacing every occurrence of two
or more consecutive spaces with a tabulation character, for example,
or ensuring that words are not hyphenated across a page boundary.
When an editing problem arises, you can load the right combination of
subroutines into various Q-registers, augment them with additional
commands if necessary, and call them by a "mainline" command string.
Editing subroutines are essentially macros; that is, sequences of
commands which perform commonly required editing functions. The most
powerful application of TECO is the creation and use of a macro
library. As you perform an editing job, look for sequences of
operations which might be required in future editing assignments.
Load all of the TECO commands required to perform such an operation
into a Q-register. When the job is finished, write the contents of
the Q-register onto an output file (via the buffer) and save it in the
macro library. The nMg and m,nMg commands, which were designed to
facilitate use of macros, permit run-time numeric arguments to be
passed to a macro.
TECO macros can preserve the user's radix, flag values, etc. By using
the Q-register push-down list, the macro can save and then restore
values and/or text. For example:
[0 [1 [2 ! Save contents of Q-registers 0, 1 and 2 !
+0U0 ! Put any calling argument into Q-register 0 !
10U1 ! Put a 10 (if radix is decimal) or 8 (if radix is
octal) into Q-register 1 !
“D ! Ensure that the current radix is now decimal !
EUU2 ! Save the case flagging flag !
-1EU ! Ensure no case flagging !
QO"E 3u0 " ! Default calling argument to 3 !
Q2EU ! Restore the case flagging flag !
10-Q1"N "0 ' ! Restore radix as octal if needed !
]2 ]1 JO ! Restore contents of Q-registers 2, 1, and 0 !
The EI command is particularly useful for executing macros from a
library, since with it they may be read without disturbing the current
input file. This makes it unnecessary to plan in advance which macros
might be needed; it also saves O-register storage space. You can
retrieve two kinds of TECO command files with an EI command: a file
containing a TECO command that loads the macro into a Q-register for
later use, or a file containing just the macro (which must be
retrieved with EI each time it is used).
Standard TECO
Techniques
The following
Page 88
examples are intended to illustrate some of the
techniques discussed above. It would not be practical to include
examples of the use of every TECO command, since most of the commands
apply to many diverse situations.
Instead, you are encouraged to
experiment with the individual commands on scratch files.
EXAMPLE 1: SPLITTING, MERGING, AND REARRANGING FILES
Assume that there is a file named PROG.DAT on the system disk and that
this file contains data in the following form:
AB <FF> CD <FF> EF <FF> GH <FF> 1J <FF> KL <FF> MN <FF> OP
where each of the letters A, B, C etc., represents 20 lines of text
and <FF> represents a form feed character.
The user intends to
rearrange the file so that it appears in the following format:
AOB <FF> D <FF> MN <FF> EF <FF> ICJ <FF> KL <FF> P <FF> GH
The following sequence of commands will achieve this rearrangement.
(Search command arguments are not listed explicitly.)
*2EDSS
*EBPROG .DATSYSS
*NCSS
*J20X1$$
*20KS$
*NGSS
*HX2$$
*YS$S
*20LSS
*G1$$
*NMSS
*HX1$$
*YS$S
*J20X3$$
*20К$ $
* РИНК $ $
*G2$$
*HPEFSS
*EBPROG .DATSYSS
*20L$S
Start TECO.
Allow all Y commands.
Specify input file and get first page.
Search for a character string in C, writing A and
B on the output file.
Save all of C in Q-register 1.
Delete C from the buffer,
Search for a character string in G, writing D, Е,
and F on the output file.
Save G and H in Q-register 2.
Delete GH from the buffer and read IJ.
Move the pointer to the beginning of J.
Insert C, which was stored in Q-register 1.
Search for a character string in M, writing ICJ
and KL on the output file.
Save MN in Q-register 1 (the previous contents is
overwritten).
Delete MN and read OP
Save all of O in Q-register 3.
Delete O from the buffer.
Write P onto the output file, appending a form
feed, and clear the text buffer.
Bring GH into the buffer from Q-register 2.
Write GH on the output file and close it.
Open the partially revised file.
Move the pointer to the beginning of B.
*СЗ$ $ Insert all of O from Q-register 3.
*NDSS Search for a character string in D writing AOB on
the output file.
* РИНК $$ Write D on the output file and clear buffer.
*G1$$ Bring all of MN from Q-register 1 into the buffer.
*ЕХ$ $ Write MN onto the output file, then close the file
and exit.
At this point the file has been rearranged in the desired format. of
course, this rearrangement could have been accomplished in fewer steps
if the commands listed above had been combined into longer command
strings. Note
that the asterisks shown at the left margin in this
example are generated by TECO, and not typed by the user.
Standard TECO Page 89
Techniques
Assume, now, that the same input file, containing data in the form:
AB <FF> CD <FF> EF <FF> ... <FF> OP
is to be split into two separate files, with the first file containing
AB <FF> CD and the second file containing KL <FF> M, while the rest of
the data is to be discarded. The following commands could be used to
achieve this rearrangement:
Start TECO.
*2EDSS Allow all Y commands.
*ERFILESEWFILE1SS Open the input file and the first output file.
*YSS Read AB into the buffer.
*PS$ Write AB <FF> onto the output file and read CD
into the buffer.
*HPEFSS Write CD onto the output file (without appending a
form feed), and close the first output file.
* KSS Search for a character string in K. After this
command has been executed, the buffer will contain
KL. No output is generated.
*EWFILE2SPSS Open the second output file and write KL onto it.
Read MN into the buffer. :
*2010,.Р$$ Move the pointer to the end of М, then write M
onto the output file.
*EFSS Close the output file.
*HKEXSS Clear the buffer and exit.
As a final example of file manipulation techniques, assume that there
are two files, One file is MATH.ONE, which contains information in
the form:
AB <FF> CD <FF> EF <FF> GH <FF> 1J <FF> KL
and the other is MATH.TWO, which contains:
MN <FF> OP <FF> OR
If both of these files are stored on DK1l, the following sequence of
commands may be used to merge the two files into a single file,
MATH.NEW, which contains all of MATH.TWO followed by the latter half
of file MATH.ONE in the following format:
MN <FF> OP <FF> QR <FF> GH <FF> IJ <FF> KL
Start TECO.
*2EDSS Allow all Y commands.
*ERDK1 : MATH. TWOSS Open the first input file.
*EWMATH.NEWSS Open the output file on the default device.
*YSS Read MN into the text buffer.
*NRSS Search for a character string in R, writing MN and
OP onto the output file.
*PWSS Write OR onto the output file, appending a form
feed.
*ERDK1 :MATH.ONESS Open the second input file.
*HKYSS Read AB into the buffer. OR is over-written.
* GSS Search for a character string in G, deleting AB,
CD, and EF, leaving GH in the buffer.
*NKSS Search for a character string in K, writing GH and
IJ on the output file, leaving KL in the buffer.
*HPEFHKEXSS Write KL onto the output file (without appending a
form feed) and close the file, then exit.
Standard TECO Page 90
Techniques
EXAMPLE 2: ALPHABETIZING BY INTERCHANGE SORT
Assume that TECO is running and that the buffer contains many short
lines of text beginning with an alphabetic character at the left
margin (i.e., immediately following a line feed). The lines might
consist of names in a roster, for example, or entries in an index.
The following command string will rearrange the lines into rough
alphabetical order, grouping all lines which begin with the character
"A" at the beginning of the page, followed by all lines with "B", and
so on. Note that the algorithm could be extended to place the entries
in strict alphabetical order by having it loop back to perform the
same sorting operation on successive characters in each line.
!START! J OAUA !Load first character of first line into
Q-register A !
ICONT! L OAUB Load first character of next line into
Q-register B !
QA-QB"G XA K -L GA luz ' !If A>B, switch the lines and set a flag
(Q-register 2) !
QBUA !Load B into A!
L Z-."G -L €e0/CONT/ ' {Loop back if there is another line in
the buffer !
QZ"G OUZ @O/START/ ' ¡Repeat if a switch was made on the last
pass |!
The same algorithm can be coded in a more structured way as follows:
OUZ ¡clear repeat flag!
<J OAUA L !Load first character of first line into
Q-register A ! |
<OAUB !Load first character of next line into
Q-register B !
QA-OB"G XA K -L GA -1UZ ' !If A>B, switch the lines and set a flag
1
QBUA !Load B into A!
L .-Z;> !Loop back if there is another line in
the buffer !
QZ;> !Repeat if a switch was made on the last
pass !
This example is a bit shorter and does not use any GOTOs. It will
also run somewhat faster.
Standard TECO
Appendix A
CHAR OCT
NUL 000
“A 001
“B 002
°C 003
“D 004
“E 005
°F 006
°G 007
BS 010
TAB 011
LF 012
VT 013
FF 014
CR 015
^^ 016
^ О 017
“P 020
°Q 021
“R 022
^5 023
^Т 024
^ 025
^ 026
“Ww 027
“X 030
Y 031
“2 032
ESC 033
FS 034
GS 035
RS 036
us 037
DEC
000
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
APPENDIX A
OCTAL & DECIMAL ASCII CHARACTER SET
CHAR OCT
"О
| + IC = ® ое ‹/> 98 Z- MN
O OY NULL ©) № ON
VV ll AS 00
040
041
042
043
044
045
046
047
050
051
052
053
054
055
056
057
060
061
062
063
064
065
066
067
070
071
072
073
074
075
076
077
DEC
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
CHAR OCT
IZ = О кб ож Жо о< © +) 00 00 © "О О 2 Жо оЖьо©С он До С) р (сю © О 00 >» ®
100
101
102
103
104
105
106
107
110
111
112
113
114
115
116
117
120
121
122
123
124
125
126
127
130
131
132
133
134
135
136
137
DEC
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
CHAR OCT
I
140
141
142
144
144
145
146
147
150
151
152
153
154
155
156
157
160
161
162
163
164
165
166
167
170
171
172
173
174
175
176
DEL 177
lr — NX EC CTR QUOI HAXWRITOQ MMOD С, О со
DEC
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
Page 91
Standard TECO Page 92
Appendix B
APPENDIX B
ERROR MESSAGES
TECO error messages consist of a three letter message preceded by a
question mark (?) or preceeded by ?TEC. A short description of the
error optionally follows (dependent on the current value of the EH
flag). Typing ? (question mark) immediately after an error message
printout causes the command string to be printed up to and including
the character which causes the error message. Typing *q (asterisk,
Q-register name) immediately after an error message printout saves the
entire command string in the specified Q-register. This is especially
useful for recovering mistyped insert commands. Both the >? and *q
facilities may be used when an error occurs.
TECO-11 also produces two warning messages. These messages do not
abort the command and execution continues.
$Superseding existing file
Indicates that the file to be created as the result of
an EW command already exists. If the output file is
closed the old copy of the file will be deleted. The EK
command may be used to "take back" the EW command.
$Search fail in iter
Indicates that a search command has failed inside
iteration brackets. A $ (semi-colon) command
immediately following the search command can typically
be used to suppress this message. After printing the
message, the iteration is terminated, i.e., TECO
simulates a 0; command.
These error messages are listed alphabetically by their three-letter
code. In general, these three-letter codes have the same meaning on
all implementations, although not all error messages are produced by
each implementation. The one-line error message given here is a
paraphrasing of the message given, which may differ slightly from
system to system.
Standard TECO Page 93
Appendix B
2ARG
?BNI
2CCL
CON
2CPQ
?DEV
?DTB
2ERR
?FER
2FNF
?FUL
2ICE
?IEC
Improper Arauments
Three arguments are given (a,b,c or H,c).
> not in iteration
There is a close angle bracket not matched by an open
angle bracket somewhere to its left. (Note: an
iteration in a macro stored in a Q-register must be
complete within the Q-register.)
CCL.SV not found or EG argument too long
The EGcommand$ command on 0S/8 was unable to locate
SYS:CCL.SV or the specified command has more than 465
characters.
Confused use of conditionals
Conditionals, parenthesized arguments, and iterations
must be properly nested. The user probably used some
construct like: N"E...(...' where an iteration or
parenthesized argument is begun in a conditional but not
terminated in the same conditional.
Can't pop into Q-register
A ] command has been executed and there is nothing saved
on the Q-register push down list,
Invalid device
A file specification string in an E command contains an
unknown device name.
Delete too big
An nD command has been attempted which is not contained
within the current page.
RSTS/E error message (RSTS/E only)
Some RSTS/E monitor call failed. The error message text
explains the error.
File Error
The file specified in an ER, EW or EB command was not
found.
File not found "filespec"
The requested input file could not be located. If this
occurred within a macro the colon modified ER or EB
command may be necessary.
Output Command would have overflowed output device
The page of text currently in the text buffer will not
fit in the open output file. Until enough free space
can be obtained on the output device the file may have
to be split. An EF command to close the current output
file, followed by a new EW command to a temporary file
may be used. The files should be concatenated when the
space problem is alleviated.
Illegal “E Command in Search Argument
A search argument contains a “E command that is either
not defined or incomplete. The only valid “E commands
in search arguments are: “EA, “ED, “EV, “EW, “EL, “ES,
“E<NNN>, and “E(A,B,C,...].
Illegal character "x" after E
An invalid E command has been executed. The E character
must be followed by an alphabetic to form a legal E
Standard TECO Page 94
Appendix B
2IFC
2IFN
IIA
2ILL
?2ILN
2INP
2IPA
2IQC
2IQN
?2IRA
ISA
2ISS
sIUC
MAP
command (i.e., ER or EX).
Illegal character "x" after F
An invalid F command has been executed.
Illegal character "x" in filename
The filespec as an argument to one of the E commands is
unacceptable to the system. The file specification must
be appropriate to the system in use.
Illegal insert arg
A command of the form "nItext$" was attempted. This
combination of character and text insertion is illegal.
Illegal command "x"
An attempt has been made to execute an invalid TECO
command.
Illegal number
An 8 or 9 has been entered when the radix of TECO is set
to octal.
Input error
The system has reported an error attempting to read the
current input file. The text buffer may be corrupt.
This operation may be retried, but if the error
persists, you may have to return to a backup file.
Negative or 0 argument to P
The argument preceding a P or PW command is negative or
0.
Illegal " character
One of the valid " commands did not follow the ". Refer
to Section 5.14 (conditional execution commands) for
the legal set of commands.
Illegal Q-register name "x"
An illegal Q-register name was specified in one of the
Q-register commands.
Illegal radix argument to “R
The argument to a “R radix command must be 8, 10, or 16.
Illegal search arg
The argument preceding a search command is 0. This
argument must not be 0.
Illegal search string
One of the search string special characters (°Q, “V, “W,
etc.) would have modified the search string delimiter
(usually ESCAPE).
Illegal character "x" following
The character following an ^ must have ASCII value
between 100 and 137 inclusive or between 141 and 172
inclusive.
Missing '
Every conditional (opened with the " command) must be
closed with the ' command.
Standard TECO Page 95
Appendix B
?MEM
?MLA
2MLP
?MRA
?MRP
2MSC
?NAB
?NAC
?NAE
?NAP
?NAQ
?NAS
?NAU
Memory overflow
Insufficient memory available to complete the current
command. Make sure the Q-register area does not contain
much unnecessary text. Breaking up the text area into
multiple pages might be useful. (See section 5.19.)
Missing Left Angle Bracket
There is a right angle bracket that has no matching left
angle bracket. An iteration must be complete within the
macro or command.
Missing (
There is a right parenthesis that is not matched by a
corresponding left parenthesis.
Missing Right Angle Bracket
There is a left angle bracket that has no matching right
angle bracket. An iteration must be complete within the
macro or command.
Missing )
There is a right parenthesis that is not matched by a
corresponding left parenthesis.
Missing Start of Conditional
A ' command (end of conditional) was encountered. Every
' command must be matched by a preceding " (start of
conditional) command.
No arg before
The “_ command must be preceded by either a specific
numeric argument or a command that returns a numeric
value.
No arg before ,
A command has been executed in which a
, 1s not preceded
by a numeric argument.
No arg before =
The =, , or === command must be preceded by either a
specific numeric argument or a command that returns a
numeric value.
No arg before )
A ) parenthesis has been encountered and is not properly
preceded by a specific numeric argument or a command
that returns a numeric value.
No arg before "
The " commands must be preceded by a single numeric
argument on which the decision to execute the following
commands or skip to the matching ' is based.
No arg before ;
The ; command must be preceded by a single numeric
argument on which the decision to execute the following
commands or skip to the matching > is based.
No arg before U
The U command must be preceded by either a specific
numeric argument or a command that returns a numeric
value.
Standard TECO Page 96
Appendix B
2NCA
NYA
?NFI
2NFO
?NPA
2NRO
?NYI
20FO
OUT
PES
PDO
POP
2SNI
2SRH
Negative argument to ,
A comma was preceded by a negative number.
Numeric argument with Y
The Y command must not be preceded by either a numeric
argument or a command that returns a numeric value.
No file for input
Before issuing an input command, such as Y, it is
necessary to open an input file by use of a command such
as ER or EB.
No file for output
Before issuing an output command such as N search or P
it is necessary to open an output file by use of a
command such as EW or EB.
Negative or 0 argument to P
A P command was preceded by a negative or 0 argument.
No room for output
The output device is too full to accept the requested
output file.
Not Yet Implemented
A command was issued that is not yet implemented in this
version of TECO.
Output file already open
A command has been executed which tried to create an
output file, but an output file currently is open. It
is typically appropriate to use the EC or EK command as
the situation calls for to close the output file.
Output error
The system has reported an error attempting to do output
to the output file. Make sure that output device did
not become write locked. Use of the EF command (or EK
if necessary) and another EW can be considered until the
condition is fixed.
Attempt to Pop Empty Stack
A ] command (pop off g-register stack into a g-register)
was encountered when there was nothing on the g-register
stack.
Push-down list overflow
The command string has become too complex. Simplify it,
Attempt to move «Pointer Off Page with "x"
A J, C or R command has been executed which attempted to
move the pointer off the page. The result of executing
one of these commands must leave the pointer between 0
and 2, inclusive. The characters referenced by a D or
nA command must also be within the buffer boundary.
; not in iteration
A ; command has been executed outside of an open
iteration bracket. This command may only be executed
within iteration brackets.
Search failure "text"
A search command not preceded by a colon modifier and
not within an iteration has failed to find the specified
Standard TECO Page 97
Appendix B
?STL
?TAG
UTC
2UTM
?2XAB
?2WLO
?YCA
?nnn
"text". After an S search fails the pointer is left at
the beginning of the buffer. After an N or search
fails the last page of the input file has been input
and, in the case of N, output, and the buffer is
cleared. In the case of an N search it is usually
necessary to close the output file and reopen it for
continued editing.
String too long
A search or file name string is too long. This is most
likely the result of a missing ESCAPE after the string.
Missing Tag !tag!
The tag !tag! specified by an O command cannot be
found. This tag must be in the same macro level as the
O command referencing it.
Unterminated command "x"
This is a general error which is usually caused by an
unterminated insert, search, or filespec argument, an
unterminated “A message, an unterminated tag or comment
(i.e., unterminated |! construct), or a missing '
character which closes a conditional execution command.
Unterminated macro
This error is the same as the ?UTC error except that the
unterminated command was executing from a Q-register
(i.e., it was a macro). (Note: An entire command
sequence stored in a Q-register must be complete within
the Q-register.)
Execution aborted
Execution of TECO was aborted. This is usually due to
the typing of <CTRL/C>. -
System Device Write-Locked
TECO-8 needs to write on the system device when it is
running in less than 16K (less than 20K if VT52 is
present) so that it can later swap in overlays.
Y command aborted
An attempt has been made to execute an Y or _ search
command with an output file open, that would cause text
in the text buffer to be erased without outputting it to
the output file. The ED command (section 5.16) controls
this check.
1/0 Error or Directive Error (RSX-11 only)
All errors from the executive and file system are
reported in this format, where nnn is the decimal I/O or
directive error status. The accompanying message is the
corresponding message from the QIOSYM message file. A
complete list of I/O and directive errors appears in
appendices to the various Executive reference manuals
and in the IAS/RSX-11 I/O Operations Reference Manual.
Standard TECO Page 98
Appendix C
APPENDIX C
Incompatible, Obsolete, and System-Specific Commands
This appendix describes commands that are peculiar to specific
operating systems. These commands fall into many categories. Some
are obsolete, and are kept around only as a convenience to the user.
Others are so system specific or so obscure that it was felt best not
to include them in the main body of the manual. Some are incompatible
across operating systems. Some are new commands that have not become
firmly established and may change in the future. In general, use
these commands at your own risk and with the understanding that in
future releases of TECO, these commands may change or go away
completely. Implementors of TECO on other operating systems should
contact the TECO SIG before implementing any of these features.
C.1 SPECIFIC FEATURES OF TECO-11
C.l.1 TECO Commands
Command Description
m,nStext$ Performs the same function as the ns command, but m
serves a bound limit for the search. If the search
string can be found without moving the pointer more
than ABS(m)-1 places, the search succeeds and the
pointer is repositioned to immediately after the last
character of the string. Otherwise, the pointer is
left unchanged. The “Q operator, described below, is
useful in conjunction with this command.
Note that m,Stext$ is identical to m,lstext$ and
m,-Stext$ is identical to m,-1StextS.
m,-nStext$ Performs the same function as the m,nS command, but
searches in the reverse direction.
O,nStext$ Performs the same function as the ns command, except
that the pointer position will remain unchanged on
search string failure. (Essentially an unbounded
search with no pointer movement on failure.)
G* Get most recent filespec string. The asterisk
represents TECO's filespec string area, which contains
the fully expanded filespec of the last E command (see
appendices). Copy the contents of the filespec string
area into the buffer at the current position of the
buffer pointer, leaving the pointer positioned after
the last character copied.
:G* Print the contents of the filespec buffer on the
terminal.
G Get most recent search string. The underscore
(backarrow) represents TECO's search string area. Copy
the contents of the search string area into the buffer
at the current position of the buffer pointer, leaving
the pointer positioned after the last character copied.
:G Print the contents of the search string buffer on the
terminal.
Standard TECO Page 99
Appendix C
”
n°0 n°QC is identical to nL. The n°0 command returns the
number of characters between the buffer pointer and the
nth line separator (both positive and negative). This
command converts line oriented command argument values
into character oriented argument values. Used after an
expression.
-256+n:W Inserts characters at "dot" until... Characters are
read (echo off) from the terminal and inserted at "dot"
until and according to the microcoded bits in n. The
terminating character is not inserted.
128 => Return immediately if no typed characters
64 => Return on any character
32 => Don't keep screen updated (i.e., no -1W)
2 => Return on <TAB>'s
] => Screen is initially O.K.
Return is always done on control characters (0 through
37 and 177 except <TAB>). Returned value has return
character code in low byte (0 through 177 or 377 for
returned immediately). The sign bit is set if one or
more inserts were done.
C.l.2 String Build Constructs
Construct Description
<CTRL/E>Q* <CTRL/E>Q* indicates that the string stored in the
filespec buffer is to be used in the position occupied
hy the “EQ* in the search string.
<CTRL/E>Q <CTRL/E>Q_ indicates that the string stored in the
search string buffer is to be used in the position
occupied by the “EQ_ in the search string.
Standard TECO
Appendi
x C
Page 100
C.2 SPECIFIC FEATURES OF RT-11
C.3 SPECIFIC FEATURES OF RSTS/E
Command
: EGRTS$S
: EGRTS
: EGFSS
: EGCCL
: EGRUN
: EGRUN
: EGEMT$
Switch
/
Еоо$
string$
cmd$
files
file=xx$
TECO COMMANDS
Description
Switch to private default run-time-system.
Switch to RTS "foo".
File string scan "string".
Try "cmd" as a CCL command.
Try to run "file".
Try to run "file" with "xx" placed in core common.
Issue a monitor directive. The FIRQB is loaded from
Q-registers A through P and the XRB is loaded from
Q-registers Q through W. The low byte of the value in
Q-register A is the monitor EMT code to issue. If the
high byte of the value in Q-register A is >0 then the
text part of Q-register A is put into the XRB for a
'write' (XRLEN= size of A, XRBC=size of A, XRLOC->A) ;
if Q-register A high byte is <0 then the text part of
Q-register A is put into the XRB for a ‘read’
(XRLEN=size of A, XRBC=0, XRLOC->A).
Returned value is -1 for success, 0 for unrecognized
command, or >0 for the RSTS/E error code. The FIRQB is
placed in the numeric part of Q-regs A, B, C, D, E, F,
G, H, 1, J, K, L, M, N, O, P. The XRB is placed in the
numeric part of Q-regs Q, R, S, T, U, V, W.
SWITCHES
Description
Same as /B+
Standard TECO Page 101
Appendix C
C.4 SPECIFIC FEATURES OF RSX-11/M, RSX-11/D, and IAS
command Pescription
<CTRL/2><CTRL/2><CTRL/2>
Returns control to the operating system immediately.
Equivalent to typing <CTRL/C><CTRL/C>.
C.5 SPECIFIC FEATURES OF VAX/VMS
C.6 SPECIFIC FEATURES OF 0S/8
Command Description
<CTRL/S> if used as the first keystroke after TECO's prompt,
this command is the same as *Z, that is, it saves the
last command string in Q-register 2. This command
echoes as *Z and does not have to be followed by an
ESCAPE.
C.7 SPECIFIC FEATURES OF TOPS-10
Command Description
NEM Positions a magtape. You must open the magtape for
input with an appropriate ER command before it can be
positioned. Exact positioning depends on the value of
n, as described below. You must reopen the magtape for
output before you can output to it.
[TECO-10 only]
Value Action
1EM Rewind the currently-selected input magtape
to load point. EM 15 identical to lEM.
3EM Write an end-of-file record.
6 EM Skip ahead one record.
7EM Back up one record.
8 EM Skip ahead to logical end of tape (defined by
two successive end-of-file marks). Leave the
magtape positioned between the two
end-of-file marks so that successive output
correctly overwrites the second EOF.
9EM Rewind and unload.
11EM Write 3 inches of blank tape.
14EM Advance tape one file. This leaves the tape
positioned so that the next item read will be
the first record of the next file (or the
second end-of-file mark at the logical
end-of-tape).
15EM Backspace tape one file. This leaves the
tape positioned so that the next item read
will be the end-of-file mark preceding the
Standard TECO
Appendix C
~
п о
FO
Fz
FH
FX
nFX
FY
nFY
FP
m,nFP
m,nFF
nFF
nFQq
E=filespec$
Esfilespecs$
m,nE*
::GG
: :ER
Page 102
file backspaced over (unless the file is the
first file on the tape).
n“QC is identical to
nL. This command returns the
number of characters between the buffer pointer and the
nth line separator (both positive and negative). This
command converts line oriented command argument values
into character oriented argument values. Used after an
expression.
Pointer position of start of window. Same as 6:W.
Pointer position of end of window.
Same as FO,FZ,
Software maintained horizontal coordinate of location
of cursor on screen (0-ог191п). Updated by TECO on
terminal output. If TECO cannot determine the updated
location of the cursor, this value is set to -l.
Set value of FX register to n.
Software maintained vertical coordinate of location of
cursor on screen (0-origin). Updated by TECO on
terminal output. If TECO cannot determine the updated
location of the cursor, this value is set to -1.
Set value of FY register to n.
Equivalent to FY,FX.
Equivalent to mFYnFX.
Updates FY and FX registers as if the m,nT command were
executed.
Assumes that the scope cursor is pointing at the
character that is just to the right of the text buffer
pointer (the current character). Then this command
advances n screen lines and goes to the end of that
line and returns that pointer position.
Compares characters beginning at dot with characters
beginning at the nth character in O-register q
(O0-origin). When a match fails or the match ends, this
command moves the pointer to after the last character
that matched and returns the index into the Q-register,
Renames the input file.
Run the specified
numeric argument
default.
program when TECO exits.
which is
Can take a
the run-offset. 0 is the
Does an arbitrary TRMOP to your terminal.
[Not available on TOPS-20.]
Same as :Gq but types literally.
Same as ER but no defaults are used.
Closes output file and exits from TECO.
Standard TECO
Appendix C
“P
n P
n Y
Returns current page number.
Executes P commands until page n has been
Executes Y commands until page n has been
Same as m=n°T.
Does an arbitrary TTCALL.
Page 103
reached.
reached.
Standard TECO Page 104
Appendix D
APPENDIX D
RT-11 OPERATING CHARACERISTICS
D.1 STARTUP
TECO is started with the
‚ЕВ TECO
command. TECO is now immediately ready to accept commands. The text
buffer and Q-register areas are empty.
The EDIT command
e EDIT/TECO filespec
is used to edit an already existing file. It is equivalent to
‚В TECO
*EBfilespec$yss
For those RT-11 users that will use TECO as the primary editor, a
monitor SET command is provided:
‚SET EDITOR TECO
Once this command is issued, the /TECO option on the EDIT command is
no longer necessary since the default editor is now TECO. Since this
SET command only has affect between system bootstraps, it is
recommended that the command be placed in the appropriate startup file
(e.g., STARTS.COM).
Now, assuming the SET command has been issued, the command
‚EDIT filespec
can be used to edit an already existing file.
The standard RT-11 EDIT command options are all available with TECO
.EDIT/CREATE filespec
.EDIT/INSPECT filespec
e EDIT/OUTPUT: filespec filespec
Another option, /EXECUTE, is also available:
-EDIT/EXECUTE[:string] filespec
The /EXECUTE option causes TECO to process the filespec (assumed .TEC
filetype) as a set of TECO commands. If "string" is used, the string
is placed into TECO's text buffer. If "string" contains only
alphanumeric characters, it does not have to be enclosed in quotes.
If it is to contain blanks, it must be quoted with single quotes. The
equivalent TECO commands would be
‚В TECO
*ERfilespecS YHXZHKIstring$mZ$$
Note the input file remains open and can provide more input to the
macro.
Standard TECO Page 105
Appendix D
D.2 FILE SPECIFICATION
The file access commands ER, EB, EI, and EW accept a file
specification in the standard RT-11 format:
dev: filename. type
in which dev: is a physical device name or a user assigned logical
name; if dev: is not specified, the default DK: is assumed. The
filename field must be specified in the commands ER, EB, El, and EW
and be a legal RT-11 filename. The type field is a file extension and
must be explicitly given if used (there is no default). The EB and EW
commands also accept the extended notation for an output file size
dev:filename.type[n]
The optional [n] specifies the output file size where n is the number
of blocks to be allocated.
D.3 BACKUP FILES
The EB command maintains one level of file backup on RT-11, The
pre-&dited input file name is changed to
filename .BAK
before the new output file is closed with the original name. Only
normal file closing commands (EC, EF, EG, and EX) cause this renaming
to happen. If TECO is aborted or the output file is purged by the EK
command, the input filename remains unchanged. Note only one .BAK
file for a given name is kept; earlier .BAK backup files are deleted
each time a new backup file is created.
A good policy to follow when editing is to close the edited file
frequently enough so that an unexpected incident would not cause a
substantial loss of work. Files should be backed up regularly. TECO
has the power to let an unsuspecting user alter a good file into a
completely useless state. The SRCCOM program can be used to verify an
editing session.
D.4 EXIT AND GC
If TECO is exited via the EGstring$ command, the string is passed to
the system as the next command to execute. This string may be any
valid command or an indirect command file specification.
D.5 REENTER ANT CLOSE
The RT-11 REENTER command may always be used to continue TECO. Its
primary differences from running TECO is that when REENTER is used,
the text buffer and Q-register areas are unmodified, as opposed to
when TECO is run the text buffer and Q-register areas are cleared.
The input and output file are always lost upon reentering TECO. If an
output file was open before reentering TECO, the file will have'to be
recreated with the appropriate E-command. (Note that the monitor
commands GT ON, GT OFF, LOAD, and UNLOAD disallow a REENTER.)
The output file is not closed if TECO is aborted. The RT-11 CLOSE
command can be used to make the output file permanent, but be aware
that the output file will not be complete because of internal buffers
that TECO keeps. TECO may be reentered after a CLOSE command.
Standard TECO
Page 106
Appendix D
D.6 FILE RECOVERY
TECO can be a useful tool in recovering ASCII files lost on a block
replaceable device. TECO allows block replaceable devices to be
opened in a non-file structured mode. This gives the user the
capability to open a disk and access ASCII data anywhere on it,
independent of file boundaries. The command
ERdev:$
is used to open the device at which point (underscore or backarrow)
searches may be used to locate specific ASCII data and transfer it to
new output files. Note that files tend to get reproduced, in whole or
part, many places on a block replaceable device; be sure to verify
that any given text is indeed complete and the correct version.
D.7 SYSTEM CRASH RECOVERY
TECO and RT-11 are highly reliable, but if during an important edit
session a random system failure should occur, the following procedure
may help save some or all of the editing.
1. Bootstrap the system
2. Immediately perform a SAVE command to save as much of memory as
possible into a file on SY:. The address range form of the SAVE
command must be used. The SAVE command will not allow any part of
the monitor to be saved, e.g., if you have a 28K system and are
running SJ you cannot save 28K but only 26.3K.
3. Perform standard startup procedures, e.d., DATE.
4. Use TECO on the SAVEd file to try and recover useful parts of the
edit.
D.8 VT11 GRAPHICS SUPPORT
If the monitor supports the VT11 graphics processor (GT ON and GT OFF
work) TECO will automatically start up in display mode, adjusting to
both the size of the display screen and to the presence or absence of
the scroller.
If the display fails to start with a working VT11, TECO has decided
that there is not enough free memory and will not allocate the display
file buffer or start the display.
See Section 5.17 for a description of the available commands to
interact with the display.
Various aspects of the display screen become immediately obvious upon
seeing them; the text pointer, its position and shape and its
position between lines; wrap around of more than 72 characters per
line; the scroller interaction and so on. Experiment with a scratch
file for more familiarity.
Standard TECO Page 107
Appendix E
APPENDIX E
RSTS/E OPERATING CHARACERISTICS
E.1 STARTUP
RSTS supports all of the standard TECO invocation commands, namely
TECO
TECO filespec
TECO filespec=filespec
MAKE filespec
MUNG filespec
MUNG filespec, text
The CCL command switches /DETACH and /SIZE:n (or /SIZE:+n) can be used
with Teco. If /DETACH is used and the user is privileged, TECO will
detach the job before any further processing. If /SIZE:n is used,
TECO will pre-expand the text and Q-register storage area to nK. If
/SIZE:+n is used, TECO will set the text storage and O-register
storage area to n+4K initially (TECO's default startup size is 4K).
E.2 FILE SPECIFICATION
The file access commands ER, EB, EW, and EI accept a file
specification in the standard RSTS/E format:
dev: {p,pn] filename.ext
in which dev: is a physical device name or a logical device name; if
dev: is not specified, the public structure is assumed. If [р, рп] is
not specified, the user's current logged in account is assumed. The
filename field must be specified whenever the device name references a
file structured device. The .ext field is a file extension and must
be explicitly given if used. There is no default extension except for
EI commands which default the .ext field to .TEC.
The file specification switches /RONLY, /MODE:n, and /CLUSTERSIZE:n
can be included in a file specification. TECO automatically opens all
disk input files in /RONLY mode. The file size switches /FILESIZE:n
and /SIZE:n might leave an output file larger than the amount of data
output by TECO. These file size switches are therefore illegal and
produce an error if included in a file specification.
The EB and EW commands also accept the extended notation for an output
file protection code
dev: [p,pn] filename.ext<prot>
The optional <prot> specifies the output file protection code.
E.3 BACKUP FILES
The EB command maintains one level of file backup on RSTS/E. The
pre-edited input file name is changed to
filename.BAK
before the new output file is closed with the original name. Only
normal file closing commands (EC, EF, EG, and EX) cause this renaming
Standard TECO
Page 108
Appendix E
to happen. If TECO is aborted or the output file is purged by the EK
command, the input filename remains unchanged. Note only one .BAK
file for a given name is kept; earlier .BAK backup files are deleted
each time a new backup file is created.
A good policy to follow when editing is to close the edited file
frequently enough so that an unexpected incident would not cause a
substantial loss of work. Files should be backed up regularly. TECO
has the power to let an unsuspecting user alter a good file into a
completely useless state. The FILCOM program can be used to verify an
editing session,
E.4 EXIT AND GO
If TECO is exited via the EGstring$ command, the "string" is executed
as a RSTS/E CCL command after the input and output file(s) are closed.
E.5 ET FLAG HANDLING
Bit 6 (detach) is handled specially by TECO. Every time the ET flag
is read (used as a numeric value), TECO ensures that Bit 6 is on if
the job is attached or off if the job is detached. This allows a TECO
macro to check for "detachedness". If a non-privileged user attempts
to set Bit 6, the request is ignored and Bit 6 will read back as a 0
(assuming the job is attached). When a privileged user sets Bit 6,
the job will become detached. Further reading of Bit 6 will return a
1 to indicate the detached condition.
Standard TECO Page 109
Appendix F
APPENDIX F
RSX-11 OPERATING CHARACERISTICS
F.1 STARTUP
RSX-11 systems support all of the standard TECO invocation commands,
namely
TECO
TECO filespec
TECO filespec=filespec
MAKE filespec
MUNG filespec
MUNG filespec, text
If any of these commands are not recognized by the system, check with
your- system manager to see that TECO is properly installed.
TECO macros may also be invoked with the command
TECO @filespec
It is exactly equivalent to
MUNG filespec
In systems supporting dynamic task expansion, TECO will expand its
buffer space as necessary. Also, TECO'S buffer space may be
explicitly allocated in the startup command
RUN STEC/INC=n
F.2 INITIALIZATION
TECO searches for the TECO.INI startup file in the current default
device and directory. TECO's memory, in which a plain TECO command
edits the file last edited with a TECO filespec or a MAKE filespec
command, is implemented with a file named TECF00.TMP, also stored in
the current default device and directory.
The initial value of the ED flag is always 1.
When TECO is initially invoked it will automatically set the ET and EU
flags according to the user's terminal characteristics. If the
terminal supports CRT style rubouts, then bit 1 of the ET flag is set
to do the same in TECO. If the terminal supports lower case type in,
then bit 2 of the ET flag is set and the EU flag is set to -1 to turn
off case flagging. If the terminal is a CRT type terminal and the
version of TECO includes the screen support package, then bit 9 of the
ET flag is set. While the command line is being processed, bit 7 of
the ET flag is also set to cause TECO to exit should any errors
occurr. ET bit 7 is cleared every time TECO reaches prompt (*) level,
F.3 FILE SPECIFICATION
The file access commands ER, EB, EW, and EI accept a file
specification in the standard RSX-11 format:
dev: [p,pn] filename. typ;version
Standard TECO
Page 110
Appendix F
in which dev: is a physical device name or a logical device name; if
dev: is not specified, SY: is assumed. If [P,pn] is not specified,
the user's current default directory is assumed. The filename field
must be specified whenever the device name references a file
Structured device. The typ field is a file type and must be
explicitly given if used. There is no default type except for El
commands which default the .typ field to .TEC.
The switch /RW may be applied to any file specification in an ER, EW,
and EI command. If the file specification references a magtape, the
tape is rewound before the file is opened. Note that for output
files, this has the effect of zeroing the tape. The /RW switch is
ignored for all other device types.
The presence of version numbers in Files-11 causes file processing to
behave slightly differently under RSX-11 than under other operating
systems. For example, no .BAK files are used; each execution of an
EB command simply produces a new version of the file. Thus a user may
retain any level of backup he feels to be comfortable. It also means
that one must occasionally delete obsolete files to avoid cluttering
the disk. Thus the command
EBname.typ;version$
is equivalent to the commands
ERname.typ;versionSEWname.typ;0$
The EW command also creates a new version (one higher than the current
highest) if no version number is given. If an explicit version number
is given, then that number is used, and if another file of the same
name, type, and version previously existed, it is superseded without
warning. (See use of the EP and EK commands below.)
In reading files, version numbers behave the same as in other RSX-11
utilities: the default is the highest version. This leads to a
problem in re-opening the input file while a file is being edited with
EB. Since the output file is already created and in the directory,
the input file is no longer the highest version. One may deduce the
version number of the input file by doing a :G* (typing the file
string of the output file) and subtracting one from that version
number,
In symmetry with the EB command, the EK command functions by simply
deleting the current output file. Note, however, that a supersede (EW
of same name, type, and version) is not undone - the file is already
deleted!
The EP and EA commands, while simulating two channels each with an
open file for each of input and output, in fact only keep one file
open for each to conserve buffer space. This means that they are only
useful for disk files. Also, it means that if you open a file and
then supersede it, you should not switch the input channel away from
it with an EP or ERS command, since it will not be possible to open
the file again.
F.4 WILD CARD LOOKUP
The EN command will process wild card lookups on RSX-11. To preset
the wild card lookup file specification, use the standard RSX-11
format
dev: [p,pn] filename. typ;¿version
Standard TECO Page 111
Appendix F
The device name must reference a file structured disk device or
magtape. All other fields of the file specification may be fully wild
(*), including either or both halves of the directory. The version
number may be explicit, wild, or default. As with the other file
specification commands, there is no default file type.
F.5 EXITING FROM TECO
The normal method of exiting from TECO is with the EX command. This
copies the remaining input file to the output file, closes all files
and exits.
The <CTRL/C> (or Caret-C) command is the "give up and get out"
command. Executed from main command level, it will cause TECO to exit
regardless of the state of the buffer. If there is an open output
file, it is deleted. The <CTRL/C> command is roughly equivalent to
EKHKEX.
F.6 <CTRL/C>
The action taken when the user types <CTRL/C> depends on what TECO is
doing.
If TECO is executing commands, or is awaiting type-in for the “T
command, the ?XAB error occurs.
If TECO is at command level, typing <CTRL/C> cancels the command
string currently being typed and returns TECO to its prompt. Two
consecutive <CTRL/C> characters will cause an instant HKEKEX exit.
Sometimes it is desireable for a TECO macro to detect when a <CTRL/C>
was typed. By detecting the <CTRL/C>, the macro can exit cleanly back
to command level (pop saved Q-registers, restore any flag values,
etc.). To do this, the macro sets Bit 15 (Octal 100000, Decimal
-32768) of the ET flag. When a <CTRL/C> is typed, TECO will
automatically turn off Bit 15, but will continue execution of the
macro. The macro periodically checks Bit 15 and exits cleanly if it
ever goes off. For example:
[0 [1 -327684ETET < ... ET; > 32767&ETET ]1 JO
Setting the <CTRL/C> intercept bit in the ET flag must be done with
some care; if the bit is set inside a command loop which does not
check it, it will be impossible for the user to abort the loop. The
only remedy for this situation is to abort TECO from another terminal.
F.7 EXIT AND GO
If TECO is exited via the EGstring$ command, TECO closes its files and
exits. It then causes "string" to be executed as an MCR command using
the spawn system directive. This feature works only on RSX-11M V3.2
and RSX-11M+ V1 or later.
F.8 ET FLAG HANDLING
TECO will automatically turn off the following bits in the ET flag on
every error: Bit 0 (image output), Bit 3 (no echo on “T), Bit 4
(cancel “0), Bit 5 (no stall on “T), and Bit 15 (°C trap).
In addition, TECO always turns off Bit 7 (exit on error, etc.) every
Standard TECO Page 112
Appendix F
time is reaches prompt (*) level.
Bit 6 (the detach flag) controls TECO'S treatment of the terminal.
Normally, TECO keeps the terminal attached to gain control of <CTRL/C>
interrupts. Setting bit 6 of the ET flag causes TECO to run with the
terminal detached. All commands function normally, except that typing
<CTRL/C> causes the MCR to be activated, allowing other tasks to be
run from the same terminal concurrently with TECO. It is, of course,
the user's problem to sort out the confusion that will arise if both
TECO and another task request input from the terminal at the same
time.
F.9 FILE RECORD FORMAT
Files-11 files are record structured, while TECO'S text buffer is
ASCII stream. Thus TECO must make format conversions when reading and
writing files. The conversion depends on the record attributes of the
file. While reading a file, the records are packed into the buffer.
If the file is implied carriage control (the standard RSX-11 source
format) or Fortran «carriage control, TECO inserts a carriage return
and line feed after each record to make each record appear as a line
of text in the buffer, unless the record ends with ESCAPE, carriage
return, line feed, vertical tab, or form feed. A record ending in
form feed is interpreted as an end of page mark; it stops the read
operation and the form feed is not entered in the buffer. If the file
has print file carriage control, TECO interprets the carriage control
bytes and inserts the resulting carriage return and line feed
characters about the record. If the input file has no carriage
control (also called internal carriage control), TECO simply packs the
records together in the text buffer.
On output, TECO scans the text buffer for carriage return, line feed,
vertical tab, and form feed characters. Each such character delimits
the end of an output record. If the output file is implied or Fortran
carriage control, and the record ends with exactly carriage return /
line feed, the carriage return and line feed are not output with the
record; Otherwise, the record is output in its entirety. The
carriage return and line feed are also output with the record if the
record ends with ESCAPE / carriage return / line feed.
Switches may be applied to the input and output files to control their
carriage control attributes. The switch /CR forces implied carriage
control; /-CR forces no (internal) carriage control; /FT forces
Fortran carriage control. When a carriage control switch is applied
to an input file, the file is read as if it had that attribute; when
the switch is applied to an output file, the file is written with that
attribute. Applying a switch to an EB file specification causes the
switch to apply to both input and output files. When an output file
is created, its carriage control attributes are defaulted to those of
the currently open input file as follows:
Input Output
implied implied
none implied
Fortran Fortran
print file implied
Files read with the EI command have their record attributes
interpreted in the same manner. This leads to an unexpected side
effect with EI files containing an entire command. The last record of
the file presumably contains as its last characters the two alt modes
which initiate execution of the macro. If the file is implied
Standard TECO Page 113
Appendix F
carriage control, however, there are also the final carriage return /
line feed belonging to the last record, which remain in the type in
buffer while the macro executes. If the macro attempts to receive
input with the <CTRL/T> command, the carriage return / line feed will
be the first two characters read. Alternatively, if the macro does no
type in, the carriage return / line feed will be read by TECO as the
first two characters of the next command. Then no asterisk (*) will
appear as the prompt for the next command. The remedy for both cases
is for the macro to execute an EIS command early on. This causes the
remainder of the indirect file to be discarded and further input to be
read from the terminal.
F.10 COMMAND LINE PROCESSING
The mechanism used to process the command line in RSX-11 TECO is
designed to allow sophisticated TECO users the greatest flexibility in
customizing TECO for their own use. It functions as follows:
The initialization routine places the original MCR command line (if
any) into the filename buffer. It copies into the text buffer the
text of a TECO macro that will be used to interpret the command line.
Then it starts up TECO with the command
HXY HKG* HXZ HK :EITECOSS
in the type in buffer. This loads the command line into Q-register Z
and the macro into O-register Y. 1% then executes the file named
TECO.TEC located in the user's default directory, if it exists. After
the user's TECO.TEC, and any files it might link to with EI, have been
executed, TECO executes the command MY$$, thus executing the macro to
interpret the command line and open the files requested.
The TECO.TEC mechanism should not be used for simple initialization;
the standard TECO.INI facility should suffice for that. The alternate
TECO.TEC facility is provided for the sophisticated user who wants his
own command processing and thus wishes to usurp control from the
normal initialization.
If an EIS command (to close the indirect command file) is executed
during the processing of a user's TECO.TEC startup file, the final
MY$$ which causes processing of the command line is not executed.
This results from the fact that the MY$$ normally appears in TECO's
type in after all command files have been processed, Executing the
EI$ command causes all "type ahead" to be discarded to allow a TECO
command file to prompt and read input from the terminal (and not read
extraneous type ahead). It is assumed that a TECO startup file that
executes EIS and reads input from the terminal will want to manage the
rest of TECO's startup. If it still wants to process the command
line, it must issue the MY itself.
Standard TECO
Page 114
Appendix G
APPENDIX G
VAX/VMS OPERATING CHARACERISTICS
TECO is implemented in VAX/VMS as a half-native, half-compatibility
mode program. The command processor and editor proper is the same as
TECO-11 and runs in compatibility mode. Operating system interface
and file service logic run in native mode.
G.1 STARTUP
VAX/VMS supports all of the standard TECO invocation commands, name ly
TECO
TECO filespec
TECO filespec=filespec
MAKE filespec
MUNG filespec
MUNG filespec,text
If any of these commands are not recognized by the system, see the
installation instructions (section G.13) in this appendix.
TECO macros may also be invoked with the command
TECO @filespec
It is exactly equivalent to
MUNG filespec
G.2 INITIALIZATION
TECO performs initialization by attempting to translate the logical
name TECSINIT. If this name does not translate, no special
initialization is done. If it translates to a string of the form
Sfilespec (where "$" is a dollar sign), TECO executes the TECO
commands in the specified filespec during initialization. If TECSINIT
translates to any other string, TECO executes that string as TECO
commands during initialization.
TECO's memory is controlled by the logical name TECS$SMEMORY. If this
name translates to a string of the form $filespec, TECO uses the
specified file for its memory. Otherwise, TECO uses the logical name
itself as the memory.
If TECO is requested to load VTEDIT at startup (e.g., via a
TECO /VTEDIT command), it attempts to translate the logical name
TECSVTEDIT. If the name is defined, the resulting filespec is used as
the file from which to load the scope editor. If the logical name is
not defined, TECO defaults to SYSSLIBRARY:VTEDIT.TEC.
G.3 FILE SPECIFICATION
All file specifiers are subject to the VAX/VMS file specifier rules;
logical names and multi-level directories are properly handled,
including transparent network file access. The filename field must be
specified whenever the device name references a file structured
Standard TECO Page 115
Appendix G
device. The type field must be explicitly given if used. There is no
default type except for EI commands which default the type field to
e TEC.
The switch /RW may be applied to any file specification in an ER, EW,
and EI command. If the file specification references a magtape, the
tape is rewound before the file is opened. Note that for output
files, this has the effect of zeroing the tape. The /RW switch is
ignored for all other device types.
The presence of version numbers in Files-11 causes file processing to
behave slightly differently under VMS than under other operating
systems. For example, no .BAK files are used; each execution of an
EB command simply produces a new version of the file. Thus a user may
retain any level of backup he feels to be comfortable. It also means
that one must occasionally delete obsolete files to avoid cluttering
the disk. Thus the command
EBname .typ; versions
is equivalent to the commands
ERname .typ; versionSEWname .typ;0$
The EW command also creates a new version (one higher than the current
highest) if no version number is given. If an explicit version number
is given, then that number is used, and if another file of the same
name, type, and version previously existed, it is superseded without
warning. (See use of the EK command below.)
In reading files, version numbers behave the same as in other VMS
utilities: the default is the highest version. This leads to a
problem in re-opening the input file while a file is being edited with
EB. Since the output file is already created and in the directory,
the input file is no longer the highest version. One may deduce the
version number of the input file by doing a :G* (typing the file
string of the output file) and subtracting one from that version
number,
In symmetry with the EB command, the EK command functions by simply
deleting the current output file. Note, however, that a supersede (EW
of same name, type, and version) is not undone - the file is already
deleted!
When files are processed concurrently on the primary and secondary
channels, all files are kept open. Thus the problems that occur under
RSX-11 do not exist under VMS. (See appendix F, section F.3.)
G.4 WILD CARD LOOKUP
Wild card file name processing supports all of the wild carding
facilities of RMS-32, including embedded * and %, and multi-level
directory wildcarding (not under VAX/VMS vl).
G.5 SYMBOL CONSTITUENTS
The match control character “EC and the conditional n"C accept the
VAX/VMS symbol constituent character set, which consists of upper and
lower case alphabetics, numerics, ., $, and e
Standard TECO Page 116
Appendix G
С.6 EXITING FROM TECO
The normal method of exiting from TECO is with the EX command. This
copies the remaining input file to the output file, closes all files
and exits.
The <CTRL/C> (or Caret-C) command is the "give up and get out"
command. Executed from main command level, it will cause TECO to exit
regardless of the state of the buffer. If there is an open output
file, it is deleted. The <CTRL/C> command is roughly equivalent to
EKHKEX.
G.7 <CTRL/C>
The action taken when the user types <CTRL/C> depends on what TECO is
doing.
If TECO is executing commands, or is awaiting type-in for the “T
command, the ?XAB error occurs.
If TECO is at command level, typing <CTRL/C> cancels the command
string currently being typed and returns TECO to its prompt. Two
consecutive <CTRL/C> characters will cause an instant HKEKEX exit.
Sometimes it is desireable for a TECO macro to detect when a <CTRL/C>
was typed. By detecting the <CTRL/C>, the macro can exit cleanly back
to command level (pop saved Q-registers, restore any flag values,
etc.). To do this, the macro sets Bit 15 (Octal 100000, Decimal
-32768) of the ET flag. When a <CTRL/C> is typed, TECO will
automatically turn off Bit 15, but will continue execution of the
macro. The macro periodically checks Bit 15 and exits cleanly if it
ever goes off. For example:
[О [1 -32768#ETET < ... ET; > 327674ETET ]1 Jo
Setting the <CTRL/C> intercept bit in the ET flag must be done with
some care; if the bit is set inside a command loop which does not
check it, it will be impossible for the user to abort the loop. The
only remedy for this situation is to abort TECO with <CTRL/Y>,
resulting in the loss of the edit.
G.8 <CTRL/Y>
<CTRL-Y> 15 not handled at all by TECO and will result in trapping to
the command interpreter. Should you accidentally type <CTRL-Y>,
immediately type CONTINUE in response to the DCL prompt to resume
editing.
G.9 EXIT AND GO
If TECO is exited with the EGstring$ command, the string is passed to
the command interpreter as the next command to execute after TECO has
closed its files and exited. This feature works only on VMS V2 and
later systems,
G.10 ET FLAG HANDLING
TECO will automatically turn off the following bits in the ET flag on
every error: Bit 0 (image output), Bit 3 (no echo on “T), Bit 4
(cancel “0), Bit 5 (no stall on “T), and Bit 15 (°C trap).
Standard TECO Page 117
Appendix G
In addition, TECO always turns off Bit 7 (exit on error, etc.) every
time is reaches prompt (*) level.
Bit 6 (the detach flag) has no meaning in VMS.
G.11 FILE RECORD FORMAT
Files-11 files are record structured, while TECO'S text buffer is
ASCII stream. Thus TECO must make format conversions when reading and
writing files. The conversion depends on the record attributes of the
file. While reading a file, the records are packed into the buffer.
If the file is implied carriage control (the standard VMS source
format) or Fortran carriage control, TECO inserts a carriage return
and line feed after each record to make each record appear as a line
of text in the buffer, unless the record ends with ESCAPE, carriage
return, line feed, vertical tab, or form feed. A record containing a
form feed is interpreted as an end of page mark; it stops the read
operation and the form feed is not entered in the buffer. The portion
of the record after the form feed, if any, is saved for the next input
command. If the file has print file carriage control, TECO interprets
the carriage control bytes and inserts the resulting carriage return
and line feed characters about the record. If the input file has no
carriage control (also called internal carriage control), TECO simply
packs the records together in the text buffer.
On output, TECO scans the text buffer for carriage return, line feed,
vertical tab, and form feed characters. Each such character delimits
the end of an output record. If the output file is implied or Fortran
carriage control, and the record ends with exactly carriage return /
line feed, the carriage return and line feed are not output with the
record; Otherwise, the record is output in its entirety. The
carriage return and line feed are also output with the record if the
record ends with ESCAPE / carriage return / line feed.
Switches may be applied to the input and output files to control their
carriage control attributes. The switch /CR forces implied carriage
control; /-CR forces no (internal) carriage control; /FT forces
Fortran carriage control. When a carriage control switch is applied
to an input file, the file is read as if it had that attribute; when
the switch is applied to an output file, the file is written with that
attribute. Applying a switch to an EB file specification causes the
switch to apply to both input and output files. When an output file
is created, its carriage control attributes are defaulted to those of
the currently open input file as follows:
Input Output
implied implied
none implied
Fortran Fortran
print file implied
Files read with the EI command have their record attributes
interpreted in the same manner. This leads to an unexpected side
effect with EI files containing an entire command. The last record of
the file presumably contains as its last characters the two alt modes
which initiate execution of the macro. If the file is implied
carriage control, however, there are also the final carriage return /
line feed belonging to the last record, which remain in the type in
buffer while the macro executes. If the macro attempts to receive
input with the <CTRL/T> command, the carriage return / line feed will
be the first two characters read. Alternatively, if the macro does no
type in, the carriage return / line feed will be read by TECO as the
Standard TECO Page 118
Appendix G
first two characters of the next command. Then no asterisk (*) will
appear as the prompt for the next command. The remedy for both cases
is for the macro to execute an EIS command early on. This causes the
remainder of the indirect file to be discarded and further input to be
read from the terminal.
G.12 COMMAND LINE PROCESSING
The mechanism used to process the command line in VMS TECO is designed
to allow sophisticated TECO users the greatest flexibility in
customizing TECO for their own use. It functions as follows:
The initialization routine places the original MCR command line (if
any) into the filename buffer. It copies into the text buffer the
text of a TECO macro that will be used to interpret the command line.
Then it starts up TECO with the command
HXY HKG* HXZ HK :EITECOSS
in the type in buffer. This loads the command line into Q-register 2
and the macro into Q-register Y. It then executes the file named
TECO.TEC located in the user's default directory, if it exists. After
the user's TECO.TEC, and any files it might link to with EI, have been
executed, TECO executes the command MY$$, thus executing the macro to
interpret the command line and open the files requested.
The TECO.TEC mechanism should not be used for simple initialization;
the standard TECSINIT facility should suffice for that. The alternate
TECO.TEC facility is provided for the sophisticated user who wants his
own command processing and thus wishes to usurp control from the
normal initialization.
If an EIS command (to close the indirect command file) is executed
during the processing of a user's TECO.TEC startup file, the final
MYSS which causes processing of the command line is not executed.
This results from the fact that the MYSS normally appears in TECO's
type in after all command files have been processed. Executing the
EIS command causes all "type ahead" to be discarded to allow a TECO
command file to prompt and read input from the terminal (and not read
extraneous type ahead). It is assumed that a TECO startup file that
executes EIS and reads input from the terminal will want to manage the
rest of TECO's startup. If it still wants to process the command
line, it must issue the MY itself.
G.13 INSTALLING TECO
TECO is distributed with VAX/VMS; the files are already in place. If
TECO will receive heavy use, it should be installed /OPEN and
/HEADER RESIDENT.
NOTE
The half-native TECO is distributed with VAX/VMS V2. Previous
versions of VAX/VMS were distributed with the compatibility
mode RSX-11M TECO. Should you wish to run the half-native
version on VAX/VMS Vl.x systems, you must install it with
CMEXEC privilege to allow its handling of TECSMEMORY. This
privilege is NOT required on VAX/VMS V2 or later.
Standard TECO
Page 119
Appendix G
Since the TECO commands are not part of the VAX /VMS command
interpreter, each user must define the commands in his LOGIN.COM file.
The following commands will define the three normal TECO invocation
commands:
$ ТЕСО :== STEC TECO
$ MAKE :== STEC MAKE
$ MUNG :== STEC MUNG
One may include command switches in the command definitions. For
example, one can define a command to invoke TECO with VTEDIT as
follows: `
S VTECO :== STEC TECO /VTEDIT
Standard TECO
Page 120
Appendix H
APPENDIX H
05/8 OPERATING CHARACTERISTICS
H.1 STARTUP
TECO is started with the
‚К TECO
command. TECO is now immediately ready to accept commands. The text
buffer and Q-register areas are empty.
The TECO command
.TECO filespec
is used to edit an already existing file. It is equivalent to
.R TECO
*ЕВЕ1 1е5рес$у$ $
05/8 "remembers" the filespec as the name of the last file that has
been edited.
The MAKE command
. MAKE filespec
is used to create a new file. It is equivalent to
.R TECO
*EWfilespec$$
0S/8 "remembers" the filespec as the name of the last file that was
edited.
The command
.TECO filespecl=filespec?
is used to edit filespec2 into filespecl. That is, filespec2 is
opened as the input file, and filespecl is created as the output file.
It is equivalent to
.R TECO
*ERfilespec2$SEWfilespecl$YSS
0S/8 "remembers" the filespecl as the name of the last file that was
edited.
The command
.TECO
with no arguments, causes CCL to execute the command
.TECO filespec
where filespec was the file that was previously remembered as the last
file to be edited. The system purposely does not remember filenames
from one day to the next, but it will remember names across
Standard TECO Page 121
Appendix H
bootstraps.
The command
- MUNG filespec
executes the specified TECO program. The default extension is .TEC
This is equivalent to the sequence:
.R TECO
*ERfilespecSYHXYHKMYSS
Another format of this command is
-MUNG filespec,argument
which is used to pass an argument to the TECO program to control its
action. This is equivalent to the sequence:
‚В TECO
*ERfilespec$YHXYHKIargumentsSmYs$
The argument may be the name of a file that the TECO program is to
mung, or it may be a command to the program to specify what action to
take, or whatever. It is up to the TECO program to decode this
argument (which is left in the text buffer) and take appropriate
action. A TECO program executed via the MUNG command must never
destroy the text storage area of Q-register Y and expect to ever see
the light of day again.
Note the input file remains open and can provide more input to the
macro.
H.2 STARTUP CONDITIONS
The initial value of the EU flag is 0 if the CCL command SET TTY NO
SCOPE had been previously issued, and is -1 if the CCL command SET TTY
SCOPE had previously been issued.
The initial value of the ET flag is as follows:
Bit value Initial value
1 0
2 0 (1 if terminal is a scope)
4 0
8 0
16 0
32 0
64 0
128 1 (TECO's prompt sets this to 0)
256 0
512 0 (1 if VT support is present)
1024 0 (1 if VR12 support is present)
2048 0
The initial value of the ED flag is 1.
Standard TECO Page 122
Appendix H
H.3 FILE SPECIFICATION
The file access commands ER, EB, and EW accept a file specification in
the standard 0S/8 format:
dev: filename. type
in which dev: is a physical device name or a user assigned logical
name; if dev: is not specified, the default DSK: is assumed. The
filename field must be specified in the commands ER, EB, and EW and be
a legal 0S/8 filename. The type field is a file extension and must be
explicitly given if used (there is no default). Any characters after
the second will be ignored, thus the filespecs FOO.TEC and FOO.TE are
equivalent. The EB and EW commands do not accept the extended
notation for an output file size
dev: filename.type[n]
specifying an output size allocation.
H.5 BACKUP FILES
The EB command maintains one level of file backup on 0S/8. The
pre-edited input file name is changed to
filename .BK
before the new output file is closed with the original name. Only
normal file closing commands (EC, EF, EG, and EX) cause this renaming
to happen. If TECO is aborted or the output file is purged by the EK
command, the input filename remains unchanged. Note only one .BK file
for a given name is kept; earlier .BK backup files are deleted each
time a new backup file is created.
A good policy to follow when editing is to close the edited file
frequently enough so that an unexpected incident would not cause a
substantial loss of work. Files should be backed up regularly. TECO
has the power to let an unsuspecting user alter a good file into a
completely useless state. The SRCCOM program can be used to verify an
editing session.
H.6 EXIT AND GO
If TECO is exited via the EGstring$ command, the string is passed to
the system as the next command to execute. This string may be any
valid command or an indirect command file specification. The command
may be either a KBM or a CCL command. This command is especially
useful while running under BATCH.
If TECO is exited via the EGS command, then 0S/8 will re-execute the
last explicit compile-class command that was executed that day. The
commands that are considered to be compile-class commands are:
COMPILE file
LOAD file
EXECUTE file
LINK file
MACRO file.
This feature, combined with 0S/8's other remembering features,
minimizes the number of keystrokes necessary to do normal program
development. The programmer does not have to constantly type in the
Standard TECO Page 123
Appendix H
name of the file he ¡is working with. A typical debugging session
would look like this:
- MAKE FOO. MAC
*!type in assembly language file to be executed!
*EXSS
EXECUTE FOO
(get error messages)
. TECO
*!fix bugs!
*EGSS !re-compile and execute program!
(watch program work or repeat process)
H.7 <CTRL/C>
The action taken when the user types <CTRL/C> depends on what TECO is
doing. At command level <CTRL/C> is an immediate action command. If
typed as the very first character in a command string (not necessarily
the first keystroke) it aborts TECO and returns to the keyboard
monitor. If this was done accidentally, TECO may be restarted (at
your own risk) by using ODT to branch to location 207 in your
Program's image. If <CTRL/C> is typed in the middle of entering a
command string, then the ?xAB error message is given and TECO
reprompts with its asterisk. Note that if TECO executes <CTRL/C> as a
command from command level, TECO is aborted. If TECO executes a
<CTRL/C> command from within a macro, TECO is also aborted. If a
<CTRL/C> is typed while TECO is running, or while TECO is typing on
the terminal, or while an error message is printing, then the ?xAB
error message is given and TECO reprompts with its asterisk. TECO
will abort similarly, if <CTRL/C> is typed while TECO is waiting for
input because of a “T command. Note that if TECO is performing I/0
using non-system handlers, the non-system handler may intercept the
<CTRL/C> and abort back to the keyboard monitor. In such a case, you
may attempt to re-enter TECO. However, part of your file has been
lost; good luck in attempting to issue an EF command. Manually
resetting the value of 2 might recover your data.
If TECO is executing commands or doing I/0, a <CTRL/C> will stop the
operation and generate the ?XAB error message.
Sometimes it is desireable for a TECO macro to detect when a <CTRL/C>
was typed. By detecting the <CTRL/C>, the macro can exit cleanly back
to command level (restore any flag values, etc.). To do this, the
macro sets Bit 0 (Octal 4000, Decimal 2048) of the ET flag. When a
<CTRL/C> is typed, TECO will automatically turn off Bit 0, but will
continue execution of the macro. The macro periodically checks Bit 0
and exits cleanly if it ever goes off. If the <CTRL/C> trap bit is
on, then the “T can read a <CTRL/C> typed at the terminal. It has an
ASCII value of 3.
H.8 FILE RECOVERY
TECO can be a useful tool in recovering ASCII files lost on a block
replaceable device. TECO allows non-file-structured devices to be
opened in a non-file structured mode. This gives the user the
capability to open a disk and access ASCII data anywhere on it,
independent of file boundaries, To do this, you must issue a command
of the form
‚SET dev: NOFILES
to the monitor to make it think that your disk is non-file-structured.
Standard TECO Page 124
Appendix H
The command
ERdev:$
is used to open the device at which point (underscore or backarrow)
searches may be used to locate specific ASCII data and transfer it to
new output files. Note that files tend to get reproduced, in whole or
part, many places on a block replaceable device; be sure to verify
that any given text is indeed complete and the correct version.
If the disk's directory has not been clobbered (or if you are willing
to create a new one), then it is not necessary to turn the disk into a
non-file-structured device. Merely open up a file early on the disk
for input and read through end-of-files until you locate the lost
file. To read through end-of-files, you must use the /S switch on an
ER, EB, or EW command. For example, the command
ERFOO.MAC/SS
will open the file FOO.MA for input and put TECO into "SUPERTECO"
mode. In this mode, TECO will not treat a <CTRL/Z> found in a file as
an end-of-file character. Instead, <CTRL/Z> will be treated like any
other character. It is not a line terminator or a page terminator.
This mode continues until an ER, EW, or EB command is issued without a
/S switch.
H.9 VR12 GRAPHICS SUPPORT
If TECO is run on a PDP-12, TECO will automatically start up in
display mode, adjusting to both the size of the display screen and to
the presence or absence of the scroller.
On a PDP-12, TECO only permits one-page input and output handlers.
See Section 5.17 for a description of the available commands to
interact with the display.
Various aspects of the display screen become immediately obvious upon
seeing them; the text pointer, its position and shape and its
position between lines; wrap around of more than 72 characters per
line, and so on. Experiment with a scratch file for more familiarity.
H.10 EXCEPTIONS
TECO-8 does not support the following commands which are described in
this manual:
1. Secondary streams (EP, EA, ERS, EWS)
2. Auxiliary command streams (EI)
3. Wildcards (EN)
4. Zeroing of directories (EZ)
5. Magtape commands (EM)
6. View command (nV)
7. Bounded searches
Standard TECO Page 125
Appendix H
8. Anchored searches
9. Search verification (ES)
10. Command verification (EV)
ll. Backward searches
12. Extended string build or match constructs (^Ех)
The following incompatibilities exist between TECO-8 and Standard
TECO:
l. In octal mode, the digits 8 and 9 are not treated as errors when
occurring in a numeric string.
2. The *q immediate action command is not implemented. Instead, the
immediate action command * has the same effect as *Z of the
standard. (The immediate mode command “S is still accepted for
compatibílity with 0S/8 TECO VS.)
H.11 CHAINING TO TECO
A user program may chain to TECO passing it a command to be executed.
There are two formats that such a command may take.
Format 1 (the TECO command format) passes TECO a valid TECO command to
be executed. This TECO command 15 placed in a buffer starting at
location 17600, one 7-bit ASCII character per word. A negative word
represents a pointer to a continuation buffer in field 1. There may
be any number of continuation buffers, but they must all begin above
location 4000 in field 1. Since TECO clobbers most of field 1, these
buffers must in fact start above location 7400. TECO will never load
into page 7400 of field 1. The buffer ends with a fullword O.
Format 2 (the CCL command format) passes TECO a CCL command to be
parsed and executed. Such a command usually begins with the words
TECO, MAKE, or MUNG, but is not limited to these words. Such a CCL
command is placed in a buffer starting at location 17601, one 7-bit
ASCII character per word. Location 17600 must be a fullword 0 to
specify that this format is being used. A negative word in the buffer
represents a pointer to a continuation buffer in field 1 as described
above. The buffer ends with a fullword 0. If this format is used,
the passed CCL command will be parsed and executed by TECO.TEC as
described below. A user may write his own TECO.TEC, thus implementing
his own CCL commands. There is no limit to the possiblities, other
than the user's imagination.
Н. 12 USER INITIALIZATION
If a user has a file called TECO.INI on SYS:, then when TECO starts up
(via a CCL command, it will execute the contents of this file (as a
TECO macro). This file must contain a valid TECO program (which will
execute out of O-register W). God help you if you have any errors in
this program. This start-up file must not modify itself (Q-register
W) and must not modify the contents of Q-register V. It should not
indiscriminately modify the contents of Q-register Z or the text
buffer. TECO.INI will be executed before TECO opens any files. That
is, if TECO was invoked via a MAKE command, TECO.INI will be executed
before the EW command (for the MAKE) is executed. At this point, the
text buffer will contain a copy of the CCL command that invoked TECO
Standard TECO Page 126
Appendix H
(assuming your monitor has TECO.TEC support). However, TECO has not
as yet parsed this line. The user may examine this line for himself,
and modify it, but you had better know what you are doing (and do it
right!). TECO.TEC will parse the contents of the text buffer at the
conclusion of execution of TECO.INI.
If your monitor does not have TECO.TEC support, or if a user program
chained to TECO passing it a TECO command (rather than a CCL command),
then the initial TECO command will be in Q-register 7 when TECO.INI
gets control. That command has not as yet been executed. The
initialization file may examine the contents of O-register Z to
determine what TECO command will be executed and proceed accordingly.
It may also modify the contents of Q-register Z (but you better know
what you are doing).
In this case, TECO.INI is started up via the sequence
@:ER/SYS:TECO.INI/"SYHXWHK
@°UZ"@teco command”e@
MW+0ES., . XWMZES"NOESMX"'SS
which loads TECO.INI into Q-register М, loads the chain argument
consisting of an appropriate teco command into Q-register Z, and
temporarily stores the value returned by TECO.INI in the search
verification flag (this feature may change in a subsequent release).
Q-register W and ES are cleared before the post-processing command in
Q-register X is executed. Note that the chain argument may not
contain any embedded nulls,
H.13 RETURNED VALUES FROM TECO.INI
TECO.INI may also return a value. If your monitor does not support
TECO.TEC, then only two values are permitted. Returning a 0 (or not
returning anything) is the normal sequence of events. Returning a 1
means that TECO should execute the contents of Q-register X (via an MX
command) after it executes the initial TECO command (in Q-register 2).
TECO.INI may set up Q-register X with the appropriate post-processing
commands. A typical use of this feature would be to have TECO.INI
load up Q-register I with an editing macro and then put an "MI"
command in Q-register X for subsequent execution. If your monitor
does have TECO.TEC support, then TECO.TEC can support additional
returned values. It is recommended that TECO.TEC support the returned
values of 0 and 1 as above, but in addition, it may support additional
values determined by the user.
Note that TECO.INI is not invoked if TECO is started with a RUN or R
command.
H.14 TECO.TEC SUPPORT
If the version of CCL you are using to invoke TECO supports TECO.TEC,
then it will chain to TECO with a 0 at location 17600 and will pass
TECO the invokig CCL command (beginning at location 17601). If TECO
is invoked in this manner, it will parse this CCL command by executing
the TECO command line parser macro stored in SYS:TECO.TEC. This macro
can be modified by the user to parse switches or do any special
processing that is desired. TECO.TEC is started up via the command
aI éccl command” ea:ER/SYS:TECO.TEC/"F ACan't find SYS:TECO.TEC
“A CCA. ,ZXV. , ZKMV., ..XVS$
which puts your CCL command in the text buffer and then loads (the
Standard TECO Page 127
Appendix H
first page of) TECO.TEC into Q-register V. TECO.TEC is then executed
with the MV command and then Q-register V is cleared. It is the
responsibility of TECO.TEC to parse the command line in the text
buffer and do the appropriate processing and clean-up. It is also the
responsibility of TECO.TEC to execute a user's start-up file
(TECO.INI) if one is present. Note that TECO.TEC is not invoked if
TECO is started via a RUN or R command. Also note, that the CCL
command may not contain any embedded nulls.
Н. 15 OVERLAYS
The key to writing fast TECO programs lies in understanding TECO-8's
overlay structure. If TECO-8 is run in 16K or more (20K or more if VT
support is present), then the overlays will be memory-resident rather
than disk-resident. Although this is much faster than swapping from
the disk, swapping from memory still involves some overhead, so it
would be wise to structure your TECO program to minimize the number of
swaps necessary.
The overlay structure is designed so that the minimal number of swaps
will be required unless obscure TECO features are used. There are
five overlays to TECO:
1. The I/0-overlay. This overlay handles file opening and is
initially resident. Thus no swapping is necessary to do an
initial ER, EW, or EB.
2. The Q-overlay. This overlay contains most of the frequently used
conditional commands and branching commands. It is intended that
this overlay swap in once and remain in memory until TECO is
exited.
3. The X-overlay. This is the exit overlay and handles commands
needed only when TECO is exiting, such as EX, EF, EC, and EG. It
is intended that this overlay will swap in only once when you are
ready to leave TECO.
4. The F-overlay. This overlay contains the flag commands and other
little-used commands. It is intended that this overlay be not
used at all, or if it is used, it will be used so infrequently
that it will not slow down system performance.
5. The E-overlay. This is the error overlay. It is swapped in only
when an error occurs. It is intended that this overlay never be
swapped in.
To write efficient TECO code, the user must know exactly which
commands are handled by which overlay. This information is summarized
below.
Overlay Commands
I-overlay ERfile$S, EWfileS, EBfileS, :ERfile$, :EBfile$
Q-overlay Otag$, n"Xthen|else', n;, search;, n<...>, <...>
X-overlay EC, EGS, EGcmd$, EF, EK, EX,
*q, ?, nEJ, n°_, М, ^В, “E, “E, “L, “N, “Ugtext$
F-overlay ED, EH, EO, ES, ET, EU, “D, “O,
\, n\, n=, n==, n:=, n:==, |
Standard TECO Page 128
Appendix H
Several things are immediately obvious. The command OTT should always
be preferred to the V command. ELSE clauses should be avoided. (In
future releases, we will try to move the processing of the | command
into overlay 0.) The commands \ and = should be used as infrequently
as possible from within long-running macros. Xg is preferred to “Uq
to load up a Q-register. -n-1 is preferred to n” to take a one's
complement. Radix changes should be avoided. Flags, such as ET and
ED, should be set once at the beginning of a macro, and then not
fiddled with if at all possible.
H.16 INSTALLATION INSTRUCTIONS
The source of TECO consists of the following modules:
TECO.MAC Main module
TECINI .MAC Initialization module
TECTBL .MAC Tables
TECDEF . MAC Global definitions
TECO12.MAC VR12 support
TECOVT.MAC VT support
TECOVI .MAC I/O-overlay
TECOVQ .MAC Q-overlay
TECOVX .MAC X-overlay
TECOVF.MAC F-overlay
TECERR.MAC E-overlay and error processor
TECSRH.MAC Search processor
TECNUM. MAC Arithmetic processor
Each of these modules should be assembled (using MACREL V2 or later).
This can be accomplished via the command
e MAC TEC??? .MAC
if your monitor supports wildcards in compile-class commands.
The resulting relocatable modules are then linked together (using LINK
V2 or later) to produce the executable TECO.SV image which should be
put on SYS: (but it may reside on any device). If your monitor
supports TECO.TEC, then TECO.TEC must be placed on SYS:.
H.17 ARITHMETIC PRECISION
TECO-8 performs 13-bit arithmetic except that multiplication and
division by negative numbers gives unpredictable results. All numbers
stored in Q-registers are 13 bits long. Numbers stored in flags (such
as ET, EU, etc.) are only 12-bits long. When storing a number into a
flag, the high order (sign bit) is lost. When using the value of a
flag in an arithmetic expression, the 12-bit value is sign extended
first.
H.18 ALTERNATE STARTING ADDRESS
The normal starting address of TECO is location 00200. In this
(normal) mode, TECO will simulate tabs by spaces on type out and will
simulate vertical tabs and form feeds by line feeds. If your terminal
has hardware tabs and vertical tabs (such as a KSR-35), then TECO can
take advantage of these features. To enable this ability, you should
change TECO's starting address to be 05200. This can be done by the
monitor commands:
.GET SYS:TECO
Standard TECO
Page 129
Appendix H
.SAVE SYS:TECO; 5200
H.19 VTOS SUPPORT
TECO will automatically handle command string scope editing correctly
on a vTOS. The VT support (obtained via use of the -1W command) will
handle VTO05's correctly. The VTEDIT macro does not currently support
the VTOS keypad.
Standard TECO Page 130
Appendix I
APPENDIX I
TOPS-10 OPERATING CHARACTERISTICS
I.1 STARTUP
TECO is started with the
‚НВ TECO
command. TECO is now immediately ready to accept commands. The text
buffer and Q-register areas are empty. Initial commands may also be
specifified by following the monitor command with a dollar sign ($)
and then some TECO commands. For example,
.R TECO S3EH
starts TECO with the help level flag set to 3.
The TECO command
.TECO filespec
is used to edit an already existing file. It is equivalent to
.R TECO
*EBfilespec$Y$$
TOPS-10 "remembers" the filespec as the name of the last file that has
been edited.
The MAKE command
- MAKE filespec
is used to create a new file. It is equivalent to
‚В ТЕСО
*EWfilespec$$
TOPS-10 "remembers" the filespec as the name of the last file that was
edited.
The command
.MAKE filespecl=filespec2
is used to edit filespec2 into filespecl. That is, filespec2 is
opened as the input file, and filespecl is created as the output file.
It is equivalent to
‚В ТЕСО
*ERfilespec2SEwfilespecl1$YSS
TOPS-10 "remembers” the filespecl as the name of the last file that
was edited.
The command
.TECO
with no arguments, causes CCL to execute the command
Standard TECO Page 131
Appendix I
.TECO filespec
where filespec was the file that was previously remembered as the last
file to be edited. The system purposely does not remember filenames
from one editing session to the next, that is, when you log out, the
system "forgets" the name of the file you were editing.
TECO-10 does not require the use of the MUNG command to execute TECO
macros because runnable TECO programs can be created via use of the EE
command and these can then be run with the standard R or RUN command.
This TECO command has the format
EEfilespec$
which saves away the current image of TECO in the filename specified.
The default extension is .EXE. When the file is subsequently run
(using the R or RUN monitor command), TECO resumes execution with the
TECO command immediately following the EE command.
I.2 STARTUP CONDITIONS
The initial value of the EU flag is 0 if you are running on a terminal
that does not support lower case, and is -1 if you are running on a
terminal that does support lower case.
The initial value of the ET flag is as follows:
Bit value Initial value
(1 if terminal is a scope)
(TECO's prompt sets this to 0)
(1 if VT support is present)
Sy
>
OOOOHOOOOH—OO
The initial value of the ED flag is 1.
I.3 FILE SPECIFICATION
The file access commands ER, EB, and EW accept a file specification in
the standard TOPS-10 format:
dev:filename.type{p, pn]
in which dev: 15 а physical device name or a user assigned logical
name; if dev: is not specified, the default DSK: is assumed. The
filename field must be specified in the commands ER, EB, and EW and be
a legal TOPS-10 filename. The type field is a file extension and must
be explicitly given the first time. Thereafter, if a corresponding
command is given with no extension specified, the system uses the
previously specified extension as the default. The same defaulting
rules hold for the dev: field. The <prot> construct is permitted on
any output filespecification to allow setting the protection of the
file being created.
Standard TECO Page 132
Appendix I
I.4 BACKUP FILES
The EB command maintains one level of file backup on TOPS-10. The
pre-edited input file name is changed to
filename .BAK
before the new output file is closed with the original name. Only
normal file closing commands (EC, EF, EG, and EX) cause this renaming
to happen. If TECO is aborted or the output file is purged by the EK
command, the input filename remains unchanged. Note only one .BAK
file for a given name is kept; earlier .BAK backup files are deleted
each time a new backup file is created.
A good policy to follow when editing is to close the edited file
frequently enough so that an unexpected incident would not cause a
substantial loss of work. Files should be backed up regularly. TECO
has the power to let an unsuspecting user alter a good file into a
completely useless state. The FILCOM program can be used to verify an
editing session.
I.5 EXIT AND GO
If TECO is exited via the EGS command, then TOPS-10 will re-execute
the last explicit compile-class command that was executed during that
session.
I.6 <CTRL/C>
The action taken when the user types <CTRL/C> depends on what TECO is
doing. At command level <CTRL/C> is an immediate action command. If
typed as the very first character in a command string (not necessarily
the first keystroke) it aborts TECO and returns to the monitor. No
Control-C trapping is available under TOPS-10. The ?XAB error message
is not supported. If <CTRL/C> is typed in the middle of entering a
command string, then TECO returns control to the monitor. Note that
if TECO executes <CTRL/C> as a command from command level, TECO is
aborted. If TECO executes a <CTRL/C> command from within a macro,
TECO is also aborted. If two consecutive <CTRL/C>s are typed while
TECO is running, or while TECO is typing on the terminal, or while an
error message is printing, then control returns to the operating
system. If one <CTRL/C> is typed to TECO while it is waiting for
input, then control returns to the operating system.
I.7 EXCEPTIONS
TECO-10 does not support the following commands which are described in
this manual:
1. Secondary streams (EP, EA, ERS, EWS)
2. Wildcards (EN)
3. Immediate aids LF and BS.
The following incompatibilities exist between TECO-10 and DEC's
TOPS-10 TECO V24:
1. The nA command under TOPS-10 TECO V24 always returned the value of
the current character, regardless of the value of n. In TECO-10,
OA gives the value of the current character.
Standard TECO Page 133
Appendix I
I.8 USER INITIALIZATION
If a user has a file called TECO.INI in his area, then when TECO
starts up (via a CCL command), it will execute the contents of this
file (as a TECO macro). This file must contain a valid TECO program.
TECO.INI will be executed before TECO opens any files. That is, if
TECO was invoked via a MAKE command, TECO.INI will be executed before
the EW command (for the MAKE) is executed.
1.9 INSTALLATION INSTRUCTIONS
To create TECO for TOPS-10 from the sources, issue the following
commands:
. LOAD/MAC/COMPILE TECO1O.T10+TECO10 .MAC
. SAVE TECOlO
. LOAD/MAC/COMPILE TECERR.T10+TECO10 .MAC
e SAVE TECERR
To create TECO for TOPS-20 from the sources, issue the following
commands:
@LOAD/MAC/COMPILE TECO1O
@SAVE TECO20
This builds a raw TECO. This version of TECO does not contain any
window support since the W and :W commands are implemented as macros.
To load window support, issue the following commands:
«RUN ТЕСО10 (ог ТЕСО20)
*EITECOl10.TECSS
*EETECOSS
You now have a runnable TECO image with window support.
I.10 TMPCOR SUPPORT
The EQ and E% commands support the pseudo-device TMP: for TMPCOR.
Only the first three letters of the file name will be used, to try and
access a TMPCOR file. If that fails, it will try nnnNAM.TMP where nnn
is your job number and NAM is the three-character name. For example:
for job 23, EQQTMP:FOOBARS will read TMPCOR file FOO or 023F00.TMP.
1.11 Q-REGISTER NAMES
Any printable character (except open parenthesis) is valid as a
Q-register name. A Q-register whose name is a lower case alphabetic
character is the same as the Q-register whose name consists of the
corresponding upper case letter. Thus Qa and QA are equivalent
commands. Q-register names may also be up to 6 characters long, by
enclosing the name in parentheses, for example, Q(FOOBAR). OQ-register
names may contain any printable characters, however all characters
other than letters, digits, dollar-sign, space, and underline are
reserved for special use by TECO. A Q-register name consisting
entirely of zero or more spaces is the same as Q-register (), which is
special and discussed below. Trailing spaces in Q-register names are
discarded, and lower case is converted to upper case.
1.12 REFERENCING THE TEXT BUFFER AS A Q-REGISTER
The Q-register with the null name: () is the text buffer. The
numeric part of this Q-register is the value of dot. The sequence [A
]J() causes Q-register A to share with the text buffer. The old main
Standard TECO Page 134
Appendix I
text buffer is lost (unless it is also sharing with some Q-register or
if it has been saved on the Q-register push-down list). The text in
Q-register A becomes the text buffer and the numeric part of
Q-register A is used for "." if it is in range, otherwise dot is set
to 0.
I.13 SHARING OF Q-REGISTER POINTERS
Q-registers may share their text with each other and with the text
buffer as a result of [ and ] commands. When a Q-register is pushed
onto the Q-register pushdown list, all that is pushed is the numeric
part of the Q-register and a pointer to the text part of the
Q-register. Thus a command such as [A ]B would cause Q-registers A
and B to share the same text. The commands X, “U, and EQ could be
applied to either Q-register without modifying the other, since the
O-register is unbound from its previous text first. However, the
colon-modified forms of X and “U append to the existing text, so a :X
N
e
or : U command for either of them would affect the other.
I.14 EDITING LINE SEQUENCE NUMBERED FILES
Some ASCII files have a special type of line number at the beginning
of each line. These "line-sequence numbers" conform to certain rules
so that they may be ignored or treated specially by compilers and
other programs. The standards for line-sequence numbers are given in
the LINED Program Reference Manual.
TECO does not need line-sequence numbers for operation, but TECO can
be used to edit files containing them. If such a file is edited with
TECO-10, the line-sequence numbers are, in the normal case, simply
preserved as additional text at the beginning of each line. The
line-sequence numbers may be deleted, edited, and inserted exactly
like any other text. On output, the line-sequence numbers are output
according to the standard, except that the tab after the number is
output only if it is already there. Leading zeros are added as
necessary. If a line without a line-sequence number is encountered, a
line-sequence number word of five spaces is placed at the beginning of
the line.
The following switches are available for use with line-sequence
numebred files, These switches are merely added to the appropriate
file selection command.
ERfilespec/SUPLSNS
EBfilespec/SUPLSNS
causes line sequence numbers to be suppressed at input time. The
numbers will not be read into the editing buffer. Also, the tabs
following the 1line-sequence numbers, ¡if they exist, will be
suppressed.
EWfilespec/SUPLSNS
causes the line-sequence numbers to be suppressed at output time.
Tabs following the 1line-sequence numbers will also be suppressed if
they exist.
EWfilespec/GENLSNS
EBfilespec/GENLSNS
causes line sequence numbers to be generated for the output file if
they did not already exist in the input file. Generated line-sequence
numbers begin at 00010 and continue with increments of 10 for each
line.
Standard TECO Page 135
Appendix I
Note that these switches are needed only if a change is to be made in
the format of the file being edited. If no switches are specified, a
file is output in the same form as it was input.
I.15 COMPILER RESTRICTIONS
TECO-10 is a compiler rather than an interpreter. This means, that
before your command string is executed, TECO-10 compiles it into
assembly language code. This makes it must faster than most other
TECOS. Before executing a macro (with the Mg command) TECO compiles
the program in the macro. The next time the macro is executed, TECO
notes that the macro has already been compiled and merely branches to
the compiled code. If the contents of the Q-register are changed (via
an X or U command), then TECO notes that it must re-compile the
commands should the OQ-register be invoked as a macro.
One consequence of this is that if a syntax error is detected in a
command, no portion of that command will have been executed. For
example, typing the command HK= will yield the ?NAE error message and
the text buffer will NOT be cleared. Another consequence of this is
that you must not invoke a macro two different times using two
different numbers of arguments. If a macro gets initially invoked
with two arguments, then all subsequent invocations must supply two
arguments. Also, TECO cannot tell while compiling an Mg command
whether or not the macro returns a value. Therefore it assumes that a
value is always returned. This value can be explicitly removed by
followed the Mg command with an <ESCAPE>. The MgA command will
compile the A command as if it were an nA command rather than an
APPEND.
Standard TECO
Glossary
Page 136
GLOSSARY OF OBSCURE TECO TERMS
Abort-on-error bit
<ALTMODE>
Anchored search
Argument pair
ASCII code
The 128's bit of the ET flag. If this bit is set, then
TECO will abort execution on encountering an error
(after printing the error message) and control returns
to the operating system. This bit is initially set
when TECO starts up, but is reset whenever TECO issues
its prompt.
One of several characters that TECO treats specially
for use as a delimiter. Known as ESCAPE in more recent
times, but traditional TECO users will still go on
ending their command strings with "ALT" "ALT", Usually
shown as $ in this manual.
A search (S) or search and replace (FS) command that is
preceded by a ::. This indicates that the search must
match the characters immediately following the current
pointer position. If these characters do not match, no
further searching is performed and the text buffer
pointer does not move.
A command of the form m,n where m and n are numbers (or
TECO commands that return numbers). When used before a
command that normally acts on lines, the argument pair
causes the command to work on characters. The
characters specified by this argument pair is the set
of characters between pointer positions m and n. The
number m should normally be less than or equal to n.
The American Standard Code for Information Interchange.
The code used by TECO to represent characters
internally. Consult Appendix A for details.
@-sign modified command
@-sign modifier
Automatic type
Auto-trace mode
A command that is preceded by an @-sign modifier,
An at-sign (@) that proceeds a command. It indicates
to TECO that the string argument to the command is to
delimited on both sides by a user-supplied delimiter
rather than to be delimited only at the end by a
TECO-designated delimiter (normally <ESCAPE)>).
out
The feature of TECO that causes lines of text to be
automatically typed out. The ES flag may be used to
control the automatic type out of lines after search
commands, and the EV flag may be used to cause
automatic type out of lines after command execution.
A mode that TECO goes into when the 4's bit of the EH
(Help-level) flag is set. In this mode, TECO will
automatically print out the erroneous command string
after an error occurs.
Backup protection
The process of preserving the user's original file (as
a backup) when editing that file with the EB (Edit with
Backup) command.
Standard TECO
Glossary
Page 137
Backwards searches
A search that proceeds in the backwards direction. If
the string being looked for does not occur at the
current pointer position, the pointer position is moved
back one character and the search is tried again. This
continues until the string is found or until the
boundary of the search has been reached or until the
beginning of the current text buffer has been reached.
Backward searches are initiated by using a negative
argument to a search command or by using an argument
pair m,n with m greater than n to an FB or FC command.
Bounded searches
Case flagging
A search command that requires searching only a portion
of the text buffer. Of particular importance is the
case where you only want to search the current line for
a given string. Bounded searches are accomplished
using the FB command.
A mode of TECO wherein, on type out, it will flag
alphabetic characters (in either upper or lower case)
by preceding them with a single quote. Lower case
flagging is particularly useful on terminals that do
not display lower case. Case flagging is controlled by
EU, the case flag. Setting EU to 0 sets lower case
flagging mode; setting EU to 1 sets upper case
flagging mode, and setting EU to -1 removes all case
flagging.
Character-oriented editor
Colon-modified
Colon-modifier
Command line
Command string
Command string
Comment
An editor that allows modification of single
characters, so that if just one character of a line is
wrong, the entire line does not have to be retyped.
TECO is a character-oriented editor.
command
A command that is preceded by a colon (:) modifier.
A colon preceding a TECO command, used to indicate that
the action of the command is to change. Frequently
indicates that the command is to return a value (-1 if
the command succeeded, 0 if the command failed).
The current line of the command string that is being
typed into ТЕСО.
scope editing
The feature of TECO that is enabled when editing is
performed on a CRT terminal. In this mode, typing the
immediate action <DELETE> command causes the character
deleted from the command string to physically disappear
from the screen. Other commands, such as <CTRL/U> also
behave differently, taking best advantage of the
properties of a video terminal.
The string of TECO commands that is currently being
typed into TECO, or is currently being executed Бу
TECO.
An informative message used within a TECO program, to
make the code more readable. The comment explains the
meaning and purpose of the associated TECO commands.
Standard TECO
Glossary
Page 138
The comment is enclosed in exclamation marks.
Compile-class command
Conditional
A set of operating systems commands (such as COMPILE)
that causes compilation (translation) of a source file
written in a computer language into machine
instructions. The EGS command is useful to finish an
editing session and re-execute the last compile-class
command (normally a command that compiles the file that
was just edited).
A TECO language construct used to specify code to be
conditionally executed depending upon the results of
some test. The most general form of the TECO
conditional is
n"X <then-clause> | <else-clause> '
which tests the number n using condition X (See section
5.13 for details). The commands specified by the
<then-clause> are executed if the condition succeeds,
otherwise the commands specified by the <else-clause>
are executed.
Control-character
An ASCII character whose octal code is in the range
0-37. Usually denoted in this manual by <CTRL/X> where
X is the character whose ASCII code is 100 (octal)
greater than the ASCII code for the control character
being represented. TECO displays such a character as
^Х (Caret-X) except for <TAB>, <LF>, <VT>, <FF>, AND
<CR> which have their normal display, and <ESC> which
is displayed as $ (dollar sign). Anytime a single
control-character, <CTRL/X> is a valid TECO command,
the two-character sequence, ^Х, may be used instead.
<CTRL/C> trapping
A mode of operation wherein a TECO macro will regain
control (rather than TECO) when <CTRL/C> or
<CTRL/C><CTRL/C> is typed on the user's terminal to
abort execution of the current command string.
<CTRL/C> trapping is enabled by setting the high-order
bit of the ET flag.
Current character
Cursor
The character immediately following the current text
buffer pointer position.
A visible pattern on a CRT terminal (usually blinking)
that would specify to a true scope editor (like VTEDIT)
the current location of the text buffer pointer, or
which would specify the location where subsequently
typed characters would be displayed.
Destructive search
Display editor
A form of global search in which pages of text that are
passed over (because they did not contain the string
being searched for) are discarded rather than written
to the output file. Destructive searches are initiated
in TECO via use of the _ command.
A true display editor is on which makes efficent use of
a CRT terminal or display scope. Such an editor
maintains a "window" into the text being edited. As
characters are typed on the terminal, these characters
Standard TECO Page 139
Glossary
immediately are entered into the text buffer and the
window is immediately updated to reflect this change.
With the help of some macro support, TECO can be made
to be a true display editor.
Dot A mnemonic for "the current text buffer pointer
position”. Stems from the fact that the . (dot, or
period) TECO command returns this number as its value.
E command One of several two-character TECO commands that start
with the letter 'E',
Echo mode A normal mode of operation in which TECO will
automatically echo (display) each character that is
typed in response to a “T command. Opposite of no-echo
mode. This mode is controlled by the 8's bit of the ET
flag. (0 means no-echo mode.)
ED flag The edit level flag,
Edit-class command
A type of operating system command (such as MAKE and
TECO) that specifies that file editing is to occur.
Many operating systems remember the argument specified
with the last Edit-class command, so that the next time
an edit-class command is used without an argument, the
previous argument can be recalled.
Edit level flag
A bit-encoded flag, referenced by the ED command, that
describes how TECO should behave with reference to
certain features. See section 5.16 for more details.
Edit verify flag
A flag that describes how TECO should act after
processing of a command string. This flag can be set
so that TECO will display the line just edited on the
terminal after each command. See section 5.16 for more
details.
EH flag The help level flag.
Either-case search mode
A standard mode of operation in which alphabetic
characters specified within a search string are
permitted to match a corresponding character of either
upper or lower case.
Else-clause The part of a conditional command that is executed if
the condition is not satisfied. In TECO, these are the
commands that occur between the | and the ' characters
within the conditional construct.
End-of-file flag
A read-only flag, referenced by the “N command that
specifies whether or not end-of-file has been seen on
the currently selected input stream. A value of 0
means that end-of-file has not been seen; a value of
-1 means that end-of-file has been reached. This flag
is initially 0 and is reset to 0 each time a new file
is selected for input.
EO level The current version level of TECO-10.
Standard TECO
Page 140
Glossary
ES flag The search verification flag.
<ESCAPE> The character whose ASCII code is 33 (octal). It is a
general-purpose delimiter used by TECO. Traditionally
known as an <ALTMODE>.
ET flag The terminal characteristics flag
EU flag The upper/lower case flag.
EV flag The edit verify flag.
Exact-case search mode
A mode of operation in which alphabetic characters
within a search string must match the exact case (upper
case or lower case) of character specified.
Exit Protection
A protective feature of TECO that prevents a user from
exiting TECO if a potential los of data is imminent.
The EX and EG commands are aborted (with the ?NFO error
message) if there is text in the text buffer, but no
output file is open.
F command One of several two-character TECO commands that start
with the letter ’F'.
Flag A data register used by TECO to control various modes
of operation. The contents of the flag are set by
specifying the new value before the flag name; and the
contents are returned by using the flag name without a
numeric argument. The TECO flags are: X, “E, “N, ED,
EH, EO, ES, ET, EU, and EV.
Flow command A TECO-11 command that is used to flow (branch) to a
particular flow control character. The flow commands
are F<, F>, F', and Fl.
Form feed flag
A read-only flag, referenced by the “E command that
specifies whether the previous append from the input
file terminated because of encountering a form feed
character in the input file, or because the text buffer
became nearly full, The value of this flag is
automatically set to -1 by TECO if input is terminated
by the presence of a form feed character in the input
file.
Garbage collection
A process used Бу ТЕСО-10 to collect unused memory when
more memory is required.
Global search A type of search that continues through the entire
input file until the specified characters are found.
Successive pages of the file are read into the text
buffer and then written out into the output file (if
the string is not located). Global searches in TECO
are initiated via the N command.
Hard-copy editing mode
A mode of operation that TECO uses when the user's
terminal is not a CRT. In this mode, when a character
is rubbed out using the <DELETE> key, the rubbed-out
character is re-typed on the terminal as a visible
Standard TECO
Glossary
Help level flag
Page 141
indication that this character was rubbed out.
Opposite of scope editing mode. This mode can be
entered, even on a scope terminal, by turning off the
2's bit of the ET flag.
A bit-encoded flag, referenced by the EH command, that
controls properties of TECO having to do with error
messages and user assistance.
Immediate action command
Immediate aid
Iteration
Kernel
Keypad editor
Line
A special command to TECO that takes immediate effect,
requiring no <ESCAPE>s to begin its execution. Such
commands are usually used to perform editing of the
TECO command string currently being entered into TECO.
For example, the commands <DELETE> and <CTRL/U> are
immediate action commands.
A type of immediate action command that must be typed
as the first keystroke after TECO's prompt and provides
assistance to the user. Examples of such aids are: ?,
/, *d, <LF>, and <BS>.
A language construct that permits a sequence of
operations to be re-executed indefinitely or a given
number of times. In TECO, this is accomplished by
enclosing the commands in angle brackets.
The TECO-11 kernel refers to the TECO-11 module that
implements all those features of TECO-11 that are
common to all PDP-11 operating systems. Operating
system specific features and the interface to the
operating system is accomplished by linking an 1/0
module tailored for the desired operating system with
the kernel.
A true scope editor that uses special keys on the
terminal (such as a VT52 or VT100) to control editing
functions. VTEDIT is an example of a keypad editor.
A portion of text delimited by <LF>, <VT>, <FF>, or the
beginning or end of the text buffer. The final
delimiter is considered to be part of the line.
Line-numbered file
In TOPS-10, an ASCII file that contains line numbers
embedded in the start of each line. TECO does not
require these line numbers, but can handle them if they
are present. They can also be generated or suppressed
via the /GENLSN and /SUPLSN switches respectively.
Line-oriented editor
Line-wrap mode
An editor that primarily uses line numbers to direct
editing, and most of whose commands are line-oriented.
TECO is a character-oriented editor but also has many
commands that work on lines.
A standard mode of TECO's window support wherein lines
that are too long to fit on a single physical line of
the user's terminal are automatically continued on the
next line. Opposite of truncate mode.
Standard TECO Page 142
Glossary
Literal type out mode
A mode that TECO can be put into by setting the 1's bit
in the ET flag. In this mode, any characters typed by
a TECO program via use of one of the commands T, V, “A,
or :G, will be displayed on the user's terminal without
any modification. When not in this mode, TECO will
convert characters that normally do not print to a form
that can be displayed on the user's terminal (e.g.
<CTRL/X> displays as “X and <ESCAPE> displays as $).
Literal type out mode is useful when trying to do
real-time displays on a CRT terminal. Normal
(up-arrow) mode is particularly useful to let you see
what characters are really in your file.
Log file An audit trail that TECO-10 can keep showing all the
commands that were typed to TECO and/or all the type
out made by TECO. This is useful for reviewing what
went wrong with a 'bad'" edit. The log file is
initiated with the EL command (see Appendix C).
Macro A sequence of TECO commands intended to be loaded into
a Q-register and executed as a TECO program.
Macro level Two commands within the same TECO macro are said to be
at the same macro level.
Match control construct
A command, consisting of certain special characters,
used within a search string to indicate to TECO that
special groups of characters are permitted to match at
this point.
Memory expansion
TECO's act of acquiring additional storage from the
operating system when the currently allocated storage
is insufficient to handle the current TECO command.
Typically, TECO will attempt to acquire this additional
memory before it completely runs out of memory, so as
to allow a 'buffer zone' for the user. This allows him
to complete a few more commands even in the case where
TECO is unable to get more memory. The informative
message "[nK Bytes]" or its equivalent is printed on
the terminal informing the user that memory usage has
expanded.
Mung A recursive acronym for "Mung Until No Good"; an act
applied by novice TECO users to their source files.
MUNG command An operating system command used to invoke a
pre-written TECO program. The most general form of
this command is "MUNG file,data” where "file" is the
name of a TECO source program, and "data" is data to be
passed to that program.
No-echo mode A mode of operation in which TECO will not
automatically echo (display) the character typed by the
user in response to the “T command. This mode ¡is
entered by setting the 8's bit of the ET flag.
Opposite of echo mode.
Page A portion of text delimited by form feeds. The form
feeds are not considered to be part of the page.
Sometimes the term 'page' is used to refer to all the
text currently in the text buffer.
Standard TECO Page 143
Glossary
Panic Mode A condition that occurs (on small, single-user
operating systems), when, in the middle of outputting
during an edit, the output device fills up so that the
I/O transfer cannot continue. TECO recovers gracefully
from this condition by printing the ?FUL error message
and returning control to TECO without any loss of data.
At this point, the user closes the current output file
and opens another one on another device (with more
room) and resumes editing. At a subsequent time, the
two parts of his file are concatenated back together.
Pipeline editor
An editor which only makes sequential edits to a file.
The file to be edited is read into the text buffer one
piece at a time. Each piece is edited and then written
out. Once a piece has been written out, further
editing to that piece is not possible unless the output
file is re-opened in a later edit as a new file to be
edited. TECO is a pipeline editor.
Pointer preservation mode
A mode of operation in which the text buffer pointer
will not change after a failing search. This mode is
controlled by the 16's bit of the ED flag.
Primary input stream
A term used by TECO-11 to refer to the main input file
that TECO is using.
Primary output stream
A term used by TECO-11 to refer to the main output file
that TECO is using.
Prompt level A TECO command is said to be executed from prompt level
if it was typed in directly in response to TECO's
prompt, rather than being executed from a macro.
Q-register One of 36 special-purpose registers used by TECO. Each
register can hold both a number and a string of text.
Of particular importance is the ability to store TECO
command strings in Q-registers to be used as
'subroutines'.
Q-register push down list
A last-in first-out stack available to users for saving
and restoring the contents of O-registers.
Read-with-no-wait mode
A mode of operation in which the “T command will not
hang until a key is typed on the user's terminal. In
this mode, if no key has been struck, TECO returns a -1
as the value of the “T command. This mode is entered
by setting the 32's bit of te ET flag.
Search verification flag
A flag, referenced by the ES command, that controls the
action of TECO subsequent to the execution of a command
string containg a search command. Proper setting of
this flag will enable the user to verify that the
search located the correct string, by having the line
containing the string found displayed on the terminal.
See section 5.16 for more details.
Standard TECO Page 144
Glossary
Search mode flag
A flag, referenced by the “X command, that controls how
TECO treats alphabetical characters within search
strings. This flag is used to put TECO ¡into either
exact-case mode, or either-case mode. If the “X flag
is set to 0, then either case matches in searches. If
the ^Х flag is set to 1, then exact case matches are
required.
Secondary input stream
A term used by TECO-11 to refer to an auxiliary input
"channel" that was formed by use of the EP command.
Secondary output stream
A term used by TECO-11 to refer to an auxiliary output
"channel" that was formed by use of the EA command.
See section 5.1.4 for details.
Scope editing mode
A mode of TECO in which command line scope editing
(q.v.) algorithms are used. This mode is enabled by
setting the 2's bit of the ET flag. It is usually
automatically enabled by TECO if the operating system
can detect that the user has invoked TECO from a scope
terminal. Opposite of hard-copy editing mode.
Split Q-registers
The feature of TECO that permits storing of both a
number and a string within a Q-register. Each
Q-register can be considered to consist of two
compartments.
String build construct
A command, consisting of special characters, used
within a text argument to build up the contents of the
text argument from other components,
SUPER TECO mode
A mode of TECO-8 wherein TECO will read past the
end-of-file mark (CTRL/Z) of a sequential ASCII file.
This mode is enabled by using the /S switch on an ER or
EB command and is terminated when an ER or EB command
is issued with no /S switch. This mode is useful for
scanning through mass storage devices in an attempt to
recover data from files that had previously been
deleted.
Switch A construct of the form /SWITCH used within a command
that takes a filespecification, to modify the action of
the command or attributes of the file specified. Also
known as a qualifier.
Tag A label specified within exclamation marks to mark a
point within a TECO program. Control can be
transferred to this point by the use of a GOTO (Otag$)
command.
TECO Text Editor and COrrector program.
TECO.INI A file containing TECO commands that is used as a
user's private initialization file. When TECO starts
up, it looks for such a file in the user's area, and if
it finds one, the TECO commands ¡in this file are
executed before editing commences.
Standard TECO
Glossary
TECO.TEC
TECO I/0 mode
TECO's prompt
TECO SIG
Page 145
A TECO macro used by many operating systems to parse
the user's edit-class commands.
A mode of I/O operation under the RSTS/E and RSX-11
operating systems, in which the system buffers most
characters and returns control to the caller (usually
TECO) only when interesting characters (such as
<DELETE>, <ESCAPE>, etc.) are typed.
refers to the asterisk (*) that TECO prints to indicate
that it is ready to accept commands.
A DECUS Special Interest Group, consisting of users who
are dedicated to the spread of, improvement of, and
standardization of TECO.
Terminal characteristics flag
Text buffer
A bit-encoded flag, referenced via the ET command, that
contains information about the user's editing terminal
and specifies in what modes TECO should support it.
The main buffer used by TECO to hold the text to be
edited.
Text buffer pointer
Then-clause
Tracing
Trace mode
Truncate mode
Type-out-time
A pointer that marks the position within the text
buffer where TECO is currently 'at'. This pointer
always points to positions between characters; it
never points at a character. The current character is
considred to be the character immediately to the right
of the current position of the text buffer pointer.
The set of commands within a conditional that are
executed if the condition is satisfied. In TECO, these
commands immediately follow the "X at the start of the
'
conditional. They are terminated by a | or
character.
The act of watching the command-by-command execution of
a TECO program. This is accomplished by putting TECO
into trace mode, via use of the ? command.
A mode of TECO wherein each command that is executed by
TECO is also displayed on the user's terminal as it is
being executed. This mode is useful for debugging
complicated TECO programs. TECO is toggled in and out
of this mode via use of the ? command. See section
5.18.4 for more details.
A mode of TECO's window support wherein lines that are
too long to fit on a single physical line of the user's
terminal are truncated when the right margin of the
scope is encountered. This mode is entered by setting
the 256's bit in the ET flag. Opposite of line-wrap
mode,
command
A special command that makes sense only while TECO is
typing out text on the terminal. These commands are
<CTRL/S>, <CTRL/Q>, and <CTRL/O> and affect the type
out.
Standard TECO
Page 146
Glossary
Up-arrow mode A standard mode of operation wherein upon type out,
TECO will display control characters by typing the
visible two-character sequence ^Х to represent the
control character <CTRL/X>. On many older terminals,
the caret character (°), whose octal ASCII code is 136,
prints as an up-arrow. Some control characters are not
printed in up-arrow mode, notably <TAB>, <LF>, <VT>,
<FF>, and <CR>. Also, in this mode, the <ESCAPE>
character is displayed as a dollar sign ($).
Upper/lower case flag
A flag, referenced by the EU command, that specifies
whether or not case flagging is to occur. If set to
-1, no case flagging occurs. If set to 0, lower case
characters are flagged on type out. If set to +1,
upper case characters are flagged on type out.
View all mode A mode of window operation in which all characters have
a distinctive visible display, including characters
such as <TAB>, <CR>, and <LF>, which normally do not
display.
War and Peace mode
A mode of operation in which TECO outputs a large
informative paragraph of information automatically upon
encountering an error in a user's program. This
paragraph of information describes the error in
painstaking detail and tells the user how to recover.
This mode is entered by setting the help level to 3.
This mode is particularly useful to Novices and
particularly obnoxious to experts.
Window The portion of the text buffer that is currently being
displayed on the user's terminal or auxiliary display
device.
Window support
Assembly language code, built into TECO, that maintains
a window into the text buffer on the user's terminal or
auxiliary display device.
Yank protection
A feature of TECO wherein any Y, , or F_ command that
will potentially destroy valid data is aborted. This
mode is normally enabled and will cause any of the
aforementioned commands to abort with the ?YCA error
message if there is text in the text buffer and an
output file is open. This feature can be disabled by
turning off the 2's bit in the ED flag.
Standard TECO
Page 147
Index
INDEX TO TECO COMMANDS
AND SPECIAL CHARACTERS
NULL Discarded on input; Ignored in commands . 84
“A Output message to terminal . . . . . . . 44
“B Current date . . . . + + . + 0 4 « « « . 64
°C Stop execution 2... .. . + + + + + . 30, 37, 70
“D Set radix to decimal . . . . . . . . . . 61
“E Form Feed flag . . . . . e e ¢ « . « « . 64
"E<n> (Match char) Match ASCII code n . . . . . 56
^Е[] (Match char) Match one of list . . . . . 56
“EA (Match char) Match alphabetics . . . . . 55
“EB (Match char) Match separator char . . . . 55
“EC (Match char) Match Symbol Constituent . . 55
“ED (Match char) Match numerics . . . . . . . 55
“EGq (Match char) Match contents of Q-reg q . 55
“EL (Match char) Match line terminators . . . 55
“EMx (Match char) Match any number of x . . . 56
“EQq (String char) Use contents of QO-reg q . . 54
“ER (Match char) Match alphanumerics . . . . 56
“ES (Match char) Match non-null space/tab . . 56
“EUq (String char) Use ASCII code in Q-reg q . 55
“EV (Match char) Match lower case alphabetic 56
“EW (Match char) Match upper case alphabetic 56
“EX (Match char) Match any character . . . . 56
°F Contents of console switch register . . . 64
n°F Return terminal number of jobn . . . . . 64
“GG Kill command string . . . + . oe . oe . . 30
“G<sp> Retype current command line . . . . . . . 31
^С* Retype current command input . . . . . . 31
“H Current time of day . . . . . . . « . . . 64
BS Back up and type one line . . . . . . . . 32
TAB Insert tab and text . . . . . o. e . . . . 48
LF Line terminator; Ignored in commands . . 4, 26, 82
LF Advance and type one line . . . . . . . . 32
VT Line terminator; Not a TECO command . . . 26
FF Page terminator; Output Form Feed . . . . 4, 26
CR End input line; Ignored in commands . . . 4, 31, 82
^^ End of file flag . . . . oe +. . +. . . . . 64
“Nx (Match char) Match all but x . . . . . . 55
“0 set radix to octal .. ... ..... . 461
“o Kill terminal output . . . . . . . . . . 45
“P Not a TECO command. 2 + 2 2 + e . « . . 147
“0 Resume terminal output . . . . . . . . . 45
“Q Convert line arg into character arg . . . 99, 102
“Qx (String char) Use x literally . . . . . 54
“R Value of current radix . . . . . . . . . 61
n°R Set radix ton . . o. o. o e e e. .... 61
“Rx (String char) Use x literally . . . . . . 54
"Ss -(length) of last referenced string . . . 64
“Ss Suspend terminal output . . . . . . . . . 45
"Ss Save last command string . . . . o. . . . 101
^5 (Match char) Match separator char . . . . 55
°T ASCII value of next character typed . . . 64
n°T Output ASCII character of value n . . . . 44
“U Kill command line .. .... +... . . . 30
“Uq Put string into Q-register q . . . . . . 57
: “Uq Append string to Q-register q . . . . . . 57
n“Uq Put ASCII char "n" into Q-register q e. . 57
n: Ug Append ASCII char "n" to Q-register q . . 57
Vv Enable lower case conversion . . . . . . 85
“Vx (String char) Force x to lower case . . . 54
“Ww Enable upper case conversion . . . . . . 85
Standard TECO Page 148
Index
>
Wx (String char) Force x to upper case . . . 54
“X Search mode flag . . .« e e e o oo or. 19
“X (Match char) Match any character . . . . 55
Y Equivalent to ".+"S,." . . . e e e... 65
^ 2 Size of text in all Q-registers . . . . . 65
“2°2°Z Immediate exit from TECO . . . « e e e . 31
ESC String and command terminator . . . . . . 2, 30, 70, 84
^ [ String and command terminator . . . . . . 84
“\ Not a TECO command . . +. +. e + + + + + + 147
^] Not a TECO command . . +. +. e e o + + « . 147
“Tx ASCII value Of X . . oe + + + + + + + + . 65
^_ Ones complement (logical NOT) . . . . . . 60
SP Ignored in commands . « . +. e + + + +» o. 82
! Define label . . . e. e + + + + + + + « « 67
" Start conditional . . . +. + e + + + e o. 7
n"< Test for less than zero . . . ¢ e e +. +. . 72
n"= Test for equal to zero . . .« . e ¢ . e - 12
n"> Test for greater than zero . . . . . . . 72
n"A Test for alphabetic . . . . e e + + + « . 71
п"С Test for symbol constituent . . . . . . . 71
n"D Test for numeric . . + e e e el o e. e. 7
n"E Test for equal to zero . . . . « « « . . 7
n"F Test for false . . . e e e e e . . ... 71
n"G Test for greater than zero . . . .« . . . 72
n"L Test for less than zero . . . . e +. « . . 72
n"N Test for not equal to zero . . . . . « . 72
n"R Test for alphanumeric . « « e e +. +. + +. . 72
n”s Test for successful . . . . e e + + + + e 72
n"T Test for true . . . . e e + + + + + + + + 72
n"u Test for unsuccessful . . . . e e +. + + + 72
n"v Test for lower case . . . . e e + + + . . 12
n"w Test for upper case . . « e e e + + + + . 12
# Logical OR . . e e e o oe eo o o. + + . « AO
$ Separate TECO commands . . . « « « « « . 84
n$qg Add n to Q-register q and return result . 57
& Logical AND . . . +. + + + + + + + + + + . 60
' End conditional . . . +. + + + + + + e e e 7
( Expression grouping . . . . +. +. + + + +. , AO
) Expression grouping . . . +. . +. +. +. + + . 60
* Multiplication . . . e e e e e ee co « « 60
* q Save last command in Q-register q . . . . 32
+ Addition . . . e e e e els eo eo o... 60
’ Argument separator . . e « e e e . . . . 60
- Subtraction or negation . . . . e . . . . 60
. Current pointer position . . . . . e e . 63
/ Division . . + + + + + + + + + + + + « « 60
/ Type detailed explanation of error . . . 32
0-9 Digit . . . + + + + + + + + + + + + + + e 147
: Modify next command . . . +. + + + + + + , 25
; Exit iteration on search failure . . . . 68
n; Exit iteration if n is positive . . . . . 68
2; Exit iteration on search success . . . . 69
n:; Exit iteration if n is negative . . . . . 69
n< Iterate n times . . . e e + + + + + + + , 66
= Type in decimal . . . . e e + + + + + + « 61
== Type in octal . . . e. e e + + + + + + + + 61
=== Type in hexadecimal . . . . e + + + + + . 6
:= Type in decimal, no carriage return . . . 61
[== Type in octal, no carriage return . . . . 61
=== Type in hexadecimal, no carriage return . 61
> End iteration . . . e e e e + + + + + . . 66
? Toggle trace mode . . . e e + + + ooo. 83
? Type out command string in error . . .. 32
e Modify next text argument . . . . . . . . 24
Standard TECO
Index
Append to buffer . . . .
ASCII value of char in buffer
Append n lines to buffer
0 - beginning of buffer .
Advance n characters . .
Delete n characters . . .
Delete between m and n . . . .
Write Q-register q into a file
Search without yank protection . . .
Select secondary output stream . . .
Open input and output . . . . . . .
Close out (copy in to out and close)
Edit mode flag . . . . e s e o ooo
Close output file . . . . .« + + o
Close out and exit with command . . .
Execute operating system function . .
Help level flag . . . . + + + + + + +
Open indirect command file . . . . .
Set environment characteristics . . .
Return environment characteristics .
Kill output file .
Open log file . . .
Position magtape
Wildcard lookup .
Version of TECO . . . . + + + e.
Set TECO to function as version n .
Select secondary input stream . . . .
Read file into Q-register q . . .
Open input file . . . . + + . o.
Search verification flag . . . ©
Type out control flag . . . . e. . . o
Case flagging flag . ...e.eo.
Edit verify flag e. ...e.oo.
Open output file . . . . . ..
Close out and exit . . . . .
Read without yank protection . . . .
Zero output tape . . . o. eo.
Destructive search and replace . . .
Flow to end of conditional . . . . .
Flow to start of iteration . . .
Flow to end of iteration . . « o
Flow to ELSE part of conditional «
Search between locations m and n
Search, bounded by n lines . . . . .
Search and replace between m and n .
Search and replace over n lines
Search and delete string . . . . . .
Search and delete intervening text
Global string replace . . . . . « . oo
Replace last string . . . . . ©
Local string replace . . . . .
Get string from Q-register q into buffer
Get last filespec string into buffer
Get last search string into buffer .
Type Q-register q on terminal . . ...
Equivalent to "B,2" . . .
Insert text . . . e + + + + + + + + .
Insert ASCII character "n” ..
Move pointer to "n” . . ...
Kill n lines . . . +. + e eo e...
Delete between m and n . . .
Advance п lines . . . + + + + + ooo
Execute string in Q-register q .
Global search . . . . .
Page 149
100
38
38
Standard TECO
Index
no
nP
п, ПР
nPW
m, nPW
m, ns
Go to label . . . . . . e e.
Computed goto . . . . . e e . ©
Advance n pages . . . . .
Write out chars m ton . . . .
Write buffer n times . . . .
Write out chars m ton . . .
Number in Q-register q . . . . .
Size of text in Q-register q . . .
Back up n characters . . . . . . .
Local search . . . . . . . e... .
Search for nth occurrence within m chars
Compare string . . . . e. e.
Type n lines . . . . . . . . .
Type fromm ton . . . . .
Put number n into O-register q ое . o
Type n current lines . . . . . . .
Type m before & n after current line .
Scope "WATCH" . +. + 2 + + e...
Return scope characteristics . . . . .
Set scope characteristics . . . . . . .
Put n lines into Q-register q . . . .
Put characters m to n into Q-register q
Append n lines to Q-register q . . . .
Append characters m to n into Q-register q
Read into buffer . . . . . . . . . . .
End of buffer value . . . . . . .
Q-register push . . . . . . . .
Value of digit string in buffer e . . +
Convert n to digits in buffer . . . . .
Q-register POP . . . . ee e. e...
Global search without output . . .
Not a TECO command . . . . « . . .
Treated the same as upper case A-2 . .
Not a TECO command . . °c o À
Start ELSE part of conditional e + eo
Not a TECO command . . . . . .
Not a TECO command . . . e eo eo >
Delete last character typed in . . .
63
Page 150
Please cut along this line.
PDP-11
TECO User's Guide
DEC-11-UTECA-B-D
READER'S COMMENTS
NOTE: This form is for document comments only. DIGITAL will
use comments submitted on this form at the company's
discretion.
Did you find this manual understandable, usable, and well-organized?
Please make suggestions for improvement.
Did you find errors in this manual? If so, specify the error and the
page number.
Please indicate the type of reader that you most nearly represent.
Assembly language programmer
Higher-level language programmer
Occasional programmer (experienced)
User with little programming experience
Student programmer
Other (please specify)
DOCUOUO
Name Date
Organization
Street
City State Zip Code
or
Country
— — — — DoNotTear-Fold Hereand Tape — — — — — — — — — — — — — — — — — — — |
|
No Postage |
Necessary
if Mailed in tr |
United State
BUSINESS REPLY MAIL
FIRST CLASS PERMIT NO.33 MAYNARD MASS.
POSTAGE WILL BE PAID BY ADDRESSEEF
TECO SIG
c/o DECUS, MR2-3/E55
One Iron Way
Marlboro, MA 01752
— — — Do Not Tear - Fold Here = = = = = — — — — — — — — — — — — — ——
Cut Alosg Dotted Line
digital equipment corporation
Printed in U.S.A.
">
/
ডাউনলোড
শুধু একটি বন্ধুত্বপূর্ণ অনুস্মারক। আপনি এখানে সরাসরি নথিটি দেখতে পারেন। তবে সবচেয়ে গুরুত্বপূর্ণ, আমাদের এআই ইতিমধ্যে এটি পড়েছে। এটি জটিল বিষয়গুলিকে সহজ শর্তে ব্যাখ্যা করতে পারে, যেকোনো ভাষায় আপনার প্রশ্নের উত্তর দিতে পারে এবং এমনকি দীর্ঘতম বা সবচেয়ে জটিল নথিগুলিকে দ্রুত নেভিগেট করতে আপনাকে সহায়তা করতে পারে।
বিজ্ঞাপন