There is 1 other file named tec200.doc in the archive. Click here to see a list.
The new and improved
TTTTTTT EEEEEEE CCCCC OOOOO
T E C C O O
T E C O O
T E C O O
T EEEEE C O O
T E C O O
T E C O O
T E C C O O
T EEEEEEE CCCCC OOOOO
January 21, 1981
Stevens Institute of Technology
Copyright (c) 1980, 1981 by
Stevens Institute of Technology, Hoboken, New Jersey, 07030.
All rights reserved.
This software is furnished under a license and may be used and copied only in
accordance with the terms of such license and with the inclusion of the above
copyright notice. This software or any other copies thereof may not be
provided or otherwise made available to any other person. No title to and
ownership of the software is hereby transferred.
The information in this software is subject to change without notice and should
not be construed as a commitment by Stevens Institute of Technology.
TECO version 200 Page 2
This version of TECO is a complete or almost complete rewrite of TECO %124A.
Some of the things that this version does are quite a bit different then the
previous versions of TECO. This version of TECO does not support KA-10
There are several concepts that should be first understood before attempting to
understand the rest of this document.
2.1 Text Buffer
A text buffer is a buffer that contains text. This can either be a
Q-register or an editing buffer. A text buffer can have associated with
it an input file, output file, form feed flag, EOF flag, page number, and
an EB flag.
If the user has no more pointers to a text buffer, then all open
files associated with it will be closed, as normally done by an EX
command. Pointers include the current editing buffer, having a Q-register
pushed on the stack and Q-registers. To learn more on how to associate
files with Q-registers refer to the E. command.
2.2 Line Terminators
The line terminating characters are: carriage return, line feed, vertical
tab and form feed.
2.3 Spacing Characters
The spacing character are either a space or tab.
2.4 Punctuation Characters
These are the characters period(.), comma (,), questin mark (?) or
exclaimation point (!).
TECO version 200 Page 3
A word is a group of characters that are delimited by a line
terminator, spacing character or punctuation character. Spacing
characters are either a space or a tab. Punctuation characters are
periods (.), comma (,), question mark (?) or exclaimation point (!).
3.0 NEW FEATURES
Several changes have been made to the Q-register processing in TECO. TECO
now supports long Q-register names. There are also a few new single
character Q-register names.
3.1.1 New Q-register Name Format - Q-register names may now be
enclosed in parentheses. Q-register names in this new format may be
longer than one character. For example the following is now a legal
It should be noted that casing of the names is NOT ignored.
3.1.2 '.' - When TECO is run, the initial setting is as if an E.(.)
command had been given. Therefore, the '.' Q-register is being
3.1.3 '?' - This Q-register is set to the command string when an
error occurs. Note that unlike the result of a '*i' command the
command put into this Q-register will include both terminating
3.1.4 'TEXT-BUFFER' - This Q-register is used only for purposes of
the E$ command. This is a predefined name that always refers to the
current editing buffer.
TECO version 200 Page 4
3.1.5 'COMMAND-BUFFER' - This Q-register is also only used for the
E$ command. This is the predefined name for the section of the
screen where typein will be echoed, and typeout printed.
3.1.6 'ERROR-TEXT' - This Q-register will contain the complete text
of the last error message. Note that when TECO is in video mode
(EVON$ command given), and this Q-register is displayed, TECO will
not print out the error message in the 'COMMAND-BUFFER' section.
3.1.7 '%' - This Q-register has no special purpose. It may be used
for any purpose the user wishes.
3.1.8 'AUTO-COUNT' - The Q-register contains a number that is the
number of complete commands that are to be processed before the
'AUTO-BUFFER' Q-register is to be executed. The number must be
greater than zero for 'AUTO-BUFFER' to be executed. A complete
command is any command that terminates with two escape characters.
3.1.9 'AUTO-BUFFER' - This Q-register contains the commands that are
executed after every 'AUTO-COUNT' commands.
3.2 E Commands
3.2.1 E<(Q-register) - This command will cause the file
specification for the input file associated with the Q-register to be
stored into the current editing buffer.
3.2.2 E>(Q-register) - This command will cause the file
specification for the output file associated with the Q-register to
be stored into the current editing buffer.
3.2.3 NEJ(Q-register) - This command has the same effect as a 'nJ'
command executed in the specified Q-register.
TECO version 200 Page 5
3.2.4 File Specification Parser - The file specification parser has
been changed again. The basic format for file specifications is:
The support for editing from one node to another node is not yet
supported in TECO, since it is not yet supported in TOPS-10.
Switches are optional on the file specification. The following are
the standard switches that are valid on all file specficiations.
220.127.116.11 DEFAULT - Cause the file specification defaulting to be
done by the initial defaults.
18.104.22.168 MODE:mode - This will specify the mode the file is to
be read in. The only supported modes currently are: ASCII,
LSA, and SIXBIT (This is the COBOL SIXBIT file format).
22.214.171.124 NODEFAULT - This switch causes no defaults to be
applied to this file and stores no defaults from this file.
126.96.36.199 PROTECTION:nnn - This switch will specify the file
188.8.131.52 VERSION:mmmnn(eeeeee)-w - This switch will specify a
version number that is to be stored into the RIB of the file
that is being output.
3.2.5 TMP: - You can now use the ER and EW commands to the device
TMP:. This will cause a TMPCOR file to be read or written. On an ER
command if the file does not exist in TMPCOR, TECO will try to find
it as nnnXXX.TMP on disk (where nnn is the job number, and XXX the
file name). On an EW command TECO will write the file into TMPCOR
when the file is closed if it will fit, otherwise it will write it
into DSK:nnnXXX.TMP. Note that it will start writing the file to
disk as soon as it is sure that it will not fit into TMPCOR.
TECO version 200 Page 6
3.2.6 EV Command Extensions - This command now contains a few new
extensions. This command will now return values for parameters. The
valid parameters are:
1. NODE - Return the node number the user is on.
2. LINE - Return the line number of the terminal the user is on
3. SCREEN - Return the screen size as two octal numbers. The width
is in the left half and the length in the right half of the
4. WINDOW - Same as SCREEN
The EV command has a few action verbs associated with it. The verbs
and the action take are listed below:
1. ON - Turn on the video mode processing
2. OFF - Turn off the video mode processing
3. IMMEDIATE - Turn on the immediate mode video processing (Not
4. REFRESH - Cause the screen to be refreshed. This is useful if
the person does not have the terminal gagged and people send to
3.2.7 EQ Command - This command will write out the text contents of
a Q-register into a file. The format of this command is:
where the "(q-reg)" is optional. If it is not given Q-register "*"
is used for the command. After execution of this command a copy of
the Q-register has been written into the given file.
3.2.8 Extension To EI And EP Command - The EI and EP commands have
been extended to take an optional Q-register name as an argument.
The format of the Q-register name argument is the same as in the EQ
TECO version 200 Page 7
3.2.9 E. Command - This command allows the user to select the
editing buffer. It will change the editing buffer to another
Q-register. It will create a text buffer for the Q-register if there
is no buffer associated with the Q-register when the command is
executed. The format of this command is as follows:
The 'q' is the name of the Q-register which is the new editing
3.2.10 E$ Command - This command will define what is to be displayed
on the users screen. The E$ command will take two arguments. The
arguments are the line numbers that the contents of the Q-register is
to be displayed on. The command format is:
The 'n' and 'm' are the line numbers, in the range 1 to the number of
lines on the screen. The 'q' is the name of a Q-register. This
command is only valid if the TECO is in video mode.
3.2.11 ED Extensions - The ED command will now take the following
184.108.40.206 RUNOFFSET:n - This will specify the RUN offset for the
220.127.116.11 CORE:n - This will specifiy the number of pages of the
memory to use for the RUN UUO.
3.2.12 EL Switches - The following are the allowed switches for the
18.104.22.168 APPEND - Append to the log file.
TECO version 200 Page 8
22.214.171.124 NOINPUT - Do not output the type in to the log file.
126.96.36.199 NOOUTPUT - Do not output the type out to the log file.
3.2.13 ER Switches - The following are the only allowed switches for
the ER command besides the default switches:
188.8.131.52 SUPLSN - Suppress the reading of the line sequence
3.2.14 EB Switches - The following are the allowed switches for the
184.108.40.206 GENLSN - This switch is equivalent to the /OMODE:LSA
220.127.116.11 IMODE:mode - This switch will specify the input mode
of the file being read.
18.104.22.168 INPLACE - This will cause the file to be edited in the
path it was found it.
22.214.171.124 MODE:mode - This switch will set the input and the
126.96.36.199 OMODE:mode - This switch will set the output mode.
For a complete list of the different modes that are allowed
please see the default switch section.
TECO version 200 Page 9
188.8.131.52 READONLY - This will set the switch as being only
184.108.40.206 SUPLSN - This switch is the same as /OMODE:ASCII
3.3 FW Command
This commad will allow the user to search for the nth word. The
command format is:
3.4 FK Command
This command will allow the user to Find and Kill a string. The
string that is searched for will be deleted from the user's editing
buffer. The command format is:
3.5 '%' Command
The '%' command will now take a numeric argument. If this argument
is given the Q-register is incremented by the value of the argument. If
no argument is given the Q-register is incremented by one. The command
still returns the resulting value of the Q-register.
3.6 Control D
The Control D command allows the user to move up or down on the screen.
It will deterine the position on the next line to move the cursor. This
command is similar to the L command except that the X position is no
changed to the beginning of the line.
3.7 '"' Command
The '"' command has been extended to provide the capability of an IF
THEN ... ELSE ... ENDIF construction. If the first character after the
single quote (') following a conditional is a double quote ("), the double
quote command will be executed with a true value if the previous condition
TECO version 200 Page 10
was true, and with a false value if the previous condition was false.
3.8 Control T
The control T processing has been extended. Two new options have
been added to the colon control T processing (:^T). The new options will
set the terminal into packed image mode and remove it from packed image
3.8.1 :-3^T - This command will put TECO into packed image mode
input for your terminal.
3.8.2 :-4^T - This command will put TECO into normal input mode for
3.9 Immediate Commands
The following immediate commands have been added. These commands only
work in screen mode.
3.9.1 Control B - This command will do a 1R. It will cause the
pointer to be moved backwards one character.
3.9.2 Control D - This command will do a 1D. It will cause the
pointer to be moved down one line on the screen.
3.9.3 Control U - This command as the first character of a command
will cause the pointer to be moved up one line on the screen.
3.9.4 Control W - This character as the first character of a command
will cause a 1FW command to be done. This will move to the end of
the next word.
TECO version 200 Page 11
4.0 EXTERNAL CHANGES
KA-10 processors are not supported in this version of TECO.
4.2 EO Level
The EO level is now at 4. If you have problems with old TECO macros
passing arguments, then set the EO level to 3 and TECO will not enforce
the argument checking for you.
The immediate command '*' now will reprompt the user upon execution of the
4.4 Argument Validation
TECO now enforces the argument checking of commands much better. It will
give an error message if you attempt to pass arguments to commands that
don't require them. It will also complain about missing arguments much
4.5 Command Level Error Type Out
The '?' and '/' commands for error type out are now valid until the next
command is executed. The '?' command will now type from 10 characters
before the first argument for the command.
4.6 N Search
At the end of an N search that fails the last buffer of the file will
still be in the text buffer for editing.
5.0 INTERNAL CHANGES
This is a rewrite of TECO 124A. All interfaces have changed if you have any
local modifications to TECO they will have to be rethought.
TECO version 200 Page 12
6.0 INSTALLATION INSTRUCTIONS
There is one pair of feature tests to be set for compiling TECO. These are the
FTKL/FTKI switches. If FTKL is set (this is the default), TECO will be
compiled for a KL-10 processor. If FTKI is set, TECO will be compiled for a
KI-10 processor. The KI-10 version will run correctly on a KL, it will just
not run as efficiently. To assemble for a KI-10, an FTKL==0 and a FTKI==-1
should be added to the beginning of the assembly of TECUNV.MAC.
TECO is PSECT'ed, therefore when it is loaded, the PSECT origins must be
specified. There are five PSECTs (in addition to .LOW.):
1. IMPURE - This is the impure data area. The origin for this PSECT
should be 140 for a non-debug copy, and somewhere past the end of DDT
for a debugging copy.
2. .ONCE - This is the once-only initialization code which writes out the
error file, and builds the error message index. This should be loaded
somewhere past the end of IMPURE. Note that if TECO is to be loaded
with symbols, the symbols should initially be loaded into the .ONCE
PSECT with the LINK switch /SYMSEG:PSECT:.ONCE. The once-only code
will move the symbol table into the high-segment after the error index
has been built.
3. .TXTPT - This PSECT contains the pointers to the error messages. This
data is copied by the once-only initialization after the end of the
high segment and then deleted.
4. .TEXT. - This PSECT contains the text of the error messages.
Once-only will write this text out into TECO.ERR or move it into the
high-segment as appropriate.
5. CODE - This PSECT contains the pure code. It will be turned into a
high-segment by the once-only code. The base address of this PSECT
must be at a page boundary plus 11(octal = .JBHDA plus one). This
must be the PSECT containing the highest addresses.
Note that the last thing before the /GO for LINK must be a /SET:.LOW.:value,
where value is the base address of the CODE PSECT. This ensures that all of
memory between the low segment and the end of CODE will be addressable.
There are a few restrictions in the order modules are loaded in. The
module TECINI must be the first module loaded. This module contains
definitions of symbols to represent the start of each PSECT. These are used by
the once-only code. The last module loaded must be TECONC.
TECO version 200 Page 13
If you do not desire to support certain types of terminals, they can be
excluded at load time by not loading the module that contains the support
routines. The module TECDUM contains definitions of the required symbols to
cause the terminal types which are not being included to act like the CRT
When TECO is loaded, the file TECONC.EXE is produced. This is then run to
do the final fixups to the core image. It will type out information as to the
positioning of the various PSECT's, and then ask four questions. The first two
are in reference to error messages. Each error and warning message has a level
associated with it. This level is based on the expected frequency of occurance
of the message. This value is used to determine whether the message should
reside in memory, or on disk in TECO.ERR. The first question TECONC asks is
the highest level message for which the first line should be kept. The message
level is an octal number which runs from 0 to 77. A good value for the first
line messages is one. This will cause all the warning messages (currently
there are only two), and the messages seen most often to be kept in core. The
second question is for the highest level of continuation message to be kept in
memeory. A good choice for this value is zero, which will only keep the long
text of the TECEEE error message in core (this message would otherwise be
untypable, as it would be impossible to read it from the file). If 77 is given
as the answer to both message level questions, all of the message text will be
kept in core, and no error file will be written.
Next, TECONC will ask for the initial command string. This command string
is executed just before any EB/ER/EW commands for CCL entry. This command
string is used to read in TECO.INI, and do any other general initialization
needed. The command string may contain any TECO commands, any should be ended
with two consectutive altmodes. The command string used at Stevens is:
The next two questions TECONC will ask are about patching space. It will
ask about how much patching space to allocate in the high and low segments.
Finally, TECONC will ask whether the symbol table should be kept. If it is to
be kept, it will be moved into the high segment.
After the questions are answered, it will write out the error file, fix up
the CODE psect, and make it into a high segment. It will then exit, allowing
the core image to be saved. The files TECO.EXE and TECO.ERR can now be put up
The TECO.EXE and TECO.ERR files must always be kept together, since the
first word of TECO.ERR contains the UDT when it was created. This date/time
will be checked when TECO opens the error file to make sure that it is the
correct version of the file. This is necessary because the TECO.ERR file
contains addresses of items to be typed during error printout.
To just build TECO including all terminal types with all default
parameters, use the control file TECO.CTL. This may also be used as a guide to
building a customized copy of TECO.
TECO version 200 Page 14
TECO uses the ENQ./DEQ. facility to place a lock on EB'ed files to avoid
having two people editing the file at the same time. The string which TECO
locks is the complete file specification of the file. This can lead to
problems if the file is nested in a few SFD's, as the monitor places a limit of
30 characters on the length of the string being locked. To allow these files
to be locked, the symbol EQMXCH in QUESER must be defined to be 100 characters.
This allows room for the complete path to a file in the lowest level SFD, with
all of the SFD names being 6 characters. In a built copy of the monitor, this
parameter may be changed by changing the contents of %ENQML to be 100
7.1.1 6.03A - TECO version 200 will not run under TOPS-10 6.03A unless the
following patches are applied to UUOCON. These patches will enable the
processing of the new FILOP. functions at are part of the 7.00 and 7.01
release of TOPS-10. These patches are not supported by Stevens Institute of
Technology or Digitial Equipment Corporation. These patches were written at
Stevens Institute of Technology.
File 1) DSKA:UUOCON.MAC[10,7] created: 1055 31-Oct-1978
File 2) DSKA:UUOCON.MAC[10,52,603A] created: 1233 13-Feb-1980
1)98 FOPMAX==.-FOPTAB-1 ;MAXIMUM FUNCTION
2)98 EXP FOPILU ;(16) Illegal
2) EXP FOPIN ;(17) Input
2) EXP FOPOUT ;(20) Output
2) EXP FOPSST ;(21) SETSTS
2) EXP FOPGST ;(22) GETSTS
2) EXP FOPREL ;(23) RELEASE
2) EXP FOPWAT ;(24) WAIT for I/O to stop
2) EXP FOPSEK ;(25) SEEK
2) FOPMAX==.-FOPTAB-1 ;MAXIMUM FUNCTION
1)99 HLRZ T2,T1 ;GET ARGUMENT COUNT
1) HRR M,T1 ;POINT TO FIRST ARGUMENT
2)99 HLRE T2,T1 ;GET ARGUMENT COUNT
2) JUMPLE T2,FCLOSI ; If zero or less than give illegal mode
2) HRR M,T1 ;POINT TO FIRST ARGUMENT
1)99 HLRZ P1,T1 ;REMEMBER CHANNEL #
2)99 TLZE T1,(1B1) ; Is this assign a channel ?
2) JRST [MOVE T3,USRHCU## ; Yes - Get the highest used to date
2) ADDI T3,1 ; Bump it one
2) CAILE T3,17 ; Still less than 17 ?
2) JRST FOPILU ; No - Give up
2) HRL T1,T3 ; Get the channel into the correct place
TECO version 200 Page 15
2) PUSHJ P,PUTWDU## ; Store it back
2) JRST .+1] ; Keep on trucking
2) HLRZ P1,T1 ;REMEMBER CHANNEL #
1)99 JRST @FOPTAB(T1) ;DISPATCH BY FUNCTION
2)99 HRRZ T2,FOPTAB(T1) ; Get the address
2) CAIN T2,FOPEN ; Is this the OPEN address ?
2) JRST @FOPTAB(T1) ; Yes - Just dispatch
2) CAMG P1,USRHCU## ; Set up F and S
2) SKIPN F,USRJDA(P1) ; . . .
2) JRST FOPILU ; Give error return
2) MOVE S,DEVIOS(F) ; Get the status
2) JRST @FOPTAB(T1) ;DISPATCH BY FUNCTION
1)104 MOVE T1,FOPTMP ;PRESET AC
2)104 MOVE T1,DEVMOD(F) ; Get the mod word
2) TLNN T1,DVDSK ; Is this a disk?
2) JRST FOPEN9 ; No, don't bother with the path stuff
2) MOVE T1,FOPTMP ;PRESET AC
1)108 ;FILOP. EXIT ROUTINES
2)108 FOPWAT: MOVEI W,WAIT ; WAIT
2) JRST FOPOU1 ; Continue
2) FOPIN: SKIPA W,[TIN] ; get the input routine
2) FOPOUT: MOVEI W,TOUT ; Get the output routine
2) HRRZ T1,FOPFLG ; Get the number of arguments
2) CAIG T1,1 ; More than one ?
2) TRZA T1,-1 ; No, no close bits
2) PUSHJ P,GETWD1## ; Get the word into T1
2) HRR M,T1 ; Put the information into M
2) FOPOU1: PUSHJ P,(W) ; Call the routine
2) AOS (P) ; Give a good return
2) HRRZ T1,S ; Get the device status
2) PJRST FOPXI1 ; Store the information and return
2) FOPSST: HRRZ T1,FOPFLG ; Get the number of arguments
2) CAIGE T1,2 ; Need at least two arguments
2) JRST FOPILU ; No - Illegal
2) PUSHJ P,GETWD1## ; Get the argument
2) HRR M,T1 ; Put the address into M
2) AOS (P) ; Give a good return
2) JRST SETIOS ; Go do it
2) FOPGST: AOS (P) ; Give a good return
2) LDB T1,[POINT 4,FOPAP,12] ; Get the AC
2) HRR M,P1 ; Get the channel
2) PJRST USTATS ; Get the status
2) FOPREL: AOS (P) ; Never fails
2) JRST RELEA1 ; Continue
2) FOPSEK: JRST FOPILU
2)109 ;FILOP. EXIT ROUTINES
1)144 AOS JOBPD1##(R)
TECO version 200 Page 16
1) IFE FTPI,<
2)145 AOS (P) ; Give a skip return
2) IFE FTPI,<
The following patches are required to MACRO for TECO %200 to assemble
correctly. These are edits 1157 and 1164.
Fix the ! operator and the generation of polish for the B operator.
File 1) DSKA:MACRO.MAC[10,52] created: 1128 03-Mar-1980
File 2) DSKB:MACRO.MAC[10,6] created: 1717 19-Jul-1979
1) ;1157 28746 Fix "?MCREPP expression parsing problem" involving
1) ; ^! (The exclusive or operator) while expanding macros.
1)4 ;1164 Fix bad polish generated by X=<<FOO##+2>B8+17>
1) ;1203 PY 1-Oct-80 SPR 10-30018
1) ; Remove edit 653, as it is possible to generate UNV files
1) ; with synonyms that do not have VARF set.
1) ;*****END OF REVISION HISTORY*****
2)4 ;*****END OF REVISION HISTORY*****
1)38 JUMPE MRP,EVUPA1 ; if in a macro
1) PUSH P,CS ; save CS on the stack
1) CALL MREAD ;BETTER DO THIS
1) POP P,CS ; Restore CS
1) EVUPA1: SUBI C,40 ; YES, CHANGE TO SIXBIT
1) JRST EVNUM ;AND EVALUATE
2)38 SKIPE MRP ;IF IN A MACRO
2) CALL MREAD ;BETTER DO THIS
2) SUBI C,40 ;YES, CHANGE TO SIXBIT
2) JRST EVNUM ;AND EVALUATE
1)44 POLPO1: SKIPE BSHIFT ; Doing a Bshift?
1) RET ; Yes, just eturn
1) SKIPE INANGL ;STILL IN EVALUATION?
1) JRST [ CAMN RC,XWDANG ; WE HAVE LEFT POL, SUCH THAT LEFT POL=RIGHT POL?
2)44 POLPO1: SKIPE INANGL ;STILL IN EVALUATION?
2) JRST [ CAMN RC,XWDANG ; WE HAVE LEFT POL, SUCH THAT LEFT POL=RIGHT POL?
1)44 SKIPE INIOWD ; DOING IOWD?
2)44 SKIPN BSHIFT ; JUST RETURN IF DOING B-SHIFT
2) SKIPE INIOWD ; DOING IOWD?
1)229 REPEAT 0,< ;
TECO version 200 Page 17
1) SKIPE UNISCH ;  FOUND IN UNV?
1) JRST [ TLC ARG,SYNF!PNTF ;  YES, CHECK FOR SYN FIXUP
1) TLCE ARG,SYNF!PNTF ; 
1) JRST .+1 ; 
1) TLNN ARG,VARF ;  YES, OLD STYLE UNV FILE?
1) JRST .+1 ; 
1) MOVE AC0,UNITBL(V) ; 
1) JRST VERSKW] ;  YES, REASSEMBL UNV
1) > ;
1) LDB RC,RCPNTR ;POINT 1,ARG,17
2)229 SKIPE UNISCH ;  FOUND IN UNV?
2) JRST [ TLC ARG,SYNF!PNTF ;  YES, CHECK FOR SYN FIXUP
2) TLCE ARG,SYNF!PNTF ; 
2) JRST .+1 ; 
2) TLNN ARG,VARF ;  YES, OLD STYLE UNV FILE?
2) JRST .+1 ; 
2) MOVE AC0,UNITBL(V) ; 
2) JRST VERSKW] ;  YES, REASSEMBL UNV
2) LDB RC,RCPNTR ;POINT 1,ARG,17