Google
 

Trailing-Edge - PDP-10 Archives - tops10_tools_bb-fp64a-sb - 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.