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