IDENT 1MR,/MRP/MRP
PERIPH
BASE MIXED
SST
*COMMENT 1MR - MACHINE RECOVERY PROCESSOR.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TITLE 1MR - MACHINE RECOVERY PROCESSOR.
SPACE 4
*** 1MR - MACHINE RECOVERY PROCESSOR.
* R. J. PRIEVE 75/02/14.
* P. D. HAAS. 87/04/10.
SPACE 4
*** 1MR PROCESSES FUNCTION REQUESTS FROM *MREC*, THE
* MACHINE RECOVERY UTILITY.
*
* FUNCTIONS PROCESSED ARE THE FOLLOWING.
*
* FUNCTION 0 - RETRIEVE DISPLAY INFORMATION.
* FUNCTION 1 - PROCESS DAT, FAT, MRT,S, SYSTEM SECTORS,
* AND UNIT AND/OR CONTROLLER RESERVE SITUATIONS.
* FUNCTION 2 - UPDATE MST ENTRIES IN CM FOR INDEPENDENT
* SHARED DEVICES.
* FUNCTION 3 - CLEAR DEVICE INTERLOCKS.
SPACE 4
*** ENTRY CONDITIONS.
*
*T, IR 18/1MR,18/0,6/FN,18/PARM
*
* FN FUNCTION NUMBER.
* PARM PARAMETER.
*
* PARAMETERS ARE DOCUMENTED IN HEADER INFORMATION
* OF EACH FUNCTION PROCESSOR.
SPACE 4
*** DAYFILE MESSAGES.
*
* * INCORRECT 1MR FUNCTION.*
*
* * 1MR ERROR FLAG TERMINATION.* - ERROR FLAG WAS SET AT
* MREC,S CONTROL POINT.
*
* * SSER, EQXXX, TKYYYY.* - UNRECOVERED ERROR OCCURRED WHEN
* ATTEMPTING TO READ OR WRITE THE SYSTEM SECTOR ON EQXXX,
* TRACK YYYY. THE SECTOR IS NOT PROCESSED. PROCESSING
* CONTINUES. THIS MESSAGE IS ALSO ISSUED TO THE ERRLOG.
*
* * EQXXX, MRT PROCESSED BUT NOT REWRITTEN.* - UNRECOVERED
* WRITE ERROR OCCURRED WHEN ATTEMPTING TO ZERO OUT THE MRT
* FOR EQXXX. PROCESSING CONTINUES.
*
* * EQXXX, TKYYYY, INCORRECT LOCAL FILE.* - MRT BIT WAS FOUND
* SET FOR TRACK YYYY ON EQXXX, BUT THE TRACK WAS NOT THE FIRST
* TRACK OF A LOCAL FILE. THE MRT BIT WAS CLEARED BUT THE
* TRACK WAS NOT DROPPED.
*
* * EQXXX, DAF INTERLOCKS NOT CLEARED.* - INTERLOCKS IN THE
* SYSTEM SECTORS OF DIRECT ACCESS FILES ON EQXXX WERE NOT
* CLEARED, EITHER BECAUSE OF MASS STORAGE ERRORS OR
* BECAUSE A PF CATALOG SIZE ERROR WAS DETECTED.
*
* * RECOVERING PF.EQXXX, TRK YYYY.* - INFORMATIVE MESSAGE ISSUED
* AT CONTROL POINT WHEN PRESERVED FILES ARE BEING PROCESSED
* ON EQXXX.
*
* * EQXXX, UNYY, CHECKING RESERVE.* - INFORMATIVE MESSAGE
* ISSUED TO B-DISPLAY WHILE CONTROLLER AND UNIT RESERVES
* ARE BEING PROCESSED. IN THE CASE OF MULTI-UNIT
* DEVICES, YY IS THE PHYSICAL UNIT NUMBER.
*
* * EQXXX, CLEARING LABEL SECTOR INTERLOCKS.* - INFORMATIVE
* MESSAGE ISSUED TO B-DISPLAY WHILE THE RMS COPY OF THE
* MST IS BEING PROCESSED (SHARED RMS SYSTEM ONLY).
*
* * EQXXX, CHYY, CONTROLLER RESERVED.* - INFORMATIVE MESSAGE
* ISSUED TO B-DISPLAY INDICATING THAT THE HARDWARE CONTROLLER
* RESERVE IS HELD BY THE DOWN MAINFRAME FOR THE SPECIFIED
* CHANNEL/DEVICE. TO CLEAR THE RESERVE, THE OPERATOR SHOULD
* HIT THE DEADSTART BUTTON. IF THE CONTROLLER IS TO BE
* IGNORED BY THIS MAINFRAME, JUST ENTER THE *GO,JSN* COMMAND.
*
* * EQXXX, UNYY, UNIT RESERVED.* - INFORMATIVE MESSAGE ISSUED
* TO B-DISPLAY INDICATING THAT THE HARDWARE UNIT RESERVE IS
* HELD BY THE DOWN MAINFRAME FOR THE SPECIFIED UNIT. IF THIS
* DEVICE IS TO BE IGNORED BY THIS MAINFRAME, THE OPERATOR
* SHOULD JUST ENTER *GO,JSN*. OTHERWISE, THE OPERATOR SHOULD
* CLEAR THE UNIT RESERVE (SEE DOCUMENTATION IN *MREC*) ON
* THE UNIT TO CONTINUE PROCESSING.
*
* * INTERLOCKING IQFT, EQXXX.* - INDICATES *1MR* IS WAITING
* FOR THE INTERLOCK ON THE *IQFT* TRACK.
SPACE 4
*CALL COMPMAC
*CALL COMSCPS
*CALL COMSIOQ
*CALL COMSJIO
QUAL LSD
*CALL COMSLSD
QUAL *
N4SS EQU /LSD/N4SS
DISS EQU /LSD/DISS
CKSS EQU /LSD/CKSS
DKSS EQU /LSD/DKSS
QUAL MMF
LIST X
*CALL COMSMMF
LIST *
QUAL *
MISD EQU /MMF/MISD
MMPF EQU /MMF/MMPF
MXMF EQU /MMF/MXMF
QUAL MRT
LIST X
*CALL COMSMRT
LIST *
QUAL *
*CALL COMSMSP
*CALL COMSMST
*CALL COMSPFM
*CALL COMSPIM
*CALL COMSSSD
*CALL COMSSSE
*CALL COMSWEI
SPACE 4,10
** ASSEMBLY CONSTANTS.
BUFS EQU BFMS-502 SCRATCH BUFFER
QBUF EQU BUFS-502 *IQFT* BUFFER
BUFD EQU QBUF-5*2 *DAT* BUFFER
SPACE 4
**** DIRECT LOCATION ASSIGNMENTS.
ORG 16
EF BSS 1 ERROR FLAG
SC BSS 1 SCRATCH
CN BSS 5 CM BUFFER
DA BSS 2 DAT TRACK ADDRESS
DF BSS 1 DIRECT ACCESS FILE COUNT
DT BSS 1 DAT/FAT TRACK
ET BSS 2 ENVIRONMENT TABLE ADDRESS
EQ BSS 1 EQUIPMENT BEING PROCESSED
ID BSS 1 MACHINE ID OF THIS MACHINE
LK BSS 1 LINK DEVICE EST ORDINAL
MD BSS 1 MACHINE INDEX OF DOWNED MACHINE
MI BSS 1 MID OF DOWNED MACHINE
MK BSS 1 MACHINE MASK OF DOWNED MACHINE
NT BSS 1 NUMBER OF TRACKS ON CURRENT DEVICE
FT BSS 1 FILE TYPE
PF BSS 1 PRESERVED FILE TRACK INTERLOCK STATUS
TC BSS 1 TRACK COUNT
BY BSS 1 BYTE COUNT
WB EQU NT - BY WORD BUFFER (5 LOCATIONS)
BI BSS 1 BIT COUNT
AD BSS 1 ADDRESS OF CURRENT MRT BYTE
ORG 57
SD BSS 1 TYPE OF SHARED DEVICE (FUNCTION 2)
* 0 = EXTENDED MEMORY MMF DEVICE.
* 1 = INDEPENDENT SHARED DEVICE (ISD).
TW BSS 1 CONSTANT 2
SX BSS 1 CONSTANT 6
RE BSS 1 READ EXTENDED MEMORY SUBFUNCTION * 1000
WE BSS 1 WRITE EXTENDED MEMORY SUBFUNCTION * 1000
CT BSS 1 CURRENT TRACK
QF BSS 1 FIRST TRACK OF *IQFT*
QT BSS 1 CURRENT TRACK OF *IQFT*
QS BSS 1 CURRENT SECTOR OF *IQFT*
****
TITLE MAIN ROUTINE.
** MAIN ROUTINE.
QUAL MRP
ORG PPFW
MRP RJM PRS PRESET
MRPA EQU *-1
DROP RJM CFI CLEAR FLAG REGISTER INTERLOCKS
MRP1 LDN 1 SET COMPLETE FLAG FOR *MREC*
STD CN+4
LDD RA
SHN 6
ADC /MRT/RCLW
CWD CN
MRP2 MONITOR DPPM DROP PP
UJN ABT1 EXIT TO PP RESIDENT
ERR LDC =C* 1MR ERROR FLAG TERMINATION.*
RJM DFM
LDC WDSX RESET ERROR RETURN FROM *WDS*
STM WDSA
RJM TQF TERMINATE *IQFT*
RJM CFI CLEAR FLAG REGISTER INTERLOCKS
UJN MRP2 DROP PP
SPACE 4
** ABT - ISSUE MESSAGE AND ABORT.
*
* ENTRY (A) = MESSAGE ADDRESS.
ABT RJM DFM ISSUE MESSAGE
RJM CFI CLEAR FLAG REGISTER INTERLOCKS
MONITOR ABTM
ABT1 LJM PPR EXIT TO PP RESIDENT
SPACE 4
** COMMON DECKS.
QUAL
*CALL COMPC2D
*CALL COMPCEA
*CALL COMPCKP
*CALL COMPRSS
*CALL COMPSSE
QUAL MRP
*CALL COMPWEI
*CALL COMPWSS
WDS SPACE 4,10
** WDS - WRITE MASS STORAGE.
*
* ENTRY (A) = SAME AS ENTRY TO DRIVER.
* (T5 - T7) = MASS STORAGE PARAMETERS.
*
* EXIT (A) = 0 IF NO WRITE ERRORS.
*
* CALLS WDS.
WDS1 LDN 0 INDICATE SUCCESSFUL WRITE
WDS SUBR ENTRY/EXIT
RJM //WDS
PJN WDS1 IF WRITE COMPLETED
SHN 21-12
SHN 0-21
NJN WDSX IF NON-RECOVERABLE ERROR
LCN 10
LJM WDSX ERROR RETURN
WDSA EQU *-1
TITLE FUNCTION 1 - PROCESS DAT, FAT, MRT-S.
PMT SPACE 4
** PMT - PROCESS DAT, FAT, MRT,S. (FUNCTION 1)
*
* ENTRY (IR+3 - IR+4) = ADDR.
*
* ADDR ADDRESS OF TABLE OF DEVICES TO RECOVER.
*
* CALLS CAA, CLU, C2D, DAT, DFM, MRT, PDT, PFB, RMI, SDM,
* SDP, SFR, *2MS*.
*
* MACROS EXECUTE, PAUSE.
PMT SUBR ENTRY/EXIT
EXECUTE 2MS LOAD HARDWARE RESERVE ROUTINES
LDD LK
ZJN PMT1 IF NOT EXTENDED MEMORY MMF
LDN /MMF/DATI
RJM SFR SET DAT INTERLOCK
RJM CLU CLEAR UTILITY / DEVICE INTERLOCKS
* PROCESS DAT, MRT-S, SYSTEM SECTORS.
PMT1 LCN 0 PRESET TABLE INDEX
STD SC
PMT2 PAUSE NE
AOD SC READ TABLE ENTRY
RJM CAA
ADD SC
CRD CM
LDD CM+4 SET EST ORDINAL
STD EQ
STD T5
NJN PMT3 IF NOT END OF DEVICES TO RECOVER
LJM PMTX RETURN
PMT3 LDD CM SET POSSIBLE IGNORE DEVICE
STM PMTA
LDD CM+3 SET TYPE OF SHARED DEVICE
STD SD
ZJN PMT4 IF NOT ISD
LDD T5
STD LK
RJM SDM CHECK IF DEVICE SHARED TO DOWN MF
NJN PMT2 IF NOT SHARED TO DOWN MF
RJM RMI RELEASE MST INTERLOCKS
UJN PMT5 PROCESS MRT
PMT4 RJM PDT PROCESS DAT FOR DEVICE
ZJN PMT7 IF NO PROCESSING FOR DEVICE
PMT5 RJM SDP SET DEVICE PARAMETERS
STM PMTB
RJM MRT PROCESS MRT FOR DEVICE
LDC 0
PMTA EQU *-1
LMN /MRT/IGN
ZJN PMT6 IF IGNORE DEVICE
LDC ** CHECK PFC SIZE
PMTB EQU *-1
ZJN PMT8 IF 8-WORD PF CATALOGS
LDD DF
ZJN PMT6 IF NO DAF-S
RJM PFB PROCESS DAF SYSTEM SECTORS
NJN PMT8 IF ALL FILES NOT PROCESSED
PMT6 LDD SD
NJN PMT7 IF ISD
LDD WE WRITE DAT ENTRY WITH ACCESS CLEARED
STD T3
LDD MA
CWM BUFD,TW STORE DAT ENTRY IN MESSAGE BUFFER
LDD EQ SET EQUIPMENT
RJM DAT WRITE DAT ENTRY
PMT7 LJM PMT2 LOOP FOR NEXT DEVICE
PMT8 LDD EQ CONVERT UPPER DIGIT OF EST ORDINAL
SHN -6
ADC 2RQ0
STM PMTC+1
LDD EQ CONVERT LOWER TWO DIGITS OF EST ORDINAL
RJM C2D
STM PMTC+2
LDC PMTC * EQXXX, DAF INTERLOCKS NOT CLEARED.*
RJM DFM
UJN PMT7 LOOP FOR NEXT DEVICE
PMTC DATA C* EQXXX, DAF INTERLOCKS NOT CLEARED.*
TITLE FUNCTION 4 - PROCESS RESERVES AND BAT-S.
PRB SPACE 4,10
** PRB - PROCESS RESERVES AND BAT-S. (FUNCTION 4)
*
* ENTRY (IR+3 - IR+4) = ADDR.
*
* ADDR ADDRESS OF TABLE OF DEVICES TO RECOVER.
*
* CALLS ECS, RES, *2MS*.
*
* MACROS EXECUTE.
PRB SUBR ENTRY/EXIT
LDD LK
ZJN PRB1 IF NOT EXTENDED MEMORY MMF
* DISABLE LEVEL 3 RECOVERY OF DOWNED MACHINE.
LDN ZERL BUILD MMFL WORD FOR DOWNED MACHINE
CRD CM
LDD MI SET MID OF DOWNED MACHINE
STD CM
LDD MD SET MACHINE INDEX OF DOWNED MACHINE
STD CM+4
LDD MA SET CM BUFFER ADDRESS
CWD CM
LDD ET+1 SET EXTENDED MEMORY ADDRESS
ADD MD ADD INDEX INTO CORRECT ENTRY
SBN 1
STD CM+4
SHN -14
ADD ET
ADD WE
STD CM+3
LDN 1-1 WRITE EXTENDED MEMORY
RJM ECS
* PROCESS CONTROLLER AND UNIT RESERVES.
PRB1 EXECUTE 2MS LOAD HARDWARE RESERVE ROUTINES
RJM RES PROCESS BAT-S AND HARDWARE RESERVES
UJP PRBX RETURN
TITLE SUBROUTINES.
CAA SPACE 4
** CAA - CALCULATE ABSOLUTE ADDRESS.
*
* ENTRY (IR+3 - IR+4) = RELATIVE ADDRESS.
*
* EXIT (A) = ABSOLUTE ADDRESS.
CAA SUBR ENTRY/EXIT
LDD IR+3
LPN 77
SHN 6
ADD RA
SHN 6
ADD IR+4
UJN CAAX RETURN
CAT SPACE 4,10
** CAT - CALCULATE ADDRESS OF TRT.
*
* ENTRY (A) = ADDRESS OF WORD *TRLL* IN MST.
*
* EXIT (A) = FWA 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
CAM SPACE 4
** CAM - CHECK ACCESS MODES FOR DIRECT ACCESS FILE.
*
* ENTRY (T5) = EST ORDINAL.
* (T6) = FIRST TRACK.
* (BFMS) = SYSTEM SECTOR.
*
* EXIT (A) = (PF) = 0 IF FILE PURGED.
*
* USES CM - CM+4.
*
* CALLS RRS.
*
* MACROS ENDMS, MONITOR.
CAM1 LDN 1 SET FILE NOT PURGED
CAM SUBR ENTRY/EXIT
LDM CASS CHECK PURGE BIT
SHN 21-5
PJN CAM1 IF PURGE BIT NOT SET
SHN -21+5+22 CHECK IF ACTIVE USERS
LPN 32
ADM UCSS+1
ADM UCSS+2
ADM UCSS+3
ADM UCSS+4
NJN CAMX IF ACTIVE USERS
RJM RRS
ENDMS
LDD T6 RELEASE FILE SPACE
STD CM+2
LDD T5
STD CM+1
MONITOR DTKM
* LDN 0 CLEAR TRACK INTERLOCK STATUS
STD PF
UJN CAMX RETURN
CFI SPACE 4,10
** CFI - CLEAR FLAG REGISTER INTERLOCKS HELD BY *1MR*.
*
* ENTRY (CFIA) = LINK DEVICE EST ORDINAL, IF ECS MMF.
* = 0, IF ISD MMF.
*
* USES T2.
*
* CALLS CFR, SCI.
CFI SUBR ENTRY/EXIT
RJM SCI CLEAR *CMS* INTERLOCK
LDC ** CHECK TYPE OF MMF OPERATION
CFIA EQU *-1 (LINK DEVICE EST ORDINAL, IF ECS MMF)
ZJN CFIX IF NOT EXTENDED MEMORY MMF
LDC TFRB-3 CLEAR FLAG REGISTER INTERLOCKS
STD T2
CFI1 LDN 3
RAD T2
LDI T2
ZJN CFIX IF END OF FLAG BITS
LPN 40
ZJN CFI1 IF NOT SET
LMI T2
RJM CFR
UJN CFI1
CQF SPACE 4,15
** CQF - CHECK QUEUE FILE.
*
* ENTRY (MI) = ID OF DOWN MACHINE.
* (QF) = FIRST TRACK OF *IQFT* IF INITIALIZED.
* (T4) = CHANNEL (RESERVED).
* (T5) = EST ORDINAL.
* (CT) = (T6) = FIRST TRACK OF PRESERVED FILE.
* (BFMS) = PRESERVED FILE SYSTEM SECTOR.
*
* EXIT (A) = 0 IF NOT QUEUE FILE.
* (FT) = FILE TYPE.
*
* USES T1, T2, T3.
*
* CALLS IQF, WQF, WSS.
*
* MACROS ENDMS, FILEREC, SETMS.
CQF6 LDN 0 INDICATE NON-QUEUE FILE
CQF SUBR ENTRY/EXIT
LDM FNSS+4 EXTRACT FILE TYPE
SHN -6
STD FT
LDN RDATL SET LENGTH OF QUEUE FILE TABLE
STD T3
CQF1 SOD T3 DECREMENT INDEX
MJN CQF6 IF END OF TABLE
LDM RDAT,T3
LMD FT
NJN CQF1 IF NOT MATCHING FILE TYPE
LDM FGSS
LPN 2
ZJN CQF2 IF INACTIVE QUEUE FILE
LDM RMSS
LMD MI
NJN CQF6 IF NOT ACTIVE QUEUE FILE ON DOWN MACHINE
LCN 2 SET QUEUE FILE INACTIVE
RAM FGSS
RJM WSS REWRITE SYSTEM SECTOR
CQF2 LDD QF
NJN CQF3 IF QUEUE FILE PROCESSING INITIATED
ENDMS
RJM IQF INITIALIZE *IQFT*
CQF3 LDM RMSS SET MACHINE ID
STM FMSS+4
LDM FLSS SET FILE LENGTH
STM CDSS
LDM FLSS+1
STM CDSS+1
LDC IOSS SYSTEM SECTOR ADDRESS OF QFT ENTRY
STD T1
LDC QBUF+2 SET BUFFER ADDRESS
CQFC EQU *-1
STD T2
ADN 5*QFTE END OF QFT ENTRY
STD T3
ADN 5*10-5*QFTE END OF MAXIMUM SIZE QFT ENTRY
STM CQFD
* MOVE IQFT ENTRY TO BUFFER.
CQF4 LDI T1 MOVE QFT ENTRY
STI T2
AOD T1 ADVANCE BUFFER ADDRESSES
AOD T2
LMD T3
NJN CQF4 IF NOT END OF QFT ENTRY
LDN 5
STD T1
LDD MA MOVE REMAINDER OF IQFT ENTRY
CWM CDSS,ON
CWM FMSS,ON
CWM FDSS,ON
CWM ACSS,ON
CWM FOSS,ON
SBN 5
CRM QBUF+2+5*10,T1
CQFD EQU *-1
LDC 5*QFEWL ADVANCE BUFFER ADDRESS
RAM CQFC
LDN QFEWL ADVANCE SECTOR LENGTH
RAM QBUF+1
SHN -6
ZJN CQF5 IF NOT FULL SECTOR
RJM WQF WRITE *IQFT* SECTOR
ZJN CQF5 IF SECTOR WRITTEN
LJM IQF2 END OF SPACE ON *IQFT*
CQF5 LDD CT RESET CURRENT TRACK
STD T6
LJM CQFX RETURN
FILEREC
DAP SPACE 4,10
** DAP - DELAY AND PAUSE.
*
* EXIT (A) = 0 IF *ODET* OR ERROR .GE. *SPET* SET.
DAP SUBR ENTRY/EXIT
DELAY
PAUSE
LDD CM+1
SBN ODET
ZJN DAPX IF OPERATOR DROP
SBN SPET-ODET
SHN -21 (A) = 1 IF NO ERROR *SPET* OR ABOVE
UJN DAPX RETURN
DPS SPACE 4
** DPS - DETERMINE IF PRESERVED FILE AND RESERVATION BIT
* IS SET FOR TRACK SPECIFIED.
*
* ENTRY (T6) = TRACK.
*
* EXIT (A, BIT 21) = RESERVATION BIT.
* (A, BIT 7) = PRESERVED FILE BIT.
* (A, BIT 3) = TRACK INTERLOCK BIT.
*
* USES CM - CM+4.
DPS SUBR ENTRY/EXIT
LDD T6 READ TRT WORD
SHN -2
DPSA ADC TRTS
CRD CM
LDD T6 SET SHIFT COUNT
LPN 3
ADC SHNI+16
STM DPSB
LDD CM+4
DPSB SHN 16
UJN DPSX RETURN
IQF SPACE 4,15
** IQF - INITIALIZE *IQFT*.
*
* ENTRY (T5) = EST ORDINAL.
*
* EXIT (QF) = (QT) = FIRST TRACK OF *IQFT*.
* (QS) = FIRST SECTOR OF *IQFT*.
*
* USES T3, T6.
*
* CALLS RSS, WSS.
*
* MACROS SETMS.
IQF SUBR ENTRY/EXIT
IQF2 LDM PFBA
STD T6 SET *IQFT* TRACK
STD QF
STD QT
LDC 500
STD T3
IQF4 LDN 0 CLEAR SYSTEM SECTOR BUFFER
STM BFMS+1,T3
STM QBUF+1,T3 CLEAR IQFT BUFFER
SOD T3
NJN IQF4 LOOP TO START OF BUFFER
STM QBUF+1 CLEAR SECTOR WORD COUNT
LDD MA MOVE FILE NAME TO BUFFER
CWM IQFA,ON
SBN 1
CRM FNSS,ON
SETMS POSITION
RJM WSS WRITE *IQFT* SYSTEM SECTOR
LDN FSMS SET FIRST *IQF* SECTOR
STD QS
LDD CT RESTORE CURRENT TRACK
STD T6
SETMS POSITION
* LDN 0 REREAD QUEUE FILE SYSTEM SECTOR
RJM RSS
LJM IQFX RETURN
IQFA VFD 42/0LQUEUES,6/1,6/SYFT,6/0
MRM SPACE 4
** MRM - ISSUE MRT ERROR MESSAGE.
*
* ENTRY (A) = ADDRESS OF MESSAGE.
* (T6) = TRACK.
* (EQ) = EST ORDINAL TO BE INSERTED IN MESSAGE.
*
* USES T1.
*
* CALLS C2D, DFM.
MRM SUBR ENTRY/EXIT
STD T1 SAVE MESSAGE ADDRESS
STM MRMA
LDD EQ CONVERT UPPER DIGIT OF EST ORDINAL
SHN -6
ADC 2RQ0
STM 1,T1
LDD EQ CONVERT LOWER TWO DIGITS OF EST ORDINAL
RJM C2D
STM 2,T1
LDD T1
LMC MRTC
ZJN MRM1 IF NO TRACK IN MESSAGE
LDD T6 CONVERT TRACK MESSAGE
RJM C2D
STM 6,T1
LDD T6
SHN -6
RJM C2D
STM 5,T1
LDD T1 ISSUE MESSAGE TO ERRLOG
LMC ERLN
RJM DFM
MRM1 LDC * ISSUE MESSAGE TO DAYFILE
MRMA EQU *-1
RJM DFM
LJM MRMX RETURN
MRT SPACE 4
** MRT - PROCESS MRT.
*
* ENTRY (T6) = MRT TRACK NUMBER.
* (NT) = NUMBER OF TRACKS ON DEVICE BEING RECOVERED.
* (EQ) = EST ORDINAL BEING PROCESSED.
*
* EXIT TO *MSR* IF LINK DEVICE ERROR.
*
* USES AD, BY, TC, T5, T6, CM - CM+4.
*
* CALLS MRM, PTR, RSC, WDS.
*
* MACROS ENDMS, MONITOR, SETMS.
MRT8 LDD MA RESET MRT TRACK AND SECTOR
CWM MRTB,ON
SBN 1
CRD T3
SETMS IO,(NS,RW)
LDC BUFS SET BUFFER ADDRESS
RJM WDS WRITE SECTOR
MJN MRT9 IF ERROR
ENDMS
UJN MRTX RETURN
MRT9 LDC MRTC SET MESSAGE ADDRESS
RJM MRM ISSUE ERROR MESSAGE
MRT SUBR ENTRY/EXIT
LDD EQ UPDATE TRT FOR DEVICE
STD CM+1
LDN UTRS
STD CM+3
MONITOR STBM
* LDN 0 SET FIRST TRACK
STD TC
STD BY
LDD LK READ MRT SECTOR FROM LINK DEVICE
STD T5
LDD SD
ZJN MRT1 IF NOT ISD
LDN /MMF/MRTL-/MMF/MRST
MRT1 ADN /MMF/MRST-1 SET MRT SECTOR
ADD MD
STD T7
SETMS IO,NS
LDC BUFS+2+4 SET FIRST MRT BYTE TO PROCESS
STD AD
SBN 2+4 READ MRT SECTOR
RJM RSC
LDD MA SAVE MRT TRACK AND SECTOR
CWD T3
CRM MRTB,ON
ENDMS
LDD EQ SET EST ORDINAL
STD T5
SETMS IO,RW
MRT2 LDI AD
NJN MRT4 IF BITS SET IN BYTE
MRT3 SOD AD
LDN 14 INCREMENT TRACKS
RAD TC
AOD BY INCREMENT BYTE WITHIN WORD
LMN 3
NJN MRT2 IF NOT DONE WITH CM WORD
* LDN 0
STD BY RESET BYTE COUNTER
LDN 10
RAD AD
LCN 4 ADJUST TRACK COUNT
RAD TC
SBD NT
MJN MRT2 IF MORE TRACKS TO CHECK
LJM MRT8
MRT4 LDN 1 INITIALIZE MASK
STM MRTA
SHN 13-0 SET TRACK
ADD TC
STD T6
MRT5 LDI AD
ZJN MRT3 IF NO MORE TRACK BITS IN MRT BYTE
LPC 0
MRTA EQU *-1
ZJN MRT6 IF TRACK BIT NOT SET
LMI AD CLEAR TRACK BIT
STI AD
RJM PTR PROCESS TRACK RESERVATION
MJN MRT6 IF VALID TRACK ASSIGNMENT
LDC MRTD ISSUE ERROR MESSAGE
RJM MRM
MRT6 AOD T6 ADVANCE TRACK
LDM MRTA
RAM MRTA ADJUST MASK FOR NEXT MRT BIT
SHN -14
ZJN MRT5 IF NOT ZERO MASK
LJM MRT3 SET NEXT MRT BYTE
MRTB BSS 5 TEMPORARY STORAGE
MRTC DATA C* EQXXX, MRT PROCESSED BUT NOT REWRITTEN.*
MRTD DATA C* EQXXX, TKYYYY, INCORRECT LOCAL FILE.*
MSR SPACE 4
** MSR - RETURN ERROR TO *MREC*.
*
* ENTRY (A) = ERROR CODE.
*
* EXIT ERROR RETURN WORD RETURNED TO *MREC*.
*
* CALLS CFR.
MSR STD T5 SAVE ERROR CODE
LDN ZERL
CRD T0
LDD RA RETURN ERROR WORD TO *MREC*
SHN 6
ADC /MRT/ERRW
CWD T1
MSR1 LJM DROP DROP PP
PFB SPACE 4
** PFB - CLEAN UP DIRECT ACCESS FILE SYSTEM SECTORS.
*
* ENTRY (EQ) = EST ORDINAL TO PROCESS.
* (NT) = NUMBER OF TRACKS ON DEVICE.
*
* EXIT (A) = 0 IF DEVICE CLEANUP COMPLETED.
*
* USES BY, CT, NT, PF, TC, T2, T5, T6, T7, CM - CM+4.
*
* CALLS CAM, CQF, C2D, DPS, FAT, PFA, RRS, RSS, SSE, STB,
* STI, TQF, USC, WDS.
*
* MACROS ENDMS, PAUSE, SETMS.
PFB SUBR ENTRY/EXIT
LDD EQ SET EST ORDINAL
STD T5
SHN -6 CONVERT UPPER DIGIT OF EST ORDINAL
ADC 2RQ0
STM PFBB+10
STM PFBC+13
LDD EQ CONVERT LOWER TWO DIGITS OF EST ORDINAL
RJM C2D
STM PFBB+11
STM PFBC+14
SETMS IO,(NS,RW)
LDN 0
STD BY PRESET FILES PROCESSED COUNT
STD EF
LDD CM+4 GET *IQFT* POINTER FROM MST
STM PFBD
PFB0 SHN 3
ADN ACGL
CRD CM
LDD CM+3 SET *IQFT* TRACK
STM PFBA
STD T6 INTERLOCK *IQFT*
RJM STI
ZJN PFB1 IF TRACK INTERLOCKED
LDD CP
ADN MS2W STORE WAITING MESSAGE
CWM PFBC,TR
DELAY 10*100D DELAY 100 MS
PAUSE NE
LDC ** LOAD MST ADDRESS
PFBD EQU *-1
UJN PFB0 LOOP ON INTERLOCK
PFB1 STD PF
LDC PFB18 SET WRITE ERROR PROCESSING RETURN
STM WDSA
LDD MD SET MACHINE INDEX*5
STD TC
SHN 2
RAD TC
ADC UCSS SET BEGINNING OF DOWNED MACHINE ENTRY
STM USCA
LDC 4000-1 SET INITIAL TRACK
STD CT
ADN 1 SET LAST TRACK + 1
RAD NT
PFB2 AOD CT ADVANCE TRACK NUMBER
LMD NT
NJN PFB3 IF NOT END OF TRT
STD CM
LDC WDSX RESET ERROR RETURN
STM WDSA
LDD CP CLEAR CONTROL POINT MESSAGE
ADN MS2W
CWD CM
RJM TQF TERMINATE *IQFT*
LDD EF
LJM PFBX RETURN
PFB3 LDD CT SET NEXT TRACK
STD T6
LMC 0
PFBA EQU *-1
ZJN PFB2 IF *IQFT* TRACK
RJM DPS DETERMINE TRACK STATUS
SHN 21-7
PJN PFB2 IF NOT FIRST TRACK OF PRESERVED FILE
* READ AND VERIFY SYSTEM SECTOR.
AOD BY INCREMENT SYSTEM SECTORS PROCESSED
LMN NFTP
NJN PFB4 IF NOT TIME TO PAUSE
STD BY RESET COUNTER
PAUSE NE
PFB4 LDD T6 SET TRACK NUMBER IN MESSAGE
RJM C2D
STM PFBB+16
LDD T6
SHN -6
RJM C2D
STM PFBB+15
LDD CP ISSUE MESSAGE
ADN MS2W
CWM PFBB,TR
SETMS POSITION
* LDN 0
RJM RSS
ZJN PFB7 IF VALID SYSTEM SECTOR
PFB5 ENDMS
LDD PF
ZJN PFB6 IF TRACK NOT INTERLOCKED
LDN CTIS
RJM STB CLEAR TRACK INTERLOCK
* LDN 0
STD PF
PFB6 LJM PFB2 LOOP FOR NEXT PRESERVED FILE
PFB7 RJM CQF CHECK FOR QUEUE FILE
NJN PFB5 IF QUEUE FILE PROCESSED
LDD FT CHECK FILE TYPE
LMN PMFT
ZJN PFB10 IF DIRECT ACCESS FILE
LMN FAFT&PMFT
NJN PFB5 IF NOT FAST ATTACH FILE
RJM RRS
LDD SD
NJN PFB9 IF ISD
LDM FISS
LPC 3777
ZJN PFB10 IF NOT GLOBAL ATTACH FILE
RJM FAT PROCESS FAST ATTACH FILE
PFB8 NJN PFB5 IF FILE STILL IN FAST ATTACH STATUS
LJM PFB14 REWRITE SECTOR
PFB9 RJM PFA PROCESS FAST ATTACH FILE ON ISD
NJN PFB8 IF SYSTEM SECTOR UPDATE NOT REQUIRED
UJN PFB14 REWRITE SYSTEM SECTOR
* UPDATE USER COUNTS IN SYSTEM SECTOR.
PFB10 LDM UCSS,TC CHECK IF ALL COUNTS ZERO
LPN 1
STD T2
ADM UCSS+1,TC
ADM UCSS+2,TC
ADM UCSS+3,TC
ADM UCSS+4,TC
NJN PFB12 IF NECESSARY TO UPDATE SECTOR
RJM CAM CHECK ACCESS MODE BITS
NJN PFB8 IF FILE NOT PURGED
PFB11 LJM PFB2 LOOP FOR NEXT PRESERVED FILE
PFB12 RJM RRS REREAD SYSTEM SECTOR WITH INTERLOCK
LDN 0
STM FISS
RJM USC UPDATE SYSTEM SECTOR COUNTS
LDC PMFT*100
STM FNSS+4
PFB14 RJM CAM CHECK ACCESS MODE BITS
ZJN PFB11 IF FILE PURGED
* WRITE SECTOR BACK TO DEVICE.
LDN 0 RESET SECTOR
STD T7
LDC BFMS WRITE SECTOR
RJM WDS
ZJN PFB16 IF NO ERRORS
ENDMS
RJM SSE
PFB16 LJM PFB5 CLEAR TRACK INTERLOCK
PFB18 AOD EF SET ERROR FLAG
LDD NT
SBN 1 ENABLE IMMEDIATE RETURN
STD CT
UJN PFB16 COMPLETE OPERATIONS ON DEVICE
PFBB DATA C* RECOVERING PF.EQXXX, TRK YYYY.*
PFBC DATA C*$INTERLOCKING IQFT, EQXXX.*
PTR SPACE 4,15
** PTR - PROCESS TRACK RESERVATION.
*
* ENTRY (T5) = EST ORDINAL.
* (T6) = CURRENT TRACK.
* (SD) = INDEPENDENT SHARED DEVICE STATUS.
*
* EXIT (A) .GE. 0 IF INCORRECT LOCAL FILE.
*
* USES CM - CM+4.
*
* CALLS DPS, RSS, STB.
*
* MACROS ENDMS, MONITOR.
PTR1 LDN CTIS CLEAR INTERLOCK
RJM STB
PTR3 LCN 0 SET EXIT CONDITION
PTR SUBR ENTRY/EXIT
RJM DPS DETERMINE TRACK STATUS
SHN 21-3
MJN PTR1 IF TRACK INTERLOCKED
SHN 3-21+22
PJN PTRX IF TRACK NOT RESERVED
SHN 21-7
MJN PTRX IF FILE PRESERVED
LDN 0 READ SYSTEM SECTOR
RJM RSS
LPC 7777
NJN PTRX IF SYSTEM SECTOR ERROR
ENDMS
LDD T6 RELEASE LOCAL FILE DISK SPACE
STD CM+2
LDD T5
LMC 2000 SET TRACK DROP FOR ANOTHER MACHINE
STD CM+1
MONITOR DTKM
UJN PTR3 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 IF TRACK NOT ALREADY
* INTERLOCKED.
*
* 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
RSC SPACE 4,10
** RSC - READ SECTOR AND CHECK FOR ERRORS.
*
* ENTRY (A) = BUFFER ADDRESS.
* (T5 - T7) = DRIVER PARAMETERS.
*
* ERROR TO *MSR* IF READ ERROR.
*
* CALLS RDS.
*
* MACROS ENDMS.
RSC SUBR ENTRY/EXIT
RJM RDS READ SECTOR
PJN RSCX IF NO ERROR
RSC1 ENDMS
LDN /MRT/RER SET READ ERROR
LJM MSR PROCESS ERROR
SCI SPACE 4,15
** SCI - INCREMENT/DECREMENT *MREC* ACTIVITY COUNT.
*
* *CMS* WILL WAIT ON THE ACTIVITY COUNT IN *INWL* BEFORE AN
* UNLOAD WILL BE PROCESSED.
*
* EXIT (A) = 0.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
SCI SUBR ENTRY/EXIT
SCIA LDD MA INCREMENT/DECREMENT *MREC* COUNT
* UJN SCIX (NOT *PMT* OR *UMT* FUNCTION)
CWM SCIB,TW
SBN 1
CRD CM
MONITOR UADM
LDD CM+1
ZJN SCIX IF NO OVERFLOW/UNDERFLOW
SCI1 MONITOR HNGM
UJN SCI1 HANG
SCIB VFD 12/LIOS,12/INWL,6/18D,6/6,24/0 INCREMENT ACTIVITY
*SCIB VFD 12/LDOS,12/INWL,6/18D,6/6,24/0 (DECREMENT ACTIVITY)
VFD 12/0,12/1,12/1,24/0
SDP SPACE 4,15
** SDP - SET DEVICE PARAMETERS.
*
* ENTRY (EQ) = EQUIPMENT.
*
* EXIT (A) = PF CATALOG SIZE.
* = 0, 8 WORD CATALOGS.
* = 1000, 16 WORD CATALOGS.
* (DF) = DAF COUNT.
* (NT) = NUMBER OF TRACKS ON DEVICE.
* (DPSA - DPSA+1) = TRT ADDRESS.
*
* USES T0 - T6, CN - CN+4.
*
* MACROS SFA.
*
* CALLS CAT.
SDP SUBR ENTRY/EXIT
SFA EST,EQ SET DEVICE PARAMETERS
ADK EQDE
CRD CN
LDD CN+4
SHN 3
ADN MDGL
CRD T0
SBN MDGL-TDGL
CRD T1
ADN ACGL-TDGL
CRD CN SET DAF COUNT
ADN TRLL-ACGL
RJM CAT CALCULATE FWA OF TRT
SBD TH
STM DPSA+1
SHN -14
LMC ADCI
STM DPSA
LDD T1+2
SHN 2
STD NT NUMBER OF TRACKS
SHN 21-13
PJN SDP1 IF NOT FULL-LENGTH TRT
SOD NT SET (NT) = 3777
SDP1 LDD CN+2
STD DF DAF COUNT
LDD T0 GET PFC SIZE
LPC 1000
LJM SDPX RETURN
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 *ERR* 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
LJM ERR PROCESS ERROR FLAG TERMINATION
TQF SPACE 4,15
** TQF - TERMINATE *IQFT*.
*
* ENTRY (T5) = EST ORDINAL.
* (QF) = FIRST TRACK OF *IQFT*.
* (QT) = CURRENT *IQFT* TRACK.
* (QS) = CURRENT *IQFT* SECTOR.
*
* EXIT (QF) = 0.
*
* USES T1, T6, T7.
*
* CALLS STB, WEI, WQF.
*
* MACROS ENDMS, MONITOR, SETMS.
TQF2 LDM PFBA
ZJN TQFX IF *IQFT* NOT INTERLOCKED
STD T6
LDN CTIS CLEAR TRACK INTERLOCK
RJM STB
* LDN 0 CLEAR *IQFT* PROCESSING INITIATED
STD QF
STM PFBA CLEAR TRACK INTERLOCKED FLAG
TQF SUBR ENTRY/EXIT
LDD QF
ZJN TQF2 IF NO QUEUE FILE PROCESSING
LDC 500
STD T1
TQF1 LDN 0 CLEAR EOI SECTOR BUFFER
STM BFMS+1,T1
SOD T1
NJN TQF1 LOOP TO START OF BUFFER
RJM WQF WRITE LAST *IQFT* SECTOR
LDD MA MOVE FILE NAME TO BUFFER
CWM IQFA,ON
SBN 1
CRM BFMS+FNEI,ON
LDD T5 SETUP EOI SECTOR BUFFER
STM BFMS+FSEI
LDD QF
STM BFMS+FTEI
LDD QT SET CURRENT *IQFT* TRACK AND SECTOR
STD T6
LDD QS
STD T7
SETMS POSITION
RJM WEI WRITE EOI SECTOR
ENDMS
LDD T5 SET EOI IN TRT
LMC 1S11
STD CM+1
LDD QT
LPC 3777
STD CM+2
LDD QS
STD CM+3
MONITOR DTKM
LJM TQF2 CLEAR TRACK INTERLOCK
USC SPACE 4,10
* USC - UPDATE SYSTEM SECTOR COUNTS.
*
* ENTRY (T2) = WRITE MODE FLAG FROM UCSS OF DOWN MACHINE.
* (TC) = MACHINE INDEX*5.
* (MI) = MACHINE INDEX.
* (UCSA) = ADDRESS IN BUFFER OF DOWN MACHINE PF COUNTS.
* (BFMS) = SYSTEM SECTOR.
*
* EXIT COUNTS UPDATED AND ENTRY CLEARED FOR DOWN MACHINE.
USC SUBR ENTRY/EXIT
LDN 0 SUBTRACT DOWN MACHINE COUNTS FROM TOTAL
SBM UCSS+1,TC
RAM UCSS+1
LDN 0
SBM UCSS+2,TC
RAM UCSS+2
LDN 0
SBM UCSS+3,TC
RAM UCSS+3
LDN 0
SBM UCSS+4,TC
RAM UCSS+4
LDM UCSS,TC
LPN 2
ZJN USC1 IF LOCAL UTILITY ATTACH FLAG NOT SET
LDM CASS CLEAR GLOBAL UTILITY ATTACH FLAG
LPC 7677
STM CASS
USC1 LDN ZERL CLEAR ENTRY FOR DOWNED MACHINE
CRM *,ON
USCA EQU *-1
LDD T2
ZJN USC2 IF WRITE MODE NOT SET
LDM CASS CLEAR WRITE MODE BITS IN ACCESS WORD
LPC 7541
STM CASS
USC2 LJM USCX RETURN
WQF SPACE 4,15
** WQF - WRITE *IQFT* SECTOR.
*
* ENTRY (T5) = EST ORDINAL.
* (QT) = CURRENT *IQFT* TRACK.
* (QS) = CURRENT *IQFT* SECTOR.
*
* EXIT (A) = 0 IF SECTOR WRITTEN.
*
* USES T6, T7, CM - CM+4.
*
* CALLS WDS.
*
* MACROS ENDMS, MONITOR.
WQF SUBR ENTRY/EXIT
LDD QT SET CURRENT *IQFT* TRACK
STD T6
LDC QBUF+2 RESET BUFFER POINTER
STM CQFC
LDD QS SET *IQFT* SECTOR
STD T7
ADN 1 SET SECTOR LINKAGE
STM QBUF
STD QS SET NEXT *IQFT* SECTOR
LMM SLM
NJN WQF1 IF NOT SECTOR LIMIT
ENDMS
* LDN 0
STD CM+3
STD CM+4
STD QS
LDD T5 REQUEST NEXT *IQFT* TRACK
STD CM+1
LDD T6
STD CM+2
MONITOR RTCM
LDD CM+4 SET NEXT TRACK IN SECTOR LINKAGE
STM QBUF
ZJN WQF3 IF NO TRACK AVAILABLE
STD QT
WQF1 SETMS POSITION
LDC QBUF+WLSF WRITE *IQFT* SECTOR
RJM WDS
ENDMS
* LDN 0
STM QBUF+1
WQF2 LJM WQFX RETURN
WQF3 LDD T7 SAVE LAST SECTOR FOR EOI
STD QS
UJN WQF2 RETURN
TITLE EXTENDED MEMORY MMF SUBROUTINES.
SPACE 4,10
*** EXTENDED MEMORY MMF SUBROUTINES.
*
* THE FOLLOWING CODE IS USED ONLY FOR ECS MMF ENVIRONMENTS.
* IT IS OVERLAID BY ISD MMF CODE IF RUNNING IN AN ISD SYSTEM.
USE OVERLAY
OVLA EQU *+5 *2MR* LOAD ADDRESS
CFR SPACE 4,10
** CFR - CLEAR FLAG REGISTER BIT.
*
* ENTRY (A) = BIT NUMBER TO CLEAR.
*
* USES CM - CM+4.
*
* CALLS TFR.
*
* MACROS MONITOR.
CFR SUBR ENTRY/EXIT
RJM TFR TOGGLE FLAG REGISTER BIT
LDD T1 BIT NUMBER
SHN 6
STD CM+1
LDN CFRS SET TO CLEAR FLAG REGISTER BIT
SHN 11
STD CM+3
MONITOR ECSM
UJN CFRX RETURN
DAT SPACE 4,10
** DAT - READ(WRITE) DAT ENTRY (2 WORDS).
*
* ENTRY (A) = EST ORDINAL OF EQUIPMENT.
* (T3) = RECS*1000 IF READ, WECS*1000 IF WRITE.
* DAT IN CM BUFFER (MA - MA+1) IF WRITE.
*
* EXIT (BUFD) = 2 WORD DAT ENTRY. (READ ONLY)
*
* CALLS ECS.
*
* USES CM - CM+4, T1.
*
* MACROS SFA.
DAT SUBR ENTRY/EXIT
SFA EST READ EST ENTRY
ADK EQDE
CRD CM
LDD CM+4 READ MST FOR DAT INDEX
SHN 3
ADN MDGL
CRD CM
LDD CM SET DAT INDEX
LPC 377
SHN 1
ADD DA+1
STD CM+4
SHN -14
ADD T3 SET TO READ/WRITE EXTENDED MEMORY
ADD DA
STD CM+3
LDN 2-1 READ TWO WORDS
RJM ECS READ(WRITE) EXTENDED MEMORY
LDD T3
LMD WE
ZJN DATX IF WRITE
LDD MA
CRM BUFD,TW
UJN DATX RETURN
ECS SPACE 4,10
** ECS - READ/WRITE EXTENDED MEMORY.
*
* ENTRY (A) = WORD COUNT - 1.
* (CM+3 - CM+4) = PARAMETERS FOR *ECSM* FUNCTION.
*
* EXIT (A) = 0.
*
* ERROR TO *MSR* IF TRANSFER ERROR.
ECS SUBR ENTRY/EXIT
SHN 6
STD CM+1 SET WORD COUNT
LDD MA
STD CM+2 SET BUFFER ADDRESS
MONITOR ECSM
LDD CM+1
ZJN ECSX IF NO ERRORS
LDN /MRT/RER SET READ ERROR
LJM MSR PROCESS ERROR
FAT SPACE 4,10
** FAT - PROCESS FAST ATTACH PERMANENT FILES.
*
* ENTRY (A) = INDEX OF FAT ENTRY IN EXTENDED MEMORY.
* SYSTEM SECTOR IN BFMS.
*
* EXIT (A) = 0 IF REMOVE FILE FROM FAST ATTACH STATUS.
*
* USES T2, T3, T7, CM - CM+4.
*
* CALLS CFR, ECS, SFR, WFW.
*
* MACROS ENDMS.
FAT SUBR ENTRY/EXIT
STD T3
LDK MMFL
CRD CM
LDD CM+1
SHN 21-12
PJN FAT1 IF NOT LSPMMF
SHN 12-21
LPC 777
LMD T5
NJN FAT1 IF FILE DOES NOT RESIDE ON LINK DEVICE
ENDMS
FAT1 LDN /MMF/FATI OBTAIN *FATI* INTERLOCK
RJM SFR
LDN 0 SET FAT WORD TO READ
STD T2
FAT2 LDD T3 SET FAST ATTACH TRACK ADDRESS
SHN /MMF/FATS
ADD T2
ADD DA+1
ADC /MMF/FAST*100
STD CM+4
SHN -14
ADD DA
ADD RE READ EXTENDED MEMORY
STD CM+3
LDN 1-1 SET WORD COUNT
RJM ECS READ FAT WORD
LDD T2 READ FAT ENTRY INTO BUFFER
SHN 2
ADD T2
ADC BUFS
STM FATA
LDD MA
CRM BUFS,ON
FATA EQU *-1
AOD T2
LMN /MMF/MXMF+2
NJN FAT2 IF NOT END OF WORDS TO READ
LDD MD SET INDEX INTO ENTRY FOR DOWNED MACHINE
SHN 2
ADD MD
STD T2
STD T7 PRESET EXIT CONDITION
LDN 0 ADJUST COUNTS
SBM BUFS+5+2,T2
RAM BUFS+5+2
LDN 0
SBM BUFS+5+3,T2
RAM BUFS+5+3
LDN 0
SBM BUFS+5+4,T2
RAM BUFS+5+4
LDD MA WRITE GLOBAL COUNTS TO EXTENDED MEMORY
CWM BUFS+5,ON
LDN 1
RJM WFW WRITE FAT WORD
LDN ZERL
CRD CM
LDD MA
CWD CM
LDD MD
ADN 1
RJM WFW WRITE FAT WORD
LDN 0
STM BUFS+5,T2 ZERO SLOT FOR THIS MACHINE
STD T2
FAT3 LDM BUFS+2*5,T2
NJN FAT4 IF FILE STILL ATTACHED
LDN 5
RAD T2
LMK 5*/MMF/MXMF
NJN FAT3 IF NOT END OF MACHINES TO CHECK
STM FISS CLEAR FAST ATTACH STATUS
STD T7 SET EXIT CONDITION
LDN ZERL CLEAR ENTRY IN EXTENDED MEMORY
CRD CM
LDD MA
CWD CM
LDN 0
RJM WFW WRITE WORD 0 OF FAT
LDC PMFT*100 RESET FILE TYPE
STM FNSS+4
LDM CASS CLEAR WRITE MODE BITS IN ACCESS WORD
LPC 7541
STM CASS
FAT4 LDN /MMF/FATI CLEAR *FATI* INTERLOCK
RJM CFR
LDD T7
LJM FATX RETURN
PDT SPACE 4,10
** PDT - CLEAR DEVICE ACCESSED BIT IN DAT FOR DOWNED MACHINE.
*
* ENTRY (EQ) = EST ORDINAL.
*
* EXIT (A) = 0 IF NOT PROCESSING DEVICE.
* (T6) = MST TRACK IF PROCESSING DEVICE.
*
* USES T3, T6.
*
* CALLS CKP, DAT.
PDT SUBR ENTRY/EXIT
LDD MK
STM PDTA SET DOWNED MACHINE MASK
LDD RE
STD T3 SET READ OF DAT
LDD EQ
RJM DAT
LDM BUFD+5+4 CHECK IF DOWNED MACHINE ACCESSING DEVICE
LPC *
PDTA EQU *-1
ZJN PDTX IF DEVICE ACCESS NOT SET
LMM BUFD+5+4
STM BUFD+5+4
LDM BUFD+4 SET MST TRACK FOR DEVICE
STD T6
RJM CKP SET CHECKPOINT BIT
LDN 1
UJN PDTX RETURN
SFR SPACE 4,10
** SFR - SET FLAG REGISTER BIT.
*
* ENTRY (A) = BIT NUMBER TO SET.
*
* ERROR TO *ERR* IF ERROR FLAG SET.
*
* USES T1, CM - CM+4.
*
* CALLS DAP, TFR.
*
* MACROS MONITOR.
SFR2 LDD CP CLEAR MESSAGE
ADN MS2W
CWD CM
SFR SUBR ENTRY/EXIT
RJM TFR TOGGLE FLAG REGISTER BIT
SFR1 LDD T1 SET BIT NUMBER
SHN 6
STD CM+1
LDC SFRS*1000
STD CM+3
MONITOR ECSM
LDD CM+1
ZJN SFR2 IF BIT SET
LDD CP
ADN MS2W
CWM SFRA,TR
RJM DAP DELAY AND PAUSE
NJN SFR1 IF NO OPERATOR DROP
LDD T1 RESET BIT INTERLOCKED FLAG
RJM TFR TOGGLE FLAG REGISTER BIT
LJM ERR ERROR FLAG TERMINATION
SFRA DATA C*WAITING FOR XXXI INTERLOCK.*
TFRB SPACE 4,10
** TFRB - TABLE OF FLAG REGISTER BIT INTERLOCKS.
*
* ENTRY = 3 WORDS.
*T, TFRB 6/,1/I ,5/N ,24/FLAG BIT MNEMONIC
* I FLAG BIT INTERLOCKED FLAG
* N BIT NUMBER
TFRB BSS 0 TABLE OF FLAG REGISTER BIT INTERLOCKS
VFD 12//MMF/DATI,24/0LDATI DAT INTERLOCK
VFD 12//MMF/FATI,24/0LFATI FAST ATTACH TRACK INTERLOCK
VFD 12//MMF/BDTI,24/0LBDTI BDT INTERLOCK
CON 0 TERMINATOR
TFR SPACE 4,10
** TFR - TOGGLE FLAG REGISTER BIT.
*
* ENTRY (A) = FLAG BIT NUMBER.
*
* USES T1, CM+2.
TFR SUBR ENTRY/EXIT
STD T1
LDC TFRB-3 INITIALIZE BIT SEARCH
STD CM+2
TFR1 LDN 3 SEARCH FOR FLAG BIT
RAD CM+2
LDI CM+2
ZJN * IF BIT NOT FOUND
LMD T1
LPN 37
NJN TFR1 IF NOT FOUND
LDI CM+2 TOGGLE BIT
LMN 40
STI CM+2
LDM 1,CM+2 SET BIT MNEMONIC IN MESSAGE
STM SFRA+6
LDM 2,CM+2
STM SFRA+7
UJN TFRX RETURN
WFW SPACE 4,10
** WFW - WRITE FAT WORD.
*
* ENTRY (A) = RELATIVE FAT WORD TO WRITE.
* (T3) = FAT INDEX.
* MESSAGE BUFFER CONTAINS WORD TO WRITE.
*
* USES CM+3, CM+4.
*
* CALLS ECS.
WFW SUBR ENTRY/EXIT
SHN 22-/MMF/FATS
ADD T3
SHN /MMF/FATS
ADD DA+1 SET FAST ATTACH TRACK ADDRESS
ADC /MMF/FAST*100
STD CM+4
SHN -14
ADD DA
ADD WE
STD CM+3
LDN 1-1 WORD COUNT
RJM ECS WRITE EXTENDED MEMORY
UJN WFWX RETURN
SPACE 4,5
E1MR BSS 0 END OF ECS MMF CODE
TITLE FUNCTION 0 - RETRIEVE DISPLAY INFORMATION.
RDI SPACE 4,10
** RDI - RETRIEVE DISPLAY INFORMATION. (FUNCTION 0)
*
* ENTRY (IR+3 - IR+4) = ADDR.
*
* ADDR ADDRESS OF TABLE OF SHARED DEVICES FOR THIS MACHINE.
*
* CALLS CAA, DAT.
*
* MACROS SFA.
RDI SUBR ENTRY/EXIT
LDK EFRL READ MACHINE STATE TABLE
CRD CM
LDN /MMF/MXMF SET MAXIMUM NUMBER OF MAINFRAMES
STD T1
LDD CM
SHN 14
LMD CM+1
CRM BFMS,T1
LDD RA WRITE STATE TABLE TO CM TABLE
SHN 6
ADK /MRT/TMID
CWM BFMS,T1
* RETURN MASKS OF MACHINES SHARING DEVICES WITH THIS MACHINE.
LCN 0 SET TABLE INDEX
STD SC
RDI1 AOD SC INCREMENT TABLE INDEX
RJM CAA
ADD SC
CRD CN READ TABLE ENTRY
LDD CN+4
ZJN RDIX IF END OF TABLE
SFA EST
ADK EQDE READ EST ENTRY
CRD CM
LDD CM
SHN 21-6
MJN RDI1 IF DEVICE UNAVAILABLE
LDD RE
STD T3 SET READ OPERATION
LDD CN+4
RJM DAT READ DAT ENTRY
LDM BUFD+5+4
LMC 0 CLEAR MASK OF THIS MACHINE
RDIA EQU *-1
STD CN SET MACHINE MASK
RJM CAA
ADD SC WRITE ENTRY BACK TO *MREC*
CWD CN
UJP RDI1 LOOP FOR NEXT DEVICE
ERRNG BUFD-* CODE OVERFLOWS BUFFER
TITLE FUNCTION 3 - CLEAR DEVICE INTERLOCKS.
CDV SPACE 4,10
** CDV - CLEAR DEVICE INTERLOCKS. (FUNCTION 3)
*
* ENTRY (IR+4) = MACHINE INDEX FOR WHICH TO CLEAR INTERLOCKS.
*
* EXIT TO *MRP2*.
*
* MACROS MONITOR.
CDV8 MONITOR HNGM
CDV9 LDK EFRL CHANGE STATE OF DOWN MACHINE
CRD CM
LDD CM
SHN 14
LMD CM+1
ADD IR+4
ADK /MMF/MFST-1
CRD CN
LDD CN+4
LMN /MMF/MFMR
NJN CDV8 IF NOT IN PROPER STATE
* LDN /MMF/MFDN SET *1MR* DONE STATE
ERRNZ /MMF/MFDN CODE DEPENDS ON VALUE OF TAG
STD CN+4
LDD CM WRITE STATE WORD
SHN 14
LMD CM+1
ADD IR+4
ADK /MMF/MFST-1
CWD CN
LJM MRP2 EXIT TO DROP PP ONLY
CDV SUBR ENTRY/EXIT
LDK ESTP PRESET EQUIPMENT SEARCH
CRD CM
LDD CM+3
STD EQ
CDV1 SOD EQ
ZJN CDV9 IF END OF EQUIPMENTS
SFA EST
ADK EQDE
CRD CN
LDD CN
LPC 5020
LMC 5000
NJN CDV1 IF NOT MMF SHARED DEVICE
* OBTAIN DEVICE INTERLOCK WHILE PROCESSING TRACK INTERLOCKS.
RJM CBI CLEAR SHARED BUFFERED DEVICE INTERLOCKS
LDD EQ SET EST ORDINAL
STD CM+1
LDN SDIS INTERLOCK DEVICE
STD CM+3
MONITOR STBM
LDD CN+4 GET TRT ADDRESS
SHN 3
ADK TDGL
CRD T1
ADK SDGL-TDGL
CRD T6 (T6 - T6+1) = EM ADDRESS OF MST
ADK TRLL-SDGL
CRD CN+3-4 (CN+2 - CN+3) = TRT ADDRESS
LDD T1+2 SET TRT LENGTH
STD TC
LDN 0 SET CURRENT TRT WORD
STD CN
UJN CDV3 ENTER LOOP
* LOOP THROUGH TRT WORDS CHECKING FOR INTERLOCKED TRACKS.
CDV2 AOD CN ADVANCE TRT WORD
SBD TC
PJP CDV4 IF END OF TRT
CDV3 LDD CN+2 READ TRT WORD
SHN 14
LMD CN+3
ADD CN
CRD T1
LDD T1+4
SHN -4
LPN 17
ZJN CDV2 IF NO TRACK INTERLOCK BITS SET
* INTERLOCKED TRACK(S) FOUND, CHECK IF HELD BY DOWN MACHINE.
ADC TCDVB GET INTERLOCK BITS IN MRT ORDER
STD T0
LDI T0
STM CDVB (CDVB) = TRACK INTERLOCK BITS (MRT ORDER)
LDD IR+4 COMPUTE EXTENDED MEMORY MRT ADDRESS
SHN 6+3
ADD CN
SHN -3
ADC /MMF/MRST*100-100
STD SC ADDRESS OF MRT WORD IN TRACK
ADD T6+1
STD CM+4
SHN -14
ADD T6
ADD RE
STD CM+3
LDD MA SET CM ADDRESS
STD CM+2
LDN 0 SET WORD COUNT TO 1
STD CM+1
MONITOR ECSM
LDD MA READ MRT WORD
CRD CM
* CHECK MRT WORD OF DOWN MACHINE TO SEE IF IT HAS INTERLOCKS.
LDD CN COMPUTE MRT BYTE
LPN 7
STD BI
LDM TCDV,BI SET BYTE FROM TABLE
STD BY
LDM TCDVA,BI SET MRT SHIFTS
STM CDVA
LMN 77
STM CDVC
LDI BY
CDVA SHN ** SHIFT MRT BITS TO BITS 4 - 7
LPC **
CDVB EQU *-1
ZJP CDV2 IF NO INTERLOCKS HELD BY THIS MACHINE
STD T0 SAVE INTERLOCKS CLEARED
CDVC SHN ** SHIFT BACK
LMI BY
STI BY
* CLEAR TRACK INTERLOCK BITS IN TRT WORD.
LDD T0 GET INTERLOCK BITS CLEARED IN TRT ORDER
SHN -4
ADC TCDVB
STD T0
LDI T0
LMD T1+4
STD T1+4
LDD CN+2 WRITE TRT WORD
SHN 14
ADD CN+3
ADD CN
CWD T1
* REWRITE MRT WORD TO EXTENDED MEMORY.
LDD MA SET CM ADDRESS
CWD CM WRITE MRT WORD TO MB
STD CM+2
LDD SC SET ADDRESS OF MRT WORD
ADD T6+1
STD CM+4
SHN -14
ADD T6
ADD WE
STD CM+3
LDN 0 SET WORD COUNT TO 1
STD CM+1
MONITOR ECSM
LJM CDV2 PROCESS NEXT TRT WORD
* ADJUST *PFM* ACTIVITY COUNTS.
CDV4 LDN GLGL-LLLL COMPUTE EM ADDRESS OF LOCAL MST
STD SC
LDN 0
STD T0
CDV5 LDN LLLL
RAD SC
AOD T0
LMD IR+4
NJN CDV5 IF NOT END OF COMPUTATION
ERRNG 6-LLLL LOCAL MST EXCEEDS MESSAGE BUFFER
LDD SC SET EXTENDED MEMORY ADDRESS FOR *ECSM*
ADD T6+1
STD CM+4
SHN -14
ADD T6
ADD RE
STD CM+3
LDD MA SET CM ADDRESS
STD CM+2
LDC LLLL*100-100
STD CM+1
MONITOR ECSM
LDD MA READ LOCAL AREA
CRM MBUF,SX
* SUBTRACT LOCAL PF COUNTS FROM GLOBAL.
LDD CN+4 READ GLOBAL COUNT WORD FROM CM MST
SHN 3
ADK TDGL
CRD CM
LDD CM+1
ZJN CDV7 IF NO COUNTS SET
SBM MBUF+DULL*5-GLGL*5+1
MJN CDV6 IF COUNTER UNDERFLOW
STD CM+1
CDV6 LDN 0
STM MBUF+DULL*5-GLGL*5+1
LDD CN+4
SHN 3
ADK TDGL
CWD CM
* WRITE LOCAL MST BACK TO EXTENDED MEMORY.
LDD MA WRITE LOCAL AREA
STD CM+2
CWM MBUF,SX
LDD SC SET EXTENDED MEMORY ADDRESS FOR *ECSM*
ADD T6+1
STD CM+4
SHN -14
ADD T6
ADD WE
STD CM+3
LDC LLLL*100-100
STD CM+1
MONITOR ECSM
* CLEAR DEVICE INTERLOCK. NOTE THAT THE TRT AND GLOBAL MST
* ARE WRITTEN TO EXTENDED MEMORY BY THIS FUNCTION.
CDV7 LDD EQ
ADC 4000 SET CHECKPOINT BIT
STD CM+1
LDN CDIS
STD CM+3
MONITOR STBM
LJM CDV1 PROCESS NEXT EQUIPMENT
TCDV CON CM+4,CM+4,CM+4,CM+3,CM+3,CM+3,CM+2,CM+2
TCDVA CON SHNI+4,SHNI,SHNI+73,SHNI+4,SHNI,SHNI+73,SHNI+4,SHNI
TCDVB CON 00,200,100,300,40,240,140,340
CON 20,220,120,320,60,260,160,360
TITLE *CDV* SUBROUTINES.
ABE SPACE 4,10
** ABE - ACCESS *BDT* ENTRY.
*
* ENTRY (A) = READ/WRITE FUNCTION CODE (*RE* OR *WE*).
* (SC) = *DAT* INDEX.
* (ABEA) = *BDT* TRACK.
*
* USES CM+3, CM+4, T6, T7.
*
* CALLS CEA, ECS.
ABE SUBR ENTRY/EXIT
ADC ADDI
STM ABEB
LDC ** (*BDT* TRACK)
ABEA EQU *-1
STD T6
LDN 0
STD T7
RJM CEA CONVERT EXTENDED MEMORY ADDRESS
LDD SC ADD *DAT* INDEX
RAD CM+4
SHN -14
ABEB ADD RE READ FUNCTION
* ADD WE (WRITE FUNCTION)
RAD CM+3
LDN 1-1 READ OR WRITE ONE WORD
RJM ECS READ OR WRITE *BDT* ENTRY
UJN ABEX RETURN
CBI SPACE 4,10
** CBI - CLEAR SHARED BUFFERED DEVICE INTERLOCKS.
*
* ENTRY (MD) = MACHINE INDEX OF DOWNED MACHINE.
* (EQ) = EST ORDINAL.
* (CN - CN+4) = EST ENTRY.
*
* USES SC, CM - CM+4, T1 - T5.
*
* CALLS ABE, CFR, SFR.
*
* MACROS CMSTF, MONITOR.
CBI SUBR ENTRY/EXIT
LDD CN
SHN 21-5
PJN CBIX IF NOT SHARED BUFFERED DEVICE
LDN ZERL
CRD CM
LDD MD SET MACHINE INDEX OF DOWNED MACHINE
STD CM+2
LDD EQ SET EST ORDINAL
STD CM+4
LDN CBRS CLEAR *BAT* READ ACCESS PERMISSIONS
STD CM+1
MONITOR MTEM
LDD CN+4
SHN 3
ADN MDGL
CRD CM
LDD CM GET *DAT* INDEX
LPC 377
STD SC
LDN /MMF/BDTI SET *BDT* INTERLOCK
RJM SFR
LDN RE READ *BDT* ENTRY
RJM ABE
LDD MA
CRD T1
LDD T1 CHECK ERROR PROCESSING INTERLOCK
ZJN CBI1 IF INTERLOCK NOT SET
LPN 7
LMD MD
NJN CBI1 IF INTERLOCK NOT HELD BY DOWNED MACHINE
STD T1 CLEAR INTERLOCK
CMSTF GDER CLEAR ERROR PROCESSING BIT IN *ACGL*
CBI1 LDD T2 CHECK RESTORE PARITY INTERLOCK
ZJN CBI2 IF INTERLOCK NOT SET
LPN 7
LMD MD
NJN CBI2 IF INTERLOCK NOT HELD BY DOWNED MACHINE
STD T1+1 CLEAR INTERLOCK
STD T1+2 CLEAR CONTROLLER SERIAL NUMBER
STD T1+3
STD T1+4
CMSTF GDUR CLEAR RESTORE IN PROGRESS BIT IN *ACGL*
CMSTF GDRI CLEAR RESTORE INITIATION BIT IN *ACGL*
CBI2 LDD MA
CWD T1
LDN WE REWRITE *BDT* ENTRY
RJM ABE
LDN /MMF/BDTI CLEAR *BDT* INTERLOCK
RJM CFR
CMSTF GPDA CLEAR MMF PARITY DEVICE ACCESS FLAG
CBIA EQU *-3 (BIT NUMBER FOR DOWNED MAINFRAME)
UJP CBIX RETURN
SPACE 4,10
* COMMON DECKS.
QUAL COMPTGB
QUAL$ EQU 0 PREVENT FURTHER QUALIFICATION
T5 EQU EQ USE *EQ* AS EST ORDINAL IN *COMPTGB*
*CALL COMPTGB
QUAL *
TGB EQU /COMPTGB/TGB
SPACE 4,10
MBUF BSS 0
TITLE PRESET.
PRS SPACE 4,10
** PRS - PRESET PROGRAM.
*
* EXIT (ID) = MID OF THIS MACHINE.
* (LK) = EST ORDINAL OF LINK DEVICE.
* (MD) = MACHINE INDEX OF DOWNED MACHINE.
* (MK) = MACHINE MASK OF DOWNED MACHINE.
* (MI) = MID OF DOWNED MACHINE.
* (AD) = FUNCTION CODE.
* (QF) = 0.
* (TW) = CONSTANT TWO.
* (SX) = CONSTANT SIX.
* (DT) = DAT / FAT TRACK.
* (RE) = *ECSM* READ FUNCTION.
* (WE) = *ECSM* WRITE FUNCTION.
* (DA - DA+1) = DEVICE ACCESS TABLE ADDRESS.
* (ET - ET+1) = ENVIRONMENT TABLE ADDRESS.
*
* CALLS AST, CEA, DAP, SCI.
*
* MACROS SFA.
PRS SUBR ENTRY/EXIT
LDN 2
STD TW
LDD IR+3
SHN -6
STD AD
SBN /MRT/MFUN
MJN PRS0 IF LEGAL FUNCTION
LDC PRSA * INCORRECT 1MR FUNCTION.*
LJM ABT ABORT
PRS0 LDD AD CHECK FUNCTION CODE
LMN /MRT/PMT
ZJN PRS0.1 IF *PMT* FUNCTION
LMN /MRT/UMT&/MRT/PMT
ZJN PRS0.1 IF *UMT* FUNCTION
ISTORE SCIA,(UJN SCIX) DISABLE *CMS* INTERLOCK CODE
LJM PRS3 READ MULTIMAINFRAME INFORMATION
* WAIT FOR *CMS* TO COMPLETE.
PRS0.1 LDC FEAF*10000+MSSI
RJM AST CHECK FOR *CMS* ACTIVE
ZJN PRS2 IF *CMS* NOT ACTIVE
RJM DAP DELAY AND PAUSE
NJN PRS1 IF NO ERROR FLAG SET
STD CM CLEAR MESSAGE
LDD CP
ADK MS2W
CWD CM
LJM MRP2 DROP PP
PRS1 LDD CP * WAITING FOR *CMS* TO FINISH.*
ADK MS2W
CWM PRSC,TR
LDN ZERL
CRD CM
LDD MA
CWD IR
MONITOR RECM RECALL *1MR*
LJM PPR RETURN TO RESIDENT
PRS2 STD CM CLEAR MESSAGE
LDD CP
ADK MS2W
CWD CM
RJM SCI SET *CMS* INTERLOCK
* LDN 0
STD QF
LDN LDOS SET TO DECREMENT ACTIVITY COUNT
STM SCIB
* READ MULTIMAINFRAME INFORMATION.
PRS3 LDK MMFL READ LINK DEVICE EST ORDINAL
CRD CM
LDD CM STORE MID OF THIS MACHINE
STD ID
LDD CM+3 SET MACHINE MASK
STM RDIA
LDD CM+1 CHECK FOR SHARED BUFFERED DEVICES
SHN 21-11
MJN PRS3.1 IF SHARED BUFFERED DEVICES DEFINED
AOM PRSE DISABLE SHARED BUFFERED DEVICE PROCESSING
PRS3.1 LDD CM+1 STORE EST ORDINAL OF LINK DEVICE
LPC 777
STD LK SET LINK EST ORDINAL
STM CFIA
ZJN PRS4 IF NO LINK DEVICE
SFA EST READ EST ENTRY
ADK EQDE
CRD CN
LDD CN+4 READ MST TO OBTAIN LABEL TRACK
SHN 3
ADN ALGL
CRD CN
LDD CN+4 SET DAT/FAT TRACK
STD DT
LDD CN+1 SET LABEL TRACK
STD T6
LDN /MMF/ETLT SET ENVIRONMENT TABLE SECTOR
STD T7
RJM CEA CONVERT TO EXTENDED MEMORY ADDRESS
LDD CM+3
STD ET
LDD CM+4
STD ET+1
LDD DT SET DAT/FAT TRACK ADDRESS
STD T6
LDN 0
STD T7
RJM CEA CONVERT EXTENDED MEMORY ADDRESS
LDD CM+4
STD DA+1
LDD CM+3
STD DA
PRS4 LDD AD
LMN /MRT/CDV
NJN PRS5 IF NOT CLEAR DEVICE INTERLOCK FUNCTION
LDD IR+4
UJN PRS6 SET MACHINE INDEX OF DOWNED MACHINE
PRS5 LDD RA SET MACHINE INDEX OF DOWNED MACHINE
SHN 6
ADC /MRT/MASK
CRD CM
LDD CM+4
PRS6 STD MD
ADN GPDA-1 SET BIT NUMBER FOR *CMSTF* REQUEST
LMC LCNI
STM CBIA
LDM PRSB-1,MD SET MASK OF DOWNED MACHINE
STD MK
LDD CM SET MID OF DOWNED MACHINE
STD MI
LDN 6
STD SX
LDC RECS*1000
STD RE
LDC WECS*1000
STD WE
PRSE LDN 0
* LDN 1 (SHARED BUFFERED DEVICES NOT DEFINED)
NJN PRS7 IF SHARED BUFFERED DEVICES NOT DEFINED
LDD ET+1
ADN /MMF/BAET SET ADDRESS OF ENVIRONMENT TABLE WORD
STD CM+4
SHN -14
ADD ET
ADD RE
STD CM+3
LDN 1-1 READ ONE WORD FROM EXTENDED MEMORY
RJM ECS
LDD MA
CRD CM
LDD CM+1 SET *BDT* FIRST TRACK
STM ABEA
* CHECK FOR ISD ENVIRONMENT.
PRS7 LDM PRSD,AD SET ADDRESS OF FUNCTION PROCESSOR
STM MRPA
LDD LK
NJP MRP IF EXTENDED MEMORY MMF
LDC MRP
STM EXR SET RETURN ADDRESS
EXECUTE 2MR,*
LJM EXR+1 LOAD ISD MMF SUBROUTINES
PRSA DATA C* INCORRECT 1MR FUNCTION.*
* TABLE OF MACHINE MASKS (INDEXED BY MACHINE INDEX).
PRSB BSS 0
.1 SET 1
DUP MXMF,2
CON .1
.1 SET .1+.1
PRSC DATA 30L WAITING FOR *CMS* TO FINISH.
* TABLE OF FUNCTION PROCESSOR ADDRESSES.
PRSD INDEX
INDEX /MRT/RDI,RDI RETRIEVE DISPLAY INFORMATION
INDEX /MRT/PMT,PMT PROCESS DAT, FAT, MRT-S
INDEX /MRT/UMT,UMT UPDATE MST ENTRIES IN CM
INDEX /MRT/CDV,CDV CLEAR DEVICE INTERLOCKS
INDEX /MRT/PRB,PRB PROCESS RESERVES AND BAT-S
INDEX /MRT/MFUN
SPACE 4,10
* PRESET COMMON DECKS.
*CALL COMPAST
SPACE 4,10
OVERFLOW
TTL 1MR/2MR - PROCESS ISD RECOVERY.
TITLE ISD MMF SUBROUTINES.
IDENT 2MR,OVLA
*COMMENT 1MR - PROCESS ISD RECOVERY.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SPACE 4,10
*** 2MR - PROCESS ISD RECOVERY.
* D. K. ELDRED. 82/12/01.
SPACE 4,10
*** ISD MMF SUBROUTINES.
*
* THE FOLLOWING CODE IS USED ONLY FOR ISD MMF ENVIRONMENTS.
* IT OVERLAYS THE EXTENDED MEMORY MMF SUBROUTINES IN *1MR*.
ORG OVLA
TMR SUBR ENTRY/EXIT
UJN TMRX RETURN
CTC SPACE 4,15
** CTC - COPY DISK TABLES TO CENTRAL MEMORY.
*
* ENTRY (T3) = MST POINTER.
* (T5) = EST ORDINAL.
* (T6) = LABEL TRACK.
* (CT) = LAST TRT SECTOR + 1.
* (WB+2) = TRT LENGTH.
* (WB+3) = LABEL SECTOR NUMBER.
*
* USES CT, T7, WB, WB+1.
*
* CALLS CAT, RDS.
CTC1 LDD WB+2 ADJUST WORD COUNT
LPN 77
ZJN CTCX IF END OF TRT ON SECTOR BOUNDARY
STD WB
CTC2 LDC BUFS READ SECTOR OF TRT DATA
RJM RDS
LDD T3 SET MST POINTER TO TRT
SHN 3
ADN TRLL CALCULATE TRT ADDRESS
RJM CAT
ADD WB+1 WRITE TRT DATA TO CENTRAL MEMORY
CWM BUFS+2,WB
LDD HN ADVANCE TRT OFFSET
RAD WB+1
CTC3 AOD T7 ADVANCE SECTOR NUMBER
SBD CT
MJN CTC2 IF ANOTHER FULL SECTOR
ZJN CTC1 IF PARTIAL SECTOR
CTC SUBR ENTRY/EXIT
LDN 0
STD WB+1 INITIALIZE TRT OFFSET
LDD HN
STD WB SET FULL SECTOR WORD COUNT
LDD WB+3
STD T7 SET LABEL SECTOR
SOD CT
UJN CTC3 COPY TRT
CUC SPACE 4,10
** CUC - COMPARE UPDATE COUNTS.
*
* ENTRY (A) = ADDRESS OF COUNTER IN *BFMS* BUFFER.
* (BUFS) = TRT / MRT SECTOR.
*
* EXIT (A) = 0 IF COUNTS MATCH.
*
* USES T1.
CUC SUBR ENTRY/EXIT
STD T1
LDI T1 COMPARE UPDATE COUNTS
LMM BUFS+2+5*77+2
NJN CUCX IF NO MATCH
LDM 1,T1
LMM BUFS+2+5*77+3
NJN CUCX IF NON-MATCHING COUNTS
LDM 2,T1
LMM BUFS+2+5*77+4
SCN 77
UJN CUCX RETURN
PFA SPACE 4,15
** PFA - PROCESS FAST ATTACH FOR ISD.
*
* ENTRY (TC) = MACHINE INDEX*5.
* SYSTEM SECTOR IN BFMS.
*
* EXIT (A) = 0 IF REWRITE SYSTEM SECTOR.
*
* CALLS USC.
*
* USES T2.
PFA3 LDN 1 SET NO SYSTEM SECTOR REWRITE
PFA SUBR ENTRY/EXIT
LDM UCSS,TC
SHN 21-2
PJN PFA3 IF NO ENTRY FOR DOWNED MACHINE
SHN -21+2+22
LPN 1
STD T2
RJM USC UPDATE SYSTEM SECTOR COUNTS
LDN 0 PRESET COUNTER
STD T2
PFA1 LDM UCSS+5,T2
NJN PFA2 IF FILE STILL BEING ACCESSED
LDN 5 ADVANCE COUNTER
RAD T2
LMC /MMF/MMPF*5
NJN PFA1 IF NOT ALL MAINFRAMES CHECKED
STM FISS CLEAR FAST ATTACH STATUS
LDC PMFT*100 RESET FILE TYPE
STM FNSS+4
PFA2 LDN 0 SET TO REWRITE SYSTEM SECTOR
UJN PFAX RETURN
RMI SPACE 4,10
** RMI - RELEASE MST INTERLOCKS.
*
* ENTRY (T5) = EST ORDINAL.
* (MD) = DOWNED MACHINE INDEX.
*
* EXIT TO *MSR* IF LABEL SECTOR ERROR.
*
* USES T6, T7, CM - CM+4.
* CALLS CDC, CLC, CTC, C2D, DAP, RSC, UDT, VDT, WDS.
*
* MACROS ENDMS, SETMS.
RMI SUBR ENTRY/EXIT
LDD T5 CONVERT UPPER DIGIT OF EST ORDINAL
SHN -6
ADC 2RQ0
STM RMIB+1
LDD T5 CONVERT LOWER TWO DIGITS OF EST ORDINAL
RJM C2D
STM RMIB+2
SETMS IO,(NS,DE,RW)
LDD CM+4 SET MST ADDRESS
STD T3
SHN 3
ADN ALGL READ DEVICE ALLOCATION WORD
CRD CM
LDD CM+1 SET LABEL TRACK
STD T6
LDN /MMF/LSLT
STD T7
LDD CP WRITE MESSAGE TO B-DISPLAY
ADN MS2W
CWM RMIB,TR
RMI1 LDC BFMS READ LABEL SECTOR
RJM RSC
RJM VDT VERIFY DISK TABLES
ZJN RMI2 IF RESERVE HELD BY DOWN MACHINE
MJN RMI4 IF DEVICE NOT INTERLOCKED
ENDMS
RJM DAP DELAY
NJP RMI1 IF NO OPERATOR DROP
LJM ERR PROCESS OPERATOR DROP
RMI2 LDD WB+3
ZJN RMI3 IF PRIMARY MRT CURRENT
LDN 0
SBD WB+3 SET PRIMARY MRT SECTOR
RAD T7
LDC BUFS COPY MRT TO PRIMARY LOCATION
RJM WDS
RMI3 LDM N4SS+5*SDGL+4
SCN 77 CLEAR DOWN MACHINE INTERLOCK
SHN -1
LMD WB+4 SET THIS MACHINE-S INTERLOCK
SHN 1
STM N4SS+5*SDGL+4
LDN /MMF/LSLT SET PRIMARY LABEL SECTOR
STD T7
RJM CLC COMPUTE LABEL CHECKSUM
STM CKSS
RMI4 LDD MD
SHN 2 DOWN MACHINE INDEX * 5
ADD MD
ADC DISS-5 SET DIT ENTRY ADDRESS
STD T0
STM RMIA
LDI T0 EXTRACT ACTIVITY COUNT
LPN 77
LMC -0 DECREMENT PFM ACTIVITY COUNT
RAM N4SS+TDGL*5+1
* CLEAR PF INTERLOCK AND INSTALL INTERLOCK IF HELD
* BY DOWN MACHINE.
LDI T0
LPC 300
LMM N4SS+5*TDGL+1 CLEAR PF AND INSTALL INTERLOCKS
STM N4SS+5*TDGL+1
LDN ZERL CLEAR DIT ENTRY
CRM **,ON
RMIA EQU *-1
LDN /MMF/LSLT SET PRIMARY LABEL SECTOR
STD T7
RJM CDC COMPUTE LABEL CHECKSUM
STM CKSS
LDC BFMS+WLSF WRITE LABEL SECTOR
RJM WDS
PJN RMI6 IF NO WRITE ERROR
LDN /MRT/WER SET WRITE ERROR
LJM MSR RETURN ERROR TO *MREC*
RMI6 LDD WB
NJN RMI8 IF NOT UPDATING TABLES IN CM
AOM N4SS+5*SDGL+4
LDD T3 CALCULATE FWA OF TRT
SHN 3
ADK TDGL SET DEVICE INTERLOCK IN CM
CWM N4SS,TR
RJM CTC COPY TRT TO CENTRAL MEMORY
ENDMS
RJM UDT UPDATE DEVICE INFORMATION TABLE
LDN CDIS
STD CM+3 SET *STBM* SUBFUNCTION
LDD T5
STD CM+1 REBUILD TABLES ON DISK
MONITOR STBM
RMI8 ENDMS RELEASE MASS STORAGE RESOURCES
* LDN 0
STD CM
LDD CP
ADN MS2W CLEAR MESSAGE
CWD CM
LJM RMIX RETURN
RMIB DATA C* EQXXX, CLEARING MST INTERLOCKS.*
SDM SPACE 4,15
** SDM - CHECK DEVICE SHARED TO DOWN MF.
*
* ENTRY (T5) = EST ORDINAL.
* (MI) = MID OF DOWN MAINFRAME.
*
* EXIT (A) = 0, DEVICE SHARED TO DOWN MF.
* = 1, DEVICE NOT SHARED TO DOWN MF.
* (MD) = MACHINE INDEX.
*
* USES RE, T6, CM - CM+4.
*
* MACROS SFA.
*
* CALLS CAT.
SDM SUBR ENTRY/EXIT
SFA EST,T5
ADK EQDE READ EST ENTRY
CRD CM
LDD CM CHECK DEVICE ATTRIBUTES
LPC 4120
LMC 4020
NJN SDM2 IF NOT MASS STORAGE / AVAILABLE / ISD
LDD CM+4
STD RE SAVE MST ADDRESS / 10
SHN 3
ADK TDGL FETCH TRT LENGTH
CRD CM
LDD CM+2 DETERMINE LENGTH OF MRT
ADN 7
SHN -3
ADD CM+2 ADD LENGTH OF THE TRT
SBN 1
STD T6 SET DIT OFFSET
LDN /MMF/MMPF
STD MD MAXIMUM MACHINE CONFIGURATION
SDM1 LDD RE
SHN 3
ADN TRLL
RJM CAT CALCULATE FWA OF TRT
ADD T6
ADD MD
CRD CM READ DIT ENTRY
LDD CM+4
LMD MI
ZJN SDM3 IF MATCHING MACHINE ID-S
SOD MD
NJN SDM1 IF MORE TO CHECK
SDM2 LDN 1
SDM3 LJM SDMX RETURN
UDT SPACE 4,10
** UDT - UPDATE DEVICE INFORMATION TABLE IN CM.
*
* ENTRY (T3) = MST POINTER.
* (WB+2) = TRT LENGTH.
* (BFMS) = LABEL SECTOR.
*
* USES T1, WB+2.
*
* CALLS CAT.
UDT SUBR ENTRY/EXIT
LDN /MMF/MISD
STD T1 DIT LENGTH
LDD WB+2
ADN 7 CALCULATE DIT OFFSET
SHN -3
RAD WB+2 APPEND MRT LENGTH TO TRT LENGTH
LDD T3
SHN 3
ADN TRLL CALCULATE FWA OF TRT
RJM CAT
ADD WB+2 COPY DIT TO CENTRAL MEMORY
CWM DISS,T1
UJN UDTX RETURN
VDT SPACE 4,25
** VDT - VERIFY DISK TABLES.
*
* ENTRY (MD) = DOWN MACHINE INDEX FOR SPECIFIED DEVICE.
* (T3) = MST POINTER.
* (T5) = EST ORDINAL.
* (T6) = LABEL TRACK.
* (T7) = 0.
* (BFMS) = FIRST LABEL SECTOR.
*
* EXIT (A) .LT. 0 IF DEVICE NOT INTERLOCKED.
* .GT. 0 IF INTERLOCK HELD BY ACTIVE MACHINE.
* .EQ. 0 IF INTERLOCK HELD BY DOWN MACHINE.
* (T7) = MRT SECTOR NUMBER IF TABLES VERIFIED.
* (WB) = 0 IF DEVICE INTERLOCK HELD BY DOWN MACHINE.
* (WB+2) = TRT LENGTH.
* (WB+3) = LABEL SECTOR NUMBER IF TABLES VERIFIED.
* (WB+4) = THIS MACHINE INDEX FOR SPECIFIED DEVICE.
* (BFMS) = LABEL SECTOR.
* (BUFS) = MRT SECTOR IF DOWN MACHINE HAS INTERLOCK.
*
* USES CT, CM - CM+4, WB - WB+4.
*
* CALLS CLC, CTC, CUC, RSC.
*
* MACROS ENDMS.
VDT8 LCN 1 INDICATE DEVICE NOT INTERLOCKED
VDT SUBR ENTRY/EXIT
LDD T3
SHN 3
ADK TDGL FETCH TRT LENGTH
CRD WB
ADN DULL-TDGL GET DEVICE USAGE WORD
CRD CM
LDD CM+2 EXTRACT DIT ORDINAL
LPN 17
ADN 1 SET MACHINE INDEX
STD WB+4
LDM N4SS+5*SDGL+4 CHECK SOFTWARE RESERVE
LPN 77
ZJN VDT8 IF DEVICE NOT INTERLOCKED
SHN -1
LMD MD CHECK DEVICE HOLDING INTERLOCK
STD WB
NJN VDTX IF NOT HELD BY DOWN MACHINE
VDT1 STD WB+3
RJM CLC COMPUTE LABEL CHECKSUM
LMM CKSS
NJN VDT3 IF CHECKSUM ERROR
* READ ENTIRE TRT TO ENSURE NO DISK ERRORS FOR *CTC*.
AOD T7 SET FIRST SECTOR OF TRT
LDD WB+2
SHN -6 CALCULATE LAST SECTOR OF TRT
ADN 2
ADD WB+3 INCLUDE ALTERNATE TABLES BIAS
STD CT
VDT2 LDC BUFS READ TRT SECTOR
RJM RSC
AOD T7 ADVANCE SECTOR NUMBER
LMD CT
NJN VDT2 IF NOT END OF TRT SECTOR
* VERIFY UPDATE COUNTS BETWEEN MST AND TRT.
LDC N4SS+5*SDGL+2 COMPARE UPDATE COUNTS
RJM CUC
VDT3 NJN VDT4 IF NON-MATCHING COUNTS
LDN /MMF/MRTL-1
ADD MD
ADD WB+3 SET MRT SECTOR OF DOWN MACHINE
STD T7
LDC BUFS READ MRT SECTOR
RJM RSC
* VERIFY UPDATE COUNTS BETWEEN DIT AND MRT.
LDD MD CALCULATE ADDRESS OF DIT ENTRY
SHN 2
ADD MD
ADC /LSD/DISS-5+1 COMPARE UPDATE COUNTS
RJM CUC
ZJP VDTX IF MATCHING COUNTS
VDT4 LDD WB+3
ZJN VDT5 IF ALTERNATE LABEL NOT CHECKED
ENDMS
LJM RSC1 PROCESS READ ERROR
VDT5 LDD T3 READ MST
SHN 3
ADN DULL SET ALTERNATE LABEL SECTOR
CRD T7
LDC BFMS READ LABEL SECTOR
RJM RSC
LDD T7
LJM VDT1 VERIFY ALTERNATE LABEL TABLES
SPACE 4,10
** COMMON DECKS.
*CALL COMPCLC
SPACE 4,5
ERRNG QBUF-* CODE OVERFLOW INTO BUFFERS
SCP SPACE 4,10
** SCP - SET / CLEAR PP PAUSE FLAG.
*
* ENTRY (A) = 0 IF CLEARING PP PAUSE FLAG.
* = 1 IF SETTING PP PAUSE FLAG.
*
* USES CM - CM+4.
SCP SUBR ENTRY/EXIT
STD T0
LDD CP FETCH SENSE SWITCH WORD
ADN SNSW
CRD CM
LDD CM+3 SET / CLEAR PAUSE FLAG
SCN 1
LMD T0
STD CM+3
LDD CP STORE SENSE SWITCH WORD
ADN SNSW
CWD CM
UJN SCPX RETURN
TITLE FUNCTION 2 - UPDATE MST ENTRIES IN CM.
UMT SPACE 4,10
** UMT - UPDATE MST ENTRIES IN CM. (FUNCTION 2)
*
* EXIT MST-S FOR INDEPENDENT SHARED DEVICES UPDATED IN CM.
*
* USES T1, T5, T6, WB+2, CM - CM+4, CN - CN+4.
*
* CALLS C2D, RLS, SCP, SDM, UDT, VDT.
*
* MACROS DELAY, EXECUTE, SFA.
UMT8 LDN 0 CLEAR PP PAUSE FLAG
RJM SCP
UMT SUBR ENTRY/EXIT
EXECUTE 2MS
LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH
STD T5
LDN 0 CLEAR TRACK POINTER (FOR *STB*)
STD T6
LDN ESTP GET EST POINTERS
CRD CN
UMT1 AOD T5 ADVANCE EST ORDINAL
LMD CN+3
ZJN UMT8 IF END OF MASS STORAGE DEVICES
RJM SDM
NJN UMT1 IF NOT AVAILABLE ISD SHARED WITH DOWN MF
LDD T5
SHN -6
ADC 2RQ0 CONVERT UPPER DIGIT OF EST ORDINAL
STM UMTA+1
STM UMTB+1
LDD T5 CONVERT LOWER TWO DIGITS OF EST ORDINAL
RJM C2D
STM UMTA+2
STM UMTB+2
LDN 1 SET PP PAUSE FLAG
RJM SCP
UMT2 RJM RLS READ LABEL SECTOR
NJN UMT4 IF READ ERRORS
RJM VDT VERIFY DISK TABLES
ENDMS
RJM UDT UPDATE DIT IN CENTRAL MEMORY
UMT3 LJM UMT1 PROCESS NEXT EST ENTRY
UMT4 LPN 77 EXTRACT ERROR CODE
LMN CRSE
NJN UMT5 IF CONTROLLER NOT RESERVED
LDD T4
RJM C2D CONVERT CHANNEL FOR MESSAGE
STM UMTA+5
LDD CP WRITE MESSAGE TO B-DISPLAY
ADN MS2W
CWM UMTA,TR
UJN UMT6 CHECK FOR CLEARED PP PAUSE FLAG
UMT5 LMN RESE&CRSE
NJP RSC1 IF UNIT NOT RESERVED
LDM RLSA+5
STM UMTB+5 SET UNIT NUMBER IN MESSAGE
LDD CP
ADN MS2W COPY MESSAGE TO B-DISPLAY
CWM UMTB,TR
UMT6 DELAY
LDD CP READ SENSE SWITCH WORD
ADN SNSW
CRD CM
LDD CM+3 CHECK FOR PAUSE FLAG CLEARED
SHN 21-0
MJP UMT2 IF *GO* COMMAND NOT ISSUED
UMT7 LJM UMT1 PROCESS NEXT EST ENTRY
UMTA DATA C* EQXXX, CHYY, CONTROLLER RESERVED.*
UMTB DATA C* EQXXX, UNYY, UNIT RESERVED.*
SPACE 4,10
E2MR BSS 0 END OF ISD RECOVERY CODE
OVERFLOW OVLA
OVLB MAX E1MR+5,E2MR+5 *2MS* LOAD ADDRESS
TTL 1MR/2MS - HARDWARE RESERVE ROUTINES.
TITLE COMMON SUBROUTINES.
IDENT 2MS,OVLB
*COMMENT 1MR - HARDWARE RESERVE ROUTINES.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SPACE 4,10
*** 2MS - HARDWARE RESERVE ROUTINES.
ORG OVLB
TMS SUBR ENTRY/EXIT
UJN TMSX RETURN AFTER LOAD
RES SPACE 4,15
** RES - PROCESS UNIT AND CONTROLLER RESERVES.
*
* ENTRY (IR+3 - IR+4) = FWA OF TABLE OF DEVICES TO RECOVER.
*
* EXIT RETURN TO *MREC* FOR OPERATOR ACTION IF THERE IS
* A UNIT OR CONTROLLER RESERVE WHICH CANNOT BE CLEARED.
*
* USES SC, T5, T6, CM - CM+4, CN -CN+4.
*
* CALLS CAA, CBW, RLS, SDM, *0RI*.
*
* MACROS EXECUTE.
RES SUBR ENTRY/EXIT
EXECUTE 0RI,BUFS+1
STM RESA SET PROCESSOR ADDRESS
LCN 0
STD SC
RES1 AOD SC ADVANCE TABLE INDEX
RJM CAA
ADD SC READ TABLE ENTRY FOR NEXT SHARED DEVICE
CRD CN
LDD CN+4 SET EST ORDINAL
STD T5
ZJN RESX IF END OF DEVICES TO RECOVER
LDD CN+3
ZJN RES2 IF NOT ISD
RJM SDM
NJN RES1 IF NOT SHARED WITH DOWN MF
RES2 LDD CN
ZJN RES3 IF DEVICE HAS NOT YET BEEN PROCESSED
SBN /MRT/REL
MJN RES1 IF IGNORE OR DEVICE ALREADY PROCESSED
RES3 RJM CBW CLEAR BAT WRITE PERMISSIONS
RJM RLS READ LABEL SECTOR
ZJN RES4 IF NO ERRORS
LPN 77
LMN CRSE
ZJN RES7 IF CONTROLLER RESERVED
LMN RESE&CRSE
ZJN RES5 IF UNIT RESERVED
RES4 LDN /MRT/PRO SET DEVICE PROCESSED
STD CN
RJM CAA WRITE ENTRY BACK TO TABLE
ADD SC
CWD CN
LJM RES1 CHECK NEXT EQUIPMENT
RES5 LDD BI CHECK EQUIPMENT TYPE
SHN 21-7
PJN RES8 IF NOT *LDAM* EQUIPMENT
LDD CN CHECK FOR RELEASE REQUESTED
SBN /MRT/REL
NJN RES8 IF OPERATOR DID NOT SELECT RELEASE
STD CN
RJM * EXECUTE *0RI* TO RELEASE RESERVE
RESA EQU *-1
UJN RES3 RECHECK RESERVE
RES7 LDD T4 RETURN CHANNEL NUMBER
STD CN+1
LDN /MRT/CRS SET CONTROLLER RESERVED
UJN RES9 CONTINUE
RES8 LDN /MRT/URS SET UNIT RESERVED
RES9 STD CN+4
LDD T5 SET EQUIPMENT
STD CN+3
LDD SC SET INDEX INTO DEVICE TABLE
STD CN+2
LDN 0
STD CN
LDD RA RETURN ERROR WORD TO *MREC*
SHN 6
ADC /MRT/ERRW
CWD CN
LJM DROP DROP PP
CBW SPACE 4,10
** CBW - CLEAR BAT WRITE ACCESS PERMISSIONS.
*
* ENTRY (T5) = EST ORDINAL FOR DEVICE.
* (MD) = MACHINE INDEX OF DOWNED MACHINE.
*
* USES CM - CM+4, WB - WB+4.
*
* MACROS MONITOR, SFA.
CBW SUBR ENTRY/EXIT
SFA EST,T5 SET DEVICE PARAMETERS
ADK EQDE
CRD WB
LDD WB
SHN 21-11
PJN CBWX IF NOT ECS MMF SHARED DEVICE
SHN 21-5-21+11
PJN CBWX IF NOT SHARED BUFFERED DEVICE
LDN ZERL
CRD CM
LDD MD SET MACHINE INDEX OF DOWNED MACHINE
STD CM+2
LDD T5 SET EST ORDINAL
STD CM+4
LDN CBWS CLEAR BAT WRITE ACCESS PERMISSIONS
STD CM+1
MONITOR MTEM
UJN CBWX RETURN
CLU SPACE 4,10
** CLU - CLEAR UTILITY / DEVICE INTERLOCKS.
*
* USES SC, CM - CM+4, CN - CN+4, T2 - T7.
*
* CALLS CEA, ECS, RSC, WSC.
*
* MACROS ENDMS, SETMS.
CLU SUBR ENTRY/EXIT
LDD ET+1
ADN /MMF/DAET SET ADDRESS OF ENVIRONMENT TABLE WORD
STD CM+4
SHN -14
ADD ET
ADD RE
STD CM+3
LDN 1-1 READ ONE WORD FROM EXTENDED MEMORY
RJM ECS
* LDN 0 SET FIRST SECTOR
STD T7
LDD MA GET WORD FROM CM BUFFER
CRD CM
LDD CM+4 NUMBER OF WORDS IN DAT
SHN -1
STD SC NUMBER OF DAT ENTRIES
LDD DT SET DAT TRACK
STD T6
LDD LK READ FIRST SECTOR OF DAT
STD T5
SETMS IO,RW
CLU1 LDC BFMS READ EXTENDED MEMORY SECTOR
RJM RSC
LDN 100/2 SET NUMBER OF DAT ENTRIES
STD T2
LDN 1 SKIP HEADER BYTES
STD T3
CLU2 LDN 12 INCREMENT POSITION IN BUFFER
RAD T3
LDM BFMS-11,T3
ZJN CLU4 IF HOLE
LDM BFMS,T3
LMD MK
NJN CLU4 IF NOT ONLY DOWNED MACHINE USING DEVICE
* LDN 0
STM BFMS,T3 CLEAR STATUS BYTE
LDM BFMS-5,T3
NJN CLU6 IF SHARED DEVICE
* LDN 0
STM BFMS-11,T3 CLEAR *DAT* ENTRY
CLU4 SOD SC
NJN CLU5 IF MORE DAT ENTRIES
* LDN 0
RJM WSC REWRITE SECTOR
ENDMS
LJM CLUX RETURN
CLU5 SOD T2
NJN CLU2 IF NOT END OF SECTOR
* LDN 0
RJM WSC REWRITE SECTOR
AOD T7
LJM CLU1 READ NEXT SECTOR
* CLEAR INTERLOCKS IN *ACGL* AND *SDGL*.
CLU6 LDD T7 SAVE DAT SECTOR
STD CN+1
LDD T2 SAVE POSITION IN DAT
STD CN
LDM BFMS-5,T3 SET MST TRACK
STD T6
LDN /MMF/MSST SET MST SECTOR
STD T7
LDC BUFS READ MST SECTOR
RJM RSC
LDN 0 SET LOCAL AREA OFFSET
STD T1
LDD MD SET LOCAL AREA COUNT
STD T2
CLU7 LDN 0 CLEAR LOCAL INTERLOCKS
STM BUFS+2+5*DULL+1,T1
LDK LLLL*5 ADVANCE OFFSET
RAD T1
SOD T2
NJN CLU7 IF NOT END OF MACHINES
* LDN 0
STM BUFS+2+5*TDGL+1 CLEAR GLOBAL INTERLOCKS
LDM BUFS+2+5*SDGL+4
SCN 77 CLEAR SOFTWARE RESERVE
STM BUFS+2+5*SDGL+4
LDN ZERL CLEAR DEVICE DESCRIPTION
CRM BUFS+2+5*PFGL,ON
LDM BUFS+2+5*ACGL+4
LPK MGLAP
LMK MGUNL SET GLOBAL UNLOAD
STM BUFS+2+5*ACGL+4
LDC BUFS REWRITE MST SECTOR
RJM WSC
LDD DT RESTORE DAT TRACK
STD T6
LDD CN+1 RESTORE DAT SECTOR
STD T7
LDD CN RESTORE DAT POSITION
STD T2
UJP CLU4 PROCESS NEXT DAT ENTRY
RLS SPACE 4,20
** RLS - READ LABEL SECTOR.
*
* ENTRY (T5) = EST ORDINAL.
*
* EXIT (A) = 0 IF NO ERROR.
* = (RDCT) IF ERROR.
* (T3) = MST POINTER.
* (T6) = LABEL TRACK.
* (BI) = BYTE 0 OF EST ENTRY FOR DEVICE.
* (CN+1) = PHYSICAL UNIT NUMBER IF UNIT RESERVED.
* (BFMS) = FIRST LABEL SECTOR.
*
* CALLS C2D, RDS.
*
* USES QS, T1, T7, CM - CM+4, WB - WB+4.
*
* MACROS ENDMS, SETMS.
RLS SUBR ENTRY/EXIT
SETMS IO,(NS,RR)
LDD CM SAVE BYTE 0 OF *EQDE* WORD
STD BI
LDD CM+4 SAVE MST POINTER
STD T3
SHN 3
ADN ALGL FETCH LABEL TRACK
CRD T6
ADN MDGL-ALGL GET SECTOR LIMITS
CRD CM
ADN DDLL-MDGL READ UNIT LIST
CRD WB
LDD T7 SET LABEL TRACK
STD T6
LDD CM+1 EXTRACT SINGLE UNIT SECTOR LIMIT
LPC 3777
STD QS
LDD CM+4 SET LAST LABEL SECTOR
SBD QS
STD T7
LDD T5 CONVERT UPPER DIGIT OF EST ORDINAL
SHN -6
ADC 2RQ0
STM RLSA+1
LDD T5 CONVERT LOWER TWO DIGITS OF EST ORDINAL
RJM C2D
STM RLSA+2
LDD WB EXTRACT UNIT COUNT
LPN 7
LMN 7 INVERT COUNT
STD WB
* READ LABEL SECTOR.
RLS1 SHN 21-0 SET UNIT LIST INDEX
STD T1
SCN 3 MERGE BYTE FROM UNIT LIST
LMM WB+1,T1
MJN RLS2 IF UNIT PACKED LOW
SHN -6
RLS2 LPN 77 EXTRACT UNIT NUMBER
STD CN+1
RJM C2D
STM RLSA+5
LDD CP WRITE MESSAGE TO B-DISPLAY
ADN MS2W
CWM RLSA,TR
LDC BFMS READ SECTOR
RJM RDS
PJN RLS4 IF NO ERROR
LPN 77
LMN CRSE
ZJN RLS3 IF CONTROLLER RESERVED
LMN RESE&CRSE
NJN RLS4 IF NOT UNIT RESERVED
RLS3 ENDMS
* LDN 0
STD CM
LDD CP CLEAR MESSAGE
ADN MS2W
CWD CM
LDM RDCT SET ERROR STATUS
LJM RLSX RETURN
* ADVANCE TO NEXT UNIT OF MULTI-UNIT DEVICE.
RLS4 LDD T7 DECREMENT SECTOR ADDRESS
SBD QS
MJN RLS3 IF END OF UNITS
STD T7
AOD WB
LJM RLS1 LOOP FOR NEXT UNIT
RLSA DATA C* EQXXX, UNYY, CHECKING RESERVE.*
WSC SPACE 4,10
** WSC - WRITE EXTENDED MEMORY SECTOR.
*
* ENTRY (A) = 0 IF DATA IN *BFMS*.
* (T4 - T7) = DRIVER PARAMETERS.
*
* EXIT TO *MSR* IF UNRECOVERED WRITE ERROR.
*
* CALLS WDS, MSR.
WSC SUBR ENTRY/EXIT
NJN WSC1 IF ALTERNATE BUFFER
LDC BFMS SET BUFFER ADDRESS
WSC1 RJM WDS WRITE SECTOR
PJN WSCX IF NO ERROR
LDN /MRT/WER SET LINK DEVICE WRITE ERROR
LJM MSR PROCESS ERROR
ERRNG BUFS-* CODE OVERFLOWS BUFFER
TTL 1MR - MACHINE RECOVERY PROCESSOR.
SPACE 4,10
END