Google
 

Trailing-Edge - PDP-10 Archives - SRI_NIC_PERM_SRC_3_19910112 - stanford/5-swskit/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.

     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
Swskit Documentation For MTEST                                  Page 2


     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.
     
        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.
Swskit Documentation For MTEST                                  Page 3


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