Google
 

Trailing-Edge - PDP-10 Archives - QT020_T20_4.1_6.1_SWSKIT_851021 - swskit-tools/mtest.mem
There are 5 other files named mtest.mem in the archive. Click here to see a list.


                     Swskit Documentation For MTEST


MTEST is a program whose purpose is to allow the user to insert  MONITOR
instruction  execution  tests  at  any place in the TOPS-20 MONITOR.  It
functions as an interface to the UTEST  JSYS  (see  page  3-409  of  the
Monitor  Calls  Reference  Manual).   This  JSYS  provides  a method for
determining if every instruction in a section of monitor  code  actually
gets  executed.   It  confirms  that  a  test of the code is complete by
reporting the instructions that were executed during the test.

IMPORTANT NOTE:  Never insert a test over monitor data since  the  tests
cause  a  call  to  an internal UTEST JSYS routine to be inserted in the
words being tested.  If a test is made of monitor data, a corruption  of
the monitor data base is likely.

To allow examination of the test to be as convienient as  possible,  the
MTEST  program  provides  a  deassembler  for  the monitor instructions.
Symbols for various values are obtained using the SNOOP JSYS.   In  this
way  the  output  from MTEST should present the instructions in a format
similar to that of DDT.  Since the SNOOP JSYS allows an argument of  the
module  symbol table to search first for the symbol, MTEST also allows a
user to specify a default symbol table to search first.

One of the restrictions of the UTEST JSYS is that the section of monitor
code which is being tested cannot exceed a two page window.  This is due
to the data structures that TOPS-20 implements for this JSYS.  Not every
instruction  in  the  window  need  be  tested  nor  must  the  tests be
contiguous.  In other words, as many sections of  monitor  code  as  the
user  wishes  can  be  tested  at  the same time as long as the distance
between the first instruction and the last instruction to be  tested  is
no more that 2000 (octal) words.  If an attempt is made to insert a test
which exceeds this two page window, an error message will be printed  on
the terminal but all previous tests inserted will be preserved.

The actual test is not inserted into  the  MONITOR  until  the  test  is
started.  This allows a user to redefine the test if they so wish before
the test is started and it allows the user a means of setting up a  time
window  also  for  execution  of  the  test.   To facilitate the ease of
starting and stopping commands, a PSI channel is  dedicated  as  a  test
toggle.   Each  time  the specified control character is typed, the test
will either toggle on or off.

There is a command in MTEST  which  allows  a  user  to  simply  examine
monitor  code without affecting any of the tests which are set up.  This
allows the person to determine the exact instructions they wish to  test
before  they  insert  the  test.   To examine which tests the users have
already inserted, they need only type the command  RESULTS,  which  will
type  out  all  the  instructions  which  are  marked to be tested.  The
RESULTS command is also used to see the results of a test after the test
is  finished.   Each instruction which was executed will be preceeded by
an 'X'.  The results command is invalid while a test is in progress.
Swskit Documentation For MTEST                                    Page 2


A facility to run programs as inferior forks to MTEST is also available,
since  some  tests  will  need some JSYS, program, or EXEC command to be
specifically executed for the test.  For this reason there is a  command
to  enter  SDDT,  to  PUSH  to  an inferior EXEC, or to run any program.
These forks are ephemeral.

Other miscellaneous commands allow the user  to  reset  the  MTEST  data
base,  clear  default  symbol  table  and  redefine  the  toggle control
character.

A summary of commands is listed below:

MTEST>? one of the following:
 Clear     Examine    Exit       Help       Insert     Push
 Reset     Results    Run        SDDT       Set        Start
 Stop      Toggle


        CLEAR           Clears the  default  symbol table  for  symbol
                        searches.

        EXAMINE         Examines a section of Monitor Code.

        EXIT            Exits from MTEST.   If a test  is in  progress
                        MTEST will not allow the EXIT command.

        HELP            Types this text.

        INSERT          Inserts a Monitor code test.  Note: this  does
                        not actually insert the test into the MONITOR,
                        rather, it sets up the MTEST data base so that
                        when the test  is started, MTEST  will have  a
                        test to insert.

        PUSH            Pushes to an inferior ephemeral EXEC.

        RESET           Resets the MTEST data base.

        RESULTS         Will  type  out  the  tests  which  have  been
                        inserted if  this command  is typed  before  a
                        test is started or  will type out the  results
                        of a test  if this  command is  typed after  a
                        test is stopped.  The command is illegal while
                        a test is in progress.

        RUN             Run a program in a ephemeral fork.

        SDDT            Runs an ephemeral SDDT fork.

        SET             Sets the default symbol table.

        START           Starts testing.

        STOP            Stops testing.
Swskit Documentation For MTEST                                    Page 3


        TOGGLE          Allows user  to specify  toggle character  for
                        test starting and stopping.

The following is a sample MTEST test.  Assume we are  getting  an  error
message  from  the  SWJFN  JSYS  and  we  wish to determine how the code
decided that there was an error condition.  What we wish to do is to set
up  a  test  of  the SWJFN code and see the path that the JSYS will take
upon executing it.

@MTEST
You need to be an enabled WHEEL to run this program
Do You Want to be enabled?YES
MTEST>SET (Lookup Module Name to) JSYSF
MTEST>TOGGLE (Character is) ^D
MTEST>EXAMINE (Monitor Code) 
Starting At: .SWJFN
Ending At: .SWJFN+10
.SWJFN    MOVE 11,KSTYP
.SWJFN+1    CAMN 1,CDRST
.SWJFN+2    JRST BLKF6+116
.SWJFN+3    PUSHJ 17,F1+556515
.SWJFN+4    JSP 2,F1+10763
.SWJFN+5    PUSHJ 17,F1+2040
.SWJFN+6    JRST BLKF6+122
.SWJFN+7    PUSH 17,JFN
.SWJFN+10    XCT 4,BLKF5+317
MTEST>INSERT (Code Test) 
Starting At: .SWJFN
Ending At: .SWJFN+10
MTEST>SDDT
DDT
1/   0   1
2/   0   1
[MTEST Test Started]
SWJFN$X
MTEST>STOP (Testing) 
MTEST>RESULTS
  X  .SWJFN    MOVE 11,KSTYP
  X  .SWJFN+1    CAMN 1,CDRST
  X  .SWJFN+2    JRST BLKF6+116
     .SWJFN+3    PUSHJ 17,F1+556515
     .SWJFN+4    JSP 2,F1+10763
     .SWJFN+5    PUSHJ 17,F1+2040
     .SWJFN+6    JRST BLKF6+122
     .SWJFN+7    PUSH 17,JFN
     .SWJFN+10    XCT 4,BLKF5+317
MTEST>EXIT

From this, it is seen that the error return is generated from SWJFN+2.