1IS 
          IDENT  1IS,IOS
          PERIPH
          BASE   M
          SST 
          SYSCOM
          TITLE  1IS - INSTALL DEADSTART FILE.
*COMMENT  1IS - INSTALL DEADSTART FILE. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
*****     1IS - INSTALL DEADSTART FILE. 
* 
*         P. D. HAAS.        78/03/16.
*         D. R. HILGREN.     78/08/01.
          SPACE  4,10 
***              *1IS* WORKS IN CONJUNCTION WITH THE CP ROUTINE 
*         *INSTALL* TO INSTALL THE RUNNING SYSTEM OR USER 
*         SPECIFIED DEADSTART FILE ON A RMS DEADSTART DEVICE. 
          SPACE  4,10 
***       CALL. 
* 
*T        18/ *1IS* ,6/0,12/ CODE ,12/ SFA ,12/ IFA 
* 
*         CODE = FUNCTION CODE. 
*         SFA = SDF FET FWA (IF PRESENT). 
*         IFA = INSTALL FILE FET FWA (IF PRESENT).
* 
* 
*         FOR FUNCTION CODE *IDF*,
*T,FET+5  48/0,12/ EQ 
* 
*         EQ = EST ORDINAL SPECIFIED ON *INSTALL*.
* 
* 
*         FOR FUNCTION CODE *CFI*,
*T,FET+5  24/ R1 ,12/0,24/ R2 
* 
*         R1 = RANDOM SECTOR ADDRESS OF *OSB*.
*         R2 = RELATIVE SECTOR ADDRESS OF EOI.
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
*         * ASSIGNED FILE CONFLICT - SDF.* - A LOCAL FILE NAMED *SDF* 
*         IS ASSIGNED AT THE CONTROL POINT.  *SDF* IS A RESERVED FILE 
*         NAME. 
* 
*         * INCORRECT SDF DEVICE.* - THE EQUIPMENT SELECTED TO RECEIVE
*         A DEADSTART FILE DOES NOT MEET THE REQUIREMENTS OF AN *RMS* 
*         DEADSTART DEVICE. 
* 
*         * INSTALL FILE NOT FOUND.* - THE FILE TO BE INSTALLED AS A
*         DEADSTART FILE WAS NOT FOUND (NOT ASSIGNED TO THE JOB CONTROL 
*         POINT). 
* 
*         * INSTALL FILE NOT MASS STORAGE.* - THE FILE TO BE INSTALLED
*         AS A DEADSTART FILE DOES NOT RESIDE ON MASS STORAGE.
* 
*         * MS ERROR ON DEADSTART FILE.* - A MASS STORAGE ERROR WAS 
*         ENCOUNTERED WHILE WRITING THE DEADSTART FILE, OR READING
*         THE DEADSTART SECTOR. 
* 
*         * TRACK LIMIT ON SDF DEVICE.* - THE DEVICE SELECTED TO BECOME 
*         AN *RMS* DEADSTART DEVICE DOES NOT HAVE ENOUGH SPACE TO 
*         ACCOMMODATE THE DEADSTART FILE. 
* 
*         * 1IS - INCORRECT REQUEST.* - 1IS WAS CALLED WITH AN
*         INCORRECT FUNCTION REQUEST. 
* 
*         * INSTALL ABORTED.* - OPERATOR ACTION ABORTED JOB.
          SPACE  4,10 
***       OPERATOR MESSAGES.
* 
*         *WAITING - GLOBAL INTERLOCK.* - GLOBAL INTERLOCK IS NOT 
*         AVAILABLE FOR DEADSTART FILE INSTALLATION.  *1IS* ISSUES
*         MESSAGE AND GOES ON RECALL. 
          SPACE  4,10 
**        ROUTINES USED.
* 
*         0BF - BEGIN FILE. 
*         0PI - PRESET DRIVER TO READ/WRITE DEADSTART SECTOR. 
          SPACE  4,10 
*CALL     COMPMAC 
*CALL     COMSCPS 
*CALL     COMSDSL 
*CALL     COMSLFD 
*CALL     COMSMSP 
*CALL     COMSMST 
*CALL     COMSPIM 
*CALL     COMSPRD 
*CALL     COMSSSJ 
*CALL     COMSWEI 
          SPACE  4,10 
****      DIRECT LOCATION ASSIGNMENTS.
  
  
 FS       EQU    20 - 24     FST ENTRY (5 LOCATIONS)
 RI       EQU    25 - 26     RANDOM INDEX (2 LOCATIONS) 
 MS       EQU    27          MST POINTER
 CN       EQU    30 - 34     CM WORD BUFFER (5 LOCATIONS) 
 TC       EQU    35          TRACK COUNT
 CT       EQU    36          CURRENT TRACK
 FN       EQU    40 - 44     FNT ENTRY (5 LOCATIONS)
 EQ       EQU    45          EST ORDINAL
 PA       EQU    46          PROCESSOR ADDRESS
 FA       EQU    57          FST ADDRESS
 WB       EQU    63 - 67     CM WORD BUFFER (5 LOCATIONS) 
****
          TITLE  MACRO DEFINITIONS. 
          SPACE  4,10 
**        ERROR - ERROR MACRO.
* 
*         ERROR  A
* 
*                *A* = ADDRESS OF ERROR MESSAGE.
  
  
          PURGMAC ERROR 
  
 ERROR    MACRO  A
          LDC    A
          RJM    ABT
          ENDM
          TITLE  MAIN PROGRAM.
 IOS      SPACE  4,10 
**        1IS - MAIN PROGRAM. 
  
  
          ORG    PPFW 
  
 IOS      RJM    CRQ         CHECK REQUEST
          LDM    TFCN-1,IR+2 SET PROCESSOR ADDRESS
          STD    PA 
          RJM    0,PA        EXECUTE PROCESSOR
          LDN    1           SET REQUEST COMPLETE 
          STD    IR+4 
          LDD    RA          STORE REQUEST COMPLETE 
          SHN    6
          ADN    ARGR 
          CWD    IR 
          MONITOR  DPPM      DROP PP
          LJM    PPR         EXIT TO PP RESIDENT
          SPACE  4,10 
 TFCN     BSS    0           TABLE OF FUNCTION REQUESTS 
          LOC    1
          CON    VIF         VALIDATE INSTALL FILE
          CON    IDF         INITIALIZE DEADSTART FILE
          CON    CFI         COMPLETE SDF INSTALLATION
          CON    PME         PROCESS MASS STORAGE ERROR 
  
 TFCNL    BSS    0           TABLE LENGTH 
          LOC    *O 
          TITLE  ERROR PROCESSOR / MESSAGES.
 ABT      SPACE  4,10 
**        ABT - ERROR PROCESSOR.
* 
*         ENTRY  (A) = ADDRESS OF ERROR MESSAGE.
* 
*         EXIT   TO *PPR*.
*                ERROR MESSAGE ISSUED.
*                CONTROL POINT ABORTED. 
* 
*         CALLS  DFM. 
* 
*         MACROS MONITOR. 
  
  
 ABT      CON    0           ENTRY
          RJM    DFM         ISSUE MESSAGE
          MONITOR  ABTM      ABORT CONTROL POINT
          LJM    PPR         EXIT TO PP RESIDENT
          SPACE  4,10 
*         ERROR MESSAGES. 
  
  
 EILR     DATA   C* 1IS - INCORRECT REQUEST.* 
 EISD     DATA   C* INCORRECT SDF DEVICE.*
 EAFC     DATA   C* ASSIGNED FILE CONFLICT - SDF.*
 EFNF     DATA   C* INSTALL FILE NOT FOUND.*
 EFNM     DATA   C* INSTALL FILE NOT MASS STORAGE.* 
 EMSE     DATA   C* MS ERROR ON  DEADSTART FILE.* 
 ETKL     DATA   C* TRACK LIMIT ON SDF DEVICE.* 
 EABT     DATA   C* INSTALL ABORTED.* 
          TITLE  FUNCTION PROCESSORS. 
 VIF      SPACE  4,10 
**        VIF - VALIDATE INSTALL FILE (FUNCTION 1). 
  
  
 VIF      SUBR               ENTRY/EXIT 
          LDD    RA          GET INSTALL FILE NAME FROM FET 
          SHN    6
          ADD    IR+4 
          CRD    FN 
          ADN    4           READ LIMIT WORD
          CRD    CN 
          RJM    SAF         SEARCH FOR ASSIGNED FILE 
          NJN    VIF1        IF INSTALL FILE FOUND
          ERROR  EFNF        * INSTALL FILE NOT FOUND.* 
  
 VIF1     STD    CN          SET FNT ADDRESS IN LIMIT WORD
          NFA    CN,R        READ INSTALL FILE FST INFORMATION
          ADN    FSTL 
          CRD    FS 
          CRD    T5 
          SFA    EST,T5      READ EST ENTRY 
          ADK    EQDE 
          CRD    CM 
          LDD    CM 
          SHN    21-13
          MJN    VIF3        IF INSTALL FILE ON MASS STORAGE
 VIF2     ERROR  EFNM        * INSTALL FILE NOT MASS STORAGE.*
  
 VIF3     RJM    IRA         INITIALIZE RANDOM ACCESS PROCESSORS
          LDD    FS+2 
          ZJN    VIF2        IF NO TRACK ASSIGNED 
          RJM    SEI         FIND EOI ON INSTALL FILE 
          LDD    T6          SET EOI POSITION IN FST
          STD    FS+2 
          LDD    T7 
          STD    FS+3 
          LDN    1
          STD    FS+4 
          NFA    CN,R        STORE INSTALL FILE FST INFORMATION 
          ADN    FSTL 
          CWD    FS 
          LDD    RA          STORE LIMIT WORD 
          SHN    6
          ADD    IR+4 
          ADN    4
          CWD    CN 
          LJM    VIFX        RETURN 
          TITLE  FUNCTION PROCESSORS. 
 IDF      SPACE  4,10 
**        IDF - INITIALIZE DEADSTART FILE (FUNCTION 2). 
  
  
 IDF      SUBR               ENTRY/EXIT 
          LDD    RA          GET SDF FILE NAME FROM FET 
          SHN    6
          ADD    IR+3 
          CRD    FN 
          ADN    4           READ LIMIT WORD
          CRD    CN 
          ADN    5-4         READ FET PARAMETER WORD
          CRD    WB 
          RJM    SAF         SEARCH FOR ASSIGNED FILE 
          ZJN    IDF2        IF FILE NOT FOUND
          NFA    FA,R        READ FST INFORMATION 
          CRD    CM 
          ADN    FSTL 
          CRD    FS 
          LDD    CM+4 
          LPN    77 
          LMN    SSST 
          ZJN    IDF1        IF CREATED BY *1IS* REQUEST
          ERROR  EAFC        * ASSIGNED FILE CONFLICT - SDF.* 
  
 IDF1     LDD    FS          SET EST ORDINAL
          STD    EQ 
          UJN    IDF3        CREATED BY DEADSTART REQUEST 
  
 IDF2     LDD    WB+4        CREATE DEADSTART FILE FNT
          RJM    CDF
          LDD    EQ          SET EST ORDINAL
 IDF3     STD    T5 
          LDD    FA          SET FNT ADDRESS IN LIMIT WORD
          STD    CN 
          LDD    RA          STORE LIMIT WORD 
          SHN    6
          ADD    IR+3 
          ADN    4
          CWD    CN 
          RJM    SGI         SET GLOBAL INTERLOCK 
          ZJN    IDF4        IF INTERLOCK SET 
          LJM    RCL         RECALL PP
  
 IDF4     LDD    CN          CHECK PRESENSE OF SDF
          LPC    MGDSF
          ZJN    IDF5        IF NO SDF ON DEVICE
          LDN    0           READ DEADSTART SECTOR
          RJM    RDD
          LDN    ZERL        CLEAR SDF INDICATORS 
          CRM    BFMS+OSBP,ON 
          LDC    BFMS+WLSF   REWRITE DEADSTART SECTOR 
          RJM    WMS
          ENDMS              RELEASE CHANNEL
          CMSTF  GDSF 
          LDM    BFMS+OSBP+5 EXTRACT FIRST TRACK OF SDF 
          STD    CM+2 
          SHN    0-13 
          ZJN    IDF5        IF GARBAGE IN DEADSTART SECTOR 
          LDD    T5 
          LMC    4000        SET CHECKPOINT REQUEST 
          STD    CM+1 
          MONITOR  DTKM      RELEASE SDF TRACK CHAIN
 IDF5     RJM    IRA         INITIALIZE RANDOM ACCESS PROCESSORS
          LDD    RA          GET NEW DEADSTART FILE LENGTH
          SHN    6
          ADD    IR+4        READ INSTALL FET PARAMETER WORD
          ADN    5
          CRD    CN 
          RJM    DTC         DETERMINE TRACK COUNT
          LDN    ZERL        REQUEST TRACK CHAIN FOR DEADSTART FILE 
          CRD    CM 
          LDD    T5 
          STD    CM+1 
          LCN    1           SELECT RESERVE ALL TRACKS
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          MONITOR  RTCM 
          LDD    CM+4        SET FIRST TRACK
          STD    T6 
          STD    CT 
          STD    T4 
          ZJN    IDF6        IF NO TRACKS AVAILABLE 
          RJM    SEI         COUNT TRACKS IN CHAIN
          STD    T3          SAVE TRACK COUNT 
          SBD    TC 
          PJN    IDF7        IF ENOUGH TRACKS IN CHAIN
          LDD    T5          DROP TRACK CHAIN 
          STD    CM+1 
          LDD    CT 
          STD    CM+2 
          MONITOR  DTKM 
 IDF6     RJM    CFE         CLEAR FNT/FST ENTRY
          RJM    CGI         CLEAR GLOBAL INTERLOCK 
          ERROR  ETKL        * TRACK LIMIT ON SDF DEVICE.*
  
 IDF7     ZJN    IDF9        IF EXACTLY ENOUGH TRACKS 
 IDF8     LDD    T4          SAVE CURRENT TRACK 
          STD    T6 
          RJM    SNT         SET NEXT TRACK 
          STD    T4 
          SOD    T3          DECREMENT TRACK COUNT
          LMD    TC 
          NJN    IDF8        IF NOT AT REQUIRED TRACK COUNT 
  
*         DELINK FIRST PART OF TRACK CHAIN. 
  
          STD    CM+3 
          LDD    CT          SET FIRST TRACK
          STD    CM+2 
          LDD    T6          SET LAST TRACK TO BE DROPPED 
          STD    CM+4 
          LDD    T5 
          STD    CM+1 
          MONITOR  DLKM      DELINK FRONT OF TRACK CHAIN
 IDF9     LDD    T4          SET FIRST TRACK IN FST 
          STD    FS+1 
          STD    FS+2        SET CURRENT TRACK
          LDN    FSMS        SET FIRST SECTOR 
          STD    FS+3 
          LDN    1
          STD    FS+4 
          LDD    EQ          SET EST ORDINAL
          STD    FS 
          NFA    FA,R        STORE FST INFORMATION
          ADN    FSTL 
          CWD    FS 
          LJM    IDFX        RETURN 
          TITLE  FUNCTION PROCESSORS. 
 CFI      SPACE  4,10 
**        CFI - COMPLETE SDF INSTALLATION (FUNCTION 3). 
  
  
 CFI      SUBR               ENTRY/EXIT 
          LDD    RA          READ SDF LIMIT WORD
          SHN    6
          ADD    IR+3 
          ADN    4
          CRD    CM 
          SBD    IR+3        READ INSTALL FILE PARAMETER WORD 
          ADN    5-4
          ADD    IR+4 
          CRD    RI          (RI - RI+1) = RANDOM ADDRESS OF *OSB*
          LDD    CM          SET SDF FNT ADDRESS
          STD    FA 
          NFA    CM,R        READ FNT ENTRY 
          CRD    FN 
          ADN    FSTL 
          CRD    FS 
          LCN    LOFT-LIFT   CHANGE FILE TYPE FOR SYSTEM SECTOR 
          SHN    6
          RAD    FN+4 
          LDC    BFMS+502-FTSS-1
          STD    T2 
 CFI1     LDN    0           CLEAR SYSTEM SECTOR BUFFER 
          STM    FTSS+1,T2
          SOD    T2 
          NJN    CFI1        LOOP TO START OF BUFFER
          LDD    FS          SET EST ORDINAL
          STD    T5 
          STD    CM+1 
          SFA    EST         READ EST ENTRY 
          ADK    EQDE 
          CRD    WB 
          LDD    FS+1        SET FIRST TRACK
          STD    CM+2 
          LDN    SPFS        PRESERVE SDF TRACK CHAIN 
          STD    CM+3 
          MONITOR  STBM 
          RJM    IRA         INITIALIZE RANDOM ACCESS PROCESSORS
          NFA    FA,R        STORE FNT ENTRY WITH FILE TYPE *LIFT*
          CWD    FN 
          SETMS  IO,RW
          LDD    FS+2        SET EOI TRACK
          STD    T6 
          LDD    FS+3        SET EOI SECTOR 
          STD    T7 
          RJM    WEI         WRITE EOI
          SETMS  POSITION 
          LDD    FS+1        SET FIRST TRACK
          STD    T6 
          RJM    WSS         WRITE SYSTEM SECTOR
          ENDMS              RELEASE CHANNEL
          LDD    T5          SET EOI IN TRT 
          STD    CM+1 
          LDD    FS+2 
          LPC    3777 
          STD    CM+2 
          LDD    FS+3 
          STD    CM+3 
          MONITOR  DTKM 
          LDD    WB+4        GET ALGORITHM INDEX FROM MST 
          SHN    3
          ADN    DILL 
          CRD    WB 
          ADN    DDLL-DILL   GET UNIT NUMBER
          CRD    FN 
          LDD    WB+4        SET ALGORITHM INDEX IN PARAMETER BLOCK 
          LPN    77 
          LMD    HN          ADD SEEK FUNCTION (1 TO 1 INTERLACE) 
          STD    CN+3 
          LPN    77 
          SBN    AIHT+1 
          PJN    CFI2        IF FULL TRACK DEVICE 
          LDD    HN          CHANGE SEEK FUNCTION (2 TO 1 INTERLACE)
          RAD    CN+3 
 CFI2     RJM    CRA         CONVERT RANDOM ADDRESS OF *OSB*
          LDD    FN+4        SET UNIT NUMBER IN MONITOR REQUEST 
          LPN    77 
          STD    T3 
          LDD    T6          SET TRACK CONTAINING *OSB* 
          STD    CN+4 
          LDD    MA          CONVERT LOGICAL TO PHYSICAL ADDRESS
          CWD    T4 
          MONITOR  LDAM 
          LDD    MA          READ PHYSICAL ADDRESS
          ADN    1
          CRD    CN-2 
          LDD    CN+3 
          LPN    77 
          LMN    AIDC 
          NJN    CFI3        IF NOT 895 DEVICE
          LDC    2000        SET 895 DEADSTART READ FLAG
          RAD    CN+1 
          AOM    CFIA        ADVANCE SHIFTS IF 895
          STM    CFIB 
 CFI3     AOD    T7          SET ADDRESS OF *DIO* 
          LMM    SLM
          NJN    CFI4        IF NOT TRACK SWITCH
          STD    T7 
          RJM    SNT         SET NEXT TRACK 
          STD    T6 
 CFI4     LDD    MA          CONVERT LOGICAL TO PHYSICAL ADDRESS
          CWD    T4 
          MONITOR  LDAM 
*         LDN    0
          STD    T7 
          LDD    MA          READ PHYSICAL ADDRESS
          ADN    1
          CRD    CM 
          LDD    CM+2        SET CYLINDER 
          STD    WB+1 
          LDD    CM+3        PACK TRACK AND SECTOR
 CFIA     SHN    6
*         SHN    7           (IF 895) 
          LMD    CM+4 
          STD    WB+2 
          RJM    SNT         SET NEXT TRACK 
          STD    T6 
          LDD    MA          CONVERT ADDRESS OF NEXT TRACK SWITCH 
          CWD    T4 
          MONITOR  LDAM 
          LDD    MA          READ PHYSICAL ADDRESS
          ADN    1
          CRD    CM 
          LDD    CM+2        SET CYLINDER 
          STD    WB+3 
          LDD    CM+3        PACK TRACK AND SECTOR
 CFIB     SHN    6
*         SHN    7           (IF 895) 
          LMD    CM+4 
          STD    WB+4 
          LDD    FS+1        READ DEADSTART SECTOR
          STD    WB 
          RJM    RDD
          LDD    MA          MOVE SDF PARAMETERS TO DEADSTART SECTOR
          CWD    CN 
          CRM    BFMS+OSBP,ON 
          CWD    WB 
          CRM    BFMS+OSBP+5,ON 
          LDC    BFMS+WLSF   REWRITE DEADSTART SECTOR 
          RJM    WMS
          ENDMS              RELEASE CHANNEL
          RJM    CFE         CLEAR FNT/FST ENTRY
          SMSTF  GDSF        SET DEADSTART FILE PRESENT IN MST
          SMSTF  LCKP        SET CHECKPOINT REQUEST 
          RJM    CGI         CLEAR GLOBAL INTERLOCK 
          LJM    CFIX        RETURN 
          TITLE  FUNCTION PROCESSORS. 
 PME      SPACE  4,10 
**        PME - PROCESS MASS STORAGE ERROR (FUNCTION 4).
  
  
 PME      SUBR               ENTRY/EXIT 
          LDD    RA 
          SHN    6
          CRD    WB 
          ADD    IR+3        GET SDF LIMIT WORD 
          ADN    4
          CRD    CN 
          LDD    CN          SET FNT ADDRESS
          STD    FA 
          ZJN    PME1        IF NO FNT ENTRY
          NFA    CN,R        READ FST INFORMATION 
          ADN    FSTL 
          CRD    FS 
          RJM    CFE         CLEAR FNT/FST ENTRY
          LDD    FS          SET EST ORDINAL
          STD    T5 
          STD    CM+1 
          LDD    FS+1        SET FIRST TRACK
          ZJN    PME1        IF TRACK CHAIN NOT ASSIGNED
          STD    CM+2 
          MONITOR  DTKM      DROP TRACK CHAIN 
          RJM    CGI         CLEAR GLOBAL INTERLOCK 
 PME1     LDD    WB+2        CHECK ERROR CONDITION
          LPN    77 
          NJN    PME2        IF NOT MASS STORAGE ERROR
          ERROR  EMSE        * MS ERROR ON DEADSTART FILE.* 
  
 PME2     ERROR  EABT        * INSTALL ABORTED.*
          TITLE  SUBROUTINES. 
 CDF      SPACE  4,15 
**        CDF - CREATE DEADSTART FILE.
* 
*         ENTRY  (A) = EST ORDINAL OF RMS DEADSTART DEVICE. 
*                (FN - FN+3) = FILE NAME. 
* 
*         EXIT   (EQ) = EST ORDINAL.
*                (FA) = FNT ADDRESS.
* 
*         USES   FS, T7, CM - CM+4. 
* 
*         CALLS  *0BF*. 
* 
*         MACROS ERROR, EXECUTE, NFA. 
  
  
 CDF      SUBR               ENTRY/EXIT 
          STD    EQ          SAVE EST ORDINAL 
          LDN    ESTP        CHECK EST ORDINAL
          CRD    CM 
          LDD    EQ 
          SBD    CM+3 
          PJN    CDF1        IF INCORRECT EQUIPMENT SPECIFIED 
          SFA    EST,EQ 
          ADK    EQDE 
          CRD    CM          READ EST ENTRY 
          LDD    CM          CHECK EQUIPMENT STATUS 
          LPC    4312 
          LMC    4210 
          NJN    CDF1        IF NOT ON/AVAILABLE/LDAM/MS DEVICE 
          LDD    CM+1 
          SHN    21-5 
          PJN    CDF2        IF NOT A CONCURRENT CHANNEL
          LDD    CM+2 
          ZJN    CDF1        IF SINGLE ACCESS 
          SHN    21-5 
          PJN    CDF2        IF BOTH CHANNELS ARE NOT CONCURRENT
 CDF1     ERROR  EISD        * INCORRECT SDF DEVICE.* 
  
 CDF2     LDD    CM+3        CHECK DEVICE TYPE
          LMC    2RDB 
          ZJN    CDF1        IF *DB* DEVICE 
          LDD    CM+4        READ MST 
          SHN    3
          ADN    ACGL 
          CRD    T7 
          ADN    PFGL-ACGL
          CRD    CM 
          LDD    T7          CHECK CTI PACKAGE PRESENT
          LPC    MGCTI
          ZJN    CDF1        IF CTI PACKAGE NOT INSTALLED 
          LDD    CM+4        CHECK DEVICE STATUS
          LPN    77 
          NJN    CDF1        IF MULTI-UNIT DEVICE 
          STM    OVL-1       SELECT NO RETURN WITHOUT FILE CREATED
          LDN    NEEQ        SET NO MS ALLOCATION 
          STD    FS 
          EXECUTE  0BF,OVL   CREATE FNT/FST ENTRY 
          LDD    EQ 
          STD    FS 
          NFA    FA,R        STORE FST INFORMATION
          ADN    FSTL 
          CWD    FS 
          LJM    CDFX        RETURN 
 CFE      SPACE  4,10 
**        CFE - CLEAR FNT/FST ENTRY.
* 
*         ENTRY  (FA) = FNT ADDRESS.
* 
*         EXIT   (CM - CM+4) = 0. 
*                FET FNT ADDRESS CLEARED. 
* 
*         MACROS MONITOR. 
  
  
 CFE      SUBR               ENTRY/EXIT 
          LDN    ZERL 
          CRD    CM 
          LDD    FA          SET RELATIVE FNT ADDRESS 
          STD    CM+4 
          LDN    DLFS        DELETE LOCAL FNT ENTRY 
          STD    CM+1 
          MONITOR  PLFM 
          LDD    RA          CLEAR FNT ADDRESS IN FET 
          SHN    6
          ADD    IR+3 
          ADN    4
          CRD    CM 
          LDN    0
          STD    CM 
          LDD    RA 
          SHN    6
          ADD    IR+3 
          ADN    4
          CWD    CM 
          LDN    ZERL 
          CRD    CM 
          UJN    CFEX        RETURN 
 CGI      SPACE  4,10 
**        CGI - CLEAR GLOBAL INTERLOCK. 
* 
*         ENTRY  (T5) = EST ORDINAL.
* 
*         EXIT   INTERLOCK CLEARED. 
*                ACTIVE USER COUNT DECREMENTED. 
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 CGI      SUBR               ENTRY/EXIT 
          LDD    T5 
          STD    CM+1 
          LDN    CIIS        CLEAR INSTALL INTERLOCK
          STD    CM+3 
          MONITOR  STBM 
          LDC    0
 CGIA     EQU    *-1
          NJN    CGIX        IF USER COUNT NOT INCREMENTED
          LDD    T5 
          STD    CM+1 
          LDN    DUCS        DECREMENT ACTIVE USER COUNT
          STD    CM+3 
          MONITOR  SMDM 
          UJN    CGIX        RETURN 
 DTC      SPACE  4,10 
**        DTC - DETERMINE TRACK COUNT.
* 
*         ENTRY  (SLM) = SECTOR LIMIT.
*                (CN+3 - CN+4) = FILE LENGTH IN SECTORS.
* 
*         EXIT   (TC) = TRACK COUNT.
  
  
 DTC      SUBR               ENTRY/EXIT 
          LDN    0           INITIALIZE COUNTER 
          STD    TC 
 DTC1     AOD    TC          ADVANCE TRACK COUNT
          LDD    CN+4        DECREMENT SECTOR COUNT 
          SBM    SLM
          STD    CN+4 
          PJN    DTC1        IF NO UNDERFLOW
          AOD    CN+4 
          SOD    CN+3 
          PJN    DTC1        IF COUNT NOT COMPLETE
          UJN    DTCX        RETURN 
 RCL      SPACE  4,10 
**        RCL - RECALL PP.
* 
*         EXIT   TO *PPR*.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 RCL      BSS    0
          LDD    CP          STORE CONTROL POINT MESSAGE
          ADN    MS2W 
          CWM    RCLA,TR
          LDN    ZERL 
          CRD    CM 
          LDD    MA          STORE PP RECALL REQUEST
          CWD    IR 
          MONITOR  RECM 
          LJM    PPR         EXIT TO PP RESIDENT
  
 RCLA     DATA   C*$WAITING - GLOBAL INTERLOCK.*
 RDD      SPACE  4,10 
**        RDD - READ DEADSTART SECTOR.
* 
*         ENTRY  (A) = FIRST TRACK OF SDF.
*                (T5) = EST ORDINAL.
*                (FA) = FST ADDRESS.
* 
*         EXIT   (T4) = CHANNEL (RESERVED). 
*                (T6) = LOGICAL TRACK OF DEADSTART SECTOR.
*                (T7) = LOGICAL SECTOR OF DEADSTART SECTOR. 
*                (CT) = FIRST TRACK OF SDF. 
*                (BFMS) = DEADSTART SECTOR. 
* 
*         USES   CM - CM+4. 
* 
*         CALLS  CFE, CGI, *0PI*. 
* 
*         MACROS ERROR, EXECUTE, MONITOR. 
  
  
 RDD      SUBR               ENTRY/EXIT 
          STD    CT 
          LDD    T5          SET EST ORDINAL FOR *0PI*
          LMC    4000        OPTION TO READ DEADSTART SECTOR
          STM    OVL-1
          EXECUTE  0PI,OVL
          ZJN    RDDX        IF A VALID DEADSTART SECTOR FOUND
 RDD1     RJM    CFE         CLEAR FNT ENTRY
          LDD    CT 
          ZJN    RDD2        IF NO TRACK CHAIN ASSIGNED 
          STD    CM+2 
          LDD    T5 
          LMC    4000        SET CHECKPOINT REQUEST 
          STD    CM+1 
          MONITOR  DTKM      RELEASE SDF TRACK CHAIN
 RDD2     RJM    CGI         CLEAR GLOBAL INTERLOCK 
          ERROR  EMSE        * MS ERROR ON DEADSTART FILE.* 
 SGI      SPACE  4,10 
**        SGI - SET GLOBAL INTERLOCK. 
* 
*         ENTRY  (T5) = EST ORDINAL.
* 
*         EXIT   (A) = 0 IF INTERLOCK SET.
*                (MP) = MST POINTER.
*                (CN - CN+4) = ACGL WORD OF MST.
* 
*         USES   CM - CM+4, WB - WB+4.
* 
*         CALLS  CGI. 
* 
*         MACROS MONITOR. 
  
  
 SGI      SUBR               ENTRY/EXIT 
          LDD    T5          READ EST ENTRY 
          STD    CM+1 
          SFA    EST
          ADK    EQDE 
          CRD    WB 
          LDD    WB+4        SET MST POINTER
          STD    MS 
          SHN    3           READ MST STATUS WORD 
          ADN    STLL 
          CRD    WB 
          LDD    WB          CHECK DEVICE STATUS
          LPN    MLUNL
          NJN    SGIX        IF UNLOAD REQUESTED
          LDN    SIIS        SET INSTALL INTERLOCK
          STD    CM+3 
          MONITOR  STBM 
          LDD    CM+1 
          LPC    200
          NJN    SGIX        IF OS INSTALLATION IN PROGRESS 
          LDD    T5 
          STD    CM+1 
          LDN    IUCS 
          STD    CM+3 
          MONITOR  SMDM 
          LDD    CM+1 
          STM    CGIA 
          NJN    SGI1        IF USER COUNT NOT INCREMENTED
          LDD    MS 
          SHN    3
          ADN    STLL 
          CRD    WB 
          SBN    STLL-ACGL   FETCH DEADSTART FILE STATUS
          CRD    CN 
          LDD    WB          CHECK FOR UNLOAD NOW REQUESTED 
          LPN    MLUNL
          ZJN    SGI2        IF NOT LOCAL UNLOAD REQUEST
 SGI1     RJM    CGI
          LDN    1
 SGI2     LJM    SGIX        RETURN 
 WMS      SPACE  4,15 
**        WMS - WRITE MASS STORAGE. 
* 
*         ENTRY  (A) = BUFFER ADDRESS.
*                (CT) = FIRST TRACK OF SDF. 
*                (T5 - T7) = MASS STORAGE PARAMETERS. 
*                DRIVER PRESET. 
* 
*         ERROR  TO *RDD1* IF MASS STORAGE ERROR. 
* 
*         USES   T3, CM - CM+4. 
* 
*         CALLS  WDS. 
* 
*         MACROS PAUSE. 
  
  
 WMS3     LDD    CP          FETCH CONTROL POINT STATUS WORD
          ADN    STSW 
          CRD    CM 
          LDD    CM+1        CHECK ERROR FLAG 
          LMN    ORET 
          ZJN    WMS2        IF OPERATOR OVERRIDE 
          LDD    T3 
          LMK    WLSF        RETRY WRITE
          RJM    WDS
          MJN    WMS1        IF WRITE ERRORS
  
 WMS      SUBR               ENTRY/EXIT 
          STD    T3 
          RJM    WDS
          PJN    WMSX        IF WRITE COMPLETED 
 WMS1     LPN    77          CHECK MASS STORAGE ERROR CODE
          LMN    NRDE 
          ZJN    WMS3        IF NOT READY 
 WMS2     LJM    RDD1        ABORT
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPSAF 
*CALL     COMPTGB 
*CALL     COMPTLB 
          QUAL   WMS
 QUAL$    EQU    1
 WDS      EQU    WMS
*CALL     COMPWEI 
*CALL     COMPWSS 
          QUAL   *
 WEI      EQU    /WMS/WEI 
 WSS      EQU    /WMS/WSS 
 IRA$     EQU    1           RANDOM ACCESS PROCESSORS INITIALIZED 
*CALL     COMPCRA 
*CALL     COMPSEI 
*CALL     COMPSNT 
*CALL     COMPIRA 
          SPACE  4,10 
 OVL      EQU    *+1         LOAD ADDRESS FOR ZERO LEVEL OVERLAYS 
          ERRPL  OVL-BFMS    OVERFLOW INTO SYSTEM SECTOR BUFFER 
 CRQ      SPACE  4,10 
**        CRQ - CHECK REQUEST.
* 
*         ENTRY  (IR+2) = FUNCTION REQUEST. 
* 
*         USES   CN - CN+4, FS - FS+4.
* 
*         MACROS ERROR. 
  
  
 CRQ      SUBR               ENTRY/EXIT 
          LDD    IR+2 
          ZJN    CRQ1        IF INCORRECT FUNCTION CODE 
          SBN    TFCNL
          PJN    CRQ1        IF INCORRECT FUNCTION CODE 
          LDD    CP          CHECK CP PARAMETERS
          ADK    SEPW 
          CRD    CN 
          ADK    JSCW-SEPW   READ SECURITY WORD 
          CRD    FS 
          LDD    CN          CHECK CALLING ROUTINE
          LPN    4
          ZJN    CRQ1        IF NOT CALLED BY SPECIAL SYSTEM JOB
          LDD    CN+3 
          LPN    37 
          ADD    CN+4 
          ZJN    CRQ1        IF NO SSJ PARAMETER BLOCK
          LDK    SSML        READ SYSTEM SECURITY STATUS
          CRD    CN 
          LDD    CN 
          LPN    7
          ZJN    CRQX        IF UNSECURED SYSTEM
          LDD    FS 
          SHN    21-13
          MJN    CRQX        IF SECURITY ADMINISTRATOR
 CRQ1     ERROR  EILR        * 1IS - INCORRECT REQUEST.*
  
          END 
