Trailing-Edge
-
PDP-10 Archives
-
BB-FP64A-SB_1986
-
10,7/dteco/dteco.mem
There are 4 other files named dteco.mem in the archive. Click here to see a list.
1.0 Introduction
DTECO (Display TECO) is basically normal TECO with some special termi-
nal handling for such video display terminals as DEC's VT05, VT50,
VT52, or VT100. In addition, there are various "enhancements" in DTECO
such as system crash recovery which are not "display" oriented.
In general, operation (and philosophy) of DTECO is the same as TV on
TOPS-20 systems. The major difference is that DTECO maintains all
standard TECO commands/features/quirks. DTECO extensions (new com-
mands/features) in some cases are the same as in TV (e.g., the "space"
command), in some cases are similar, and other cases are just plain
different.
2.0 Operation
Basic operation of DTECO is the same as TECO (DTECO is in fact a plug-
in replacement for TECO). When first started, DTECO will read
SWITCH.INI to get and set any default processing modes desired.
Whenever started, restarted (.REENTER command), or continued DTECO
will read the terminal type from the monitor, and if the terminal is
one which DTECO recognizes (see list below) DTECO will initiate "dis-
play" mode, otherwise DTECO simply acts like TECO.
DTECO %26 runs in both extended and non-extended addressing environ-
ments. In an extended addressing system (TOPS10 7.03 or later), DTECO
will take advantage of the potentially large address space available
for editing very large text files (in theory, approximately 35 million
characters maximum).
2.1 Screen Display Mode
When entering display mode DTECO reads the screen width and height
from the monitor in order to figure out what size display image to
build. If the height ("page size") is 0 then DTECO will default to the
standard size for that terminal type (see list below).
In display mode the top 10/12's of the screen is used as a "window"
into the text (edit) buffer and the remainder of the screen is devoted
to user command typein. The logical text cursor (".") is displayed on
the screen as a slash character followed by a backslash character
(like so: /\). Normal text characters appear as themselves, and most
control characters appear in up-arrow form (Control-A for example
would appear as ^A). Tabs appear as blank space on the screen (a tab
stop is set every 8 character positions). Carriage return-line feed
pairs appear as themselves (i.e., a new display line starts). A stand-
alone carriage return appears as ^M. A standalone line feed appears as
^J and starts a new display line with leading space fill (i.e., the
next screen character starts one line below the ^J without going back
to the left margin). Vertical tabs and form feeds appear as ^K and ^L
respectively and start a new display line at the left margin. RUBOUTs
appear as ^?. A line of text which exceeds the page width will be
continued on the next line with a vertical bar or similar character
(exclamation point usually, depending on the terminal type's usual
DTECO %26(257) Display TECO for TOPS-10 Page 2
Operation
character set) character being displayed at the right margin of each
line which overflows into the next display line.
Normally, when in display mode, DTECO will redisplay the text buffer
after the completion of a command string (i.e., when DTECO prompts you
for a new command). If, however, an error occurred in the execution of
the command string (such as a search failure) or "program" output has
appeared (such as from a "=" or "^A" command) such that the screen has
been scrolled (in particular, such that the text window has been at
least partially overwritten) then DTECO will "freeze" the screen so
that the error message (or whatever) does not get erased before you
have a chance to read it. The screen will be updated at the next
command string completion (unless of course another error . . .). When
DTECO freezes the screen the message:
[TECSFT Screen "frozen" due to program typeout, ^L to refresh]
will be issued to alert the user (see also the /SFT switch in section
6 on SWITCH.INI).
Additionally, if DTECO notices that typein is available while updating
the display window then DTECO will abort the update and go immediately
to command input state. This is done on the premise that the current
"incomplete" command will be shortly completed and change the screen
so that any changes being output will be superseded and therefore
useless (in other words it's a hack done for speed). This can be
especially useful on slow (e.g., 300 baud dataset) lines - although
TOPS-10's willingness to buffer up terminal output tends to nullify
this "feature" more often than not.
The terminals currently recognized by DTECO are:
Terminal Default screen length
VT05 20
VT50 12
VT52 24
VT55 24
VT61 24
VT100 24
VT101 24
VT102 24
VT103 24
VT125 24
VT180 24
VT185 24
VT220 24
VT240 24
VK100 24
DAS21 24
2.2 Memory Usage
With the addition of the EA command (see section 9) and the /EAMODE
SWITCH.INI switch DTECO now tends to run with a rather large working
set, with the attendant strain put upon the system as a whole (in
particular as regards swapping).
DTECO %26(257) Display TECO for TOPS-10 Page 3
Operation
In an attempt to be somewhat more efficient with respect to the system
as a whole, DTECO will try to shrink its editing buffer whenever the
user deletes any text from the editing buffer. This shrink action is
delayed until the completion of the second command string after the
deletion command in order to provide a caching action in case the
memory is needed again immediately (ERCOMMON.MAC$$, search for junk,
HK$$, ERDDT.MAC$$, and so on). This shrink action is very simple mind-
ed, and in particular does not do a general garbage collection/compac-
tion pass, so any Q-registers deleted will not be reclaimed.
3.0 Command Typein and Editing
As with TECO, DTECO will not execute the command string until the user
types two consecutive <ESC>'s. Until the command string is terminated
and executed the user has the ability to "edit" the command string.
Note
Currently DTECO does not automatically wrap a command line
which exceeds the terminal/screen width. As a result the
terminal carriage/screen cursor will be left at the right
margin for all characters past the width limit, generally
resulting in a "splotch" at the end of the line. At this
point the editing commands listed below are subject to
misrepresentation of the current command image.
In the following discussion the term "blank" as used in a character
context means: 1) a space character (ASCII 40 octal); A tab character
(ASCII 11 octal); or a carriage return-line feed pair of characters
(ASCII 15 and 12 octal).
3.1 Quote Character
The Control-V character instructs DTECO that the immediately following
command character, if not a RUBOUT, is to be treated as normal textual
character input regardless of any other meaning DTECO normally puts on
the second character. If the immediately following command character
is a RUBOUT then the Control-V is deleted.
3.2 Delete Character
The RUBOUT character (also labeled DELETE, DEL, RUB CHAR, and even
Control-? (yes, that's ^?)) unconditionally deletes the last command
character - if any - from the command buffer.
On a hardcopy terminal the command character deleted is "echoed" back
to the terminal. When the last command character is deleted DTECO will
issue a <CR><LF> and reprompt with another "*".
On a display-mode terminal the command character deleted is erased
from the screen. Deleting a vertical format effector character (line
feed, vertical tab, or form feed) will move the screen cursor up the
appropriate number of screen lines. Deleting the <LF> of a <CR><LF>
pair will leave the cursor at the begining of the line (i.e., the left
margin) terminated by the <CR>. Subsequent deletion of the standalone
DTECO %26(257) Display TECO for TOPS-10 Page 4
Command Typein and Editing
<CR> will leave the cursor at the end of the command line.
3.3 Delete Word
The Control-W character deletes the last command "word" - if any -
from the command buffer. The exact operation of Delete Word is as
follows: 1) Any and all trailing blanks are RUBedOUT; 2) The immedi-
ately preceding non-blank character - if any - is RUBedOUT; 3) Any and
all preceding command characters up to but EXcluding the first (going
backwards) word break character are RUBedOUT. A word break character
is any character other than a letter ("A" to "Z"; "a" to "z"), a
number ("0" to "9"), or a dash ("-").
3.4 Delete Line
The Control-U character deletes the last command line - if any - from
the command buffer. The exact operation of delete line is as follows:
1) The immediately preceding command character - if any - is RUBedOUT;
2) Any and all preceding command characters up to but EXcluding the
first (going backwards) line break are RUBedOUT. A "line break" is a
carriage return followed by a line feed, a vertical tab, or a form
feed (i.e., one of <CR><LF>, <CR><VT>, or <CR><FF>).
NOTE
The user should be cautioned that by condition "1" above
multiple ^U's will RUBOUT multiple lines. This operation is
different from TECO, where the ^U will not cross the line
break boundary
3.5 Delete Sentence
A Control-W character immediately preceded by a Control-G character
(i.e., ^G^W) deletes the last command sentence - if any - from the
command buffer. The exact operation of Delete Sentence is as follows:
1) Any and all trailing blanks are RUBedOUT; 2) The immediately
preceding non-blank character - if any - is RUBedOUT; 3) Any and all
preceding command characters up to but EXcluding the first (going
backwards) sentence break character are RUBedOUT. A sentence break
character is any character other than a letter ("A" to "Z"; "a" to
"z"), a number ("0" to "9"), a dash ("-"), or a blank.
3.6 Delete Command
A Control-U character immediately preceded by a Control-G character
(i.e., ^G^U) deletes the entire command string - if any - from the
command buffer. The exact operation of Delete Command is as follows:
Any and all command characters up to and INcluding the first command
character typed - if any - are RUBedOUT.
The deleted command string is available via the "first character spe-
cial" command "*" as in TECO.
DTECO %26(257) Display TECO for TOPS-10 Page 5
Command Typein and Editing
3.7 Retype Command Line
A Control-R character causes the current command line - if any - to be
re-echoed to the command terminal. A command line is the same as de-
fined by Delete Line above.
On a hardcopy terminal DTECO will first issue a <CR><LF> to get to a
new line before re-echoing the command line.
On a display terminal DTECO will first back the cursor up to the
begining of the screen representation of the command line before re-
echoing the command line.
3.8 Retype Command
A Control-R character immediately preceded by a Control-G character
(i.e., ^G^R) re-echos the entire current command string - if any - to
the terminal.
On a hardcopy terminal DTECO will first issue a <CR><LF> to get to a
new line before re-echoing the command string.
On a display terminal DTECO will first back the cursor up to the
begining of the screen representation of the command string before re-
echoing the command string.
3.9 Lower-case Shift
The Control-A character, when encountered as part of a text string
within an insert or search command, instructs DTECO to treat the imme-
diately following text character as a lower-case letter.
Two successive Control-A's "lock" DTECO into lower-case text mode
wherein all subsequent text characters will be treated as lower-case
(unless otherwise shifted via Control-B commands). The lower-case
shift lock is cleared at the end of the text string.
3.10 Upper-case Shift
The Control-B character, when encountered as part of a text string
within an insert or search command, instructs DTECO to treat the imme-
diately following text character as an upper-case letter.
Two successive Control-B's "lock" DTECO into upper-case text mode
wherein all subsequent text characters will be treated as upper-case
(unless otherwise shifted via Control-A commands). The upper-case
shift lock is cleared at the end of the text string.
4.0 EO value 3 conversion
DTECO %26 runs with an EO value of 3, which enables the above command
typein and editing functionality. Setting the EO value to 2 will cause
^R, ^V, and ^W to behave as in TECO %24 and earlier. Setting the EO
value to 2 does not bring back the the old ^G commands (retype line
and abort command). Following is a table of old-to-new command conver-
DTECO %26(257) Display TECO for TOPS-10 Page 6
EO value 3 conversion
sions:
Obsolete New
^Gspace ^R
^G^G ^G^U
^R ^V
^V ^A
^W ^B
5.0 Crash Recovery
Under control of the /CRDISP and/CRFILE switches (see section 6 below)
DTECO writes a crash recovery file called DSK:[,]nnnTEB.TMP<077> (or
<477> if the system is a File Daemon supporter) where "nnn" is the
leading-zeros three-digit job number running DTECO. This crash recov-
ery file contains every character you have typed to DTECO since pro-
gram startup (this includes chararacters you may have deleted (both
the character and the RUBOUT are in the recovery file) and even
commands aborted via ^G^U). This file is periodically written out to
disk in such a manner as to be preserved across a system failure of
all but the most catastrophic nature (such as a disk head crash). By
default the crash recovery file is updated every 128 (decimal) charac-
ters modulo lines (i.e., at the first "break" condition after 128 or
more characters have been input), or when a full disk block has been
input.
In general crash recovery simply involves executing the crash recovery
file as a command file (the "E@" command, see section 9 below). This
will work whether DTECO was invoked via a RUN command (or monitor
call) or if DTECO was entered via the CCL mechanism (e.g., the TECO
monitor command). Remember however that the crash recovery file is
written into your job's logged-in ppn (directory), not the current
path!
*** Warning ***
Care must be exercised in executing the crash recovery file
if one or more output files have already been written -
since the entire command stream is still present in the
crash recovery file the already-written output files will be
written again. If the already-output files were the result
of editing extant files (e.g., the "EB" command) executing
the crash recovery file will re-edit the already-edited
files, to the extreme detriment of the file(s) in question.
Further consideration must also be given to ensure that the
job's path, search list, and logical name definitions match
those used by the previous editing session which wrote the
crash recovery file.
Upon normal program termination (e.g., the "EX" command) the crash
recovery file will normally be deleted.
DTECO %26(257) Display TECO for TOPS-10 Page 7
SWITCH.INI
6.0 SWITCH.INI
DTECO supports SWITCH.INI default processing as defined by SCAN. If
DSK:SWITCH.INI[,] exists then DTECO will read and process the file
looking for entries under "TECO". There is no provision currently for
specifying an specific option (i.e., the /OPTION:option switch to
SCAN).
6.1 /CRDISP:(NEVER|TEMPORARY|DELETE|PRESERVE)
The /CRDISP switch controls whether or not DTECO will create a crash
recovery command file, and if so, whether or not that crash recovery
file will be automatically deleted when DTECO exits. /CRDISP:NEVER
instructs DTECO to not write a crash recovery file; /CRDISP:TEMPORARY
instructs DTECO to write the crash recovery file with extension .TMP
(so LOGOUT can delete it) and delete it when the editing session is
over; /CRDISP:DELETE instructs DTECO to write the crash recovery file
with extension .TEB (so LOGOUT won't delete it) and delete it when the
editing session is over; /CRDISP:PRESERVE instructs DTECO to write the
crash recovery file with extension .TEB and keep it when the editing
session is over. The default is /CRDISP:TEMPORARY.
6.2 /CRFILE:file
The /CRFILE switch is used to explictly name the crash recovery file.
By default, DTECO calls the crash recovery file DSK:nnnTEB.TMP[,]. The
/CRFILE switch accepts a file specification which may include any of
device, filename, extension (or type), or directory path. Explicitly
specifying a filename is MOST STRONGLY discouraged since multiple
users will interfere with each-other. The primary intent of the /
CRFILE switch is to allow users to specify whether the crash recovery
file gets put in the user's logged-in ppn ([,]) or default path ([-]).
Wildcards are not allowed in the file specification, nor may file-
specific switches (e.g., /PHYSICAL or /PROT:nnn) be used.
6.3 /CRPROT:nnn
The /CRPROT switch is used to specify an explicit protection code for
the crash recovery file. Normally DTECO will protect the file <077> if
the system does not have File Daemon support, or <477> is the system
does have File Daemon support.
6.4 /CRSAVE:nnn
The /CRSAVE switch is used to control how often the crash recovery
file is updated. The value "nnn" is the count of characters "modulo"
lines which will trigger an update of the crash recovery file. If
"nnn" is 0 (or very large - greater than 637 decimal) then the crash
recovery file will be updated only when a full disk block's worth of
characters have been received (without respect to line boundries).
6.5 /EAMODE
The /EAMODE switch controls whether or not DTECO will attempt to read
in the entire file (see the "EA" command in section 9 below for de-
tails) automatically upon execution of an "ER" or "EB" command. /
DTECO %26(257) Display TECO for TOPS-10 Page 8
SWITCH.INI
EAMODE (or /EAMODE:ON) instructs DTECO to attempt to read the entire
file into the editing buffer; /NOEAMODE (or /EAMODE:OFF) instructs
DTECO to read the input file in pieces as needed (the default).
6.6 /EOBATC:n
The /EOBATCh switch is used to specify the default EO value if DTECO
is running as a batch job rather than as a timesharing job. If /EOBATC
is not specified then /EOMODE will be used - if given.
6.7 /EOMODE:n
The /EOMODE switch is used to specify the default EO value if DTECO is
running as a timesharing job rather than as a batch job.
6.8 /INITFILE:file
The /INITFILE switch is used to specify an initial command file which
DTECO will execute before any other user commands (including CCL pro-
cessing) are processed. The form is /INITFILE:file where "file" is a
simple file specification (no wildcards, no switches) of the file
which is to be "executed" as a command file.
6.9 /OKLSN
The /OKLSN switch controls whether or not DTECO will process (and by
default preserve) embedded line sequence numbers in input files read
under /EAMODE:ON. /OKLSN (or /OKLSN:ON) instructs DTECO not to bother
looking for line sequence numbers in the input file; /NOOKLSN (or /
OKLSN:OFF) instructs DTECO to scan the input file looking for possible
line sequence numbers (the default).
6.10 /OKNULL
The /OKNULL switch controls whether or not DTECO will process (and by
default discard) nulls in input files read under /EAMODE:ON. /OKNULL
(or /OKNULL:ON) instructs DTECO not to bother looking for nulls in the
input file; /NOOKNULL (or /OKNULL:OFF) instructs DTECO to scan the
input file looking for possible embedded nulls (the default).
6.11 /[NO]SFT
The /[NO]SFT switch controls whether or not DTECO will issue the
TECSFT message whenever the display screen is frozen due to program
typeout. /SFT enables the TECSFT message output. /NOSFT suppresses the
TECSFT message output. The default is /SFT.
6.12 /RUN:file
The /RUN switch instructs DTECO to pass program control to another
program rather than to the monitor when DTECO "exits". If /RUN is
specified in SWITCH.INI then DTECO will not exit with an output file
OPEN, or with text present in the editing buffer (see the Control-Z
command below).
DTECO %26(257) Display TECO for TOPS-10 Page 9
Searches
7.0 Searches
DTECO now has faster, backwards, and/or bounded searching capability.
If a search command (e.g., "S", "FN", "FD", etc.) is preceded by a
single negative argument then the search procedes backwards from "."
towards "B" rather than forwards towards "Z". At the successful com-
pletion of a backwards search "." is left at the begining of the
matched string rather than at the end. This is to allow successive
backwards searches to find the "next" string, rather than rematching
the just found string again.
If a search command is preceded by two numeric arguments then the
search is a "bounded" search where the two arguments define the begin-
ing and ending limits of the search. If the first argument is less
than the second argument then the search is a normal forwards search;
if the first argument is greater than the second argument then the
search is a backwards search.
When a search fails, "." is left unchanged, rather than at "B" in the
text buffer. If the failed search caused I/O (e.g., an "_" or "N"
search) then "." is left at the begining of the text buffer as usual.
8.0 First-Character-Special Commands
"First-character-special" commands are a special class of commands
which, iff typed as the FIRST command character (i.e., the first char-
acter typed after DTECO prompts for input with its "*"), are inter-
preted differently than if they were encountered within a regular com-
mand string. An example of this is the old "*" command used to load a
q-register with the last command string when typed as the first
character of a command, but means multiplication if encountered in a
normal command string terminated by two <ESC>s.
8.1 The "Arrow" Keys
Some terminals (in particular, VT05's, VT52's, and VT100's) have keys
marked with an arrow (Up-, Down-, Right-, and Left-pointing). DTECO
will interpret these keys as cursor-moving (i.e., moving ".") com-
mands. The "Up" key will move "." one screen line upwards; the "Down"
key will move "." one screen line downwards; the "Right" key will move
"." one text character to the right; and the "Left" key will move "."
one text character to the left.
The "Up" and "Down" keys are quite distinct from the regular "L" com-
mand in that they will move "." based on the editing-text's screen
representation, NOT on the placement of break characters within the
editing text (and in particular, the "Down" key and the "Line feed"
command are quite distinct and behave differently).
NOTE
Some terminals (notably VT05's) send control characters for
the arrow keys. These control characters may conflict with
other first-character-special commands. When a conflict ar-
DTECO %26(257) Display TECO for TOPS-10 Page 10
First-Character-Special Commands
ises, the arrow meaning takes precedence over any other
meaning, so long as the character gets to DTECO (if a termi-
nal sends a Control-C then all bets are off).
8.2 Space
The space command (i.e., the space character) will, iff in display
mode, cause DTECO to display the next screenful of text from the edit
buffer. The space command is in effect an easy way of scrolling
through the edit buffer. Execution of the next regular command string
will redisplay the screen such that "." is on the screen, if it isn't
already there.
8.3 Backspace
The backspace command (Control-H) will, iff in display mode, cause
DTECO to display the previous screenful of text from the edit buffer.
The backspace command is in effect an easy way of scrolling backwards
through the edit buffer. Execution of the next regular command string
will redisplay the screen such that "." is on the screen, if it isn't
already there.
NOTE
On a VT05 terminal the "Left" key transmits a Control-H
character, which is interpreted as a "Left" command rather
than as a "backspace screen" command.
8.4 Carriage return
The carriage return command will, iff in display mode, cause DTECO to
move the cursor (".") such that it is contained within the current
display window. If "." is already within the display window the car-
riage return command will position "." to the begining of the screen
line containing ".".
One oddity of the carriage return command is that execution of the
command [from the top-level command terminal] will result in an ex-
plicit "nnnJ$$" command appearing in the crash recovery file immedi-
ately following the carriage return. This will ensure that, should the
crash recovery file be executed on a different terminal type (in
particular, one with a different screen size), all subsequent commands
(such as a "D" command) will be executed in the right place within the
text.
8.5 Line feed
The line feed command will move "." to the begining of the next line
(e.g., a "1L$$" command) as defined by the presence of a break charac-
ter in the text buffer, not as displayed on the screen (if any). If,
in addition, DTECO is not in display mode the line will be typed out
(e.g., the line feed is equivilent to a "1LT$$" command).
DTECO %26(257) Display TECO for TOPS-10 Page 11
First-Character-Special Commands
8.6 Form feed
The form feed command will, iff in display mode, cause DTECO to imme-
diately refresh the display screen.
8.7 ^Z
The Control-Z character is the same as the Control-Z command (see the
Control-Z command below).
NOTE
On a VT05 terminal, the "Up" key transmits a Control-Z char-
acter, which is interpreted as an "Up" command rather than
as a Control-Z command.
9.0 Regular Commands
"Regular commands" are simply normal TECO commands typed in but not
executed until the final terminating double <ESC> is seen.
9.1 $$ - The null command
To DTECO the null command (a degenerate case of regular commands) does
in fact have some effects.
The first effect is that the crash recovery file is forcably (and
prematurely) updated. This can be useful if you plan on being away
from your terminal for a while but don't wish to terminate the editing
session yet. Typing "$$" will ensure that, should the system crash
while you are (e.g.,) eating lunch, no editing will be lost.
The second effect is that the screen will be updated such that "." is
guaranteed to be contained within the current display window. This
effect is useful if an error message has frozen the screen.
9.2 ^Z - EXit
The Control-Z command is used to effect an immediate and non-
destructive return to monitor level. The Control-Z command does not
perform any file I/O - and in particular does not CLOSE the editing
file. DTECO will immediately update the crash recovery file however.
If no /RUN was specified in SWITCH.INI then a Control-Z command always
returns to monitor level. If there is an output file OPEN then the
message:
%TECOFO Output file still OPEN, type CONTINUE then "EX$$" to write
it
to warn the user of possible lossage. If there is no output file
OPENed, but there is text in the editing buffer then DTECO will issue
the message:
[TECNFO No file for output]
to warn the user. If there is no output file OPENed and no text in the
editing buffer then DTECO simply returns to monitor level.
DTECO %26(257) Display TECO for TOPS-10 Page 12
Regular Commands
If /RUN was specified in SWITCH.INI then a Control-Z command will
transfer control to the specified program iff there is no possible
damage to the editing session. If there is an output file OPEN then
DTECO will issue the message:
?TECOFZ Output file still OPEN, type "EX$$" to exit
to warn the user, and return to DTECO command input state. If there is
no output file OPENed, but there is text in the editing buffer then
the message:
?TECNFZ No file for output
will be issued to warn the user, and DTECO will return to command
input state. If there is no output file OPENed and no text in the
editing buffer then DTECO will RUN the specified program.
The user can always type the CONTINUE monitor command to resume the
editing session after DTECO has returned to monitor level in response
to a ^Z command. DTECO is not responsible for the results of any
foolish command such as FINISH or CORE 0.
9.3 E-atsign - Execute command file
The "E@" command is used to tell DTECO to execute a command file. The
format of the command is "E@file/switch" where "file" is a normal file
specification and "/switch" is one of "/TYO" or "/ECHO". The default
device is DSK:, the default extension (file type) is .TEC, the default
file path is [-].
A command file is simply a file which contains 7-bit ASCII characters
which DTECO will interpret as commands EXACTLY as if they were being
input from the command terminal (with the exception of carriage re-
turns - see section 8.4). For example, if the first character of a
command string is a space then DTECO will display the next screenful
of text (within the outputing constraints described below).
Normally DTECO will suppress all display window output when executing
a command file ("program" output (e.g., "^A" or "=" commands) and
error messages are not suppressed). The /TYO switch (a poor name I
will admit, but I couldn't think of anything better on the spur of the
moment) instructs DTECO to output all normal display window output
(which includes the "*" prompt by the way). The /ECHO switch instructs
DTECO to not only output all normal display window output but "echo"
the command file "typein" as well. (/ECHOing a crash recovery file can
be a very sobering experience as you watch all the mistakes you made
go flashing hauntingly by . . .)
If the top level command file terminates with a partially input com-
mand string (i.e., a command string but no terminating double <ESC>
yet) a warning message will be issued:
%TECEOC End of command file with unterminated commands pending
Execution of a command file does not begin until the current command
(the one which caused an "E@" command to be executed) is finished. For
example, the command string "E@BLAH$4L$$" will execute the "4L" com-
mand before reading the first command file character from "DSK:
BLAH.TEC[-]".
DTECO %26(257) Display TECO for TOPS-10 Page 13
Regular Commands
Command files can, of course, be nested.
9.4 EA - Edit All (or Edit Append)
The "EA" command is both a status-setting command and an action com-
mand, depending on the arguments typed. The basic format of the "EA"
command is "nEA".
If "n" is absent (e.g., "EA$$") then DTECO will attempt to read the
entire input file into the text buffer, using, if possible, dump mode
I/O to read the file directly into the editing buffer. Unless expli-
citly prevented by switches in SWITCH.INI DTECO will scan the file
looking for embedded nulls and/or line sequence numbers.
If "n" if positive then DTECO will perform "n" appends, preserving
form feeds as text characters.
If "n" is "0" then DTECO will clear the "EA-by-default" flag. If "n"
is "-1" then DTECO will set the "EA-by-default" flag. The "EA-by-
default" flag (also set/cleared via /EAMODE in SWITCH.INI), if set,
instructs DTECO to automatically try to read the entire input file
whenever a new input file is given ("ER" or "EB" command).
9.5 EC - Edit Close
The "EC" command instructs DTECO to write out the current text buffer,
copy any remaining input file to the output file, and close the output
file. The "EC" command is essentially an "EX" command which returns to
DTECO command mode rather than to monitor command mode. If possible,
the text buffer will be written using dump mode for speed (KL-10's can
"dump" almost 1000 blocks per second!).
9.6 FD - Find and Delete
The "FD" command is used to find and delete a text string. The command
format is "FDstr$" where "str" is the text string to be deleted. As
with other searches, the "FD" command may be colon and/or atsign modi-
fied.
9.7 FK - Find and Kill
The "FK" command is used to find and kill text up to and including a
text string. The command format is "FKstr$" where "str" is the text
string to be searched for. All text from current "." to and including
the matched text string is deleted when a match is found. As with
other searches, the "FK" command may be colon and/or atsign modified.
9.8 FR - Replace
The "FR" command is used to replace the last string with a new string.
The command format is "FRstr$" where "str" is the new text string. The
"FR" command is essentially equivilent to a "-nDIstr$" command where
"n" is the size of the last string operation (such as a successul
search, an insert, or a Q-register text operation). The "FR" command
has no positional information, if "." has been moved since the last
string operation then the string replaced will not be the last string
DTECO %26(257) Display TECO for TOPS-10 Page 14
Regular Commands
affected.
9.9 F_ - Find and Replace
The "F_" command is to the "_" command as the "FS" command is to the
"S" command.
9.10 \\ - Octal "\"
The "\\" command is just an octal mode "\" command, just like the "=="
command is an octal "=" command.
9.11 V - View Text
The "V" command is used to view text from the text buffer. If DTECO is
not running in display mode the "V" command is identical to the "T"
command.
If DTECO is running in display mode there are 2 forms of the "V"
command. The first format is "nV". This command "shifts" the display
window by "n" display lines (not text lines). The second format is
"i,jV". This command sets explictly the start and the ultimate end of
the display window to "i" and "j" respectively.
WARNING
The "V" command is almost certainly going to be changed in
future versions of DTECO, so do not get too used to the
current syntax!
9.12 FV
The "FV" command returns as a value the negative length of the last
text operation such as a search, insert, or "G" command. If the search
was in backwards mode, then the "negative" length will be a positive
value, such that an "FVC" command will always position "." to the
'other' end of the string, "FRstr$" will always replace the matched
string, and so on.
9.13 EP - Edit Push
The "EP" command instructs DTECO to "PUSH" to a new job command
context, much like the monitor "PUSH" command. The "EP" command takes
no arguments presently, but does require a terminating <ESC> character
(e.g., "EP$") to allow for future compatible expansion.
NOTE
All characters between the "EP" command and the terminating
<ESC> character are eaten and discarded. They have not se-
mantic interpretation yet.
When the new context "POP"s back, DTECO resumes command execution.
DTECO %26(257) Display TECO for TOPS-10 Page 15
Regular Commands
9.14 % - Increment Q-Register
The "%" command has been enhanced to accept a preceeding argument. If
an argument is provided, the argument is used as the quantity to be
added to the specified Q-Register. If no argument is provided, then
"1" is added to the Q-Register. If the "EO" value is less than "3"
then the argument is always ignored and "1" is always assumed.
9.15 ^T - Typein/out
The ^T command has been enhanced to accept a preceeding argument. If
an argument is provided then ^T will type that argument as an ASCII
character (e.g., ^O101^T would type a capital "A"). If the argument is
omitted, then ^T will accept and return the value of one command input
character. If the "EO" value is less than "3" then the argument is
always ignored and typein is always assumed.
10.0 Known Bugs, Deficiencies, and other undesirable Aspects
Following is a list of problems known to exist with DTECO. Some are
admittedly out and out bugs, others are more in the line of simple
deficiencies, and some are expressions of the undesirable vagaries of
reality beyond DTECO's immediate control.
10.1 Command deletion (RUBOUTs and ^Us)
There are two cases where the screen logic of DTECO fails to correctly
(or at least "nicely") handle RUBOUTs and/or ^Us. If a command line
exceeds the screen width a free <CR><LF> is not issued - the cursor is
left splattered against the terminal's right margin. At this point,
RUBOUTs will start eating backwards, erasing characters which have not
yet been deleted from DTECO's command buffer (DTECO effectively thinks
the right margin is at infinity . . .). Once the cursor has been
backed into the left margin it will sit there vainly trying to erase
more characters until the entire line is erased.
The second case is basically of the same genre, only more so! This is
the case of RUBOUTs going off the top of the screen - it would be nice
if DTECO would automatically retype part of the command text so the
user had a better idea of what was happening.
10.2 Screen formatting, ^O, and "SEND" messages
The Control-O character echos with a free <CR><LF> and is not passed
to the user program. Thus typing a ^O will move the cursor down on the
screen without telling DTECO that the cursor moved. DTECO may thus
become confused and update the wrong portion of the screen. If this
happens, force a screen refresh (see form feed command in section
5.1.5 above) to get things in sync again.
Similarly, being the receipiant of a SEND message, or any type of
"unsolicited" terminal output, will generally trash some part of the
screen.
0
DTECO %26(257) Display TECO for TOPS-10 Page 16
Known Bugs, Deficiencies, and other undesirable Aspects
1.3 The "V" command
Some of the more involved uses of the "V" command may leave much to be
desired in so far as screen output is concerned (try "1V1V1V$$" for
example).
10.4 ^C and malicious users
Command sequences such as ^C, .FIN, .CONT lose.
10.5 Overall speed
There are many known ways in which DTECO could be sped up, such as in
inserting and deleting characters. Maybe someday (I'm always open to a
bribe . . .).
10.6 Halts
DTECO %26(257) should not by any means be considered a final polished
product (as witness this section's raison d'etre). There are a variety
of bugs (and maybe even an unknown feature or two) lurking around,
waiting to bite someone. Further, DTECO is liberally sprinkled with
debugging HALTs. Should you be so "fortunate" as to discover a way of
exercising one of these little gems please make a copy of the
nnnTEB.TMP file as well as the input file (if any) being edited and
let me know about them.
In general, you can try to "CONTINUE" from the HALT - it might even
work.
11.0 Afterword
This product is not an official undertaking. It did not enjoy the
benefits of careful design review boards. It does not even have a
functional spec (execpt insofar as what is "obviously right")!
As such, any and all extensions over what DEC-standard TECO provides
should be considered as somewhat "volatile" and subject to change at a
moments whim, I mean, ah, notice.