                Description of MTS Distribution 2.1   
  
     This distribution consists of one tape containing 83 files
 in *FSAVE format.  Source is included only for those components that
 are part of the basic system, not for language processors and such.
 Below is given a complete list of all files on this tape, along with
 the type and size of the file from which the tape was written. In 
 most cases a file may be restored to a type different than that from
 which it was saved. In particular, many source files are sequential
 because they are stored on the data cell at Michigan.  *FSAVE will
 produce an error comment if these are restored to a file of different
 type, but will do it anyway.
    
    
 *** TABLE OF CONTENTS FOR THIS TAPE:
 
 NAME OF FILE      TYPE      SIZE
 
 D2.1DESCR         LINE      6P
 *REDUCE           LINE      4P
 *RDCCHKPOINT      SEQ       108P
 *LISP             SEQ       11P
 *LISPCOM          SEQ       108P
 *SCRAMBLE         LINE      4P
 *ASMG             LINE      5P
 *ASMGFPP          SEQ       5P
 *ASMGF2           SEQ       7P
 *ASMGF3           SEQ       4P
 *ASMGRTA          SEQ       2P
 *ASMGF7           SEQ       7P
 *ASMGF8           SEQ       7P
 *ASMGIS00         LINE      2P
 *ASMGIS09         SEQ       2P
 *ASMGIS01         LINE      2P
 *ASMGIS20         LINE      2P
 *ASMGIS44         LINE      2P
 *ASMGIS67         SEQ       2P
 *CATALOG          LINE      4P
 *DCALC            SEQ       9P $CONTINUE WITH *PL1LIB
 *TALLY            SEQ       4P
 *CSMPTRAN         SEQ       2P
 *CSMPEXEC         SEQ       2P
 *CSMPLIB          SEQ       50P
 *FORTRANH         SEQ       112P
 *SNAP             SEQ       28P
 *STATUS           LINE      5P
 *SYSMAC           LINE      45P
 SUPERUPD          LINE      11P
 *FCBEQU           LINE      4P
 *CATEQU           LINE      2P
 CATL              LINE      25P
 OPEN              LINE      27P
 GRDSK             LINE      20P
 GTZ               LINE      5P
 TRAK              LINE      11P
 FLIN              LINE      5P
 WRIT              LINE      25P
 READ              LINE      9P
 RWSEQ             LINE      12P
 READL             LINE      2P
 MOVE              LINE      4P
 VTOC              LINE      16P
 MTS.EQU2          LINE      2P
 DASDUC            LINE      11P
 FILESAVE          LINE      20P
 RESTORE           LINE      28P
 DUMP              LINE      12P
 *FSAVE            SEQ       5P
 TAPERTN           SEQ       13P
 MOUNT             SEQ       21P
 TAPEDUMP          LINE      9P
 *TAPEDUMP         LINE      4P
 *MOUNT            LINE      5P
 TSSCN             LINE      5P
 SAVTS             LINE      5P
 TAPESTAT          LINE      4P
 BILLRFT           SEQ       7P
 BILLING           SEQ       14P
 BILPRNT           SEQ       9P
 BILLWRITEUP       LINE      16P
 BILLWUOUT         LINE      11P
 BILLSOURCE        LINE      2P
 BILLTABLES        LINE      5P
 DIVISION          LINE      18P
 COVER             LINE      2P
 RESTART           LINE      2P
 BILLLIB           LINE      4P
 FLNM              LINE      2P
 APLS              LINE      4P
 DPLB              LINE      2P
 DPCOPY            LINE      2P
 FLUSH             LINE      2P
 GTFL              LINE      4P
 BPFL              LINE      4P
 PNLIST            LINE      4P
 PEXT              LINE      4P
 STAT              SEQ       14P
 ANALYSIS-S        SEQ       29P
 *ANALYSIS         LINE      2P
 *LLMPSEQU         LINE      5P
 NEWM.V3           SEQ       342P
   
     
     Each of the components included in this distribution is described
 below.  The descriptions are keyed to the file names given above.
  
 *REDUCE and *RDCCHKPOINT are the object for REDUCE as described in
 CCmemo M134.  These require the new LISP also.
  
 *LISP is the MTS version of the Stanford LISP system, as described
 in CCmemo M135.
 
 *LISPCOM is the LISP compiler to go with *LISP. It is also described
 in CCmemo M135.
  
 *SCRAMBLE is described in CCnews C213 and the latest update to 
 Volume 2.
  
 *ASMG through *ASMGIS67 contain the current (V2L3) version of the
 assembler as described in the latest update to Volume 2. 
  
 *CATALOG has been modified to take the PAR=T parameter to list
 temporary (scratch) files only.
  
 *DCALC is described in the latest update to Volume 2. It is a
 desk calculator written in PL/I.
  
 *TALLY counts instructions in a program. It is described in 
 Volume 2.  It is essentially  the SDS STEP command liberated
 from SDS.
  
 *CSMPTRAN through *CSMPLIB constitute the MTS version of CSMP
 as described inVolume 2.
  
 *FORTRANH contains a slightly modified version of FORTRAN H,
 with all current (Sept. 1970) PTFs applied.
  
 *SNAP is described in Volume 2.
  
 *STATUS has a new option to print only the dollars left.
  
 *SYSMAC contains a new version of several system macros, particularly
 the I/O macros (SCARDS, SPRINT, etc.). The changes are described 
 in CCmemo M130.
  
 SUPERUPD contains the current Michigan upadate deck for the
 supervisor and includes ALL the changes made to it since 
 distribution 2.0, including all change forms.  The most important
 changes not distributed before are listed below, but anyone using
 this who has also changed the supervisor will, of course, have to
 look at the update in more detail.
  
     1.  The TIMEDIFF SVC has been added. This SVC returns the
         difference between the timers in all of the CPUs currently
         being used.  Its main use is by the STAT job to record 
         the timer errors on the STAT tape.
     2.  The DEVSTAT SVC returns both bytes of device status bits
         and clears registers 4 and 5 since they are reserved for
         future use.
     3.  The subroutines GRAB and FREE will not combine a block
         accross a page boundary.
     4.  The STAT job will never be allowed to get a timer interrupt.
     5.  SVCs 38 and 69 have been moved to the ALLOC CSECT.
     6.  The segment 0 mode (used by the virtual machine) is handled
         much better, so that it is now possible to reliably do
         overlapped I/O while using it.
     7.  The paging algorithm has been changed slightly to correct
         some defects noted in small core operation. The changes are
          1  The value accumulated in BIGJPGS is the maximum
             of BIGJTH and the actual number of real pages
             for each "privileged" job.  This is the most
             important change, and makes the privileged job
             machanism work more nearly as designed.
          2  The business of moving jobs around on the CPU queue
             in Q has been removed.
          3  A privileged job is made non-privileged (not neutral)
             in DORMNT if it still has more than BIGJTH pages.
          4  The privileged job test has been put in for all page
             requests, not just relocation exceptions as before.
          5  The test for too many drum reads in one time slice
             is made for all drum reads, not just relocation
             exceptions as before.
  
     8.  The subroutines GRAB and FREE have been changed to treat
         all requests smaller than a certain size as special cases
         to be taken from a set of special chains of blocks of the
         correct size. This will save several minutes of CPU time
         per day, but will increase the storage used by the
         supervisor.  Ths largest block to be handled this way is
         specified by the value of SVCASPEC in *LLMPSEQU.
     9.  The ENTER and EXIT SVCs have been added. These will be used
         by the "protection" mechanism to be added to MTS, but as of
         now, they have not been tested.
     10. To implement HASP II with MTS (we did it independent of
         Newcastle) 2 new SVCs ($STIMER and $TTIMER) have been added.
         They are very special and are not good for anything but HASP.
     11. The value of the time slice has been reduced.
     12. The TWAYT SVC now also implies a call to DORMNT.
     13. The PDP will be started if there is need to write pages,
         even if no pages need to be read.
     14. A lock byte problem in GETWPG and SETPAG was fixed. This
         would occasionally cause BIGJPGS to be off by one.
         (But only in multiple CPU operation.)
     15. GWPTST is set by FREERC if the page was reclaimed and we
         need to write another one.  This could occasionally cause
         the system to hang up because the PDP would not write
         pages and core was full (if WRTFRPGS and MINFRPGS differ
         by only one or two).
     16. The address of the dump tape is set to 00FF before the
         dump program is called in case an interrupt on the last
         dump tape occurs (in another CPU) before the dump program
         finds a new one. (Yes it really did happen.)
  
 *FCBEQU through VTOC and DASDUC are the current file routines, not an
 update deck (use *DOWNDATE). The most important changes not 
 previously distributed are
     1.  DESTRY now checks the return code from DSKOP correctly (and
         takes a JOBDUMP if it is not zero temporarily).  Before
         a return code of 12 would cause the file to be uncataloged
         but not destroyed.  Also the bits passed to DSKOP are cleared.
     2.  The handling of alternate tracks by DASDUC is corrected.
         In the past many channel programs used by the file routines
         did not work correctly on tracks which had an assigned
         alternate.
     3.  The last reference and creation dates are set correctly. 
         Before they were off by one between midnight and about 3 AM.
     4.  A referenced bit is set in the file descriptor whenever a 
         file is opened. This is used by FILESAVE to save only
         referenced files.
     5.  READCAT allows the caller to previously attach or keep the
         disk.
     6.  WRITCAT (the inverse of READCAT) was added.
     7.  The catalog subroutines do more error checking on the catalog.
     8.  An overflow segment for a user catalog will not be allocated
         on the last 2 tracks in a cylinder other than the cylinder
         the previous segment for the same user is in.  This keeps
         the last 2 tracks avaliable only for overflow from tracks
         in the same cylinder.
     9.  ALL disk and data cell writes are read checked. We had so
         much trouble with disk errors we finally gave up.  This
         change affected many modules, but to not read check
         writes to files only (as opposed to VTOCS, etc.) only
         TRAK (READT and WRITET) need to be changed.
     10. The maximum extent avaliable on a volume is kept in the
         volume table in VOLGET and GETDSK will not bother to
         search the type 5 DSCBs on a volume if there is no point.
         This saves considerable time creating a file if your
         disk packs are almost full.
     11. GTZ checks that it really found a type 0 DSCB by reading
         the first byte of data. This is related to the problem
         mentioned in 2 above. (This is one of the cases that didn't
         work on a spared track.)
     12. GTZ will search a full cylinder with one start I/O for speed.
     13. READI uses the Track Index pointer in the FCB, thus saving
         considerable time and at least 2 calls to READT.
     14. VOLGET blanks the input area before reading from the 
         operator's console after it can't find a disk volume.
  
 MTS.EQU2 has been updated to reflect the scaratch area requirements
 of the file routines mentioned above. WARNING!! -- don't install
 those file routines without increasing the scratch areas MTS gets
 for the file routines.
  
 FILESAVE has been changed to (optionally) save only referenced files.
 If column 8 of the control card read from SCARDS is NOT "A", only
 referenced files are saved. To make this sort of operation practical,
 other changes have been made also.  A sorted list by user ID of
 all files saved is printed at the end and the output tape is not
 terminated after each volume saved.  Also an end of tape is not
 a fatal error anymore.  This version is much faster than the
 old version too. Two bugs have been fixed in this version. An error
 reading a vtoc track will not terminate FILESAVE, and the channel
 program used to read data will work on a track that has a spare.
 In the past the channel program was not reading data from the track
 after a track with a spare and because DASDUC was not handling
 spare tracks properely, there was no error indication. When
 DASDUC was fixed then FILESAVE began to get disk errors.
  
 RESTORE contains a version of the file restore program that goes with
 the partial file save program. Some of the changes made were
     1.  It is possible to restore a file under a differern userid
         than it was saved under by entering (UID1,UID2)FILENAME
     2.  If ALL or EXCEPT is entered, RESTORE asks for a list of
         volumes to restore files from and ignores files from
         other volumes. This is to handle tapes with many volumes
         on them.
     3.  RESTORE refuses to restore the same file more than once
         in the same run so that several tapes with partial saves
         on them can be used as input and any file found on an
         early tape will not be restored from a later tape.
  
 DUMP is a new version of the system dump program. Several problems
 with multiple CPU operation have been fixed, but a few more remain.
  
 *FSAVE is the current version of this program.
  
 TAPERTN is the May 28, 1970 version of the magnetic tape routines.
 This is NOT the labeled tape version, but it is completely rewritten
 from distribution 2.0, and contains many fewer bugs.  The labeld
 and blocked tape version will be distributed later. This version
 agrees with the current Michigan user documentation (and with the
 Alberta tape users' guide), and includes the changes given
 in CCnews C149 and CCnews C196, but not the changes given in 
 CCmemo M114.
  
 MOUNT contains the source for *MOUNT to go with TAPERTN.  Again
 this is not the labeled tape version, but agrees with current
 documentation.
  
 TAPEDUMP is the source for the current tape dump program described
 in Volume 2.
  
 *TAPEDUMP is the object for the previous file.
  
 *MOUNT contains the object for MOUNT and the things it calls.
  
 TSSCN contains a program to scan *TAPESTAT (the file that records
 all successful mounts).  This file is maintained by TAPESTAT below.
  
 SAVTS contains a program to save *TAPESTAT on tape and delete 
 most of the lines from it.
  
 TAPESTAT is the source for the program that is called by MOUNT to
 record things in *TAPESTAT.
  
 BILLRFT through PEXT are all of the programs used at Michigan for
 billing. BILLWRITEUP is the FORMAT input for a description of these
 programs and BILLWUOUT is the output of this writeup with revision
 bars to indicate changes from a previous version some of you have.
 Hopefully most of these programs are understandable from this,
 the basic billing programs are the first 3 files and the rest are 
 subroutines, auxiliary programs, data files, or command files.
  
 STAT is the current version of the STAT job. It handles multiple CPU
 operation better by using the TIMEDIFF SVC.
  
 ANALYSIS-S is the source for *ANALYSIS.  It also has been modified to
 handle multiple CPUs.
  
 *ANALYSIS is the object for ANALYSIS-S.
  
 *LLMPSEQU is changed mainly to include SVCASPEC mentioned above.
  
 NEWM.V3 is the TEST/360 master tape for Volume 3 of the new MTS manual.
 This must be run through TEXT/360 to produce a print file.
  
