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.