



1.0  GENERAL OPERATION

1.1  Assembly Instructions

NETTST is built from several files.  Before trying to build it,  collect
the following files into a single area:

NETTST.MAC      This  is  the  main  program.   It  references  all  the
               following files.

TULIP.MAC       This assembles into  TULIP.UNV,  the  symbol  definition
               file  for  the  TULIP  IO  package (DECUS #10-231).  This
               version is newer than the DECUS version,  which  will  be
               updated  sometime.  TULIP documentation is not shipped on
               the release tape, interested parties should  order  TULIP
               from DECUS.

TULLIB.MAC      This is the IO package subroutine library and  assembles
               into TULLIB.REL.

MACLIB.MAC      A collection of IO subroutines not well enough  designed
               to  warrant  inclusion  with TULLIB.  This assembles into
               MACLIB.REL.

NETLIB.MAC      A  collection  of  subroutines  that  allow  the  caller
               (NETTST)  to  symbolically  access memory in running DN8x
               systems.  This assembles into NETUNV.UNV and NETLIB.REL.

DTEPRM.UNV      This is a module used in building TOPS-10  monitors  and
               is  needed  by  NETTST to access the DTE20 communications
               area.

Next, assemble all the ancillary stuff:

          .COMPILE TULIP,TULLIB,MACLIB,NETLIB

Then load and save NETTST:

          .LOAD NETTST
          .SAVE NETTST
See the description of the DDT command below for saving NETTST with DDT.



1.2  Restrictions

A few  commands  make  symbolic  references  to  running  DN8x  systems.
Unfortunately,  these  require  extensions  to  NETTST, NETLIB, and some
other program that writes symbol table  files  (probably  DDT11).   This
probably  will  not be done for the 6.03A network LIR but hopefully will
be done for 7.01.  The commands affected by this restriction are SYMSET,
OCNMON, and SCBMON.
NETTST - A NETWORK TEST PROGRAM  V5D(37)                          Page 2
GENERAL OPERATION


1.3  Command Format

Any reasonable number  of  commands  may  be  typed  on  a  single  line
separated  by  commas (although spaces sometimes (but not always) work).
Commands will be executed in the order typed.

For example:
     Do?  ASCOUT:LPT22:, RIPPLE, SPACE, RIPPLE, RELEASE
     Do?  OCNMON, NDBMON, SCBMON



1.4  Arguments

Commands that take arguments are shown that way below with their default
as  the  argument.   The argument is tacked onto a command with a colon,
commands that take arguments may be typed without them in which case the
last argument used will be the default.

The types of arguments presently used are:

     1.  File spec
         SFD's are not handled, but the NODE_DEV:FILE.EXT construct  is.
         Furthermore,  terminals  on network nodes may be specified this
         way, something that cannot be  done  with  the  monitor  assign
         command.   (E. G. "ENCORE_TTY0:" specifies the console terminal
         of node ENCORE.)

     2.  ON/OFF

     3.  Decimal numbers (unsigned)

     4.  Octal numbers (unsigned)

     5.  SIXBIT strings (6 character max)




2.0  DATA TEST COMMANDS

2.1  Device Specification Commands

     1.  ASCINP:IN:NETTST.LST
         ASCOUT:OUT:NETTST.LST
         BININP:IN:NETTST.LST
         BINOUT:OUT:NETTST.LST
         BYTINP:IN:NETTST.LST
         BYTOUT:OUT:NETTST.LST
         IMPINP:IN:NETTST.LST
         IMPOUT:OUT:NETTST.LST
         PIMINP:IN:NETTST.LST
         PIMOUT:OUT:NETTST.LST
         All these specify the file to access with  the  following  test
NETTST - A NETWORK TEST PROGRAM  V5D(37)                          Page 3
DATA TEST COMMANDS


         commands.   Only  one  of  these  can be in effect at any given
         time, issuing a new command will cause the previous file to  be
         closed and released.




2.2  Test Pattern Commands

     1.  ONES
         ZEROS
         These are meant for use with  the  BININP/BINOUT  commands  but
         will  handle ASCII quite nicely also.  The pattern used will be
         floating  ones  or  floating  zeros.    These   patterns   were
         originally used to test binary task/task transfers.

     2.  PERIOD
         SPACE
         RIPPLE
         These are meant for use with  the  ASCINP/ASCOUT  commands  but
         will  also  handle  binary quite nicely.  The patterns used are
         strings of period, spaces, or a ripple pattern  bracketed  with
         angle  brackets  (so  you  can  see  where the spaces stopped).
         These patterns were orginally used for test LPT compression.

     3.  LISTEN
         This command only works after ASCINP, BININP,  or  BYTINP.   It
         will  print  data from the connection on the terminal (in octal
         if used after  BININP).   It  was  originally  written  to  see
         exactly   what  an  RSX-11M  system  was  sending  through  the
         compatible port.

     4.  LOOP
         This continually repeats the command line until an error occurs
         or  something  is  typed  on  the  keyboard.   See  below under
         "Monitoring Commands" for more information.




2.3  Parameter Modifying Commands

     1.  NUMLIN:130
         This specifies the number of messages to be  sent  or  received
         per invocation of pattern command.

     2.  STLEN:1
         This specifies the length of data for the first message sent.

     3.  INCREMENT:1
         This specifies  the  increase  in  length  of  each  successive
         message from the pattern generater.
NETTST - A NETWORK TEST PROGRAM  V5D(37)                          Page 4
DATA TEST COMMANDS


     4.  PARAMETERS
         This prints out the present  values  of  the  preceeding  three
         commands  and some (usually wrong) information about the amount
         of data that can fit in a buffer.  The preceeding three command
         also force this command to be executed.

     5.  BUFFERS:0
         This specifies the number of buffers to be  used  by  the  data
         test  commands  and  must be issued before them.  Zero means to
         use the system default for the number of buffers.

     6.  NOECHO
         This specifies that devices are to be opened  with  the  IO.SUP
         bit (i.e., TTY suppress echo;  bit 28) set in the status word.

     7.  NOFORM
         This specifies that devices are to be opened  with  the  IO.SFF
         bit  (i.e.,  LPT suppress form feed;  bit 29) set in the status
         word.   For  LPT's  this  means  the  preceeding  and  trailing
         formfeeds  will be suppressed.  It also must be issued before a
         data test command.

     8.  ECHO:OFF
         When echo is set ON, the next device specification command sets
         up the device in modify mode.  When the next pattern command is
         typed, after each message is received (sent), an echo  is  sent
         (received).  This is to check out full duplex TSK's, a task yet
         to be done.

     9.  HASH:OFF
         When on, a hash mark (#) will be printed on the terminal  after
         the  transmission of each message to provide visual and audible
         (sometimes) feedback that the data is still moving.  At the end
         of a data pattern command, a CRLF will be output.

    10.  STATISTICS:OFF
         When on, the baud rate of the transfer will be printed for  the
         data moved for this invocation of a data pattern command.  Keep
         in mind that this doesn't include parity bits, or  TTY's  start
         and  stop bits.  If ASYNC:ON is in effect, this will also print
         the number of successful and unsuccessful IO instructions.




2.4  Special IO Mode Commands

These commands exercise the extensions to normal buffered mode  IO  done
in  the past several monitor releases.  All of these commands are of the
ON/OFF variety and are used to enable  or  disable  the  special  modes.
When  the  interrupt  and  async.   IO modes are on, their action cannot
really be appreciated unless HASH is also on.
NETTST - A NETWORK TEST PROGRAM  V5D(37)                          Page 5
DATA TEST COMMANDS


     1.  ASYNCHRONOUS:OFF
         This makes the next device specification command  do  its  OPEN
         with  the  asynchronous  IO bit set.  Whenever an IN or OUT UUO
         gets an error return with no error bits set, NETTST will  print
         an  "A"  if  in  hash  mode  and  then HIBERnate waiting for IO
         activity to happen.  In case nothing happens, it will  wake  up
         after  10 seconds anyway and try again.  This makes it tolerant
         of  monitor  bugs  that  forget  to  wake  NETTST.   See  also:
         STATISTICS.

     2.  INTERRUPTS:OFF
         When the argument is ON, this turns on the PSI system which  is
         set  up  to  handle  interrupts for the device under test.  The
         interrupt routine does not materially affect the  operation  of
         the  test  routines,  it merely logs the interrupts if the hash
         switch is set.  Whenever an interrupt occurs, visual indication
         will be given if HASH:ON is in effect.  The output based on the
         reason bits are:

         Output               bit       meaning
         I                    PS.RID    input done
         O                    PS.ROD    output done
         -EOF-                PS.REF    end of file
         -INPUT ERROR-        PS.RIE
         -OUTPUT ERROR-       PS.ROE
         -OFFLINE-            PS.RDO
         -ONLINE-             PS.ROL

         All other interrupt conditions are not enabled for but if  they
         occur they will be marked with a "?".

     3.  MPX:OFF
         When this is set to ON, the next device  specification  command
         will  OPEN  the  MPX device and then connect the test device to
         that  channel.   The  special  actions  of   the   MPX   device
         (specifically the storing of the UDX in the buffer header) will
         not be checked (after all, this is a network tester, not MSGSER
         tester);   the goal of this command is to have no effect on the
         operation of the test.




2.5  Terminal Commands

     1.  TTYMAP:ALL
         The parameter this takes is either a node  name  or  number  or
         ALL.   It  will  print  a  mapping on the TTY between node_line
         pairs to TTY numbers.  If a node name or number is  given,  the
         mapping  will be from line numbers on that node (0 to whatever)
         to TTY numbers (356 from 'TTY356').  If the special case of ALL
         is  typed,  then  the  mapping  is from TTY number to node_line
         pairs.  Note that TTYs PTYs use are include at the high end  of
         the output.
NETTST - A NETWORK TEST PROGRAM  V5D(37)                          Page 6
DATA TEST COMMANDS


     2.  SEND:0
         This command is a hack command of sorts.  The  parameter  is  a
         TTY number, every line typed after this command up to an ESCape
         will be printed on the TTY specified.  I got tired of typing  a
         lot of .SEND's one night.

     3.  FOX:
         There is no default for this command at first.   The  parameter
         is  either  a  node  name or number or a TTY device name.  If a
         node is used, it will have the same effect as the TTY name  for
         the terminal on the specified node with the same line number as
         the  program's  job  number  (That's  so  I  could  tell  OPSER
         'ALL-FOX:FOO').   This  will send several lines (set by NUMLIN)
         of text to the terminal specified.  Last I saw, the  TRMOP.   I
         used  to send the data no longer blocked the job which makes it
         kind of useless for this application.

     4.  SPEED:9600
         This sets the baud rate to be  used  in  future  FOX  commands.
         Only the output side will be set.

     5.  FILL:0
         This sets the fill class to be used on future FOX commands.




2.6  Monitoring Commands

There are several commands that display useful information from the  -10
or -11s.  When used with the LOOP command (below) they output data, wait
awhile, output any errors that occurred since last time, wait some more,
etc.   Once  in  a  great  while,  they  output all the information in a
summary form.

     1.  BADMON
         This prints out the contents of bad NCL messages as they arrive
         in the -10.  Most NCL messages are decoded and are printed in a
         reasonable form.  Take this data with a grain  of  salt.   Race
         conditions  inherent  in  any  network designed to date make it
         possible for almost any message that made  sense  when  it  was
         transmitted be illegal when it is read.

     2.  DTE:25316
         Someday I'm going to add code to read the symbols contained  in
         a monitor .EXE file.  Until then, this parameter is the address
         of the KL10's comm area  that  is  used  by  all  systems  with
         DTE20's.   This  command  isn't  really  a  monitoring  command
         because it won't remember to sleep before the next  invocation,
         but  this  is a good section to put it.  Since it outputs a lot
         of data, using the logging facility described below is  a  good
         idea.  Therefore, its normal use is to type:

         Do?  LOG, DTE, ENDLOG
NETTST - A NETWORK TEST PROGRAM  V5D(37)                          Page 7
DATA TEST COMMANDS


     3.  NDBMON
         This is almost an analogue of the SYSDPY T display but is meant
         for  hardcopy  instead  of video.  It also outputs the queue of
         unacknowledged messages for each NDB.  Since  that  information
         changes  often,  it  is  a good idea to take it with a grain of
         salt.  If you get the same output  twice,  it  will  be  valid.
         Since  detecting  errors in this data is not easy, in loop mode
         this will print only during the summary times.

     4.  NETMON
         This produces a quicky display of the data stored in the .GTNET
         GETTAB  table.   A  better  way  to see this data is to use the
         SYSDPY "\" command.  Keep in mind that this data  is  available
         only  in systems that have FTCMSR turned on and that the system
         is shipped with it turned off.

     5.  OCNMON
         This outputs the DDCMP messages statistics for all -11s in  the
         network (the LB.OCN/LB.ICN data).  Errors are defined to be any
         change in the error counts.

     6.  SCBMON
         This is the analogue of the SYSDPY T data from the -11s'  point
         of  view.   It outputs the NCL message data for each active SCB
         for each -11 from the network.  Since detecting errors in  this
         data  is not easy, in loop mode this will print only during the
         summary times.

     7.  SCNMON
         This outputs SCNSER statistics since the last execution of  the
         command  or since startup if this is the first time.  The items
         listed are:

         1.  RCV - # of receive interrupts

         2.  XMT - # of transmit done interrupts

         3.  ECHO - # of characters echoed

         4.  ACT - # of lines active.  Receive active is when  there  is
             input  in  the buffer and transmit active is when LDLOIP is
             set (I think).  If both are active, that will increase  the
             count by 2.

         5.  SIZE the number of characters SCNSER is willing to buffer

         6.  BAUD - average baud rate  (based  on  sum  of  receive  and
             transmit  interrupts).   The  asterisks  following  make  a
             histogram, one per every 500 baud.


     8.  LOOP
         This command makes NETTST constantly repeat  the  command  line
         until  a fatal error is detected or a character is typed on the
NETTST - A NETWORK TEST PROGRAM  V5D(37)                          Page 8
DATA TEST COMMANDS


         TTY.  In the case of the monitoring commands, there will  be  a
         sleep  between  invocations  of  the  command line to keep from
         loading the system you're trying to measure.  LOOP can also  be
         used  with  any other command to repeat it.  For example, "LOOP
         RIPPLE" sends continuous ripple patterns to the currently  open
         device  or reads and checks them from the current input device.
         LOOP alone is not recommended - it gobbles machine time.

     9.  SLEEP:10000
         This specifies the  number  of  milliseconds  to  sleep  before
         NETTST repeats the command line when looping.

    10.  SUMMARY:10
         This specifies the number of minutes before a summary  printout
         is done.  Summaries are based on clock time, not the time since
         the command was typed, so  by  using  the  defaults,  summaries
         should  appear within 10 seconds of the start of each 10 minute
         interval during the day.




2.7  Logging Facility

     1.  LOGFILE:LPT:NETTST.LOG
         This specifies the log file that will record output request  by
         future  LOG  commands.  Special treatment is accorded different
         logging devices.  Once opened, most  devices  (LPT,  TSK,  MTA)
         will  be  left open until explicitly released;  however DSK and
         TTY will be released before NETTST prompts for  a  new  command
         and   before  the  hibernate  encountered  when  looping  on  a
         monitoring command.

     2.  LOG
         The remainder of the output from this command  string  will  be
         directed to the log file instead of the TTY.

     3.  ENDLOG
         This releases the logging device if it is still  open.   (Which
         should not be the case if it is a DSK or TTY.)

Typical usage:

        Do? LOGF:DSK:
        Do? LOG TTYMAP:ALL
        Do? LOOP LOG OCNMON, SCBMON, NDBMON

NETTST - A NETWORK TEST PROGRAM  V5D(37)                          Page 9
DATA TEST COMMANDS


2.8  Miscellaneous

     1.  SYMSET
         OCNMON and SCBMON access the -11s in the  network  symbolically
         using  symbol  tables output by a special version of DDT11.  As
         versions change, these have to be replaced and that may be done
         via this command.  Generally what you want to do is:

         .RUN NETTST
         Do? SYMSET, EXIT
         .SSAVE NETTST

     2.  PAUSE:1000
         This pauses the specified amount of time  in  milliseconds  and
         may  be useful in exercising race conditions.  If more than one
         PAUSE command is typed on a line, the time spent sleeping  will
         equal the last value typed on the line, for example

         Do? PAUSE:1000, PAUSE:2000

         will sleep for two intervals of 2 seconds each.   This  happens
         because  NETTST's  command  decoder evaluates all the arguments
         before executing the commands.  commands that take values  have
         only  one  location dedicated for that value, so in the example
         NETTST first stores 1000, then  2000,  and  then  executes  the
         pause twice, both times with a sleep time of 2 seconds.

     3.  DDT
         If DDT is loaded, this will call it via a "PUSHJ P," type call.
         To  get back to NETTST, type "CPOPJ$G".  Easier though is to do
         this patch:

         .DEBUG NETTST
         NETTST$:
         CDDT/POPJ P,
         .$B

         Then all you have to do to get back is type "$P".

     4.  HELP
         This prints a list of the current commands.

     5.  EXIT
         This closes any open files and returns to the monitor.

