teacl/doc/teco-manual.txt

11105 lines
487 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

Standard TECO
TEXT EDITOR AND CORRECTOR FOR THE
VAX-11, PDP-11, PDP-10, and PDP-8
USER'S GUIDE AND LANGUAGE REFERENCE MANUAL
May 1985 Edition
TECO-11 VERSION 40
TECO-10 VERSION 3
TECO-8 VERSION 7
May, 1985
Standard TECO
The information in this document is subject to change without
notice and should not be construed as a commitment by Digital
Equipment Corporation or by DECUS.
Neither Digital Equipment Corporation, DECUS, nor the authors
assume any responsibility for the use or reliability of this
document or the described software.
Copyright (C) 1979, 1985 TECO SIG
General permission to copy or modify, but not
for profit, is hereby granted, provided that
the above copyright notice is included and
reference made to the fact that reproduction
privileges were granted by the TECO SIG.
Standard TECO PAGE i
CONTENTS
INTRODUCTION 1
PREFACE TO THE MAY 1985 EDITION 4
CHAPTER 1 BASICS OF TECO 7
1.1 USING TECO 7
1.2 DATA STRUCTURE FUNDAMENTALS 9
1.3 FILE SELECTION COMMANDS 10
1.3.1 Simplified File Selection 10
1.3.2 Input File Specification (ER command) 11
1.3.3 Output File Specification (EW command) 12
1.3.4 Closing Files (EX command) 13
1.4 INPUT AND OUTPUT COMMANDS 14
1.5 POINTER POSITIONING COMMANDS 15
1.6 TYPE OUT COMMANDS 16
1.6.1 Immediate Inspection Commands 17
1.7 TEXT MODIFICATION COMMANDS 18
1.8 SEARCH COMMANDS 19
1.9 SAMPLE EDITING JOB 20
INTERLUDE 23
CHAPTER 2 INVOKING TECO 24
2.1 RUNNING TECO 24
2.2 CREATING A NEW FILE 24
2.3 EDITING AN EXISTING FILE 24
2.4 SWITCHES ON TECO AND MAKE COMMANDS 25
2.5 INVOKING A TECO PROGRAM 26
2.6 USER INITIALIZATION 27
CHAPTER 3 CONVENTIONS AND STRUCTURES 29
3.1 TECO CHARACTER SET 29
3.2 TECO COMMAND FORMAT 30
3.2.1 Numeric Arguments 31
3.2.2 Text Arguments 32
3.2.3 Colon Modifiers 33
3.3 DATA STRUCTURES 34
3.3.1 Text Buffer 35
3.3.2 Q-registers 36
3.3.3 Q-register Push-down List 37
3.3.4 Numeric Values and Flags 37
Standard TECO PAGE ii
CHAPTER 4 COMMAND STRING EDITING 38
4.1 Immediate Action Editing Characters 38
4.2 Immediate Action Commands 41
4.3 Introduction to Macros 43
4.4 Immediate ESCAPE-Sequence Commands 44
4.5 Operating System Character Filters 46
CHAPTER 5 COMMAND DESCRIPTIONS 48
5.1 FILE SPECIFICATION COMMANDS 49
5.1.1 File Opening Commands 49
5.1.2 File Specification Switches 51
5.1.3 File Close and Exit Commands 51
5.1.4 Secondary Stream Commands 54
5.1.5 Wildcard Commands 56
5.1.6 Direct I/O to Q-Registers 56
5.2 PAGE MANIPULATION COMMANDS 58
5.3 BUFFER POINTER MANIPULATION COMMANDS 61
5.4 TEXT TYPE OUT COMMANDS 63
5.5 DELETION COMMANDS 66
5.6 INSERTION COMMANDS 68
5.7 SEARCH COMMANDS 70
5.8 SEARCH ARGUMENTS 76
5.9 Q-REGISTER MANIPULATION 80
5.10 ARITHMETIC AND EXPRESSIONS 86
5.11 SPECIAL NUMERIC VALUES 89
5.12 COMMAND LOOPS 94
5.13 BRANCHING COMMANDS 95
5.14 CONDITIONAL EXECUTION COMMANDS 101
5.15 RETRIEVING ENVIRONMENT CHARACTERISTICS 103
5.16 MODE CONTROL FLAGS 105
5.17 SCOPE COMMANDS 113
5.17.1 Video Terminal Scope Commands 113
5.17.2 Refresh Scope Commands 116
5.18 PROGRAMMING AIDS 117
5.18.1 Text Formatting 117
5.18.2 Comments 117
5.18.3 Messages 118
5.18.4 Tracing 119
5.18.5 Convenience Characters 119
5.18.6 Memory Expansion 120
5.18.7 Case Control 121
5.19 MANIPULATING LARGE PAGES 122
5.20 TECHNIQUES AND EXAMPLES 123
Standard TECO PAGE iii
APPENDIX A ASCII CHARACTER SET 128
APPENDIX B ERROR MESSAGES 137
APPENDIX C INCOMPATIBLE, OBSOLETE, AND SYSTEM-SPECIFIC
COMMANDS 145
C.1 SPECIFIC FEATURES OF TECO-11 145
C.1.1 TECO Commands 145
C.1.2 String Build Constructs 147
C.2 SPECIFIC FEATURES OF RT-11 148
C.3 SPECIFIC FEATURES OF RSTS/E 148
C.4 SPECIFIC FEATURES OF RSX-11/M, RSX-11/D,
and IAS 149
C.5 SPECIFIC FEATURES OF VAX/VMS 149
C.6 SPECIFIC FEATURES OF OS/8 149
C.7 SPECIFIC FEATURES OF TOPS-10 150
APPENDIX D RT-11 OPERATING CHARACTERISTICS 153
APPENDIX E RSTS/E OPERATING CHARACTERISTICS 157
APPENDIX F RSX-11 OPERATING CHARACTERISTICS 160
APPENDIX G VAX/VMS OPERATING CHARACTERISTICS 167
APPENDIX H OS/8 OPERATING CHARACTERISTICS 175
APPENDIX I TOPS-10 OPERATING CHARACTERISTICS 187
APPENDIX J BASIC-PLUS/BASIC-PLUS-2 HANDLING 194
GLOSSARY 197
INDEX 214
Standard TECO PAGE 1
Introduction
INTRODUCTION
TECO is a powerful text editing language available under most
DIGITAL operating systems. TECO may be used to edit any form of
ASCII text: program sources, command procedures, or manuscripts,
for example. TECO is a character-oriented editor, and also
offers a number of facilities for dealing with lines of text.
You can use TECO interactively, issuing commands which are to be
executed as soon as they are typed in. (TECO is an interpreter.)
In this mode, TECO can be used for tasks ranging from very simple
to quite complex.
You can write sequences of commands called macros, which can be
stored and then invoked by short commands or even single
keystrokes. You can write sequences of commands to be run as
TECO programs, and store them on disk for execution at
convenience.
TECO can be used as an implementation language, as it provides
powerful primitive functions for text processing, screen
handling, and keyboard management. (The VTEDIT program included
with some TECO distributions is an example of a full keypad
editor developed in the TECO language.)
TECO correctly handles most sequential ASCII formats supported by
the operating systems upon which it runs. It provides flexible
pattern-matching constructs for text searching, file wildcarding,
and special support for editing BASIC-PLUS/BASIC-PLUS-2 source
programs. A split screen scrolling feature allows command
dialogue to share the screen with an automatically-updated window
into the editing buffer.
TECO's syntax is terse; commands are designed to minimize
keystrokes. Also, the versatility of TECO "in all its glory"
makes it complex. However, just a few commands suffice to get
real work done, and a novice TECO user can begin creating and
editing text files after only a few hours of instruction. More
powerful features can be learned one at a time, and at leisure.
This manual presents TECO in two stages. The first part (Chapter
1) contains basic information and introduces that set of "just a
few" commands.
Subsequent chapters describe the full TECO command set, including
a review of the those 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
Standard TECO PAGE 2
Introduction
format which will quickly become apparent to the beginning user.
There is, however, an extensive example at the end of Chapter 1
which employs most of the commands introduced up to that point.
Students of TECO should experiment with each command as it is
introduced, and then duplicate the examples on their computer.
(If a video terminal which supports split-screen scrolling such
as a member of the VT100 or VT200 families is available and the
TECO being used supports it, seeing both your commands and their
effects in the text buffer simultaneously can make learning
easier. A command such as "5,7:W" allows 5 lines for command
dialogue, while "watching" the text buffer on the remainder of
the screen. The 7:W command is described in Table 5-17B.)
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.
Notation
The following notation is used in this manual to represent
special characters:
Notation ASCII code (octal) Name
<NULL> 0 Null
<BS> 10 Backspace
<TAB> 11 Tab
<LF> 12 Line Feed
<VT> 13 Vertical Tab
<FF> 14 Form Feed
<CR> 15 Carriage Return
<ESCAPE> or $ 33 ESCape or Altmode
<CTRL/x> - Control-x
<space> 40 Space
<DELETE> 177 Delete or Rubout
<DELIM> or ` - See below
<DELIM> is a character used to signify the end of text strings
and TECO commands typed at the console. (TECO presumes that you
may need to deal with carriage return and line feed as ordinary
characters in ASCII text, so another character must be used as
TECO's text-string and command-string delimiter.)
When a command string is being executed, TECO looks for the
ESCape character (octal 033) as its delimiter. Some newer
terminals, however, no longer possess an ESCape key. Late-model
TECO's are capable of recognizing a surrogate (some other,
user-specified) character as signifying an ESCape when typed at
the console. Such a character echos as accent grave -- you see
Standard TECO PAGE 3
Introduction
an ` character, and TECO receives an ESCape character. (Note
that TECO programs, command files, and macros cannot use the
surrogate, since it is translated to ESCape only when you type it
at the console.) For details on choosing a surrogate for ESCape,
see the EE flag or the 8192 ET bit (section 5.16).
Throughout this manual, the term <DELIM> is used to mean whatever
character you type as a text-string or command-string delimiter.
The ` character is used throughout to mean whichever character is
echoed for a keystroke which passes an ESCape to TECO; if no
ESCape surrogate is active, you will see a $ instead.
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 4
Preface to the May 1985 edition
PREFACE TO THE MAY 1985 EDITION
Trading in the ESCape key
In the beginning, terminals had ESCape keys. (Go back far
enough and the device TT: stands for might actually have
existed on the system, too.) Programs wanting to treat <CR>
& Co. as data needed another character to serve as command
delimiter, and ESCape looked available.
Times change. Welcome to ESCape sequences, to
cursor-control and function keys. Farewell to $$.
See the Introduction for the notation used in this manual.
Hello ``.
Changes to the manual
This edition of the manual incorporates new material
pertinent to the enhancements to TECO-11 between Version 36
and Version 40 (see below).
Although this manual is still not intended to be a tutorial,
some "how to learn" suggestions (such as use of split-screen
scrolling) were added, as were indications of how TECO can
be used to build custom-designed editors.
Numerous smaller changes were also made: clarifications,
new index and glossary entries, additional explanatory
material and cross referrals, correction of old typographic
errors, and (no doubt) addition of new ones.
Standard TECO PAGE 5
Preface to the May 1985 edition
From Version 36 to Version 40 - affected section numbers
Manual organization/additions --
Introduction to Macros (new section), 4.3
Split-screen scrolling, 5.17
"Immediate action commands" renamed
to "immediate inspection commands", 1,6.1
"Immediate action editing characters" (new name), 4.1
VAX/VMS filespec qualifiers, format/attribute table, G.11
Eight-bit ASCII character set table, Appendix A
Handling for BASIC-PLUS-x source files, Appendix J
"Significant" software changes --
ESCape surrogate - EE flag, 8192 ET bit, 5.16
Reverse paging (-P, et al, VAX/VMS only), 5.2
Reverse searching (-N, et al, VAX/VMS only), 5.7
Local Q-registers, 3.3.2
Local Q-register manipulation, 5.9
Immediate ESCape-sequence commands, 4.4
:^T, read/decode a keystroke, 5.11
32 ED bit controls immediate ESC-seq commands, 5.16
Acceptance and handling of 8-bit characters, [throughout]
Typeout of 8-bit data, and the 4096 ET bit, 5.16
n:^T, one-shot binary-mode character typeout, 5.4
TECO HELP facilities on VAX/VMS, G.13
"Minor" software changes --
^W as immediate mode command (screen re-paint), 4.2
<DELIM> character as immediate inspection command, 1.6.1,
4.2
Null tag allowed in computed GOTO, 5.13
Standard TECO PAGE 6
Preface to the May 1985 edition
nFRtext` command (replace n characters), 5.6
m,nFRtext` command (replace from m to n), 5.6
^E (form feed flag) can now be user-set, 5.11
Setting 1:W changes width and O/S characteristic, 5.17
WRAP/NOWRAP set by 256 ET bit on VAX/VMS, 5.16
128 ED bit inhibits auto-refresh in split scrolling, 5.16
Search matching with diacritical marks, 5.16
New 0:W codes for VT102 and GIGI scope types, 5.17
VAX/VMS handling of ^T (disabled when), 4.5
Standard TECO PAGE 7
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, OS/8, TOPS-10, and TOPS-20 R TECO
For RSTS/E RUN TECO$:TECO -or-
EDIT/TECO
For RSX-11 RUN $TEC
For VAX/VMS RUN SYS$SYSTEM: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. Each
text argument is terminated by a special character (usually a
<DELIM> character, which TECO hears as an ESCape - see
Introduction). This 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 <DELIM>
characters. <DELIM> may be any character you select (if your
TECO and operating system support user-selectable ESCape
surrogates - see sections on ET and EE flags). When you type the
character you have designated as <DELIM>, TECO receives an ESCape
character, and an ` (accent grave) is echoed. (If you are not
using an ESCape surrogate -- that is, you are actually pressing
an ESCape key -- a dollar sign is echoed.) The accent grave
character is used in examples throughout this manual to represent
typed <DELIM>s. Note that the carriage return character has no
special significance to TECO; only the <DELIM><DELIM> forces
execution of the command string.
Standard TECO PAGE 8
Using TECO
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:
?XXX 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:
Character Form Displayed
<TAB> <TAB>
<LF> <LF>
<VT> <VT>
<FF> <FF>
<CR> <CR>
<ESCAPE> <ESC>
<CTRL/x> <^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 9
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. In the VAX/VMS implementation, it is
possible to "back up" as well as page forward in the file being
edited. In other implementations, 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 10
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 file:
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 11
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 the text
string supplied in the ER command (and which, like any text
argument, is terminated by a <DELIM> character). The ER command
causes TECO to open the specified file or 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
ERfilespec` General form of the ER command where
"filespec" is the designation of the input
file. The command is terminated by a <DELIM>
character.
ERPR:` Prepare to read an input file from the paper
tape reader.
ERPROG.MAC` Prepare to read input file PROG.MAC from the
system's default device.
ERDX1:PROG.FOR` Prepare to read input file PROG.FOR from
DX1:.
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 12
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
the text string supplied in an EW command. 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 specified, the system's default
device is assumed. The following examples illustrate use of the
EW command.
COMMAND FUNCTION
EWfilespec` General form of the EW command where
"filespec" is the designation of the output
file. The command is terminated by a <DELIM>
character.
EWSYS:TEXT.LST` Prepare to write output file TEXT.LST on
SYS:.
EWPROG` Prepare to write output file PROG on the
system's default device.
ERDX1:INPUT.MAC`EWOUTPUT.MAC``
Open an input file INPUT.MAC to be found on
DX1: and open an output file named
OUTPUT.MAC. The double <DELIM> (echoed as
``) terminates the command string and causes
the string to be executed. Note that the
<DELIM> which terminates the EW command may
be one of the two <DELIM>s 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 13
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.MAC`EWCOPY.MAC`EX``
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 14
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. 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 15
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 16
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.
V Type the current line. Equivalent to the sequence "0TT".
Standard TECO PAGE 17
Type Out Commands
1.6.1 Immediate Inspection Commands [not in TECO-10]
In addition, there are available as a convenience abbreviations
of two frequently used type out commands. Each one consists of a
single character, and must be the very first character typed
after TECO prints its prompting asterisk. Each of these commands
takes effect immediately; there is no need to follow any of
these commands by any <DELIM> character. For this reason, these
commands are known as "immediate" commands (see Chapter 4 for
more information on immediate commands).
COMMAND FUNCTION
<LF> Immediately execute an 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. On
terminals without a line feed key, typing <CTRL/J> has
the same effect. (See also the next command.)
<DELIM> Immediately execute an LT command. (Action identical to
that of the command above.) This command is available
when an ESCape surrogate is active, and causes TECO to
move the pointer ahead one line and then type out the new
line when a <DELIM> is the first thing typed after TECO's
prompting asterisk.
[RSTS/E only]
<BS> Immediately execute a -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 18
Text Modification Commands
1.7 TEXT MODIFICATION COMMANDS
You can insert or delete text from the buffer using the following
commands:
COMMAND FUNCTION
Itext` Where "text" is a string of ASCII characters terminated
by a <DELIM> character. 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. A 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 19
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 a <DELIM> character. 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. On
VAX/VMS, you can "back up" into the file and continue
editing, although doing so uses TECO features beyond
those introduced in this chapter. Using only basic
features (or a TECO implementation other than VAX/VMS),
you must 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 20
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:FILE1.TXT``
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.
!
! SINCERELY,
!
!
!
!
! ``
3< *-20LSETTS`I 02150``
! *STION`2C13DIREGARDING``
4< *SGUIDE`-5DIMANUAL``
! *SELY`0T``
! SINCERELY*0KIVERY TRULY YOURS``
! *HT``
! MR. JOHN P. JONES
! COMPUTER ELECTRONICS CORPORATION
! BOSTON, MASSACHUSETTS 02150
!
! DEAR MR. JONES:
!
! 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,
!
!
Standard TECO PAGE 21
Sample Editing Job
!
!
!
5< *EX``
! (TECO is rerun, operating system dependent)
! *ERDT1:FILE1.TXT`EWLP:``
6< *Y5KIMR. JAMES B. SMITH
! DATEK ASSOCIATES, INC.
! 122 MAIN STREET WEST
! AUSTIN, TEXAS
!
! DEAR MR. SMITH:
! ``
! *HT``
! 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,
!
!
!
!
!
! *EX``
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
"FILE1.TXT" on DT1. There is no input file. Upon receipt of the
double <DELIM> (echoed as ``), 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 <DELIM>. 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
Standard TECO PAGE 22
Sample Editing Job
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 SETTS` 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 0T to determine that the pointer was correctly
positioned between the Y and the comma which follows it, and
typed 0K 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.
5) The command string EX`` caused the contents of the buffer to
be written onto the output file and the output file to be closed.
The user then reentered TECO and reopened the file "FILE1.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
"FILE1.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 "FILE1.TXT" on DT1.
Standard TECO PAGE 23
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 40, 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 24
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
EWfilespec`` 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).
Standard TECO PAGE 25
Editing an Existing File
The TECO command invokes TECO and performs an effective
EBfilespec`Y`` 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. If
TECO is invoked with the command "TECO", with no filespec, it
will open the file edited last (i.e., the remembered filespec).
2.4 SWITCHES ON TECO and MAKE COMMANDS
The TECO and MAKE commands can take switches (qualifiers) of the
form /SWITCH. These switches are described below.
SWITCHES ON COMMAND LINES
System Switch Meaning
RSTS/E /SIZE:n start with nK word editing area
/SIZE:+n start with nK additional words of
editing area
RSTS/E
RSX-11
VAX/VMS /INSPECT Do not create an output file
/FIND Initially position to the position
marker left in the file by the VTEDIT
macro and delete the marker.
/NOCREATE Do not automatically create a new file
if the file specified by the TECO
command does not exist.
/NOINI Do not use TECO.INI to perform
initialization
/NOMEMORY Do not remember the argument to the
invocation command.
/SCROLL Automatically enter split screen
scrolling mode, using 1/4 of the
screen's lines as the scrolling area
(available on VT100 terminals only).
/VTEDIT 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.
Standard TECO PAGE 26
Switches on TECO and MAKE Commands
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.
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`` 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
Idata`EIfilespec``
command. Under TECO-11, a space, tab, or a slash (/) may be used
instead of the comma.
Standard TECO PAGE 27
Invoking a TECO Program
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:
?1ED?
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.
Standard TECO PAGE 28
User Initialization
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:
Value&1 Automatically load the VTEDIT macro (as if
the user had typed TECO/VTEDIT).
Value&4 Inhibit use of the memory file (as if the
user had typed TECO/NOMEMORY).
Value&16 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&128 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 29
Conventions and Structures
CHAPTER 3
CONVENTIONS AND STRUCTURES
3.1 TECO CHARACTER SET
TECO accepts the full 8-bit ASCII character set. (In other than
TECO-11, characters typed at the console have their 8th bit
trimmed off. If 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).
For more information on TECO's handling of 8-bit characters
(including on terminals capable of displaying only 7-bit data),
see the description of the 4096 ET bit, in section 5.16.
When TECO is maintaining a window into the text buffer, a special
facility (called "SEEALL" or "View All" mode) is available to
explicitly show certain characters which normally do not print,
such as <CR>, <FF>, and <TAB>. This mode is controlled by the
3:W flag, which is described in section 5.17.
TECO command strings may be entered using upper case characters
(as shown throughout this manual) or lower case characters. For
example, the commands MQ, mQ, Mq, and mq are executed
identically. 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.
Standard TECO PAGE 30
Conventions and Structures
3.2 TECO COMMAND FORMAT
Each TECO commands consists of one or two characters.
TECO commands may be strung together (concatenated) into a
command string. If a command in the string returns numeric
value(s), it or they will be passed to the following command.
NOTE
Most commands which return a value are expressly designed
for that purpose. A few commands (such as n%q and m,n:W,
q.v.) can be used to cause an action, and also return a
value. Good programming practice suggests following such
a command with <DELIM> or caret-[ if the returned value
is not intended to affect the following command.
A TECO command may be preceded by one or two numeric arguments.
Some TECO commands may be followed by a text argument. Many TECO
commands can be modified by "@" (see section 3.2.2) and/or by ":"
(see section 3.2.3).
When TECO commands are concatenated into a command string, no
delimiter is necessary between commands except for one necessary
to delimit a text argument or one as suggested in the note above.
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 <DELIM> 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. (Some
TECO commands cause branching or looping, so altering the order
of execution.)
TECO's <DELIM> character is (internally) the ESCape (octal 33).
Because newer terminals use the ESCape character as part of
control sequences (and some terminals no longer even possess an
ESCape key), provision is made for you to designate a key on your
terminal to cause an ESCape to be sent to TECO -- that is, to act
as an ESCape surrogate. (See the EE flag and the 8192 ET bit,
section 5.16.) Because the key you press to delimit text strings
and TECO commands may be the ESCape key or may be the surrogate,
this manual uses the indirect term <DELIM> to mean whichever one
you are using. When an ESCape surrogate is active, the character
you see is `. (When no surrogate is active, you see $.) This
manual uses the ` character.
Standard TECO PAGE 31
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
TECO-10 -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, C, R, 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, K, 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. When
n is omitted, n = 1 is assumed.
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
Standard TECO PAGE 32
Conventions and Structures
command says the order of these two arguments is
important, they may be entered in either order.
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
C 1 Advance 1 character
R 1 Back over 1 character
L 1 Advance 1 line
J 0 Jump to start of buffer
V 1 View 1 line
D 1 Delete 1 character
K 1 Kill 1 line
S, N, etc. 1 Search for first occurrence
% 1 Increment Q-register by 1
X 1 Extract one line
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 a <DELIM> character
(or in the case of ! and ^A commands, by the command character).
The string of ASCII characters may not include a <DELIM>, 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"
^UAHELLO` Insert the text "HELLO" into
Q-register A
OBEGIN` Branch to the tag specified by
the string "BEGIN"
Some TECO commands require two text arguments. Each argument
must be followed by a <DELIM> character, as follows:
FSabc`def` Replace string "abc" by "def"
Standard TECO PAGE 33
Conventions and Structures
You can include a <DELIM> 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:
@ER5TEST.FOR5 Open the file "TEST.FOR" for
input. The delimiter used is
"5"
@^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 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> (that is, in its single-keystroke
form).
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 either order.
Standard TECO PAGE 34
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 by either
a form feed (octal 14) or
the end of the given character string
Standard TECO PAGE 35
Conventions and Structures
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 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 O O B A R
| | | | | | |
0 1 2 3 4 5 6
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).
Standard TECO PAGE 36
Conventions and Structures
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 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. In
its numeric storage area, each Q-register can store one signed
integer. In its text storage area, each Q-register can store an
ASCII character string (which can be any text, including the
important case of a TECO command string).
There are global Q-registers and (in TECO-11) local Q-registers.
In every TECO, there are 36 global Q-registers, each of which has
a one-character name: A through Z and 0 through 9. The global
Q-registers are available to all macro levels, including
"outside" macros altogether (that is, at prompt level).
In TECO-11, there are additionally 36 local Q-registers, each of
which has a two-character name: .A through .Z and .0 through .9.
Effectively, there is a complete and unique set of local
Q-registers available to each and every macro level, including
prompt level. TECO automatically saves and restores a given
macro level's local Q-registers around execution of a nested
(lower level) macro. When a macro is invoked via an Mq command
(where the command is not colon-modified, and q is a global
Q-register), the current set of local Q-registers is saved and a
new set of local Q-registers created. When the macro exits, its
local Q-registers are destroyed and those of the calling macro
level are restored. (If a fatal error occurs and TECO goes back
to prompt level, local Q-registers from all macro levels are
destroyed and prompt level's set is restored.)
(A new set of local Q-registers is not created when the command
is colon-modified, as in :MA, or when the invoked macro itself
resides in a local Q-register, as in M.A -- see Table 5-9C.)
Standard TECO PAGE 37
Conventions and Structures
A local Q-register name can be used in any command that takes a
Q-register name.
Various TECO commands allow the storing and retrieving of numeric
values from the numeric storage areas of the Q-registers. Other
TECO commands allow the storage and retrieval of strings from the
text storage areas of the Q-registers.
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 (the [ command)
and restored (the ] command). The command sequence [A ]B
replicates the text string and numeric value from Q-register A
into Q-register B. (Note that in TECO-11, macros can be written
to use local Q-registers, avoiding the need to save and restore
Q-registers via the pushdown list.)
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 38
Command String Editing
CHAPTER 4
COMMAND STRING EDITING
4.1 Immediate Action Editing Characters
While you are typing command strings at a terminal, TECO
considers certain ASCII characters to have special meaning. Most
of the special characters cause TECO to perform a specified
function immediately, without waiting for the double <DELIM>
which normally be required to terminate a command string.
Immediate action editing characters may be entered at any point
in a command string - even in the middle of a command or text
argument.
Many immediate action editing characters, such as <DELETE> (which
deletes the immediately preceding character), cannot be used as
regular TECO commands. For instance, if you enter a <DELETE>
into a command string which is to be later executed as a macro,
the <DELETE> will not delete a character as part the execution of
the macro.
Some characters, like <CTRL/U>, are both regular TECO commands
and immediate action commands. The command string ^Uqtext`
enters the specified text into Q-register q. However, <CTRL/U>
typed while entering a command string is an immediate action
editing character which deletes the current line. Thus you
cannot type a <CTRL/U> (or any similar sequence) 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
(^Uqtext`).
Control characters used as immediate action editing characters
must be entered using the CONTROL key; they will not be
recognized if entered in their caret or up-arrow form.
Table 4-1 lists the immediate action editing characters and
explains their functions.
Standard TECO PAGE 39
Command String Editing
TABLE 4-1: IMMEDIATE ACTION EDITING CHARACTERS
These characters take immediate effect and are used to edit a
command string as it is being entered:
CHARACTER EXPLANATION
<DELIM><DELIM>
The double <DELIM> character sequence tells TECO
to begin execution of the command string just
typed in. It inserts two <ESCAPE>s into the
command string. (<DELIM> may be generated by
pressing a key designated by the user as an
"ESCape surrogate" or by pressing an actual ESCape
key. In the former case, `` is echoed; if no
ESCape surrogate has been designated, $$ is
echoed. See the EE flag and the 8192 ET bit,
section 5.16, for more information.)
The two <DELIM>s must be typed successively. If
any other character is typed in between the two
<DELIM>s (even if subsequently DELETEd), then the
two <DELIM>s might be treated simply as two
<DELIM>s to be entered into the command string
rather than as an immediate action command.
If you need to enter two <DELIM>s 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
<DELIM><SPACE><DELETE><DELIM> and then continue
entering the remainder of your command string.
A single <DELIM> character can also be an
immediate action command (when typed immediately
after TECO's prompting asterisk, see section 4.2).
Elsewhere, a single <DELIM> 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
Standard TECO PAGE 40
Command String Editing
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 ^C (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.
<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/Z><CTRL/Z><CTRL/Z>
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 41
Command String Editing
4.2 Immediate Action Commands
TABLE 4-2: IMMEDIATE ACTION COMMANDS
The following commands take effect if (and only if) they are
typed as the very first keystroke(s) after TECO issues its
asterisk prompt.
The <LF>, <DELIM>, and <BS> commands are also described in
Chapter 1, where they are introduced as "immediate inspection
commands".
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. (On VAX/VMS, a
HELP command is also available. See section
G.13.)
[In TECO-11, implemented only on VAX/VMS]
<LF> Typing this immediate action command, line feed,
as the first keystroke after TECO's prompt causes
TECO to immediately execute an 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]
<DELIM> Typing this immediate action command, <DELIM>, is
synonymous with typing the <LF> immediate action
command (described above). This command is
available on TECOs offering the ESCAPE surrogate.
[TECO-11 only]
<BS> Typing this immediate action command, backspace,
(as the first keystroke after TECO's prompt)
causes TECO to immediately execute a -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]
^W Typing this immediate action command, <CTRL/W>, as
Standard TECO PAGE 42
Command String Editing
the first keystroke after TECO's prompt when
split-screen scrolling is active causes TECO to
re-paint the buffer display portion of the screen.
(Split-screen scrolling is active when 7:W is
non-zero.) This command is useful if the display
has been "confused" by characters from a broadcast
message or type-ahead. It is also useful in
conjunction with ED's 128 bit (which inhibits all
automatic scroll display updating).
[TECO-11 only]
*q When an asterisk followed immediately by a
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
<DELIM><DELIM>.]
Standard TECO PAGE 43
Command String Editing
4.3 Introduction to Macros
One of TECO's powerful features is the ability to execute ASCII
text stored in a Q-register as a command string. This is called
the "macro" facility, and a command string so stored and executed
is called a "macro".
A Q-register may be loaded with a macro by any of several means:
directly from the console (via the ^Uq command), by extraction
from the text buffer (via the X command), or by these or other
Q-register loading commands contained in an indirect file or even
in another macro.
Particularly handy is the "*" immediate action command, discussed
in a preceding section. When you type this command as the first
character following TECO's asterisk prompt, whatever immediately
preceding command you just typed at the console is saved in a
Q-register. You can then use that command again (and repeatedly)
by using the Mq command.
You invoke a macro by using the Mq command, where "q" is the name
of the Q-register in which the macro text has been stored.
A related facility is that of immediate ESCAPE-sequence commands,
which is discussed in the following section.
Standard TECO PAGE 44
Command String Editing
4.4 Immediate ESCAPE-Sequence Commands [TECO-11 only]
Certain keys on many newer terminals generate ESCape sequences.
TECO provides a facility by which you can cause the pressing of
one of these keys at the prompting asterisk to be interpreted as
an immediate command. When this facility is enabled, a key such
as one of the cursor control keys can cause TECO to immediately
execute commands (previously stored as a macro). The single
keystroke suffices; no <DELIM><DELIM> is needed.
The 32 bit in the ED flag enables immedate ESCape-sequence
commands. When ED's 32 bit is non-zero, and the first character
TECO receives after its * prompt is ESCape, TECO will
automatically read further characters and attempt to decode an
ESCape sequence. The decoded ESCape sequence is resolved into a
pair of numeric values, which are then passed to the macro
residing in global Q-register A.
The two numeric values are a type code and a value code. They
are passed to the macro in QA by an effective <type>,<value>MA``.
The macro in QA can retrieve them by code such as:
UA ! Save the <value> code in QA !
@O!T0,T1,T2,T3! ! Dispatch on <type> code !
!T0! ! Type 0 codes come here !
QA@O!V0,V1,V2...
The <type> and <value> codes are as follows.
Type 0 - ESCape followed by a control character
The <value> code is the control character's code (0 - 31.)
Type 1 - ESCape followed by a letter (e.g., ESC A), -or-
ESCape followed by [ then a letter (e.g., ESC [ A), -or-
CSI followed by a letter (e.g., CSI A), -or-
ESCape, O, then an uppercase letter (e.g., ESC O A)
The <value> code is the letter's ASCII value,
trimmed to 5 bits (that is, a value of 0 through 31)
Common keys of <type> 1 are:
Up arrow <type> 1 <value> 1
Down arrow <type> 1 <value> 2
Left arrow <type> 1 <value> 4
Right arrow <type> 1 <value> 3
PF1 <type> 1 <value> 16
PF2 <type> 1 <value> 17
PF3 <type> 1 <value> 18
PF4 <type> 1 <value> 19
ENTER <type> 1 <value> 13
Standard TECO PAGE 45
Command String Editing
Type 2 - ESCape followed by ? then a letter (e.g., ESC ? p), -or-
ESCape, O, then an lowercase letter (e.g., ESC O p)
The <value> code is the letter's ASCII value,
trimmed to 5 bits (that is, a value of 0 through 31)
Common keys of <type> 2 are:
Keypad , <type> 2 <value> 12
Keypad - <type> 2 <value> 13
Keypad . <type> 2 <value> 14
Keypad 0 <type> 2 <value> 16
Keypad 1 <type> 2 <value> 17
Keypad 2 <type> 2 <value> 18
Keypad 3 <type> 2 <value> 19
Keypad 4 <type> 2 <value> 20
Keypad 5 <type> 2 <value> 21
Keypad 6 <type> 2 <value> 22
Keypad 7 <type> 2 <value> 23
Keypad 8 <type> 2 <value> 24
Keypad 9 <type> 2 <value> 25
Type 3 - ESCape followed by [ then a digit string then ~ -or-
CSI followed by a digit string then ~
The <value> code is the value of the digit string.
All of the LK201 keyboard's editing and function
keys generate sequences of this format.
Standard TECO PAGE 46
Command String Editing
4.5 Operating System Character Filters
In general, TECO accepts any ASCII character, whether encountered
in a macro, read from an indirect file, or entered directly via a
command string from the terminal. (Note that TECOs other than
TECO-11 strip the eighth bit on command input.) In addition, 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-5.
Note that these characters are still valid characters to TECO,
but may have to be entered indirectly, such as by using the nI`
command.
^T Note:
On some operating systems, the ^T character is an
immediate action command (to the operating system), and
invokes a one-line status report.
Where reference is made below in Table 4-5 to this
note, TECO causes the operating system's recognition of
^T to be turned off if TECO ever asks the user for
input. The original state of ^T handling is restored
upon exit. MUNGed TECO macros that never ask the user
for input do not affect the operating system's handling
of ^T.
Standard TECO PAGE 47
Command String Editing
TABLE 4-5: OPERATING SYSTEM CHARACTER FILTERS
SYSTEM CHARACTER SYSTEM's USE
RT-11 ^A VT11 support [only if GT ON]
^B Background control [F/B systems only]
^E VT11 support [only if GT ON]
^F Foreground control [F/B systems only]
^O Output control
^Q Terminal Synchronization
^S Terminal Synchronization
RSTS/E ^O Output control
^Q Terminal Synchronization
^S Terminal Synchronization
VAX/VMS ^O Output control
^Q Terminal Synchronization
^S Terminal Synchronization
^T System status (see ^T Note above)
^X Cancel Type-ahead
^Y Process Interruption
RSX-11 ^O Output control
^Q Terminal synchronization
^S Terminal synchronization
^X Task control [RSX-11D only]
TOPS-10 ^C^C Job interruption
^O Output control
^Q Terminal synchronization
^S Terminal synchronization
^T System status
TOPS-20 ^C^C Job interruption
^O Output control
^Q Terminal synchronization
^S Terminal synchronization
^T System status
OS/8 ^B Background control [F/B systems only]
^F Foreground control [F/B systems only]
^Y Reboot indicator [F/B systems only]
Standard TECO PAGE 48
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 49
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.
Standard TECO PAGE 50
File Opening Commands
EWfilespec` 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 ER command, and returns a numeric
value. See the :EB command, above.
Standard TECO PAGE 51
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.
In addition, on some systems switches are provided for convenient
handling of BASIC-PLUS or BASIC-PLUS-2 source files which use
<LF> or & characters for program line continuation. See Appendix
J for more information.
TABLE 5-1B: SWITCHES ON FILE SPECIFICATIONS
System Switch Meaning
OS/8 /S Ignore end-of-file (<CTRL/Z>s) on input.
(SUPER TECO mode)
RSTS/E /B Read and write with unfiltered 8-bit
/n Handle BASIC-PLUS-x line continuation
/B+ Handle BASIC-PLUS line continuation
/ Same as /B+
/B2 Handle BASIC-PLUS-x line continuation
/CLUSTERSIZE:n Specifies output file cluster size
/MODE:n Use non-standard open mode
VAX/VMS, /B2 Handle BASIC-PLUS-x line continuation
RSX-11 /CR Implied carriage control
/-CR No (internal) carriage control
/FT FORTRAN carriage control
/FTN Same as /FT
/RW Rewind magtape before opening file
/SH Open the file in shared mode
/SHR Same as /SH
/STM Stream format
/VAR Variable format
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
Standard TECO PAGE 52
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.
EG` Performs the same function as the EC command, but
then exits from TECO and re-executes the last
COMPIL class command (.COMPILE, .LINK, .EXECUTE,
etc.)
[Same as EX in TECO-11]
EGtext` 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).
:EGcmd args` Performs operating system function "cmd" passing
that function "args" as arguments. This command
always returns a value as follows:
-1 Function "cmd" successfully performed.
0 Function "cmd" is unsupported.
Other Function "cmd" attempted, but failed. The
returned value is the failure status.
There are four functions that are commonly
defined:
INI Locates the user's private initialization
TECO macro.
LIB Defines the user's private library of TECO
macros.
MEM Read/write TECO's last edited file memory.
VTE Locates the user's private scope editing
TECO macro.
These four functions work as follows:
:EGcmd` Loads Q-register * with the
Standard TECO PAGE 53
File Close and Exit Commands
requested information. If there is
no information (e.g., no user
private scope editing TECO macro)
then Q-register * is set to the null
string.
:EGcmd ` Clears the information holder.
Subsequent :EGcmd` commands will set
Q-register * to the null string.
:EGcmd text` Sets the information holder to
"text". Subsequent :EGcmd` commands
will set Q-register * to "text".
Consult the appendices for details.
EK 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.)
ELfilespec` 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]
EX 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.
EZfilespec` 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]
<CTRL/C> The <CTRL/C> (caret/C) command terminates
execution of the current command string and
Standard TECO PAGE 54
File Close and Exit Commands
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.
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.
ER` 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.
EW` 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
Standard TECO PAGE 55
Secondary Stream Commands
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 <ESC>s. For instance,
assume that FOO.TEC contains valid TECO commands,
that it presets a return to your terminal with the
customary EI`, but that it does not contain an
<ESC><ESC> pair. If you type EIFOO``, TECO will
read in the contents of FOO.TEC (building a
command string) and attempt to continue building
the command string by reading from your terminal
when end of file on FOO.TEC is encountered.
Things will appear "very quiet" until it occurs to
you to type <DELIM><DELIM> and so begin execution
of the (composite) command string.
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 ^Uqtext`
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>. (We can say <ESC> explicitly here,
because <DELIM> can be other than ESCape only in
commands typed at the console.)
EI` 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 <DELIM> which has not yet been read is
discarded. This command has no effect if no
indirect file is already open.
Standard TECO PAGE 56
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]
ENfilespec` 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.
EN` 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.1.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.
:EN` Executes the EN` 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 I/O 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]
EQqfilespec` 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
Standard TECO PAGE 57
Direct I/O to Q-Registers
less than 500 characters long. This command
supports the pseudo-device TMP:, for TMPCOR.
Consult the appropriate appendix for details.
[TECO-10 only]
E%qfilespec` 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 58
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. The value of n must not
be negative. 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
Standard TECO PAGE 59
Page Manipulation Commands
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. The command string <:P;> takes you to
end of file.
[Not in TECO-8]
nP Executes the P command n times, where n must be a
non-zero positive integer.
In TECO-11 on VAX/VMS, n can be a negative integer (and
-P means -1P). A -nP command will back up n pages.
n:P Executes the :P command n times, where n must be a
non-zero positive integer. In TECO-11 on VAX/VMS, n
can be a negative integer (and -:P means -1:P). This
command returns 0 when another page could not be backed
up because beginning of file had been reached.
[Not in TECO-8]
PW Write the contents of the buffer onto the output file
and append a form feed character. The buffer is not
cleared and the pointer position remains unchanged.
nPW Executes the PW command n times, where n must be a
non-zero positive integer.
m,nPW 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.
m,nP Equivalent to m,nPW.
HPW Equivalent to the PW command except that a form feed
character is not appended to the output.
HP Equivalent to HPW.
YANK commands:
Y Clears the text buffer and then reads the next page of
the input file into the buffer. Because the Y command
DESTROYS the current text buffer, its use can result in
the loss of data, and is subject to "Yank protection"
(see ED flag in section 5.14).
-Y Clears the text buffer and then reads the previous page
Standard TECO PAGE 60
Page Manipulation Commands
of the file being edited back into the buffer. Because
the Y command DESTROYS the current text buffer, its use
can result in the loss of data, and is subject to "Yank
protection" (see ED flag in section 5.14).
[TECO-11 on VAX/VMS only]
:Y 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 been reached on
the input file prior to the initiation of this command.
[Not in TECO-8]
-:Y 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 beginning of file had been
reached on the file being edited prior to the
initiation of this command.
[TECO-11 on VAX/VMS only]
EY Same as the Y command, but its action is always
permitted regardless of the value of the Yank
Protection bit in the ED flag. Remember that Yank
DESTROYS the current buffer; there's no way to get it
back!
:EY Same as the :Y command, but its action is always
permitted regardless of the value of the Yank
protection bit in the ED flag. Remember that Yank
DESTROYS the current buffer; there's no way to get it
back!
[Not in TECO-8]
Standard TECO PAGE 61
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 -1C.
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.
Standard TECO PAGE 62
Buffer Pointer Manipulation Commands
[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 currently positioned.
-L Equivalent to -1L.
REVERSE commands:
R Moves the pointer backward across one character.
nR 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.
-R Equivalent to -1R.
n:R 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]
:R Equivalent to 1:R.
Standard TECO PAGE 63
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.
.,.+nT Types out the n characters immediately following the
buffer pointer. n should be greater than zero.
.-n,.T Types the n characters immediately preceding the buffer
pointer. n should be greater than zero.
n^T Types out to the console the character whose ASCII
value is n. Whatever normal type-out conversions may
currently be in effect and applicable (such as
translation of control characters to up-arrow format)
are done. The value of n is used modulo 256.
n:^T Outputs to the console the character whose ASCII value
is n. Output is done in "one-shot" binary mode; no
type-out translations are done. The value of n is used
modulo 256.
[TECO-11 only]
HT Types out the entire contents of the buffer.
V Types out the current line. Equivalent to 0TT.
nV Types out n-1 lines on each side of the current line.
Equivalent to 1-nTnT.
[Not in TECO-8]
Standard TECO PAGE 64
Text Type Out Commands
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 65
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 66
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 <DELIM> character
is not necessary.
FR` 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 <DELIM> 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
Standard TECO PAGE 67
Deletion Commands
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 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.
FKtext` Executes a Stext` command then deletes all the text
from the initial pointer position to the new pointer
position.
[TECO-10 only]
@FK/text/ Equivalent to FKtext` except that "text" may contain
any character, including <ESCAPE>, other than the
delimiter (shown here as /).
[TECO-10 only]
HK Deletes the entire contents of the buffer.
Standard TECO PAGE 68
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:
Itext` Where "text" is a string of ASCII characters terminated
by a <DELIM>. 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 ASCII code is n into the buffer at the current
position of the buffer pointer. (n is taken modulo 256
in TECO-11, modulo 128 in other TECOs.) nI` 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
Standard TECO PAGE 69
Insertion Commands
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.
n@I// Equivalent to the nI` command, but does not require the
<DELIM> character.
<TAB>text` 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 (including insertions from the FS, FN,
or FR commands), or (c) the length of the string
retrieved by the most recent "G" command. In effect,
the last string inserted or found is replaced with
"text", provided that the pointer has not been moved.
After execution of this command, the buffer pointer is
positioned immediately after "text".
[Not in TECO-8]
@FR/text/ Equivalent to "FRtext`", except that "text" may contain
ESCAPE characters.
[Not in TECO-8]
nFRtext` Equivalent to "nDItext`". If n is less than 0,
characters preceding the buffer pointer are deleted and
replaced with "text". If n is greater than 0,
characters following the buffer pointer are deleted and
replaced with "text". In either case, the buffer
pointer is left positioned immediately after "text"
upon completion of this command.
[TECO-11 only]
n@FR/text/ Equivalent to "nFRtext`", except that "text" may
contain ESCAPE characters.
[TECO-11 only]
m,nFRtext` Equivalent to "m,nDItext`". The characters between
buffer positions m and n are deleted and replaced with
"text". The buffer pointer is left positioned
immediately after "text" upon completion of this
command.
[TECO-11 only]
m,n@FR/text/ Equivalent to "m,nFRtext`", except that "text" may
contain ESCAPE characters.
[TECO-11 only]
Standard TECO PAGE 70
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 limits, 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
following 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 71
Search Commands
TABLE 5-7A: SEARCH COMMANDS
Stext` Where "text" is a string of characters terminated by a
<DELIM>. 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 -1Stext`.
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.
-Ntext` Performs the same function as the -S command except
that the search is continued (backwards) across page
boundaries, if necessary, until the character string is
found or the beginning of the file being edited is
reached.
[TECO-11 on VAX/VMS only]
-nNtext` This command searches (backwards) for the nth
occurrence of the specified character string. It is
identical to the -N command in other respects.
[TECO-11 on VAX/VMS only]
Standard TECO PAGE 72
Search Commands
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.
In TECO-11 on VAX/VMS, n can be negative, in which case
the search proceeds backwards through each text buffer
and through the file being edited. It terminates upon
the correct search string match and/or beginning of
file. A -n:_ command returns 0 at beginning of file.
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. Remember that Yank DESTROYS the
current buffer; there's no way to get it back!
nE_text` Same as n_text` command except that effective EY
(rather than Y) commands are used.
Standard TECO PAGE 73
Search Commands
TABLE 5-7B: BOUNDED SEARCH COMMANDS
m,nStext` System specific command. Consult Appendix C.
m,nFBtext` Performs the same function as the nStext` command, but
m 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.
nFBtext` 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.
FBtext` Equivalent to 1FBtext`.
-FBtext` Equivalent to -1FBtext`.
::Stext` 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`".
The search and replace commands listed below perform equivalent
functions to the search commands listed next to them, but then
delete "text1" and replace it with "text2".
TABLE 5-7C: SEARCH AND REPLACE COMMANDS
Search & Replace Search Command
FStext1`text2` Stext1`
nFStext1`text2` nStext1`
FNtext1`text2` Ntext1`
nFNtext1`text2` nNtext1`
Standard TECO PAGE 74
Search Commands
F_text1`text2` _text1`
[not in TECO-10]
nF_text1`text2` n_text1`
[Not in TECO-10]
FCtext1`text2` FBtext1`
nFCtext1`text2` nFBtext1`
m,nFCtext1`text2` m,nFBtext1`
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 1FKtext`
[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.
(In TECO-11 on VAX/VMS, -nFN searches backwards through each text
buffer and through the file being edited. It terminates upon the
correct search string match and/or beginning of file. A colon
modified reverse search returns 0 at beginning of file.)
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 END`" 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
<DELIM> 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:
Standard TECO PAGE 75
Search Commands
COMMANDS: n:Stext`
m,n:Stext`
n:Ntext`
n:_text`
n:FStext1`text2`
m,n:FStext1`text2`
n:FNtext1`text2`
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: @S/text/
m,n@FB/text/
n@FS/text1/text2/
@:N/text/
etc.
Standard TECO PAGE 76
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/Q>.
<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).
Standard TECO PAGE 77
Search Arguments
<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 ^V^V construct is
encountered.
[TECO-10 only]
<CTRL/E>Qq <CTRL/E>Qq indicates that the string stored in
Q-register q is to be used in the position
occupied by the ^EQq in the search string. Q
registers are discussed in sections 3.3.2 and 5.9.
[Not in TECO-10]
<CTRL/E>Uq <CTRL/E>Uq indicates that the character whose
ASCII code is specified by the numeric storage
area of Q-register q is to be used in the position
occupied by the ^EUq 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 Z) 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
Standard TECO PAGE 78
Search Arguments
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 Z), 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 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.
Standard TECO PAGE 79
Search Arguments
<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]
TECO-8 uses special symbols to represent certain match control
characters when they are displayed by an error message. These
display symbols are:
Character Display
^N <NOT>
^S <SEP>
^X <ANY>
Standard TECO PAGE 80
Q-registers
5.9 Q-REGISTER MANIPULATION
TECO provides data storage registers, called Q-registers, each of
which may be used to store an integral numeric value and,
simultaneously, an ASCII character string. Q-registers are
described in section 3.3.2; this section describes the commands
used to load values into and retrieve values from Q-registers.
An important kind of character string which may be stored in the
text portion of a Q-register is a TECO command string. Such a
command is known as a macro, and is available for execution via
the Mq command, described in Table 5-9C below. (See also section
4.4, Immediate ESCape-sequence commands, for a keypad method of
macro invocation, and section 4.2, for the *q command, which
saves the last-typed command for possible editing or
re-execution.)
TECO-10 allows additional Q-registers other than those described
in section 3.3.2. 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 nUqm 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%q Add n to the contents of the number storage area of
Q-register q. The updated contents of Q-register q are
also returned as a value to be passed to the next
command.
If your intent is only to update the Q-register, good
programming practice suggests following the n%q command
with a <DELIM> or ^[ to prevent the returned value from
unintentionally affecting the following command.
n%q` Same as n%q but discards the value returned.
%q Equivalent to 1%q.
^Uqstring`
This command inserts character string "string" into the
Standard TECO PAGE 81
Q-registers
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.
:^Uqstring`
This command appends character string "string" to the
text storage area of Q-register "q".
[not in TECO-8]
n^Uq` This form of the ^Uq` command inserts the single
character whose ASCII code is n into the text storage
area of Q-register "q". (n is taken modulo 256 in
TECO-11, modulo 128 in other TECOs.)
[not in TECO-8]
n:^Uq` This form of the :^Uq` command appends the single
character whose ASCII code is n to the text storage
area of Q-register "q". (n is taken modulo 256 in
TECO-11, modulo 128 in other TECOs.)
[not in TECO-8]
@^Uq/string/
@:^Uq/string/
n@^Uq//
n@:^Uq// Equivalent, respectively, to the ^Uqstring`,
:^Uqstring`, n^Uq`, and n:^Uq` commands, except that
alternate delimiters are used and no <DELIM> characters
are necessary.
nXq 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.
Xq Equivalent to 1Xq.
-Xq Equivalent to -1Xq.
m,nXq Copy the contents of the buffer from the m+1th
character through and including the nth character into
the text storage area of Q-register q. M and n must be
positive, and m should be less than n.
.,.+nXq Copy the n characters immediately following the buffer
pointer into the text storage area of Q-register q. N
should be greater than zero.
Standard TECO PAGE 82
Q-registers
.-n,.Xq Copy the n characters immediately preceeding the buffer
pointer into the text storage area of Q-register q. N
should be greater than zero.
n:Xq 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 Q-register can
be used with all forms of the X command.
]q Pop from the Q-register push-down list into Q-register
q. Any previous contents of Q-register q are
destroyed. Both the numeric and text parts of the
Q-register are loaded by this command. The Q-register
push-down list is a last-in first-out (LIFO) storage
area. (See section 3.3.3 for a description of the
push-down list.) This command does not use or affect
numeric values. Numeric values are passed through this
command transparently. This allows macros to restore
Q-registers and still return numeric values.
[Not in TECO-8]
:]q Execute the ]q command and return a numeric value. A
-1 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]
*q Save last-typed command string. See section 4.2.
Standard TECO PAGE 83
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+1)th character in
Q-register q. 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 0, the next character is at
character position 1, etc. Therefore, if Q-register A
contains "xyz", then 0QA will return the ASCII code for
"x" and 1QA 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. Neither the text buffer
nor the buffer pointer is changed by this command.
[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 q. It does not use or
affect numeric values. Numeric values are passed
through this command transparently, allowing macros to
save temporary Q-registers and still accept numeric
values. (Note, however, macros written to use local
Q-registers, available in TECO-11, may be able to avoid
saving and restoring Q-registers via the the pushdown
list.) The command sequence [A ]B replicates the text
string and numeric value from Q-register A into
Q-register B.
[Not in TECO-8]
Standard TECO PAGE 84
Q-registers
Table 5-9C lists the commands which cause macros (strings stored
in Q-registers) to be executed.
Macro invocations can be nested recursively; the limit is set by
the amount of pushdown storage TECO has available.
In this table only, a distinction is made between a global
Q-register name (indicated below by "q") and a local Q-register
name (indicated below by ".q"). Elsewhere in this manual, "q"
indicates either a global or local Q-register name.
TABLE 5-9C: MACRO INVOCATION COMMANDS
COMMAND FUNCTION
Mq Execute the contents of the text storage area of global
Q-register q as a command string. In TECO-11, a new
set of local Q-registers is created before the macro is
invoked.
nMq Execute the Mq command as above, using n as a numeric
argument for the first command contained in global
Q-register q. In TECO-11, a new set of local
Q-registers is created.
m,nMq Execute the Mq command as above, using m,n as numeric
arguments for the first command contained in global
Q-register q. In TECO-11, a new set of local
Q-registers is created.
:Mq Execute the contents of the text storage area of global
Q-register q as a command string. In TECO-11, the
current set of local Q-registers remains available to
the invoked macro; no new set is created.
n:Mq Execute the :Mq command as above, using n as a numeric
argument for the first command contained in global
Q-register q. In TECO-11, no new set of local
Q-registers is created.
m,n:Mq Execute the :Mq command as above, using m,n as numeric
arguments for the first command contained in global
Q-register q. In TECO-11, no new set of local
Q-registers is created.
M.q Execute the contents of the text storage area of local
Q-register .q as a command string. In TECO-11, no new
set of local Q-registers is created.
nM.q Execute the M.q command as above, using n as a numeric
argument for the first command contained in local
Q-register .q. In TECO-11, no new set of local
Standard TECO PAGE 85
Q-registers
Q-registers is created.
m,nM.q Execute the M.q command as above, using m,n as numeric
arguments for the first command contained in local
Q-register .q. In TECO-11, no new set of local
Q-registers is created.
:M.q Execute the contents of the text storage area of local
Q-register .q as a command string. In TECO-11, no new
set of local Q-registers is created.
n:M.q Execute the :M.q command as above, using n as a numeric
argument for the first command contained in local
Q-register .q. In TECO-11, no new set of local
Q-registers is created.
m,n:M.q Execute the :M.q command as above, using m,n as numeric
arguments for the first command contained in local
Q-register .q. In TECO-11, no new set of local
Q-registers is created.
Standard TECO PAGE 86
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. Parentheses may be used to override the normal order
of evaluation of an expression. If parentheses are used, all
operations within the parentheses are performed, left to right,
before operations outside the parentheses. Parentheses may be
nested, in which case the 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.
TABLE 5-10A: ARITHMETIC OPERATORS
OPERATOR EXAMPLE FUNCTION
+ +2=2 Ignored if used before the first term in an
expression.
+ 5+6=11 Addition, if used between terms.
- -2=-2 Negation, if used before the first term in an
expression.
- 8-2=6 Subtraction, if used between terms
* 8*2=16 Multiplication. Used between terms.
/ 8/3=2 Integer division with loss of the remainder.
Used between terms.
& 12&10=8 Bitwise logical AND of the binary
representation of the two terms. Used
between the terms.
# 12#10=14 Bitwise logical OR of the binary of the two
terms. Used between the terms.
^_ 5^_=-6 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 87
Arithmetic and Expressions
TABLE 5-10B: CONVERSION AND RADIX CONTROL COMMANDS
COMMAND FUNCTION
n= 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 on
TECO-11. TECO's radix is unaltered.
n== 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.
n=== 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]
n:=
n:==
n:=== These commands are equivalent to n=, n==, and n===,
except that they leave the carriage positioned at the
end of the output.
^O <CTRL/O> (caret/O) 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.
^D <CTRL/D> (caret/D) causes all subsequent numeric input
to be accepted as decimal numbers. This is the initial
setting.
[Not in TECO-10]
^R This command returns the binary value of TECO's current
radix.
[TECO-11 only]
n^R 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
Standard TECO PAGE 88
Arithmetic and Expressions
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 octal.
n\ 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 89
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 ".,.+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.
Z Equivalent to the number of characters currently
contained in the buffer. Thus, Z 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+1th 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 0A 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 -1.
Standard TECO PAGE 90
Special Numeric Values
Mq The Mq command (execute the contents of the text
storage area of Q-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 a
<ESC>.
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]
\ 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.
^B <CTRL/B> (caret/B) is equivalent to the current date
via the following equations:
OS/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: ^B = (((year-1964)*12+month-1)*31+day-1)
^E <CTRL/E> (caret/E) determines whether or not the P
command (and related operations) append a form feed to
the contents of the buffer on output. If ^E is -1, a
form feed is appended; if ^E is 0, no form feed is
appended.
Each time text is read into the text buffer TECO sets
the ^E flag. If the text read terminated due to a form
feed (i.e., if the text buffer was loaded with a
"complete page"), ^E is set to -1. If the text read
terminated because the buffer was filled to capacity
before a form feed was encountered or because there was
no form feed (i.e., the text buffer was not loaded with
a "complete page"), ^E is set to 0.
In TECO-11, you can set the ^E flag's value directly,
overriding the value set by the most recent buffer
read. Be sure to use only values of 0 or -1; other
values may cause unpredictable results.
^F <CTRL/F> (caret/F) is equivalent to the current value
of the console switch register.
Standard TECO PAGE 91
Special Numeric Values
n^F n<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]
^H <CTRL/H> (caret/H) is equivalent to the current time of
day via the following equations:
OS/8: ^H = 0
RT-11: ^H = (seconds since midnight)/2
RSTS/E: ^H = minutes until midnight
RSX-11: ^H = (seconds since midnight)/2
VAX/VMS: ^H = (seconds since midnight)/2
TOPS-10: ^H = 60ths of a second since midnight
(or 50ths of a second where 50 Hz power is used)
^N <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.
^S <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]
^T <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.
:^T Reads and decodes the next keystroke typed at the
terminal. The decoded keystroke is returned in a
manner similar to that used for immediate ESCape
sequence commands (see section 4.4), i.e., via <type>
and <value> codes, as follows:
<type> 0 Normal character,
<value> is ASCII value
<type> 1 Control character
(except ESCape or CSI);
<value> is ASCII value of
control char.
A typed <CR> yields
<type> 1 <value> 13,
and subsequent ^T or :^T
does not return a <LF>.
Standard TECO PAGE 92
Special Numeric Values
<type> 2 Same as immed ESC seq <type> 0
<type> 3 Same as immed ESC seq <type> 1
<type> 4 Same as immed ESC seq <type> 2
<type> 5 Same as immed ESC seq <type> 3
[TECO-11 only]
^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 "^YXSFR`"
to store the string in Q-register S and remove it from
the buffer. You can then position the pointer to the
right place and type "GS" to insert the string.
[TECO-11 only]
^Z <CTRL/Z> (caret/Z) is equivalent to the total space
occupied by text in the Q-registers (including the
command line currently being executed).
[TECO-11 only]
^^x 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.
Standard TECO PAGE 93
Special Numeric Values
MODE CONTROL FLAGS
The following mode control flags return numeric values. The use
of these flags is described below in section 5.16.
ED Equivalent to the current value of the edit level flag.
EH Equivalent to the current value of the help level flag.
EO Equivalent to the version number of the version of TECO
which is currently being run. This manual describes
TECO-11 Version 40, TECO-8 Version 7, and TECO-10
Version 3.
ES Equivalent to the current value of the search
verification flag.
[Not in TECO-8]
ET Equivalent to the current value of the type out control
flag.
EU Equivalent to the current value of the upper/lower case
flag.
EV Equivalent to the current value of the edit verify
flag.
[TECO-11 only]
^X <CTRL/X> (caret/X) is equivalent to the current value
of the search mode flag.
[Not in TECO-8]
Standard TECO PAGE 94
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 is 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 95
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 a <DELIM>. 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 @O/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
Standard TECO PAGE 96
Branching Commands
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.
TABLE 5-13: BRANCHING COMMANDS
COMMAND FUNCTION
Otag` 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.
@O/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,tag1,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 suggests 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, or if n selects a
null tag, then command execution continues with the
first command following the <DELIM> that delimits this
command. (A null tag would be signified in the list by
two adjacent commas.)
[TECO-11 only]
n@O/tag0,tag1,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
Standard TECO PAGE 97
Branching Commands
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.
n; 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 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-11 only]
n:; 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 ;. If 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,
Standard TECO PAGE 98
Branching Commands
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.
F> 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 >. If this command is
encountered outside of an iteration, it has the same
effect as the <DELIM><DELIM> command.
[TECO-11 only]
F< 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 current iteration. The iteration
count is not affected. If 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]
F' 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
Standard TECO PAGE 99
Branching Commands
equivalent) is issued.
[TECO-11 only]
F| 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. Finally, note that these must be real ESCape
characters, and not the user-designated <DELIM>
character (which TECO understands as an ESCape only
when typed at the console).
n$$ This command causes TECO to exit from the current macro
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.
m,n$$ 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.
^C 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.
Standard TECO PAGE 100
Branching Commands
^C<CTRL/C>
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 101
Conditional Execution Commands
5.14 CONDITIONAL EXECUTION COMMANDS
All conditonal execution commands are of the form:
n"X 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 Z).
n"C Execute the following command string if n is the ASCII
code of any character that is a symbol constituent.
Standard TECO PAGE 102
Conditional Execution Commands
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.
n"G Execute the following command string if n is greater
than zero.
n"L Execute the following command string if n is less than
zero.
n"N Execute the following command string if n is not equal
to zero.
n"R 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).
n"S Execute the following command string if n is
SUCCESSFUL. Equivalent to n"L.
n"T Execute the following command string if n is TRUE.
Equivalent to n"L.
n"U Execute the following command string if n is
UNSUCCESSFUL. Equivalent to n"E.
n"V Execute the following command string if n equals the
ASCII code for a lower case alphabetic character (lower
case A to Z).
[Not in TECO-8]
n"W Execute the following command string if n equals the
ASCII code for an upper case alphabetic character
(upper case A to Z).
[Not in TECO-8]
n"< Identical to n"L
n"> Identical to n"G
n"= Identical to n"E
Standard TECO PAGE 103
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 0 RSX-11D
1 RSX-11M
2 RSX-11S
3 IAS
4 RSTS/E
5 VAX/VMS
(compatibility mode)
6 RSX-11M+
7 RT-11
1 PDP-8 0 OS/8
2 DEC-10 0 TOPS-10
3 DEC-20 0 TOPS-20
4 VAX-11 0 VAX/VMS
(native mode)
0EJ 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 104
Retrieving Environment Characteristics
TABLE 5-15B: SETTING ENVIRONMENT INFORMATION
n,1EJ 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]
n,2EJ 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 105
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 below.
TABLE 5-16A: FLAG MANIPULATION COMMANDS
<flag> Return value of flag.
n<flag> Set value of flag to n.
m,n<flag> In the flag, turn off those bits specified by m
and turn on those bits specified by n.
0,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:
ED&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.
(For control of upper/lower case matching in
search strings, see the ^X flag.)
ED&2 Allow all Y and _ commands. If this bit is
set, the Y (Yank) command and _ (underscore
Standard TECO PAGE 106
Mode Control Flags
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 pages if an output file
is open.
ED&4 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.
ED&8 Reserved for future use by TECO-8.
ED&16 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.
[not in TECO-8]
ED&32 Enable immediate ESCape-sequence commands.
If this bit is set, TECO will recognize an
ESCape-sequence key pressed immediately after
the prompting asterisk as an immediate
command. See section 4.4 for a description
of immediate ESCape-sequence commands.
If this bit is clear (the default case), TECO
will treat an ESCape coming in immediately
after the asterisk prompt as a <DELIM> That
is, TECO will hear a discrete <ESC>
character: an ESCape sequence will therefore
Standard TECO PAGE 107
Mode Control Flags
be treated not as a unified command, but as a
sequence of characters.
[TECO-11 only]
ED&64 Only move dot by one on multiple occurrence
searches. If this bit is clear, TECO treats
nStext` exactly as n<1Stext`>. 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 5SAA` 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]
ED&128 Automatic refresh inhibit. If scroll mode is
enabled (that is, if 7:W is non-zero), TECO
normally refreshes the text buffer display
just before printing its * prompt. Setting
the 128 bit in ED inhibits this automatic
refresh. (Inhibiting the automatic refresh
may be useful when running over a slow
terminal line; see also the ^W immediate
command.)
[TECO-11 only]
The initial value of ED&1 is system dependent (See
appendices). The initial value of the other bits in
the ED flag is 0.
EE This flag is initially zero, and (unless the 8192 ET
bit is set) TECO recognizes only the ESCape as its
<DELIM> character from the console. If it is desired
to use another character as an ESCape surrogate (as
when working from a terminal lacking an ESCape key),
the ASCII value of that other character may be set in
the EE flag. Note that when an ESCape surrogate is
set, the designated character (when typed at the
console) is received by TECO as an ESCape -- that
character is no longer directly available at the
keyboard. When an ESCape surrogate is active, an
ESCape received by TECO echos as accent grave; when
none is active, an ESCape received by TECO echos as
dollar sign. This feature is provided for the benefit
of newer terminals which lack an ESCape key. (8192ET
and 96EE both set ` as ESCape surrogate. EE, however,
can be used to designate a character other than accent
grave.)
[RSTS/E only]
EH The help level flag, which controls the printing of
error messages and failed commands. (See also the /
Standard TECO PAGE 108
Mode Control Flags
command.)
EH&3 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 ("?XXX"). If m is equal
to 2, error messages are output in normal
form ("?XXX Message"). If m is 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. In
TECO-11, m=3 is implemented only on VAX/VMS.
(See section G.13 for a description of HELP
facilities available on VAX/VMS.) In other
TECO-11's, case m=3 is equivalent to m=2.
EH&4 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.
The initial value of the EH flag is 0 which is
equivalent to a value of 2.
EO Setting the value of the EO flag to n allows features
that were peculiar to that version of TECO to work.
[TECO-10 only]
ES 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 -1, 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
Standard TECO PAGE 109
Mode Control Flags
character "!" 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.
ET 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&1 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 `
(accent grave) or to $ (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).
ET&8 Read without echo for ^T commands. This
allows data to be read by the ^T command
without having 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.
Standard TECO PAGE 110
Mode Control Flags
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 "Abort-on-error" bit. Initially set, when
TECO starts up; cleared each time TECO
issues its asterisk prompt. 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. On VAX/VMS, this bit reflects
and can change the state of the terminal
characteristic WRAP/NOWRAP; TECO restores
the terminal characteristic to its original
state upon exit.)
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&4096 This bit reflects and can change the state of
the terminal characteristic (maintained by
the operating system) recording whether the
terminal is capable of handling eight-bit
character codes. Upon entry to TECO, this
bit reflects the characteristic as recorded
with the operating system at that time. If
you change this bit, the operating system is
directed to change its recording of the
characteristic to match.
Because the data manipulated (edited) by TECO
Standard TECO PAGE 111
Mode Control Flags
can consist of all 256 possible byte codes,
the way data characters are displayed (typed
out) at the console varies depending upon the
setting of the 4096 ET bit.
If the bit is clear (meaning that TECO
understands your terminal to be 7-bit), valid
DEC multi-national codes are typed out as
<xy> (where xy is the corresponding LK201
keyboard compose sequence).
If the bit is set (meaning that TECO
understands your terminal to be 8-bit), valid
DEC multi-national codes are typed out as
themselves.
In either case, unprintable or illegal codes
in the 128 to 255 range are typed out as [ab]
(where ab is the corresponding hexadecimal
code). The scope watch feature (screen
buffer display, controlled by the W commands)
always uses the <xy> and [ab] notations.
ET&8192 Accent grave as ESCape surrogate.
[TECO-11 only]
If this bit is set, TECO recognizes the `
(accent grave) character as an ESCAPE
surrogate. That is, an ` character typed at
the console will be recognized as a command
<DELIM> character, and passed to TECO as an
ESCape. (This interpretation applies only to
<DELIM>s typed at the console; ESCape
characters must still be used in macros and
indirect files.) When an ESCape surrogate is
set, an ESCape received by TECO echos as
accent grave; when none is set, an ESCape
received by TECO echos as dollar sign. This
feature is provided for the benefit of
certain newer terminals which lack an ESCape
key. (See also the Introduction, and the EE
flag.)
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
Standard TECO PAGE 112
Mode Control Flags
automatically turned off by certain error conditions.
EU 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 value is 0. Consult the appendices for more
details.
EV 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]
^X The search mode flag.
[Not in TECO-8]
If ^X 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. The
lower case alphabetics match the upper case
alphabetics, and "`", "{", "|", "}", "~" match "@",
"[", "\", "]", "^" respectively. In addition, DEC
multinational characters having diacritical marks are
regarded as matching the corresponding characters
without diacritical marks.
If ^X is -1, the search will succeed only if the text
argument is identical to text in the text buffer.
(This means that lower case does NOT match upper case,
nor does a character having a diacritical mark match
one without).
The initial value of the ^X flag is 0. (For control of
caret or uparrow treatment in search strings, see the
ED&1 bit above.)
Standard TECO PAGE 113
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 VT05, 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-1 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).
0W 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]
Standard TECO PAGE 114
Video Terminal Scope Commands
The :W commands are used to interrogate and set (see m,n:W below)
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
0:W Return a number representing the type of scope in use
as the editing terminal. Current values are:
0 VT52
1 VT61 [TECO-10 only]
2 VT100 in VT52 mode
4 VT100 in ANSI mode
6 VT05
8 VT102 in ANSI mode
10 VK100 (GIGI)
:W Equivalent to 0:W
1:W Return or set 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.
If this value is changed (see m,n:W below), the
operating system is automatically informed of the
terminal's new width setting, and the appropriate
control sequence is issued to physically change the
terminal's screen mode (80 versus 132 column mode) if
needed.
2:W Return or set 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.
This number is affected by use of the m,7:W command
(set scrolling region).
3:W Return or set 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.
4:W Return or set "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.
Standard TECO PAGE 115
Video Terminal Scope Commands
5:W Return or set 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.
6:W Returns buffer pointer position of character that was
in the upper left hand corner of the window as of the
last -1W command.
7:W Return or set the number of lines in the scrolling
(command dialogue) portion of the screen. If n is
zero, then split screen scrolling is disabled. When
split screen 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 display window into the text
buffer, and is automatically updated by TECO
immediately before each command prompt. This feature
functions only on terminals capable of split screen
scrolling, such as members of the VT100 and VT200
families.
The value of n must be greater than 1, and scope height
minus n must be greater than 9.
Whenever the scrolling region's size is modified (that
is, whenever an m,7:W command is executed), TECO alters
the scope's height (2:W) accordingly. For example, if
2:W is currently returning a value of 24, then after a
5,7:W command 2:W will return a value of 19. Executing
a 0,7:W will restore 2:W to 24.
m,n:W Sets the entity represented by n:W to m and returns a
value. If the new setting has been accepted, the
returned value is m. Elsewise, the returned value is
either the old value associated with n:W or whatever
new setting was actually set. In all cases, the
returned value reflects the new current setting.
Specific operating systems may put restrictions on the
valid values for m.
Note that each m,n:W command returns a value, even if
your only intent is to set something. Good programming
practice suggests following any command which returns a
value with <DELIM> or ^[ if you don't intend that value
to be passed to the following command.
Standard TECO PAGE 116
Video Terminal Scope Commands
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.
TABLE 5-17C: REFRESH SCOPE WATCH COMMANDS
COMMAND FUNCTION
W Update the refresh scope screen to reflect the contents
of the text buffer surrounding the text pointer
("dot").
0W Turn off the refresh scope display.
nW Set the number of lines to be displayed around the text
pointer to n.
Standard TECO PAGE 117
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:
!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
Standard TECO PAGE 118
Programming Aids
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 C. 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 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 readable 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
@^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.
Standard TECO PAGE 119
Programming Aids
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.
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
(as distinct from an immediate action command
or 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%q or m,n:W) when you don't want
that value to affect execution of the
following command.
^[ Same as <ESCAPE>. Like any other TECO
command that is a control character, ESCape
may be entered in up-arrow mode. Sometimes
easier to type, ^[ is also useful on systems
whose line-printer spoolers do not visibly
print the ESCape character.
Any pending numeric values are discarded.
This command is useful for discarding the
value returned from a command (such as n%q or
m,n:W) when you don't want that value to
affect execution of the following command.
Standard TECO PAGE 120
Programming Aids
<ALTMODE> Some older terminals may have no ESCape key,
but instead 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 0EC
command tells TECO to shrink back to its original size (use the
least amount of memory possible).
[TECO-10 only]
Standard TECO PAGE 121
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.
TABLE 5-18B: CASE CONTROL CHARACTERS
CHARACTER MEANING
^V <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 ^V^V.
[TECO-10 only]
^W <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 ^W^W.
[TECO-10 only]
0^V Returns TECO to its original mode. No special case
conversion occurs within strings except those case
conversions that are explicitly specified by ^V and ^W
string build constructs located within the string.
[TECO-10 only]
0^W Same as ^V.
[TECO-10 only]
Standard TECO PAGE 122
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,.PW0,.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 123
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 <DELIM> 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 in a Q-register, and executed by an Mq
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 nMq and m,nMq
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 !
Q0"E 3U0 ' ! Default calling argument to 3 !
Standard TECO PAGE 124
Techniques
...
Q2EU ! Restore the case flagging flag !
10-Q1"N ^O ' ! Restore radix as octal if needed !
]2 ]1 ]0 ! 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 Q-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).
The following 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> IJ <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.)
Start TECO.
*2ED`` Allow all Y commands.
*EBPROG.DAT`Y`` Specify input file and get first page.
*NC`` Search for a character string in C, writing A
and B on the output file.
*J20X1`` Save all of C in Q-register 1.
*20K`` Delete C from the buffer.
*NG`` Search for a character string in G, writing
D, E, and F on the output file.
*HX2`` Save G and H in Q-register 2.
*Y`` Delete GH from the buffer and read IJ.
*20L`` Move the pointer to the beginning of J.
*G1`` Insert C, which was stored in Q-register 1.
Standard TECO PAGE 125
Techniques
*NM`` Search for a character string in M, writing
ICJ and KL on the output file.
*HX1`` Save MN in Q-register 1 (the previous
contents is overwritten).
*Y`` Delete MN and read OP
*J20X3`` Save all of O in Q-register 3.
*20K`` Delete O from the buffer.
*PWHK`` Write P onto the output file, appending a
form feed, and clear the text buffer.
*G2`` Bring GH into the buffer from Q-register 2.
*HPEF`` Write GH on the output file and close it.
*EBPROG.DAT`Y`` Open the partially revised file.
*20L`` Move the pointer to the beginning of B.
*G3`` Insert all of O from Q-register 3.
*ND`` Search for a character string in D writing
AOB on the output file.
*PWHK`` Write D on the output file and clear buffer.
*G1`` Bring all of MN from Q-register 1 into the
buffer.
*EX`` 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.
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.
*2ED`` Allow all Y commands.
*ERFILE`EWFILE1`` Open the input file and the first output
file.
*Y`` Read AB into the buffer.
*P`` Write AB <FF> onto the output file and read
CD into the buffer.
*HPEF`` Write CD onto the output file (without
appending a form feed), and close the first
output file.
*_K`` Search for a character string in K. After
this command has been executed, the buffer
will contain KL. No output is generated.
Standard TECO PAGE 126
Techniques
*EWFILE2`P`` Open the second output file and write KL onto
it. Read MN into the buffer.
*20L0,.P`` Move the pointer to the end of M, then write
M onto the output file.
*EF`` Close the output file.
*HKEX`` 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> IJ <FF> KL
and the other is MATH.TWO, which contains:
MN <FF> OP <FF> QR
If both of these files are stored on DK1, 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.
*2ED`` Allow all Y commands.
*ERDK1:MATH.TWO`` Open the first input file.
*EWMATH.NEW`` Open the output file on the default device.
*Y`` Read MN into the text buffer.
*NR`` Search for a character string in R, writing
MN and OP onto the output file.
*PW`` Write QR onto the output file, appending a
form feed.
*ERDK1:MATH.ONE`` Open the second input file.
*HKY`` Read AB into the buffer. QR is over-written.
*_G`` Search for a character string in G, deleting
AB, CD, and EF, leaving GH in the buffer.
*NK`` Search for a character string in K, writing
GH and IJ on the output file, leaving KL in
the buffer.
*HPEFHKEX`` Write KL onto the output file (without
appending a form feed) and close the file,
then exit.
Standard TECO PAGE 127
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 0AUA !Load first character of first line
into Q-register A !
!CONT! L 0AUB !Load first character of next line
into Q-register B !
QA-QB"G XA K -L GA 1UZ ' !If A>B, switch the lines and set a
flag (Q-register Z) !
QBUA !Load B into A !
L Z-."G -L @O/CONT/ ' !Loop back if there is another line
in the buffer !
QZ"G 0UZ @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:
0UZ !clear repeat flag!
<J 0AUA L !Load first character of first line
into Q-register A !
<0AUB !Load first character of next line
into Q-register B !
QA-QB"G XA K -L GA -1UZ ' !If A>B, switch the lines and set a
flag !
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 PAGE 128
Appendix A
APPENDIX A
Octal & Decimal ASCII Character Set
(GL characters, on one page)
Char Oct Dec Char Oct Dec Char Oct Dec Char Oct Dec
NUL 000 000 SP 040 032 @ 100 064 ` 140 096
^A 001 001 ! 041 033 A 101 065 a 141 097
^B 002 002 " 042 034 B 102 066 b 142 098
^C 003 003 # 043 035 C 103 067 c 144 099
^D 004 004 $ 044 036 D 104 068 d 144 100
^E 005 005 % 045 037 E 105 069 e 145 101
^F 006 006 & 046 038 F 106 070 f 146 102
^G 007 007 ' 047 039 G 107 071 g 147 103
BS 010 008 ( 050 040 H 110 072 h 150 104
TAB 011 009 ) 051 041 I 111 073 i 151 105
LF 012 010 * 052 042 J 112 074 j 152 106
VT 013 011 + 053 043 K 113 075 k 153 107
FF 014 012 , 054 044 L 114 076 l 154 108
CR 015 013 - 055 045 M 115 077 m 155 109
^N 016 014 . 056 046 N 116 078 n 156 110
^O 017 015 / 057 047 O 117 079 o 157 111
^P 020 016 0 060 048 P 120 080 p 160 112
^Q 021 017 1 061 049 Q 121 081 q 161 113
^R 022 018 2 062 050 R 122 082 r 162 114
^S 023 019 3 063 051 S 123 083 s 163 115
^T 024 020 4 064 052 T 124 084 t 164 116
^U 025 021 5 065 053 U 125 085 u 165 117
^V 026 022 6 066 054 V 126 086 v 166 118
^W 027 023 7 067 055 W 127 087 w 167 119
^X 030 024 8 070 056 X 130 088 x 170 120
^Y 031 025 9 071 057 Y 131 089 y 171 121
^Z 032 026 : 072 058 Z 132 090 z 172 122
ESC 033 027 ; 073 059 [ 133 091 { 173 123
FS 034 028 < 074 060 \ 134 092 | 174 124
GS 035 029 = 075 061 ] 135 093 } 175 125
RS 036 030 > 076 062 ^ 136 094 ~ 176 126
US 037 031 ? 077 063 _ 137 095 DEL 177 127
Continued...
Standard TECO PAGE 129
Appendix A
APPENDIX A, Continued
Octal, Hexadecimal, & Decimal ASCII Character Set (Complete)
Hex Oct Dec Char Description
[00] 000 0. <NUL>
[01] 001 1. ^A Control-A
[02] 002 2. ^B Control-B
[03] 003 3. ^C Control-C
[04] 004 4. ^D Control-D
[05] 005 5. ^E Control-E
[06] 006 6. ^F Control-F
[07] 007 7. ^G Bell
[08] 010 8. <BS> Backspace
[09] 011 9. <TAB> Horizontal tab
[0A] 012 10. <LF> Line feed
[0B] 013 11. <VT> Vertical tab
[0C] 014 12. <FF> Form feed
[0D] 015 13. <CR> Carriage return
[0E] 016 14. <SO> Control-N
[0F] 017 15. <SI> Control-O
[10] 020 16. ^P Control-P
[11] 021 17. <XON> Control-Q
[12] 022 18. ^R Control-R
[13] 023 19. <XOFF> Control-S
[14] 024 20. ^T Control-T
[15] 025 21. ^U Control-U
[16] 026 22. ^V Control-V
[17] 027 23. ^W Control-W
[18] 030 24. ^X Control-X
[19] 031 25. ^Y Control-Y
[1A] 032 26. ^Z Control-Z
[1B] 033 27. <ESC> ESCape, control-[
[1C] 034 28. <FS> Control-\
[1D] 035 29. <GS> Control-]
[1E] 036 30. <RS> Control-^
[1F] 037 31. <US> Control-_
Continued...
Standard TECO PAGE 130
Appendix A
APPENDIX A, Continued
Octal, Hexadecimal, & Decimal ASCII Character Set (Complete)
Hex Oct Dec Char Description
[20] 040 32. Space
[21] 041 33. ! Explanation point
[22] 042 34. " Double quotation mark
[23] 043 35. # Number sign
[24] 044 36. $ Dollar sign
[25] 045 37. % Percent sign
[26] 046 38. & Ampersand
[27] 047 39. ' Single quote, apostrophe
[28] 050 40. ( Left parenthesis
[29] 051 41. ) Right parenthesis
[2A] 052 42. * Asterisk
[2B] 053 43. + Plus
[2C] 054 44. , Comma
[2D] 055 45. - Hyphen, minus
[2E] 056 46. . Period, decimal point
[2F] 057 47. / Slash, slant, solidus
[30] 060 48. 0 Digit 0
[31] 061 49. 1 Digit 1
[32] 062 50. 2 Digit 2
[33] 063 51. 3 Digit 3
[34] 064 52. 4 Digit 4
[35] 065 53. 5 Digit 5
[36] 066 54. 6 Digit 6
[37] 067 55. 7 Digit 7
[38] 070 56. 8 Digit 8
[39] 071 57. 9 Digit 9
[3A] 072 58. : Colon
[3B] 073 59. ; Semicolon
[3C] 074 60. _< Left angle, less than
[3D] 075 61. = Equals
[3E] 076 62. _> Right angle, greater than
[3F] 077 63. ? Question mark
Continued...
Standard TECO PAGE 131
Appendix A
APPENDIX A, Continued
Octal, Hexadecimal, & Decimal ASCII Character Set (Complete)
Hex Oct Dec Char Description
[40] 100 64. @ Commercial at
[41] 101 65. A Upper case A
[42] 102 66. B Upper case B
[43] 103 67. C Upper case C
[44] 104 68. D Upper case D
[45] 105 69. E Upper case E
[46] 106 70. F Upper case F
[47] 107 71. G Upper case G
[48] 110 72. H Upper case H
[49] 111 73. I Upper case I
[4A] 112 74. J Upper case J
[4B] 113 75. K Upper case K
[4C] 114 76. L Upper case L
[4D] 115 77. M Upper case M
[4E] 116 78. N Upper case N
[4F] 117 79. O Upper case O
[50] 120 80. P Upper case P
[51] 121 81. Q Upper case Q
[52] 122 82. R Upper case R
[53] 123 83. S Upper case S
[54] 124 84. T Upper case T
[55] 125 85. U Upper case U
[56] 126 86. V Upper case V
[57] 127 87. W Upper case W
[58] 130 88. X Upper case X
[59] 131 89. Y Upper case Y
[5A] 132 90. Z Upper case Z
[5B] 133 91. [ Opening bracket
[5C] 134 92. \ Backslash, reverse slant
[5D] 135 93. ] Closing bracket
[5E] 136 94. ^ Circumflex, caret, uparrow
[5F] 137 95. _ Underline, underscore
Continued...
Standard TECO PAGE 132
Appendix A
APPENDIX A, Continued
Octal, Hexadecimal, & Decimal ASCII Character Set (Complete)
Hex Oct Dec Char Description
[60] 140 96. ` Accent grave
[61] 141 97. a Lower case a
[62] 142 98. b Lower case b
[63] 143 99. c Lower case c
[64] 144 100. d Lower case d
[65] 145 101. e Lower case e
[66] 146 102. f Lower case f
[67] 147 103. g Lower case g
[68] 150 104. h Lower case h
[69] 151 105. i Lower case i
[6A] 152 106. j Lower case j
[6B] 153 107. k Lower case k
[6C] 154 108. l Lower case l
[6D] 155 109. m Lower case m
[6E] 156 110. n Lower case n
[6F] 157 111. o Lower case o
[70] 160 112. p Lower case p
[71] 161 113. q Lower case q
[72] 162 114. r Lower case r
[73] 163 115. s Lower case s
[74] 164 116. t Lower case t
[75] 165 117. u Lower case u
[76] 166 118. v Lower case v
[77] 167 119. w Lower case w
[78] 170 120. x Lower case x
[79] 171 121. y Lower case y
[7A] 172 122. z Lower case z
[7B] 173 123. { Opening brace
[7C] 174 124. | Vertical line
[7D] 175 125. } Closing brace
[7E] 176 126. ~ Tilde, overline, high line
[7F] 177 127. <DEL> Delete, rubout
Continued...
Standard TECO PAGE 133
Appendix A
APPENDIX A, Continued
Octal, Hexadecimal, & Decimal ASCII Character Set (Complete)
Hex Oct Dec Char Description
[80] 200 128.
[81] 201 129.
[82] 202 130.
[83] 203 131.
[84] 204 132. <IND>
[85] 205 133. <NEL>
[86] 206 134. <SSA>
[87] 207 135. <ESA>
[88] 210 136. <HTS>
[89] 211 137. <HTJ>
[8A] 212 138. <VTS>
[8B] 213 139. <PLD>
[8C] 214 140. <PLU>
[8D] 215 141. <RI>
[8E] 216 142. <SS2>
[8F] 217 143. <SS3>
[90] 220 144. <DCS>
[91] 221 145. <PU1>
[92] 222 146. <PU2>
[93] 223 147. <STS>
[94] 224 148. <CCH>
[95] 225 149. <MW>
[96] 226 150. <SPA>
[97] 227 151. <EPA>
[98] 230 152.
[99] 231 153.
[9A] 232 154.
[9B] 233 155. <CSI>
[9C] 234 156. <ST>
[9D] 235 157. <OSC>
[9E] 236 158. <PM>
[9F] 237 159. <APC>
Continued...
Standard TECO PAGE 134
Appendix A
APPENDIX A, Continued
Octal, Hexadecimal, & Decimal ASCII Character Set (Complete)
Hex Oct Dec -- Description
[A0] 240 160. -
[A1] 241 161. Inverted exclamation mark
[A2] 242 162. Cent sign
[A3] 243 163. Pound sterling sign
[A4] 244 164. reserved for future
[A5] 245 165. Yen
[A6] 246 166. reserved for future
[A7] 247 167. Section sign
[A8] 250 168. General currency sign
[A9] 251 169. Copyright sign
[AA] 252 170. Feminine ordinal indicator
[AB] 253 171. Angle quotation mark left
[AC] 254 172. reserved for future
[AD] 255 173. reserved for future
[AE] 256 174. reserved for future
[AF] 257 175. reserved for future
[B0] 260 176. Degree sign
[B1] 261 177. Plus/minus sign
[B2] 262 178. Superscript 2
[B3] 263 179. Superscript 3
[B4] 264 180. reserved for future
[B5] 265 181. Micro sign, Greek mu
[B6] 266 182. Paragraph sign, pilcrow
[B7] 267 183. Middle dot
[B8] 270 184. reserved for future
[B9] 271 185. Superscript 1
[BA] 272 186. Masculine ordinal indicator
[BB] 273 187. Angle quotation mark right
[BC] 274 188. Fraction one quarter
[BD] 275 189. Fraction one half
[BE] 276 190. reserved for future
[BF] 277 191. Inverted question mark
Continued...
Standard TECO PAGE 135
Appendix A
APPENDIX A, Continued
Octal, Hexadecimal, & Decimal ASCII Character Set (Complete)
Hex Oct Dec -- Description
[C0] 300 192. A with accent grave
[C1] 301 193. A with accent aigu (acute)
[C2] 302 194. A with circumflex
[C3] 303 195. A with tilde
[C4] 304 196. A with umlaut (diaeresis)
[C5] 305 197. A with ring
[C6] 306 198. AE ligature
[C7] 307 199. C with cedilla
[C8] 310 200. E with accent grave
[C9] 311 201. E with accent aigu (acute)
[CA] 312 202. E with circumflex
[CB] 313 203. E with umlaut (diaeresis)
[CC] 314 204. I with accent grave
[CD] 315 205. I with accent aigu (acute)
[CE] 316 206. I with circumflex
[CF] 317 207. I with umlaut (diaeresis)
[D0] 320 208. reserved for future
[D1] 321 209. N with tilde
[D2] 322 210. O with accent grave
[D3] 323 211. O with accent aigu (acute)
[D4] 324 212. O with circumflex
[D5] 325 213. O with tilde
[D6] 326 214. O with umlaut (diaeresis)
[D7] 327 215. OE ligature
[D8] 330 216. O (letter) with slash
[D9] 331 217. U with accent grave
[DA] 332 218. U with accent aigu (acute)
[DB] 333 219. U with circumflex
[DC] 334 220. U with umlaut (diaeresis)
[DD] 335 221. Y with umlaut (diaeresis)
[DE] 336 222. reserved for future
[DD] 337 223. German sharp s
Continued...
Standard TECO PAGE 136
Appendix A
APPENDIX A, Continued
Octal, Hexadecimal, & Decimal ASCII Character Set (Complete)
Hex Oct Dec -- Description
[E0] 340 224. a with accent grave
[E1] 341 225. a with accent aigu (acute)
[E2] 342 226. a with circumflex
[E3] 343 227. a with tilde
[E4] 344 228. a with umlaut (diaeresis)
[E5] 345 229. a with ring
[E6] 346 230. ae ligature
[E7] 347 231. c with cedilla
[E8] 350 232. e with accent grave
[E9] 351 233. e with accent aigu (acute)
[EA] 352 234. e with circumflex
[EB] 353 235. e with umlaut (diaeresis)
[EC] 354 236. e with umlaut (diaeresis)
[ED] 355 237. i with accent aigu (acute)
[EE] 356 238. i with circumflex
[EF] 357 239. i with umlaut (diaeresis)
[F0] 360 240. reserved for future
[F1] 361 241. n with tilde
[F2] 362 242. o with accent grave
[F3] 363 243. o with accent aigu (acute)
[F4] 364 244. o with circumflex
[F5] 365 245. o with tilde
[F6] 366 246. o with umlaut (diaeresis)
[F7] 367 247. oe ligature
[F8] 370 248. o (letter) with slash
[F9] 371 249. u with accent grave
[FA] 372 250. u with accent aigu (acute)
[FB] 373 251. u with circumflex
[FC] 374 252. u with umlaut (diaeresis)
[FD] 375 253. y with umlaut (diaeresis)
[FE] 376 254. reserved for future
[FF] 377 255. -
Standard TECO PAGE 137
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 138
Appendix B
?ARG Improper Arguments
Three arguments are given (a,b,c or H,c).
?BNI > 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 CCL.SV not found or EG argument too long
The EGcommand` command on OS/8 was unable to locate
SYS:CCL.SV or the specified command has more than
46 characters.
?CON 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.
?CPQ Can't pop into Q-register
A ] command has been executed and there is nothing
saved on the Q-register push down list.
?DEV Invalid device
A file specification string in an E command
contains an unknown device name.
?DTB Delete too big
An nD command has been attempted which is not
contained within the current page.
?ERR RSTS/E error message (RSTS/E only)
Some RSTS/E monitor call failed. The error message
text explains the error.
?FER File Error
The file specified in an ER, EW or EB command was
not found.
?FNF 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.
?FUL 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
Standard TECO PAGE 139
Appendix B
to a temporary file may be used. The files should
be concatenated when the space problem is
alleviated.
?ICE 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,...].
?IEC 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 command (i.e., ER or EX).
?IFC Illegal character "x" after F
An invalid F command has been executed.
?IFN 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.
?IIA Illegal insert arg
A command of the form "nItext`" was attempted.
Combining character (nI`) and text (Itext`)
insertions is illegal.
?ILL Illegal command "x"
An attempt has been made to execute an invalid TECO
command.
?ILN Illegal number
An 8 or 9 has been entered when the radix of TECO
is set to octal.
?INP 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.
?IPA Negative or 0 argument to P
The argument preceding a P or PW command is
negative or 0.
?IQC 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.
Standard TECO PAGE 140
Appendix B
?IQN Illegal Q-register name "x"
An illegal Q-register name was specified in one of
the Q-register commands.
?IRA Illegal radix argument to ^R
The argument to a ^R radix command must be 8, 10,
or 16.
?ISA Illegal search arg
The argument preceding a search command is 0. This
argument must not be 0.
?ISS Illegal search string
One of the search string special characters (^Q,
^V, ^W, etc.) would have modified the search string
delimiter (usually ESCAPE).
?IUC Illegal character "x" following ^
The character following an ^ must have ASCII value
between 100 and 137 inclusive or between 141 and
172 inclusive.
?MAP Missing '
Every conditional (opened with the " command) must
be closed with the ' command.
?MEM 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.)
?MLA 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.
?MLP Missing (
There is a right parenthesis that is not matched by
a corresponding left parenthesis.
?MRA 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.
?MRP Missing )
There is a right parenthesis that is not matched by
a corresponding left parenthesis.
Standard TECO PAGE 141
Appendix B
?MSC Missing Start of Conditional
A ' command (end of conditional) was encountered.
Every ' command must be matched by a preceding "
(start of conditional) command.
?NAB No arg before ^_
The ^_ command must be preceded by either a
specific numeric argument or a command that returns
a numeric value.
?NAC No arg before ,
A command has been executed in which a , is not
preceded by a numeric argument.
?NAE No arg before =
The =, ==, or === command must be preceded by
either a specific numeric argument or a command
that returns a numeric value.
?NAP 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.
?NAQ 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.
?NAS 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.
?NAU No arg before U
The U command must be preceded by either a specific
numeric argument or a command that returns a
numeric value.
?NCA Negative argument to ,
A comma was preceded by a negative number.
?NYA Numeric argument with Y
The Y command must not be preceded by either a
numeric argument or a command that returns a
numeric value.
?NYI Not yet implemented
A command was issued which tries to invoke a
feature not available on this implementation of
TECO.
Standard TECO PAGE 142
Appendix B
?NFI 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.
?NFO 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.
?NPA Negative or 0 argument to P
A P command was preceded by a negative or 0
argument.
?NRO No room for output
The output device is too full to accept the
requested output file.
?NYI Not Yet Implemented
A command was issued that is not yet implemented in
this version of TECO.
?OFO 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.
?OUT 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.
?PES Attempt to Pop Empty Stack
A ] command (pop off q-register stack into a
q-register) was encountered when there was nothing
on the q-register stack.
?PDO Push-down list overflow
The command string has become too complex.
Simplify it.
?POP 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 Z, inclusive. The
characters referenced by a D or m,nX command must
also be within the buffer boundary.
Standard TECO PAGE 143
Appendix B
?SNI ; not in iteration
A ; command has been executed outside of an open
iteration bracket. This command may only be
executed within iteration brackets.
?SRH Search failure "text"
A search command not preceded by a colon modifier
and not within an iteration has failed to find the
specified "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.
?STL String too long
A search or file name string is too long. This is
most likely the result of a missing <DELIM> after
the string.
?TAG 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.
?UTC 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.
?UTM 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.)
?XAB Execution aborted
Execution of TECO was aborted. This is usually due
to the typing of <CTRL/C>.
?WLO 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.
?YCA Y command aborted
An attempt has been made to execute an Y or _
search command with an output file open, that would
Standard TECO PAGE 144
Appendix B
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.
?nnn I/O 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 145
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.1.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,1Stext` and
m,-Stext` is identical to m,-1Stext`.
m,-nStext` Performs the same function as the m,nS command,
but searches in the reverse direction.
0,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
Standard TECO PAGE 146
Appendix C
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.
n^Q n^QC is identical to nL. The n^Q 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.
m,-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 => Terminate on any character
32 => Don't keep screen updated (i.e., no -1W)
8 => Treat m as terminating character(s)
4 => Convert any alphabetic inserts to upper
case
2 => Terminate on <TAB>
1 => Screen is initially O.K.
Control characters (octal 0 through 37 and 177
except <TAB>) are always terminating characters.
The returned value has the terminating character
code in low byte (octal 0 through 177 or 377 for
returned immediately). The sign bit is set if one
or more inserts were done. The return value may
be a character code that normally would have been
inserted, but could not be for some reason (e.g.,
convert alphabetic inserts to upper case
requested, but not supported in this
implementation).
The m of m,-256+n:W is always optional. If bit
Standard TECO PAGE 147
Appendix C
value 8 of n is set, m contains up to two
additional termination character codes, one in the
low 8 bits (low byte) and another in the high 8
bits (high byte). If only one extra termination
character is desired, it is placed simply placed
in m thus setting the high 8 bits to zero (which
is already a termination character). If bit value
8 of n is not set, passing the m argument is
undefined...
C.1.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 by 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 PAGE 148
Appendix C
C.2 SPECIFIC FEATURES OF RT-11
[For "RT-11 Operating Characteristics", refer to Appendix D.]
C.3 SPECIFIC FEATURES OF RSTS/E
[For "RSTS/E Operating Characteristics", refer to Appendix E.]
TECO COMMANDS
Command Description
:EGRTS` Switch to private default run-time-system.
:EGRTS foo` Switch to RTS "foo".
:EGFSS string` File string scan "string".
:EGCCL cmd` Try "cmd" as a CCL command.
:EGRUN file` Try to run "file".
:EGRUN file=xx`
Try to run "file" with "xx" placed in core common.
:EGEMT` 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, I, 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.
See also section 5.1.2, File Specification Switches.
Standard TECO PAGE 149
Appendix C
C.4 SPECIFIC FEATURES OF RSX-11/M, RSX-11/D, and IAS
[For "RSX-11 Operating Characteristics", refer to Appendix F.]
Command Description
<CTRL/Z><CTRL/Z><CTRL/Z>
Returns control to the operating system
immediately. Equivalent to typing
<CTRL/C><CTRL/C>.
See also section 5.1.2, File Specification Switches.
C.5 SPECIFIC FEATURES OF VAX/VMS
[For "VAX/VMS Operating Characteristics", refer to Appendix G.]
Command Description
<CTRL/Z><CTRL/Z><CTRL/Z>
Returns control to VAX/VMS immediately.
Equivalent to typing <CTRL/C><CTRL/C>.
EG` Exit with special status
TECO's normal exit status code (as reflected by
the DCL symbols $STATUS and $SEVERITY) is 1
(success). If the exit was due to an EG` command,
the exit status code is 9 (also success).
:EGSYM symbol_name symbol_value`
Defines the DCL local symbol "symbol_name" with a
value string of "symbol_value". Useful for
creating symbols that will be used by a command
procedure upon TECO's exit.
See also section 5.1.2, File Specification Switches.
C.6 SPECIFIC FEATURES OF OS/8
[For "OS/8 Operating Characteristics", refer to Appendix H.]
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 Z.
This command echoes as *Z and does not have to be
followed by a <DELIM>.
See also section 5.1.2, File Specification Switches.
Standard TECO PAGE 150
Appendix C
C.7 SPECIFIC FEATURES OF TOPS-10
[For "TOPS-10 Operating Characteristics", refer to Appendix I.]
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 is identical
to 1EM.
3EM Write an end-of-file record.
6EM Skip ahead one record.
7EM Back up one record.
8EM 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 file backspaced over
(unless the file is the first file on
the tape).
n^Q 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
Standard TECO PAGE 151
Appendix C
negative). This command converts line oriented
command argument values into character oriented
argument values. Used after an expression.
F0 Pointer position of start of window. Same as 6:W.
FZ Pointer position of end of window.
FH Same as F0,FZ.
FX Software maintained horizontal 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.
nFX Set value of FX register to n.
FY 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.
nFY Set value of FY register to n.
FP Equivalent to FY,FX.
m,nFP Equivalent to mFYnFX.
m,nFF Updates FY and FX registers as if the m,nT command
were executed.
nFF 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.
nFQq Compares characters beginning at dot with
characters beginning at the nth character in
Q-register q (0-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.
E=filespec` Renames the input file.
E&filespec` Run the specified program when TECO exits. Can
take a numeric argument which is the run-offset.
0 is the default.
Standard TECO PAGE 152
Appendix C
m,nE* Does an arbitrary TRMOP to your terminal.
[Not available on TOPS-20.]
::Gq Same as :Gq but types literally.
::ER Same as ER but no defaults are used.
^Z Closes output file and exits from TECO.
^P Returns current page number.
n^P Executes P commands until page n has been reached.
n^Y Executes Y commands until page n has been reached.
n,m= Same as m=n^T.
m,n:^T Does an arbitrary TTCALL.
See also section 5.1.2, File Specification Switches.
Standard TECO PAGE 153
Appendix D
APPENDIX D
RT-11 OPERATING CHARACERISTICS
D.1 STARTUP
TECO is started with the
.R TECO
command. TECO is now immediately ready to accept commands. The
text buffer and Q-register areas are empty.
The EDIT command
.EDIT/TECO filespec
is used to edit an already existing file. It is equivalent to
.R TECO
*EBfilespec`Y``
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
.EDIT/OUTPUT:filespec filespec
Another option, /EXECUTE, is also available:
.EDIT/EXECUTE[:string] filespec
The /EXECUTE option causes TECO to process the filespec (assumed
Standard TECO PAGE 154
Appendix D
.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
.R TECO
*ERfilespec`YHXZHKIstring`MZ``
Note the input file remains open and can provide more input to
the macro.
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, EI, 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-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 SRCCOM program can be used
Standard TECO PAGE 155
Appendix D
to verify an editing session.
D.4 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.
D.5 REENTER AND 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.
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.
Standard TECO PAGE 156
Appendix D
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.g., 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 157
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's detached-job
quota has not yet been reached, 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 Q-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 [p,pn] 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 /n, /B+, /, and /B2 may be
applied to the ER, EW, and EB commands. These switches invoke
special handling of program lines containing <LF> or &
continuation characters. See Appendix J for more information.
The file specification switch /B causes TECO to handle the file
as a stream of 8-bit binary characters; normal ASCII format
processing (such as removal of null characters) is not done.
The file specification switches /RONLY, /MODE:n, and
Standard TECO PAGE 158
Appendix E
/CLUSTERSIZE:n can be included in a file specification. TECO
automatically opens any disk input file 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 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 an attempt
is made to set Bit 6 and the user's detached-job quota has been
reached, the request is ignored and Bit 6 will read back as a 0
(assuming the job is attached). If Bit 6 is set and the user's
Standard TECO PAGE 159
Appendix E
detached-job quota has not yet been reached, the job will become
detached. Further reading of Bit 6 will return a 1, indicating
the detached condition.
Standard TECO PAGE 160
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 $TEC/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
Standard TECO PAGE 161
Appendix F
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
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 EI commands which default the .typ field to .TEC.
The /B2 file specification switch may be applied to the ER, EW,
and EB commands and invokes special handling of program lines
containing & continuation characters. See Appendix J for more
information.
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;version`EWname.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.)
Standard TECO PAGE 162
Appendix F
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 ER` 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
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.
Standard TECO PAGE 163
Appendix F
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 -32768#ETET < ... ET; > 32767&ETET ]1 ]0
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 ^O), Bit 5 (no stall on ^T), and Bit 15 (^C
trap).
In addition, TECO always turns off Bit 7 (exit on error, etc.)
every 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
Standard TECO PAGE 164
Appendix F
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:
Standard TECO PAGE 165
Appendix F
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 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 EI` 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 :EITECO``
in the type in buffer. This loads the command line into
Q-register Z 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 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.
Standard TECO PAGE 166
Appendix F
If an EI` 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 EI` 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 167
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,
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, 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 TEC$INIT. If this name does not translate, no
special initialization is done. If it translates to a string of
the form $filespec (where "$" is a dollar sign), TECO executes
the TECO commands in the specified filespec during
initialization. If TEC$INIT translates to any other string, TECO
executes that string as TECO commands during initialization. The
original command line is available in the text buffer when the
user initialization commands execute. Generally, you would set
user private modes and/or flags at this time. This is also the
normal place to detect, strip off, and do something appropriate
with user private qualifiers.
Standard TECO PAGE 168
Appendix G
TECO's memory is controlled by the logical name TEC$MEMORY. 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
TEC$VTEDIT. If the name is defined, the resulting filespec is
used as the file from which to load the scope editor. If
TEC$VTEDIT is not defined, TECO attempts to translate the logical
name TEC$LIBRARY. If that logical is defined, it is used as the
(device and) directory name of where to find VTEDIT.TEC.
Elsewise, TECO defaults to SYS$LIBRARY:VTEDIT.TEC.
These four logical names (TEC$INIT, TEC$MEMORY, TEC$VTEDIT, and
TEC$LIBRARY) are the information holders corresponding to the
four standard :EG commands INI, MEM, VTE, and LIB respectively
(see section 5.1.3).
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 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 .TEC.
Qualifiers may be applied to file specifications to control
format and attributes; see G.11.
The qualifier /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 qualifier is ignored for all other device types.
The presence of version numbers in Files-11 causes file
processing to behave slightly differently under VAX/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;version`
is equivalent to the commands
ERname.typ;version`EWname.typ;0`
Standard TECO PAGE 169
Appendix G
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
VAX/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 ER`:G*`` which types the file string of the current
(primary) input file.
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 VAX/VMS.
G.4 WILD CARD LOOKUP
Wild card file name processing supports all of the wild carding
facilities of RMS. For VAX/VMS V2 and later systems this
includes embedded * and % and multi-level directory wildcarding.
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 _.
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.
TECO's normal exit status code (as reflected by the DCL symbols
Standard TECO PAGE 170
Appendix G
$STATUS and `SEVERITY) is 1 (success). An exit caused by an EG`
command sets the exit status code to 9 (also success). An error
exit caused by an error or <CTRL/C> with the 128 bit set in ET
sets the exit status code to hexidecimal 1000002C which is
SS$_ABORT with the inhibit message bit set. All other exits are
from fatal internal errors and the exit status code is the fatal
error status code.
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:
[0 [1 -32768#ETET < ... ET; > 32767&ETET ]1 ]0
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> is 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
Standard TECO PAGE 171
Appendix G
after TECO has closed its files and exited. This feature works
only on VAX/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 ^O), Bit 5 (no stall on ^T), and Bit 15 (^C
trap).
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 VAX/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 VAX/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.
Qualifiers may be applied to the input and output file
specifications. When a carriage control qualifier is applied to
an input file, the file is read as if it had that attribute;
when the qualifier is applied to an output file, the file is
Standard TECO PAGE 172
Appendix G
written with that attribute. Applying a qualifier to an EB file
specification causes the qualifier to apply to both input and
output files.
The following qualifiers may be used to control input processing:
/-CR Force "none" file record attributes
/CR Force "Implied" file record attributes
/FT Force "FORTRAN" file record attributes
/FTN Same as /FT
/B2 BASIC-PLUS-x handling (see Appendix J)
The following qualifiers may be used to control output
processing:
/VAR Create file record format "Var"
/STM Create file record format "Stm"
/-CR Create file record format "None"
/CR Create file record format "Implied"
/FT Create file record format "FORTRAN"
/FTN Same as /FT
/B2 BASIC-PLUS-x handling (see Appendix J)
The following qualifiers may be used to control
open/create/access options:
/RW Rewind before open/create
/SH Enable file sharing
/SHR Same as /SH
Below is a complete list of valid TECO input file record
format/attribute combinations and the resulting file
format/attribute combinations for EB commands:
Input Output
Format Attribute Format Attribute
Fix none Var Implied
Fix Implied Var Implied
Fix FORTRAN Var FORTRAN
Var none Var Implied
Var Implied Var Implied
Var FORTRAN Var FORTRAN
VFC Print Var Implied
Stm none Stm Implied
Stm Implied Stm 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
Standard TECO PAGE 173
Appendix G
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 EI` command early on. This causes
the remainder of the indirect file to be discarded and further
input to be read from the terminal as soon as the double alt mode
is encountered.
G.12 COMMAND LINE PROCESSING
The mechanism used to process the command line in VAX/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 a built-in command decoding
TECO macro into Q-register Y and the original command line
(including the keyword TECO, MAKE, or MUNG) into Q-register Z.
It then looks for a user private command decoding TECO macro by
attempting
1. an EITECO`` if the logical name "TECO" exists, elsewise
2. an EISYS$LOGIN:TECO`` if the logical name "SYS$LOGIN"
exists, elsewise
3. an EITECO``
If the EI succeeds, the found file is executed. The file may, or
course, do anything it pleases. Generally, you would use a
private command decoder to automate some sort of system specific
editing package. For example, to implement an editing package
called FOOBAR, you would define the logical TECO with
$ DEFINE/SYSTEM TECO dev:[dir]FOOBAR
define a DCL foreign command symbol with
$ FOOBAR :== $SYS$SYSTEM:TECO FOOBAR
and place the TECO macro the implements the FOOBAR editor in
dev:[dir]FOOBAR.TEC. Now, whenever a TECO, MAKE, MUNG, or FOOBAR
command is issued, the your macro will gain control. It should
fetch Q-register Z (the original command line), check the command
type, if it's FOOBAR then go do its thing, else it should
terminate and execute TECO's built-in command decoder.
GZ ! Put command into text buffer !
J ::@S/FOOBAR/"U ! Is the command for us? !
@EI// ! Not for us, turn us off !
Standard TECO PAGE 174
Appendix G
HK ! Clear out text buffer !
MY ! Let the real TECO takeover !
' ! It's for us, just flow on... !
$$ ! Double ESCAPE; 1st command's end !
... ! Do your own thing here... !
This mechanism should not be used for simple initialization; the
standard TEC$INIT facility should suffice for that. This
facility is provided for the sophisticated user who wants his own
command processing and thus wishes to usurp control.
G.13 HELP
On VAX/VMS, TECO can provide HELP in any of three ways.
You can issue a HELP command at TECO's asterisk prompt. This
HELP command obeys the standard VAX/VMS HELP command syntax
rules. The HELP command may be terminated by either RETURN or
``.
You can type the / command immediately after an error. (See
section 4.2.) TECO will respond with a one-paragraph description
of the error.
You can set EH to 3. (See section 5.16.) This will cause TECO to
automatically respond with a one-paragraph description of any
error which occurs.
G.14 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.
The following commands, if used in a LOGIN.COM file, would define
the three normal TECO invocation commands:
$ TE*CO :== $SYS$SYSTEM:TECO TECO
$ MAK*E :== $SYS$SYSTEM:TECO MAKE
$ MU*NG :== $SYS$SYSTEM:TECO MUNG
The asterisk allows for abbreviation of these commands. For
example, the TE*CO definition permits TE, TEC, or TECO.
One may include command qualifiers in the command definitions.
For example, one can define a command to invoke TECO with VTEDIT
as follows:
$ VTECO :== $SYS$SYSTEM:TECO TECO /VTEDIT
Standard TECO PAGE 175
Appendix H
APPENDIX H
OS/8 OPERATING CHARACTERISTICS
H.1 STARTUP
TECO is started with the
.R 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
*EBfilespec`Y``
OS/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``
OS/8 "remembers" the filespec as the name of the last file that
was edited.
The command
.TECO filespec1=filespec2
is used to edit filespec2 into filespec1. That is, filespec2 is
opened as the input file, and filespec1 is created as the output
file. It is equivalent to
.R TECO
*ERfilespec2`EWfilespec1`Y``
OS/8 "remembers" the filespec1 as the name of the last file that
was edited.
Standard TECO PAGE 176
Appendix H
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 bootstraps.
The command
.MUNG filespec
executes the specified TECO program. The default extension is
.TEC . This is equivalent to the sequence:
.R TECO
*ERfilespec`YHXYHKMY``
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:
.R TECO
*ERfilespec`YHXYHKIargument`MY``
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:
Standard TECO PAGE 177
Appendix H
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.
H.3 FILE SPECIFICATION
The file access commands ER, EB, and EW accept a file
specification in the standard OS/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 OS/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 OS/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.
Standard TECO PAGE 178
Appendix H
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 EG` command, then OS/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 OS/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 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!
*EX``
.EXECUTE FOO
(get error messages)
.TECO
*!fix bugs!
*EG`` !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
Standard TECO PAGE 179
Appendix H
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/O 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 Z might recover your data.
If TECO is executing commands or doing I/O, 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. 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.
Standard TECO PAGE 180
Appendix H
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/S`
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, ER`, EW`)
2. Auxiliary command streams (EI)
3. Wildcards (EN)
4. Zeroing of directories (EZ)
5. Magtape commands (EM)
6. View command (nV)
Standard TECO PAGE 181
Appendix H
7. Bounded searches
8. Anchored searches
9. Search verification (ES)
10. Command verification (EV)
11. Backward searches
12. Extended string build or match constructs (^Ex)
The following incompatibilities exist between TECO-8 and Standard
TECO:
1. 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 compatibility with OS/8
TECO V5.)
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 is 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 0.
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
Standard TECO PAGE 182
Appendix H
than the user's imagination.
H.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 Q-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
(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
Z when TECO.INI gets control. That command has not as yet been
executed. The initialization file may examine the contents of
Q-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^@
MW+0ES.,.XWMZES"N0ESMX'``
which loads TECO.INI into Q-register W, 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
Standard TECO PAGE 183
Appendix H
Q-register X (via an MX command) after it executes the initial
TECO command (in Q-register Z). 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
@I^@ccl command^@:ER/SYS:TECO.TEC/"F^ACan't find SYS:TECO.TEC
^A^C^CA.,ZXV.,ZKMV.,.XV``
which puts your CCL command in the text buffer and then loads
(the 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.
H.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:
Standard TECO PAGE 184
Appendix H
1. The I/O-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`, EWfile`, EBfile`, :ERfile`, :EBfile`
Q-overlay Otag`, n"Xthen|else', n;, search;, n<...>, <...>
X-overlay EC, EG`, EGcmd`, EF, EK, EX,
*q, ?, nEJ, n^_, V, ^B, ^E, ^F, ^L, ^N, ^Uqtext`
F-overlay ED, EH, EO, ES, ET, EU, ^D, ^O,
\, n\, n=, n==, n:=, n:==, |
Several things are immediately obvious. The command 0TT 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 Q.) The commands \ and = should be
used as infrequently as possible from within long-running macros.
Xq 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.
Standard TECO PAGE 185
Appendix H
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
.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:
Standard TECO PAGE 186
Appendix H
.GET SYS:TECO
.SAVE SYS:TECO;5200
H.19 VT05 SUPPORT
TECO will automatically handle command string scope editing
correctly on a VT05. The VT support (obtained via use of the -1W
command) will handle VT05's correctly. The VTEDIT macro does not
currently support the VT05 keypad.
Standard TECO PAGE 187
Appendix I
APPENDIX I
TOPS-10 OPERATING CHARACTERISTICS
I.1 STARTUP
TECO is started with the
.R 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 $3EH
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
.R TECO
*EWfilespec``
TOPS-10 "remembers" the filespec as the name of the last file
that was edited.
The command
.MAKE filespec1=filespec2
is used to edit filespec2 into filespec1. That is, filespec2 is
opened as the input file, and filespec1 is created as the output
file. It is equivalent to
Standard TECO PAGE 188
Appendix I
.R TECO
*ERfilespec2`EWfilespec1`Y``
TOPS-10 "remembers" the filespec1 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 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 0
2 0 (1 if terminal is a scope)
4 1
8 0
16 0
32 0
64 0
128 1 (TECO's prompt sets this to 0)
256 0
Standard TECO PAGE 189
Appendix I
512 0 (1 if VT support is present)
1024 0
2048 0
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: 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 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.
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 EG` command, then TOPS-10 will
re-execute the last explicit compile-class command that was
executed during that session.
Standard TECO PAGE 190
Appendix I
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, ER`, EW`)
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, 0A gives the value of the
current character.
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.
Standard TECO PAGE 191
Appendix I
I.9 INSTALLATION INSTRUCTIONS
To create TECO for TOPS-10 from the sources, issue the following
commands:
.LOAD/MAC/COMPILE TECO10.T10+TECO10.MAC
.SAVE TECO10
.LOAD/MAC/COMPILE TECERR.T10+TECO10.MAC
.SAVE TECERR
To create TECO for TOPS-20 from the sources, issue the following
commands:
@LOAD/MAC/COMPILE TECO10
@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 TECO10 (or TECO20)
*EITECO10.TEC``
*EETECO``
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:FOOBAR`
will read TMPCOR file FOO or 023FOO.TMP.
I.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). Q-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.
Standard TECO PAGE 192
Appendix I
I.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 ]() causes Q-register A to share with the text
buffer. The old main 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 Q-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 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/SUPLSN`
EBfilespec/SUPLSN`
Standard TECO PAGE 193
Appendix I
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 line-sequence numbers, if they exist, will be
suppressed.
EWfilespec/SUPLSN`
causes the line-sequence numbers to be suppressed at output time.
Tabs following the line-sequence numbers will also be suppressed
if they exist.
EWfilespec/GENLSN`
EBfilespec/GENLSN`
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.
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 Mq 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 Q-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 Mq 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 Mq command with an <ESCAPE>. The MqA command will
compile the A command as if it were an nA command rather than an
APPEND.
Standard TECO PAGE 194
Appendix J
APPENDIX J
BASIC-PLUS/BASIC-PLUS-2 HANDLING
J.1 PURPOSE
In BASIC-PLUS and BASIC-PLUS-2 a program statement may be
continued over more than one text line. A text line which is not
the last text line of a given statement may need to be flagged as
a "continued" line. (See the appropriate language reference
manual for requirements of each version of each language
processor.)
The standard continuation flag is the & character. A line which
must be marked as "continued" is written with an & as the last
non-whitespace character before the <CR><LF>.
(An older form of continuation was, in BASIC-PLUS only, to end
the text line by typing a <LF> key instead of <CR>.)
The switches described in this appendix cause TECO to manipulate
the text files in such a way that each text line appears in the
editing buffer to be completely "conventional": that is, each
text line ends with a standard <CR><LF>, and no text line has a
trailing & character. You can correctly edit well-formed
BASIC-PLUS or BASIC-PLUS-2 source files without having to be
concerned about continuation conventions.
J.2 METHOD
TECO allows you to work with "unemcumbered" lines in the editing
buffer by removing continuation conventions as each text line is
read in. You indicate that you want this processing by
specifying a switch on the file specification supplied to the ER
(or the EB) command.
TECO (again) adds appropriate continuation conventions to each
text line as it is written out from the editing buffer. You
indicate that you want this processing by specifying a switch on
the file specification supplied to the EW (or the EB) command.
J.3 INPUT PROCESSING
As TECO reads each new text line into the editing buffer, it is
examined for a trailing & character. If one is found, TECO
removes it, and then additionally removes any trailing spaces
and/or tabs.
(In the case of <LF> continuation, TECO converts that kind of
Standard TECO PAGE 195
Appendix J
line terminator character sequence to <CR><LF>.)
The available switches follow. (Consult the appropriate appendix
to see which switches are supported on your operating system.)
/B2 TECO strips trailing & sequences
/n Same as /B2 for input processing
/B+ TECO changes <LF><CR><NUL>
sequences to <CR><LF>.
J.4 OUTPUT PROCESSING
As TECO writes each text line from the editing buffer, it takes a
look at the text line which will follow. If the following line
begins with a digit, the current line is written without change.
If the following line does not begin with a digit, TECO assumes
that the current line must be continued.
The convention applied to an output text line which TECO marks as
"continued" depends on the form of the switch you specify.
(Consult the appropriate appendix to see which switches are
supported on your operating system.)
/B2 TECO appends a space and an &
/n TECO appends an &, after padding out
the line with tabs and/or spaces to make
the & appear in column n
/B+ TECO ends the line with a
<LF><CR><NUL> sequence
(instead of <CR><LF>.)
J.5 FORM FEED INTERACTION
When TECO reads a page of text into the editing buffer, it stops
when a <form feed> character is encountered, or when the buffer
has been filled to capacity. In the latter case, the last line
will be complete, and will include its line delimiter. However,
no look-ahead is done to examine the next line in the file.
If TECO is being used with one of the switches described in this
appendix, a very long BASIC-PLUS-x source program which is not
segmented with <FF> characters can cause the last line in the
buffer to not be the last text line of a multi-line source
statement.
When the buffer is written to the output file, TECO has no way of
determining whether the next text line (the first line of the
Standard TECO PAGE 196
Appendix J
next buffer load) will begin with a line number. TECO makes the
assumption that the buffer's last text line is not to be
"continued", and terminates it with <CR><LF>. If this assumption
is incorrect (frequently the case), remaining text lines of that
multi-line statement will be lost when the program is
subsequently OLDed.
To avoid this problem, lengthy BASIC-PLUS or BASIC-PLUS-2
programs should be segmented with <form feed> characters before
editing them using these TECO switches. Segments of
approximately 150 to 200 lines are convenient. Starting a new
page even more frequently to make listings readable isn't a bad
idea, either.
Standard TECO PAGE 197
Glossary
GLOSSARY OF OBSCURE TECO TERMS
Accent grave
The ` character. Echoed for TECO's text and
command string delimiter when an ESCape surrogate
is in effect. Actually set as the ESCape
surrogate by the 8192 ET bit.
Abort-on-error bit
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.
<ALTMODE> 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".
Anchored search
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.
Argument pair 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.
ASCII code The American Standard Code for Information
Interchange. The code used by TECO to represent
characters internally. Consult Appendix A for
details.
@-sign modified command
A command that is preceded by an @-sign modifier.
@-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
Standard TECO PAGE 198
Glossary
user-supplied delimiter rather than to be
delimited only at the end by a TECO-designated
delimiter (normally <ESCAPE>).
Automatic refresh
A refresh of the buffer display done when
scrolling is active (when 7:W is non-zero) just
before TECO issues its asterisk prompt. Automatic
refresh can be disabled by the 128 ED bit.
Automatic type 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.
Auto-trace mode
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.
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
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.
Case flagging 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.
Standard TECO PAGE 199
Glossary
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
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
(although it has a number of facilities for
dealing with text lines, too).
Colon-modified command
A command that is preceded by a colon (:)
modifier.
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).
Command line The current line of the command string that is
being typed into TECO.
Command string 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.
Command string
The string of TECO commands that is currently
being typed into TECO, or is currently being
executed by TECO.
Comment 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. The comment is enclosed in
exclamation marks.
Compile-class command
A set of operating systems commands (such as
COMPILE) that causes compilation (translation) of
Standard TECO PAGE 200
Glossary
a source file written in a computer language into
machine instructions. The EG` 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).
Conditional 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 ^X (Caret-X) except
for <TAB>, <LF>, <VT>, <FF>, AND <CR> which have
their normal display, and <ESC> which is displayed
as $ (dollar sign) or, if a user-designated ESCAPE
surrogate is in effect, as ` (accent grave).
Anytime a single control-character, <CTRL/X> is a
valid TECO command, the two-character sequence,
^X, 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
The character immediately following the current
text buffer pointer position.
Cursor 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.
Standard TECO PAGE 201
Glossary
<DELIM> Terminology in this manual for an ESCape typed at
the console and passed to TECO. On newer
terminals, there may be no ESCape key. Some
versions of TECO provide for an "ESCape
surrogate", a user-designated key which is to
cause transmission of an ESCape to TECO. The term
<DELIM> is used to indicate an ESCape transmitted
to TECO whether it was generated by the designated
"surrogate" key or by a "real" ESCape key. An
ESCape types out as ` when a surrogate is active,
but as $ when no surrogate is active.
Destructive search
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.
Display editor
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 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. A more modest use of a CRT
terminal (and which requires no macro support) is
scrolling, q.v.
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
Standard TECO PAGE 202
Glossary
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.
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>. When no
ESCape surrogate is active, an ESCape types out as
$ (dollar sign). See also <DELIM>.
Standard TECO PAGE 203
Glossary
ESCape surrogate
A character (designated via the 8192 ET bit, or
via the EE flag) which causes an ESCape to be
transmitted to TECO. When an ESCape surrogate is
active, an ESCape types out as ` (accent grave).
See also <DELIM>.
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 characters
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, EE, 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 F|.
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.
Standard TECO PAGE 204
Glossary
Garbage collection
A process used by TECO-10 to collect unused memory
when more memory is required.
Global Q-register
A Q-register available throughout all macro levels
(including "outside", or at prompt level). Global
Q-registers are named A-Z and 0-9. See also Local
Q-Registers, and section 3.3.2.
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 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.
Help level 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 command
A special command to TECO that takes immediate
effect, requiring no <DELIM>s to begin its
execution.
"Immediate action editing characters" are commands
such as <DELETE> and <CTRL/U>, which perform
editing of the TECO command string currently being
typed in. See section 4.1.
An "immediate inspection command" is a
single-character command which can be typed as the
very first character after TECO's prompting
asterisk, and which causes the current location
counter to be moved by one line and the new
current line to be typed out. Examples are <LF>
and <BS>. See section 1.6.1.
"Immediate action commands" are other commands
Standard TECO PAGE 205
Glossary
which may be typed right after TECO's prompting
asterisk, such as the *q to save the
previously-typed command in a Q-register or the ^W
to re-display a scrolling buffer window. See
section 4.2.
"Immediate ESCape sequence" commands are invoked
by keys which generate escape sequences, such as
"arrow" or "auxiliary keypad" keys. See section
4.4. 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.
Iteration 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.
Kernel 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 I/O module tailored for the desired
operating system with the kernel.
Keypad editor 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.
Line 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
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 facilities that work
with lines.
Standard TECO PAGE 206
Glossary
Line-wrap mode
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.
Literal type out mode
A mode that TECO can be put into by setting the
1's bit in the ET flag, or (for a single character
on a one-shot basis) by using the :^T command. 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 $ or, if a user-designated
ESCAPE surrogate is in effect, 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.
Local Q-register
A Q-register available to only a single macro
level (including "outside", or at prompt level).
The local Q-registers for a particular macro level
are automatically saved and restored by TECO
around execution of a lower-level macro. Local
Q-registers are named .A-.Z and .0-.9. See also
Global Q-Registers, and section 3.3.2.
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. When one TECO
macro calls another, the calling macro is said to
be at the higher macro level, and the called macro
at the lower macro level.
Match control construct
A command, consisting of certain special
characters, used within a search string to
Standard TECO PAGE 207
Glossary
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.
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 can be concatenated back
together.
Standard TECO PAGE 208
Glossary
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. TECOs are
pipeline editors, with the exception of TECO-11 on
VAX/VMS (which offers the capability to page
backwards as well as forward).
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, as opposed to being executed from a
macro.
Q-register One of 36 global or 36 local user-accessible
registers provided by TECO. Each Q-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
"macros".
Q-register push down list
A last-in first-out stack available to users for
saving and restoring the contents of Q-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 the ET flag.
Scrolling A form of TECO operation available on CRT
terminals capable of supporting split-screen
operation. The bottom n lines are used for TECO's
Standard TECO PAGE 209
Glossary
asterisk prompt and the usual typed command lines;
the remaining lines above are used for an
automatically-updated window into the text buffer.
A valuable training aid: one can experiment with
TECO commands and immediately observe their
effects. Not a bad idea for advanced users,
either. Controlled by the n,7:W command.
SEALL 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 print. Controlled by the 3:W flag
(see section 5.17). Also known as "View all"
mode.
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.
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 ^X 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.
Standard TECO PAGE 210
Glossary
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.
TECO.TEC A TECO macro used by many operating systems to
parse the user's edit-class commands.
TECO I/O mode 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>, <DELIM>, etc.) are
typed.
TECO's prompt refers to the asterisk (*) that TECO prints to
indicate that it is ready to accept commands.
Standard TECO PAGE 211
Glossary
TECO SIG A DECUS Special Interest Group, consisting of
users who are dedicated to the spread of,
improvement of, and standardization of TECO.
Terminal characteristics flag
A bit-encoded flag, referenced via the ET command,
that contains information about the user's console
terminal and specifies in what manner TECO should
support it.
Text buffer
The main buffer used by TECO to hold the text to
be edited.
Text buffer pointer
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.
Then-clause 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.
Tracing 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.
Trace mode 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.
Truncate mode 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.
Type-out-time 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
Standard TECO PAGE 212
Glossary
affect the type out.
Up-arrow mode A standard mode of operation wherein upon type
out, TECO will display control characters by
typing the visible two-character sequence ^X 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>.
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 print. Controlled by the 3:W flag
(see section 5.17). Also known as SEALL mode.
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
Standard TECO PAGE 213
Glossary
in the ED flag.
Standard TECO PAGE 214
Index
INDEX TO TECO COMMANDS
AND SPECIAL CHARACTERS
NULL Discarded on input; Ignored in comman . . 119
^A Output message to terminal . . . . . . . . 64
^B Current date . . . . . . . . . . . . . . . 90
^C Stop execution . . . . . . . . . . . . . . 40, 53, 99
^D Set radix to decimal . . . . . . . . . . . 87
^E Form Feed flag . . . . . . . . . . . . . . 90
^E<n> (Match char) Match ASCII code n . . . . . 79
^EA (Match char) Match alphabetics . . . . . . 78
^EB (Match char) Match separator char . . . . 78
^EC (Match char) Match Symbol Constituent . . 78
^ED (Match char) Match numerics . . . . . . . 78
^EGq (Match char) Match contents of Q-reg . . 78
^EL (Match char) Match line terminators . . . 78
^EMx (Match char) Match any number of x . . . . 78
^EQq (String char) Use contents of Q-reg q . . 77
^ER (Match char) Match alphanumerics . . . . . 78
^ES (Match char) Match non-null space/tab . . 78
^EUq (String char) Use ASCII code in Q-reg . . 77
^EV (Match char) Match lower case alphabe . . 78
^EW (Match char) Match upper case alphabe . . 78
^EX (Match char) Match any character . . . . . 79
^E[] (Match char) Match one of list . . . . . . 79
^F Contents of console switch register . . . 90
n^F Return terminal number of job n . . . . . 91
^G^G Kill command string . . . . . . . . . . . 40
^G<sp> Retype current command line . . . . . . . 40
^G* Retype current command input . . . . . . . 40
^H Current time of day . . . . . . . . . . . 91
BS Back up and type one line . . . . . . . . 17, 41
TAB Insert tab and text . . . . . . . . . . . 69
LF Line terminator; Ignored in commands . . . 9, 34, 117
LF Advance and type one line . . . . . . . . 17, 41
VT Line terminator; Not a TECO command . . . 34
FF Page terminator; Output Form Feed . . . . 9, 34
CR End input line; Ignored in commands . . . 9, 40, 117
^N End of file flag . . . . . . . . . . . . . 91
^Nx (Match char) Match all but x . . . . . . . 77
^O Set radix to octal . . . . . . . . . . . . 87
^O Kill terminal output . . . . . . . . . . . 65
^P Not a TECO command . . . . . . . . . . . . 214
^Q Resume terminal output . . . . . . . . . . 65
^Q Convert line arg into character arg . . . 146, 150
^Qx (String char) Use x literally . . . . . . 76
^R Value of current radix . . . . . . . . . . 87
n^R Set radix to n . . . . . . . . . . . . . . 87
^Rx (String char) Use x literally . . . . . . 76
^S -(length) of last referenced string . . . 91
^S Suspend terminal output . . . . . . . . . 65
^S Save last command string . . . . . . . . . 149
Standard TECO PAGE 215
Index
^S (Match char) Match separator char . . . . 77
^T ASCII value of next character typed . . . 91
^T Read and decode next keystroke typed . . . 91
n^T Type ASCII character of value n . . . . . 63
n:^T Output binary byte of value n . . . . . . . 63
^U Kill command line . . . . . . . . . . . . 40
^Uq Put string into Q-register q . . . . . . . 80
:^Uq Append string to Q-register q . . . . . . 81
n^Uq Put ASCII char "n" into Q-register q . . . 81
n:^Uq Append ASCII char "n" to Q-register q . . 81
^V Enable lower case conversion . . . . . . . 121
^Vx (String char) Force x to lower case . . . 76
^W Enable upper case conversion . . . . . . . 121
^W Refresh scrolled display . . . . . . . . . 41
^Wx (String char) Force x to upper case . . . 76
^X Search mode flag . . . . . . . . . . . . . 112
^X (Match char) Match any character . . . . . 77
^Y Equivalent to ".+^S,." . . . . . . . . . . 92
^Z Size of text in all Q-registers . . . . . 92
^Z^Z^Z Immediate exit from TECO . . . . . . . . . 40
ESC String and command terminator . . . . . . 7, 39, 99
ESC String and command terminator . . . . . . 119
^[ String and command terminator . . . . . . 119
^\ Not a TECO command . . . . . . . . . . . . 214
^] Not a TECO command . . . . . . . . . . . . 214
^^x ASCII value of x . . . . . . . . . . . . . 92
^_ Ones complement (logical NOT) . . . . . . 86
SP Ignored in commands . . . . . . . . . . . 117
! Define label . . . . . . . . . . . . . . . 95
" Start conditional . . . . . . . . . . . . 101
n"< Test for less than zero . . . . . . . . . 102
n"= Test for equal to zero . . . . . . . . . . 102
n"> Test for greater than zero . . . . . . . . 102
n"A Test for alphabetic . . . . . . . . . . . 101
n"C Test for symbol constituent . . . . . . . 101
n"D Test for numeric . . . . . . . . . . . . . 102
n"E Test for equal to zero . . . . . . . . . . 102
n"F Test for false . . . . . . . . . . . . . . 102
n"G Test for greater than zero . . . . . . . . 102
n"L Test for less than zero . . . . . . . . . 102
n"N Test for not equal to zero . . . . . . . . 102
n"R Test for alphanumeric . . . . . . . . . . 102
n"S Test for successful . . . . . . . . . . . 102
n"T Test for true . . . . . . . . . . . . . . 102
n"U Test for unsuccessful . . . . . . . . . . 102
n"V Test for lower case . . . . . . . . . . . 102
n"W Test for upper case . . . . . . . . . . . 102
# Logical OR . . . . . . . . . . . . . . . . 86
$ Separate TECO commands . . . . . . . . . . 120
$ ESCape (no surrogate) typeout . . . . . . 3
n%q Add n to Q-register q and return resu . . 80
& Logical AND . . . . . . . . . . . . . . . 86
' End conditional . . . . . . . . . . . . . 101
Standard TECO PAGE 216
Index
( Expression grouping . . . . . . . . . . . 86
) Expression grouping . . . . . . . . . . . 86
* Multiplication . . . . . . . . . . . . . . 86
*q Save last command in Q-register q . . . . 42
+ Addition . . . . . . . . . . . . . . . . . 86
, Argument separator . . . . . . . . . . . . 86
- Subtraction or negation . . . . . . . . . 86
. Current pointer position . . . . . . . . . 89
/ Division . . . . . . . . . . . . . . . . . 86
/ Type detailed explanation of error . . . . 41
0-9 Digit . . . . . . . . . . . . . . . . . . 214
: Modify next command . . . . . . . . . . . 33
; Exit iteration on search failure . . . . . 97
n; Exit iteration if n is positive . . . . . 97
:; Exit iteration on search success . . . . . 97
n:; Exit iteration if n is negative . . . . . 97
n< Iterate n times . . . . . . . . . . . . . 94
= Type in decimal . . . . . . . . . . . . . 87
== Type in octal . . . . . . . . . . . . . . 87
=== Type in hexadecimal . . . . . . . . . . . 87
:= Type in decimal, no carriage return . . . 87
:== Type in octal, no carriage return . . . . 87
:=== Type in hexadecimal, no carriage retu . . 87
> End iteration . . . . . . . . . . . . . . 94
? Toggle trace mode . . . . . . . . . . . . 119
? Type out command string in error . . . . . 41
@ Modify next text argument . . . . . . . . 33
A Append to buffer . . . . . . . . . . . . . 58
nA ASCII value of char in buffer . . . . . . 89
n:A Append n lines to buffer . . . . . . . . . 58
B 0 - beginning of buffer . . . . . . . . . 89
nC Advance n characters . . . . . . . . . . . 61
nD Delete n characters . . . . . . . . . . . 66
m,nD Delete between m and n . . . . . . . . . . 66
DELIM Character typed as surrogate for ESCa . . 2, 7, 30, 39, 107, 111
DELIM Advance and type one line . . . . . . . . 17, 41
E%q Write Q-register q into a file . . . . . . 57
EA Select secondary output stream . . . . . . 54
EB Open input and output . . . . . . . . . . 49
EC Close out (copy in to out and close) . . . 52
ED Edit mode flag . . . . . . . . . . . . . . 105
EE ESCape surrogate character . . . . . . . . 107
EF Close output file . . . . . . . . . . . . 52
EG Close out and exit with command . . . . . 52
:EG Execute operating system function . . . . 52, 148, 149
EH Help level flag . . . . . . . . . . . . . 107
EI Open indirect command file . . . . . . . . 54
m,nEJ Set environment characteristics . . . . . 104
nEJ Return environment characteristics . . . . 103
EK Kill output file . . . . . . . . . . . . . 53
EL Open log file . . . . . . . . . . . . . . 53
nEM Position magtape . . . . . . . . . . . . . 150
EN Wildcard lookup . . . . . . . . . . . . . 56
Standard TECO PAGE 217
Index
EO Version of TECO . . . . . . . . . . . . . 93
nEO Set TECO to function as version n . . . . 108
EP Select secondary input stream . . . . . . 54
EQq Read file into Q-register q . . . . . . . 56
ER Open input file . . . . . . . . . . . . . 49, 54
ES Search verification flag . . . . . . . . . 108
ET Type out control flag . . . . . . . . . . 109
EU Case flagging flag . . . . . . . . . . . . 112
EV Edit verify flag . . . . . . . . . . . . . 112
EW Open output file . . . . . . . . . . . . . 50, 54
EX Close out and exit . . . . . . . . . . . . 53
EY Read without yank protection . . . . . . . 60
EZ Zero output tape . . . . . . . . . . . . . 53
nE_ Search without yank protection . . . . . . 72
F' Flow to end of conditional . . . . . . . . 98
F< Flow to start of iteration . . . . . . . . 98
F> Flow to end of iteration . . . . . . . . . 98
F| Flow to ELSE part of conditional . . . . . 99
m,nFB Search between locations m and n . . . . . 73
nFB Search, bounded by n lines . . . . . . . . 73
m,nFC Search and replace between m and n . . . . 74
nFC Search and replace over n lines . . . . . 74
nFD Search and delete string . . . . . . . . . 66, 74
nFK Search and delete intervening text . . . . 67, 74
nFN Global string replace . . . . . . . . . . 73
FR Replace last string . . . . . . . . . . . 69
nFS Local string replace . . . . . . . . . . . 73
nF_ Destructive search and replace . . . . . . 74
Gq Get string from Q-register q into buf . . 83
G* Get last filespec string into buffer . . . 145
:Gq Type Q-register q on terminal . . . . . . 83
G_ Get last search string into buffer . . . . 146
H Equivalent to "B,Z" . . . . . . . . . . . 89
I Insert text . . . . . . . . . . . . . . . 68
nI Insert ASCII character "n" . . . . . . . . 68
nJ Move pointer to "n" . . . . . . . . . . . 61
nK Kill n lines . . . . . . . . . . . . . . . 66
m,nK Delete between m and n . . . . . . . . . . 67
nL Advance n lines . . . . . . . . . . . . . 62
Mq Execute string in Q-register q . . . . . . 84, 90
nN Global search . . . . . . . . . . . . . . 72
O Go to label . . . . . . . . . . . . . . . 95
nO Computed goto . . . . . . . . . . . . . . 96
nP Advance or back up n pages . . . . . . . . 59
m,nP Write out chars m to n . . . . . . . . . . 59
nPW Write buffer n times . . . . . . . . . . . 59
m,nPW Write out chars m to n . . . . . . . . . . 59
Qq Number in Q-register q . . . . . . . . . . 83, 90
:Qq Size of text in Q-register q . . . . . . . 83, 90
nR Back up n characters . . . . . . . . . . . 62
nS Local search . . . . . . . . . . . . . . . 71
m,nS Search for nth occurrence within m ch . . 145
::S Compare string . . . . . . . . . . . . . . 73
Standard TECO PAGE 218
Index
SEEALL "View All" characters display mode . . . . 29
nT Type n lines . . . . . . . . . . . . . . . 63
m,nT Type from m to n . . . . . . . . . . . . . 63
nUq Put number n into Q-register q . . . . . . 80
nV Type n current lines . . . . . . . . . . . 63
m,nV Type m before & n after current line . . . 64
W Scope "WATCH" . . . . . . . . . . . . . . 113
n:W Return scope characteristics . . . . . . . 114, 146
m,n:W Set scope characteristics . . . . . . . . 115
nXq Put n lines into Q-register q . . . . . . 81
m,nXq Put characters m to n into Q-register . . 81
n:Xq Append n lines to Q-register q . . . . . . 82
m,n:Xq Append characters m to n into Q-regis . . 82
Y Read into buffer . . . . . . . . . . . . . 59
Z End of buffer value . . . . . . . . . . . 89
[q Q-register push . . . . . . . . . . . . . 83
\ Value of digit string in buffer . . . . . 88, 90
n\ Convert n to digits in buffer . . . . . . 88
]q Q-register pop . . . . . . . . . . . . . . 82
n_ Global search without output . . . . . . . 72
` ESCape surrogate typeout . . . . . . . . . 3, 30, 39, 107, 111
a-z Treated the same as upper case A-Z . . . . 214
{ Not a TECO command . . . . . . . . . . . . 214
| Start ELSE part of conditional . . . . . . 101
} Not a TECO command . . . . . . . . . . . . 214
~ Not a TECO command . . . . . . . . . . . . 214
DEL Delete last character typed in . . . . . . 39