0MF 
          IDENT  0MF,ILDX 
          PERIPH J
          BASE   M
          SST 
*COMMENT  0MF - INITIALIZE MMF LINK DEVICE. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  0MF - INITIALIZE MMF LINK DEVICE.
          SPACE  4
***       0MF - INITIALIZE MMF LINK DEVICE. 
*         P. D. HAAS         75/07/14.
          SPACE  4
***              0MF IS RESPONSIBLE FOR INITIALIZATION OF THE 
*         MULTI-MAINFRAME LINK DEVICE (ECS).
          SPACE  4
***       ENTRY CONDITIONS. 
* 
* 
*         (EQ) = ECS EST ORDINAL. 
*         (RS) = RECOVERY STATUS. 
*         (TW) = CONSTANT TW0.
*         (P1) = TOTAL NUMBER OF DEVICES TO PRESET. 
*         (P2) = NUMBER OF BUFFERED DEVICES TO PRESET.
*         (CN - CN+4) = *ALGL* WORD OF MST FOR ECS. 
*         (FN - FN+4) = EST ENTRY FOR ECS.
          SPACE  4
***       EXIT CONDITIONS.
* 
* 
*         ECS RESIDENT INITIALIZED. 
*         *PRSI* INTERLOCK CLEARED. 
*         (QT) = CURRENT *DAT* TRACK. 
*         (QI) = CURRENT *DAT* INDEX. 
*         (BAEI - BAEI+4) = IMAGE OF *BAET* ENVIRONMENT TABLE WORD. 
          SPACE  4
*CALL     COMPMAC 
*CALL     COMPREL 
*CALL     COMSCPS 
*CALL     COMSMSP 
*CALL     COMSMST 
          LIST   X
 MMF$     EQU    1           INITIALIZE COMSMMF DIRECT CELLS
*CALL     COMSMMF 
          LIST   *
*CALL     COMSZOL 
          TITLE  MAIN ROUTINE.
**        ILD - MAIN ROUTINE. 
  
  
          ORG    5
  
 ILD      SUBR               ENTRY/EXIT 
          SFA    EST,EQ 
          ADK    EQAE 
          CRD    CM 
          LDD    CM+2        PRESET EM TRACK SHIFT COUNT
          SHN    -6 
          LPN    3
          RAM    ILDF 
          STM    ILDH 
          LDD    LA          BIAS INSTRUCTIONS BY LOAD ADDRESS
          RAM    ILDA 
          STM    ILDB 
          STM    ILDC 
  
*         RESERVE DAT/FAT TRACK CHAIN.
  
          LDN    ZERL 
          CRD    CM 
          LDD    EQ          SET EST ORDINAL IN REQUEST 
          STD    CM+1 
          LDD    RS 
          NJN    ILD2        IF RECOVERY SELECTED 
          LDD    CN+4 
          ZJN    ILD1        IF NO DAT/FAT TRACK CHAIN
          STD    CM+2 
          MONITOR DTKM       RELEASE DAT/FAT TRACK CHAIN
 ILD1     LDD    EQ          SET EST ORDINAL
          STD    CM+1 
          LDD    P1          NUMBER OF SHARED DEVICES 
 ILDF     SHN    4           CONVERT TRACK COUNT TO SECTOR COUNT
*         SHN    4+EMSC      (EMSC = EM TRACK SHIFT COUNT)
          ADN    1           ADDITIONAL TRACK FOR DAT-S AND FAT-S 
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          MONITOR RTCM
          LDD    CM+4        SET FIRST TRACK IN *ALGL*
          STD    CN+4 
          STD    CM+2 
          LDN    SPFS        SET PRESERVED FILE STATUS
          STD    CM+3 
          LDC    4000        INCLUDE CHECKPOINT REQUEST 
          RAD    CM+1 
          MONITOR STBM
 ILD2     LDD    FN+4        STORE DEVICE ALLOCATION WORD 
          SHN    3
          ADN    ALGL 
          CWD    CN 
          SBN    ALGL-SDGL   GET SHARED DEVICE WORD 
          CRD    FS 
          ADN    PFGL-SDGL   READ PF DESCRIPTOR WORD
          CRM.   ILDD,ON
 ILDA     EQU    *-1
  
*         SETUP *DAET* IN ENVIRONMENT TABLE SECTOR. 
  
          LDD    FN+4        READ TRT WORD
          SHN    3
          ADN    TRLL 
          CRD    CM 
          LDD    CM+3 
          LPN    77 
          RAM    ILDE        SET FWA OF TRT 
          STM    SNTA 
          LPN    77 
          SHN    14 
          LMD    CM+4 
          STM    ILDE+1 
          STM    SNTA+1 
          LDD    CN+4        SET *DAT* TRACK FOR LINK DEVICE
          RJM    SNT         SET NEXT TRACK 
          STM    ILDD+4      SET TRACK IN *DAT* ENTRY 
          STD    QT 
          STD    T6 
          LDN    0
          STD    T7 
          RJM    CEA         CONVERT ECS ADDRESS
          LDD    CM+3 
          STD    FS 
          LDD    CM+4        SET ABSOLUTE MST/TRT ADDRESS 
          STD    FS+1 
          LDD    HN          SET ONE TRT ACCESS 
          STD    FS+4 
          LDD    FN+4        STORE DRIVER ACTIVITY WORD 
          SHN    3
          ADN    SDGL 
          CWD    FS 
          LDD    CN+4        SET FIRST TRACK IN *DAT* CHAIN 
          STD    T6 
          STM    ILDG 
          LDN    ZERL 
          CRD    FS 
          LDN    0           SET WORD COUNT 
          STD    CM+1 
          LDD    QT          SET CURRENT TRACK IN *DAET* IMAGE
          STD    FS 
          LDN    2           SET *DAT* INDEX
          STD    QI 
          STD    FS+4 
          LDD    MA          MOVE *DAET* IMAGE TO BUFFER
          CWD    FS 
          STD    CM+2        SET BUFFER ADDRESS 
          LDD    CN+1        SET LABEL TRACK
          STD    T6 
          STM    ILDK 
          LDN    ETLT        CONVERT ENVIRONMENT TABLE SECTOR ADDRESS 
          STD    T7 
          RJM    CEA
          LDN    DAET 
          RAD    CM+4 
          SHN    -14
          ADC    WECS*1000   SET WRITE FUNCTION 
          RAD    CM+3 
          MONITOR ECSM       STORE *DAET* WORD
          LDD    RA          STORE *DAT* ENTRY IN CM COPY OF *DAT*
          SHN    6
          ADD    CA+1 
          CWM.   ILDD,TW
 ILDC     EQU    *-1
          LDD    TH          ADVANCE TRT BUFFER ADDRESS 
          RAD    CA+1 
  
*         STORE MST/TRT FOR LINK DEVICE IN ECS. 
  
          LDC    500-5*MSTL 
          STD    T7 
 ILD3     LDN    0           CLEAR BUFFER 
          STM.   BFMS+1+5*MSTL,T7 
          SOD    T7 
          NJN    ILD3 
          LDD    EQ          SET ECS EST ORDINAL
          STD    T5 
          LDD    QT          SET MST/TRT TRACK
          STD    T6 
          LDN    MXMF-1 
          STD    T0 
          LDK    5*LLLL 
          STD    T1 
 ILD3.1   LDN    MLUNL+MLDUL SET UNLOAD STATUS
          STM.   BFMS+2+5*STLL,T1 
          LDN    5*LLLL 
          RAD    T1 
          SOD    T0 
          NJN    ILD3.1      IF MORE LOCAL AREAS
          LDD    HN          SET FULL SECTOR WORD COUNT 
          STM.   BFMS+1 
          LDN    MSTL        SET LENGTH OF MST
          STD    T1 
          LDD    FN+4        READ MST TO PP BUFFER
          SHN    3
          ADK    TDGL 
          CRD    CN 
          CRM.   BFMS+2,T1
          LDM.   BFMS+2+5*MDGL  SET 16-WORD PFC FLAG
          LPC    6777 
          LMD    TH 
          STM.   BFMS+2+5*MDGL
          LDD    FN+4        UPDATE MST IN CMR
          SHN    3
          ADN    MDGL 
          CWM.   BFMS+2+5*MDGL,ON 
          SETMS  IO,(DF,NS) 
          LDN    0
          STD    CN+4 
          UJN    ILD6        ENTER LOOP WITH (A) = 0
  
 ILD4     SBD    HN          DECREMENT BLOCK COUNT
          PJN    ILD5        IF ANOTHER FULL SECTOR 
          ADD    HN 
          STM.   BFMS+1      SET SHORT SECTOR 
          LDN    0
 ILD5     STD    CN+2 
 ILDE     LDC    **          (FWA OF TRT) 
          ADD    CN+4 
          CRM.   BFMS+2,HN   READ NEXT BLOCK
          LDD    HN          ADVANCE TRT ADDRESS
          RAD    CN+4 
          AOD    T7          ADVANCE SECTOR 
 ILD6     ADN    1
          STM.   BFMS 
          LDC    BFMS        WRITE NEXT SECTOR
          RJM.   WDS
          LDD    CN+2 
          NJN    ILD4        LOOP TO END OF TRT 
          LDD    FN+4        GET TRT LENGTH FROM MST
          SHN    3
          ADK    TDGL 
          CRD    CN 
          LDN    MRST-1      INITIALIZE MRT SECTOR
          STD    T7 
          LDD    CN+2        SET MRT LENGTH 
          ADN    7
          SHN    -3 
          STM.   BFMS+1 
          LDC    500         BUFFER LENGTH
          STD    T1 
 ILD7     LDN    0           CLEAR BUFFER 
          STM.   BFMS+1,T1
          SOD    T1 
          NJN    ILD7 
          LDN    MXMF        SET LOOP COUNT 
          STD    CN 
  
*         CLEAR MRT SECTORS FOR *MXMF* MAINFRAMES.
  
 ILD8     AOD    T7          ADVANCE MRT SECTOR 
          ADN    1           SET NEXT SECTOR IN LINKAGE 
          STM.   BFMS 
          LDC    BFMS        CLEAR MRT
          RJM.   WDS
          SOD    CN 
          NJN    ILD8        IF NOT *MXMF* MRT-S CLEARED
          STD    T7 
          LCN    20          CLEAR RECOVERY IN PROGRESS FLAG
          RAM    ILDD+11
          LDC    **          SET DAT/FAT TRACK
 ILDG     EQU    *-1
          STD    T6 
          LDD    MA          MOVE LINK DEVICE DAT ENTRY TO BUFFER 
          CWM.   ILDD,TW
 ILDB     EQU    *-1
          LDD    MA 
          CRM.   BFMS+2,TW
          LDD    HN 
          STM.   BFMS+1 
  
*         INITIALIZE DAT/FAT TRACK. 
  
 ILD9     LDD    T7          SET SECTOR IN LINK BYTE
          ADN    1
 ILD10    STM.   BFMS 
          LDC    BFMS 
          RJM.   WDS         WRITE NEXT SECTOR
          LDN    ZERL 
          CRM.   BFMS+2,ON
          LDN    ZERL 
          CRM.   BFMS+2+5,ON
          AOD    T7          ADVANCE TO NEXT SECTOR 
          ADN    1
          SBM.   SLM
          MJN    ILD9        IF NOT LAST SECTOR 
          NJN    ILD11       IF LAST SECTOR WRITTEN 
          STM.   BFMS+1      SET EOI SECTOR 
          UJN    ILD10
  
 ILD11    ENDMS              END MASS STORAGE OPERATION 
  
*         RESERVE BRT/BDT/BAT TRACK CHAIN.
  
          LDD    FN+4        GET BRT/BDT/BAT TRACK CHAIN POINTER
          SHN    3
          ADN    NVGL 
          CRD    CN 
          LDN    ZERL 
          CRD    CM 
          LDD    EQ          SET EST ORDINAL IN REQUEST 
          STD    CM+1 
          LDD    RS 
          NJP    ILD13       IF RECOVERY SELECTED 
          LDD    CN+3 
          ZJN    ILD12       IF NO BRT/BDT/BAT TRACK CHAIN
          STD    CM+2 
          MONITOR DTKM       RELEASE BRT/BDT/BAT TRACK CHAIN
          STD    CN+3        CLEAR POINTER
 ILD12    LDD    EQ          SET EST ORDINAL
          STD    CM+1 
          LDD    P2          NUMBER OF SHARED BUFFERED DEVICES
          ZJN    ILD13       IF NO SHARED BUFFERED DEVICES
          ADN    1           ADDITIONAL TRACK FOR BRT-S 
 ILDH     SHN    4           CONVERT TRACK COUNT TO SECTOR COUNT
*         SHN    4+EMSC      (EMSC = EM TRACK SHIFT COUNT)
          ADN    1           ADDITIONAL TRACKS FOR BDT-S
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          MONITOR RTCM
          LDD    CM+4        SET FIRST TRACK IN *NVGL*
          STD    CN+3 
          STD    CM+2 
          LDN    SPFS        SET PRESERVED FILE STATUS
          STD    CM+3 
          LDC    4000        INCLUDE CHECKPOINT REQUEST 
          RAD    CM+1 
          MONITOR STBM
 ILD13    LDD    FN+4        STORE *NVGL* 
          SHN    3
          ADN    NVGL 
          CWD    CN 
  
*         SETUP *BAET* IN ENVIRONMENT TABLE SECTOR. 
  
          LDN    ZERL 
          CRD    FS 
          LDD    P2 
          ZJN    ILD14       IF NO SHARED BUFFERED DEVICES
          LDD    CN+3        FIRST TRACK OF BRT/BDT/BAT TRACK CHAIN 
          STD    FS          SET BRT TRACK INTO *BAET* IMAGE
          RJM    SNT         SET NEXT TRACK 
          STD    FS+1        SET BDT TRACK INTO *BAET* IMAGE
          RJM    SNT         SET NEXT TRACK 
          STD    FS+4        SET FIRST BAT TRACK INTO *BAET* IMAGE
 ILD14    LDD    MA          MOVE *BAET* IMAGE TO BUFFER
          STD    CM+2        SET BUFFER ADDRESS 
          CWD    FS 
          CRM.   BAEI,ON     SAVE *BAET* IMAGE
          LDN    0           SET WORD COUNT 
          STD    CM+1 
          LDC    **          SET LABEL TRACK
 ILDK     EQU    *-1
          STD    T6 
          LDN    ETLT        CONVERT ENVIRONMENT TABLE SECTOR ADDRESS 
          STD    T7 
          RJM    CEA
          LDN    BAET 
          RAD    CM+4 
          SHN    -14
          ADC    WECS*1000   SET WRITE FUNCTION 
          RAD    CM+3 
          MONITOR ECSM       STORE *BAET* WORD
  
*         ENABLE BRT PROCESSING IN *MTE*. 
  
          LDD    P2 
          ZJN    ILD15       IF NO SHARED BUFFERED DEVICES
          LDD    FS          SET BRT TRACK
          STD    CM+4 
          LDD    FS+1        SET BDT TRACK
          STD    CM+3 
          LDN    0
          STD    CM+2 
          LDN    EBRS        ENABLE BRT PROCESSING
          STD    CM+1 
          MONITOR  MTEM 
  
 ILD15    LCN    PRSI        CLEAR *PRSI* INTERLOCK 
          RJM    IFR
          LJM    ILDX        RETURN 
  
  
 ILDD     VFD    42/0LMMFLINK,6/0,12/0
          VFD    60/20
          TITLE  SUBROUTINES. 
 SNT      SPACE  4,10 
**        SNT - SET NEXT TRACK IN EXTENDED MEMORY TRACK CHAIN.
* 
*         ENTRY  (A) = TRACK NUMBER.
*                (SNTA) = CM ADDRESS OF TRT.
* 
*         EXIT   (A) = TRACK NUMBER OF NEXT TRACK IN CHAIN. 
* 
*         USES   T1, CM - CM+4. 
  
  
 SNT      SUBR               ENTRY/EXIT 
          SHN    21-1        REMOVE TRACK BIT 
          LMD    TH 
          STD    T0          SET WORD INDEX 
          SHN    1-21 
          STD    T1          SET BYTE INDEX 
 SNTA     LDC    **          (FWA OF TRT) 
          ADD    T0 
          CRD    CM 
          LDM.   CM,T1       EXTRACT NEXT TRACK 
          UJN    SNTX        RETURN 
          SPACE  4
**        COMMON DECKS. 
  
  
*CALL     COMPCEA 
*CALL     COMPIFR 
          SPACE  4,10 
          OVERFLOW 5,ZMFL 
          END 
