E.R.T.E.  User Manual
             1) introduction
             2) script formats
             3) parameter files
             4) running E.R.T.E.
             5) error messages
             6) configuring E.R.T.E.
             7) data analysis
             8) script file utilities
             9) other relevant documentation
    Issue no. 6.0 (for ERTE MK.3 & ERTE MK.4)  16th March 1979
         Section 1: introduction
         The EDINBURGH  REMOTE  TERMINAL  EMULATOR  is  a  system
    designed  to  simulate terminal users on a Multi Access System.
    It operates by passing commands (held in SCRIPT FILES)  to  the
    receiving  system  (referred to as the TARGET in the rest of this
    document) as if from ordinary terminals. These script  files  and
    the  corresponding  parameter  files  may  be  generated using the
    MAVIS [Brebner 1977] suite or merely by editing appropriate text
    files using the standard system editor.  The  versions  of  ERTE
    described  have been used extensively on EMAS 4/75, various EMAS
    2900'S and DEC VAX VMS.  This  document  describes  particular
    implementations  of  ERTE  specific  to the needs of the original
    SRC funded research project ( SRC grants  BRG  93968  and  BRG
    96084 ), a more general discussion of ERTE may be found in ADAMS
    et al 1977.
         The current supported versions of ERTE are as follows:
         ERTE mk.3.0        Simulates   a  TCP  on  the  RCO  net,
                   talking NSI and ITP protocols down 1 concentrated
                   synchronous line. Upto 48 simultaneous users on  a
                   32k word PDP 11/40.
         ERTE mk.3.1        Simulates  a  TCP connected directly to
                   the target  FRONT  END,  talking  NSI  and  ITP
                   protocols  down  1 concentrated asynchronous line (
                   usually a C.S.  dept LINK ). Upto 48 users on a
                   32k word PDP 11/40.
         ERTE mk.3.2        Simulates  a  TCP  on  the  RCO   net,
                   talking NSI and ITP protocols down 1 concentrated
                   synchronous line. Upto 128 users have been handled
                   on a 48k word PDP 11/40, and more may be possible.
         ERTE mk.4.0        Outputs  characters  onto  a  number  of
                   individual  asynchronous  lines,  no  protocol   is
                   usually  placed  on these and ERTE is connected to
                   the target as though it  were  a  number  of  local
                   terminals.  Currently up to only 7 users have been
                   simulated by this method due to the  non  existence
                   of  any  more  multiplexor  lines. Capacity of the
                   PDP 11/40 under this regime is not known, but will
                   not be  as  high  as  under  ERTE  mk.3  as  extra
                   processing  is  required  to identify system prompt
                   messages etc.
         The entire package is written in  the  high  level  language
    IMP-77 [Robertson 1977] and the listings are intended to be self
    documenting. This document is intended to suplement said listings
    and  give  a quick guide to running the package. ERTE consists of
    several co-operating tasks running under  the  DEIMOS  Operating
    System  on  a  PDP  11  with memory management and at least 32K
    Core Memory. The tasks are as follows:-
         INIT     Initialise and Control Task ( given the  DEIMOS
                   name of ERTE )
         TIME     Stimulator Clock Task
         DQS1     DQS/11E  synchronous line Communications Handler ( mk.3 )
         DZAn     DZ/11 Multiplexor Handlers ( mk.4 )
         PROT     Line Protocol Handler ( HDLC ) ( mk.3 )
         CSLK     C.S. Link Handler and HDLC Protocol  Handler ( mk.3.1 )
         NSI      Network Protocol Handler ( to RCO NSI ) ( mk.3 )
         TCP      Terminal  Protocol  Handler  (  to RCO ITP ) ( mk.3 )
         TSIM     Terminal Simulator ( mk.4 )
         CPUT     Optional CPU Utilisation Module
         TSKn   n SCRIPT Tasks, each of which can handle up to  a
                   fixed number of scripts for the "virtual terminals"
                   (currently 16 scripts). ( mk.3 )
         TSCn   n SCRIPT Tasks ( mk.4 version of TSK )
         All  the details of the number of scripts, etc.   are passed
    to ERTE in PARAMETER FILES, one per Script Task.  The  limit
    to  the  number of script tasks and virtual consoles is determined
    by the available core.
         All monitoring data from ERTE is output to a fixed  file  ,
    XOT,  on  a  specified disc unit, and there is a set of utilities
    for processing this data. (See SECTION 7)
         Section 2: script formats
         A script file contains the simulated input from a  terminal.
         
    It  may  be  of  any  length  and  can include any number of user
    sessions i.e.  loging on and off.
         Its format is as follows
                   command line
                   check line
                   delay time
         COMMAND LINE:- This is passed on verbatim  to  the  system
    (current  max.  70  characters).  Note that the script must start
    with the usual system startup requirements (&,  EMAS,  USERNAME,
    PASSWORD)
         CHECK  LINE:-  May be used to verify the script. In ERTE
    mk.3 this is currently not used ( line usually holds a "0") except
    that the last check digit in a user session MUST be negative. In
    ERTE mk.4 this line is used to hold the  expected  system  prompt
    message,  or  a  "0"  if  the  prompt  is  the same as that of the
    previous interaction. All text output from  the  target  will  be
    checked against this message for a match. On a match being found,
    the  TSIM  task will inform the TSC task and the next user think
    time and command will start. The format of this line is  "<prompt
    text>0". The "prompt text" should not contain a "0" and should be
    as  short  as  possible to identify the prompt. N.B.   the first
    occurence of the "prompt text" appearing in the  output  from  the
    target is taken to be the prompt. If the prompt is unchanged then
    the  CHECK LINE should contain a "0" ( spaces before the "0" are
    significant ). N.B.   attempting to change the "prompt text"  to
    the  same  value will usually cause the TSIM task (which actually
    does the checking for the prompts) to send an immediate  reply  to
    the  TSC  task  indicating  a  prompt has been found. The CHECK
    LINE  should  only  contain  a  change  of  "prompt  text"   when
    necessary.
         DELAY  TIME:-  The  time  in  seconds  between  the system
    response to the command and the input of the next command  in  the
    script (i.e.  the user think time). User think times are normally
    calculated from the end of typing of the target's prompt. However
    for ERTE mk.3.3 and ERTE mk.4 a "type ahead" option is included.
    If  a minus sign precedes the user think time then the user think
    time is calculated from the last character being  input  from  the
    current command and ERTE does not wait for the system's prompt to
    appear.
         There  should be no redundant blank lines in the script file
    and no terminator is required. The utility ANALY can be used  to
    tidy  up  script files, verify them and provide a summary of delay
    times etc. SCRIPT files may exist on any logical disc unit  under
    any  user  file  system  number,  but the name MUST be EXACTLY 6
    characters in length.
         Section 3: parameter files
         The parameter files inform the  script  tasks  within  ERTE
    which script files etc.   to use.  the parameter files MUST be on
    the same unit and file system number as ERTE when it is  run  and
    there is one such file per script task.
         Parameter file names must be of the form TKPARn where n
    = Script Task Number (1-9) and have the following format
         line 1: <number of scripts> <typing rate> <start up delay>
         The TYPING RATE is the percentage of line speed to be used
    as a typing speed for inputing the command lines of the script.
         The START UP DELAY is the time in seconds between sending
    the first logon attempt for each sucessive script.
         For  each script the task has to handle there are four lines
    of data:-
         1: script file name (exactly 6 characters)
         2: file system number for file (0-63 decimal)
         3: disc unit for file 
         4: line speed in characters per second.
         No terminator is required.
         Section 4: running e.r.t.e
.
         To set up any TARGET to receive ERTE input the appropriate
    experimentors guide should first be consulted  [see  Section  9].
    The following procedure should then be followed:-
         1)ipl deimos 
         2)logon to the appropriate deimos file system
         
         The following tasks are loaded for ERTE mk.3.0 and mk.3.2:
  STIMULATOR      USER               COMMENTS
                   ERTEnn          Loads  the  current version nn
                                       of ERTE ( nn usually found  in
                                       the   current  edition  of  the
                                       INSTANT ERTE GUIDE).
  ERTE VNN DD/MM/YY                 Reports the version number and
                                       date of issue. If  wrong  halt
                                       machine & start again.
  TCP UNIT:      n                   Requests  the  logical  output
                                       device for the file  (  XOT  )
                                       produced  by the TCP task. On
                                       the original configuration  n=2
                                       or 3 or 0 (if only one disc).
  TIME LOADED                        Timer Module Loaded.
  DQSY LOADED                        DQS/11E Handler.
  PROT LOADED                        Line Protocol Handler.
  TCPn LOADED                      Terminal  Protocol  Handler.
                                       n='X' - The non NSI version.
                                       n='Z' - The NSI version.
  NSIZ LOADED                        Network Protocol Handler (if
                                       using TCPZ).
  CPUT LOADED                        CPU  Utilisation  Monitoring
                                       task (see below)
  NSIZ: PROT UP                     Physical line up
  NSIZ: ATTACHED as nn               Sucessfully  attached  to RCO
                                       network
  NSIZ: CONNECTED to nn              Sucessfully    connected    to
                                       target
  TCPZ: BUFF REM nn                 Sometimes   output   by  ERTE
                                       mk.3.2. Means that one of  the
                                       ITP  message buffer pool spans
                                       a PDP 11 segment boundary  and
                                       has  been removed from the free
                                       pool.   This   usually    only
                                       happens  in versions with large
                                       buffer pools E.G.  mk.3.2.
  TCPZ: ITP READY                   All  initialisation   complete
                                       and  now ready to start. It is
                                       now safe  to  reply  to  the  "
                                       NUMBER   OF  TASKS"  message
                                       (N.B.  the NSIZ, TCPZ and "
                                       NUMBER  OF  TASKS"  messages
                                       are output by 3 different tasks
                                       and  so  may  come  out  in any
                                       interleaved  order,  DO   NOT
                                       REPLY  to  the  "  NUMBER OF
                                       TASKS" message until the  ITP
                                       READY message has appeared) 
  NUMBER OF TASKSn                 Asks  for the number of script
                                       tasks  to  be   loaded.   This
                                       number  is  currently 1,2, or 3
                                       (for   1-16,   1-32   or   1-48
                                       scripts)  but will vary on core
                                       size.
  script task 1 started with x scripts
                                       Each script task is loaded and
                                       the   corresponding   parameter
                                       file   is   read.   The  first
                                       commands  in  the  scripts  are
                                       found   and   the  scripts  are
                                       started after  the  appropriate
                                       delay.  It  is  at  this point
                                       that many of the obvious errors
                                       will occur ( SECTION 5).
The loading sequence of ERTE mk.3.1 differs in the following tasks:
  CSLK LOADED                        C.S.     departmental    link
                                       handler,   replaces  PROT  and
                                       DQSY.
The loading sequence of ERTE mk.4.0 differs in the following tasks:
  DZAn LOADED                      n MULTIPLEXOR tasks,  replaces
                                       PROT and DQSY of mk.3.0.
  TSIM LOADED                        Terminal  simulator and prompt
                                       checking task  replaces  TCP
                                       and NSI of ERTE mk.3.0.
  The  SCRIPT  TASKS  loaded  in  mk.4.0 are also different and are
                                       called  TSCn   rather   than
                                       TSKn.    All    the   query
                                       mechanisms and state numberings
                                       within TSC remains the same as
                                       that in TSK however.
         From  this  point  on  ERTE  runs  automatically  but   the
    following  controls  are  available  by  using  the  DEIMOS  INT
    mechanism.
                   int z tskn or int z tscn      where z may be
         ?:        Prints a status report for each script under  that
                   task.  It  is  a  table with script number, state,
                   number of command lines  sent  and  the  number  of
                   times  that  the script has been held up due to the
                   next command not being  brought  off  the  disc  in
                   time. This normally only happens with a zero think
                   time,  as  on  start  up  and this number should be
                   relatively  small  compared  to   the   number   of
                   commands. State may be one of:-
                    0    about to send a command(typing one in)
                    1    waiting for tcp buffer(1st try)
                    2    waiting for tcp buffer(subsequent try)
                    3    waiting for emas to respond
                    4    in think delay
                    5    waiting for disc transfer to complete
                    6    start up state
                    7    end of script file reached
                    8    requesting prompt buffer from tsim ( mk.4 only )
                    9    typing ahead (mk.3.3 and mk.4 only )
         Q:        FULL  STATUS  -  as  for ?   plus internal script
                   buffer  information  (see   program   listing   for
                   details).
         L:        ENTER LOOP MODE. If a script reaches state 7 it
                   is restarted from the beginning.
         A:        ABORT the task immediately
         N.B.  The  INT  flag  is only inspected every 5 seconds so
    there may be some delay. A new INT command  will  overwrite  the
    old  one (e.g. A will overwrite L but ?   overwrites itself to 0
    after typing the report).
         The INT mechanism may be used with task  CPUT  to  measure
    the CPU Idle Time in the 11/40 while ERTE is running.
         INT X CPUT where X may be:-
              t: measure over 10 second interval
              h: measure over 30 second interval
              m: measure over 60 second interval
              a: stop
    closing down erte
         The INT mechanism may be used with the INIT task (known in
    DEIMOS  as the task ERTE ) to close down ERTE. This is quicker
    than doing an INT A to each of the SCRIPT tasks. The  shutdown
    command is:
             INT A ERTE
         Alternatively  SCRIPTS  tasks will terminate naturally when
    all the scripts in a task have reached state 7 and  loop  mode  is
    not set. SCRIPT tasks can of course also be halted by an INT A.
    When  all the scripts in a task have finished or INT A is sent,
    the task will produce a script status report and the message TASK
    nn TERMINATED will appear (twice).
         When all the SCRIPT tasks have terminated the TCP or TSIM
    task is stopped and will produce data on the  utilisation  of  its
    internal  queues,  then  the  TIME task is stopped giving the run
    time in MINS, and SECS, 1/10TH secs. Finally after a pause the
    message ERTE STOPPED will appear.
         N.B. This still leaves three tasks in core, DQS1 and PROT
    which should be killed immediately, and CPUT which should be sent
    an INT A. (It may be removed at any time  using  this  method).
    However ERTE often crashes at this point (but this should not be
    a  cause  for  alarm)  so  re  IPL ing the system may be the best
    course of action.
         Section 5: error mesages
         Most ERTE error messages are fatal in that  they  cause  at
     least  part of ERTE to stop. The messages below are divided into
     the tasks from which they originate.
         5.1) init
         INIT reports all error messages coming from the script tasks
    (5.2) and its only other error condition is
         unexpected message   a   b   c
    where A = TASK ID sending the message , B= P_A1,  C=  P_A3.
    This  usually  indicates  a faulty start up: reload & try again.
    N.B.  the INIT task usually takes the DEIMOS name of ERTE.
         5.2) script tasks
         All the SCRIPT TASK errors are reported by INIT with  the
    following format:-
          fatal error number   x   task number   n
    where  N=Script  Task  Number,  X=Error Number as follows (
    N.B.  all these errors cause the script task to stop)
         -1        Internal script buffers exhausted
         -2        Bad disc read (script file)
         -3        Bad disc read at start of script  file  (file  may
                   not exist)
         -4        Script  file corrupt-verify the file system before
                   restarting
         -5        Run out of prompt buffers -  increase  the  number
                   held,  PROMPTBMAX  and  PROMPTBTOTAL  ( mk.4.0 ).
                   Not used in mk.3.
         -6        Not Used
         -7        Disc queue full
         -8        Parameter file too  short  (end  of  file  reached
                   before all scripts found or file corrupt)
         -9        Parameter file disc read error
         -10       Symbol in parameter data
         -11       Parameter file does not exist
         -12       Disc read error on first block of parameter file
         5.3) tcp
         All  error  messages  cause the TCP task to stop and are in
    the format
                   tcp <message> <time> <virtual console number>,
    where the message may be:-
    BREAK INT TO USER    Bad control message from FEP
    TARGET DOWN
    TARGET JUST BACK UP
    BUFF NOT SENT         Bad replies from a transmit  to  TARGET
                             request
    ABORTED CONSL          Message  received from script task for a
                             virtual console which has been aborted
    MQ DN FULL            Queue of messages to TARGET full
         GAH Q FULL       Queue of GO-AHEAD messages  to  TARGET
                             node is full.
         5.4) nsi
         All  error  messages  cause the NSI task to stop and are in
    the format:
                   nsiz: < message > < nsi state >
    where the messages may be:
    ITP Q FULL            - Too many messages from TCP -> target.
                             ( Cut down  the  number  of  outstanding
                             writes TCP may send ).
    ITP READY Q FULL     -  Too  many  read  from target messages
                             sent by TCP. ( Cut down on  the  number
                             of outstanding reads TCP can send. )
    TOO MANY FREE SB'S   -   NSI   SEND  BLOCK  buffering  gone
                             haywire.
    NO FREE SB'S          - Have run out of NSI SEND BLOCKS.  (
                             Increase  the  number of SB'S available
                             to NSI. )
    STATE NOT ATTACH      - NSI ATTACH to network reply  received
                             at odd time. ( See B.G.  or S.C. )
    STATE NOT REMOVE      -   NSI  REMOVE  from  network  message
                             received at odd time.  (  Target  FRONT
                             END may have gone down. )
    PROT NOT UP           -  PROT  task  does not wish to start. (
                             Check physical line exists. )
    UGH FROM PROT         - Lousy message from PROT. ( ?? )
    LOUSY POFF             - A DEIMOS taSks unknown to  NSI  sent
                             it a mesage. ( Check other tasks. )
The NSI states are:
         1         - initialising
         2         - attaching to network
         3         - connecting to target
         4         - running
         5         - disconnecting from target
         6         - removing from network
         5.5) prot
         The PROTOCOL HANDLER may produce mesages of the form
         PROT:MESSAGE 
    where MESSAGE can be:-
    DM            Data miss - can be ignored
    BAD ACK       Bad ack from front end (fatal if many of them)
    NOISE         Ignore this
         5.6) cslk
         All error messages are in the format
         " CSLK:" <MESSAGE>,
         where message may be:
         BUFFER NOT IN SEG 6
         OUT STATE ERROR
         IN STATE FAULT
         5.7) dza
         All error messages are in the format
         " DZ11:*" <fault number><line number>
         5.8) tsim
         All  error  messages  cause TSIM to stop with a fault dump.
    The messages are in the format
         " TSIM" <FAULT message><time of day><cnsl number>.
         The fault messages are:
    0 LENGTH       Attempting to send an input line of  length  0  to
                   the target.
    MQDN FULL      The  array  holding  input  to  target messages is
                   full.
    FT, MULTOUT    The multiplexor number is out of range on input to
                   target.
    MULT W REPLY   The multiplexor task rejected an input  to  target
                   message for some reason.
         
         5.9) system messages
                        DEIMOS   may  itself  produce  error  mesages
                   especially during  shutdown  when  BAD  SER  will
                   appear  and can be ignored. See DEIMOS manual for
                   other messages.[Gilmore 1978]
         Section 6: configuring e.r.t.e
.
                        The principle  tasks  comprising  ERTE  (see
                   SECTION   1)   each   have  several  configuration
                   parameters to enable the user to build a system for
                   his  requirements.  These   parameters   are   now
                   described  on  a  task  by  task basis( NB In all
                   cases  recompilation  of   the   task   source   is
                   required).   For  further  details  see  the  self
                   documenting listings.
         The Initialise Task
                        This task automatically loads any  number  of
                   script tasks (see below) but must be altered if the
                   log  file  name  is  to  be modified. In this case
                   change the array TCPZ. The INIT task also passes
                   some network information to  TCP  (mk.3  ).  This
                   data  includes  the network address of TCP and the
                   target as well as the target's name. This  is  all
                   held in array NETWORK. For ERTE mk.4.0 the INIT
                   task   passes   the   initial  target  prompt,  the
                   character to be passed to the target at logon,  the
                   logon  character  held  in  the  scripts  ( will be
                   translated to the target logon character  by  TSIM
                   ),  the  number of multiplexors available and their
                   DEIMOS service numbers. Again this is held in the
                   array NETWORK.
         The Time Task
                        The constant  ARSIZE  is  the  size  of  the
                   request  buffer  and  thus  must be large enough to
                   cope with a request from each script  plus  several
                   other requests.The formula
                   arsize = number of scripts * 1.5
                   is recommended as a minimum buffer allocation.
         The Script Tasks
                        The  number  of  SCRIPT tasks required for a
                   particular  configuration  is  a  function  of  the
                   number  of  scripts. It is not recommended to have
                   more than 16 scripts per task  as  this  may  cause
                   excessive internal queuing.
                        To set up a script task edit the following
         NUMSCR    The number of scripts this task is to handle.
         SYSLOT    The system slot the task is to run in.These start
                   at 26 for TSK1 and descend,25 for TSK2,ETC.
         PARMF     This array holds the name of the parameter file to
                   be used by this task,normally TKPARN.
         SCBUFFS   This  is  the  number  of internal script buffers,
                   which should be at  least  2*NUMSCR  and  must  be
                   >NUMSCR.  This  is  dependant  on  the  number of
                   characters sent in on command lines by the scripts.
                   The buffers are each 20 characters long and  there
                   must be sufficient to cope with the peak load.
         PRMPTL    This  determines  the maximum size of any piece of
                   "prompt text" ( mk.4.0 only ).
         PRMPTBMAX This  (along  with  PRMPTBTOTAL)  determines  the
                   number  of prompt buffers held, current recommended
                   value of 8 ( mk.4.0 only ).
         PRMPTEND  This is the character which  defines  the  end  of
                   "prompt  text"  ina CHECK LINE or an empty CHECK
                   LINE, currently is set to "0" ( mk.4.0 only ).
         TEXTEND   This is the character which defines the end  of  a
                   command  line  to  be  passed  on  to  the  target,
                   currently set to be  the  newline  symbol,  however
                   there  is  no logical reason stopping any character
                   being used - though the format of the script  files
                   will of course then change.
         Compile  the  required  script  tasks with a stack of 200, no
    streams and ALL WITH THE SAME NAME, TSK1 ( or TSC in mk.4.0 ). The
    system will code share the tasks.
         The Tcp Task
         The sets of constants at the  beginning  of  the  TCP  task
    define (among other things)  the number of virtual consoles this
    TCP may multiplex, the number of SCRIPT tasks it may communicate
    with and the amount of internal buffering  it  holds.  The  main
    internal  buffering has to do with text messages passing between
    the SCRIPT tasks and  the  PROTOCOL  tasks  nearer  the  TARGET.
    There  is  a  separate  queues  for  ITP protocol level GO-AHEAD
    messages. The major constants are:-
    TOTSCRIPTS     The highest virtual console number expected(i.  e.
                   the total number of virtual  consoles  -1,numbering
                   starts at 0).
    PERTASK        The number of virtual consoles per SCRIPT task.
    MAXTASK        The maximum number of SCRIPT tasks.
    MAXREAD        The  maximum number of reads ( from target ) which
                   may be outstanding with  the  next  PROTOCOL  task
                   towards the TARGET.
    MAXWRITE       The maximum number of writes(to TARGET) which may
                   be  outstanding  with  the  PROTOCOL  task towards
                   TARGET.
    MDQL           The maximum number of messages to target which may
                   be held in the TCP at a time
    BUFFARL        The  number  of  message  buffers  which  exist  (
                   MAXREAD + MAXWRITE + MDQL+1).
    GAHQL          The size of the GO-AHEAD queue -1 (always a power
                   of 2 -1).
    CHECKOUT       ='Y'  if  contents  of  all  messages  are  to  be
                   recorded in  the  XOT  file.  ='N'  if  not  (the
                   recommended mode for 'long distance' ERTEs).
    TIMESTAMP      ='Y'  if a time stamp (in 1/10 second ticks) is to
                   be appended to all messages in the XOT file. ='N'
                   if not.
    TOXOT          ='Y' if an XOT file exists, rather  than  logging
                   directly  to the operator's console. ='N' will log
                   to operator's console.
    TRACEGAH       ='N' if GO-AHEADS are to be logged. ='N' if they
                   are not.
         The Nsi Task
         As with TCP there are a number of  constants  in  the  NSI
    task  defining  how  many  mesages  it  will buffer etc. The most
    important are:
    MAX RD SB      The maximum number of  SEND  BLOCK  reads  (from
                   target)   sent  to  the  PROT  task  at  any  time
                   (currently 3).
    SBMAX          The  maximm  number  of  SB's  in  existence  -1
                   (currently 7).
    SBLMAX         The  maximum  length  of a SB in bytes (currently
                   256).
    TO TARG MAX    The maximum number of ITP messages queued towards
                   the target -1 (currently 7).
    ITP READY MAX  The maximum  number  of  ITP  read  from  target
                   buffers held at a time -1 (currently 7).
         If  the  NSI  task  is to increase its SB throughput ( for
    larger numbers of users) then the SB buffering will  have  to  be
    increased,  the  number of SB'S allowed outstanding each way over
    the network (negotiated at attach time) will have to be  increased
    and  probably  a check will have to be made that none of the SB'S
    in the buffer pool span a PDP 11 segment boundary  (as  in  ERTE
    mk.3.2).
         The Tsim Task
         Most  of  the  constants  involved  in TSIM are the same as
    those of TCP.  The  task  assumes  1  physical  multiplexor  per
    SCRIPT task ( TSC version of the SCRIPT task ).
         Section 7: data analysis
         This  section  describes  some  data analysis programs which
    operate on the XOT file produced by the  TCP  (or  TSIM)  task.
    XOT  files  are standard DEIMOS text files and can be inspected
    using the standard system editor. The XOT file  records,  appart
    from  a header, *< TCP VERSION> ,and the terminator '+',have the
    format:-
          <time stamp><record type><virt consl><length><message>nl
    where record type may be one of:-
         1 = message from script to emas
         2 = from emas to script
         3 = prompt message sent to script
         The length is in characters and there is no message text for
    a type 3 record. The time stamp is in 1/10th second  ticks  (this
    will wrap round approximately every 55 minutes ).
         For  ERTE mk.3, type 1 records are produced whenever a user
    would  have  completed  typing  an  input  line  and  the   packet
    corresponding  to  that  line  is fired off into the network. For
    ERTE mk.4 type 1 records are produced  when  the  input  line  is
    passed  to  the  multiplexor  task for transmission to the target,
    there will still be some "typing  delay"  to  come  in  this  case
    corresponding  to  L  character  transmission  times on that line
    (where L is the length of the  input  message).  Type  2  and  3
    messages  are  produced at similar points in both mk.3 and mk.4. (
    however in mk.3 type 2  messages  correspond  to  a  packet  being
    received  at  a  TCP  on  the network with several characters per
    packet, in mk.4 type 2 messages  are  for  individual  characaters
    being  printed on a particular line, hence XOT files in mk.4 tend
    to be larger). The analysis programs are set up to allow for  the
    difference  in  the  timing  points of type 1 messages so that the
    final results are equivalent.
         All the analysis programs described  have  evolved  to  meet
    some  of  the  needs of the original SRC project. Thus they have
    been set up to obtain measurements from experiments using the  F1
    and  CS1BM  workloads,  run  under the standard experiment format
    (once the first user has started to log on, an 8  minute  settling
    period  is  allowed  so  that  all users can log on and the system
    reach some kind of steady state, the target's performance is  then
    monitored  for  a  30 minutes window, the end of this window marks
    the end of the experiment ). Monitoring utilities internal to the
    targets used during the project have also been produced which will
    follow this format, they are not described in this document.
         The common performance metrics quoted are:
    REACTION TIME            The time from the user typing  the  last
                             character  of  his  input  line until the
                             time  the  target   outputs   the   first
                             character  of its reply (not counting any
                             echoed characters). Thus this represents
                             the time  the  user  waits  with  nothing
                             happening on his console.
    RESPONSE TIME            The  time  from the user typing the last
                             character of his input line until all  of
                             the target's reply has been typed and the
                             target's    prompt   message   requesting
                             further input has also been typed.  Thus
                             this   represents   the  time  (including
                             typing delay) it takes the target to deal
                             with a command and make itself ready  for
                             the next.
    THROUGHPUT               The  mean number of REACTIONS completed
                             per minute
    SATISFACTION LEVEL       The percentage of REACTIONS  completing
                             within 2 seconds. The cut off point of 2
                             seconds  is  chosen  as REACTION time of
                             greater  than  this  level  cease  to  be
                             interactive.    The   distributions   of
                             REACTION and RESPONSE  time  are  often
                             heavily   skewed   and   may  be  heavily
                             influenced by a small number of very long
                             times, this figure gives some  indication
                             of this skewing.
         As  with  ERTE proper these programs are written in IMP-77
    and should be easily modified. However the  IMP-77  compiler  on
    the  original  configuration  did  not  have real arithmetic and a
    double word arithmetic package  was  produced  to  get  round  the
    extreme  limitations  imposed  by 16 bit integers. These programs
    tend to use this double word arithmetic package heavily [  Currie
    1976 ].
         alog
         ALOG  is  an  analysis  program  devised to obtain means for
    response and reaction times. To run ALOG, type:
          alog <xotfile>/<data file>,<expanded log>
.alog will print:-
         erte vrsn:
         Reply with 3 or 4 corresponding to ERTE mk.3 or mk.4.  For
    replies  of 4 (corresponding to ERTE mk.4 XOT files) , to enable
    a correction to be made for character transmission  times  towards
    the  target  in  ERTE  mk.4.0  ,  ALOG  will then give two extra
    prompts:
         chars per unit:
         The reply to this (and the  next  request)  is  to  give  an
    indication of the line speed to which all the lines were set (must
    currently  all  be  the  same). ALOG will then prompt (again mk.4
    only)
         units per 1/10 sec:
    Reply with the number of units (as given as reply to the previous
    prompt) per 1/10 second  tick.  E.G.  10  character  per  second
    terminals  would  have  1  character  per unit and 1 unit per 1/10
    second tick. ALOG will then prompt (in all versions)
         give mode: all data=1,expand log=2,summary only=3,fixed=4
         Return the mode (meaning as follows)
         1         Summary of activity of each virtual  console;  the
                   the  number of records procesed ; the time interval
                   monitored and a summary of all console activity.
         2         As for 1 to Stream 1 plus expanded XOT  file  to
                   Stream 2
         3         As  for  1  to  Stream  1  missing out individual
                   console data
         4         As for 1 but over fixed time period (skip first  8
                   mins then analyse for 30 mins)
         For  all  modes  except  4  ,  the  following parameters are
    requested by the program:-
    MAX RECORDS:   The maximum number of records to be analysed.  (-1
                   means all possible records).
    MAX TIME:      The  maximum time (in seconds ) to be analysed (-1
                   means the maximum possible time).
    GRAPHS:        Reply 1 means print  graphs  of  REACTION  times,
                   RESPONSE  times,  USER DELAY times (both for raw
                   data and normalised). A reply not equal to 1 means
                   do not.
    SKIP FIRST 8:Reply 1 means skip first 8  minutes  in  file.  A
                   reply not equal to 1 means do not.
                        All modes (including mode=4) will request a
    TITLE:         ALOG will read in the next line (until a 'newline'
                   symbol) to be output on all analysis files.
         The virtual console data is of the form:-
         1     number of interactions.
         2     characters into and out of the target.
         3     characters per line into and out of the target.
         4     response time from a stimulus being given to the target and 
               the target being ready to take the next command.
         5     reaction time from a stimulus being given to the target until 
               the first character being received from the target
         6     think time.
         7     tcp delay (time from first reply to prompt).
         8     interaction rate per min.
              Information   is   also   produced  on  the  number  of
         REACTIONS   completing   within    certain    time    ranges
         (satisfaction  levels).  N.B.   interaction  rates  will be
         incorrect if the time interval monitored is not an  integeral
         number of 10 minute periods.
              The  current version is 6.0 (14/3/79) and is set up for
         upto 128 terminals.
         blog
         BLOG  is  an  analysis  program  to  obtain  REACTION   and
    RESPONSE   times,   SATISFACTION   LEVELS   and   a  COUNT  of
    OCCURRENCES for specific TARGET commands. To  run  the  various
    versions of BLOG, type:-
         f1blog <xotfile>/<datafile>,<logfile>  (f1 standard commands mk.3)
         csblog <xotfile>/<datafile>,<logfile>  (cs1bm standard commands mk.3)
         cvblog <xotfile>/<datafile>,<logfile>  (cs1bm standard commands mk.4)
    BLOG will prompt:-
         erte vrsn:
         Reply  with  a  3  (for ERTE mk.3) or a 4 (for ERTE mk.4).
    For replies of  4  BLOG  prompts  for  2  additional  pieces  of
    information:
         chars per unit:
         units per 1/10 sec:
         Reply to these as for ALOG to indicate line speed settings.
    BLOG then prompts:
    mode:
         Return the mode as follows:-
         1         Measure   response   times  for  standard  set  of
                   commands F1 - (IMP, FORTE, EDIT, RUN, LIST ),
                   CS1BM - (IMP, COPY, E, RUN, FILES).
         2         As for 1, but for a user-defined command set
         3         As for 1, but over a fixed  time  period  (skip  8
                   minutes, measure for 30)
         4         As  for  2,  but  over a fixed time period (skip 8
                   minutes, measure for 30)
    BLOG next prompts:-
         graphs:
         Reply '1' if graphs of response times  (both  raw  data  and
    normalised) for each command are required. Otherwise, reply '0'.
         For modes 1 and 2, the number of records to be summarised is
    asked  for  (MAX  RECORDS),  -1 means all; ditto the max time in
    seconds. BLOG will analyse  the  max  records  or  the  max  time
    possible.
         For modes 2 and 4, in response to the prompt:-
         commands for analysis:
    a maximum of 5 TARGET command names should be input, separated by
    spaces on one line. If graphs are to be produced, the message:-
         scale for time to prompt:
    is  output. For each command to be measured, the graph scale size
    should be input, bearing in mind that the  maximum  response  time
    shown  on the graph will be 50*(scale size) ticks. Similarly, the
    message:-
         scale for time to reply:
    is output, and answered.
         N.B.   for versions before version 2.0 a 38  minute  window
    was  used for modes 3 and 4. In this the first 8 minutes were not
    skipped  but  included  in  the  majority  of  the  results,   the
    satisfaction  levels  quoted  were also wrong as the count of good
    reactions was reset at the end of the  first  8  minutes  but  the
    total count of all REACTIONS was not.
         The  LOG  file produced on stream 2 contains records of the
    following format
         <response type><command type><time>
    where:
         RESPONSE TYPE       =0 for RESPONSE times, =1 for  REACTION
                             times.
         COMMAND TYPE        Lies between 0 and 5 (inclusive) for the
                             type of command found
         TIME                Is  the  actual  RESPONSE  or REACTION
                             time in 1/10 second ticks.
         This file always starts with the title  line  of  the  BLOG
    results  file and ends with a "-1". This file is normally shipped
    up to a  larger  mainframe  (via  T44)  for  further  statistical
    analysis which is impractical on the original PDP 11.
         Current  versions  2.0  (f1blog), 2.1 (cvblog), 2.2 (csblog)
    (14/3/79) are set up for upto 128 users.
         clog
         CLOG is an analysis program to obtain the frequency  of  use
    of specific TARGET commands by each virtual console.
         To run CLOG, type:-
         clog <xotfile>/<data file>
         The prompts and responses for CLOG are similar to those for
    BLOG. However only two are used (reply as for BLOG)
   MODE:
   COMMANDS FOR ANALYSIS:
         Output  from  CLOG  consists  of a single table of commands
    against virtual consoles, together with row and column sub-totals.
         There is no timing involved with this program  and  it  will
    run on XOT files for both mk.3 and mk.4. CLOG is only set up for
    the F1 group of standard commands.
         Current  version  2.2  (15/3/79)  is  set  up  for  upto 128
    termnals.
         dlog
         DLOG is an analysis program to check whether  or  not  there
    have  been  any  untoward happenings during the run. It currently
    searchs the XOT file for replies from  the  EMAS  network  which
    would indicate some trouble. These messages currently are:
         EMAS?
         ** 2970 DOWN
         SYSTEM DOWN
         NO USER SERVICE
         SYSTEM FULL
         INVALID USER
         INVALID PASSWORD
         INVALID NAME
         NOT AVAILABLE
         To run DLOG, type:-
         dlog <xotfile>/<data file>
    DLOG will prompt:-
         TITLE:
         It will then read in the next line as a title line to be out
    put at the head of the datafile.
         The  output will tell the number of occurrences of the EVIL
    messages over the first 8 minutes, the monitored window (the  next
    30  minutes)  and the whole file. It will also check that all the
    virtual  consoles  managed  to  log-on  successfully.   DLOG   is
    currently  only  set  up  for  use  with  ERTE mk.3 and the EMAS
    targets.
         Current version 7 (15/11/78) is currently set  up  for  upto
    128 terminals.
         plog
         PLOG  is  an analysis program to reproduce the 'console log'
    of any virtual console in the XOT file.
         To run PLOG, type:-
         plog <xotfile>/<datafile>
    PLOG will prompt:-
         MODE:
         MODE=1 means print log over whole file. MODE=4 means  print
    log over monitored window only.
         VIRT CNSL:
         Reply  with  the  number of the virtual console whose log is
    required. If logs are wished for a range of virtual consoles then
    reply -1. In the case of a -1 reply PLOG will then prompt
         FIRST CNSL:
         LAST CNSL:
         The number of the lowest and highest virtual consoles of the
    group of consoles whose logs are required should be the replies.
         MAX RECORDS:
         The maximum  records  in  the  XOT  file  which  should  be
    analysed  in  printing  the logs should be the reply (-1 means all
    records).
         MAX TIME:
         The maximum amount of time in the XOT file to be considered
    while printing out the logs should be  the  reply  (-1  means  the
    whole file). All times are in seconds.
         TITLE:
         The program will read in the next line and will output it at
    the head of all the logs it prints.
         PLOG  will  then  output  all messages going to and from the
    virtual consoles in question.It will append the  times  at  which
    there  is any change in the direction of the message flow and will
    indicate in which direction the messages are flowing (i.   e.   to
    or from the TARGET).
         PLOG  will run on either mk.3 or mk.4 XOT files but has not
    been adjusted to take into account the timing differences on input
    between the mk.3 and mk.4  as  it  was  not  envisaged  that  this
    utility would be used to guage those times to any great accuracy.
         Current  version  1.2  (24/1/79)  is  set  up  for  upto 128
    terminals.
         overlord
         OVERLORD is utility to analyse several  XOT  files  in  one
    run.  This  program will search all the file systems on a logical
    disc unit for XOT files; once it finds one it will call a version
    of DLOG (named DLIG ) to check if the run was  successfull.  If
    the  run  was  a  success the a version of ALOG ( ALIG ) will be
    called to analyse the file as for mode 4 of ALOG,  it  will  also
    print  out  corrected  values  for  the  major performance metrics
    taking into account any messages resulting from unsuccessfull  log
    ons.  Then  a  version of BLOG ( BLIG ) is called as though for
    mode 3 of BLOG. Once the entire logical unit  has  been  scanned
    the  program  will ask if the files created should be printed (via
    the C.S. FILESTORE printer) and then destroyed. All replies to
    OVERLORD prompts are on a single line. To run OVERLORD, type:
                   OVER
                        OVER will request
    XOT UNIT:
                        reply with the number of the logical disc unit
                   to be scanned. OVER will then request
    TITLE:
                        The line, typed in will be  copied  onto  the
                   top of all files produced during the run. OVERLORD
                   will then, type out some information on the results
                   it  is  about  to produce and then start to analyse
                   XOT files. When all the file  systems  have  been
                   checked it will then request
    PRINT:
                        Reply  with  "y"  to  have all files produced
                   printed on the  FILESTORE  printer,  "n"  if  not.
                   OVER will then prompt
    DELETE:
                        Reply  with "y" if all files generated during
                   the run are to be destroyed, "n" if not.
         During the running of OVER, DLIG will produce files called
    CERT in the same file system as any XOT file it finds,  ALIG  (
    if called ) will produce files called RESL and BLIG will produce
    files  called  BLOG. All thses files are created on logical disc
    unit 0. Each file produced will have a copy  of  the  title  line
    printed  at its head and will have the number of the filesystem in
    which the corresponding XOT file was found appended to this title
    line.
         This program will require the C.S.   department FILESTORE
    to  spool  all  printing  of  the  results  files.  No version of
    OVERLORD has been produced yet for ERTE mk.4.0 (  owing  to  the
    lack  of DLOG for these XOT files ). When the change is made to
    run this on mk.4 XOT files both  BLIG  and  ALIG  will  require
    minor  changes,  the  changes in BLIG are essentially the same as
    those indicated in the BLOG listings.
         Current version 1.3 (15/11/78) uses " LIG " versions set up
    for upto 128 terminals. The current versions are:
         ALIG - auto 1.3 (18/12/78).
         BLIG - auto 2.0 (16/3/79), CS1BM standard commands.
         BLIG - auto 2.1 (16/3/79), F1 standard commands.
         DLIG - auto 1.4 (16/3/79).
         Section 8: script file utilities
         anal
         ANAL is a utility for checking out individual SCRIPT  files
    made up to ERTE mk.3 standard. It will check that the file is in
    the  correct format and give a compacted listing of the file, some
    information on the input character rate and think times  contained
    in  the file and if required a cleaned up version of the file. To
    run it, type:
         ANAL <scriptfile>/<listing file>,<new script file>
         ANAL will prompt
   GIVE SCRIPT FILE name:
         Reply with the name of the SCRIPT file involved (the  whole
    line  is  read  and reproduced on top of all listing files as with
    the TITLE line in the XOT analysis programs).  ANAL  will  then
    prompt
         MODE:
         Where
         MODE=1   Print  compacted  listing file and produce summary
                   of think time and character input produced by  this
                   script.
         MODE=2   Only print think time and character input summary.
         MODE=3   Create  new SCRIPT file on stream 2, removing all
                   redundant spaces in  check  lines  and  think  time
                   lines.  This  mode  was also used to translate the
                   original F1  scripts  which  had  the  pre-network
                   logon sequences.
         Current version 1.4 (15/3/79).
         script analyser
         The  SCRIPT  ANALYSER  is  a specially modified version of
    ERTE which will run through a set of scripts (defined by a single
    TKPAR file) and will check that they are valid and  produce  some
    statistics on the expected typing and think time delays as well as
    information  on  the distribution of distinct input lines. To run
    it the TKPAR  file,  the  SCRIPT  ANALYSER  and  the  specially
    modified  SCRIPT  task  (which  currently takes upto 48 consoles)
    must all be in the  same  file  system  on  unit  0.  It  is  not
    recommended  that  this  utility  be  run in file systems used for
    normal ERTE work. This is currently only set up for mk.3. While
    running the modified SCRIPT task removes lines of input from  the
    SCRIPT  files,  logs  the  think  times  and input line, and then
    pauses for a fixed response time ( 3 seconds)  before  going  onto
    the  next  input  line for that script. Currently upto 48 scripts
    can be handled at once in this single modified SCRIPT  task,  but
    there can only be 1 TKPAR file. To use this, type:
         SCRIPY
         The  TIMER  task  will  then  be  loaded and an appropriate
    message put out. It will prompt:
         Number of tasks:
         Reply with a 1. There is  no  reason  why  further  special
    SCRIPT  tasks should not be made up and run in parallel. However
    they would effectively each produce information on the  particular
    benchmark defined in their own TKPAR file and this data would not
    be merged in any way. There may also be some confusion as to what
    information  is  coming  from  which  special  SCRIPT task as all
    output is currently to the console and not to a file  (  it  is  a
    trivial  operation  to  put  the output to a file for each special
    script task).
         SCRIPY will next output a message saying how many scripts it
    is analysing (similar to that put out by a  normal  ERTE  SCRIPT
    task  on  start  up) and will proceed. The analysis can take some
    time. All the INT mechanisms for the normal SCRIPT  task  apply
    to  this special SCRIPT task (which is also usually called TSK).
    When the SPECIAL SCRIPT task has finished (either  all  scripts
    reach  state  7 or an INT A is given) then the following data is
    put out on the console (the printing can take some time).
         Buffer Usage        Data on the usage of the internal script
                             buffers held by the SCRIPT  task.  This
                             can  be  very useful in tuning the buffer
                             size  held  by  these   tasks   for   any
                             particular benchmark.
         Input Text          Data  on  the  number  of  occurences of
                             various  lines  of  input  text  in   the
                             benchmark.  These  distinct  input lines
                             are currently defined as distinct sets of
                             letters occuring  before  a  "("  or  any
                             number.  This can be useful in obtaining
                             counts of various target commands etc  in
                             a benchmark for validation.
         
         Distributions       Graphs  of  the  distributions of INPUT
                             LINE LENGTH, THINK  TIME  and  TOTAL
                             DELAY  from  the  USER ( THINK TIME +
                             TYPING DELAY ).
         Command Count       A count of the total number of  commands
                             in each script in the benchmark.
         When  the  test run is complete the TIME task will still be
    running, this can be PURGED or the system may be  re.ipl'd.  The
    source  file for the special SCRIPT file is usually called SCAN.
    As this is using a very non standard SCRIPT file it  is  advised
    that  this be run in a completely separate file system from normal
    ERTE work.
         Current version 2 (22/2/78).
         script translator
         This utility is set up for ERTE mk.3 scripts. It  takes  a
    set of SCRIPT files all residing an the same unit and file system
    whose file names all share the same first 4 characters (known as a
    family)  and  creates  a  new  family on a nominated unit and file
    system. This new family is a duplicate of the  original  (perhaps
    it  should  be called cloning). It also changes their target user
    number family names to a new family ( E.G.  it can translate all
    ECSB to XXYY if required to make up a further set of scripts for
    a  particular  benchmark).  It  is  currently  based  heavily  on
    requirements  to  increase  workload size on the EMAS targets and
    has been used to set up new F1  and  CS1BM  benchmark  units  by
    replicating current ones. To run this, type:
      SCTR
         It will prompt
   OLD FILE GROUP:
         Reply with something of the form
               <logical unit>.<family name>(<file system>)
         LOGICAL UNIT        Is  the  logical  disc  unit holding the
                             original SCRIPT file family
         FAMILY NAME         Is the first 4 characters of the SCRIPT
                             file name, common to all family members.
         FILE SYSTEM         Is the file system holding the  original
                             SCRIPT files (in octal).
         E.G. 3.scrp(21)
   NEW FILE GROUP:
         Reply  in the same format as above to define the new SCRIPT
    file family name. SCTR will next prompt
   OLD JOB NO:
         Reply with the 4 character family name of  the  target  user
    number used by all the scripts in the original SCRIPT files.
   NEW JOB NO.:
         Reply  with  the  4 character family name of the target user
    name to be used by all the scripts in the new SCRIPT files. SCTR
    will call a program named TRIN for each file  of  the  family  it
    comes across. TRIN will copy the original file into a new one and
    at  the  same  time  will  translate all occurences of text in the
    format < OLD JOB NO >< 2 digits > into < NEW  JOB  NO  ><  2
    digits  >  E.G  it  could  change  the job numbers from ECSB to
    GUWS.
         Current version 1.1 (22/11/78).
         Section 9: Other relevant documentation
         ADAMS J.C. "The Experimentor's Guide for EMAS 4/75"
         ESP Report 1978
         ADAMS J.C. "The Experimentor's Guide for EMAS 2900"
         ESP Report 1978
         ADAMS J.C. "The Instant ERTE Guide"
         ESP Report 1978
         ADAMS J.C. CURRIE W.S.   and GILMORE  B.A.C.  "The Structure   and   Uses  of  The  Edinburgh  Remote  Terminal Emulator"
         CS DEPT Report CSR-12-77 1977 and Software Practice and Experience vol. 8 no. 4 1978
         BREBNER G.J. "The MAVIS User's Guide"
         ESP Report 1977
         BREBNER G.J. "MAVIS - A Script Generator for ERTE"
         ESP Report 1977
         BREBNER G.R. "Noddy Explores The Network - T44,  The Single User NSI Work Station"
         ESP Report NOV 1978
         CURRIE W.S. "The Utility Routines"
         ESP Report MARCH 1977
         GILMORE   B.A.C.   "User   Manual  for  DEIMOS  -  An Operating System for the PDP 11"
         ERCC MAY 1978
         ROBERTSON P.S.R. "The IMP-77 Language"
         CS DEPT Report CSR-19-77 1977
         SHAW S. "Benchmark Utilities on the 2970"
         EMAS 2900 Documentation ERCC NOV 1978
         SHAW S. "Setting Up Processes for the F1 Benchmark"
         EMAS 2900 Documentation ERCC NOV 1978