IMS 
          IDENT  IMS,/IMS/IMS 
          PERIPH
          BASE   MIXED
          SST 
*COMMENT  IMS - INITIALIZE MASS STORAGE.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  IMS - INITIALIZE MASS STORAGE. 
          SPACE  4
***       IMS - INITIALIZE MASS STORAGE.
*         S. L. BETH         73/01/31.
*         T. H. MACFARLAND.  74/04/25.
*         P. D. HAAS.        87/03/31.
          SPACE  4
***       IMS MAY BE CALLED TO DO THE FOLLOWING 
* 
* 
*         FUNCTION 1         INITIALIZE PERMANENT FILES.
*                            RELEASES ALL PF TRACKS AND REALOCATES
*                            THE CATALOG, PERMITS AND DATA TRACKS.
* 
*         FUNCTION 2         EDIT DIRECT ACCESS FILES.
*                            RELEASES DIRECT ACCESS FILES WHICH 
*                            HAVE CATALOGS ON THE SPECIFIED DEVICE. 
* 
*         FUNCTION 3         SET/CLEAR FLAWS ON THE EQUIPMENT.
*                            PROCESS FLAW LIST AND ENTER IN TRT.
* 
*         FUNCTION 4         CHECK SHARED DEVICE STATUS.
*                            CHECK IF SHARED DEVICE IS UNLOADED 
*                            IN OTHER MACHINES. 
* 
*         FUNCTION 5         INITIALIZE LOCAL AREAS.
*                            RELEASE SPACE WHICH IS PRESERVED BY
*                            INACTIVE LOCAL AREAS.
* 
*         FUNCTION 6         ALTER MST DATA.
*                            ENTER NEW DEVICE CHARACTERISTICS IN MST. 
* 
*         FUNCTION 7         CLEAR INITIALIZE REQUESTS. 
*                            CLEARS ALL INITIALIZE REQUESTS ON
*                            THE SPECIFIED DEVICE.
* 
*         FUNCTION 10        INITIALIZE INACTIVE DAYFILES.
*                            RELEASE SPACE ON SPECIFIED INACTIVE
*                            DAYFILE. 
* 
*         FUNCTION 11        CLEAR CMS INTERLOCK. 
*                            CLEAR DATI INTERLOCK AND BYTE 2 OF MMFL. 
* 
*         FUNCTION 12        SET/CLEAR DEVICE INTERLOCK ON AN 
*                            INDEPENDENT SHARED DEVICE. 
* 
*                (THE CALLING JOB MUST HAVE SYSTEM PERMISSION)
* 
***       CALL FORMATS
* 
* 
*         INITIALIZE         18/IMS,6/20,18/100,18/EQ 
* 
*         EDIT DA FILES      18/IMS,6/20,18/200,18/PARAM
* 
*                PARAM       12/MASK,12/EQ,36/0 
* 
*         SET FLAWS          18/IMS,6/20,18/300,18/PARAM
* 
*                PARAM       12/TYPE,12/0,12/EQ,12/0,12/LOGICAL TRACK 
* 
*                            TYPE  0 = END TABLE
*                                  1 = SET FLAW 
*                                  2 = CLEAR FLAW 
* 
*         CHECK STATUS       18/IMS,6/20,18/400,18/ADDRESS
* 
*                ADDRESS     12/EQ,48/0 
* 
*         INITIALIZE LOCAL   18/IMS,6/20,18/500,18/EQUIPMENT
* 
*         UPDATE MST         18/IMS,6/20,18/600,18/LIST 
* 
*         CLEAR INI REQ      18/IMS,6/20,18/700,18/EQ 
* 
**        INITIALIZE DAYFILES 18/IMS,6/20,18/100N,18/EQ 
* 
*                N = 0 INITIALIZE SYSTEM DAYFILE. 
*                  = 1 INITIALIZE ACCOUNT FILE. 
*                  = 2 INITIALIZE ERRLOG FILE.
*                  = 3 INITIALIZE MAINTENANCE LOG FILE. 
* 
*         CLEAR INTERLOCK    18/IMS,6/20,18/1100,18/0 
* 
*         INTERLOCK DEVICE   18/IMS,6/20,18/1200,18/ADDRESS 
*                ADDRESS     12/EQ,47/0,1/F 
          SPACE  4
***       ENTRY CONDITIONS. 
* 
*         (IR+2) = FUNCTION CODE. 
*         (IR+3) = PARAMETER ADDRESS IF REQUIRED
*         (IR+4) = PARAMETER ADDRESS IF REQUIRED
          SPACE  4
***       DAYFILE MESSAGES. 
* 
*         * EQXXX, FILE ACTIVE - FILENAME.* 
* 
*         * EQXXX, FILE BUSY   - FILENAME.* 
* 
*         * EQXXX, FLAWING INCOMPLETE.* 
* 
*         * EQXXX, INITIALIZED - FILENAME.* 
* 
*         * EQXXX, LABEL READ ERROR.* 
* 
*         * EQXXX, LOCAL AREAS INITIALIZED.*
* 
*         * EQXXX, LOCAL AREA SECTOR RESET.*
* 
*         * EQXXX, NO INACTIVE DAYFILES FOUND.* 
* 
*         * EQXXX, PF INITIALIZE COMPLETE.* 
* 
*         * EQXXX, PROTECTED QUEUES IGNORED.* 
* 
*         * EQXXX, TKYYYY - TRACK FLAWED BY IMS.
* 
*         * EQXXX, YY FLAWS NOT PROCESSED. (WITH LIST).*
* 
*         * EQXXX, YY TRACKS FLAWED.* 
* 
*         * ERROR ON LINK DEVICE.*
* 
*         * INCORRECT IMS REQUEST.* 
* 
*         * IMS ABORTED.* 
* 
*         * LABEL TRACK CONFLICT.*
          SPACE  4
***       ACCOUNT FILE MESSAGES.
* 
*         *ADDI, XXX, FFFFFFF, DD.* = EST ORDINAL XXX WITH FAMILY NAME
*         FFFFFFF AND DEVICE NUMBER DD HAS BEEN INITIALIZED.
* 
*         *ADPI, XXX, PPPPPPP, UUUUUUU.* = EST ORDINAL XXX WITH PACKNAME
*         PPPPPPP HAS BEEN INITIALIZED.  IF PRESENT, UUUUUUU INDICATES
*         THAT THE PACK IS A PRIVATE PACK BELONGING TO THAT USER. 
          SPACE  4
***       ERRLOG MESSAGES.
* 
*         * EQXXX, LOCAL AREA SECTOR ERROR.*
* 
*         * EQXXX, TKYYYY, SYSTEM SECTOR ERROR.*
* 
*         * EQXXX, TKYYYY - TRACK FLAWED BY IMS.
* 
*         * EQXXX, TKYYYY - VERIFICATION ERRORS.
* 
*         * EQXXX, YY TRACKS FLAWED.* 
* 
*         * EQXXX, YY FLAWS NOT PROCESSED. (WITH LIST).*
* 
*         * IMS ABORTED.* 
          SPACE  4
***       CONTROL POINT MESSAGES. 
*         * EQXXX, BUSY ON MID YY.* = SHARED EST ORDINAL XXX IS NOT 
*         UNLOADED ON MAINFRAME WITH MACHINE ID YY. 
* 
*         * EQXXX, INTERLOCKED BY MID  YY.* = INDEPENDENT SHARED EST
*         ORDINAL XXX IS INTERLOCKED FOR INITIALIZATION BY THE MAINFRAME
*         WITH MACHINE ID YY. 
* 
*         *MSI ABORT.* = *MSI* ABORTED.  IF THIS OCCURRED DURING THE
*         DEADSTART SEQUENCING JOB, JOB SCHEDULING WILL REMAIN DISABLED.
* 
*         *READING TRACK-XXXX* = *IMS* IS READING THE SPECIFIED TRACK.
* 
*         *WAITING - RECOVERY INTERLOCK.* = *IMS* IS WAITING FOR THE
*         DAT INTERLOCK TO BECOME FREE, TO ENSURE THAT *CMS* IS NOT 
*         IN ANY OTHER MACHINE IN THE MMF COMPLEX.
          SPACE  4
**        ROUTINES USED.
* 
*         0PI - PRESET DRIVER TO READ/WRITE DEADSTART SECTOR. 
*         0TI - SET TRACK FLAWS IN TRT. 
*         1CK - CHECKPOINT DEVICE.
          SPACE  4
*CALL     COMPMAC 
*CALL     COMSCPS 
*CALL     COMSDSL 
          QUAL   EVENT
*CALL     COMSEVT 
          QUAL   *
*CALL     COMSHIO 
*CALL     COMSIOQ 
*CALL     COMSLSD 
*CALL     COMSMMF 
*CALL     COMSMSC 
*CALL     COMSMSI 
*CALL     COMSMSP 
*CALL     COMSMST 
*CALL     COMSPFM 
*CALL     COMSPIM 
*CALL     COMSSSD 
*CALL     COMSWEI 
          SPACE  4
****      DIRECT LOCATION ASSIGNMENTS.
  
  
 T9       EQU    17          SCRATCH CELL 
 CN       EQU    20 - 24     CM WORD BUFFER (5 LOCATIONS) 
 TI       EQU    25          TEMP INDEX 
 LD       EQU    26          EST ORDINAL OF LINK DEVICE 
 MI       EQU    27          MACHINE INDEX
 ES       EQU    30 - 34     EST ENTRY (5 LOCATIONS)
 LT       EQU    35          LABEL TRACK
 TA       EQU    36          TEMP COUNTER 
 TL       EQU    37          TRT LENGTH 
 FN       EQU    40 - 44     CM WORD BUFFER (5 WORDS).
 DI       EQU    45          DAT INDEX
 BY       EQU    46          BYTE COUNT 
 DE       EQU    47          DAT ENTRY COUNT
 AI       EQU    57          ALGORITHM INDEX
 WB       EQU    60 - 64     CM WORD BUFFER (5 LOCATIONS) 
 PF       EQU    65          PRESERVED FILE TRACK INTERLOCK STATUS
 CA       EQU    66 - 67     CENTRAL BUFFER (2 LOCATIONS) 
****
          SPACE  4,10 
*         ASSEMBLY CONSTANTS. 
  
  
 BUF      EQU    BFMS-502    ALTERNATE SECTOR BUFFER
 FPPA     EQU    BUF+5       FLAW PROCESSOR PARAMETER ADDRESS 
 FPLA     EQU    FPPA+1      FLAW PROCESSOR LOAD ADDRESS
 VERC     EQU    2           VERIFICATION ERROR RETRY COUNT 
          SPACE  4
*         EQUATES FOR FUNCTION 6 PARAMETER BUFFER 
  
  
 PMES     EQU    5*0         EST ENTRY
 PMPF     EQU    5*1         PFGL WORD OF MST 
 PMPU     EQU    5*2         PUGL WORD OF MST 
 PMMD     EQU    5*3         MDGL WORD OF MST 
 PMNC     EQU    5*4+0       NUMBER OF CATALOG TRACKS 
 PMEQ     EQU    5*4+1       EST ORDINAL
 PMAI     EQU    5*4+2       ALGORITHM INDEX
 PMCI     EQU    5*4+3       CLEAR IN USE AS CHAINED DEVICE 
 PMNE     EQU    5*4+4       NEXT EST ORDINAL IN CHAIN
 PMAL     EQU    5*5         EQUIPMENT ALLOCATION *DDLL*
 PMRP     EQU    5*6         REPLY WORD 
 PMMSL    EQU    7           LENGTH OF PARAMETER BLOCK
          SPACE  4
*         FUNCTION EQUATES FOR SUBROUTINE *UEC*.
  
  
 UPGA     EQU    1           UPDATE GLOBAL AREA 
 UPDA     EQU    2           UPDATE DAT INFORMATION 
 RDDA     EQU    4           READ DAT INFORMATION 
          TITLE  MACRO DEFINITIONS. 
 ENTRY    SPACE  4,10 
**        ENTRY - DEFINE OVERLAY ENTRY POINT. 
* 
* NAME    ENTRY 
*         NAME = NAME OF ENTRY ADDRESS. 
  
  
          PURGMAC ENTRY 
  
          MACRO  ENTRY,NAME 
          MACREF ENTRY
          QUAL
          IF     MIC,.M 
 NAME     EQU    *+1R".M"*10000B
          ELSE   1
 NAME     EQU    *
          QUAL   *
          ENDM
 FCN      SPACE  4,10 
**        FCN - DEFINE FUNCTION PROCESSOR.
* 
*TBLN     FCN 
*         FCN    CODE,NAME
* 
*         ENTRY  *TBLN* = TABLE NAME (FIRST ENTRY ONLY).
*                *CODE* = FUNCTION CODE.
*                *NAME* = FUNCTION PROCESSING ROUTINE NAME. 
  
  
          MACRO  FCN,T,C,N
          IFC    EQ,*N**
 T        INDEX  C*2
          ELSE   2
          INDEX  C*2,N-N/10000B*10000B
          CON    N/10000B 
          ENDM
 OVERLAY  SPACE  4,10 
**        OVERLAY - DEFINE SECONDARY OVERLAY(S).
* 
*         OVERLAY (TEXT),PRS
*         ENTRY  *TEXT* = TEXT OF SUBTITLE. 
*                *PRS* = NAME OF OPTIONAL PRESET ROUTINE. 
  
  
 .N       SET    0
 OVLB     MICRO  1,, 4D      OVERLAY NAME 
  
  
          PURGMAC OVERLAY 
  
 OVERLAY  MACRO  TEXT,PRS 
          MACREF OVERLAY
          QUAL
 .N       SET    .N+1 
 .M       MICRO  .N,1, 0123456789 
 .O       MICRO  1,3, "OVLB"".M"
          QUAL   IMS
          TTL    IMS/".O" - TEXT
          TITLE 
          IDENT  ".O",OVLA   TEXT 
*COMMENT  IMS - TEXT
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          ORG    OVLA 
 OV".M"_X LJM    *           ENTRY/EXIT 
          IFC    NE,*PRS**,1
          RJM    PRS
          UJN    OV".M"_X    OVERLAY EXIT ADDRESS 
          ENDM
 TBLM     SPACE  4,10 
**        TBLM = GENERATE TABLE OF ALTERNATE LABEL SECTORS. 
* 
*         TBLM   EQ 
*                EQ = MASS STORAGE EQUIPMENT MNEMONIC.
  
  
          PURGMAC  TBLM 
  
 TBLM     MACRO  EQ 
          CON    2R_EQ,LC_EQ
          ENDM
          TITLE  MAIN PROGRAM.
 IMS      SPACE  4,10 
**        IMS - MAIN PROGRAM. 
  
  
          QUAL   IMS
          ORG    PPFW 
  
 IMS      RJM    PRS         PRESET PROGRAM 
          LDM    TFCN+1,T2
          ZJN    IMS1        IF PROCESSOR RESIDENT
          LMC    2L"OVLB" 
          RJM    EXR         LOAD OVERLAY 
  
 IMS1     LJM    *           PROCESS FUNCTION 
 IMSA     EQU    *-1
          TITLE  RESIDENT SUBROUTINES.
 CLI      SPACE  4,10 
**        CLI - CLEAR INTERLOCKS. 
* 
*         EXIT   (A) = 0. 
* 
*         USES   T5.
* 
*         MACROS CMSTF. 
  
  
 CLI      SUBR               ENTRY/EXIT 
          LDC    0
 CLIA     EQU    *-1
          ZJN    CLIX        IF INTERLOCK NOT SET 
          STD    T5 
          CMSTF  LUAI        CLEAR LOCAL UTILITY INTERLOCK
*         LDN    0
          UJN    CLIX        RETURN 
 RDS      SPACE  4,10 
**        RDS - READ SECTOR.
* 
*         ENTRY  (A) = BUFFER ADDRESS.
*                (T5 - T7) = MASS STORAGE DRIVER PARAMETERS.
* 
*         EXIT   (A) .LT. 0 IF MEDIA ERROR. 
* 
*         ERROR  TO *ABT1* IF NON-MEDIA ERROR.
* 
*         CALLS  RDS. 
  
  
 RDS1     LDC    1S17        RETURN WITH ERROR STATUS 
 RDSA     EQU    *-1
  
 RDS      SUBR               ENTRY/EXIT 
          RJM    //RDS
          PJN    RDSX        IF NO ERROR
          STM    RDSA 
          LPN    77 
          LMN    PARE 
          ZJN    RDS1        IF MEDIA ERROR 
          UJN    ABT2        ABORT
 WDS      SPACE  4,15 
**        WDS - WRITE SECTOR. 
* 
*         ENTRY  (A) = BUFFER ADDRESS.
*                (T5 - T7) = MASS STORAGE DRIVER PARAMETERS.
* 
*         EXIT   (A) .LT. 0 IF MEDIA ERROR. 
*                           IF RECOVERED ERROR ON PREVIOUS SECTOR.
* 
*         ERROR  TO *ABT1* IF NON-MEDIA ERROR.
* 
*         CALLS  WDS. 
  
  
 WDS1     LDC    1S17        RETURN WITH ERROR STATUS 
 WDSA     EQU    *-1
  
 WDS      SUBR               ENTRY/EXIT 
          RJM    //WDS
          PJN    WDSX        IF NO ERROR
          STM    WDSA 
          SHN    21-11
          MJN    WDS1        IF ERROR ON PREVIOUS SECTOR RECOVERED
          SHN    12 
          LPN    77 
          LMN    PARE 
          ZJN    WDS1        IF MEDIA ERROR 
*         UJN    ABT2        ABORT
 ABT      SPACE  4,10 
**        ABT - ABORT OPERATION.
* 
*         ENTRY  (A) = ERROR MESSAGE ADDRESS. 
* 
*         CALLS  CLI, DFM.
* 
*         MACROS MONITOR. 
  
  
 ABT2     CON    0           PASS INSTRUCTION 
 ABTB     EQU    ABT2 
*         UJN    ABT1        (DEADSTART SEQUENCING JOB) 
  
 ABT3     LDC    MESM        * IMS ABORTED.*
  
 ABT      LMC    ERLN        ISSUE MESSAGE TO ERRLOG
          RJM    DFM
          RJM    CLI         CLEAR INTERLOCKS 
          MONITOR  ABTM 
 ABTA     LJM    PPR         EXIT TO PP RESIDENT
*         LJM    *           (DEADSTART SEQUENCING) 
  
 ABT1     LDD    ES          CHECK DEVICE TYPE
          SHN    21-10
          PJN    ABT3        IF NON-REMOVABLE 
          LDN    PCLR 
*         UJN    MSI         CLEAR INITIALIZE REQUEST 
 MSI      SPACE  4,15 
**        MSI - ISSUE *MSI* REQUEST.
* 
*         ENTRY  (A) = REQUEST CODE.
* 
*         EXIT   TO DPP.
* 
*         USES   CM - CM+5. 
  
  
 MSI      STD    CM+5        SET FUNCTION CODE
          LDN    ZERL 
          CRD    CM 
          LDD    RA          STORE *MSI* REQUEST
          SHN    6
          ADN    PREQ 
          CWD    CM+1 
          UJN    DPP         DROP 
  
  
 DPP2     RJM    IPF         INITIALIZE PACK FLAWS
 DPP1     SMSTF  LCKP        SET EQUIPMENT CHECKPOINT 
  
 DPP      RJM    CLI         CLEAR INTERLOCKS 
          MONITOR  DPPM 
          LJM    PPR         EXIT TO PP RESIDENT
 CKC      SPACE  4,10 
**        CKC - CALL *1CK* TO PROCESS CHECKPOINT. 
* 
*         ENTRY  (A) = *1CK* FUNCTION CODE. 
*                (T5) = EST ORDINAL TO CHECKPOINT.
* 
*         EXIT   TO *1CK*.
* 
*         CALLS  CLI. 
* 
*         MACROS EXECUTE. 
  
  
 CKC      STM    CKCA+2 
          RJM    CLI         CLEAR INTERLOCKS 
          LDD    CP 
          SHN    -7          SET CONTROL POINT
          RAM    CKCA+1 
          LDD    IA          SET UP CALL TO 1CK 
          CWM    CKCA,ON
          EXECUTE  1CK,=
          LJM    PPR         RETURN TO PP RESIDENT
  
  
 CKCA     VFD    18/3L1CK,6/40,36/0 
 EQNO     EQU    CKCA+3 
 CAT      SPACE  4,10 
**        CAT - CALCULATE ADDRESS OF TRT. 
* 
*         ENTRY  (A) = ADDRESS OF *TRLL* IN MST.
* 
*         EXIT   (A) = ADDRESS OF TRT.
* 
*         USES   CM - CM+4. 
  
  
 CAT      SUBR               ENTRY/EXIT 
          CRD    CM          GET FWA OF TRT 
          LDD    CM+3 
          LPN    77 
          SHN    14 
          LMD    CM+4 
          UJN    CATX        RETURN 
 CCS      SPACE  4,10 
 CDE      SPACE  4,10 
**        CDE - COMPARE DAT ENTRY.
* 
*         ENTRY  (T2) = INDEX TO DAT SECTOR.
*                (FN - FN+4) = CURRENT DEVICE DESCRIPTION.
* 
*         EXIT   (A) = 0 IF DUPLICATE ENTRY.
  
  
 CDE      SUBR               ENTRY/EXIT 
          LDD    FN          COMPARE ENTRY
          LMM    BFMS+2,T2
          NJN    CDEX        IF NOT DUPLICATE 
          LDD    FN+1 
          LMM    BFMS+2+1,T2
          NJN    CDEX        IF NOT DUPLICATE 
          LDD    FN+2 
          LMM    BFMS+2+2,T2
          NJN    CDEX        IF NOT DUPLICATE 
          LDD    FN+3 
          LMM    BFMS+2+3,T2
          UJN    CDEX        RETURN 
 CQF      SPACE  4,20 
**        CQF - CHECK FOR QUEUED FILES. 
* 
*         ENTRY  (T5) = EQUIPMENT.
*                (CN - CN+4) = TRT WORD.
*                (TL) = TRT ORDINAL.
*                (BY) = TRT BYTE NUMBER.
*                DRIVER LOADED. 
* 
*         EXIT   (A) = 0 IF QUEUED FILE, DAYFILE, MRT, DAT OR 
*                USER EXTENDED MEMORY TRACK.
*                (T6) = TRACK NUMBER. 
* 
*         USES   T1, T3, T6.
* 
*         CALLS  CST, IMG, RSS, STM.
* 
*         MACROS ENDMS. 
  
  
 CQF5     LDN    1           SET NOT QUEUED FILE
  
 CQF      SUBR               ENTRY/EXIT 
          LDD    TL          WORD COUNT 
          SHN    2
          LMD    BY          BYTE COUNT 
          LMC    4000 
          STD    T6 
          RJM    IMG         ISSUE READING TRACK MESSAGE
          RJM    CST         CHECK FOR SPECIAL TRACKS 
          ZJN    CQF5        IF INDIRECT CHAIN OR PERMIT CHAIN
          MJN    CQF2        IF IQFT TRACK OR DAT TRACK 
          LDN    0
          RJM    RSS         READ SYSTEM SECTOR 
          NJN    CQF4        IF ERROR IN SYSTEM SECTOR
          ENDMS 
          LDM    FNSS+4 
          SHN    -6 
          STD    T1          FILE TYPE
          LMN    LIFT        CHECK FOR DAYFILES OR MRT
          ZJN    CQF2        IF DAYFILE TRACK 
          LDN    RDATL
          STD    T3          MAXIMUM TYPES
 CQF1     SOD    T3 
          MJN    CQF3        IF NOT QUEUED FILE 
          LDM    RDAT,T3
          LMD    T1 
          NJN    CQF1        IF NOT QUEUED
          AOM    CQFA 
 CQF2     LDN    0           INDICATE QUEUED FILE, DAYFILE, MRT, OR ECS 
 CQF3     LJM    CQFX        RETURN 
  
 CQF4     LDC    MESN        ISSUE SYSTEM SECTOR ERROR MESSAGE
          RJM    STM
          UJN    CQF2        RETURN 
  
  
 CQFA     CON    0           QUEUE FILE COUNT 
  
  
          FILEREC            GENERATE PROTECTED TYPE TABLE (RDAT) 
 CST      SPACE  4,10 
**        CST - CHECK SPECIAL TRACKS. 
* 
*         ENTRY  (T6) = TRACK.
*                (ES - ES+4) = EST ENTRY. 
*                (LD) = LINK DEVICE EST ORDINAL.
* 
*         EXIT   (A) = 0 IF MATCH ON SPECIAL PF TRACKS. 
*                (A) .LT. 0 IF *IQFT*, DAT OR EXTENDED MEMORY TRACK.
  
  
 CST      SUBR               ENTRY/EXIT 
          LDD    ES+4        CHECK FOR PRESET NEEDED
          LMC    7777 
 CSTB     EQU    *-1
          ZJN    CST1        IF NO PRESET NEEDED
          LDD    ES+4 
          STM    CSTB 
          SHN    3
          ADN    ACGL 
          CRM    CSTA+4,ON
          ADN    ALGL-ACGL-1
          CRM    CSTA,ON
 CST1     LDD    T6          CHECK FOR IAF TRACK
          LMM    CSTA 
          ZJN    CSTX        IF IAF TRACK 
          LDD    T6 
          LMM    CSTA+1 
          ZJN    CSTX        IF LABEL TRACK 
          LDD    T6 
          LMM    CSTA+2 
          ZJN    CSTX        IF PERMITS TRACK 
          LDD    T6 
          LMM    CSTA+4+3 
          ZJN    CST3        IF MATCH ON IQFT FILE
          LDD    T6          CHECK FOR USER EXTENDED MEMORY TRACKS
          LMM    CSTA+4+1 
          ZJN    CST3        IF USER EXTENDED MEMORY CHAIN
          LDD    T6          CHECK FOR DAT TRACK
          LMM    CSTA+4 
          NJN    CST2        IF NO MATCH ON DAT TRACK 
          LDD    LD          CHECK FOR LINK DEVICE
          ZJN    CST2        IF NO LINK DEVICE
          LMD    T5 
          ZJN    CST3        IF DAT TRACK 
 CST2     LDN    2           INDICATE SPECIAL TRACKS NOT FOUND
 CST3     SBN    1           INDICATE *IQFT*, DAT OR ECS TRACK FOUND
          LJM    CSTX        RETURN 
  
  
 CSTA     BSSZ   5+4
 CTB      SPACE  4,15 
**        CTB - CHECK TRACK BITS. 
* 
*         ENTRY  (A) = TRACK NUMBER.
*                (ES+4) = MST POINTER.
* 
*         EXIT   (A) = (CM+4) = RESERVATION FLAG IN BIT 3.
*                             = PRESERVED FILE FLAG IN BIT 13.
*                (T1) = TRT WORD INDEX. 
*                (T2) = TRT WORD NUMBER.
*                (T6) = TRACK NUMBER. 
* 
*         USES   CM - CM+4. 
* 
*         CALLS  CAT. 
  
  
 CTB      SUBR               ENTRY/EXIT 
          STD    T6 
          LPC    3777        SET TRT WORD NUMBER
          SHN    21-1 
          STD    T2 
          SHN    1-21        SET TRT WORD INDEX 
          STD    T1 
          LMC    SHNI+0 
          STM    CTBA 
          LDD    ES+4        READ TRT WORD
          SHN    3
          ADN    TRLL 
          RJM    CAT         CALCULATE FWA OF TRT 
          ADD    T2 
          CRD    CM 
          LDD    CM+4        SET TRACK BITS 
 CTBA     SHN    0
          LPC    4010 
          STD    CM+4 
          UJN    CTBX        RETURN 
 FBT      SPACE  4,10 
**        FBT - FLAW BLOCK OF TRACKS IN TRT.
* 
*         ENTRY  (T3) = STARTING TRACK NUMBER (TRACK BIT NOT SET).
*                (TL) = ENDING TRACK NUMBER + 1 (TRACK BIT NOT SET).
*                (T5) = EST ORDINAL.
*                (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
* 
*         EXIT   (A) = 0 IF TRACK FLAWED. 
* 
*         USES   T1, CM - CM+4. 
* 
*         CALLS  CAT. 
* 
*         MACROS MONITOR. 
  
  
 FBT      SUBR               ENTRY/EXIT 
 FBT1     LDD    T3          UNPACK TRACK 
          SHN    21-1        SET TRT WORD INDEX 
          STD    T0 
          SHN    1-21        SET BYTE INDEX 
          STD    T1 
          LDD    ES+4        READ TRT WORD
          SHN    3
          ADN    TRLL 
          RJM    CAT         CALCULATE FWA OF TRT 
          ADD    T0 
          CRD    CM 
          LDM    CM,T1       CHECK TRACK
          LMC    3777 
          ZJN    FBT2        IF TRACK ALREADY FLAWED
          LDD    T5          FLAW TRACK IN TRT
          STD    CM+1 
          LDD    T3 
          STD    CM+2 
          LDN    STFS 
          STD    CM+3 
          MONITOR  STBM 
 FBT2     AOD    T3          ADVANCE TRACK NUMBER 
          LMD    TL 
          NJN    FBT1        IF NOT END OF TRACKS TO FLAW 
          UJN    FBTX        RETURN 
 GDS      SPACE  4,15 
**        GDS - GET DAT SECTOR. 
* 
*         ENTRY  (ES - ES+4) = EST ENTRY. 
*                (LD) = LINK DEVICE EST ORDINAL.
* 
*         EXIT   DAT SECTOR AT BFMS.
*                (TI) = INDEX TO DAT ENTRY. 
*                (A) = 0 IF DEVICE NOT DEFINED IN DAT.
* 
*         USES   TI, T5 - T7, CM - CM+4, FN - FN+4. 
* 
*         CALLS  ABT, RDS.
* 
*         MACROS ENDMS, SETMS.
  
  
 GDS      SUBR               ENTRY/EXIT 
          LDD    LD          SET EQUIPMENT
          STD    T5 
          SETMS  IO 
          LDD    CM+4        GET DAT POINTERS 
          SHN    3
          ADN    ALGL 
          CRD    CM 
          LDD    ES+4        READ DAT INDEX 
          SHN    3
          ADN    MDGL 
          CRD    FN 
          LDD    CM+4        SET DAT TRACK
          STD    T6 
          LDM    EQNO 
          LMD    LD 
          ZJN    GDS1        IF LINK DEVICE 
          LDD    FN          SET DAT SECTOR 
          LPC    377
          ZJN    GDSX        IF NO DAT INDEX
          SHN    21-4 
 GDS1     STD    T7 
          SHN    -14         SET DAT SECTOR INDEX 
          STD    TI 
          SHN    2
          RAD    TI          INDEX*5
          LDC    BFMS        READ SECTOR
          RJM    RDS
          PJN    GDS3        IF NO ERRORS 
 GDS2     LDC    GDSA 
          LJM    ABT         ABORT *IMS*
  
 GDS3     ENDMS 
          LDN    1
          LJM    GDSX        RETURN 
  
  
 GDSA     DATA   C* ERROR ON LINK DEVICE.*
 GLA      SPACE  4,15 
**        GLA - GET LOCAL AREA SECTOR.
* 
*         ENTRY  (IR+4) = EST ORDINAL.
* 
*         EXIT   (A) = RETURN FROM *COMPRLA*. 
*                LOCAL UTILITY INTERLOCK SET. 
* 
*         EREXIT TO *ABT* IF READ ERRORS. 
* 
*         CALLS  RLA, SLI, SME. 
  
  
 GLA1     STM    BFMS+1      CLEAR SECTOR WORD COUNT
  
 GLA      SUBR               ENTRY/EXIT 
          LDD    IR+4        SET MASS STORAGE EQUIPMENT 
          RJM    SME
          RJM    SLI         SET LOCAL UTILITY INTERLOCK
          RJM    RLA         READ SECTOR OF LOCAL AREAS 
          PJN    GLAX        IF NO READ ERRORS
          LDM    BFMS 
          ZJN    GLA1        IF SECTOR NOT REFORMATTED
          LDC    GLAA        * EQXXX, LOCAL AREA SECTOR ERROR.* 
          LJM    ABT         ABORT
  
  
 GLAA     DATA   C* EQXXX, LOCAL AREA SECTOR ERROR.*
 IMG      SPACE  4,10 
**        IMG - ISSUE *READING* MESSAGE.
* 
*         ENTRY  (T6) = TRACK NUMBER TO ISSUE.
* 
*         EXIT   MESSAGE WRITTEN TO *MS2W*. 
* 
*         CALLS  C2D. 
  
  
 IMG      SUBR
          LDD    T6 
          RJM    C2D         CONVERT LOWER
          STM    IMGA+10
          LDD    T6 
          SHN    -6 
          RJM    C2D         CONVERT UPPER
          STM    IMGA+7 
          LDD    CP          STORE CONTROL POINT MESSAGE
          ADN    MS2W 
          CWM    IMGA,TR
          UJN    IMGX        RETURN 
  
  
 IMGA     DATA   C*READING TRACK-XXXX*
 IPF      SPACE  4,10 
**        IPF - INITIALIZE PACK FLAWS.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (ES - ES+4) = EST ENTRY. 
* 
*         USES   AI, T2, CM - CM+4, FN - FN+4.
* 
*         CALLS  DFM, EXR, RCS, SDR, *0TI*, *0TJ*.
* 
*         MACROS EXECUTE. 
  
  
 IPF3     LDD    ES+4 
          SHN    3
          ADN    DDLL 
          CRD    CM 
          LDD    CM          SET NUMBER OF UNITS
          LPN    7
          STD    T2 
          LDN    PRFM        SET TRACK FLAW REQUEST 
          RJM    SDR
  
 IPF      SUBR               ENTRY/EXIT 
 IPFA     LDN    0
          NJN    IPFX        IF PACK FLAWS ALREADY PROCESSED
          LDD    ES 
          SHN    21-7 
          PJN    IPFX        IF NOT AN LDAM DEVICE
          AOM    IPFA 
          LDD    ES+1        CHECK CONCURRENT CHANNEL FLAGS 
          SHN    21-5 
          PJN    IPF1        IF NOT A CONCURRENT CHANNEL
          LDD    ES+2 
          ZJN    IPF3        IF SECOND CHANNEL NOT DEFINED
          SHN    21-5 
          MJN    IPF3        IF BOTH CHANNELS CONCURRENT
 IPF1     LDD    ES+4        FETCH THE ALGORITHM INDEX
          SHN    3
          ADN    DILL 
          CRD    FN 
          LDD    T5          SET EQUIPMENT PARAMETER
          STM    FPPA 
  
*         EXECUTE FLAW PROCESSOR. 
  
          LDD    FN+4        SET ALGORITHM INDEX
          LPN    77 
          STD    AI 
          EXECUTE 0TI,FPLA   EXECUTE FLAW PROCESSOR 
          ZJN    IPF2        IF FLAWING COMPLETE
          LDC    MESL        * EQXXX, FLAWING INCOMPLETE.*
          RJM    DFM
 IPF2     RJM    RCS         RESERVE *CTI* SPACE
          LJM    IPFX        RETURN 
 LDA      SPACE  4,10 
**        LDA - LOAD CM ADDRESS.
* 
*         ENTRY  (IR+3 - IR+4) = RELATIVE ADDRESS.
* 
*         EXIT   (A) = ABSOLUTE ADDRESS.
  
  
 LDA      SUBR               ENTRY/EXIT 
          LDD    IR+3 
          LPN    77 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    IR+4 
          UJN    LDAX        RETURN 
 RCS      SPACE  4,15 
**        RCS - RESERVE *CTI* SPACE.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (AI) = ALGORITHM INDEX 
*                (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   *CTI* SPACE FLAWED IN TRT. 
* 
*         USES   FL, TL, T3, T9, CM - CM+4, FN - FN+4.
* 
*         CALLS  CTB, FBT, RDS, WDS, *0PI*. 
* 
*         MACROS CMSTF, ENDMS, EXECUTE, MONITOR, SMSTF. 
  
  
 RCS      SUBR               ENTRY/EXIT 
          LDD    T5          SET PARAMETER WORD 
          LMC    4000 
          STM    FPPA 
          EXECUTE  0PI,FPLA  READ DEADSTART SECTOR
          NJN    RCS0        IF NOT A VALID DEADSTART SECTOR
          STM    RCSA        PRESET FOR *CTI* PRESENT 
          ENDMS 
          LDM    BFMS+MSLP
          NJN    RCS1        IF *MSL* INSTALLED 
          LDM    BFMS+CDAP
          NJN    RCS1        IF COMMON DISK AREA INSTALLED
          LDM    BFMS+CTIP
          NJN    RCS1        IF *CTI* INSTALLED 
 RCS0     LDD    AI 
          LMN    AIDR 
          NJN    RCSX        IF NOT CDSS II 
          LDC    840D        FIRST CYLINDER OF AREA TO BE FLAWED
          STM    RCSA        INDICATE *CTI* NOT PRESENT 
 RCS1     SHN    1           CONVERT CYLINDER TO LOGICAL TRACK
          STD    T3 
          LDD    ES+4        GET DEVICE LENGTH FROM MST 
          SHN    3
          ADK    TDGL 
          CRD    TL 
          ERRNZ  TL+1-FN     READ DESTROYS DIRECT CELLS 
  
          ADN    ACGL-TDGL   FETCH DEADSTART FILE STATUS
          CRD    FN 
          LDD    AI 
          LMN    AIDA 
          NJN    RCS2        IF NOT 33502 
          LDD    T3          COMPLETE CYLINDER TO TRACK CONVERSION
          SHN    -1 
          ADC    NTDA/2 
          STD    T3 
          UJN    RCS4        FLAW TRACKS
  
 RCS2     LMN    AIDI&AIDA
          ZJN    RCS3        IF 7X54/844-21 
          LMN    AIDK&AIDI
          ZJN    RCS3        IF 7154/844-21 
          LMN    AIDX&AIDK
          ZJN    RCS3        IF FSC 3330-1
          LMN    AIDR&AIDX
          NJN    RCS4        IF NOT CDSS II 
          LDD    T3          INITIALIZE TRACK CALCULATION 
          STD    T9 
          LDN    0
          STD    T3 
          LDC    1062        SET FLAW LIMIT FOR CDSS II 
          STD    TL 
 RCS2.1   LCN    3           FOR THIS PURPOSE, TRACK = CYLINDER*2/3 
          RAD    T9 
          MJN    RCS5        IF CONVERSION COMPLETE 
          AOD    T3          INCREMENT TRACK NUMBER 
          UJN    RCS2.1      CONTINUE DIVISION
  
 RCS3     LDD    T3          COMPLETE CYLINDER CONVERSION 
          RAD    T3 
 RCS4     LDD    T3 
          SBD    TL 
          PJN    RCS7        IF *CTI* BEYOND LOGICAL END OF DEVICE
 RCS5     RJM    FBT         FLAW BLOCK OF TRACKS 
 RCS7     LDC    **          ZERO IF *CTI* PRESENT
 RCSA     EQU    *-1
          NJP    RCS9        IF *CTI* NOT PRESENT 
          SMSTF  GCTI        SET *CTI* PRESENT FLAG 
          LDD    IR+2        CHECK FOR FLAW FUNCTION
          LMN    3
          ZJN    RCS8        IF X.FLAW REQUEST
          CMSTF  GDSF 
          LDN    ZERL        CLEAR DEADSTART FILE INDICATOR 
          CRM    BFMS+OSBP,ON 
          LDC    BFMS+WLSF   REWRITE DEADSTART SECTOR 
          RJM    WDS
          LDD    FN 
          LPC    MGDSF
          ZJN    RCS8        IF NO DEADSTART FILE 
          LDM    BFMS+OSBP+5
          RJM    CTB
          ZJN    RCS8        IF TRACK CHAIN RELEASED
          LDD    T5 
          STD    CM+1 
          LDD    T6          DROP TRACK CHAIN 
          STD    CM+2 
          MONITOR  DTKM 
 RCS8     ENDMS              RELEASE CHANNEL
 RCS9     LJM    RCSX        RETURN 
 RDT      SPACE  4,10 
***       RDT - READ DIT TO BUFFER. 
* 
*         ENTRY  (A) = BUFFER ADDRESS.
*                (T5) = EST ORDINAL OF DEVICE.
*                (ES - ES+4) = EST ENTRY. 
* 
*         ERROR  TO *ABT2* IF ERROR READING LABEL (DIT) SECTOR. 
* 
*         USES   T1, T6, T7, CM - CM+4. 
* 
*         CALLS  RDS, SDL.
* 
*         MACROS ENDMS, MONITOR, SETMS. 
  
  
 RDT      SUBR               ENTRY/EXIT 
          STM    RDTB        SAVE BUFFER ADDRESS
          LDD    ES+4        SET LABEL TRACK
          SHN    3
          ADN    ALGL 
          CRD    CM 
          LDD    CM+1 
          STD    T6 
          LDN    0
          STD    T7 
          SETMS  IO,(DF,NS) 
          LDC    BFMS        READ LABEL 
          RJM    RDS
          PJN    RDT1        IF NO ERROR
*         LDC    MESM 
          LJM    ABT2        ABORT
  
 RDT1     ENDMS 
          LDN    MISD 
          STD    T1 
          RJM    SDL
          CWM    DISS,T1
          SBN    MISD 
          CRM    **,T1       READ DIT TO BUFFER 
 RDTB     EQU    *-1
          LJM    RDTX        RETURN 
 SDL      SPACE  4,10 
**        SDL - SET DIT LOCATION. 
* 
*         ENTRY  (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   (A) = DIT ADDRESS. 
* 
*         USES   T2, T3, CM - CM+4. 
* 
*         CALLS  CAT. 
  
  
 SDL      SUBR               ENTRY/EXIT 
          LDD    ES+4 
          SHN    3
          ADK    TDGL 
          CRD    CM 
          LDD    CM+2        SET MRT LENGTH 
          STD    T2 
          ADN    7
          SHN    -3 
          STD    T3 
          LDD    ES+4 
          SHN    3
          ADN    TRLL 
          RJM    CAT         CALCULATE FWA OF TRT 
          ADD    T2          ADD TRT LENGTH 
          ADD    T3          ADD MRT LENGTH 
          UJN    SDLX        RETURN 
 SDT      SPACE  4,10 
**        SDT - SEARCH DAT TABLES.
* 
*         ENTRY  DAT INTERLOCK SET. 
*                (ES - ES+4) = EST ENTRY. 
*                (CN - CN+4) = SDGL WORD. 
*                (LD) = LINK DEVICE.
*                (DI) = DAT INDEX.
*                (DE) = DAT ENTRY COUNT.
* 
*         EXIT   (A) = 0 IF DUPLICATE ENTRY.
* 
*         USES   T1 - T7, CM - CM+4, FN - FN+4, DC. 
* 
*         CALLS  CDE, RDS.
* 
*         MACROS ENDMS, SETMS.
  
  
 SDT      SUBR               ENTRY/EXIT 
          LDD    ES+4        READ DEVICE DESCRIPTION
          SHN    3
          ADN    PFGL 
          CRD    FN 
          LDD    FN+4        CHECK IF 1 OF N
          LPN    70 
          NJN    SDTX        IF  NOT 1 OF N 
          STD    T7 
          LDD    LD          SET LINK DEVICE
          STD    T5 
          SETMS  IO 
          LDD    CM+4        GET DAT POINTER
          SHN    3
          ADN    ALGL 
          CRD    CM 
          LDD    CM+4        SET DAT TRACK
          STD    T6 
 SDT1     LDC    BFMS        READ DAT SECTOR
          RJM    RDS
          MJN    SDT6        IF READ ERROR
          ENDMS 
*         LDN    0
          STD    T1 
          STD    T2 
 SDT3     RJM    CDE         COMPARE ENTRIES
          ZJN    SDT7        IF DUPLICATE ENTRY 
 SDT4     AOM    SDTA        BUMP DAT INDEX 
          LDN    5*2         BUMP SEARCH INDEX
          RAD    T2 
          SOD    DE          DECREMENT ENTRY COUNT
          ZJN    SDT8        IF END OF ENTRIES
          LDN    2           BUMP WORD COUNT
          RAD    T1 
          LMD    HN 
          NJN    SDT3        IF NOT END OF SECTOR 
          AOD    T7          BUMP SECTOR COUNT
          UJN    SDT1        PROCESS NEXT SECTOR
  
 SDT6     LJM    GDS2        ABORT
  
 SDT7     LDD    DI          CHECK IF THIS DEVICE 
          LMC    ** 
 SDTA     EQU    *-1
          ZJN    SDT4        IF THIS DEVICE 
          AOM    BUF+PMRP+4  FLAG DUPLICATE *DAT* ENTRY 
          LDN    1
 SDT8     LMN    1
          LJM    SDTX        RETURN 
 SLI      SPACE  4,10 
**        SLI - SET LOCAL UTILITY INTERLOCK.
* 
*         ENTRY  (T5) = EST ORDINAL.
* 
*         ERROR  TO *ABT2* IF INTERLOCK NOT SET.
* 
*         CALLS  SDI. 
  
  
 SLI1     LDD    T5          SET INTERLOCK HELD 
          STM    CLIA 
  
 SLI      SUBR               ENTRY/EXIT 
          RJM    SDI         SET INTERLOCK
          NJN    SLI1        IF INTERLOCK SET 
*         LDC    MESM 
          LJM    ABT2        ABORT
 SME      SPACE  4,10 
**        SME - SET MASS STORAGE EQUIPMENT. 
* 
*         ENTRY  (A) = EST ORDINAL. 
* 
*         EXIT   (T5) = EST ORDINAL.
*                (ES - ES+4) = EST ENTRY. 
*                EQUIPMENT MNEMONIC AND NUMBER SET IN MESSAGES. 
* 
*         USES   T0, T1, T2, T3, T4, T5, ES - ES+4. 
* 
*         CALLS  C2D. 
* 
*         MACROS SFA. 
  
  
 SME      SUBR               ENTRY/EXIT 
          STD    T5 
          STM    EQNO 
          SFA    EST         READ EST ENTRY 
          ADK    EQDE 
          CRD    ES 
  
*         SET (T0 - T2) = * EQXXX*, WHERE EQ = EQUIPMENT MNEMONIC AND 
*         XXX = EST ORDINAL.
  
          LDD    T5          CONVERT UPPER DIGIT OF EST ORDINAL 
          SHN    -6 
          ADN    1R0
          STD    T1 
          LDD    T5          CONVERT LOWER TWO DIGITS OF EST ORDINAL
          RJM    C2D
          STD    T2 
          LDD    ES+3        PROCESS DEVICE MNEMONIC
          LMC    1L 
          SHN    14 
          STD    T0 
          SHN    -6 
          SCN    77 
          RAD    T1 
          LDN    TSMEL       INITIALIZE MESSAGE MODIFICATION LOOP 
          STD    T3 
 SME1     SOD    T3          DECREMENT MESSAGE INDEX
          MJN    SMEX        IF ALL MESSAGES MODIFIED 
          LDM    TSME,T3     SET MESSAGE ADDRESS
          STD    T4 
          LDD    T0          TRANSFER * EQXXX* INTO DESTINATION BUFFER
          STI    T4 
          LDD    T1 
          STM    1,T4 
          LDD    T2 
          STM    2,T4 
          UJN    SME1        LOOP FOR NEXT MESSAGE
  
  
**        TSME - TABLE OF MESSAGES REQUIRING EQUIPMENT MNEMONICS AND
*         EST ORDINALS. 
  
 TSME     BSS    0
          CON    GLAA 
          CON    MESA 
          CON    MESB 
          CON    MESC 
          CON    MESD 
          CON    MESE 
          CON    MESG 
          CON    MESH 
          CON    MESI 
          CON    MESJ 
          CON    MESK 
          CON    MESL 
          CON    MESN 
          CON    MESO 
          CON    MESP 
 TSMEL    EQU    *-TSME 
 STB      SPACE  4,15 
**        STB - SET TRACK BIT.
* 
*         ENTRY  (A) = *STBM* SUBFUNCTION CODE. 
*                (T5) = EST ORDINAL.
*                (T6) = TRACK NUMBER. 
* 
*         EXIT   (A) = MONITOR RESPONSE.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 STB      SUBR               ENTRY/EXIT 
          STD    CM+3        SET SUBFUNCTION CODE 
          LDD    T6          SET TRACK
          STD    CM+2 
          LDD    T5          SET EST ORDINAL
          LMC    1S10 
          STD    CM+1 
          MONITOR  STBM      ISSUE REQUEST
          LDD    CM+1 
          UJN    STBX        RETURN 
 STI      SPACE  4,15 
**        STI - SET TRACK INTERLOCK.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (T6) = TRACK.
* 
*         EXIT   (A) = 0 IF TRACK INTERLOCKED.
*                    = (T6) IF TRACK NOT RESERVED.
*                (PF) = (T6) IF TRACK INTERLOCKED.
* 
*         ERROR  TO *ABT3* IF *ORET* ERROR FLAG DETECTED. 
* 
*         CALLS  STB. 
* 
*         MACROS DELAY, PAUSE.
  
  
 STI2     LDD    T6          FLAG TRACK INTERLOCKED 
          STD    PF 
 STI3     LMD    T6          RETURN INTERLOCK STATUS
  
 STI      SUBR               ENTRY/EXIT 
 STI1     LDN    STIS        ATTEMPT TRACK INTERLOCK
          RJM    STB
          ZJN    STI2        IF INTERLOCK SET 
          LMN    2
          ZJN    STI3        IF TRACK NOT RESERVED
          DELAY  250D*10
          PAUSE 
          LDD    CM+1        CHECK ERROR FLAG 
          LMN    ORET 
          NJN    STI1        IF NOT OPERATOR OVERRIDE 
*         LDC    MESM 
          LJM    ABT3        ABORT
 STM      SPACE  4,10 
**        STM - SET TRACK NUMBER IN MESSAGE.
* 
*         ENTRY  (A) = MESSAGE ADDRESS. 
*                (T6) = TRACK NUMBER. 
* 
*         EXIT   (T9) = MESSAGE ADDRESS.
* 
*         CALLS  C2D, DFM.
  
  
 STM      SUBR               ENTRY/EXIT 
          STD    T9 
          LDD    T6          CONVERT TRACK NUMBER 
          SHN    -6 
          RJM    C2D
          STM    5,T9        SET CONVERSION IN MESSAGE
          LDD    T6 
          RJM    C2D
          STM    6,T9 
          LDC    ERLN        ISSUE MESSAGE TO ERRLOG
          LMD    T9 
          RJM    DFM
          UJN    STMX        RETURN 
 TED      SPACE  4,10 
**        TED - TRANSFER DAT ENVIRONMENT DATA.
* 
*         ENTRY  (A) = ECSM FUNCTION. 
*                (T6 - T7) = LINK DEVICE ADDRESS. 
* 
*         EXIT   (A) = ECSM FUNCTION REPLY. 
* 
*         USES   CM - CM+4, BY. 
* 
*         CALLS  CEA. 
* 
*         MACROS MONITOR. 
  
  
 TED      SUBR               ENTRY/EXIT 
          SHN    11 
          STD    BY 
          RJM    CEA         CONVERT EXTENDED MEMORY ADDRESS
          LDN    DAET        SET DAT ENTRY
          RAD    CM+4 
          SHN    -14
          LMD    BY          MERGE FUNCTION 
          RAD    CM+3 
          LDN    0           SET WORD COUNT TO 1
          STD    CM+1 
          LDD    MA          SET CM ADDRESS 
          STD    CM+2 
          MONITOR ECSM
          LDD    CM+1 
          UJN    TEDX        RETURN 
 TRT      SPACE  4,10 
**        TRT - UPDATE TRT. 
* 
*         ENTRY  (ES - ES+4) = EST ENTRY. 
*                (T5) = EQUIPMENT.
* 
*         EXIT   TRT UPDATED IF DEVICE IS SHARED. 
* 
*         USES   CM - CM+4. 
* 
*         CALLS  STB. 
* 
*         MACROS MONITOR. 
  
  
 TRT      SUBR               ENTRY/EXIT 
          LDD    ES          CHECK IF SHARED
          SHN    21-11
          PJN    TRTX        IF DEVICE NOT SHARED 
          LDN    UTRS        ENSURE TRT CURRENT 
          RJM    STB
          UJN    TRTX        RETURN 
 UDA      SPACE  4,15 
**        UDA - UPDATE DAT ENTRY. 
* 
*         ENTRY  (TA) = EXTENDED MEMORY ACCESS OPTIONS. 
*                (DI) = DAT INDEX.
*                (CN - CN+4) = *SDGL* WORD OF MST.
*                (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
* 
*         USES   T1, T2, T5, CM - CM+4, CN - CN+4.
* 
*         CALLS  GDS, SDT, WDS. 
* 
*         MACROS ENDMS, SETMS.
  
  
 UDA5     LDM    EQNO        RESET EST ORDINAL
          STD    T5 
  
 UDA      SUBR               ENTRY/EXIT 
          LDD    TA          CHECK REQUEST
          LPN    RDDA 
          NJN    UDA1        IF READ DAT ONLY 
          RJM    SDT         SEARCH DAT TABLES
          ZJN    UDA5        IF DUPLICATE ENTRY 
 UDA1     RJM    GDS         GET DAT SECTOR 
          ZJN    UDA5        IF NO DAT ENTRY OR LINK DEVICE 
          LDD    TI 
          ADC    BFMS+2 
          STM    UDAB 
          STD    TI 
          ADN    11 
          STD    T2 
          LDI    T2          SET ACCESS STATUS IN CHECKPOINT REQUEST
          LPC    0
 UDAA     EQU    *-1
          STM    CKCA+4 
          SETMS  IO,RW
          LDD    TA          RECHECK REQUEST
          LPN    RDDA 
          NJN    UDA4        IF NOT DAT UPDATE
          LDD    ES+4 
          SHN    3
          ADN    PFGL        READ DAT INFORMATION 
          CRD    CM 
          LDN    3
          STD    T2 
 UDA2     LDM    CM,T2       COPY DATA TO DAT SECTOR
          STM    **,T2
 UDAB     EQU    *-1
          SOD    T2 
          PJN    UDA2        IF NOT END OF DATA 
          LDD    CM+4 
          LPN    70 
          ZJN    UDA3        IF PACK IS 1 OF N
          LDN    0
          STI    TI          CLEAR DAT ENTRY
          STD    CN 
          STD    CN+1        CLEAR EXTENDED MEMORY ADDRESS
          LDD    ES+4 
          SHN    3
          ADN    SDGL        UPDATE THE MST 
          CWD    CN 
          LDD    DI 
          ZJN    UDA4        IF DAT INDEX NOT SET 
 UDA3     LDC    BFMS+WLSF
          RJM    WDS         REWRITE DAT SECTOR 
 UDA4     ENDMS 
          LJM    UDA5        RETURN 
 UEC      SPACE  4,15 
**        UEC - UPDATE EXTENDED MEMORY MST DATA.
* 
*         ENTRY  (A) = UPDATE OPTIONS.
*                (LD) = LINK DEVICE EST ORDINAL.
*                (MI) = MACHINE INDEX.
*                (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
* 
*         ERROR  TO *GDS2* IF ERROR ON LINK DEVICE. 
* 
*         USES   TA, CM - CM+4, CN - CN+4.
* 
*         CALLS  UDA. 
* 
*         MACROS MONITOR. 
  
  
 UEC      SUBR               ENTRY/EXIT 
          STD    TA 
          LDD    LD 
          ZJN    UECX        IF NOT MMF MODE
          LDD    ES+4 
          SHN    3
          ADN    SDGL        FETCH MST ADDRESS INFORMATION
          CRD    CN 
          LDD    TA 
          LPN    RDDA+UPDA
          ZJN    UEC1        IF NOT DAT ACCESS
          RJM    UDA
  
*         UPDATE GLOBAL AREA. 
  
 UEC1     LDD    CN          CHECK EXTENDED MEMORY ADDRESS
          ADD    CN+1 
          ZJN    UECX        IF MST/TRT NOT EXTENDED MEMORY RESIDENT
          LDD    TA 
          LPN    UPGA 
 UEC2     ZJN    UECX        IF NOT GLOBAL AREA UPDATE
          LDD    CN+1 
          ADN    ALGL 
          STD    CM+4        FORM EXTENDED MEMORY ADDRESS 
          SHN    -14
          ADD    CN 
          LMC    WECS*1000   MERGE SUBFUNCTION
          STD    CM+3 
          LDD    ES+4        COMPUTE CM ADDRESS 
          SHN    3
          ADN    ALGL 
          STD    CM+2 
          SHN    -14
          LMC    300         MERGE WORD COUNT 
          STD    CM+1 
          MONITOR ECSM
          LDD    CM+1 
          ZJN    UEC2        IF NO ERRORS 
          LJM    GDS2        ABORT
          SPACE  4
*         COMMON DECKS. 
  
  
 QUAL$    EQU    1
*CALL     COMPRLA 
*CALL     COMPRSS 
 WCS$     EQU    1           CONSECUTIVE SECTORS AFTER SYSTEM SECTOR
*CALL     COMPWSS 
  
          QUAL
*CALL     COMPCEA 
*CALL     COMPC2D 
*CALL     COMPIFR 
*CALL     COMPSDI 
*CALL     COMPSDR 
 STI      EQU    /IMS/STI 
*CALL     COMPTGB 
*CALL     COMPTLB 
  
          QUAL   IMS
          SPACE  4,10 
**        DAYFILE MESSAGES. 
  
  
 MESA     DATA   C* EQXXX, YY TRACKS FLAWED.* 
 MESB     DATA   C* EQXXX, YY FLAWS NOT PROCESSED.* 
 MESBL    EQU    *           FLAW MESSAGE BUFFER
 MESC     DATA   C* EQXXX, LOCAL AREAS INITIALIZED.*
 MESD     DATA   C* EQXXX, LOCAL AREA SECTOR RESET.*
 MESE     DATA   C* EQXXX, PF INITIALIZE COMPLETE.* 
 MESF     DATA   C* LABEL TRACK CONFLICT.*
 MESG     DATA   C* EQXXX, NO INACTIVE DAYFILES FOUND.* 
 MENM     EQU    13          FILENAME OFFSET FOR MESSAGES 
 MESH     DATA   C* EQXXX, INITIALIZED -        .  *
 MESI     DATA   C* EQXXX, FILE ACTIVE -        .  *
 MESJ     DATA   C* EQXXX, FILE BUSY   -        .  *
 MESK     DATA   C* EQXXX, PROTECTED QUEUES IGNORED.* 
 MESL     DATA   C* EQXXX, FLAWING INCOMPLETE.* 
 MESM     DATA   C* IMS ABORTED.* 
 MESN     DATA   C* EQXXX, TKYYYY, SYSTEM SECTOR ERROR.*
 MESO     DATA   C* EQXXX, TKYYYY - TRACK FLAWED BY IMS.* 
 MESP     DATA   C* EQXXX, TKYYYY - VERIFICATION ERRORS.* 
          SPACE  4,10 
 OVLA     EQU    *+5         OVERLAY LOAD ADDRESS 
          TITLE  RESIDENT PROCESSORS. 
 IND      SPACE  4,10 
***       FUNCTION *INDF* - INITIALIZE MASS STORAGE DEVICE. 
* 
*         ENTRY  (IR+4) = EST ORDINAL.
  
  
 IND      ENTRY 
          LDD    IR+4        SET DEVICE PARAMETERS
          RJM    SMD
          LDD    WB          CHECK INITIALIZE OPTIONS 
          SHN    21-LIAL+LIAL/12D*12D 
          MJN    IND1        IF DEADSTART INITIALIZE
          RJM    TRT         UPDATE TRT 
          RJM    RPC         RELEASE PERMANENT FILE CHAINS
          RJM    IPF         INITIALIZE PACK FLAWS
 IND1     LDD    ES+4 
          SHN    3
          ADN    ALGL        READ DEVICE ALLOCATION WORD FROM MST 
          CRD    CN 
          ADN    PUGL-ALGL   GET DEVICE MASKS 
          CRD    FN 
          ADN    MDGL-PUGL   GET DRIVER WORD
          CRD    CM 
          ADN    STLL-MDGL   UPDATE DEVICE STATUS 
          CWD    WB 
          LDN    0           CLEAR ID DATA TRACK
          STD    CN 
          LDD    CM 
          SHN    21-12
          MJN    IND2        IF AUXILIARY DEVICE
          LDD    FN+4 
          LPC    377
          NJN    IND2        IF MASTER DEVICE 
*         LDN    0
          LJM    IND5        PROCESS NON-MASTER DEVICE
  
 IND2     LDD    FN+3        SET CONTIGUOUS CATALOG TRACKS
          SCN    60 
          LMN    40 
          STD    FN+3 
          LDD    FN 
          ZJN    IND3        IF NOT PRIVATE DEVICE
          LDN    1           SET CATALOG COUNT TO 1 
          STD    CN+3 
 IND3     LDD    CN+3        SET NUMBER OF CATALOG TRACKS 
          ADN    1
          STD    CA          RESERVE CATALOG CHAIN
          RJM    RCC
          ZJN    IND4        IF ALL TRACKS NOT ASSIGNED 
          LDC    NDAT        RESERVE DATA TRACK 
          RJM    RPT
          ZJN    IND4        IF TRACK NOT ASSIGNED
          STD    CN 
          LDC    NPER        RESERVE PERMITS TRACK
          RJM    RPT
          NJN    IND5        IF TRACK ASSIGNED
 IND4     LDN    PTKL 
          LJM    MSI         PASS ERROR TO *MSI*
  
 IND5     STD    CN+2        SET PERMIT TRACK 
          LDD    ES+4 
          SHN    3
          ADN    ALGL        UPDATE DEVICE LAYOUT WORD
          CWD    CN 
          ADN    PUGL-ALGL   UPDATE CATALOG CHAIN STATUS
          CWD    FN 
          LDN    0           CLEAR ERROR STATUS 
          RJM    SES
          CMSTF  GDEI        CLEAR ERROR IDLE STATUS
          CMSTF  GCTO        CLEAR CATALOG TRACK OVERFLOW 
          LDM    CQFA 
          ZJN    IND7        IF NO QUEUES IGNORED 
          LDC    MESK        * EQXXX, PROTECTED QUEUES IGNORED.*
          RJM    DFM
 IND7     LDC    MESE        * EQXXX, PF INITIALIZE COMPLETE.*
          RJM    DFM
          LDN    RDDA+UPGA   READ DAT / UPDATE GLOBAL MST 
          RJM    UEC
          RJM    IAM         PROCESS ACCOUNTING MESSAGE 
          LDN    5
          LJM    CKC         SET CHECKPOINT REQUEST 
          SPACE  4,10 
**        SYSTEM SECTOR FILE NAMES. 
  
  
 NDAT     VFD    42/0LDATA,6/1,6/SYFT,6/0 
 NLAB     VFD    42/0LLABEL,6/1,6/SYFT,6/0
 NPER     VFD    42/0LPERMIT,6/1,6/SYFT,6/0 
 DFT      SPACE  4,20 
**        DFT - DROP AND FLAW TRACK.
* 
*         ENTRY  (A) = 1/0,11/FT.  ALL TRACKS AFTER *FT* ARE DROPPED
*                      AND THE EOI IS SET IN SECTOR ZERO OF *FT*. 
*                    = 1/1,11/FT.  ALL TRACKS FROM *FT* TO END OF 
*                      CHAIN ARE DROPPED. 
*                (T5) = EST ORDINAL.
*                (T6) = TRACK ON WHICH ERROR OCCURED. 
*                (TA) = VERIFICATION ERROR RETRY COUNT. 
* 
*         EXIT   (A) = 0 IF TRACK CHAIN DROPPED.
* 
*         ERROR  TO *ABT2* IF RETRY COUNT EXHAUSTED.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  DFM, SES, STM. 
* 
*         MACROS MONITOR. 
  
  
 DFT1     STD    CM+3        CLEAR SECTOR NUMBER FIELD
          LDD    T5 
          STD    CM+1        DROP CURRENT TRACK 
          MONITOR  DTKM 
          LDC    MESO        ISSUE TRACK FLAWED MESSAGE TO ERRLOG 
          RJM    STM
          LDD    T9          ISSUE SAME MESSAGE TO SYSTEM DAYFILE 
          RJM    DFM
*         LDN    0
  
 DFT      SUBR               ENTRY/EXIT 
          STD    CM+2        SET FIRST TRACK TO DROP
          LDM    RDCT 
          LPN    77          CHECK MASS STORAGE ERROR TYPE
          LMN    PARE 
          ZJN    DFT1        IF MEDIA PROBLEM 
          LDC    MESP 
          RJM    STM         ISSUE VERIFICATION ERROR MESSAGE 
          SOD    TA 
          NJN    DFTX        IF VERIFICATION RETRY IN ORDER 
          LDN    STVE 
          RJM    SES         SET *VE* ERROR STATUS IN MST 
*         LDC    MESM 
          LJM    ABT2        ABORT - MAINTENANCE REQUIRED 
 IAM      SPACE  4,15 
**        IAM - ISSUE ACCOUNTING MESSAGE. 
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
* 
*         EXIT   MESSAGE ISSUED TO ACCOUNTING DAYFILE.
*                EVENT SET FOR AUXILIARY DEVICE.
* 
*         USES   T1, CM - CM+4, CN - CN+4.
* 
*         CALLS  ACS, C2D, DFM. 
* 
*         MACROS MONITOR. 
  
  
 IAM      SUBR               ENTRY/EXIT 
          LDC    IAMB        SET ADDRESS OF ASSEMBLY BUFFER 
          STD    T1 
          LDD    T5          CONVERT UPPER TWO DIGITS OF EST ORDINAL
          SHN    -3 
          RJM    C2D
          STD    CM 
          LDD    T5          CONVERT LOWER DIGIT OF EST ORDINAL 
          LPN    7
          ADN    1R0
          SHN    6
          STD    CM+1 
          LDN    CM          ADD EST ORDINAL TO MESSAGE 
          RJM    ACS
          LDC    =C*, *      ADD SEPARATOR TO MESSAGE 
          RJM    ACS
          LDD    ES+4        GET DEVICE DESCRIPTION 
          SHN    3
          ADN    PFGL 
          CRD    CM 
          ADN    PUGL-PFGL   READ USER NAME 
          CRD    CN 
          LDD    CM+3        EXTRACT DEVICE NUMBER
          LPN    77 
          NJN    IAM1        IF NOT AUXILIARY DEVICE
          LDD    CM+3 
          ADD    CM+2        BUILD PACKNAME EVENT HASH
          ADD    CM+1 
          ADD    CM          SAVE PACKNAME HASH 
          STD    CN+4 
          UJN    IAM2        FORMAT MESSAGE 
  
 IAM1     RJM    C2D         CONVERT TO DISPLAY CODE
          STD    CN 
          LDC    2RDI        CHANGE MESSAGE PREFIX TO *ADDI*
          STM    IAMA+1 
          LDD    CM+3        SET END OF FAMILY NAME 
          SCN    77 
          STD    CM+3 
 IAM2     LDN    CM          ADD FAMILY/PACKNAME TO MESSAGE 
          RJM    ACS
          LDD    CN 
          ZJN    IAM3        IF NO USER/DEVICE NUMBER 
          LDC    =C*, * 
          RJM    ACS
          LDD    CN+3        SET END OF USER NAME 
          SCN    77 
          STD    CN+3 
          LDN    CN          ADD USER/DEVICE NUMBER TO MESSAGE
          RJM    ACS
 IAM3     LDC    =C*.*       SET MESSAGE TERMINATOR 
          RJM    ACS
          LDC    IAMA+ACFN   ISSUE MESSAGE TO ACCOUNT FILE
          RJM    DFM
          LDM    IAMA+1      ISSUE EVENT
          LMC    2RPI 
          NJN    IAM4        IF NOT AUXILIARY DEVICE
          LDN    ZERL 
          CRD    CM 
          LDN    /EVENT/VSNE/10000  SET EVENT 
          STD    CM+3 
          LDD    CN+4        SET PACKNAME HASH
          STD    CM+4 
          MONITOR EATM
 IAM4     LJM    IAMX        RETURN 
  
  
 IAMA     DATA   6HADPI,
 IAMB     BSSZ   15          ASSEMBLY BUFFER
 RCC      SPACE  4,20 
**        RCC - RESERVE CATALOG CHAIN.
* 
*         ENTRY  (CA) = CATALOG COUNT.
*                (LT) = LABEL TRACK.
*                (T5) = EST ORDINAL (DRIVER PRESET).
*                (CN - CN+4) = DEVICE LAYOUT WORD OF MST
*                (FN - FN+4) = PUGL WORD OF THE MST.
* 
*         EXIT   (A) = 0 IF TRACKS NOT AVAILABLE. 
*                    = .LT. 0 IF ALL CATALOG TRACKS RESERVED. 
*                (FN+3) = CONTIGUOUS TRACKS FLAG CLEARED IF NECESSARY.
* 
*         USES   TA, T2, T6, T7, CA - CA+1, CM - CM+4.
* 
*         CALLS  DFT, WVE.
* 
*         MACROS MONITOR. 
  
  
 RCC      SUBR               ENTRY/EXIT 
          LDD    LT 
          STD    T6          FIRST TRACK = LABEL TRACK
 RCC1     SOD    CA 
          MJN    RCCX        IF ALL CATALOG TRACKS RESERVED 
          LDN    ZERL 
          CRD    CM 
          LDD    T5          SET EQUIPMENT
          STD    CM+1 
          LDD    T6          SET CURRENT TRACK
          STD    CM+2 
          STD    CA+1 
          MONITOR RTCM       RESERVE TRACK
*         LDN    0
          STD    T7          SET SECTOR 
          LDD    CM+4 
          ZJN    RCCX        IF TRACK NOT ASSIGNED
          SBN    1
          SBD    T6 
          ZJN    RCC2        IF CONSECUTIVE 
          RAD    T6 
          LDD    FN+3        CLEAR CONTIGUOUS CATALOG TRACKS
          SCN    40 
          STD    FN+3 
 RCC2     AOD    T6          SET NEXT TRACK 
          LDN    VERC 
          STD    TA 
 RCC3     LDD    LT          SET FIRST TRACK OF CHAIN 
          STD    T2 
          LDC    BFMS        WRITE AND VERIFY WITH EOI SECTORS
          RJM    WVE
          ZJN    RCC4        IF WRITE AND VERIFY GOOD 
          LDD    CA+1 
          LPC    3777        DROP AND FLAW TRACK
          RJM    DFT
          NJN    RCC3        IF RETRY DUE TO VERIFICATION ERRORS
          AOD    CA 
          LDD    CA+1        RESTORE CURRENT TRACK
          STD    T6 
 RCC4     LJM    RCC1        ALLOCATE NEXT CATALOG TRACK
 RPC      SPACE  4,15 
**        RPC - RELEASE PERMANENT FILE CHAINS.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (LT) = LABEL TRACK.
*                (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
*                (WB - WB+4) = *STLL* WORD OF MST.
* 
*         USES   BY, TL, T5, T6, CM - CM+4, CN - CN+4.
* 
*         USES   CAT, CQF.
* 
*         MACROS MONITOR, SETMS.
  
  
 RPC5     LDN    0           CLEAR USER COUNT 
          STD    WB+3 
          LDD    CP          CLEAR MESSAGE AT CP
          ADN    MS2W 
          CWD    WB+3 
  
 RPC      SUBR               ENTRY/EXIT 
          LDD    ES+4 
          SHN    3
          ADK    TDGL 
          CRD    CN 
          ADN    TRLL-TDGL
          RJM    CAT         CALCULATE FWA OF TRT 
          STM    RPCA+1 
          SHN    -14
          RAM    RPCA 
          LDD    CN+2        SET TRT LENGTH 
          STD    TL 
          SETMS  IO,(DF,NS) 
          LDN    0
 RPC1     STD    BY          CLEAR BYTE COUNT 
          SOD    TL 
          MJN    RPC5        IF END OF TRT
  
 RPCA     ADC    *
          CRD    CN          READ TRT WORD
 RPC2     LDD    CN+4 
          LPC    7400        EXTRACT PRESERVED FILE FLAGS 
          SHN    1
          STD    CN+4 
          ZJN    RPC1        IF NONE SET
          SHN    5
          PJN    RPC4        IF NOT PRESERVED FILE CHAIN
          RJM    CQF         CHECK FOR QUEUED FILES 
          ZJN    RPC4        IF QUEUE, DAYFILE, MRT OR DAT TRACK
          LDD    T5 
          STD    CM+1        SET EST ORDINAL
          LDD    T6 
          STD    CM+2        TRACK NUMBER 
          LMD    LT 
          NJN    RPC3        IF NOT LABEL TRACK 
          STD    CM+3 
          LDD    LT          DROP ALL TRACKS AFTER LABEL TRACK
          LPC    3777 
          STD    CM+2 
 RPC3     MONITOR  DTKM 
 RPC4     AOD    BY          ADVANCE BYTE COUNT 
          UJN    RPC2        LOOP FOR ALL BYTES 
 RPT      SPACE  4,15 
**        RPT - RESERVE PRESERVED FILE TRACK. 
* 
*         ENTRY  (A) = ADDRESS OF SYSTEM SECTOR NAME. 
* 
*         EXIT   (A) = TRACK RESERVED.
* 
*         USES   TA, T1, T2, T6, CM - CM+4. 
* 
*         CALLS  DFT, STB, WSS, WVE.
* 
*         MACROS ENDMS, MONITOR, SETMS. 
  
  
 RPT      SUBR               ENTRY/EXIT 
          STM    RPTA 
 RPT1     LDC    500         PRESET INDEX 
          STD    T1 
 RPT2     LDN    0           CLEAR SYSTEM SECTOR
          STM    BFMS+1,T1
          SOD    T1 
          NJN    RPT2        IF NOT END OF SECTOR 
          LDD    MA 
          CWM    *,ON 
 RPTA     EQU    *-1
          SBN    1           MOVE SYSTEM SECTOR NAME TO BUFFER
          CRM    FNSS,ON
          LDN    ZERL        REQUEST TRACK
          CRD    CM 
          LDD    T5          SET EST ORDINAL IN REQUEST 
          STD    CM+1 
          MONITOR  RTCM 
          LDD    CM+4        SET TRACK
          STD    T6 
          ZJN    RPTX        IF TRACK NOT ASSIGNED
          SETMS  IO,NS
          RJM    WSS         WRITE SYSTEM SECTOR
          MJN    RPT4        IF PARITY ERROR
          LDN    VERC 
          STD    TA 
 RPT3     LDD    T6          SET FIRST TRACK
          STD    T2 
          LDC    BFMS        WRITE AND VERIFY WITH EOI SECTORS
          RJM    WVE
          NJN    RPT4        IF WRITE / VERIFY ERRORS 
          LDD    T5 
          STD    CM+1        SET EST ORDINAL
          LDD    T6 
          LPC    3777        SET TRACK
          STD    CM+2 
          LDN    FSMS        SET SECTOR 
          STD    CM+3 
          MONITOR DTKM       SET EOI IN TRT 
          LDN    SPFS 
          RJM    STB         SET FILE PRESERVED 
          LDD    T6 
          LJM    RPTX        RETURN 
  
*         PROCESS BAD TRACK.
  
 RPT4     LDD    T6          DROP AND FLAW TRACK
          RJM    DFT
          NJN    RPT3        IF RETRY DUE TO VERIFICATION ERRORS
          LJM    RPT1        RESERVE ANOTHER TRACK
 SMD      SPACE  4,15 
**        SMD - SET MASS STORAGE DEVICE.
* 
*         ENTRY  (A) = EST ORDINAL. 
* 
*         EXIT   (T5) = EST ORDINAL.
*                (LT) = LABEL TRACK.
*                (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
*                (WB - WB+4) = *STLL* WORD OF MST.
* 
*         USES   CM - CM+4, CN - CN+4, FN - FN+4. 
* 
*         CALLS  ABT, CAT, IPF, RPT, SLI, SME, WDS, WSS.
* 
*         MACROS ENDMS, MONITOR, SETMS. 
  
  
 SMD      SUBR               ENTRY/EXIT 
          RJM    SME         SET MASS STORAGE EQUIPMENT 
          RJM    SLI         SET LOCAL UTILITY INTERLOCK
          LDD    ES+4 
          SHN    3
          ADN    ALGL 
          CRD    CN 
          ADN    MDGL-ALGL
          CRD    FN 
          ADN    STLL-MDGL   READ MST STATUS WORD 
          CRD    WB 
          LDD    FN          SET DAT INDEX
          LPC    377
          STD    DI 
          LDD    CN+1        CHECK LABEL TRACK
          STD    LT 
          NJN    SMDX        IF DEFINED 
          RJM    IPF         INITIALIZE PACK FLAWS
          LDC    NLAB 
          RJM    RPT         RESERVE LABEL TRACK
          STD    CN+1 
          STD    LT          SAVE LABEL TRACK 
          LDD    ES+4 
          SHN    3
          ADN    ALGL 
          CWD    CN          UPDATE MST 
          LDD    LT 
          ZJN    SMD4        IF LABEL TRACK NOT ASSIGNED
          LMC    4000 
          ZJN    SMD3        IF LABEL ON TRACK ZERO 
          LDN    ZERL 
          CRD    CN 
          SETMS  IO,(DF,NS,SM)
 SMD1     LDD    ES+4 
          SHN    3
          ADN    TRLL 
          RJM    CAT         CALCULATE FWA OF TRT 
          ADD    CN+1 
          CRD    FN 
 SMD2     LDM    FN,CN       CHECK TRACK BYTE 
          LMC    3777 
          ZJN    SMD5        IF TRACK FLAWED
          LDD    CN+2 
          LMD    LT 
          LPN    77 
          NJN    SMD4        IF NOT LABEL TRACK 
 SMD3     LJM    SMDX        RETURN 
  
 SMD4     LDC    MESF 
          LJM    ABT         ABORT OPERATION
  
*         FLAG FLAWED TRACK IN SYSTEM SECTOR. 
  
 SMD5     LDD    CN+2        SET TRACK NUMBER 
          LMC    4000 
          STD    T6 
          LDC    3777        FLAWED TRACK INDICATOR 
          STM    FNSS 
          RJM    WSS         WRITE SYSTEM SECTOR
 SMD6     LDC    BFMS+WCSF
          RJM    WDS         WRITE FLAW DATA TO ALL SECTORS 
          AOD    T7 
          SBM    SLM
          NJN    SMD6        IF NOT END OF TRACK
          ENDMS 
          AOD    CN+2        BUMP TRACK COUNT 
          AOD    CN          BUMP BYTE COUNT
          LMN    4
          ZJN    SMD7        IF END OF TRT WORD 
          LJM    SMD2        PROCESS NEXT TRACK 
  
 SMD7     STD    CN 
          AOD    CN+1        BUMP WORD INDEX
          LJM    SMD1        GET NEXT TRT WORD
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMPACS 
*CALL     COMPSES 
          LIST   X
*CALL     COMPWVE 
          LIST   *
          SPACE  4,10 
          USE    LITERALS 
          OVERFLOW  OVLA,BUF
          TITLE  PRESET.
 PRS      SPACE  4,10 
**        PRS - PRESET PROGRAM. 
* 
*         EXIT   (PF) = 0.
*                (LD) = MMF LINK DEVICE.
*                (MI) = MACHINE INDEX.
*                (DE) = DAT ENTRY COUNT.
*                (T2) = FUNCTION TABLE INDEX. 
*                (CA - CA+1) = 0. 
*                (CN - CN+4) = *MMFL* WORD. 
  
  
 PRS      SUBR               ENTRY/EXIT 
          LDD    CP 
          ADN    STSW        FETCH CP ERROR STATUS
          CRD    CM 
          LDD    CM+1 
          NJP    ABT3        IF ERROR FLAG SET
*         LDN    0
          STD    CA          CLEAR DIRECT CELLS 
          STD    CA+1 
          STD    PF 
  
*         SET LINK DEVICE PARAMETERS. 
  
          LDC    MMFL 
          CRD    CN 
          LDD    CN+1        SET LINK EQUIPMENT 
          LPC    777
          STD    LD 
          LDD    CN+4        SET MACHINE INDEX
          STD    MI 
          LDD    CN+3        SET MACHINE MASK 
          STM    UDAA 
          LDD    IR+2        CHECK REQUEST
          LMN    MMSF 
          NJN    PRS2        IF NOT TO MODIFY MST-S 
          LDD    LD 
          ZJN    PRS2        IF NOT MMF ENVIRONMENT 
          SFA    EST
          ADK    EQDE        FETCH LINK DEVICE EST ENTRY
          CRD    CM 
          LDD    CM+4        GET LABEL TRACK
          SHN    3
          ADN    ALGL 
          CRD    CM 
          LDD    CM+1        SAVE LINK DEVICE LABEL TRACK 
          STD    T6 
          LDN    ETLT 
          STD    T7 
          LDN    RECS        GET DAT ENTRY COUNT
          RJM    TED
          ZJN    PRS1        IF NO ERRORS 
          LJM    GDS2        ABORT
  
 PRS1     LDD    MA 
          CRD    CM 
          LDD    CM+4        SET DAT ENTRY COUNT
          SHN    -1 
          STD    DE 
  
*         CHECK ORIGIN TYPE.
  
 PRS2     LDD    CP          FETCH EJT ORDINAL
          ADN    TFSW 
          CRD    CM 
          SBN    TFSW-JCIW   GET SUBSYSTEM ID 
          CRD    WB 
          SFA    EJT,CM      READ EJT 
          ADN    SCLE 
          CRD    CM 
          LDD    CM          CHECK ORIGIN TYPE
          LPN    17 
          LMK    SYOT 
          NJN    PRS4        IF NOT SYSTEM ORIGIN 
  
*         SET ABORT CONDITIONS. 
  
          LDD    WB+2        CHECK SUBSYSTEM ID 
          LMC    DSSI 
          NJN    PRS3        IF NOT DEADSTART SEQUENCING JOB
          LDC    *
          ORG    *-1
          LOC    ABTB 
          UJN    ABT1        CHECK DEVICE TYPE
          LOC    *O 
          STM    ABTB        SET DEADSTART SEQUENCING PATH
          LDC    ABTA 
          STM    ABTA+1      FORCE PP HANG
  
*         PROCESS FUNCTION. 
  
 PRS3     LDD    IR+2 
          SHN    1           SET FUNCTION TABLE INDEX 
          STD    T2 
          ERRNZ  TFCNS-2     CODE DEPENDS ON VALUE
          SBN    TFCNL
          PJN    PRS4        IF INCORRECT REQUEST 
          LDM    TFCN,T2
          STM    IMSA 
          LJM    PRSX        RETURN 
  
 PRS4     LDC    PRSB        * INCORRECT IMS REQUEST.*
          RJM    DFM
          LJM    DPP         DROP PP
          SPACE  4,10 
 EJT$     EQU    0           DEFINE *COMPGFP* ACCESS TO EJT 
*CALL     COMPGFP 
  
  
 PRSB     DATA   C* INCORRECT IMS REQUEST.* 
 TFCN     SPACE  4
**        TFCN - FUNCTION PROCESSOR TABLE.
*         ENTRY = 2 BYTES.
*         INDEXED BY FUNCTION NUMBER * 2. 
* 
*T,       12/  ADDR, 12/  OVLN
*         ADDR   ADDRESS OF FUNCTION PROCESSOR. 
*         OVLN   LAST CHARACTER OF OVERLAY NAME.
  
  
 TFCN     FCN 
          FCN    0,PRS4      INCORRECT REQUEST
 TFCNS    EQU    *O-TFCN
          FCN    INDF,IND    INITIALIZE DEVICE
          FCN    EDTF,EDT    EDIT DIRECT ACCESS FILES 
          FCN    SFLF,SFL    SET / CLEAR FLAWS
          FCN    CSDF,CSD    CHECK SHARED DEVICE STATUS 
          FCN    ILAF,ILA    INITIALIZE LOCAL AREAS 
          FCN    MMSF,MMS    MODIFY MST-S 
          FCN    CINF,CIN    CLEAR INITIALIZE REQUESTS
          FCN    IDFF,IDF    INITIALIZE DAYFILES
          FCN    CITF,CIT    CLEAR *CMS* INTERLOCK
          FCN    ISDF,ISD    INTERLOCK ISD-S
          FCN    IFMXF
 TFCNL    EQU    *-TFCN      LENGTH OF TABLE
          SPACE  4,10 
          OVERFLOW
          OVERLAY  (MODIFY MASS STORAGE TABLES.)
 MMS      SPACE  4,20 
***       FUNCTION *MMSF* - MODIFY MASS STORAGE TABLES. 
* 
*         ENTRY  (IR+3 - IR+4) = ADDRESS (ADDR) OF PARAMETERS.
* 
*T, ADDR  60/ EST ENTRY 
*T,       60/ PFGL WORD OF MST
*T,       60/ PUGL WORD OF MST
*T,       60/ MDGL WORD OF MST
*T,       12/ NC, 12/ EQ, 12/ AI, 12/ CI, 12/ NE
*T,       12/ NP, 48/ UNIT LIST (*LDAM* DEVICES)
*T,       60/ REPLY WORD
*                      NC = NUMBER OF CATALOG TRACKS. 
*                      EQ = EST ORDINAL.
*                      AI = *LDAM* ALGORITHM INDEX. 
*                      CI = CLEAR IN USE AS CHAINED DEVICE. 
*                      NE = NEXT EQUIPMENT IN CHAIN.
  
  
 MMS      ENTRY 
          LDN    PMMSL       READ PARAMETER BLOCK 
          STD    TI 
          RJM    LDA         READ EST ENTRY 
          CRD    ES 
          CRM    BUF,TI 
          LDM    BUF+PMEQ    SET EST ORDINAL
          STD    T5 
          STM    EQNO 
          LDD    LD 
          ZJN    MMS1        IF NOT MMF ENVIRONMENT 
          LMD    T5 
          NJN    MMS1        IF NOT LINK DEVICE 
          LDD    ES+4 
          SHN    3
          ADN    PFGL        RETAIN ORIGINAL PF DESCRIPTION 
          CRM    BUF+PMPF,TR
 MMS1     RJM    SLI         SET LOCAL UTILITY INTERLOCK
          LDD    ES 
          SHN    21-10
          PJN    MMS2        IF NOT REMOVABLE 
          LDD    ES+4        CHECK INITIALIZE OPTION
          SHN    3
          ADN    STLL 
          CRD    CM 
          LDD    CM 
          SHN    21-LIAL+LIAL/12D*12D 
          MJN    MMS2        IF DEADSTART INITIALIZE
          RJM    CTR         CLEAR TRT
  
*         PROCESS CATALOG TRACK COUNT.
  
 MMS2     LDD    ES+4 
          SHN    3
          ADN    ALGL 
          CRD    CM 
          LDM    BUF+PMNC 
          STD    CM+3 
          LDD    ES+4        UPDATE MST WORDS 
          SHN    3
          ADN    ALGL 
          CWD    CM 
          ADN    PFGL-ALGL   STORE *PFGL* AND *PUGL*
          CWM    BUF+PMPF,TR
          ADN    DILL-PFGL-3
          CRD    CN 
          LDD    CN+4        CLEAR ALGORITHM INDEX
          SCN    77 
          STD    CN+4 
          LDM    BUF+PMMD    SET DAT INDEX
          LPC    377
          STD    DI 
          LDM    BUF+PMAI 
          ZJN    MMS4        IF NOT CHANGING ALGORITHM INDEX
          RAD    CN+4 
          LDD    ES+4        UPDATE MST 
          SHN    3
          ADN    DILL 
          CWD    CN 
          LDD    ES+3        SET NEW MNEMONIC 
          STD    CM+3 
          LDN    SMNS        SET MNEMONIC SUBFUNCTION 
          STD    CM+2 
          LDD    T5          SET EST ORDINAL
          STD    CM+1 
          MONITOR  SEQM      CHANGE EQUIPMENT MNEMONIC
          LDD    CN+4 
          LPN    77          EXTRACT ALGORITHM INDEX
          SBN    AIHT+1 
          SHN    0-21        CALCULATE *SCSM* SUBFUNCTION 
          ADN    DAPS 
          ERRNZ  DAPS+1-EAPS  CODE DEPENDS ON VALUE 
          STD    CM+3 
          SBN    DAPS 
          SHN    3           APPEND CHANNEL PRESENT STATUS
          LMN    11 
          RJM    CCS
          ZJN    MMS4        IF NO ACCESS PATH CHANGE 
*         LDD    T5 
*         STD    CM+1 
          MONITOR  SCSM      SET CHANNELS FOR ACCESS
  
*         PROCESS REMOVABLE DEVICE. 
  
 MMS4     LDD    ES 
          SHN    21-10
          PJN    MMS6        IF NOT REMOVABLE 
          LDM    BUF+PMCI 
          ZJN    MMS5        IF SETTING DEVICE IN USE 
          LCN    0
 MMS5     LMN    LDIU        SET/CLEAR DEVICE IN USE
          RJM    TLB
 MMS6     LDN    UPGA+UPDA
          RJM    UEC         UPDATE EXTENDED MEMORY DATA
  
*         UPDATE MST. 
  
          LDD    ES+4 
          SHN    3
          ADN    DULL        GET DEVICE USAGE WORD
          CRD    CN 
          ADN    STLL-DULL   GET STATUS WORD
          CRD    CM 
          ADN    DDLL-STLL   STORE UNIT LIST
          CWM    BUF+PMAL,ON
          LDD    CM+4        SET NEXT EST ORDINAL IN CHAIN
          LPN    7
          SHN    22-3 
          ADM    BUF+PMNE 
          SHN    3
          STD    CM+4 
          RJM    GAS         SET ALTERNATE LABEL SECTOR 
          STD    CN 
          LDD    ES+4 
          SHN    3
          ADN    STLL        UPDATE DEVICE STATUS 
          CWD    CM 
          SBN    STLL-DULL   STORE ALTERNATE LABEL SECTOR IN MST
          CWD    CN 
          LDD    ES 
          SHN    21-4 
          PJN    MMS9        IF NOT INDEPENDENT SHARED DEVICE 
          LDD    CM+1 
          LPN    77 
          LMN    STLE 
          ZJN    MMS7        IF LABEL ERROR ON DEVICE 
          LDD    CM 
          LPN    MLPTU
          ZJN    MMS9        IF *LPTU* INTERLOCK NOT SET
 MMS7     LDN    ZERL 
          CRD    CN 
          LDN    0
          STD    T1 
          LDC    MMFL 
          CRD    CM 
          LDD    CM          SET MACHINE ID IN DIT
          STD    CN+4 
 MMS8     RJM    SDL
          ADD    T1          ADD OFFSET 
          CWD    CN 
          LDN    0           CLEAR REMAINDER OF DIT 
          STD    CN+4 
          AOD    T1 
          LMN    MISD 
          NJN    MMS8        IF NOT END OF DIT
 MMS9     RJM    LDA
          ADN    PMRP/5      REWRITE REPLY WORD 
          CWM    BUF+PMRP,ON
          LJM    DPP         EXIT 
 CCS      SPACE  4,10 
**        CCS - CHECK CHANNEL STATUS. 
* 
*         ENTRY  (A) = REQUESTED STATUS.
*                (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
* 
*         EXIT   (A) = (CM+2).
*                    = 0 IF REQUESTED STATUS NOT PRESENT. 
*                    = CHANNEL DESCRIPTOR IF STATUS FOUND.
* 
*         USES   T2.
  
  
 CCS2     LDI    CM+3        SET CHANNEL DESCRIPTOR 
 CCS3     STD    CM+2 
  
 CCS      SUBR               ENTRY/EXIT 
          STD    T2 
          LDN    ES+1        INITIALIZE FOR SCAN
          STD    CM+3 
 CCS1     LDI    CM+3        CHECK CHANNEL
          SHN    0-10 
          SCN    6           REMOVE STATE FIELD 
          LMD    T2 
          ZJN    CCS2        IF REQUESTED STATUS PRESENT
          AOD    CM+3 
          LMN    ES+3 
          NJN    CCS1        IF ANOTHER CHANNEL TO CHECK
*         LDN    0
          UJN    CCS3        RETURN 
 CTR      SPACE  4,15 
**        CTR - CLEAR TRT AND MST.
* 
*         ENTRY  (T5) = EST ORDINAL (REMOVABLE DEVICE). 
*                (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
* 
*         EXIT   MST UPDATED. 
*                TRT CLEARED. 
* 
*         USES   T6, CM - CM+4, CN - CN+4, WB - WB+4. 
* 
*         CALLS  CAT, STB.
* 
*         MACROS MONITOR. 
  
  
 CTR      SUBR               ENTRY/EXIT 
          LDD    ES 
          SHN    21-4 
          PJN    CTR1        IF NOT INDEPENDENT SHARED DEVICE 
          LDN    PSNI 
          STM    CTRA 
 CTR1     LDN    SDIS        SET DEVICE INTERLOCK 
          RJM    STB
          LDN    ZERL 
          CRD    CM 
          LDD    ES+4 
          SHN    3
          ADK    TDGL 
          CRD    CN 
          ADN    ACGL-TDGL   CLEAR DEVICE ACTIVITY WORD 
          CWD    CM 
          ADN    ALGL-ACGL   CLEAR ALLOCATION WORD
          CWD    CM 
          ADN    STLL-ALGL   READ STATUS WORD 
          CRD    WB 
          ADN    TRLL-STLL
          RJM    CAT         CALCULATE FWA OF TRT 
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          LDD    CN+2        SET TRT LENGTH 
          STD    CM+2 
          SHN    2
          STD    CN+4        TRACK COUNT
          LDC    4000 
          STD    CN+3 
 CTRA     UJN    CTR2        CLEAR TRT/MRT/DIT
*         PSN                (INDEPENDENT SHARED DEVICE)
          LDD    CN+2 
          ADN    7
          SHN    -3          SET MRT LENGTH 
          ADN    MISD 
          RAD    CM+2        CLEAR TRT
 CTR2     LDN    0
          STD    CM+1 
          MONITOR  CSTM 
*         LDN    0           CLEAR USER COUNTS
          STD    WB+3 
          STD    WB+1        CLEAR ERROR STATUS 
          LDD    ES 
          SHN    21-6 
          PJN    CTR3        IF DEVICE AVAILABLE
          LDN    MLPTU
          STD    WB          CLEAR STATUS FLAGS 
 CTR3     LDD    ES+4 
          SHN    3
          ADK    TDGL 
          CWD    CN 
          ADN    STLL-TDGL   STORE STATUS WORD
          CWD    WB 
          LDN    CDIS        CLEAR DEVICE INTERLOCK 
          RJM    STB
          LDD    CN          FLAW ODD TRACKS OFF END OF TRT 
          STD    T6 
 CTR4     LPN    3
          NJN    CTR5        IF ODD TRACK COUNT 
          LJM    CTRX        RETURN 
  
 CTR5     LDN    STFS        SET TRACK FLAWED 
          RJM    STB
          AOD    T6 
          UJN    CTR4        CHECK NEXT TRACK 
 GAS      SPACE  4,10 
**        GAS - GET ALTERNATE LABEL SECTOR. 
* 
*         ENTRY  (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
* 
*         EXIT   (A) = ALTERNATE LABEL SECTOR.
* 
*         USES   T1.
  
  
 GAS1     LDN    2           ADVANCE TABLE ADDRESS
          RAD    T1 
 GAS2     LDI    T1 
          ZJN    GASX        IF END OF TABLE
          LMD    ES+3 
          NJN    GAS1        IF NOT MATCHING DEVICE MNEMONIC
          LDM    1,T1 
  
 GAS      SUBR               ENTRY/EXIT 
          LDC    TALS 
          STD    T1 
          UJN    GAS2        ENTER SEARCH LOOP
  
  
 TALS     BSS    0
          LIST   G
          TBL    "MSEQ" 
          LIST   *
          PURGMAC  TBLM 
          CON    0           END OF TABLE 
          SPACE  4,10 
          OVERFLOW  OVLA,BUF
          OVERLAY  (EDIT TRT / INITIALIZE LOCAL AREAS.) 
 EDT      SPACE  4,10 
***       FUNCTION *EDTF* - EDIT DEVICE TRT.
* 
*         ENTRY  (IR+3 - IR+4) = ADDRESS (ADDR) 0F PARAMETERS.
* 
*T, ADDR  12/ MASK, 12/ ESTO, 36/ 0 
  
  
 EDT      ENTRY 
          RJM    LDA         READ PARAMETER WORD
          CRD    CN 
          LDC    BUF-1       INITIALIZE BUFFER INDEX
          STD    TI 
 EDT1     AOD    TI          ADVANCE BUFFER INDEX 
          LDD    CN 
          LPC    1           UNPACK MASK BITS 
 EDTA     EQU    *-1
          STI    TI          SET IN MASK TABLE
          LDM    EDTA 
          RAM    EDTA        SHIFT BIT
          SHN    -10
          ZJN    EDT1        IF NOT END OF MASK 
  
*         SET UP TRT SEARCH FOR SELECTED FILES. 
  
          LDD    CN+1        SET MASS STORAGE EQUIPMENT 
          RJM    SME
          RJM    TRT         UPDATE TRT 
          LDD    ES+4 
          SHN    3
          ADK    TDGL        GET TRACK COUNT FROM MST 
          CRD    CN 
          SETMS  IO,(DF,NS,RW)
          LDD    CN          SET NUMBER OF TRACKS 
          STD    CN+2 
          UJN    EDT5        ENTER LOOP 
  
 EDT2     LDC    MESN        ISSUE SYSTEM SECTOR ERROR MESSAGE
          RJM    STM
  
 EDT3     LDD    PF 
          ZJN    EDT5        IF TRACK NOT INTERLOCKED 
          LDN    CTIS 
          RJM    STB         CLEAR TRACK INTERLOCK
*         LDN    0
 EDT4     STD    PF          CLEAR TRACK INTERLOCKED STATUS 
  
*         SCAN TRT FOR PRESERVED FILES. 
  
 EDT5     SOD    CN+2 
          PJN    EDT7        IF NOT END OF TRACKS 
 EDT6     LJM    DPP1        SET CHECKPOINT AND DROP
  
 EDT7     LMC    4000        SET TRACK BIT
          RJM    CTB         CHECK TRACK IN TRT 
          SHN    -4 
          ZJN    EDT5        IF PRESERVED FILE BIT NOT SET
          RJM    CST         CHECK SPECIAL TRACKS 
          ZJN    EDT5        IF SPECIAL PF TRACK
          MJN    EDT5        IF DAT OR IQFT TRACK 
          LDN    0           READ SYSTEM SECTOR 
          RJM    RSS
          NJN    EDT2        IF SYSTEM SECTOR ERROR 
          LDM    FNSS+4 
          SHN    -6 
          LMN    PMFT 
          ZJN    EDT9        IF DIRECT ACCESS FILE
          LMN    FAFT&PMFT
          NJP    EDT10       IF NOT FAST ATTACH FILE
 EDT9     LDM    CTSS+FCUI+1
          LPN    7           SET USER INDEX 
          STD    TI 
          LDM    BUF,TI 
          ZJN    EDT10       IF MASK DOES NOT MATCH 
          RJM    RRS
  
*         IF FILE HAS ACTIVE USERS, SET *PURGE* BIT IN SYSTEM SECTOR. 
  
          LDM    CASS        CHECK FOR ACTIVE USERS 
          LPN    32 
          ADM    UCSS+1 
          ADM    UCSS+2 
          ADM    UCSS+3 
          ADM    UCSS+4 
          ADM    FISS 
          ZJN    EDT11       IF NO USERS
          LDM    CASS 
          SCN    40 
          LMN    40          SET PURGE BIT
          STM    CASS 
          RJM    WSS         UPDATE SYSTEM SECTOR 
 EDT10    ENDMS 
          LJM    EDT3        PROCESS NEXT TRACK 
  
*         FILES WHICH MATCH WITH THE MASK BELONG TO MASTER DEVICE 
*         WHICH HAS BEEN INITIALIZED AND MUST BE DROPPED. 
  
 EDT11    ENDMS 
          LDD    T5          RELEASE TRACKS 
          STD    CM+1 
          LDD    T6 
          STD    CM+2 
          MONITOR  DTKM 
*         LDN    0
          LJM    EDT4        CLEAR TRACK INTERLOCKED STATUS 
 ILA      SPACE  4,10 
***       FUNCTION *ILAF* - INITIALIZE INACTIVE LOCAL AREAS.
* 
*         ENTRY  (IR+4) = EST ORDINAL.
  
  
 ILA      ENTRY 
          LDC    MMFL        GET MACHINE ID CODE
          CRM    BUF,ON 
          LDD    LD          SET LINK EQUIPMENT 
          STD    T5 
          ZJN    ILA2        IF NOT MMF ENVIRONMENT 
          LDN    5*MXMF 
          STM    PLAA 
          SETMS  IO 
          LDD    CM+4        GET LINK DEVICE LABEL TRACK
          SHN    3
          ADN    ALGL 
          CRD    CM 
          LDD    CM+1 
          STD    T6 
          LDN    ETLT        SET SECTOR ADDRESS 
          STD    T7 
          LDC    BUF-2       READ MACHINE ID CODES
          RJM    RDS
          PJN    ILA1        IF NO READ ERRORS
          LJM    GDS2        ABORT
  
 ILA1     ENDMS              RELEASE CHANNEL
  
*         GET LOCAL AREA SECTOR.
  
 ILA2     LDD    IR+4        SET MASS STORAGE EQUIPMENT 
          RJM    SME
          LDD    ES          CHECK DEVICE USAGE 
          SHN    21-4 
          PJN    ILA3        IF NOT INDEPENDENT SHARED DEVICE 
          LDC    BUF-4       READ DIT TO BUFFER 
          RJM    RDT
          LDC    MISD*5      SET TABLE LENGTH 
          STM    PLAA 
 ILA3     LDD    ES+4 
          SHN    3
          ADN    STLL        GET STATUS WORD FROM MST 
          CRD    CM 
          LDD    CM+1        CHECK ERROR FIELD
          LPN    77 
          LMN    STLE 
          ZJN    ILA4        IF LABEL ERROR 
          RJM    GLA         GET LOCAL AREA SECTOR
          ZJN    ILA4        IF NO SLA OR THIS MACHINE NOT PRESENT
          LDN    0
          STD    TI          CLEAR INDEX LOCATIONS
          STD    TA 
  
*         INITIALIZE INACTIVE LOCAL AREAS.
  
          LDM    BFMS+1      CHECK SECTOR WORD COUNT
          ZJN    ILA4        IF EMPTY SECTOR
          ADC    -101 
          MJN    ILA5        IF LEGAL WORD COUNT
 ILA4     CMSTF  GLAP        CLEAR SECTOR OF LOCAL AREAS FLAG 
          LDC    MESD        * EQXXX, LOCAL AREA SECTOR RESET.* 
          UJN    ILA7        COMPLETE PROCESSING
  
 ILA5     RJM    PLA         PROCESS LOCAL AREA 
          LDN    2*5
          RAD    TI          ADVANCE SLA INDEX
          LDN    2
          RAD    TA          ADVANCE SECTOR INDEX 
          SBM    BFMS+1 
          MJN    ILA5        IF NOT END OF SECTOR DATA
  
*         REFORMAT SECTOR AND UPDATE DEVICE.
  
          RJM    RFS         REFORMAT SECTOR
          ZJN    ILA6        IF EMPTY SECTOR
          SETMS  IO,(DF,NS,RW)
          LDC    BFMS+WLSF   REWRITE SECTOR 
          RJM    WDS
          ENDMS 
 ILA6     LDC    MESC        * EQXXX, LOCAL AREAS INITIALIZED.* 
 ILA7     RJM    DFM
          SMSTF  LCKP        SET EQUIPMENT CHECKPOINT 
          LDN    2
          LJM    CKC         SET CHECKPOINT REQUEST 
 PLA      SPACE  4,10 
**        PLA - PROCESS LOCAL AREAS.
* 
*         ENTRY  (TI) = INDEX TO LOCAL AREA.
*                (BUF) = LIST OF ACTIVE MACHINE ID CODES. 
* 
*         EXIT   TRACKS DROPPED FOR INACTIVE AREAS. 
* 
*         USES   T1, T2, CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 PLA      SUBR               ENTRY/EXIT 
          LDN    0
          STD    T2 
 PLA1     LDM    BUF,T2      COMPARE ID CODES 
          LMM    BFMS+2,TI
          ZJN    PLAX        IF ACTIVE AREA 
          LDN    5
          RAD    T2          ADVANCE INDEX
          LMC    5
 PLAA     EQU    *-1
*         LMC    5*MXMF      (MMF ENVIRONMENT)
          NJN    PLA1        IF NOT END OF ID CODES 
  
*         DROP INACTIVE DAYFILE TRACKS. 
  
          LDN    5           SET DAYFILE INDEX
          STD    T2 
          LDC    BFMS+2 
          ADD    TI 
          STM    PLAB        SET LOCAL AREA ADDRESS 
          STM    PLAC 
          STD    T1 
 PLA2     LDM    **,T2       CHECK FOR DAYFILE TRACK
 PLAB     EQU    *-1
          ZJN    PLA3        IF TRACK NOT RESERVED
          STD    CM+2 
          LDD    T5          SET EQUIPMENT
          STD    CM+1 
          MONITOR DTKM
 PLA3     AOD    T2          BUMP INDEX 
          LMN    EXDF+5 
          NJN    PLA2        IF NOT END OF DAYFILES 
          STD    T2 
 PLA4     LDN    0           CLEAR LOCAL AREA 
          STM    **,T2
 PLAC     EQU    *-1
          AOD    T2 
          LMN    2*5
          NJN    PLA4        IF NOT END OF CLEAR
          LJM    PLAX        RETURN 
 RFS      SPACE  4,10 
**        RFS - REFORMAT SECTOR.
* 
*         ENTRY  (BFMS) = REMAINING LOCAL AREAS.
* 
*         EXIT   (A) = 0 IF SECTOR EMPTY. 
* 
*         USES   T1 - T3, TI. 
* 
*         MACROS CMSTF. 
  
  
 RFS      SUBR               ENTRY/EXIT 
          LDN    0
          STD    T1          CLEAR INDICES
          STD    T2 
          STD    TI          CLEAR SECTOR WORD COUNT
          STD    T3 
 RFS1     LDM    BFMS+2,T2
          ZJN    RFS4        IF EMPTY LOCAL AREA
          LDD    T2 
          LMD    T3 
          ZJN    RFS3        IF LOCAL AREA SECTOR MOVE NOT REQUIRED 
 RFS2     LDM    BFMS+2,T2
          STM    BFMS+2,T3   MOVE DATA
          AOD    T3 
          LDN    0           CLEAR ENTRY
          STM    BFMS+2,T2
          AOD    T2          ADVANCE INDICES
          AOD    T1 
          LMN    2*5
          NJN    RFS2        IF NOT END OF MOVE 
          STD    T1 
 RFS3     LDN    2           ADVANCE SECTOR WORD COUNT
          RAD    TI 
          UJN    RFS5        CONTINUE REFORMAT
  
 RFS4     LDN    2*5         ADVANCE SEARCH INDEX 
          RAD    T2 
 RFS5     LCN    2           DECREMENT WORD COUNT 
          RAM    BFMS+1 
          NJN    RFS1        IF NOT END OF SECTOR 
          LDD    TI          SET SECTOR WORD COUNT
          STM    BFMS+1 
          NJN    RFS6        IF NOT EMPTY SECTOR
  
*         CLEAR LOCAL AREA SECTOR BIT.
  
          CMSTF  GLAP 
 RFS6     LJM    RFSX        RETURN 
 RRS      SPACE  4,15 
**        RRS - REREAD SYSTEM SECTOR IF TRACK INTERLOCK NOT SET.
* 
*         ENTRY  (PF) = TRACK INTERLOCK STATUS. 
* 
*         EXIT   TO CALLER IF TRACK INTERLOCKED ON ENTRY. 
* 
*         EXIT   (A) = (T6) IF TRACK NO LONGER RESERVED.
*                    = RESPONSE FROM *RSS*. 
*                TO PREVIOUS *RSS* CALLER.
* 
*         CALLS  RSS, STI.
* 
*         MACROS ENDMS. 
  
  
 RRS      SUBR               ENTRY/EXIT 
          LDD    PF 
          NJN    RRSX        IF FIRST TRACK INTERLOCKED 
          ENDMS 
          LDM    RSS         CHANGE RETURN TO LAST *RSS* CALLER 
          STM    RRS
          RJM    STI         SET TRACK INTERLOCK
          NJN    RRSX        IF TRACK NO LONGER RESERVED
*         LDN    0           REREAD SYSTEM SECTOR 
          RJM    RSS
          UJN    RRSX        RETURN 
          SPACE  4,10 
          OVERFLOW  OVLA,BUF
          OVERLAY  (SHARED MASS STORAGE FUNCTIONS.),INT 
 CSD      SPACE  4,15 
***       FUNCTION *CSDF* - CHECK SHARED DEVICE STATUS. 
* 
*         ENTRY  (IR+3 - IR+4) = ADDRESS (ADDR) OF PARAMETERS.
*                (T5) = EST ORDINAL.
*                (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
*                (WB - WB+4) = PARAMETER WORD AT ADDR.
* 
*T, ADDR  12/ ESTO, 48/ 0 
* 
*         EXIT   WHEN DEVICE UNLOADED ON OTHER MACHINES - 
* 
*T, ADDR  12/ 7777, 48/ 0 
  
  
 CSD      ENTRY 
          LDD    LD 
          ZJP    CSD7        IF INDEPENDENT SHARED DEVICE 
          RJM    CRI         CHECK RECOVERY INTERLOCK 
          RJM    GDS         GET DAT TRACK
          ZJN    CSD2        IF NOT DEFINED IN DAT
          LDM    BFMS+2+4,TI GET MST SECTOR 
          STD    T6 
          LDN    0           SET SECTOR 
          STD    T7 
          LDM    BFMS+2+5+4,TI  GET DAT STATUS
          STD    WB 
          SETMS  IO,(DF,NS) 
          LDC    BFMS        READ MST FROM LINK DEVICE
          RJM    RDS
          MJP    GDS2        IF READ ERROR
          ENDMS 
          STD    T2          INITIALIZE MACHINE INDEX 
  
*         CHECK UNLOAD STATUS IN OTHER MACHINES.
  
          LDC    BFMS+2+STLL*5
          STD    TI 
 CSD1     AOD    T2          INCREMENT DEVICE INDEX 
          LMN    MXMF+1 
 CSD2     ZJN    CSD5        IF END OF LOCAL AREAS
          LDI    TI 
          LPN    MLDUL
          NJN    CSD4        IF UNLOADED
          LDD    T2 
          LMD    MI 
          ZJN    CSD3        IF THIS MACHINE
          LDD    WB 
 CSDA     SHN    21-0 
          MJN    CSD6        IF DEVICE ACTIVE ON ANOTHER MACHINE
          UJN    CSD4        ADVANCE SEARCH 
  
 CSD3     LDI    TI          CHECK THIS MACHINE STATUS
          SHN    21-LIAL+LIAL/12D*12D 
          MJN    CSD4        IF DEADSTART INITIALIZE
          LDM    1,TI 
          LPN    77          CHECK ERROR CONDITION
          LMN    STLE 
          ZJN    CSD4        IF LABEL ERROR 
          LDM    3,TI 
          NJN    CSD6        IF ACTIVE USERS ON DEVICE
 CSD4     LDN    LLLL*5 
          RAD    TI          ADVANCE SEARCH INDEX 
          SOM    CSDA 
          UJN    CSD1        LOOP 
  
 CSD5     LCN    0
          STD    WB 
          RJM    LDA         SET ADDRESS OF PARAMETER BLOCK 
          CWD    WB 
          LJM    DPP         EXIT 
  
 CSD6     LDM    2,TI        SET MACHINE ID IN MESSAGE
          STM    CSDD 
          LDC    CSDC        SET MESSAGE ADDRESS
          LJM    RCL         RECALL  *IMS*
  
 CSD7     LDD    ES+4        CHECK ERROR STATUS 
          SHN    3
          ADN    STLL 
          CRD    CM 
          LDD    CM+1 
          LPN    77 
          LMN    STLE 
          ZJN    CSD5        IF LABEL ERROR 
          LDD    CM 
          SHN    21-LIAL+LIAL/12D*12D 
          MJN    CSD10       IF DEADSTART INITIALIZE
          LDC    BFMS        READ DIT TO BUFFER 
          RJM    RDT
          LDC    MMFL        GET MACHINE ID 
          CRD    T7 
          LDC    BFMS+2      SET SEARCH INDEX 
          STD    TI 
 CSD8     LDM    2,TI 
          ZJN    CSD9        IF SLOT NOT ASSIGNED 
          LDM    1,TI 
          LPN    2
          NJN    CSD9        IF NON-REMOVABLE DEVICE UNLOADED 
          LDM    2,TI 
          LMD    T7 
          NJN    CSD11       IF NOT THIS MACHINE
 CSD9     LDN    5
          RAD    TI 
          LMC    BFMS+2+5*MISD
          NJN    CSD8        IF NOT END OF SEARCH 
 CSD10    LJM    CSD5        SET RESPONSE 
  
 CSD11    LJM    CSD6        SET BUSY RESPONSE
  
 CSDC     DATA   H* EQXXX, BUSY ON MID *
 CSDD     DATA   C*XX.* 
 ISD      SPACE  4,15 
***       FUNCTION *ISDF* - INTERLOCK INDEPENDENT SHARED DEVICE.
* 
*         ENTRY  (IR+3 - IR+4) = ADDRESS (ADDR) OF PARAMETERS.
*                (T5) = EST ORDINAL.
*                (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
*                (WB - WB+4) = PARAMETER WORD AT ADDR.
* 
*T, ADDR  12/ ESTO, 47/ 0, 1/ F 
*                F = 0 TO CLEAR INTERLOCK.
*                  = 1 TO SET INTERLOCK.
* 
*         EXIT
* 
*T, ADDR  12/ 7777, 48/ 0 
  
  
 ISD11    LDC    ISDD        ISSUE MESSAGE TO DAYFILE 
          RJM    DFM
          LJM    DPP         EXIT 
  
 ISD      ENTRY 
          LDD    ES+4        FETCH LABEL TRACK WORD FROM MST
          SHN    3
          ADN    ALGL 
          CRD    CN 
          LDC    MMFL        GET MACHINE ID 
          CRD    FN 
          LDD    CN+1        SET LABEL TRACK
          STD    T6 
          LDN    0
          STD    T7 
          SETMS  IO,(DE,DF,NS,RW) 
          LDC    BFMS        READ LABEL SECTOR
          RJM    RDS
          MJN    ISD11       IF READ ERROR
          LDC    DISS 
          STD    TI 
 ISD1     LDM    3,TI        CHECK INITIALIZE INTERLOCK 
          LPN    1
          ZJN    ISD2        IF INTERLOCK NOT SET 
          LJM    ISD7        PROCESS INTERLOCK SET
  
 ISD2     LDM    4,TI 
          LMD    FN 
          NJN    ISD3        IF NOT THIS MACHINE
          LDD    TI          SAVE ADDRESS FOR THIS MACHINE
          ADN    3
          STM    ISDA 
 ISD3     LDN    5           INCREMENT ADDRESS
          RAD    TI 
          LMC    DISS+5*MISD
          NJN    ISD1        IF NOT END OF SEARCH 
          LDD    WB+4        CHECK FUNCTION 
          ZJN    ISD5        IF CLEARING INTERLOCK
          AOM    **          SET INTERLOCK
 ISDA     EQU    *-1
 ISD4     RJM    CDC         COMPUTE LABEL CHECKSUM 
          STM    CKSS 
          LDC    BFMS+WLSF   REWRITE LABEL SECTOR 
          RJM    WDS
 ISD5     ENDMS 
          LCN    0           SET RESPONSE 
          STD    WB 
          RJM    LDA
          CWD    WB 
          LDD    WB+4 
          ZJN    ISD6        IF CLEARING INTERLOCK
          SMSTF  LPTU        SET TRT IN CM FLAG 
 ISD6     LJM    DPP         EXIT 
  
 ISD7     LDM    4,TI 
          LMD    FN 
          NJN    ISD8        IF NOT THIS MACHINE
          LDD    WB+4 
          NJN    ISD5        IF SETTING THE INTERLOCK 
          SOM    3,TI 
          UJP    ISD4        REWRITE SECTOR 
  
 ISD8     LDD    ES+4        FETCH MST ERROR STATUS 
          SHN    3
          ADN    STLL 
          CRD    CM 
          LDD    CM+1        CHECK ERROR STATUS 
          LPN    77 
          LMN    STLE 
          ZJN    ISD9        IF LABEL ERROR 
          LDD    CM 
          SHN    21-LIAL+LIAL/12D*12D 
          PJN    ISD10       IF NOT DEADSTART INITIALIZE
 ISD9     LJM    ISD5        SET INTERLOCK COMPLETE 
  
 ISD10    LDM    4,TI        SET MACHINE ID IN MESSAGE
          STM    ISDC 
          ENDMS 
          LDC    ISDB        DISPLAY MESSAGE
          LJM    RCL         RECALL *IMS* 
  
  
 ISDB     DATA   H* EQXXX, INTERLOCKED BY MID  *
 ISDC     DATA   C*XX.* 
 ISDD     DATA   C* EQXXX, LABEL READ ERROR.* 
 CRI      TITLE  SUBROUTINES. 
**        CRI - CHECK RECOVERY INTERLOCK. 
* 
*         EXIT   TO *RCL* IF INTERLOCK NOT SET. 
* 
*         USES   CN - CN+4. 
* 
*         CALLS  IFR, RCL.
  
  
 CRI1     LDC    4000        SET INTERLOCK FLAG 
          RAD    CN+2 
          LDC    MMFL        STORE DAT INTERLOCK STATUS 
          CWD    CN 
 CRI2     AOM    RCLB        FLAG DAT INTERLOCK SET 
  
 CRI      SUBR               ENTRY/EXIT 
          LDC    MMFL 
          CRD    CN 
          LDD    CN+2        CHECK DAT INTERLOCKED
          SHN    21-13
          MJN    CRI2        IF INTERLOCKED BY THIS MACHINE 
          LDN    DATI        GET DAT INTERLOCK
          RJM    IFR
          ZJN    CRI1        IF INTERLOCK SET 
          LDC    CRIA        RECALL WAITING FOR INTERLOCK 
          UJN    RCL         RECALL *IMS* 
  
 CRIA     DATA   C*$WAITING - RECOVERY INTERLOCK.*
 RCL      SPACE  4,10 
**        RCL - RECALL *IMS*. 
* 
*         ENTRY  (A) = MESSAGE ADDRESS. 
*                (IR - IR+4) = *IMS* CALL.
  
  
 RCL      STM    RCLA        WRITE MESSAGE TO CP
          LDD    CP 
          ADN    MS2W 
          CWM    **,TR
 RCLA     EQU    *-1
 RCLB     LDN    0
*         LDN    1           (DAT INTERLOCK SET)
          ZJN    RCL1        IF DAT NOT INTERLOCKED 
          LCN    DATI 
          RJM    IFR
          LDC    MMFL        CLEAR DAT INTERLOCK FLAG 
          CRD    CM 
          LDC    4000 
          RAD    CM+2 
          LDC    MMFL 
          CWD    CM 
 RCL1     LDN    ZERL 
          CRD    CM 
          LDD    MA          RECALL REQUEST 
          CWM    IR,ON
          CWD    CM 
          MONITOR  RECM 
          LJM    PPR         EXIT 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPCLC 
          SPACE  4
          OVERFLOW  OVLA,BFMS 
 INT      SPACE  4,10 
**        INT - INITIALIZE OVERLAY. 
* 
*         ENTRY  (IR - IR+4) = *IMS* CALL.
* 
*         EXIT   (ES - RS+4) = EST ENTRY. 
*                (WB - WB+4) = PARAMETER WORD FOR *IMS* CALL. 
*                (T5) = EST ORDINAL FROM THE PARAMETER WORD.
* 
*         CALLS  C2D, LDA.
* 
*         MACROS SFA. 
  
  
 INT      SUBR               ENTRY/EXIT 
          RJM    LDA         READ PARAMETER WORD
          CRD    WB 
          SFA    EST,WB      GET EST ENTRY
          ADK    EQDE 
          CRD    ES 
          LDD    WB          SET EST ORDINAL
          STD    T5 
          STM    EQNO 
          RJM    C2D
          STM    CSDC+2 
          STM    ISDB+2 
          STM    ISDD+2 
          LDD    WB 
          SHN    -6 
          ADC    2RQ0 
          STM    CSDC+1 
          STM    ISDB+1 
          STM    ISDD+1 
          UJP    INTX        RETURN 
          OVERLAY  (MISCELLANEOUS FUNCTIONS.) 
 SFL      SPACE  4,10 
***       FUNCTION *SFLF* - SET FLAWS.
* 
*         ENTRY  (IR+3 - IR+4) = ADDRESS (ADDR) OF PARAMETERS.
* 
*T, ADDR  12/ TYPE, 12/ 0, 12/ ESTO, 12/ 0, 12/ TRACK 
* 
*                      TYPE  0 = END OF TABLE.
*                            1 = SET FLAW.
*                            2 = CLEAR FLAW.
  
  
 SFL      ENTRY 
          LDN    PNFE        PARAMETER BLOCK WORD COUNT 
          STD    TI 
          RJM    LDA         READ FLAW LIST 
          CRM    BUF,TI 
          LDN    0           SET END OF BUFFER
          STM    BUF+PNFE*5 
          LDM    BUF+2       SET MASS STORAGE EQUIPMENT 
          RJM    SME
          LDD    ES+4 
          SHN    3
          ADK    TDGL        FETCH TRT LENGTH FROM MST
          CRD    CN 
          RJM    TRT         UPDATE TRT 
          LDN    0
          STD    CA          CLEAR FLAW REQUESTS PROCESSED
          STD    T4 
          STD    CA+1        CLEAR FLAWS NOT PROCESSED
          STD    TI 
          LDC    MESBL-1     SET MESSAGE BUFFER ADDRESS FOR FLAWS 
          STD    TA 
          LDN    5+1         NUMBER OF TRACKS + 1 PRINTED PER LINE
          STD    T3 
          UJN    SFL4        ENTER LOOP 
  
*         ENTER FLAW NOT PROCESSED IN MESSAGE.
  
 SFL1     SOD    T3 
          NJN    SFL2        IF NOT YET A FULL LINE 
          STI    TA          COMPLETE PREVIOUS LINE 
          AOD    T4          INCREMENT LINE COUNT 
          LDN    5           NUMBER OF TRACKS PRINTED PER LINE
          STD    T3 
 SFL2     AOD    CA+1        COUNT FLAWS NOT PROCESSED
          AOD    TA 
          LDD    T6          PLACE TRACK IN MESSAGE 
          SHN    -6 
          RJM    C2D
          STI    TA 
          AOD    TA 
          LDD    T6 
          RJM    C2D
          STI    TA 
          AOD    TA 
          LDC    2R,
          STI    TA 
  
*         INCREMENT TO NEXT FLAW REQUEST. 
  
 SFL3     AOD    CA          INCREMENT REQUEST COUNTER
          LDN    5
          RAD    TI          ADVANCE TO NEXT REQUEST
  
*         CHECK FLAW REQUEST. 
  
 SFL4     LDM    BUF+4,TI    CHECK TRACK BIT
          RJM    CTB
          LDM    BUF,TI 
          ZJN    SFL9        IF END OF LIST 
          LDD    T2 
          SBD    CN+2 
          PJN    SFL8        IF OUT OF TRT
          LDM    CM,T1       CHECK LINKAGE BYTE 
          LMC    3777 
          NJN    SFL7        IF TRACK NOT PREVIOUSLY FLAWED 
          LDM    BUF,TI      CHECK REQUEST TYPE 
          SBN    1
 SFL5     ZJN    SFL3        IF SET REQUEST 
          LDN    CTFS&STFS
 SFL6     LMK    STFS        SET FLAW REQUEST 
          RJM    STB
          ZJN    SFL5        IF NO REJECT 
          UJN    SFL8        SET FLAW NOT PROCESSED 
  
 SFL7     LDM    BUF,TI 
          LMN    2
          ZJN    SFL5        IF CLEAR REQUEST 
          LDD    CM+4 
          ZJN    SFL6        IF TRACK NOT RESERVED
 SFL8     LJM    SFL1        SET FLAW NOT PROCESSED 
  
 SFL9     LDD    CA          COMPUTE FLAWS PROCESSED
          SBD    CA+1 
          RJM    C2D         CONVERT TO DISPLAY CODE
          STM    MESA+4 
          LDC    MESA        * EQXXX, YY TRACKS FLAWED.*
          RJM    DFM
          LDC    ERLN+MESA   ISSUE MESSAGE TO ERRLOG
          RJM    DFM
          LDD    CA+1 
          ZJN    SFL11       IF ALL FLAWS PROCESSED 
          RJM    C2D
          STM    MESB+4      INSERT COUNT IN MESSAGE
          LDC    MESB 
          RJM    DFM         * EQXXX, YY FLAWS NOT PROCESSED.*
          LDC    ERLN+MESB
          RJM    DFM
          LDN    0
          STI    TA          COMPLETE LAST PARTIAL LINE 
          LDC    MESBL-3*5
          STD    T3 
 SFL10    LDN    3*5         ADVANCE TO NEXT LINE 
          RAD    T3 
          RJM    DFM         ISSUE A BUFFER OF FLAWS MESSAGE
          LDD    T3 
          LMC    ERLN        ISSUE MESSAGE TO ERRLOG
          RJM    DFM
          SOD    T4 
          PJN    SFL10       IF MORE BUFFERS TO ISSUE 
 SFL11    LJM    DPP2        INITIALIZE PACK FLAWS
 IDF      SPACE  4,15 
***       FUNCTION *IDFF* - INITIALIZE INACTIVE DAYFILES. 
* 
*         ENTRY  (IR+3) = 6/ N, 6/ 0
*                (IR+4) = EST ORDINAL.
* 
*                      N = 0 TO INITIALIZE SYSTEM DAYFILE.
*                        = 1 TO INITIALIZE ACCOUNT FILE.
*                        = 2 TO INITIALIZE ERRLOG FILE. 
*                        = 3 TO INITIALIZE MAINTENANCE LOG FILE.
* 
*         EXIT   INACTIVE DAYFILE TRACK CHAINS RELEASED.
  
  
 IDF      ENTRY 
          RJM    GLA         GET LOCAL AREA SECTOR
          ZJN    IDF1        IF NO DAYFILES ON DEVICE 
          STM    IDFA 
          LDD    IR+3        PICKUP FILE POINTER
          SHN    -6 
          STD    TI 
          ADN    1           SET POINTER FOR CHECKPOINT REQUEST 
          STM    CKCA+4 
          LDM    IDFA,TI
 IDFA     EQU    *-1
          NJN    IDF2        IF FILE ON THIS EQUIPMENT
 IDF1     LDC    MESG        * EQXXX, NO INACTIVE DAYFILES FOUND.*
          LJM    IDF8        CLEAR INTERLOCK AND EXIT 
  
*         SET DAYFILE EQUIPMENTS FOR ACTIVE FILES.
  
 IDF2     STD    T6          SET FIRST TRACK
          LDN    DFPP 
          CRD    FN          DAYFILE POINTER (FN) 
          LDD    TI 
          SHN    1
          ADD    TI 
          SHN    6
          ADD    FN          SET FWA OF DAYFILE POINTERS
          SHN    14 
          ADD    FN+1 
          ADN    2
          CRD    CN          READ DAYFILE FST 
          LDD    CN 
          LPN    77 
          LMD    T5 
          NJN    IDF4        IF NOT ACTIVE DAYFILE
          LDC    MESI        * EQXXX, FILE ACTIVE - (NAME)* 
          UJN    IDF7        CLEAR INTERLOCK AND ISSUE MESSAGE
  
 IDF4     RJM    DTS         CHECK IF INTERLOCKED 
          PJN    IDF5        IF FILE FREE 
          LDC    MESJ        * EQXXX, FILE BUSY   - (NAME)* 
          UJN    IDF7        CLEAR INTERLOCK AND ISSUE MESSAGE
  
*         RELEASE FILE FROM SYSTEM. 
  
 IDF5     RJM    STI         INTERLOCK FILE 
          LMD    T6 
          ZJN    IDF6        IF TRACK NOT RESERVED
          STD    CM+2 
          LDD    T5          RELEASE FILE 
          STD    CM+1 
          MONITOR DTKM
*         LDN    0           INDICATE LOCAL AREA UPDATE 
 IDF6     STM    IDFD 
          UJN    IDF10       ISSUE MESSAGES 
  
 IDF7     STD    CM          SET MESSAGE ADDRESS
          ADN    MENM 
          STM    IDFC        SET FILE TYPE ADDRESS
          LDM    DFTY,TI
          STM    IDFB        SET FILE NAME
          LDD    MA 
          CWM    **,ON
 IDFB     EQU    *-1         FILE NAME ADDRESS
          SBN    1
          CRM    **,ON       READ FILE NAME INTO MESSAGE
 IDFC     EQU    *-1
          LDD    CM          ISSUE DAYFILE MESSAGE
          ADC    NMSN 
 IDF8     RJM    DFM
          LDC    *           CHECK FOR LOCAL AREA UPDATE
 IDFD     EQU    *-1
          ZJN    IDF9        IF LOCAL AREA UPDATE REQUIRED
          LJM    DPP         DROP PP
  
 IDF9     LDN    4
          LJM    CKC         CHECKPOINT LOCAL AREA
  
*         ISSUE NORMAL COMPLETION MESSAGES. 
  
 IDF10    LDM    DFTY,TI     SET FILE NAME ADDRESS
          STM    IDFE 
          LDD    MA          MOVE FILE NAME TO MESSAGE
          CWM    **,ON
 IDFE     EQU    *-1         (FILE NAME ADDRESS)
          SBN    1
          CRM    MESH+MENM,ON 
          LDC    MESH+NMSN   ISSUE DAYFILES ONLY MESSAGE
          UJN    IDF8 
  
  
*         DAYFILE NAME POINTERS.
  
 DFTY     CON    DFDF 
          CON    DFAF 
          CON    DFEL 
          CON    DFML 
  
*         DAYFILE NAMES.
  
 DFDF     DATA   10HDAYFILE.
 DFAF     DATA   10HACCOUNT.
 DFEL     DATA   10HERRLOG. 
 DFML     DATA   10HMAINLOG.
 CIN      SPACE  4,10 
***       FUNCTION *CINF* - CLEAR INITIALIZE REQUEST. 
* 
*         ENTRY  (IR+4) = EST ORDINAL.
  
  
 CIN      ENTRY 
          LDD    IR+4 
          STD    T5 
          SFA    EST         READ EST ENTRY 
          ADK    EQDE 
          CRD    ES 
          LDD    ES+4        GET MST STATUS WORD
          SHN    3
          ADN    STLL 
          CRD    WB 
          LDD    WB          CLEAR INITIALIZE FLAGS 
          STD    T1 
          LPN    MLCKP+MRASD+MLUNL+MLDUL
          STD    WB 
          LDD    WB+1 
          LPN    77 
          STD    WB+1 
 CIN1     LDD    ES+4        STORE DEVICE STATUS WORD 
          SHN    3
          ADN    STLL 
          CWD    WB 
          CMSTF  LIAL        FORCE MST UPDATE ON LINK DEVICE
          LDD    T1 
          LPC    MLIAL+MLIHD+MLIFD+MLIPF
          ZJN    CIT3        IF NOT PF/FULL INITIALIZE
          SOD    CN+2 
          MJN    CIT3        IF NOT MMF ENVIRONMENT 
          LPN    77 
          NJN    CIT2        IF NOT LAST INITIALIZE REQUEST 
*         UJN    CIT
 CIT      SPACE  4,10 
***       FUNCTION *CITF* - CLEAR *CMS* INTERLOCK.
* 
*         ENTRY  (IR+4) = *MSI* ABORT FLAG. 
  
  
 CIT      ENTRY 
          LDD    IR+4 
          NJN    CIT4        IF *MSI* ABORT 
 CIT1     LDD    CN+2        CHECK DAT INTERLOCKED
          SHN    0-13 
          ZJN    CIT3        IF INTERLOCK NOT SET 
          LCN    DATI        CLEAR DATI INTERLOCK 
          RJM    IFR
          STD    CN+2        CLEAR INITIALIZE COUNT 
 CIT2     LDC    MMFL 
          CWD    CN 
 CIT3     LJM    DPP         DROP PP
  
 CIT4     LDM    ABTB 
          NJN    CIT5        IF NOT DEADSTART SEQUENCING
          LDD    MA          STORE *UADM* PARAMETERS
          CWM    CITA,ON
          LDN    1           SET WORD COUNT / NO DROP PP
          STD    CM+1 
          STD    CM+2        DISABLE JOB SCHEDULER
          MONITOR UADM
 CIT5     LDN    NCPL        READ NUMBER OF CONTROL POINTS
          CRD    CM 
          AOD    CM+1        SET SYSTEM CONTROL POINT 
          SHN    7
          ADN    MS2W        STORE CONTROL POINT MESSAGE
          CWM    CITB,TR
          LJM    CIT1        CHECK DAT INTERLOCKED
  
  
 CITA     CON    LIOS        INCREMENT BY ONE 
          CON    INWL        WORD ADDRESS 
          CON    13DS6+1     BIT POSITION + FIELD WIDTH 
          CON    0,0
  
 CITB     DATA   C*MSI ABORT.*
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMPDTS 
          SPACE  4,10 
          OVERFLOW  OVLA,BUF
          SPACE  4
          TTL    IMS - INITIALIZE MASS STORAGE. 
          END 
