Google
 

Trailing-Edge - PDP-10 Archives - steco_19840320_1er_E35 - 10,5676/teco/doc/tec200.doc
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 



                                  Version 200


                               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
INTRODUCTION


1.0  INTRODUCTION

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
systems.



2.0  CONCEPTS

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
CONCEPTS


     2.5  Word

          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

     3.1  Q-registers

     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
          command.

                    .U(POINTER)$JB,Q(POINTER)K$$

          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
          edited.



          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
          altmodes.



          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
NEW FEATURES


          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
NEW FEATURES


          3.2.4  File Specification Parser - The file specification parser  has
          been changed again.  The basic format for file specifications is:

                  Node::Device:File.Extension[Path] /Switches

          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.



               3.2.4.1  DEFAULT - Cause the file specification defaulting to be
               done by the initial defaults.



               3.2.4.2  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).



               3.2.4.3  NODEFAULT - This  switch  causes  no  defaults  to   be
               applied to this file and stores no defaults from this file.



               3.2.4.4  PROTECTION:nnn - This  switch  will  specify  the  file
               protection.



               3.2.4.5  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
NEW FEATURES


          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
              number.

          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
              implemented)

          4.  REFRESH - Cause the screen to be refreshed.  This  is  useful  if
              the  person  does not have the terminal gagged and people send to
              him.




          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:

                              EQ(q-reg)file.spec$

          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
          command.
TECO version 200                                                         Page 7
NEW FEATURES


          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:

                                    E.(q)$

          The 'q' is the name of  the  Q-register  which  is  the  new  editing
          buffer.



          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:

                                   n,mE$(q)

          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
          switches:



               3.2.11.1  RUNOFFSET:n - This will specify the RUN offset for the
               RUN UUO.



               3.2.11.2  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
          EL command.



               3.2.12.1  APPEND - Append to the log file.
TECO version 200                                                         Page 8
NEW FEATURES


               3.2.12.2  NOINPUT - Do not output the type in to the log file.



               3.2.12.3  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:



               3.2.13.1  SUPLSN - Suppress the reading  of  the  line  sequence
               numbers.



          3.2.14  EB Switches - The following are the allowed switches for  the
          EB command.



               3.2.14.1  GENLSN - This switch is equivalent to  the  /OMODE:LSA
               switch.



               3.2.14.2  IMODE:mode - This switch will specify the  input  mode
               of the file being read.



               3.2.14.3  INPLACE - This will cause the file to be edited in the
               path it was found it.



               3.2.14.4  MODE:mode - This switch will set  the  input  and  the
               output modes.



               3.2.14.5  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
NEW FEATURES


               3.2.14.6  READONLY - This will set  the  switch  as  being  only
               read.



               3.2.14.7  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:

                                    argFW$




     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:

                               FKsearch-string$




     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
NEW FEATURES


     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
     mode.



          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
          your terminal.



     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
EXTERNAL CHANGES


4.0  EXTERNAL CHANGES

     4.1  KA-10s

     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.



     4.3  '*i'

     The immediate command '*' now will reprompt the user upon execution of the
     command.



     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
     more.



     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
INSTALLATION INSTRUCTIONS


6.0  INSTALLATION INSTRUCTIONS

6.1  Compilation

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.



6.2  Loading

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
INSTALLATION INSTRUCTIONS


     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
terminal type.

     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:
     :EIDSK:TECO.INI[,]/NODEFAULT$"F:EITED:TECO.INI/NODEFAULT$'$$

     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
on SYS:.

     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
BEWARE


7.0  BEWARE

7.1  TOPS-10

     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
(decimal).



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
BEWARE


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
BEWARE


1)      IFE FTPI,<
****
2)145           AOS     (P)             ; Give a skip return
2)      IFE FTPI,<
**************



7.2  MACRO

     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        ;[1157] if in a macro
1)              PUSH P,CS               ;[1157] save CS on the stack
1)              CALL MREAD              ;BETTER DO THIS
1)              POP P,CS                ;[1157] Restore CS
1)      EVUPA1: SUBI C,40               ;[1157] 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            ;[1164] Doing a Bshift?
1)               RET                    ;[1164] Yes, just eturn
1)              SKIPE INANGL            ;STILL IN EVALUATION?
1)              JRST [  CAMN RC,XWDANG ;[773] WE HAVE LEFT POL, SUCH THAT LEFT POL=RIGHT POL?
****
2)44    POLPO1: SKIPE INANGL            ;STILL IN EVALUATION?
2)              JRST [  CAMN RC,XWDANG ;[773] WE HAVE LEFT POL, SUCH THAT LEFT POL=RIGHT POL?
**************
1)44            SKIPE INIOWD            ;[730] DOING IOWD?
****
2)44            SKIPN BSHIFT            ;[1037] JUST RETURN IF DOING B-SHIFT
2)              SKIPE INIOWD            ;[730] DOING IOWD?
**************
1)229   REPEAT 0,<                      ;[1203]
TECO version 200                                                        Page 17
BEWARE


1)              SKIPE UNISCH            ;[1203] [653] FOUND IN UNV?
1)              JRST [  TLC ARG,SYNF!PNTF ;[1203] [653] YES, CHECK FOR SYN FIXUP
1)                      TLCE ARG,SYNF!PNTF ;[1203] [653]
1)                      JRST .+1        ;[1203] [653]
1)                      TLNN ARG,VARF   ;[1203] [653] YES, OLD STYLE UNV FILE?
1)                      JRST .+1        ;[1203] [653]
1)                      MOVE AC0,UNITBL(V) ;[1203] [653]
1)                      JRST VERSKW]    ;[1203] [653] YES, REASSEMBL UNV
1)              >                       ;[1203]
1)              LDB RC,RCPNTR           ;POINT 1,ARG,17
****
2)229           SKIPE UNISCH            ; [653] FOUND IN UNV?
2)              JRST [  TLC ARG,SYNF!PNTF ; [653] YES, CHECK FOR SYN FIXUP
2)                      TLCE ARG,SYNF!PNTF ; [653]
2)                      JRST .+1        ; [653]
2)                      TLNN ARG,VARF   ; [653] YES, OLD STYLE UNV FILE?
2)                      JRST .+1        ; [653]
2)                      MOVE AC0,UNITBL(V) ; [653]
2)                      JRST VERSKW]    ; [653] YES, REASSEMBL UNV
2)              LDB RC,RCPNTR           ;POINT 1,ARG,17
**************