         .  




















                         TEM - Terminal EMulator program
                         --- - -------- -------- -------
























                                                 T. R. Wyant

                                                 16-May-1984

                                            Rev: 18-Mar-1987

TEM - Terminal EMulator program                                   Page 2
Overview


              Task  TEM  provides  terminal emulation over a full duplex
         TT:  line.  Input to the remote system can come either from the
         initiating  terminal  or a file.  Output from the remote system
         is displayed on the initiating terminal, and can be  optionally
         logged in a file.  System-wide, unit-specific startup and shut-
         down command files can be executed, if present.  The  user  can
         also select from the following features:  

             * Local Echo 
             * Parity generation and checking.  
             * Automatic linefeed on carriage return 
             * Translation of inbound control characters to ASCII abbre-
                 viations 
             * Passthru of control/s, control/q, control/o and control/x
                 to the remote system 
             * User selectable attention and end-of-file characters.  
             * Redefinition of any desired character to any other.  
             * Specifiable delay and prompt character for file transfer. 

              A  fully  functional  TEM is distributed as TEM.TSK.  This
         TEM requires at least RSX-11M+ V2.0, or RSX-11M V4.0  with  the
         full-duplex  TT:  driver, get/set multiple characteristics, and
         unsolicited input AST's.  It will also work under RSX-11S  V4.x
         as  long  as file I/O or command passing are not used.  You can
         also run it under VAX-11 RSX, as long as  you  don't  need  the
         /SPEED  or  /REMOTE switches.  There is a reduced-functionality
         version for RSX-11M+ V1.0 and RSX-11M  V3.2  (with  full-duplex
         TT:,  etcetera)  distributed  as  TEM32.TSK.  This version must
         still be built under at least M+ V2.0 or M V4.0.  

              TEM  can  be initiated from a terminal on the TT:, HT:, or
         VT:  driver, though there are restrictions on its  use  from  a
         virtual  terminal.   It  can communicate with any device on the
         TT:, HT:, or NL:  driver.  Support for the NL:  driver was used
         for  development  and  debugging,  but  was  left in for use in
         demo/practice sessions.  

              It  is  recommended (though not required) that TEM be used
         only to drive lines that run at 1200 baud or less, and that TEM
         be  initiated  from  a terminal that is at least as fast as the
         line to be driven.  The buffers are large (512 bytes as distri-
         buted),  but could be overrun with a determined effort.  If you
         must drive a fast line from a slow terminal, see the  "Advanced
         Features" section for some tips.  

              TEM  has  been used to communicate with (at least) the fo-
         lowing systems:  
                   RSX-11M+        Univac 1100 TP monitor
                   RSTS/E          X.25 networks
                   VMS             Apple DOS
                   TOPS-20
                   P/OS
         Theoretically,  any system that supports two stop bits, and ei-
         ther a 7-bit character set plus parity  is  accessable  through
         TEM.  


TEM - Terminal EMulator program                                   Page 3
Overview


              NOTICE  -  There  was an incompatibility with earlier ver-
         sions of TEM introduced at version 84.221.  The  /PAUSE  switch
         can  no longer be abbreviated to two characters, because of the
         conflict with /PARITY.  The new switch /DELAY serves  the  same
         purpose.   The  /PAUSE switch should be considered a "declining
         feature", and will be eliminated at some future time.  

TEM - Terminal EMulator program                                   Page 4
Short Course.  


              You can normally invoke TEM just by typing its name:  
                   >TEM 
         TEM will issue a prompt, 
                   TEM> 
         to indicate its presence at your terminal, and its readiness to
         accept a command.  You can also exit from TEM any time it  dis-
         plays the "TEM>" prompt by entering a control/z.  

              In  response  to the first "TEM>" prompt, you should enter
         the name of the device you wish to communicate with (eg:  TT7:)
         in  the  usual  RSX format.  Under VMS, device names in the VMS
         format are also legal (eg:  TXA2:) provided your system manager
         has set the named device up for use by a compatability-mode im-
         age.  

              Depending on your installation and the device you specify,
         TEM may automatically issue some setup commands to  the  remote
         device.  Then, it will issue the message 
              TEM - Ready for terminal input.  
         At this point, your terminal is connected to the remote device.
         Anything you type will be sent to the remote device,  and  any-
         thing  the remote device sends will be displayed on your termi-
         nal.  If you need to get back to the "TEM>" prompt  (which  you
         must do to exit), type a control/c.  If you wish to switch to a
         different remote device at this point, you may do so by  enter-
         ing  its name as before.  If you wish to continue with the same
         remote device, you do not need to name it again  in  your  com-
         mand.  

              TEM  offers  a variety of command switches to configure it
         to your application.  These are specified by appending them  to
         the device name (if any) in response to the "TEM>" prompt.  De-
         tails on these switches and their effects are given below.  For
         a  "plain  vanilla"  terminal emulation, the following switches
         will probably be most useful:  

             /ATTENTION:character 
                 If  you  need to send a control/c to the remote system,
                 you can use this switch to select another character  to
                 use to get the "TEM>" prompt.  See the end of this sec-
                 tion for how to specify a character to TEM.  

             /LOG:filename 
                 This  lets you log all data sent from the remote system
                 in the file you name.  Basicly,  anything  you  see  on
                 your screen will be logged.  This mechanism can be used
                 to  receive  ASCII  files  from  the   remote   system.
                 Formatted-screen  ("forms")  work may not reproduce ex-
                 actly if you copy the file to your terminal.   To  stop
                 logging, use "/NOLOG".  

             /SEND:filename 
                 This lets you send the named file to the remote system.
                 By default, TEM will wait until 15  "ticks"  after  the
                 last  linefeed  before  sending  the next record in the
                 file.  This has so far been  satisfactory  for  regular

TEM - Terminal EMulator program                                   Page 5
Short Course.  


                 file transfer.  If you have trouble, or if you are try-
                 ing to submit commands to the remote system  using  the
                 /SEND  feature, you can modify this behaviour using the
                 /DELAY or /PROMPT switches;  you may also need the /EOF
                 switch  to specify what TEM is to do at the end of your
                 /SEND file.  

                 Note  that  the use of the /SEND switch does NOT deter-
                 mine what happens to your file once it arrives  on  the
                 remote  system.   It is up to you to create an environ-
                 ment where your data  will  be  correctly  interpreted.
                 For  example:   if you wish to create a file on the re-
                 mote system that corresponds to the file you are  send-
                 ing, you must issue a command to the remote system like 
                     COPY TI:  MYFILE 
                 before you issue the /SEND switch to TEM.  

             /STOP 
                 This  switch  suspends  TEM,  allowing you to issue CLI
                 commands to your local system.  You  can  then  restart
                 TEM, and pick up where you left off.  

             / 
                 This  is  the  "null" switch.  You must (unfortunately)
                 specify this in response to the "TEM>"  prompt  if  you
                 wish  to  resume what you were doing without making any
                 other changes.  

         More  information  on  all  these  switches can be found in the
         "Switches" section.  

              To  specify a character parameter (say, for the /ATTENTION
         switch), there are several options available, to  suit  indivi-
         dual  preferences, and to circumvent limitations in DEC's stan-
         dard command line handler (which is insensitive to case,  among
         other things):  

            *  For  all  PRINTING  characters except lowercase, numbers,
              ":", "/", "^", "'", and "%",  you  can  just  specify  the
              character itself;  eg, 
                   /ATTENTION:* 
              to use an asterisk.  

            *  For  lowercase letters, precede the letter with a percent
              sign;  eg, 
                   /ATTENTION:%Z 
              to use a lower-case "Z".  Note that 
                   /ATTENTION:z 
              won't  work, as TEM converts all commands to uppercase be-
              fore interpreting them.  

            *  For  numerals,  and the special characters ":", "/", "^",
              "'", """, "*", and "%", preceede  the  character  with  an
              apostrophe ("'");  eg, 
                   /ATTENTION:'% 
              to use a percent sign.  

TEM - Terminal EMulator program                                   Page 6
Short Course.  


            *  For control characters, precede the "letter" with a caret
              ("^", up arrow, or shift/6);  eg, 
                   /ATTENTION:^G 
              to use a control/g (bell).  

         See  the  end of the "Switches" section for a fuller discussion
         of how to specify characters to TEM.  

TEM - Terminal EMulator program                                   Page 7
TEM commands.  


              TEM  is  invoked  in  the  normal  ways (see below).  In a
         "plain vanilla" run, the user specifies the device/unit of  the
         line  connected to the remote system, and TEM goes into "termi-
         nal input" mode.  At this point, anything the user  types  will
         be  sent  to  the remote system, and anything the remote system
         sends back will be displayed on the user's terminal.  The  user
         can  get  the  TEM prompt again by typing the "attention" char-
         acter, which is initially "control/c", but which can be changed
         using  the "/ATTENTION" switch.  From here, the user can change
         his setup, switch  lines,  send  a  file  (using  the  "/SEND:"
         switch), or exit by typing "control/z".  

              It  was  anticipated that a major use for TEM would be re-
         mote ASCII file transfer.  The input file may have any carriage
         control  attribute  available  on the PDP-11, though COBOL car-
         riage control has not been tested.  The implied  carriage  con-
         trol  will be generated for each record transmitted.  The input
         file may contain control characters, but no guarantees are made
         as  to how the remote system interprets them.  A programmed de-
         lay after each record is available to avoid loading the  remote
         system  too  heavily.   While  data from an input file is being
         sent, all keyboard input except the attention character is  ig-
         nored.   Typing  the  attention  character  will cause the send
         operation to be aborted, and return you to the TEM prompt.  

              Data from the remote system can be captured in a log file,
         with either "List" or "No" implied carriage control.  If no im-
         plied carriage control is selected, all data sent is put in the
         log file, with a record break after each carriage  return.   If
         "List"  carriage  control  is selected, TEM produces output re-
         cords designed to make the file resemble  the  actual  received
         data as closely as possible.  The algorithm seems fairly solid,
         but weird combinations may produce weird results.  In  particu-
         lar,  if  any number of linefeeds are followed immediately by a
         formfeed, the linefeeds will not make it to the output file.  

              TEM  can be installed and/or invoked by all the "standard"
         methods:  
             If not installed, 
                 >RUN TEM 
                 TEM>command 
                 TEM>command 
                 TEM>^Z 
             If installed as ...TEM, 
                 >TEM command 
               or 
                 >TEM 
                 TEM>command 
                 TEM>command 
                 TEM>^Z 
         In any case, a valid command takes one of two forms:  
             TEM><device><switches> 
         or 
             TEM>@filename 

TEM - Terminal EMulator program                                   Page 8
TEM commands.  


              In  the  first case, "<device>" represents any device name
         (including logical assignments) that conforms to the usual  RSX
         format.   If running under VMS, device names in VMS format (eg:
         TXA3:) are also allowed, though logical assignments that do not
         conform  to  the  expected  device  name format will not be ac-
         cepted.  <Switches> represents one or more  function  switches.
         Both   "<device>"   and  "<switches>"  are  normally  optional;
         however, TEM will require a device name if it does not have one
         from  a  previous  command line.  If a device name is specified
         and the /HOLD switch is not in effect,  TEM  will  execute  the
         shutdown  command file (if any) for the old device, hang up the
         old device, attach to the new device, and execute  its  startup
         command  file  (if  any).  If your command line contains both a
         device name and switches, TEM will  parse  your  switches,  but
         only  the  /HOLD  switch takes effect immediately.  The rest of
         your command line will  be  executed  after  the  shutdown  and
         startup  command  files.  Any switches appearing in these files
         will remain in effect unless overridden in your command line.  

              In  the  case  of the "@filename" command, the file is as-
         sumed to contain valid TEM commands.  These command  files  may
         be nested up to three deep.  Startup and shutdown command files
         do not count against your total.  The default filespec elements
         are:  
                 Device         SY:
                 UIC            Current Default
                 File Name      no default
                 File Type      .CMD
                 File Version   Highest
         Note that if TEM is invoked as 
                 >TEM command 
         TEM will prompt you after executing the command on the MCR com-
         mand line, unless the /EXIT switch has been asserted.  This  is
         in contrast to the normal action (eg, PIP), which is to exit as
         soon as the command is completed.  See  the  /EXIT  switch  for
         more details.  

TEM - Terminal EMulator program                                   Page 9
Switches.  


              The  command line switches may be negated by preceding ei-
         ther "-" or "NO".  All switch settings and  parameters  "latch"
         to  the last specified value except as noted.  Switch names may
         be abbreviated to  two  characters.   Note  that  some  of  the
         switches  imply  others.   This is a convenience, since certain
         features are normally selected together.  For instance,  "/TER-
         MINAL" implies "/ECHO" (among others).  Implied switches can be
         overridden by explicit switches on the same or subsequent  com-
         mand  lines.   For instance, in "/NOECHO/TERMINAL" the explicit
         "/NOECHO" overrides the "/ECHO" implied  by  "/TERMINAL".   The
         order  of  switches in a command line does not affect its mean-
         ing.  The following switches are supported:  



             /ASSIGN:char:char 
                 Specifies  that the right-hand character is to be tran-
                 slated  into  the  left-hand  character  before   being
                 transmitted to the remote terminal.  Inbound characters
                 are not affected.  Note that you can have more than one
                 /ASSIGN  in  effect  at  a  time,  though  you can only
                 specify one /ASSIGN switch on any given  command  line;
                 for instance, a series of commands like "/ASSIGN:'A:%A"
                 could translate all lowercase input to uppercase before
                 transmittal to the remote system.  If the switch is ne-
                 gated, the assignment table is cleared, and  characters
                 are  not translated.  The negated version of the switch
                 takes no parameters.  The initial setting is 
                         /NOASSIGN 

             /ATTENTION:char 
                 Specifies  the  character  to type to get a TEM prompt.
                 If you are transmitting from a file, typing this  char-
                 acter  will  cause  the file to be closed.  This switch
                 can not be negated.  The initial setting is 
                         /ATTENTION:^C (control/C) 

             /CARRIER[:comparison string][:nnnt] 
                 Enables the reassertion of the desired terminal charac-
                 teristics while the remote terminal line  is  set  /RE-
                 MOTE.   This action is required because the TT:  driver
                 clears several characteristics that TEM needs  when  it
                 detects carrier on a /REMOTE line.  The input stream is
                 scanned for a match with the comparison string.  When a
                 match  is found, the terminal characteristics are reset
                 after the delay specified in "nnnt".  See  the  end  of
                 the  "Switches"  section  for  the general syntax for a
                 comparison string;  see the  write  up  on  the  /DELAY
                 switch  (below)  for  the  syntax for "nnnt".  For this
                 switch, the maximum length of the comparison string  is
                 20  characters.   A delay of 0T will cause the reset to
                 occur immediately.  Negating the switch,  specifying  a
                 null  match  string,  or setting /NOREMOTE will disable
                 the function.  The parameters can be specified  in  ei-
                 ther order.  Omitted parameters default to the last va-
                 lue specified.  The initial setting is 

TEM - Terminal EMulator program                                  Page 10
Switches.  


                         /CARRIER:*"PASSWORD":0T 
                 (ie  -  case-insensitive match on "PASSWORD", and reas-
                 sert the desired characteristics immediately).  

             /CHECKPARITY[:char] 
                 Enables  or  disables  parity checking on inbound char-
                 acters.  Also specifies  the  character  to  insert  in
                 place of any inbound characters with bad parity.  If no
                 character is specified, the last  explicitly-given  bad
                 parity character is used.  The initial setting is 
                         /NOCHECKPARITY:^Z (control/Z) 

             /COMMAND 
                 Determines  what  to  do after executing a command.  If
                 set, TEM will prompt for another  command.   If  reset,
                 TEM  will  enter  terminal input mode after executing a
                 command.  The initial setting is 
                         /NOCOMMAND 

             /DELAY[:nnnt] 
                 Specifies the time to pause between records sent from a
                 file.  The "nnn" is a positive decimal number less than
                 32768,  and  the "t" is the letter "T" (for ticks), "S"
                 (for seconds), "M" (for minutes), or "H"  (for  hours).
                 You  may  not specify a time greater than 24 hours.  If
                 the switch is  negated,  no  pause  is  done.   If  the
                 /PROMPT  switch  is negated, the pause is from when the
                 record is sent.  If the /PROMPT switch is asserted, the
                 pause  is  from  receipt  of  the prompt character;  if
                 another prompt character arrives before the pause timer
                 elapses, it is restarted.  The initial setting is 
                         /DELAY:15T 

             /ECHO 
                 Local echo.  If set, all characters typed on the user's
                 terminal or sent from a file  will  be  echoed  on  the
                 user's  terminal  (and logged in the log file if one is
                 open).  The echoed character is subject to  the  action
                 of  both the /ASSIGN keyword (on output) and the /TRAN-
                 SLATE keyword (on input), just as  a  character  echoed
                 remotely would be.  The initial setting is 
                         /NOECHO 

             /EOF[:char] 
                 Specifies  the  character to transmit upon encountering
                 end of file on an  input  file.   Negating  the  switch
                 causes  no EOF character to be sent.  Asserting it with
                 no parameter causes the  most  recently  specified  EOF
                 character  to be sent, even if specified as /-EOF:char.
                 The initial setting is 
                         /EOF:^Z (control/Z).  

             /EXIT 
                 Causes  TEM  to  exit on the next "command level end of
                 file".  A "command level end of file" occurs:  


TEM - Terminal EMulator program                                  Page 11
Switches.  


                     If  you  invoked  TEM  as "TEM @file", when TEM en-
                         counters a syntax error, or the end of the  top
                         level command file;  

                     If you invoked TEM as "TEM command", as soon as the
                         command is  complete  (normally,  this  happens
                         when you type the attention character);  

                     If  you invoked TEM as "RUN TEM" or "TEM", when you
                         enter  a  control/z  in  response  to  the  TEM
                         prompt.  

                 If this switch is negated when TEM encounters a command
                 level end of file, TEM will implicitly assert  it,  and
                 prompt you for a command.  The initial setting is 
                         /EXIT  if  you  invoked  TEM by "RUN TEM" or by
                             "TEM", or 
                         /NOEXIT  if  you  invoked TEM by "TEM @file" or
                             "TEM command".  

             /HOLD 
                 Prevents  the line from being hung up on line change or
                 exit.  The initial setting is 
                         /NOHOLD 

             /LIST 
                 Specifies that the log file, when and if opened, should
                 have "List" carriage control.  TEM  will  then  analyze
                 the input stream and attempt to duplicate the effect of
                 the real form control characters received by  position-
                 ing the record breaks appropriately.  Perverse combina-
                 tions of form control  characters  may  yield  perverse
                 results.  In particular, combinations like 
                         <CR><NUL><LF> 
                 will foul things up.  It is recommended that /NONULL be
                 used if /LIST is asserted.  

                 If  this switch is negated, the log file is opened with
                 no implied carriage control,  and  all  characters  are
                 written to it with a record break after each <CR>.  The
                 initial setting is 
                         /LIST 

             /LOG[:file] 
                 Specifies  that the characters coming over the communi-
                 cation line should be logged to a  file.   If  no  file
                 name  is  given  (or  if  the switch is on due to being
                 specified in a previous command  line),  the  last  log
                 file  will  be opened, and the new data appended to it.
                 In this case, the current setting of the  /LIST  switch
                 will  be  ignored;  carriage control processing will be
                 according to the /LIST switch setting when the file was
                 created.   A  file name can be specified with the /-LOG
                 version of the switch, but it does no good  to  do  so.
                 The default file name elements are 
                         SY:TEM.LOG 

TEM - Terminal EMulator program                                  Page 12
Switches.  


                 The  file version number is interpreted as being in de-
                 cimal if running under RSX-11M+ V3.0 and up, or  VAX-11
                 RSX.  Otherwise, the version number is octal.  The ini-
                 tial setting is 
                         /NOLOG 

             /MAXBUFFER[:n] 
                 Specifies  the  maximum number of characters to accumu-
                 late before writing to the log file.  Note that in  the
                 case of a log file opened /LIST, the actual maximum re-
                 cord size will be smaller (by 2, normally)  because  of
                 the  implied  carriage control.  The parameter is posi-
                 tive decimal number.  If you specify a  number  outside
                 the  range  16  <  n < <bufsiz> (512 unless someone has
                 modified the source to allow a larger record) the near-
                 est  in-range  number will be taken, and you get no er-
                 ror.   If  the  switch  is  negated,  no  parameter  is
                 allowed,  and  <bufsiz>  is  used.   If  you assert the
                 switch but give no parameter, your terminal buffer size
                 is used.  The initial setting is 
                         /NOMAXBUFFER 

             /MONITOR 
                 Specifies  that  all  inbound control characters except
                 <LF>, <VT>, <FF>, and <CR> be replaced with their ASCII
                 names,  enclosed  in  angle brackets.  /MONITOR implies
                 /NOLIST/NULLS, and  /NOMONITOR  implies  /LIST/NONULLS.
                 The initial setting is 
                         /NOMONITOR 

             /NULLS 
                 Specifies  that inbound ASCII null characters are to be
                 sent to the local terminal, and to the log file if any.
                 If negated, any nulls received from the remote terminal
                 will be ignored.  The initial setting is 
                         /NONULLS 

             /OVERRIDE 
                 Specifies  that  the  given terminal should be attached
                 even if it is logged on.  The normal  behaviour  is  to
                 refuse  to  run against a logged-on terminal.  Also, it
                 allows the /PERMANENT switch to function in  situations
                 where  it  is  normally  no-opped.   Under RSX-11M+ and
                 RSX-11M, the default is 
                         /NOOVERRIDE 
                 Under RSX-11S and VMS, this switch is ignored.  The lo-
                 gon bit is not supported under either system,  and  VMS
                 attaches  the terminal to the process that logged it on
                 so that TEM can't get it anyway.  

             /PAUSE[:nnnt] 
                 A synonym for the /DELAY switch.  The /PAUSE switch was
                 renamed because  its  two-character  abbreviation  con-
                 flicts with the /PARITY switch.  For backwards compati-
                 bility,  /PAUSE  has  been  temporarily  retained,  but
                 "/PAU"  is the minimum abbreviation.  The /PAUSE switch

TEM - Terminal EMulator program                                  Page 13
Switches.  


                 will be eliminated in a future release of TEM.  

             /PARITY:spec 
                 Specifies  how TEM shall generate parity for the remote
                 system.  The local system is "hard  wired"  at  "space"
                 parity.  The options for the parity specification are: 
                         SPACE
                         MARK
                         EVEN
                         ODD
                 The  parity  specification  can  be  abbreviated to one
                 character.  The initial setting is 
                         /PARITY:SPACE 

             /PERMANENT 
                 Specifies that any remote line characteristics given on
                 the same line with the /PERMANENT switch are to be  re-
                 tained  (or  restored) when TEM exits.  Currently, only
                 /SPEED and /REMOTE are so affected.  This switch is ig-
                 nored  unless  you are running under RSX-11S, or unless
                 you used the /OVERRIDE switch when you initialized with
                 the remote device.  

             /PROMPT[:char] 
                 Specifies  whether  TEM  should wait for a prompt char-
                 acter from the remote system  before  transmitting  the
                 next record in a file, and if so what the character is.
                 If asserted without specifying a prompt character,  the
                 last prompt character specified is used.  If the /DELAY
                 switch is negated, the next record  is  transmitted  on
                 receipt  of the prompt character.  If the /DELAY switch
                 is asserted,  the  next  record  is  transmitted  imme-
                 diately.  The initial setting is 
                         /PROMPT:LF 

             /QUIET 
                 Causes  output  to  the  local  terminal to be disabled
                 while sending a file to the remote terminal.   Has  the
                 same  general  effect  as  control/o,  but  without the
                 driver overhead.  Output to a log file (if one is open)
                 is  not  affected  by this switch.  Likewise, it has no
                 effect when input comes directly from the user's  term-
                 nial.  THIS SWITCH DOES NOT LATCH.  The initial setting
                 is 
                         /NOQUIET 

             /REMOTE[:spd][:DIALOUT] 
                 Specifies  whether the driver should generate and moni-
                 tor modem control signals, and if so  what  the  answer
                 speed  should be, and whether the line should be confi-
                 gured for dialout.  The speed, if given, is any decimal
                 number valid in the 
                     >SET /REMOTE 
                 MCR  command.   In addition, speeds that are a multiple
                 of 100 baud can be abbreviated by dropping the last two
                 zeroes.   The  external  settings available on a DH are

TEM - Terminal EMulator program                                  Page 14
Switches.  


                 not supported.  Also, you can't set a DZ /REMOTE:0, and
                 of  course  you can't use this switch at all on a DL or
                 DJ.  /REMOTE[:n] implies /SPEED[:n[:n]], but  /NOREMOTE
                 does  not imply any switches at all.  If you assert the
                 switch but don't specify a speed, the answer  speed  of
                 the line is not altered.  

                 The  DIALOUT  option,  if used, configures the line for
                 dialout.  If not specified, /REMOTE configures the line
                 for  dialin  only  (which  may work with your modem for
                 dialout anyway).  You can specify DIALOUT and speed  in
                 either  order,  and can abbreviate DIALOUT to two char-
                 acters.  

                 If you are using the RSX-11M V3.2 version of TEM, or if
                 you negate the switch, you may not specify answer speed
                 or  dialout.   If  you  are  running the "standard" TEM
                 under RSX-11M V4.0 or RSX-11M+ V2.0, the DIALOUT option
                 will cause an error.  This is okay, as it is not needed
                 under these releases.  If you are  running  under  VMS,
                 this  switch is a no-op, as VAX-11 RSX does not support
                 the required terminal characteristics.  

                 The  initial setting duplicates whatever the line setup
                 was when you invoked TEM.  

                 Note:  If /REMOTE is asserted, the TT:  driver will re-
                 set several terminal characteristics that are  critical
                 to  the  operation  of TEM whenever it detects carrier.
                 To counteract this, TEM scans  for  the  string  "Pass-
                 word",  and  reasserts the desired characteristics when
                 this string is seen.  The string comparison is not sen-
                 sitive to case.  

             /RPA 
                 Specifies  that  ALL control characters (including con-
                 trol/q, control/s, control/o, and control/x)  typed  on
                 the  local  terminal are passed to the remote line.  If
                 not asserted, these characters will be intercepted  and
                 interpreted  by the TT:  driver for the local terminal.
                 The initial setting is 
                         /RPA 

             /SEND[:file] 
                 Sends  the  specified file down the line, a record at a
                 time.  Leading and trailing form control characters are
                 added  to each record based on the implied form control
                 of the file (None, List, Fortran, or  Cobol).   If  the
                 /TERMINAL switch is negated, implying a link to another
                 computer, TEM sends one less leading linefeed for  each
                 record than is implied by the file attributes.  

                 If specified without a file name, the last file sent is
                 retransmitted.  Be warned, though, that the identity of
                 the  "last  file" is lost if a startup or shutdown com-
                 mand file is executed.  The default file name  elements

TEM - Terminal EMulator program                                  Page 15
Switches.  


                 are 
                     SY:TEM.INP 
                 The  file version number is interpreted as being in de-
                 cimal if running under RSX-11M+ V3.0 and up, or  VAX-11
                 RSX.   Otherwise,  the  version  number  is  octal.  If
                 /-SEND is specified, the file name is ignored and input
                 comes  directly  from the user's terminal.  The initial
                 setting is 
                         /NOSEND 

             /SPEED[:spc[:spc]] 
                 Sets  line  speed.   The first parameter is the receive
                 speed, and the second is  the  transmit  speed.   Legal
                 speed  parameters  are  the  same as for /REMOTE.  This
                 switch cannot be negated.  If both parameters  are  de-
                 faulted,  the  original  line speeds are used.  If only
                 the transmit speed  (second  parameter)  is  defaulted,
                 both  the receiver and transmitter are set to the speed
                 specified.  The initial setting is 
                         /SPEED 

                 This switch is a no-op under VAX-11 RSX, which does not
                 support the required terminal characteristics.  

             /STOP 
                 Causes  TEM to return the local terminal to its initial
                 setup, detach it, and stop itself.  A message gives in-
                 structions  on  how to restart, using the MCR UNSTOP or
                 DCL START command.  While TEM is stopped, you have  ac-
                 cess to your system.  When TEM is restarted, you resume
                 communication with the remote system (or with  TEM,  as
                 the  case  may be).  If parent-offspring support is not
                 available, TEM will suspend itself, instead of stopping
                 itself.  This switch cannot be negated.  

                 Under VAX-11 RSX, this switch causes the process TEM is
                 running in to be  stopped.   Because  of  the  way  VMS
                 works, this leaves you pretty much in limbo, though you
                 can SPAWN a subprocess to do your work.  

             /TERMINAL 
                 Tells  TEM you are communicating with a terminal rather
                 than a CPU.  
                   If negated:  
                     TEM  sends  one  less  linefeed at the beginning of
                       each record of a "SEND" file than is  implied  by
                       its carriage control attribute.  
                     The following switches are implied:  
                       /NOECHO/EOF/DELAY/PROMPT/RPA 
                   If asserted:  
                     TEM  appends  a <LF> to every <CR> entered from the
                       terminal.  
                     TEM  sends a <CR><LF> to the remote terminal before
                       prompting for input from the local terminal.  
                     The following switches are implied:  
                       /ECHO/NOEOF/NOPAUSE/NOPROMPT/NORPA 

TEM - Terminal EMulator program                                  Page 16
Switches.  


                 The initial setting is 
                         /NOTERMINAL 

             /THROTTLE[:nnnt] 
                 Specifies  that TEM should wait the specified amount of
                 time before passing characters from the  local  to  the
                 remote  line,  or vice versa.  "nnnt" is any valid time
                 specification.  The purpose of this switch  is  to  de-
                 crease  system load by allowing larger I/O packets.  It
                 is recommended that  the  time  parameter  not  be  set
                 larger than 
                     (512 bytes) * (11 bits/byte) / (remote line speed) 
                 or buffer overrun may occur.  

                 The time parameter is illegal if the switch is negated,
                 and optional if it is asserted.  It  defaults  to  wha-
                 tever  time  was given the last time the switch was as-
                 serted, or "10T" if none.  The initial setting is 
                         /NOTHROTTLE 

             /TRANSLATE:char:char 
                 Specifies  that  the left-hand character is to be tran-
                 slated into the right-hand  character  upon  being  re-
                 ceived  from  the remote terminal.  Outbound characters
                 are not affected.  Note that you can have more than one
                 /TRANSLATE  in  effect  at  a time, though you can only
                 specify one /TRANSLATE  switch  on  any  given  command
                 line;    for   instance,  a  series  of  commands  like
                 "/TRANSLATE:%A:'A" could translate all lowercase  input
                 to uppercase upon receipt from the remote system.  Note
                 that translation takes place  BEFORE  testing  for  the
                 prompt  character  when  transmitting  a  file.  If the
                 switch is negated, the translation  table  is  cleared,
                 and characters are not translated.  The negated version
                 of the switch takes no parameters.  The initial setting
                 is 
                         /NOTRANSLATE 

             /TURNAROUND 
                 Specifies  that  characters received on the remote line
                 are to be echoed back  to  it.   These  characters  are
                 echoed unmodified.  The initial setting is 
                         /NOTURNAROUND 

             / 
                 Null  switch.   Since  the command line interpreter re-
                 gards an empty line as a  comment,  you  can  use  this
                 switch  to go back into communications mode without any
                 other changes.  This switch can be  negated,  though  I
                 have no idea why you would want to.  

              For all switches that specify characters (ie:  /ATTENTION,
         /EOF, or /PROMPT) the character can be specified in any of  the
         following ways:  

                 <Octal number>          (Low byte used)

TEM - Terminal EMulator program                                  Page 17
Switches.  


                 <Decimal number>.       (Low byte used)
                 '<Character>            (ASCII value)
                 ^<Character>            ((ASCII value)&37)
                 %<Character>            ((ASCII value)!140)
                 NU or NUL or NULL       0
                 SOH                     1 (^A)
                 STX                     2 (^B)
                 ETX                     3 (^C)
                 EOT                     4 (^D)
                 ENQ                     5 (^E)
                 ACK                     6 (^F)
                 BEL                     7 (^G)
                 BS                      10 (^H)
                 HT                      11 (^I)
                 LF                      12 (^J)
                 VT                      13 (^K)
                 FF                      14 (^L)
                 CR                      15 (^M)
                 SO                      16 (^N)
                 SI                      17 (^O)
                 DLE                     20 (^P)
                 DC1                     21 (^Q)
                 DC2                     22 (^R)
                 DC3                     23 (^S)
                 DC4                     24 (^T)
                 NAK                     25 (^U)
                 SYN                     26 (^V)
                 ETB                     27 (^W)
                 CAN                     30 (^X)
                 EM                      31 (^Y)
                 SUB                     32 (^Z)
                 ESC                     33
                 FS                      34
                 GS                      35
                 RS                      36
                 US                      37
                 SPACE (abbr to 2 char)  40
                 DEL                     177
                 <Unspecial character>   (ASCII value)

         In  general,  "'" means "take the ASCII value as is", "^" means
         "convert to control character", "%"  means  "convert  to  lower
         case".  An "unspecial character" is any printable character ex-
         cept "0" thru "9", "a" thru "z", "'", "^", "%", ":", "/",  "*",
         and  """.  The keywords may not be abbreviated unless the above
         table says so.  For instance:  

                 /AT:^@     ! Attention character is null
                 /EO:^Z     ! EOF character is control/Z
                 /AT:*      ! Attention character is "*".
                 /AT:'%     ! Attention char is "%".
                 /AT:%A     ! Attention char is "a".
                 /AT:SP     ! Attention char is " ".
                 /AS:^Q:~   ! Send XON on input of tilde.
                 /TR:EOT:CR  ! Translate <EOT> to <CR>.


TEM - Terminal EMulator program                                  Page 18
Switches.  


              For  all  switches that take a comparison string as an op-
         tion, the comparison string is specified in quotes  (not  apos-
         trophes),  with  an  optional  leading  asterisk  to  denote  a
         comparison that is insensitive to case.  If the first non-blank
         character  inside the quotes is alphanumeric, the entire quoted
         string is  taken  as  the  comparison  string.   If  the  first
         non-blank  character inside the quotes is not alphanumeric, the
         stuff  inside  the   quotes   can   be   any   combination   of
         single-character  specifications  (see above) enclosed in angle
         brackets, or literal strings enclosed in just about  any  other
         character.  For example:  

         Comparison String Specification Resulting Comparison String
         ------------------------------- ---------------------------
         "ETAOIN"                        "ETAOIN"
         " SHRDLU "                      " SHRDLU "
         "<'L%E%E>/VI/"                  "LeeVI"
         " \ABLE\ <SP> <%W><%A><%S>/ I/" "ABLE was I"
         "<SPACE SPACE>"                 "  "
         "<SPACESPACE>"                  syntax error
         "<61 61>"                       "11"
         "<6161>"                        "q"

TEM - Terminal EMulator program                                  Page 19
TEM Error and Information Messages.  


              Following  is  a list of some of the error and information
         messages that TEM generates, along with explanation and correc-
         tive action where appropriate.  


         TEM - Attach terminal error on ddn:.  $DSW = xxxx (decimal).  

              TEM  has failed to gain control of the specified terminal.
              The value returned is a directive  error  code,  as  docu-
              mented in the RSX Mini-Reference or other appropriate sys-
              tem manual.  The most likely cause is an internal error in
              TEM.  


         TEM  - Attach terminal error on ddn:.  I/O Status = xxxx (deci-
              mal).  

              TEM  has failed to gain control of the specified terminal.
              The value returned is an I/O error code, as documented  in
              the RSX Mini-Reference or other appropriate system manual.
              The most likely cause is that someone else  is  using  the
              specified terminal.  


         TEM - Communicating with ddn:  

              This is an informational message, telling you that TEM has
              successfully initiated with the remote terminal.  


         TEM - Detach terminal error on ddn:.  $DSW = xxxx (decimal).  

              TEM  has failed to release control of the specified termi-
              nal.  The value returned is a directive error code, as do-
              cumented  in  the  RSX Mini-Reference or other appropriate
              system manual.  The most likely cause is an internal error
              in TEM.  


         TEM  - Detach terminal error on ddn:.  I/O Status = xxxx (deci-
              mal).  

              TEM  has failed to release control of the specified termi-
              nal.  The value returned is an I/O error  code,  as  docu-
              mented  in  the  RSX  Mini-Reference  or other appropriate
              system manual.  The most likely cause is an internal error
              in TEM.  


         TEM - Device ddn:  is logged on.  

              TEM  will not communicate with a logged-on terminal.  Wait
              for the user to log off, and try again.  If you are  on  a
              non multiuser "M" system (or if you really DO want to grab
              someone's terminal while they're using it), try again  us-
              ing the /OVERRIDE switch.  

TEM - Terminal EMulator program                                  Page 20
TEM Error and Information Messages.  


         TEM - Device ddn:  is not a terminal.  

              You are trying to communicate with a device which TEM does
              not support.  The most likely cause is a typo.  Check  and
              re-enter  the  command.  If the problem persists, see your
              system manager.  


         TEM - Failed to assign LUN to device.  $DSW = xxx (decimal).  

              TEM  could not find the remote device.  The value returned
              is a directive  error  code,  as  documented  in  the  RSX
              Mini-Reference  or  other  appropriate system manual.  The
              most likely cause is a typo.  Under VAX-11 RSX,  it  could
              also  be  because  you  (or  your system manager) have not
              created  a  $$nnn:   assignment  pointing  to  the  remote
              device.   Check  and re-enter the command.  If the problem
              persists, see your system manager.  


         TEM  -  Get  characteristics error on ddn:.  $DSW = xxxx (deci-
              mal).  

              TEM has failed to read the old setup of the specified ter-
              minal.  The value returned is a directive error  code,  as
              documented  in the RSX Mini-Reference or other appropriate
              system manual.  The most likely cause is an internal error
              in TEM.  


         TEM  -  Get  characteristics  error on ddn:.  I/O Status = xxxx
              (decimal).  

              TEM has failed to read the old setup of the specified ter-
              minal.  The value returned is an I/O error code, as  docu-
              mented  in  the  RSX  Mini-Reference  or other appropriate
              system manual.  The problem could be caused by  unexpected
              I/O  on  the line, by an internal error in TEM, or by run-
              ning TEM on a system that does not have the required level
              of full-duplex TT:  driver support.  


         TEM - Ready for terminal input.  

              This  is an informational message.  TEM has entered termi-
              nal mode;  all characters entered from your terminal  will
              be sent to the remote system.  


         TEM - Run complete on ddn:.  

              This  is  an  informational message.  TEM has relinquished
              control of the given device.  


         TEM   -  Set  characteristics  error  on  ddn:.   $DSW  =  xxxx

TEM - Terminal EMulator program                                  Page 21
TEM Error and Information Messages.  


              (decimal).  

              TEM has failed to set up the specified terminal as needed.
              The value returned is a directive  error  code,  as  docu-
              mented in the RSX Mini-Reference or other appropriate sys-
              tem manual.  The most likely cause is an internal error in
              TEM.  


         TEM  -  Set  characteristics  error on ddn:.  I/O Status = xxxx
              (decimal).  

              TEM has failed to set up the specified terminal as needed.
              The value returned is an I/O error code, as documented  in
              the RSX Mini-Reference or other appropriate system manual.
              The problem could be caused by unexpected I/O on the line,
              by an internal error in TEM, or by running TEM on a system
              that does not have the required level of  full-duplex  TT:
              driver  support.   Use of the DIALOUT option under RSX-11M
              V4.0 or RSX-11M+ V2.0 will produce this error.  


         TEM - Stopped.  To restart, type MCR>xxxxxx 

              This  is  an  informational message.  TEM has relinquished
              control of your local terminal.  To  get  back  into  TEM,
              enter  the specified MCR command.  The equivalent DCL com-
              mand will also be displayed, if appropriate.  


         TEM - Syntax error.  Device spec not allowed "xxxx".  

              The  startup  or  shutdown  command  file has attempted to
              change the device TEM is communicating with.  The unwanted
              device spec is in quotes.  


         TEM - Syntax error.  Duplicate switch "xxxx".  

              You  have  specified  the same switch twice (or more) on a
              single command line.  This  error  can  also  result  from
              specifying  a  switch and its negation on the same command
              line, or a switch and a synonym for it on the same command
              line.   The  second  occurrance  of  the switch appears in
              quotes.  


         TEM - Syntax error.  Illegal device name "xxxx".  

              The  device  name  that  appears in quotes has bad syntax.
              The required format is two alphabetic characters  followed
              (optionally)  by  an  octal  number less than 400 (octal),
              followed by a colon (':').  


         TEM - Syntax error.  Illegal file name "xxxx".  

TEM - Terminal EMulator program                                  Page 22
TEM Error and Information Messages.  


              The file name that appears in quotes has bad syntax.  


         TEM - Syntax error.  Illegal switch "xxxx".  

              The  switch  that appears in quotes does not exist, or has
              been specified incorrectly.  


         TEM - Syntax error.  Illegal time spec "xxxx".  

              The  time spec that appears in quotes is illegal.  The un-
              its may be invalid (must be 'T', 'S', 'M',  or  'H'),  you
              may  have  specified  more  than 32767 of them, or you may
              have specified a period of more than 24 hours.  


         TEM - Syntax error.  Illegally negated switch "xxxx".  

              You may not negate the switch that appears in quotes.  


         TEM - Syntax error.  Number out of range "xxxx".  

              The number that appears in quotes is out of range.  


         TEM - Syntax error.  Invalid attention character "xxxx".  

              You  are  running  TEM after having SET HOST (or RMT) into
              another system, and have specified a null as the attention
              character.   The  DECnet  remote terminal facility ignores
              nulls.  


         TEM - This task will not run under this operating system.  

              TEM   is  only  supported  under  RSX-11M,  RSX-11M+,  and
              RSX-11S.  If you are in fact running under one  of  these,
              you  have found a bug in TEM.  If you are not, move to the
              appropriate system.  


         TEM - Warning - Failed to open log file.  $DSW = xxx (decimal). 

              The  session  log file could not be opened.  The value re-
              turned is a directive error code, as documented in the RSX
              Mini-Reference  or other appropriate system manual.  Check
              and re-specify the log file.  If the problem persists, see
              your system manager.  


         TEM - Warning - Failed to open log file.  I/O Status = xxx (de-
              cimal).  

              The  session  log  file  could  not  be opened.  The value

TEM - Terminal EMulator program                                  Page 23
TEM Error and Information Messages.  


              returned is a I/O error code, as  documented  in  the  RSX
              Mini-Reference  or other appropriate system manual.  Check
              and re-specify the log file.  If the problem persists, see
              your system manager.  


         TEM - Warning - ddnn:  doesn't have software speed control.  

              You  have  attempted to change baud rate or enable or dis-
              able carrier monitoring in an environment  where  this  is
              not  supported.   This  error occurs if you attempt to use
              the /REMOTE or /SPEED switches under VAX-11 RSX, or  on  a
              DL-11  or  DJ-11.  The switches that caused this error are
              ignored.  

TEM - Terminal EMulator program                                  Page 24
Advanced Features - Making do without flow control


              TEM does not have any flow control capability, which makes
         it awkward to (say) drive a 4800 baud line  from  a  1200  baud
         terminal, or to use TEM when connected to your host via a pack-
         etized net.  This kind of thing can be made to work  (at  least
         most of the time), provided you heed the following guidelines: 

              * Try not to receive too much data at once, so the inbound
                   ring buffer has time to empty.  

              * When sending files, use the /QUIET switch.  

              *  If the remote system and your terminal support XON/XOFF
                   flow control, don't negate the /RPA switch  (the  de-
                   fault is /RPA).  

              *  Try  to  get the remote system to pad (more) nulls into
                   its transmissions, and don't assert the /NULLS switch
                   (the  default  is  /NONULLS).  This won't help if the
                   problem is that there is a packetized net involved.  

              *  Rebuild  TEM  with bigger ring buffers - especially the
                   inbound ring buffer.  See "Installation Notes"  below
                   for how.  


TEM - Terminal EMulator program                                  Page 25
Advanced Features - Batch mode operation.  


              TEM  can be initiated by the batch processor, or otherwise
         run on a virtual terminal.  Generally, it works the same way as
         it  does on a TT:  terminal.  However, the VT:  driver does not
         support the "Attach for Unsolicited Input" function.  In  order
         to  make input from the virtual terminal work more like it does
         on a real terminal, TEM issues an implicit 
              /SEND:TI:  
         under the following circumstances:  
              * /NOCOMMAND is in effect 
              * /SEND does not appear on the command line.  

              There  are, however, still several differences between in-
         put from a virtual terminal and input from a real terminal:  
              * There is no way to feed the attention character to TEM. 
              *  TEM  will  prompt  for  a command after sending a file,
                   rather than going into terminal input mode.  This  is
                   true even if the /COMMAND switch is negated.  
              *  If the /QUIET switch is asserted, no input from the re-
                   mote terminal will be written to the local  (virtual)
                   terminal  under any circumstances.  The /QUIET switch
                   stil does not latch.  
         There  may  be  other  differences, but these are the ones that
         come to mind.  

              Since  TEM is essentially unattended, you should make sure
         there is nothing that will cause it to stall, such as  not  re-
         ceiving  an  expected  prompt  character.   You should consider
         specifying /NOPROMPT for such things as  sending  a  series  of
         carriage  returns  to  an  autobaud  algorithm, where no prompt
         character can be returned.  

TEM - Terminal EMulator program                                  Page 26
Advanced Features - Startup and Shutdown Command Files


              TEM  has the optional capability to execute a startup com-
         mand file when it first attaches the  remote  terminal,  and  a
         shutdown command file just before it detaches the remote termi-
         nal.  This feature is selected when TEM is assembled, by defin-
         ing symbol "LINSET".  The startup command file is named 
                 LB:[1,5]ddnINI.TEM 
         and the shutdown command file is named 
                 LB:[1,5]ddnKIL.TEM 
         where  "ddn"  represents the name and unit number of the remote
         terminal.  The unit number is specified with no leading zeroes,
         but  an  explicit  "0" is required for unit 0 (eg:  TT0INI.TEM,
         not TTINI.TEM).  Neither file is required.  The  constant  part
         of  the  file  name is located at "SETDV:", if you need/wish to
         modify it.  

              Because  any switches on the user's command are assumed to
         refer to the new device, execution of  the  command  line  that
         triggered  the startup/shutdown process is deferred until after
         the shutdown and startup command files have executed.  There is
         one  exception  to  this:   the  /HOLD switch is executed imme-
         diately.  This lets the user enable or supress the execution of
         any startup or shutdown files implied by the command.  

              There  are  two  differences  between the way a startup or
         shutdown command file is executed and the way a normal  command
         file  is  executed.   First,  it is illegal to specify a device
         name in a startup or shutdown command file;  an attempt  to  do
         so  will result in a syntax error.  Second, it is impossible to
         do keyboard input in a startup or shutdown command  file.   The
         current setting of the /COMMAND switch is ignored, and the file
         is processed as though it were asserted.  Once the command file
         has  completed,  TEM  begins  paying  attention to the /COMMAND
         switch again.  

              The  code that impliments the startup and shutdown command
         files is based on knowlege of the data structures used  by  the
         GCML$  package,  which is documented in the I/O operations man-
         ual.  These data structures  are  internal  to  GCML$,  undocu-
         mented,  and  presumably  subject to change without notice.  On
         the other hand, GCML$ seems to be a fairly "stable" product, so
         this  feature  may continue to work indefinitely.  Probably the
         thing most likely to change is the size or layout of a pushdown
         list entry.  The default TEM installation enables this feature. 

              For  VAX-11  RSX,  see  the  section on installation under
         VAX-11 RSX.  

TEM - Terminal EMulator program                                  Page 27
Advanced Features - Extended Get Command Line Support


              Starting  with  RSX-11M  V4.0 and M+ V2.0, an Extended Get
         Command Line package (EGCML)  has  been  available.   The  only
         known  documentation is in the SYSLIB help file, and it is woe-
         fully insufficient.  This package was designed for the indirect
         command  file  processor, and any features not actually used by
         the "@" processor are likely not to work.  

              Use of this package is selected at assembly time by defin-
         ing symbol "EXGTCM".  Using this package allows you to  specify
         the following switches on a command file:  

             /LB 
                 Specifies that the command file is a universal library.
                 An optional parameter specifies the name of the  module
                 to  execute;   if omitted, module ".MAIN." is executed.
                 Any file with records of 512.  bytes or larger  is  as-
                 sumed to be a library, and module ".MAIN." is executed.
                 The command "@/LB:module" is a special case.  If issued
                 from a library module, the specified module in the same
                 library is executed;  if not, "module.cmd" is executed. 

             /DE 
                 Causes  the command file to be deleted after execution.
                 Unlike the corresponding "@" processor switch, this one
                 seems to work.  I have no idea what happens if you com-
                 bine /LB and /DE on the same line.  

             /ER 
                 The apparent intent of this switch is to prevent an er-
                 ror from being returned if the specified file cannot be
                 opened.  Neither asserting or negating it seems to have
                 any effect.  

              Although  the EGCML package has a way to force a call to a
         nested command file (the original reason for using  this  pack-
         age),  it doesn't like it if the file cannot be opened.  There-
         fore, startup and shutdown command files  are  implimented  "by
         hand",  just  as  in the GCML$ version.  The difference is that
         EGCML is obviously not a stable product, and the pushdown stack
         is  more  complex.  Because of this, and because of the greater
         size of the EGCML module(s), the default TEM installation  uses
         GCML$ instead.  

TEM - Terminal EMulator program                                  Page 28
Advanced Features - Accounting Support


              Since you might wish to use TEM to communicate over a long
         distance phone line, TEM has the capability to  log  the  start
         and end time of all operations to an accounting file.  Unfortu-
         nately, TEM has no way of knowing if a long distance  call  was
         in  fact  made;   but at least the accounting log will tell you
         when one COULD have been made, and from where.  

              Accounting log capability is built into TEM when it is as-
         sembled, by defining symbol "ACCNTG".  The default installation
         is with "ACCNTG" defined.  

              The  account  file resides on the same disk and UIC as the
         remote line startup and shutdown command files,  but  the  file
         name  is TEMACT.TEM.  If you wish to modify this file name, you
         will find it in the code at "ACTFN:".  You must create the  ac-
         counting log yourself;  if TEM cannot open an existing account-
         ing log file, operations will not be logged.  It  is  suggested
         that you create the file with EDT, and provide a suitable head-
         ing for it.  

              Whenever  TEM  initializes  with  or  disconnects  from  a
         device, it will attempt to open the account log file,  and  ap-
         pend  a record showing the date, time, local terminal name, re-
         mote terminal name, and type of transaction.  If  the  file  is
         already  accessed  for  write,  TEM will retry the open up to 5
         times at 3 second intervals before failing.  Any other open er-
         ror  causes  immediate  failure.   If TEM cannot update the ac-
         counting log file, NO ERROR MESSAGE is given to the user.   The
         intent  in  general is that the casual TEM user be oblivious to
         the account log.  

TEM - Terminal EMulator program                                  Page 29
Advanced Features - Named Directories, Logical Names, Decimal


         The distributed task image TEM.TSK has support for named direc-
         tories, logical names, and decimal version numbers.  If you re-
         build TEM, you may or may not get these, as described below.  

             *  Named  directory  support  is  there,  if  you build TEM
                 against a SYSLIB that supports it, and execute it on  a
                 system  that  supports it.  TEM accepts anything inside
                 square brackets as a directory spec, and lets  FILES-11
                 worry  about  whether  it's valid or not.  There is one
                 restriction:  if the FEAT$ directive is not  available,
                 TEM  will take your default directory to be the same as
                 your UIC, no matter what it was when you invoked TEM.  

             * What kind of logical name support you get depends on what
                 value of RSXVER you assemble with.  If you use no  pre-
                 fix  file,  you  get  RSXVER = 40.  If you relink using
                 TEM.CMD, you will get a prefix file with RSXVER  appro-
                 priate to your system.  The cases are:  

                      1.  RSXVER = 32.  
                          This  is  the  reduced-functionality  TEM  for
                          RSX-11M V3.2 and RSX-11M+ V1.0.   You  get  no
                          logical name support whatever.  

                      2.  RSXVER = 40.  
                          This  is for RSX-11M V4.0 and up, and RSX-11M+
                          V2.0 and 2.1.  These systems  do  not  support
                          logical  names.   However, subset TLON$S func-
                          tionality is included, so you  can  build  TEM
                          under  these  systems,  transport it to VAX-11
                          RSX, and have  it  work.   Because  TLON$S  is
                          hard-coded,  I  can't guarantee that this will
                          work  forever,  but  it  ought  to  be  fairly
                          stable.  

                      3.  RSXVER = 50.  
                          This  is  for RSX-11M V5.0 (if ever), RSX-11M+
                          V3.0, and VAX-11 RSX.  Logical names are  sup-
                          ported.  

                 Note  that  at  the moment, the only thing logical name
                 support buys you is more complete  functionality  under
                 VAX-11 RSX.  TEM won't (yet) parse 

             * Decimal version numbers will parse if your system has the
                 FEAT$ directive and decimal version support - otherwise
                 not.   If  TEM  decides  not  to  parse decimal version
                 numbers, you can force it to by following  the  version
                 number with a decimal point.  This is probably not sup-
                 ported by FILES-11, but it works with M+ V2.1.  
                     SYS$SYSREDUNDANT_COMM_DEVICE:  
                 (eg) as the name of a remote line.  

TEM - Terminal EMulator program                                  Page 30
Advanced Operations - Aborting TEM


              Since  TEM  needs to modify the setup of the remote termi-
         nal, it is privileged (/PR:0).  Since some of  these  modifica-
         tions  are  nasty  (ie:   NOECHO,  RPA), TEM specifies an abort
         notification AST to allow it to put the remote  line  back  the
         way  it  was  originally.  The astute RSX jockey will note that
         this combination effectively makes it impossible to  abort  TEM
         if the mainline is hung up.  There SHOULD be no way for this to
         happen, but since TEM is not necessarily bug free,  here  is  a
         way to handle it:  

             *  From  another  terminal, issue the MCR ATL command.  The
                   first number after the task name is  the  address  of
                   TEM's Task Control Block (TCB).  Make note of it.  

             *  The  "Privileged"  bit  (T3.PRV = 10000) is in the third
                   status word of the TCB (T.ST3 at offset 36  from  the
                   start  of  the  TCB).  Open this word.  If "xxxxx" is
                   the TCB address noted above, you  would  use  an  MCR
                   command like 
                       >OPE xxxxx+36/KNLD 
                   on  an  RSX-11M+  with  kernel data space.  Clear the
                   "privileged" bit.  

             *  If you don't know what terminals TEM was running on, run
                   the RMD task header display on it to find out.   Make
                   note, as you may have to restore setups after you fi-
                   nally get rid of TEM.  

             *  Abort your copy of TEM, twice.  Since your TEM is now an
                   unprivileged task, the second abort will cause it  to
                   abort for real.  

             *  Check  terminal  setups on both the "local" and "remote"
                   line, and replace any that are not as they should be.
                   TEM  sets  the  remote  line  /NOWRAP  /FDX /FORMFEED
                   /HFIL:0  /HHT  /NOECHO   /TYPEAHEAD   /SLAVE   /LOWER
                   /NOVFILL  /NOABAUD  /RPA and possibly /[NO]REMOTE and
                   /SPEED if the corresponding TEM  switches  have  been
                   used.   TEM sets the local line /NOWRAP, and possibly
                   /[NO]RPA, depending on whether you have used the /RPA
                   switch, and on what it was doing when you killed it. 

             *  If any shutdown commands are required to the remote ter-
                   minal, get back into TEM (carefully) and issue them. 

         The  usual  warnings  for  any procedure using OPEn apply:  the
         offsets are specific to RSX-11M+ V2.0;  they are not guaranteed
         to  be  right  (typos, you know);  and your system is not guar-
         anteed to be running after you do all this.  

TEM - Terminal EMulator program                                  Page 31
Installation notes.  


              The  default  version of TEM occupies about 16K.  This as-
         sumes you have not mapped it to any  resident  libraries.   The
         major  installation options have been covered above.  There are
         some other customizations you can do.  Some of these have  been
         automated,  and  you  can get them just by rebuilding TEM using
         TEM.CMD.  

             *  You  should  be  able  to taskbuild with the /ID and /MU
                 switches if you so desire.  I would not anticipate  any
                 need  for  the /ID switch, but /MU may be useful if you
                 have a lot of users.  I have not tried either, but  TEM
                 was coded with this in mind.  

             *  There is some trace logic built into TEM;  you enable it
                 by defining symbol "TRACE".  

             *  The  size  of  the  file buffers is determined by symbol
                 "BUFSIZ".  You can change it if  you  wish.   The  task
                 will  grow  or  shrink  by  (2 bytes)*(the size of your
                 change).  You should not make BUFSIZ greater than  OUR-
                 SIZ.  

             * The size of the inbound ring buffer is determined by sym-
                 bol "INRSIZ".  You can change this if  you  wish.   The
                 task  will grow or shrink accordingly.  It can be help-
                 ful to increase this when running full-screen  applica-
                 tions (eg:  EDT, RMD), if your terminal is connected to
                 the system TEM is executing on via  a  packetized  net-
                 work.  

             *  The  size  of  the outbound ring buffer is determined by
                 symbol "OURSIZ".  You can change this if you wish.  The
                 task will grow or shrink accordingly, but it should not
                 be made less than BUFSIZ.  

             *  There  is  a  built-in  timeout on synchronous I/O of 10
                 seconds.  The magnitude and units are defined  by  sym-
                 bols "SYNTOM" and "SYNTOU".  Before making this timeout
                 terribly long, you should consider that this timeout is
                 what  bails  you  out if another task has attached your
                 remote terminal.  

             *  The  initial  settings  (asserted  or  negated)  of  all
                 switches defined  under  "SWASS:"  can  be  changed  by
                 changing  the  definition  of symbol SWINIT as shown in
                 the table below:  

                         To assert    Set bit
                         ------------ -------
                         /DELAY       SWPAU
                         /ECHO        SWECH
                         /LOG         SWLOG
                         /NULLS       SWNUL
                         /EOF         SWEOF
                         /LIST        SWLIS
                         /TERMINAL    SWDTE

TEM - Terminal EMulator program                                  Page 32
Installation notes.  


                         /HOLD        SWHLD
                         /MONITOR     SWMON
                         /RPA         SWRPA
                         /COMMAND     SWCMD
                         /PROMPT      SWPMP

                 Note  that  if  you assert /LOG in this manner, you may
                 have to modify the code to  get  the  log  file  opened
                 properly.   The  initial switch parameter values can be
                 changed by modifying as follows:  

                         To change               Modify
                         ---------------------   -------
                         /DELAY magnitude        RCDLAY:
                         /DELAY units            RCDUNT:
                         Attention character     ATNBYT:
                         End-of-file character   EOFBYT:
                         Prompt character        PMPBYT:
                         /ASSIGN setting         ASGTBL:
                         /TRANSLATE setting      TRNTBL:
                         /MAXBUFFER setting      Code in ENTRY:
                         /LOG default filespec   LOGFNB:
                         /SEND default filespc   SNDFNB:

             *  The initial /PARITY setting can be changed by initializ-
                 ing PARSPC:   to  the  appropriate  offset  in  PARTBL:
                 (found by subtracting the address of the entry for your
                 desired parity from the address of the PARTBL:  label),
                 and by initializing ASGTBL:  to the appropriate parity.
                 The latter will probably require  a  semi-sophisticated
                 macro, which I didn't feel like writing.  

             *  The  initial  /CHECKPARITY substitution character can be
                 changed by initializing BADPAC:  to the  desired  char-
                 acter.   Be  sure  the high bit is off.  If you want to
                 initialize with parity checking turned on, you must set
                 the  high bit in BADPAC:, and initialize all entries in
                 BADPAC:  that represent invalid parity (under  whatever
                 your  default parity is) to the desired character.  The
                 latter seems to call for another sophisticated macro.  

             *  Desired  setups  for  the new terminal are at "TERNMC:".
                 Any "static" setups for  the  remote  terminal  can  be
                 changed by modifying here.  Any setups involving actual
                 device control should appear below  "TERNDL:"  so  they
                 can  be no-opped for controllers without device control
                 (eg:  DL-11, DJ-11).  Setups  involving  only  software
                 settings   in  the  TT:   driver  should  appear  above
                 "TERNDL:".  If you add a setup to the list, it would be
                 polite to add it to the list of saved original settings
                 at "TEROMC:".  "TERODL:" performs the same function  in
                 this  table  as  "TERNDL:"  does  in  table  "TERNMC:".
                 "Switchable" settings cannot be modified this way.  The
                 initial  settings for /REMOTE and /SPEED are determined
                 in subsoutine "TERSET:".  


TEM - Terminal EMulator program                                  Page 33
Installation notes.  


             *  Similarly, the desired setups for the local terminal are
                 at "TELNMC:".  The  originals  are  at  "TELOMC:".   No
                 device control is performed on the local terminal;  TEM
                 assumes that speed (and so on) are already pretty  much
                 where you want them.  

              That  about  covers  the easy modifications.  TEM could in
         principle be converted to 8 bit operation, but there is no cen-
         tral  place  to  do this.  You would have to double the size of
         the assign table, and change all the bit masks.  You might also
         want to add an "8BIT" switch.  

TEM - Terminal EMulator program                                  Page 34
Installation under VAX-11 RSX


              I  have  limited  experience  with  TEM  under VAX-11 RSX.
         There are, however, a couple things that look obvious:  

              1.  You  must  have  VAX-11  RSX installed on your system.
                  The AME probably won't cut it.  

              2.  If  you  want to use startup/shutdown command files or
                  accounting, you will have to  create  a  directory  to
                  hold the files:  
                      $ CREATE/DIRECTORY SYS$SYSROOT:[001005] 
                  will do it for the default TEM.  

              3.  You will need to 
                      $ ASSIGN/SYSTEM/EXECUTIVEMODE device:  $$nnn:  
                  for  each  terminal  that you want to run TEM against.
                  This assign should go in 
                      SYS$MANAGER:VAX11RSX$DEVICE_NAMES.COM 
                  Note  that  the  TEM users can use the physical device
                  name - they do not have to use the $$nnn:  assignment.
                  Also,  you  don't need to do this for the null device.
                  You are referred to the VAX-11 RSX manual for more  on
                  device name mapping.  

              4.  The  terminals you intend to use for remote lines must
                  be 
                      $ SET TERMINAL xxx:/TYPEAHEAD/SPEED=nnnn/PERMANENT 
                  as  VAX-11  RSX does not seem to support having TEM do
                  this on its own (at least under some versions).  Also,
                  you need to set them to the modem control you want, as
                  TEM can't handle this either.  

              5.  Automatic startup and shutdown command files are named
                  after the VMS physical device being used.   For  exam-
                  ple, if you are running on TXA1, the files are 
                      SYS$SYSROOT:[005001]TXA1INI.TEM 
                  and 
                      SYS$SYSROOT:[005001]TXA1KIL.TEM 
                  respectively.   Note  that  if you contrive to run TEM
                  against a device whose physical name  does  not  tran-
                  slate  into  a  legal  RSX filespec (eg:  one of those
                  "$n$" things), you can't have a  startup  or  shutdown
                  command file for this device.  

              6.  TEM  cannot  support subdirectories because VAX-11 RSX
                  doesn't.  At least that's what the book says.  If your
                  current  default directory is a subdirectory, it seems
                  to work OK.  

              7.  If you want nonprivileged people to be able to execute
                  TEM, you need to install it with  SYSPRV  and  TMPMBX.
                  You  may  also  want  to  install  it with an elevated
                  priority.  

              8.  It  may  be  advantageous to rebuild TEM with a larger
                  inbound ring.  An inbound ring of 2048  bytes  allowed
                  TEM to run acceptably on a moderately loaded 11/780 at

TEM - Terminal EMulator program                                  Page 35
Installation under VAX-11 RSX


                  priority 4.  

              9.  When  I  went  to rebuild TEM under VMS, I had trouble
                  with MAC and TKB not finding the  device  WK0:.   This
                  turned out to be that 
                      SYS$MANAGER:VAX11RSX$DEVICE_NAMES.COM 
                  needed to define a $$n name pointing to SYS$SCRATCH.  

             10.  You  can set up TEM as a "foreign" command by defining
                  a global symbol that refers to it.   For  example,  if
                  you have put TEM.TSK in SYS$SYSTEM, 
                      $ TEM :== $SYS$SYSTEM:TEM.TSK 

             11.  If  you  invoke  TEM  as  a foreign command, any apos-
                  trophes required by the TEM syntax need to be  doubled
                  so  VMS  doesn't take them as orders to perform symbol
                  substitution.  This does not apply once you're  inside
                  TEM.  For example, 
                      $ TEM TXA1:/ATTENTION:''~ 
                  is required from DCL, but 
                      TEM>TXA1:/ATTENTION:'~ 
                  is OK from inside TEM.  

             12.  TEM  requires  all  parts of all filenames to be valid
                  RSX-11  filespecs.   That  is,   the   following   are
                  FORBIDDEN:  

                  1.  VMS-style device names 

                  2.  Directory  names  longer than 9 characters or con-
                      taining "$" or "_" 

                  3.  Directory  numbers  (UIC  format)  with  group  or
                      member numbers in decimal, or greater than 377 oc-
                      tal.  

                  4.  File  names longer than 9 characters or containing
                      "$" or "_" 

                  5.  File  types longer than 3 characters or containing
                      "$" or "_" 

                  6.  Version  numbers  larger  than 77777 octal (32767.
                      decimal).  



TEM - Terminal EMulator program                                  Page 36
Revision history


              Following  is a revision history of TEM, going back to the
         Spring 1983 DECUS version (84.131, dated 10-May-1984).  


         Version   Date        Revision(s)

         84.169  17-Jun-1984   Patch /NOREMOTE
                               Add single-argument /SPEED

         84.173  21-Jun-1984   /SPEED and /REMOTE illegal on DL11 and
                               DJ11

         84.177  25-Jun-1984   Cancel control/s on remote line

         84.194  12-Jul-1984   Make /SPEED and /REMOTE no-ops on DL-11
                               and DJ11, with warning

         84.213  31-Jul-1984   Add /TRANSLATE

         84.221  08-Aug-1984   Beef up attention and abort code

         84.223  10-Aug-1984   Add /PARITY
                               Add /DELAY as synonym for /PAUSE
                               /PA NOW MEANS /PARITY, NOT /PAUSE

         84.240  27-Aug-1984   Don't apply parity to translation tbl

         84.241  28-Aug-1984   Default to /NOMAXBUFFER

         84.244  31-Aug-1984   Add /CHECKPARITY

         84.269  25-Sep-1984   Default to /RPA
                               /TERMINAL now implies /NORPA
                               /NOTERMINAL now implies /RPA

         84.270  26-Sep-1984   Add /STOP

         84.272  28-Sep-1984   Correct the /NULL code

         84.292  18-Oct-1984   Add /EXIT

         84.296  22-Oct-1984   Beef up attention character code

         85.008  08-Jan-1985   Attempt to conditionalize for RSX-11M
                               V3.2.
                               This is the January 1985 DECUS library
                               version, and the Spring 1985 DECUS
                               version.

         85.143  23-May-1985   Add /OVERRIDE, /THROTTLE

         85.227  15-Aug-1985   Add the :DIALOUT option to /REMOTE.
                               Thanks to Ed Cetron for the idea.
                               Also optimize switch presence code.

         85.255  12-Sep-1985   Do /REMOTE in 2 QIOS instead of one, to

TEM - Terminal EMulator program                                  Page 37
Revision history


                               try to get settings that SET /REMOTE
                               changes.

         85.269  26-Sep-1985   Check for the string "Password" (case in-
                               sensitive) when set /REMOTE, and reassert
                               terminal setups (since TT: driver resets
                               on carrier sense and doesn't tell any-
                               one).
                               Also bypass logged-in terminal check for
                               RSX-11S.

         85.323  19-Nov-1985   Make TEM serially reusable, so that it
                               can be used under RSX-11S without re-
                               loading.
                               Add the /PERMANENT switch, to make per-
                               manent changes in the remote terminal
                               database.

         85.325  21-Nov-1985   Add /CARRIER switch, to control the re-
                               assertion of remote terminal character-
                               istics after acquisition of carrier.

         86.014  14-Jan-1986   Remove device name dependance; rely on
                               device characteristics instead. Modify
                               terminal setups to work under VMS.

         86.015  15-Jan-1986   Parse VMS-style device names.

         86.055  24-Feb-1986   Fix problem with attention character af-
                               ter /SEND.

         86.056  25-Feb-1986   Extend setup and takedown command file
                               support to be useful under VMS. Also,
                               put system-wide files on LB:, not LB1:,
                               and parse decimal version numbers.

         86.062  03-Mar-1986   Disable privilege around file opens, so
                               unprivileged user can't use TEM to snoop.

         86.093  03-Apr-1986   Allow file buffers and rings to be sized
                               independantly. This is the Spring 1986
                               DECUS version.

         86.233  21-Aug-1986   Default the input ring buffer size to
                               2048. bytes. Also, allow /PERMANENT
                               if the connection was made using the
                               /OVERRIDE switch.

         87.058  27-Feb-1987   Use GIN$ to get user name from accounting
                               and add to TEMACT.LOG transactions.

         87.071  12-Mar-1987   Add /TURNAROUND switch.
                               Conditionalize the "explicit default
                                  directory" code in 86.056, which is
                                  only needed due to a bug in a par-
                                  ticular release of VAX-11 RSX.

TEM - Terminal EMulator program                                  Page 38
Revision history


         87.077  18-Mar-1987   Fix bug that broke batch support. This
         bug
                                  was probably introduced in version
                                  86.014.

