IDENT REC,REC
PERIPH
BASE MIXED
SST
EQV$ EQU 1 DEFINE NO EQUIPMENT CHECK FOR *COMPRSS*
MSR$ EQU 1 SELECT ERROR PROCESSING FOR *RNS*
IRA$ EQU 1 FLAG RANDOM ACCESS PROCESSORS INITIALIZED
SEI$ EQU 1 SELECT TRT UPDATE FOR *COMPSEI*
*COMMENT REC - SYSTEM RECOVERY PROCESSSOR.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TITLE REC - SYSTEM RECOVERY PROCESSOR.
SPACE 4
*** REC - SYSTEM RECOVERY PROCESSOR.
*
* G. R. MANSFIELD. 70/12/17.
* J. L. WARDELL. 72/08/17.
* S. L. BETH. 74/12/17.
* P. D. HAAS. 76/08/11.
SPACE 4
*** *REC* PROCESSES SYSTEM RECOVERY.
SPACE 4,10
*** DAYFILE MESSAGES.
*
*
* THE FOLLOWING MESSAGES MAY APPEAR IN THE SYSTEM DAYFILE
* AFTER A CM RECOVERY. EACH IS SELF EXPLANATORY AND
* INDICATES THE NUMBER OF FILES IN A GIVEN CATEGORY FOUND
* IN THE ASSOCIATED MANAGED TABLE.
*
* MESSAGES ASSOCIATED WITH THE FNT.
*
* *NNNN FAST ATTACH FILES RECOVERED.*
*
* MESSAGES ASSOCIATED WITH THE EJT.
*
* *NNNN PRE-INITIAL JOB FILES RECOVERED.*
*
* *NNNN EXECUTING JOB FILES RECOVERED.*
*
* *NNNN ROLLOUT FILES RECOVERED.*
*
* *NNNN SCP ROLLIN FILES RECOVERED.*
*
* *NNNN SCP ROLLOUT FILES RECOVERED.*
*
* *NNNN T/E ROLLOUT FILES RECOVERED.*
*
* *NNNN I/A ROLLOUT FILES RECOVERED.*
*
* *NNNN DISABLED ROLLOUT FILES RECOVERED.*
*
* *NNNN SUSPENDED ROLLOUT FILES RECOVERED.*
*
* *NNNN ROLLOUT ERROR FILES RECOVERED.*
*
* *NNNN PCP ROLLOUT FILES RECOVERED.*
*
* *NNNN PRE-INITIAL WAIT FILES RECOVERED.*
*
* *NNNN SERVICE LIMIT WAIT FILES RECOVERED.*
*
* MESSAGES ASSOCIATED WITH THE QFT.
*
* *NNNN INPUT FILES RECOVERED.*
*
* *NNNN PUNCH FILES RECOVERED.*
*
* *NNNN PLOT FILES RECOVERED.*
*
* *NNNN PRINT FILES RECOVERED.*
*
* *NNNN WAIT QUEUE FILES RECOVERED.*
*
* *NNNN SPECIAL FILES RECOVERED.*
*
* THE FOLLOWING MESSAGE INDICATES CM RECOVERY IS ABORTED DUE TO
* PCP ROLLIN/ROLLOUT IN PROGRESS.
*
* * PCPNN CPA/MOVING.*
SPACE 4
*** ERROR LOG MESSAGES.
*
*
* *CHXX,YYYYYYYYY.* = EQUIPMENT ON CHANNEL XX IS RUNNING WITH
* FIRMWARE REVISION YYYYYYYYY.
*
* *ETXXX, UYY,PS=ZZZZZZ.* = THE PACK ON PHYSICAL UNIT YY OF EST
* ORDINAL XXX OF TYPE ET HAS A SERIAL NUMBER OF ZZZZZZ.
SPACE 4
*** ENTRY CONDITIONS.
*
*
* (IR+4) = RECOVERY STATUS.
SPACE 4
** ROUTINES USED.
*
*
* 4DA - CLEANUP PRESERVED FILE INTERLOCKS.
* 0CI - IDENTIFY FIRMWARE.
* 0PI - LIST PACK SERIAL NUMBERS.
* 0DQ - DEQUEUE FILE.
SPACE 4
*CALL COMPMAC
*CALL COMSACC
*CALL COMSCPS
*CALL COMSDFS
QUAL DFT
*CALL COMSDFT
QUAL *
*CALL COMSDSL
*CALL COMSDST
*CALL COMSEJT
*CALL COMSHIO
*CALL COMSJIO
*CALL COMSMMF
*CALL COMSMSC
*CALL COMSMSP
*CALL COMSMST
*CALL COMSMTR
QUAL MTX
*CALL COMSMTX
QUAL *
QUAL COMSPFM
*CALL COMSPFM
QUAL *
*CALL COMSPIM
*CALL COMSPRD
QUAL SCD
*CALL COMSSCD
QUAL *
*CALL COMSSSD
*CALL COMSSSE
*CALL COMSWEI
*CALL COMSZOL
*CALL COMS1DS
SPACE 4
**** DIRECT LOCATION ASSIGNMENTS.
NT EQU 16 TRACK COUNT
FS EQU 20 - 24 FST ENTRY (5 LOCATIONS)
CE EQU 25 CHECKPOINT DEVICE EST ORDINAL
QA EQU 26 MANAGED TABLE ORDINAL
ST EQU 27 SYSTEM TRACK NUMBER
CN EQU 30 - 34 CM WORD BUFFER (5 LOCATIONS)
QT EQU 35 QUEUED FILE TRACK
QS EQU 36 QUEUED FILE SECTOR
QI EQU 37 QUEUE INDEX
FN EQU 40 - 44 FNT ENTRY (5 LOCATIONS)
CR EQU 45 CM BUFFER ADDRESS
DI EQU 46 DEVICE INITIALIZATION COUNT
NS EQU 47 NUMBER OF CP-S + PCP-S
NC EQU IR+2 NUMBER OF CONTROL POINTS
RS EQU IR+4 RECOVERY STATUS
FA EQU 57 FNT ADDRESS / ORDINAL
LO EQU 60 LAST MASS STORAGE ORDINAL + 1
PN EQU 61 CP / PCP NUMBER
EO EQU 62 EJT ORDINAL
CA EQU 63 - 67 CENTRAL ADDRESS (2 LOCATIONS)
EC EQU CA+2 MANAGED TABLE ENTRY COUNT
LM EQU CA+3 - CA+4 LIMIT ADDRESS (2 LOCATIONS)
****
SPACE 4,10
** NFL FNT SECTOR EQUIVALENCES.
TMP1 EQU FNTN+77
TMP2 EQU FNTN/100*100
FNTS EQU TMP1/100 FIRST SECTOR OF FNT-S IN NFL
FNTT EQU FNTN-TMP2-LENF NON-FNT WORDS IN FIRST FNT SECTOR
SBUFL EQU 2*500 DEFINE BUFFER SIZE
SPACE 4,10
* DEFINE UNQUALIFIED *COMSSCD* SYMBOLS.
DSSC EQU /SCD/DSSC
SSSC EQU /SCD/SSSC
MXJC EQU /SCD/MXJC
TITLE MAIN PROGRAM.
REC SPACE 4
** REC - MAIN PROGRAM.
ORG PPFW
REC RJM PRS PRESET PROGRAM
LDD RS
ZJN REC2 IF NO RECOVERY
RJM SYS RECOVER SYSTEM FILE
NJN REC1 IF JOBS NOT RECOVERED FROM CM
RJM CCP CLEANUP CONTROL POINTS
REC1 RJM RMT RECOVER MANAGED TABLES
REC2 EXECUTE 4RA SET UP DAYFILES
LDC DSCP*200+MS1W
CWM MSGA,TR *RECOVERY COMPLETE.*
LDD RS CHECK RECOVERY STATUS
LPN SYMK
NJP REC5 IF RECOVERING SYSTEM
* START SYSTEM TAPE LOAD AND WAIT FOR COMPLETION.
LDC DSCP+ENRS MOVE TO DEADSTART CONTROL POINT
STD CM+1
MONITOR CCAM
* LDN 0
ERRNZ SYFO SYSTEM FILE ORDINAL .NE. 0
STD QA
SOD IR+3 SET RECOVERY COMPLETE
LDD IA STORE INPUT REGISTER
CWD IR
REC3 PAUSE NE
SFA FNT,QA READ SYSTEM FILE FNT
CRD CM
LDD CM+4 CHECK STATUS
LPN 1
NJN REC3 IF SYSTEM FILE BUSY
LDD NC MOVE TO SYSTEM CONTROL POINT
STD CM+1
MONITOR CCAM
REC4 LDC DSCP*CPAS+TFSW CHECK CONTROL POINT ACTIVITY
CRD CM
LDD CM
NJN REC4 IF DEADSTART CONTROL POINT ACTIVE
* COMPLETE RECOVERY OPERATIONS.
REC5 LDN DSCL CHECK *DSD*
CRD CM
LMD CM+1
NJN REC5 IF DATE/TIME NOT YET ENTERED
RJM /RDB/USS UPDATE NEW DAYFILES SYSTEM SECTORS
EXECUTE 4RE ISSUE DEADSTART MESSAGES
LDD RS
ZJN REC6 IF NOT RECOVERY DEADSTART
EXECUTE 4RC RECOVER CHANNEL/EQUIPMENT STATUS
* IDENTIFY MASS STORAGE EQUIPMENT.
REC6 EXECUTE 4RG PROCESS ERROR LOGS
RJM SRM SEND RECOVERY MESSAGES
LDN ZERL
CRD CM
ADN DSDL-ZERL CLEAR *DSD* BUFFER INTERLOCK
CWD CM
RECA LDN 1
* LDN 0 (MASS STORAGE VALIDATION ENABLED)
ZJN REC7 IF MASS STORAGE VALIDATION ENABLED
LDD RS
NJN REC8 IF RECOVERY REQUESTED
REC7 EXECUTE 4RH RECOVER MASS STORAGE DEVICES
REC8 LDN ZERL
CRD CM
LDD MA STORE INPUT REGISTER FOR *1DS*
CWM RECD,ON
EXECUTE 1DS,=
MONITOR RPPM CREATE DEADSTART SEQUENCING JOB
LDN DSSL
CRD CM
LCN 4 CLEAR DEADSTART INTERLOCK
RAD CM+4
LDN DSSL
CWD CM
LDN ECRL FETCH EXTENDED MEMORY WORD
CRD FS
LDD FS
ZJN REC9 IF USER EXTENDED MEMORY UNDEFINED
EXECUTE 4RB ALLOCATE/RECOVER USER ECS
REC9 LDN SYFO
STD QA
SFA FNT READ SYSTEM FILE FNT
CRD FN
LDD FN+4 CLEAR SYSTEM FILE INTERLOCK
SCN 1
STD FN+4
SFA FNT,QA STORE FNT ENTRY
CWD FN
LDN JSCL RESET SCHEDULER CALL TIME
CRD CM
ADN RTCL-JSCL
CRD CM+3
LDN JSCL
CWD CM
RJM SJO START JOBS
LDD RS CHECK RECOVERY STATUS
LPN SYMK
LMN SYCM
RECB ZJN REC11 IF CM RECOVERY
* PSN (DAYFILES CREATED)
* ENTER HERE TO CALL *1CK*.
REC10 LDD IA STORE INPUT REGISTER FOR *1CK*
CWM RECC,ON
EXECUTE 1CK,=
UJN REC12 EXIT TO PP RESIDENT
REC11 LDN JSCL CLEAR SCHEDULER ACTIVE
CRD CM
LDD CM
LPC 3777
STD CM
LDN JSCL STORE SCHEDULER CONTROL
CWD CM
LDD MA
CWM RECG,ON
LDN 2 SELECT DROP PP OPTION
STD CM+1
MONITOR RPPM CALL *1PP*
REC12 LJM PPR EXIT TO PP RESIDENT
RECC VFD 60/0L1CK
RECD VFD 18/0L1DS,6/0,6/0,6/DSSF,18/0LCMS,6/0
RECE CON 0 CHECKPOINT FILE TRACK
RECF CON 0 SYSTEM DEVICE EST ORDINAL
RECG VFD 18/3L1PP,42/0
TITLE SUBROUTINES.
SJO SPACE 4,10
** SJO - START JOB(S).
*
* USES T7, CM - CM+4, CN - CN+4.
*
* MACROS MONITOR.
SJO SUBR ENTRY/EXIT
LDD NC
STD T7
SJO1 SOD T7
ZJN SJOX IF ALL CP-S CHECKED
SHN 7
ADN STSW
CRD CM
ADN TFSW-STSW
CRD CN
LDD CM
NJN SJO1 IF ACTIVITY
LDD CN
ZJN SJO1 IF NO JOB
LDD T7 CHANGE CP
STD CM+1
MONITOR CCAM
LDD CM+1
NJN SJO1 IF CHANGE REJECTED
LDD NC CHANGE BACK TO SYSTEM CP
STD CM+1
MONITOR CCAM
UJN SJO1 LOOP
SPACE 4,10
** COMMON DECKS.
*CALL COMPACS
*CALL COMPC2D
CLT$ EQU 0 DEFINE *COMPGFP* ACCESS TO CLT
EJT$ EQU 0 DEFINE *COMPGFP* ACCESS TO EJT
FNT$ EQU 0 DEFINE *COMPGFP* ACCESS TO FNT
QFT$ EQU 0 DEFINE *COMPGFP* ACCESS TO QFT
IFP$ EQU 0 GENERATE *IFP* REMOTE CODE
*CALL COMPGFP
*CALL COMPIFR
*CALL COMPRNS
*CALL COMPRSS
*CALL COMPSEI
*CALL COMPSNT
*CALL COMPIRA
*CALL COMPWEI
WCS$ EQU 1 CONSECUTIVE SECTOR AFTER SYSTEM SECTOR
*CALL COMPWSS
TAXM SPACE 4,10
** TAXM - EXTENDED MEMORY ALLOCATION TABLE.
TAXMW EQU 4 ALLOW ROOM FOR 4 MACHINES WITH CPU PORTS
TAXM BSS 5*TAXMW
TAXML EQU *
MSR SPACE 4,10
** MSR - ERROR RETURN FROM *RNS*.
*
* EXIT (A) .LT. 0.
*
* MACROS ENDMS.
MSR CON 0 ENTRY
ENDMS
LCN 1
LJM /COMPRNS/RNSX RETURN TO CALLER
ERR SPACE 4,10
** ERR - PROCESS ERROR.
*
* ENTRY (A) = ADDRESS OF MESSAGE.
ERR STM ERRA
LDD NC STORE MESSAGE
SHN 7
ADN MS2W
CWM *,TR
ERRA EQU *-1
LDD RS CHECK RECOVERY STATUS
LPN FLMK
LMN FLCM
NJN * IF FILES NOT RECOVERED FROM CM
LDN 6 SET *1CK* FUNCTION
STM RECC+2
LJM REC10 PROCESS OUTSTANDING CHECKPOINT REQUESTS
SCA SPACE 4,10
** SCA - SET CP/PCP AREA ADDRESS.
*
* ENTRY (A) = CP/PCP NUMBER.
* (NC) = SYSTEM CP NUMBER.
*
* EXIT (A) = CP/PCP AREA ADDRESS.
SCA1 ADD NC SET REAL CP AREA ADDRESS
SHN 7
SCA SUBR ENTRY/EXIT
SBD NC
MJN SCA1 IF REAL CP
ZJN SCA1 IF SYSTEM CP
SHN 7
ADC 0 ADD BASE PCPA ADDRESS - CPA LENGTH
SCAA EQU *-1
UJN SCAX RETURN
SRM SPACE 4,10
** SRM - SEND RECOVERY MESSAGES.
*
* USES T1, T5, T6, T7.
*
* CALLS ACS, C2D, DFM.
SRM3 STD CM CLEAR MESSAGE BUFFER
LDD NC
SHN 7
ADN MS1W
CWD CM
SRM SUBR ENTRY/EXIT
LDD RS
ZJN SRMX IF NOT RECOVERY DEADSTART
LCN 0 SET MESSAGE TABLE INDEX
STD T7
LDC BFMS SET ASSEMBLY BUFFER ADDRESS
STD T5
ADN 2
STD T6
SRM1 LDD T6
STD T1
LDC 2L ADD BLANK SEPARATOR
STI T6
SRM2 AOD T7 ADVANCE INDEX
LMN MXFC
ZJN SRM3 IF END OF TABLE
LDM SRMA,T7
ZJN SRM2 IF FILE CATEGORY NOT ENCOUNTERED
SHN -6
RJM C2D
STI T5
LDM SRMA,T7 CONVERT COUNT
RJM C2D
STM 1,T5 INSERT IN MESSAGE ASSEMBLY
LDM SRMB,T7
ZJN SRM2 IF KEY MESSAGE UNDEFINED
RJM ACS
LDC SRMC COMPLETE MESSAGE
RJM ACS
LDD T5 ISSUE MESSAGE TO DAYFILE
RJM DFM
LJM SRM1 LOOP
SRMA BSS 0
EJCT BSS 0
CON -0
ORG EJCT+MXJS
P1L EQU *-EJCT
QFCT BSS 0
CON -0
ORG QFCT+NRQT
P2L EQU *-QFCT
MSCT BSS 0
LOC 0
FACT CON 0 FAST ATTACH FILE COUNT
PXL BSS 0
LOC *O
MXFC EQU *-SRMA
SRMB BSS 0
P1 INDEX
INDEX PRJS,(=Z*PRE-INITIAL JOB*)
INDEX EXJS,(=Z*EXECUTING JOB*)
INDEX ROJS,(=Z*ROLLOUT*)
INDEX SIJS,(=Z*SCP ROLLIN*)
INDEX SOJS,(=Z*SCP ROLLOUT*)
INDEX TOJS,(=Z*T/E ROLLOUT*)
INDEX IOJS,(=Z*I/A ROLLOUT*)
INDEX DOJS,(=Z*DISABLED ROLLOUT*)
INDEX SUJS,(=Z*SUSPENDED ROLLOUT*)
INDEX PCJS,(=Z*PCP ROLLOUT*)
INDEX ERJS,(=Z*ROLLOUT ERROR*)
INDEX NVJS,(=Z*NVE ENTRY*)
INDEX PWJS,(=Z*PRE-INITIAL WAIT*)
INDEX SWJS,(=Z*SERVICE LIMIT WAIT*)
INDEX P1L
P2 INDEX
INDEX INQT,(=Z*INPUT*)
INDEX PHQT,(=Z*PUNCH*)
INDEX PLQT,(=Z*PLOT*)
INDEX PRQT,(=Z*PRINT*)
INDEX WTQT,(=Z*WAIT QUEUE*)
INDEX SNQT,(=Z*SPECIAL*)
INDEX P2L
PX INDEX
INDEX FACT,(=Z*FAST ATTACH*)
INDEX PXL
USE LITERALS
SRMC DATA C* FILES RECOVERED.*
SPACE 4,10
OVLD EQU *+5 OVERLAY LOAD ADDRESS
TITLE CONTROL POINT RECOVERY.
CCP SPACE 4,10
** CCP - CLEANUP CONTROL POINTS.
*
* ERROR TO *ABT* IF CP/PCP MOVING.
*
* USES PN, CM - CM+4.
*
* CALLS CRS, PLF.
*
* MACROS EXECUTE, MONITOR, NFA.
CCP SUBR ENTRY/EXIT
EXECUTE 4RD LOAD RECOVERY ROUTINES
LDN 0
STD PN
CCP1 AOD PN ADVANCE CP/PCP NUMBER
SBD NS
SBN 1
ZJN CCPX IF END OF CP/PCP-S
RJM CRS CHECK ROLLIN/ROLLOUT STATUS
ZJN CCP1 IF NO JOB ASSIGNED TO CP/PCP
LDC 0 CHECK CONTROL POINT MOVING
CCPA EQU *-1
LMD PN
NJN CCP4 IF NOT MOVING
CCPB LDN 0
* LDN 1 (IF MOVING EM)
NJN CCP4 IF MOVING EXTENDED MEMORY
LDD CN
ZJN CCP6 IF NO NFL ASSIGNED
CCP3 LJM ABT ABORT CM RECOVERY
CCP4 LDD CN
ZJN CCP6 IF NO NFL ASSIGNED
SBN DNFL
MJN CCP3 IF LESS THAN DEFAULT
SBN MNFL+1-DNFL
PJN CCP3 IF GREATER THAN MAXIMUM
LDD PN
SBD NC
PJN CCP1 IF PSEUDO CP OR SYSTEM CP
RJM PLF PROCESS LOCAL FNT
NFA DAPN+2 FETCH DAYFILE STATUS WORD
CRD CM
LDN 3 CLEAR DAYFILE INTERLOCKS
STD CM+4
NFA DAPN+2 STORE DAYFILE FST
CWD CM
CCP6 LDD CP GET JOB CONTROL INFORMATION
ADN JCIW
CRD CM
ADK RFCW-JCIW GET DM* FILE POINTERS
CRD CN
LDD CM+3 CLEAR *DIS* FLAG
LPC 6777
STD CM+3
LDN 0 CLEAR DM* FILE POINTERS
STD CN
STD CN+1
LDD CP
ADN JCIW
CWD CM
ADK RFCW-JCIW
CWD CN
LDD NC
STD CM+1
MONITOR CCAM RETURN TO SYSTEM CP
LJM CCP1 LOOP FOR NEXT CP/PCP
RMT SPACE 4,10
** RMT - RECOVER MANAGED TABLES.
*
* ERROR TO *ERR* IF ERROR RETURN FROM PROCESSOR.
*
* USES EO, LM, QA, QI, QT, ST, T3, CA - CA+4.
*
* CALLS CLT, EJT, FNT, QFT, *4RF*.
*
* MACROS EXECUTE.
RMT SUBR ENTRY/EXIT
LDC RMTA-1 SET LIST ADDRESS
STD ST
EXECUTE 4RF MANAGED TABLE RECOVERY
RMT1 AOD ST ADVANCE LIST ADDRESS
LDI ST
ZJN RMTX IF END OF TABLES
CRD CA READ TABLE POINTER
LDN 0
STD QT
STD QI
STD QA
STD EO
LDD EC SET NUMBER OF ASSIGNED ENTRIES
SBD LM
STD LM
LDM RMTB-RMTA,ST SET PROCESSOR ADDRESS
STD T3
RJM 0,T3 PROCESS MANAGED TABLE
ZJN RMT1 IF TABLE FULLY RECOVERED
LDM RMTC-RMTA,ST
STM RMTD SET TABLE IDENTIFIER
LDC RMTD
LJM ERR DISPLAY MESSAGE AND HANG
RMTA BSS 0 LIST OF TABLE POINTER ADDRESSES
CON QFTP
CON EJTP
CON FNTP
CON CLTP
RMTAA CON LIDP
CON FOTP
CON 0 END OF LIST
RMTB BSS 0 LIST OF PROCESSOR ADDRESSES
CON QFT
CON EJT
CON FNT
CON CLT
RMTC BSS 0 LIST OF TABLE IDENTIFIERS
CON 2RQF
CON 2REJ
CON 2RFN
CON 2RCL
CON 2RLI
CON 2RFO
RMTD DATA C*FNT POINTER WORD ERROR.*
SPACE 4,10
** MESSAGES.
MSGA DATA C*RECOVERY COMPLETE.*
OVLA EQU *+5 OVERLAY LOAD ADDRESS
MSGR DATA C*CHECKPOINT DEVICE ERROR.*
MSGS DATA C*CMR LENGTH CHANGED.*
MSGT DATA C*VE ENTRY REQUIRED.*
MSGU DATA C*SECURITY MODE CHANGED.*
RTB SPACE 4,10
** RTB - READ TABLE.
*
* ENTRY (A) = LENGTH.
* (CA - CA+1) = FWA.
*
* EXIT (A) .LT. 0 IF NOT ENOUGH SPACE FOR TABLE.
* TO *SYS2* IF UNRECOVERED READ ERROR.
*
* USES T1, LM - LM+1.
*
* CALLS RNS.
RTB2 ZJN RTBX IF EMPTY SECTOR
LDD LM
SHN 14 CHECK LENGTH
ADD LM+1
SBD T1
MJN RTBX IF NO ROOM FOR SECTOR
STD LM+1 DECREMENT LENGTH
SHN -14
STD LM
LDD CA STORE SECTOR
SHN 14
ADD CA+1
CWM BUF+2,T1
STD CA+1 ADVANCE TABLE ADDRESS
SHN -14
STD CA
LDD T1 CHECK WORD COUNT
SHN -6
NJN RTB1 IF NOT EOR
RTB SUBR ENTRY/EXIT
STD LM+1
SHN -14 SET LENGTH
STD LM
RTB1 LDC BUF READ NEXT SECTOR
RJM RNS
PJN RTB2 IF SUCCESSFUL READ
LJM SYS2 PROCESS READ ERROR
SPACE 4
** COMMON DECKS WHICH ARE OVERLAID.
*CALL COMPICT
*CALL COMPLDB
TITLE SYSTEM RECOVERY.
SYS SPACE 4
** SYS - RECOVER SYSTEM.
*
* EXIT (A) = JOB RECOVERY STATUS.
SYS SUBR ENTRY/EXIT
LDD CE SET CHECKPOINT DEVICE EST ORDINAL
STD T5
LDD ST SET SYSTEM TABLE TRACK
STD T6
SETMS IO
LDC NSYT SET SYSTEM TABLE ADDRESS
RJM RSS READ SYSTEM SECTOR
ZJN SYS4 IF VALID SYSTEM SECTOR
SYS2 LDC MSGR *CHECKPOINT DEVICE ERROR.*
LJM ERR ISSUE MESSAGE AND HANG
SYS4 AOD T7
LDC PBUF+500-2 READ SECOND SECTOR OF TABLE POINTERS
RJM RNS
MJN SYS2 IF READ ERROR
LDN FSMS
STD T7
LDC PBUF-2 READ FIRST SECTOR OF TABLE POINTERS
RJM RNS
MJN SYS2 IF READ ERROR
AOD T7
RJM SKR SKIP EST
RJM SKR SKIP CHANNEL TABLES
* VERIFY EST LENGTH.
LDN ESTP
CRD CM
LDD CM+2 COMPARE LENGTHS
SBM PBUF+ESTP*5+2
NJN SYS7 IF LENGTHS DIFFER
RJM PCT PROCESS SUBSYSTEM TABLES
* VERIFY LENGTH OF MANAGED TABLES.
SYS6 LDC RMTA VERIFY TABLE LENGTHS
RJM VTL
ZJN SYS8 IF TABLE LENGTHS VALID
LDM RMTC-RMTA,QA
STM SYSA SET TABLE IDENTIFIER
SYS7 ENDMS
LDC SYSA
LJM ERR DISPLAY MESSAGE AND HANG
SYS8 STM RMTAA
LDD RS CHECK RECOVERY STATUS
LPN FLMK
LMN FLCM
NJN SYS9 IF FILES NOT RECOVERED FROM CM
RJM SKR SKIP MANAGED TABLES
LJM SYS11 READ LIBRARY TABLES
* VERIFY OPERATING SYSTEM SECURITY MODE.
SYS9 LDK SSML
CRD CM
LDM PBUF+SSML*5
LMD CM
LPN 7
ZJN SYS10 IF SECURITY MODE UNCHANGED
LDC MSGU *SECURITY MODE CHANGED.*
LJM ERR PROCESS ERROR
SYS10 LDK SSML RESTORE ACCESS CATEGORIES
CWM PBUF+SSML*5,ON
LDK JSNL RESTORE JOB SEQUENCE NUMBER
CWM PBUF+5*JSNL,ON
LDC 377777 READ MANAGED TABLES
RJM RTB
LDN ZERL
CRD CM
LDN FNTP SET SYSTEM FILE BUSY
CRD CM+3
ERRNZ SYFO SYSTEM FILE ORDINAL .NE. 0
MONITOR UTEM
* LDN 0 INTERLOCK *PROBE* TABLE
STM PBUF+PRBP*5
LDC PRBP RESTORE *PROBE* TABLE POINTER
CWM PBUF+PRBP*5,ON
LDD RS CHECK RECOVERY STATUS
LPN SYMK
NJN SYS11 IF SYSTEM RECOVERY REQUESTED
LJM SYS20 COMPLETE MASS STORAGE OPERATION
* READ LIBRARY TABLES.
SYS11 LDC RPLP FETCH RPL POINTER
CRD CN
CRD CM
ADN PLDP-RPLP GET PLD POINTER
CRD FS
LDM PBUF+RPLP*5 CHECK LIBRARY POINTER
STD CA
SBD CN
SHN 14
ADM PBUF+RPLP*5+1
STD CA+1
SBD CN+1
PJN SYS12 IF CMR LENGTH HAS NOT INCREASED
ENDMS
LDC MSGS *CMR LENGTH CHANGED.*
LJM ERR
SYS12 RAD CN+1 ADJUST RPL ADDRESS
SHN -14
RAD CN
LDN 0
STD CM SET RPL LOCKED
STD CM+1
STD FS SET DIRECTORY LOCKED
STD FS+1
LDC RPLP STORE RESIDENT LIBRARY POINTER
CWD CM
ADN PLDP-RPLP STORE PLD POINTER
CWD FS
SYS16 LDM PBUF+5*CMRL+4 REQUEST STORAGE
STD CM+1
LDC 1000 SET CMR REQUEST
STD CM+2
MONITOR RSTM
LDK CMRL
CRD CM
LDD CM+4
LMM PBUF+5*CMRL+4
NJN SYS16 IF NOT ASSIGNED
LDC 377777 READ LIBRARY TABLES
RJM RTB
* SET LIBRARY TABLE ADDRESSES.
LDM PBUF+5*PLDP+1 RESTORE PLD ADDRESS
STD FS+1
LDM PBUF+5*PLDP
STD FS
LDC RPLP UNLOCK RPL
CWD CN
ADN PLDP-RPLP STORE PLD POINTER
CWD FS
SBN PLDP-RCLP FETCH RCL POINTER
CRD CM
LDM PBUF+5*RCLP+1 RESTORE RCL ADDRESS
STD CM+1
LDM PBUF+5*RCLP
STD CM
LDC RCLP STORE RCL POINTER
CWD CM
LDN DSSL SET RECOVERY LEVEL
CRD CM
LDM PBUF+5*DSSL+4
LMD CM+4
SCN 7
LMD CM+4
STM PBUF+5*DSSL+4
LDN DSSL STORE SYSTEM LABEL
CWM PBUF+5*DSSL,ON
LDC EPDP+PSTP* READ EPD POINTER
CRD CM
LDM PBUF+5*EPDP+1 RESTORE EPD ADDRESS
STD CM+1
LDM PBUF+5*EPDP
STD CM
ERRNZ PSTP-EPDP POINTERS NOT IN SAME WORD
LDM PBUF+5*PSTP+3 RESTORE PST ADDRESS
STD CM+3
LDM PBUF+5*PSTP+2
STD CM+2
LDC EPDP+PSTP* SET EPD AND PST ADDRESS
CWD CM
SBN EPDP-LBDP FETCH PBD POINTER
CRD CM
LDM PBUF+5*LBDP+3 RESTORE LBD ADDRESS
STD CM+3
LDM PBUF+5*LBDP+2
STD CM+2
LDN SSTL FETCH SYSTEM STATUS WORD
CRD FS
ADN PRBP-SSTL GET *PROBE* TABLE ADDRESS
CRD CN
ADN LBDP-PRBP STORE LBD POINTER
CWD CM
ADN BIOL-LBDP READ BUFFERED I/O STATUS
CRD FN
LDD FS+2 CHECK *PROBE* ENABLED
SHN 21-6
MJN SYS19 IF *PROBE* NOT ENABLED
LDD FN+1
ADD FN+2
ZJN SYS18 IF NO BUFFERED I/O
LDN 0
RJM RTB RETRIEVE BUFFERED DEVICE POINTER TABLE
LDD FN+1
SHN 14
LMD FN+2
ADN IOSP RESET BUFFERED I/O *PROBE* DATA POINTER
CWM BUF+2+5*IOSP,ON
SYS18 LDC 4000 CLEAR *PROBE* TABLE INTERLOCK
STD CN
LDC PRBP UPDATE *PROBE* TABLE POINTER
CWD CN
SYS19 RJM LDB
LDN 1 INITIALIZE *CPUMTR* TABLES
RJM ICT
SYS20 ENDMS
LDD RS SET EXIT CONDITION
LPC JBMK
LMD HN
ERRNZ 100-JBCM ADJUST IF VALUE CHANGES
LJM SYSX RETURN
SYSA DATA C*EST LENGTH CONFLICT.*
SPACE 4,10
** SYSTEM SECTOR FNT ENTRIES.
NSYT VFD 42/0LSYSTAB,6/1,6/SYFT,6/0
FDS SPACE 4,10
** FDS - FIND DESCRIPTOR IN SAB.
*
* ENTRY (A) = DESCRIPTOR ID.
* (BUF) = SAB.
*
* EXIT (A) = 0 IF DESCRIPTOR FOUND.
* (A) .NE. 0 IF DESCRIPTOR NOT FOUND.
* (T2) = BYTE OFFSET OF DESCRIPTOR.
*
* USES T0 - T2.
FDS SUBR ENTRY/EXIT
STD T0 SAVE DESCRIPTOR ID
LDN 0
STD T1
FDS1 LDD T1 SET BYTE OFFSET
SHN 2
ADD T1
STD T2
LDM BUF+2,T2
SHN 14
RAD T1 ADVANCE INDEX
SHN -14
LMD T0
ZJN FDSX IF DESCRIPTOR FOUND
LDD T1
SBM BUF+1
NJN FDS1 IF NOT END OF SAB
ENDMS
LDN 1 INDICATE ERROR
UJN FDSX RETURN
PCT SPACE 4,10
** PCT - PROCESS CONTROL TABLES.
*
* USES CA - CA+4, CM - CM+4, CN - CN+4.
*
* CALLS RTB, SKR, VEM.
*
* MACROS ENDMS.
PCT3 RJM SKR SKIP EVENT TABLE
RJM SKR SKIP SSCT AND SSAT
RJM SKR SKIP SERVICE CLASS CONTROL TABLE
RJM SKR SKIP SABB INFORMATION
RJM SKR SKIP STATISTICAL DATA AREA
PCT SUBR ENTRY/EXIT
LDD RS
LPN SYMK
LMN SYCM
ZJN PCT3 IF SYSTEM RECOVERED FROM CM
LDK EVTP FETCH EVENT TABLE FWA
CRD CN
LDD CN SET ADDRESS OF TABLE
STD CA
LDD CN+1
STD CA+1
LDN EVTLL READ EVENT TABLE
RJM RTB
LDD CN CLEAR TABLE INTERLOCK
SHN 14
LMD CN+1
CRD CM
LDD CM+4
SCN 1
STD CM+4
LDD CN
SHN 14
LMD CN+1
CWD CM
LDC SSCP FETCH SUBSYSTEM CONTROL TABLE POINTER
CRD CM
LDD CM+2 SET ADDRESS OF TABLES
STD CA
LDD CM+3
STD CA+1
LDN SSCTL*2 READ SSCT AND SSAT
RJM RTB
LDK JBCP SET FWA OF JOB CONTROL TABLE
CRD CA
LDK JCBE*/SCD/MXJC READ CONTROL TABLES
RJM RTB
RJM VEM VERIFY MICROCODE/EI NAMES
LDC SDAP SET STATISTICAL DATA AREA ADDRESS
CRD CA
LDN SDAL READ STATISTICAL DATA AREA
RJM RTB
* SET RESERVED EJT ORDINAL.
LDM PBUF+EIBP*5+3 GET PREVIOUS *EICB* ADDRESS
SHN 14
ADM PBUF+EIBP*5+4
ZJN PCT2 IF NO EICB PREVIOUSLY
LDN SSTL
CRD CM
LDD CM+3 CHECK FOR *VE=* ENTRY
LMM PBUF+5*SSTL+3
SHN 21-13
PJN PCT1 IF *VE* STATUS NOT CHANGED
ENDMS
LDC MSGT (*VE ENTRY REQUIRED.*)
LJM ERR ISSUE MESSAGE AND HANG
PCT1 LDK NVOL
CRD CM
LDM PBUF+NVOL*5+4 SET NOS/VE EJT ORDINAL
STD CM+4
LDK NVOL
CWD CM
PCT2 LJM PCTX RETURN
SKR SPACE 4
** SKR - SKIP RECORD.
*
* ENTRY (T4 - T7) = MASS STORAGE PARAMETERS.
*
* EXIT (T6 - T7) UPDATED.
* TO *SYS2* IF UNRECOVERED READ ERROR.
*
* CALLS RNS.
SKR2 SHN -6
NJN SKR1 IF NOT EOR
SKR SUBR ENTRY/EXIT
SKR1 LDC BUF READ NEXT SECTOR
RJM RNS
PJN SKR2 IF NO READ ERROR
LJM SYS2 ISSUE ERROR MESSAGE AND HANG
VEM SPACE 4,10
** VEM - VERIFY EI AND MICROCODE NAMES.
*
* EXIT TO *ERR* IF VALUES DO NOT COMPARE.
* TO *SYS2* IF I/O ERROR.
*
* USES T0 - T2, CM - CM+4, CN - CN+4.
*
* CALLS FDS, RNS.
*
* MACRO ENDMS.
VEM7 LJM SYS2 ISSUE ERROR MESSAGE AND HANG
VEM SUBR ENTRY/EXIT
LDC BUF
RJM RNS READ NEXT SECTOR
MJN VEM7 IF ERROR
LDK EABL+MFEI GET MAINFRAME DESCRIPTOR ADDRESS
CRD CM
LDD CM+1
SCN 77
SHN 6
LMD CM
SHN 6
CRD CN
ADN 1 GET EI NAME
CRD CM
LDD CN+1
SHN -6
LMN 7
NJN VEMX IF NOT CYBER 180 MACHINE
LDN 3 FIND MAINFRAME DESCRIPTOR
RJM FDS
VEM1 NJN VEM7 IF NOT FOUND
LDM BUF+2+5+3,T2
STM VEMB+6
LMD CM+3
NJP VEM5 IF EI MISMATCH
LDK EABL+CPEI GET PROCESSOR DESCRIPTOR
CRD CM
LDD CM+1
SCN 77
SHN 6
LMD CM
SHN 6
ADN 2
CRD CM
LDN 2 FIND PROCESSOR DESCRIPTOR
RJM FDS
NJN VEM1 IF NOT FOUND
STD T0
LDN 3
STD T1
RAD T2
VEM2 LDM BUF+2+2*5,T2
STM VEMA+12,T1
LMM CM,T1
ZJN VEM3 IF THIS BYTE MATCHES
AOD T0 SET NO MATCH FLAG
VEM3 SOD T2
SOD T1 DECREMENT INDEX
PJN VEM2 IF MORE TO COMPARE
LDD T0
ZJN VEM6 IF MICROCODE MATCHES
VEM4 ENDMS
LDC VEMA *MICROCODE MISMATCH*
* LDC VEMB (EI MISMATCH)
VEMC EQU *-1
LJM ERR DISPLAY MESSAGE AND HANG PP
VEM5 LDK VEMB-VEMA
RAM VEMC
UJN VEM4 DISPLAY MESSAGE AND HANG
VEM6 LJM VEMX RETURN
VEMA DATA C*MICROCODE MISMATCH, *
VEMB DATA C*EI MISMATCH, *
VTL SPACE 4,10
** VTL - VERIFY TABLE LENGTHS.
*
* ENTRY (A) = LIST ADDRESS OF TABLE POINTERS.
*
* EXIT (A) = 0 IF TABLE LENGTHS VALID.
* (CA - CA+1) = FWA OF LAST TABLE IN LIST.
*
* USES EC, QA, T2, LM - LM+1.
VTL1 STD T2
CRD CA READ TABLE POINTER
SHN 2
ADC PBUF+2 SET ADDRESS OF CHECKPOINTED POINTER
RAD T2
LDD EC COMPARE NUMBER OF TABLE ENTRIES
LMI T2
NJN VTLX IF TABLE LENGTHS DIFFER
LDD RS
LPN FLMK
LMN FLCM
ZJN VTL2 IF FILES RECOVERED FROM CM
LDM 1,T2
STD LM
LDM 2,T2 RESET POINTER PARAMETERS
STD LM+1
LDI QA UPDATE POINTER WORD
CWD CA
VTL2 AOD QA ADVANCE LIST ADDRESS
VTL3 LDI QA
NJN VTL1 IF NOT END OF LIST
VTL SUBR ENTRY/EXIT
STD QA
UJN VTL3 ENTER LOOP
BUFFERS SPACE 4
* BUFFER DEFINITIONS.
PBUF EQU *+2
BUF EQU PBUF+5*BQRL
ERRPL BUF+502-EPFW BUFFER OVERFLOW
TITLE PRESET PROGRAM.
PRS SPACE 4
** PRS - PRESET.
*
* EXIT (RS) = RECOVERY STATUS.
* (NC) = NUMBER OF CONTROL POINTS.
* (NS) = NUMBER OF CP-S + PCP-S + 1 (SYS CP).
* (CE) = CHECKPOINT DEVICE EST ORDINAL.
* (ST) = SYSTEM TRACK FOR RECOVERY.
* (LO) = LAST MASS STORAGE ORDINAL + 1.
*
* USES CM - CM+4, CN - CN+4.
PRS SUBR ENTRY/EXIT
LDN SMRL
CRD CM
LDD CM+4 SET STORAGE MOVE STATUS
STM CCPA
LDD CM+3
LPN 77
RAM CCPB
LDD IR+4 SET RECOVERY STATUS
* STD RS
STM RECC+4
LDN NCPL FETCH CONTROL POINT COUNT
CRD CM
ADN MCTP-NCPL GET MCT POINTER
CRD CN
AOD CM+1 SET SYSTEM CP
STD NC
RAM RECC+1
ERRNZ MCTP-PCPP CODE DEPENDS ON VALUE
LDD CN+3
SHN 14 FORM BASE PCPA ADDRESS
LMD CN+4
SBK CPAS
STM SCAA SET ADDRESS - CPA LENGTH
SHN -14
RAM SCAA-1
SOD CN+2 SET CP + PCP + SYS CP COUNT
STD NS
LDD IA
CWD IR
MONITOR CCAM
* LDN 0
STD ST
LDN ESTP READ EST POINTER
CRD CM
LDD CM+3 SET LAST MASS STORAGE ORDINAL + 1
STD LO
LDN TAXMW SET TAXM WORD COUNT
STD T2
LDN ZERL
CRD CM
ADN DSDL+1-ZERL FETCH *TAXM* TABLE GENERATED BY *SET*
CRM TAXM,T2
RJM IFP INITIALIZE TABLE ACCESS ROUTINES
* FIND SYSTEM DEVICE.
LDN NOPE-1
STD T5
PRS1 AOD T5 INCREMENT EST ORDINAL
STM RECF SET POSSIBLE SYSTEM DEVICE
LMD LO
ZJP PRS5 IF END OF SCAN
SFA EST,T5
ADK EQDE
CRD FN READ EST ENTRY
LDD FN
SHN 21-13
PJN PRS1 IF NOT MASS STORAGE
SHN 13-12
PJN PRS1 IF NOT SYSTEM DEVICE
* FIND CHECKPOINT DEVICE.
LDN NOPE-1
STD CE
PRS2 AOD CE INCREMENT EST ORDINAL
LMD LO
ZJN PRS4 IF END OF SCAN
SFA EST,CE
ADK EQDE
CRD FN
LDD FN
SHN 21-13
PJN PRS2 IF NOT MASS STORAGE
SHN 13-2
PJN PRS2 IF NOT CHECKPOINT DEVICE
LDD FN+4 SET SYSTEM TABLE TRACK
SHN 3
ADN DULL
CRD FS
LDD FS+3
SHN 21-13
PJN PRS2 IF NOT VALID CHECKPOINT FILE
SHN 13-21
STD ST
STM RECE
PRS3 RJM STU SCAN TAPE UNITS
LJM PRSX RETURN
PRS4 LDD RS
ZJN PRS3 IF NOT RECOVERY DEADSTART
LDN PRSB-PRSA
PRS5 ADC PRSA
LJM ERR DISPLAY MESSAGE AND HANG
PRSA DATA C*SYSTEM DEVICE NOT FOUND.*
PRSB DATA C*CHECKPOINT DEVICE NOT FOUND.*
IFP HERE DUMP *IFP* REMOTE CODE
STU SPACE 4,10
** STU - SCAN TAPE UNITS IN *MAGNET*.
*
* EXIT JOB STATUS UPDATED IN *UST1* WORD OF UDT ENTRIES.
*
* USES CM - CM+4, CN - CN+4, FN - FN+4, FS - FS+4.
*
* CALLS AST.
*
* MACROS PAUSE, SFA.
STU SUBR ENTRY/EXIT
LDC FECF*10000+MTSI GET *MAGNET* SSCT ENTRY
RJM AST
SHN 21-13
PJN STUX IF *MAGNET* NOT ACCESSIBLE
LDC FEAF*10000+MTSI GET *MAGNET* SSAT ENTRY
RJM AST
ZJN STUX IF *MAGNET* NOT AT CONTROL POINT
SFA EJT GET *MAGNET* CP NUMBER
ADN SCHE
CRD CM
LDD CM+3 CHECK *MAGNET* SUBSYSTEM IDENTIFICATION
SHN 7
ADN JCIW
CRD CM
SBN JCIW-FLSW GET *MAGNET* RA AND FL
CRD CN
SCN 77
LMM CCPA
ZJN STUX IF *MAGNET* MOVING
LDD CM+2
LMC MTSI
NJN STUX IF NOT CORRECT SUBSYSTEM IDENTIFICATION
LDK MABL CHECK MAINFRAME TYPE
CRD CM
LDD CM+1
SHN 21-13
MJN STU1 IF NOT CM EXTENSION
LRD CN+2
LDC 4000
STD CN+3
STU1 LDD CN+3 GET *MAGNET* UDT FWA AND LWA+1
SHN 6
ADN /MTX/UBUF
CRD CM
LDD CM+4 VALIDATE UDT FWA AND LWA+1
SBN 2
MJN STU2 IF UDT FWA .LE. 1
LDD CN+4
SHN 6
SBD CM+2
SBN 1
MJN STU2 IF UDT LWA+1 .GE. FL
LDD CM+4
SBD CM+2
MJN STU4 IF UDT FWA .LT. LWA+1
STU2 PAUSE NE RESET R REGISTER FOR CME MACHINE
LJM STUX RETURN
STU3 LDN /MTX/UNITL
RAD CM+4
SBD CM+2
PJN STU2 IF END OF UDTS
STU4 LDD CN+3 CHECK NEXT UDT
SHN 6
ADD CM+4
ADK /MTX/UST1 GET JOB STATUS
CRD FS
ADK /MTX/UVRI-/MTX/UST1 GET EJT ORDINAL
CRD FN
LDD FS CLEAR JOB ROLLED OUT FLAG
SCN 1
STD FS
SFA EJT,FN GET JOB STATUS
ADK JSNE
CRD FN
LDD FN+4
LPN 76
LMN EXJS*2
ZJN STU5 IF UNIT NOT ASSIGNED OR JOB AT CP
AOD FS INDICATE JOB ROLLED OUT
STU5 LDD CN+3
SHN 6
ADD CM+4
ADN /MTX/UST1
CWD FS
UJN STU3 PROCESS NEXT UDT
SPACE 4,10
** PRESET COMMON DECKS.
*CALL COMPAST
TTL REC/4RA - RECOVER DAYFILES.
TITLE
QUAL RDB
IDENT 4RA,RDFX
QUAL$ EQU 1 DONT QUALIFY COMMON DECKS
*COMMENT REC - RECOVER DAYFILES.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SPACE 4
** 4RA - RECOVER DAYFILES.
*
* *4RA* USES THE DAYFILE RECOVERY INFORMATION DEVELOPED
* BY *RMS* TO SETUP THE DAYFILE FST ENTRIES. IT ALSO SETS
* THE RECOVERED DAYFILES LENGTH IN THE CORRESPONDING
* SYSTEM SECTOR. IF A DAYFILE IS NOT RECOVERED, *4RA*
* WILL START A NEW DAYFILE ON THE DEVICE DEFINED BY
* THE DAYFILE CMRDECK DIRECTIVES.
SPACE 4,3
*** ENTRY CONDITIONS.
*
* (SE) = SYSTEM EQUIPMENT.
SPACE 4,3
*** OPERATOR MESSAGES.
*
* *FILENAM UNRECOVERABLE.* = DAYFILE SPECIFIED
* NOT RECOVERABLE.
SPACE 4
ORG OVLA
RDF SUBR ENTRY/EXIT
RJM IDF INITIALIZE DAYFILES
UJN RDFX RETURN
RDB SPACE 4,10
QUAL
* *4RA*/*4RE* COMMUNICATION BLOCK.
RDBA BSS 0 CREATION DATE BUFFERS
BSSZ 5 SYSTEM DAYFILE
BSSZ 5 ACCOUNT DAYFILE
BSSZ 5 ERRLOG DAYFILE
BSSZ 5 MAINTENANCE LOG DAYFILE
RDBB BSS 0 EOI DATE BUFFERS
BSSZ 5 SYSTEM DAYFILE
BSSZ 5 ACCOUNT DAYFILE
BSSZ 5 ERRLOG DAYFILE
BSSZ 5 MAINTENANCE LOG DAYFILE
RDBC BSS 0 EOI TIME BUFFERS
BSSZ 5 SYSTEM DAYFILE
BSSZ 5 ACCOUNT DAYFILE
BSSZ 5 ERRLOG DAYFILE
BSSZ 5 MAINTENANCE LOG DAYFILE
RDBD BSS 0
DATA H*DAYFILE *
DATA H*ACCOUNT *
DATA H*ERRLOG *
DATA H*MAINLOG *
RDBE BSS 0
RDBF BSSZ EXDF FIRST TRACK OF CREATED DAYFILES
* THE FOLLOWING MESSAGE, *ARSY, LN, YY/MM/DD.* IS ISSUED WHEN
* THE ACCOUNT DAYFILE IS RECOVERED ON DEADSTART LEVEL *LN*.
* THE MESSAGE *ABSY, YY/MM/DD.* IS ISSUED WHEN THE ACCOUNT
* DAYFILE IS INITIALIZED.
RDBG DATA H*ARSY, 0, YY/MM/D*
CON 0,0
RDBH DATA C*FILENAM RECOVERED, EQXXX.*
RDBI DATA C*FILENAM CREATION DATE YY/MM/DD. *
RDBI1 EQU *-6
RDBJ DATA C*FILENAM UPDATED YY/MM/DD. HH.MM.SS. *
RDBJ1 EQU *-13
RDBK CON RDBG+4 MESSAGE ADDRESS FOR DATE
SPACE 4,10
OVLB EQU *+5 ORIGIN FOR *4RE*
QUAL RDB
TITLE SUBROUTINES.
IDF SPACE 4,9
** IDF - INITIALIZE DAYFILES.
*
* ENTRY (RS) = RECOVERY STATUS.
* (RECF) = SYSTEM EQUIPMENT.
*
* EXIT (USST) = EQUIPMENT AND FIRST TRACK OF NEW DAYFILES.
*
* USES T1 - T7, CM - CM+4, CN - CN+4, FN - FN+4,
* FS - FS+4, USST, QT, QS, FA.
*
* CALLS C2D, FMM, GDT, IEM, IRA, RDS, RSS, SEI, TLM, WEI, WSS.
*
* MACROS ENDMS, MONITOR, SETMS, SFA.
IDF SUBR ENTRY/EXIT
LDD RS CHECK RECOVERY STATUS
LPN FLMK
LMN FLCM
ZJN IDFX IF FILES RECOVERED FROM CM
LDN 0 CLEAR FST ADDRESS
STD FA
STD QS CLEAR *USST* INDEX
LDN ZERL
CRD CM
* THE FIRST WORD OF THE SYSTEM DAYFILES BUFFER CONTAINS
* THE DAYFILE RECOVERY INFORMATION.
LDN DFPP SET FWA OF DAYFILE POINTERS
CRD CN
LDD CN
SHN 14
ADD CN+1
CRD FS
SBN 1 INITIALIZE DAYFILE STATUS WORD ADDRESS
STD CN+1
SHN -14
STD CN
LCN 0 INITIALIZE DAYFILE INDEX
STD CN+3
LDD FS
SHN 14
LMD FS+1
CRD FN
CWD CM
LDD FN+1 CHECK ACCOUNT FILE RECOVERY INFORMATION
SHN 21-13
PJN IDF1 IF RECOVERY SELECTED
SOM RDBK
LCN 1RR-1RB SET *ABSY* IN MESSAGE
RAM RDBG
* LOOP TO PROCESS EACH DAYFILE.
IDF1 AOD CN+3 ADVANCE DAYFILE INDEX
LMN EXDF
NJN IDF2 IF NOT LAST OF EXCESS DAYFILES
LJM IDFX RETURN
IDF2 LDN 3 SET STATUS WORD ADDRESS
RAD CN+1
SHN -14
RAD CN
SHN 14
ADD CN+1
CRD FS READ DAYFILE STATUS WORD
SBN 1 READ DAYFILE BUFFER LENGTH WORD
CRD CM
LDD CM+3
ZJN IDF1 IF ZERO LENGTH BUFFER
STD CM+2
LDN 0
STD CM+3
LDD CN ACTIVATE DAYFILE
SHN 14
ADD CN+1
SBN 1
CWD CM
* PROCESS DAYFILE RECOVERY.
LDM FN,CN+3 SET DAYFILE EST ORDINAL
LPC 777
STD T5
LMN NEEQ
ZJN IDF3 IF DEFAULT EQUIPMENT
SFA EST,T5 READ EST ENTRY
ADK EQDE
CRD CM
LDD CM CHECK EQUIPMENT
SHN -6
LPN 45
LMN 40
ZJN IDF4 IF MASS STORAGE, NOT REMOVABLE, AVAILABLE
IDF3 LDM RECF DEFAULT TO SYSTEM DEVICE
STD T5
IDF4 RJM IRA INITIALIZE RANDOM ACCESS PROCESSORS
LDD T5 SET EQUIPMENT IN FST
STD FS
RJM GDT GET DAYFILE TRACKS
LDM FN,CN+3
SHN 21-13
PJN IDF6 IF RECOVERY OF DAYFILE SELECTED
IDF5 LJM IDF11 INITIALIZE DAYFILE
IDF6 LDM IDFD,CN+3 CHECK TRACK ASSIGNED
NJN IDF7 IF TRACK ASSIGNED
LDD T5 CHECK REQUESTED EQUIPMENT
LMM FN,CN+3
LPC 777
NJN IDF5 IF DEFAULT EQUIPMENT
LJM IDF10 TRACK NOT ASSIGNED RECOVERY IMPOSSIBLE
* UPDATE RECOVERY INFORMATION IN SYSTEM SECTOR.
IDF7 STD T6
STD FS+1
SETMS IO,(SM,RW)
LDM IDFB,CN+3
RJM RSS READ SYSTEM SECTOR
NJN IDF8 IF INCORRECT SYSTEM SECTOR
ENDMS
* LDN 0 (FORCE CURRENT TRT)
RJM SEI SET CURRENT POSITION TO EOI
LDD T6
STD FS+2
LDD T7
STD FS+3 SET SECTOR
LDD T2 SAVE LENGTH
STM FLSS
LDD T3
STM FLSS+1
RJM TLM TERMINATE LAST MESSAGE
LDC SBUF
RJM RDS READ EOI SECTOR
MJN IDF9 IF READ ERROR
LDM SBUF
ADM SBUF+1
IDF8 NJN IDF9 IF NOT EOI
RJM FMM FORMAT MESSAGES
LJM IDF15
* IF NO TRACK ASSIGNED, ERROR IN SYSTEM SECTOR
* OR ERROR IN EOI SECTOR.
IDF9 ENDMS
IDF10 RJM IEM ISSUE ERROR MESSAGE
* CREATE A NEW DAYFILE.
IDF11 LDM IDFD,CN+3
ZJN IDF12 IF NO TRACK ASSIGNED
STD CM+2
LDD T5
STD CM+1
MONITOR DTKM DROP TRACKS
IDF12 LDN ZERL
CRD CM
LDD T5 SET EST ORDINAL
STD CM+1
LMC 4000
STM USST,QS
MONITOR RTCM RESERVE TRACK CHAIN
LDD CM+4 SET TRACK
STD T6
STM RDBF,CN+3
NJN IDF13 IF TRACK ASSIGNED
LDD T5 CONVERT UPPER TWO DIGITS OF EST ORDINAL
SHN -3
RJM C2D
STM IDFC+1
LDD T5 CONVERT LOWER DIGIT OF EST ORDINAL
LPN 7
SHN 6
ADC 2R0,
STM IDFC+2
LDC IDFC *EQXXX, DAYFILE TRACK LIMIT.*
LJM ERR
IDF13 STM USST+1,QS
STD CM+2 SET PRESERVED FILE BIT
LDD T5
STD CM+1
LDN SPFS
STD CM+3
MONITOR STBM
* LDN 0 FORCE DEADSTART CHECKPOINT
STM RECB
LDN 2 ADVANCE SYSTEM SECTOR UPDATE INDEX
RAD QS
LDM IDFB,CN+3 SET DAYFILE NAME
STM IDFA
LDC 501-ETEI
STD T1
IDF14 LDN 0 CLEAR SYSTEM SECTOR / EOI BUFFER
STM BFMS+ETEI,T1
SOD T1
PJN IDF14 LOOP UNTIL CLEAR
LDD MA
CWM *,ON
IDFA EQU *-1
SBN 1
CRM FNSS,ON
RJM WSS WRITE SYSTEM SECTOR
RJM WEI WRITE EOI
ENDMS
LDD T5 SET EQUIPMENT
STD FS
LMC 4000
STD CM+1
LDD T6 SET TRACK
STD FS+1
STD FS+2
LPC 3777
STD CM+2
LDD T7 SET SECTOR
STD FS+3
STD CM+3
MONITOR DTKM SET EOI IN TRT
* COMPLETE PROCESSING FOR THIS DAYFILE.
IDF15 ENDMS
LDD CN STORE DAYFILE FST
SHN 14
ADD CN+1
CWD FS
LJM IDF1 LOOP FOR NEXT DAYFILE
* TABLE OF ADDRESSES FOR DAYFILE FNT ENTRIES.
IDFB BSS 0
CON NDYF
CON NACF
CON NERL
CON NBML
IDFC DATA C*EQXXX, DAYFILE TRACK LIMIT.*
IDFD BSS 5 DAYFILES FIRST TRACK BUFFER
* DAYFILE FNT ENTRIES.
NDYF VFD 42/0LDAYFILE,6/1,6/LIFT,6/0
NACF VFD 42/0LACCOUNT,6/1,6/LIFT,6/0
NERL VFD 42/0LERRLOG,6/1,6/LIFT,6/0
NBML VFD 42/0LMAINLOG,6/1,6/LIFT,6/0
IEM SPACE 4
** IEM - ISSUE ERROR MESSAGE.
*
* ENTRY (CN+3) = DAYFILE INDEX.
*
* USES CM - CM+4.
IEM SUBR ENTRY/EXIT
LDM IDFB,CN+3
STM IEMA
LDD MA
CWM *,ON FILENAME FOR MESSAGE
IEMA EQU *-1
SBN 1
CRM IEMB,ON
LDC 2R BLANK FILE NAME
STM IEMB+4
LDM IEMB+3
SCN 77
LMN 1R
STM IEMB+3
* SET PAUSE BIT.
LDD NC SYSTEM CONTROL POINT
SHN 7
ADN SNSW SENSE SWITCH WORD
CRD CM
STD T1
* SET PAUSE BIT AND WAIT FOR OPERATOR ACTION.
LDD CM+3
SCN 1
LMN 1
STD CM+3
LDD T1
CWD CM
ADN MS2W-SNSW
CWM IEMB,TR
IEM1 LDN 77
SBN 1
NJN *-1 DELAY
LDD T1
CRD CM
LDD CM+3
LPN 1
NJN IEM1 IF PAUSE BIT STILL SET
LJM IEMX RETURN
IEMB DATA C*DAYFILE UNRECOVERABLE.*
FMM SPACE 4,15
** FMM - FORMAT MESSAGES.
*
* ENTRY CHANNEL RESERVED.
* (T5) = EST ORDINAL.
* (QS) = INDEX TO *USST* LIST.
* SYSTEM SECTOR AT BFMS.
* EOI SECTOR AT SBUF.
* (CN+3) = DAYFILE INDEX.
* (FS - FS+4) = DAYFILE STATUS WORD.
* *SETMS IO,RW* PERFORMED.
*
* EXIT SYSTEM SECTOR UPDATED.
* MESSAGE INFORMATION SAVED.
*
* USES T1, T2, T6, T7.
*
* CALLS WSS.
FMM SUBR ENTRY/EXIT
LDD CN+3 SAVE DATE AND TIME
SHN 2
ADD CN+3
ADC RDBA
STM FMMA
ADN RDBB-RDBA
STM FMMC
ADN RDBC-RDBB
STM FMMB
* SAVE SYSTEM SECTOR CREATION DATE.
LDD MA
CWM BFMS+DTEI+2*5,ON
SBN 1
CRM **,ON
FMMA EQU *-1
* SAVE UPDATE TIME.
SBN 1
CWM SBUF+DTEI+5,ON
SBN 1
CRM **,ON
FMMB EQU *-1
* SAVE UPDATE DATE.
SBN 1
CWM SBUF+DTEI+2*5,ON
SBN 1
CRM **,ON
FMMC EQU *-1
* UPDATE SYSTEM SECTOR WITH NEW LENGTH.
SETMS POSITION
LDM FTSS REWRITE SYSTEM SECTOR
STM USST+1,QS
STD T6
RJM WSS
LDD T5 SET RECOVERED DAYFILE IN *USST*
LMC 2000
STM USST,QS
LDN 2
RAD QS
LDD FS+1 CHECK STATUS OF DAYFILE
LMD FS+2
NJN FMM1 IF BUFFER DUMPED TO DISK
LDD FS+3
LMN FSMS
NJN FMM1 IF BUFFER DUMPED
LDD T6 SET FIRST TRACK IN CREATION TABLE
STM RDBF,CN+3
FMM1 LJM FMMX RETURN
GDT SPACE 4,10
** GDT - GET DAYFILE TRACKS.
*
* ENTRY (T5) = EST ORDINAL.
*
* EXIT (IDFD) = FIRST TRACKS OF EXCESS DAYFILES.
* = 0 IF NO DAYFILES ON DEVICE.
*
* EREXIT TO *ERR* IF ERROR READING SECTOR OF LOCAL AREAS.
*
* CALLS C2D, RLA.
GDT1 ZJN GDT2 IF NO SECTOR OF LOCAL AREAS
STM GDTA
LDD MA MOVE DAYFILE TRACKS TO DIRECT CELLS
CWM *,ON
GDTA EQU *-1
SBN 1
GDT2 CRM IDFD,ON
GDT SUBR ENTRY/EXIT
RJM RLA READ LOCAL AREA SECTOR
PJN GDT1 IF NO ERRORS
LDD T5 CONVERT UPPER TWO DIGITS OF EST ORDINAL
SHN -3
RJM C2D
STM GDTB+1 STORE IN MESSAGE
LDD T5 CONVERT LOWER DIGIT OF EST ORDINAL
LPN 7
SHN 6
ADC 2R0,
STM GDTB+2
LDC GDTB *EQXXX, LOCAL AREA SECTOR ERROR.*
LJM ERR DISPLAY MESSAGE AND HANG
GDTB DATA C*EQXXX, LOCAL AREA SECTOR ERROR.*
TLM SPACE 4,15
** TLM - TERMINATE LAST DAYFILE MESSAGE.
*
* ENTRY (T5) = EST ORDINAL.
* (T6) = (FS+2) = EOI TRACK FOR DAYFILE.
* (T7) = (FS+3) = EOI SECTOR.
* (FS+1) = FIRST TRACK OF DAYFILE.
* (CN+3) = DAYFILE INDEX.
* (CN - CN+1) = FWA OF DAYFILE POINTERS.
* (T2 - T3) = DAYFILE LENGTH (SECTOR COUNT).
*
* USES T2, CM - CM+4.
*
* CALLS RDS, SNT.
TLM SUBR ENTRY/EXIT
LDD CN+3
LMN MLDY
ZJN TLMX IF MAINTENANCE LOG
LDD T3
LMN FSMS
ADD T2
ZJN TLMX IF DAYFILE EMPTY
SOD T7
PJN TLM2 IF EOI NOT ON TRACK BOUNDARY
LDD FS+1
STD T6
TLM1 LDD T6 SAVE CURRENT TRACK
STD T2
RJM SNT SET NEXT TRACK
STD T6
LMD FS+2
NJN TLM1 IF NOT EOI TRACK
LDD T2
STD T6
LDM SLM SET LAST DATA SECTOR
SBN 1
STD T7
TLM2 LDC SBUF READ LAST SECTOR OF DAYFILE DATA
RJM RDS
MJN TLM3 IF READ ERROR
LDM SBUF+1
LMD HN
NJN TLM3 IF NOT FULL SECTOR (BUFFER FLUSHED)
LDM SBUF+501
ZJN TLM3 IF LAST MESSAGE COMPLETE
LDD CN
SHN 14
ADD CN+1
SBN 2
CRD CM
AOD CM+4 ADVANCE IN POINTER
LDD CN
SHN 14
ADD CN+1
SBN 2
CWD CM
TLM3 LDD FS+2 RESTORE EOI ADDRESS
STD T6
LDD FS+3
STD T7
LJM TLMX RETURN
USS SPACE 4
** USS - UPDATE SYSTEM SECTOR.
*
* ENTRY EST ORDINAL AND FIRST TRACK OF SELECTED DAYFILES
* STORED IN USST.
*
* EXIT DAYFILE SYSTEM SECTORS UPDATED WITH CURRENT TIME.
*
* USES T5, T6, QS.
*
* CALLS RSS, WSS.
*
* MACROS ENDMS, SETMS.
USS SUBR ENTRY/EXIT
LDN 0 CLEAR FILE INDEX
STD QS
STD FA
USS1 LDM USST,QS CHECK FOR SELECTED EQUIPMENT
ZJN USSX IF END OF FILES
LPC 777
STD T5
SETMS IO,RW
LDM USST+1,QS SET FIRST TRACK
STD T6
LDN 0 READ SYSTEM SECTOR
RJM RSS
NJN USS3 IF ERROR IN SYSTEM SECTOR
LDM USST,QS
SHN 21-12
MJN USS2 IF A RECOVERED DAYFILE
LDN PDTL ENTER CREATION DATE AND TIME
CRM DTSS,TR
USS2 RJM WSS UPDATE TIME IN SYSTEM SECTOR
USS3 ENDMS
LDN 2
RAD QS
LJM USS1 LOOP FOR NEXT FILE
** TABLE OF DAYFILE SYSTEM SECTORS TO UPDATE.
* ENTRY = 2 WORDS, ZERO WORD TERMINATES THE TABLE.
*
*T, USST 3/FLAGS, 9/ ESTORD, 12/ FIRST TRACK
*
* FLAGS -
* 4 = NEW DAYFILE.
* 2 = RECOVERED DAYFILE.
USST BSSZ 2*EXDF+1
SPACE 4
* COMMON DECKS.
*CALL COMPRLA
SPACE 4
USE LITERALS
SBUF EQU * SCRATCH BUFFER
ERRNG BFMS-SBUF-502 SCRATCH BUFFER OVERFLOW INTO *BFMS*
TTL REC/4RB - ALLOCATE/RECOVER USER XM.
TITLE
QUAL ECS
IDENT 4RB,ECSX
*COMMENT REC - ALLOCATE/RECOVER USER XM.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
4RB SPACE 4,10
*** ECS - ALLOCATE/RECOVER USER EXTENDED MEMORY.
*
* *ECS* PERFORMS THE ALLOCATION AND RECOVERY OF USER
* ACCESS EXTENDED MEMORY. THE ALLOCATED XM FOR USER DIRECT
* ACCESS IS MAINTAINED AS A PRESERVED FILE OF TYPE *LIFT* AND
* IS NAMED -**UECS.-. THE FILE IS COMPOSED OF UP TO 5
* SUB-CHAINS. THE FIRST SUB-CHAIN IS ONE TRACK LONG AND IS
* TO GUARANTEE A SYSTEM SECTOR FOR THE ENTIRE CHAIN. EACH
* SUBSEQUENT SUB-CHAIN, UP TO 4, IS COMPOSED OF ENOUGH
* CONTINUOUS TRACKS TO MEET THE SPACE REQUIRMENTS OF ONE
* MACHINES DIRECT ACCESS AREA. THE SYSTEM SECTOR CONTAINS
* INFORMATION DESCRIBING EACH SUB-CHAIN PRESENT.
4RB SPACE 4,10
*** OPERATOR MESSAGES.
*
* **ECSM* ERROR CLEARING USER XM.* = A HARDWARE ERROR OCCURRED
* WHILE ATTEMPTING TO CLEAR A JOB-S EXTENDED MEMORY FIELD
* LENGTH.
*
* *USER EXTENDED MEMORY IMPROPERLY ALLOCATED.* = AN
* INCONSISTENCY HAS BEEN DETECTED, BETWEEN THE REQUESTED USER
* EXTENDED MEMORY SPACE AND ALLOCATION INFORMATION IN THE
* SYSTEM SECTOR, WHILE ATTEMPTING TO RECOVER THE USER
* DIRECT ACCESS SPACE.
*
* *USER EM SPACE UNAVAILABLE.* = THE AMOUNT
* REQUESTED FOR USER EXTENDED MEMORY (VIA THE *XM* ENTRY IN
* *EQPDECK*) IS NOT AVAILABLE.
*
* *USER EXTENDED MEMORY SYSTEM SECTOR ERROR.* = AN ERROR WAS
* DETECTED WHILE READING THE SYSTEM SECTOR FOR THE USER
* EXTENDED MEMORY CHAIN.
4RB SPACE 4,10
**** DIRECT CELL DEFINITIONS LOCAL TO *4RB*.
T8 EQU 26 POINTER TO SUB-CHAIN ENTRY
T9 EQU 27 CURRENT MACHINE ID
KA EQU QS CP/PCP NUMBER
KB EQU QI MCT ENTRY COUNT
AB EQU FN CM WORD BUFFER
****
ECS TITLE MAIN PROCESSING ROUTINE.
ECS SPACE 4,10
** ECS - MAIN ROUTINE.
ORG OVLA
ECS SUBR ENTRY/EXIT
RJM PRS PRESET OVERLAY
LDM TAXM
ZJN ECS1 IF NO ENTRY FOR THIS MACHINE
LDM TAXM+2 GET LENGTH OF USER EXTENDED MEMORY
STD FS+2
ECS1 RJM SDI INTERLOCK ECS
LDM ECSE+ACGL*5+1 CHECK FOR FIRST TRACK OF UEC CHAIN
ZJN ECS2 IF MST NOT INITIALIZED
LJM ECS8 IF SOME USER ECS SPACE ALLOCATED
* INITIALIZE USER EXTENDED MEMORY CHAIN AND MST.
ECS2 LDD FS+2
ZJN ECS4 IF NO USER ECS REQUESTED FOR THIS MACHINE
LDD RS
NJN ECS6 IF NOT LEVEL 0 DEADSTART
RJM ISS INITIALIZE SYSTEM SECTOR
LDM ECSE+ACGL*5+1 END OF CURRENT CHAIN
STD FS+4
LDC BFMS+2+4*5 SET FIRST ENTRY POINTER
STD T8
* ASSIGN USER EXTENDED MEMORY AREA.
ECS3 RJM ACE ASSIGN TRACKS
RJM SSS STORE SYSTEM SECTOR
ECS4 RJM CDI CLEAR INTERLOCK
ECSA RJM SCP SETUP CONTROL POINT AREAS
* UJN *+2 (DURING MMF PROCESSING)
ECS5 LDC 0
ECSB EQU *-1
LMD FS
ZJN ECS7 IF ALLOCATING ON MMF LINK
ECS5.1 LJM ECSX RETURN
* ERROR IN USER EXTENDED MEMORY ALLOCATION.
ECS6 RJM CDI CLEAR INTERLOCK
LDC =C*USER EXTENDED MEMORY IMPROPERLY ALLOCATED.*
LJM HNG ISSUE ERROR AND HANG
* SET UP TO PROCESS MULTIMAINFRAME ALLOCATION.
ECS7 LDC UJNI+2 SET MMF SWITCHES
STM ECSA
LDD HN
ERRNZ 100-LJMI ADJUST IF VALUE CHANGES
STM ECSC
LDC ECS5
STM ECSC+1
RJM CAD CLEAR THIS MACHINES ID AND DATA
RJM FAD FETCH NEW MACHINE ID AND DATA
ZJN ECS5.1 IF NO MORE MACHINES TO ALLOCATE
STD T9
LDM 2,T1 SET NEW USER EXTENDED MEMORY AREA LENGTH
STD FS+2
LJM ECS1 PROCESS ANOTHER MACHINE
* PROCESS EXISTING USER EXTENDED MEMORY CHAIN.
ECS8 RJM CDI CLEAR INTERLOCK ON ECS
RJM FSS FETCH EXISTING SYSTEM SECTOR
RJM FTM FIND THIS MACHINES ENTRY
LDM 2,T8
NJN ECS9 IF SPACE EXISTS FOR THIS MACHINE
LDD FS+2
ZJN ECS12 IF SPACE NOT REQUESTED FOR THIS MACHINE
LDD RS
NJN ECS10 IF NOT LEVEL 0, THEN ERROR
UJN ECS14 LOCATE END OF USER EXTENDED MEMORY CHAIN
* PROCESS EXISTING SUB-CHAIN.
ECS9 LDM 3,T8 SET RAE FROM SYSTEM SECTOR
STD FS+3
LDM 1,T8 SET FIRST TRACK OF SUB CHAIN
STD FS+1
LDD FS+2
NJN ECS13 IF SPACE REQUESTED
LDD RS
ZJN ECS11 IF LEVEL 0 DEADSTART
ECS10 LJM ECS6 REPORT ERROR
* RELEASE EXISTING SUB-CHAIN.
ECS11 RJM RLS RELEASE SPACE
STD T9 CLEAR SUB-CHAIN ENTRY
STD FS+2
RJM SSS STORE UPDATED SYSTEM SECTOR
ECS12 LJM ECS4 COMPLETE PROCESSING
* UPDATE EXISTING SUB-CHAIN.
ECS13 LDM 2,T8
SBD FS+2
ZJN ECS12 IF SPACE MATCHES
LDD RS
NJN ECS10 IF NOT LEVEL 0 DEADSTART, THEN ERROR
ECSC RJM RLS RELEASE SPACE
* LJM ECS5 (DURING MMF PROCESSING)
* FIND LAST TRACK OF USER EXTENDED MEMORY CHAIN.
ECS14 LDD FS SET EQUIPMENT
STD T5
LDM ECSE+ACGL*5+1 SET FIRST TRACK
STD T6
RJM IRA INITIALIZE RANDOM ACCESS PROCESSORS
LDN 0 FORCE TRT UPDATE
RJM SEI SEARCH FOR EOI
LDD T6 SET LAST TRACK
STD FS+4
LJM ECS3 ASSIGN TRACKS
ECSE BSS 3*5 BUFFER FOR MST GLOBAL WORDS
ECSF VFD 42/7H**UECS.,6/0,6/SYFT,6/0
TITLE SUBROUTINES.
ACE SPACE 4,10
** ACE - ASSIGN CONTIGUOUS EXTENDED MEMORY TRACKS.
*
* ENTRY (FS) = EXTENDED MEMORY EST ORDINAL.
* (FS+2) = LENGTH OF USER EXTENDED MEMORY AREA / *EMBS*.
* (FS+4) = LAST TRACK OF CURRENT CHAIN.
*
* EXIT (FS+1) = FIRST TRACK OF SUB-CHAIN.
* (FS+3) = RA/*EMBS* OF USER EXTENDED MEMORY AREA.
* (FS+4) = LAST TRACK OF NEW SUB-CHAIN.
*
* USES CM - CM+7, CN - CN+4, FS+1 - FS+3, T0 - T7.
*
* CALLS CAT, CDI.
ACE17 LDN 0 CLEAR FIELDS
STD FS+1
STD FS+3
ACE SUBR ENTRY/EXIT
LDD FS+2
ZJN ACE17 IF NO USER EXTENDED MEMORY TO BE ALLOCATED
ADN 2
SHN 5
STD T1 ALLOW FOR *EMBS* WORD BLOCKS
SHN -14
STD T6
LDN 0 TRACK COUNT = (FL*40) / 101
STD T7
ACE0 AOD T7 ADVANCE TRACK COUNT
LDC -101
RAD T1
PJN ACE0 IF NOT UNDERFLOW
AOD T1
SOD T6
PJN ACE0 IF NOT END OF CONVERSION
LDN 17
ACEB SHN -4 ADJUST FOR BLOCKING FACTOR
* SHN -4+UESC-EMSC
RAD T7
RJM CDI CLEAR INTERLOCK ON ECS
UJN ACE2 ENTER LOOP
ACE1 LDD NC WRITE MESSAGE TO SYSTEM CONTROL POINT
SHN 7
ADN MS2W
CWM =C*USER EM SPACE UNAVAILABLE.*,TR
ACE2 PAUSE NE
LCN 1 SET TO REQUEST ALL TRACKS
STD CM+4
SHN -14
STD CM+3
LDD FS SET EST ORDINAL
STD CM+1
LDD FS+4 SET CURRENT TRACK
STD CM+2
MONITOR RTCM REQUEST ALL AVAILABLE ECS SPACE
LDD CM+4
ZJN ACE1 IF TRACKS NOT AVAILABLE
RJM CAT CALCULATE FWA OF TRT
STM ACEA+1
SHN -14
ADC ADCI
STM ACEA
* FIND BEST FITTING CONTIGUOUS TRACK CHAIN.
* (T0) = POINTER TO FIRST TRACK OF CHAIN UNDER CONSIDERATION.
* (T1) = FIRST TRACK OF CHAIN UNDER CONSIDERATION.
* (T2) = LENGTH OF CHAIN UNDER CONSIDERATION.
* (T3) = POINTER TO FIRST TRACK OF BEST FIT SO FAR.
* (T4) = FIRST TRACK OF BEST FIT SO FAR.
* (T5) = LENGTH OF BEST FIT SO FAR.
* (T6) = BYTE INDEX.
* (T7) = LENGTH OF TRACK CHAIN REQUESTED.
* (CM) = POINTER TO FIRST TRACK OF LONGEST CHAIN SO FAR.
* (CM+1) = FIRST TRACK OF LONGEST CHAIN SO FAR.
* (CM+2) = LENGTH OF LONGEST CHAIN SO FAR.
LDN ZERL
CRD T0
LDN 0
STD CM
STD CM+1
STD CM+2
LDD NC CLEAR MESSAGE AT SYSTEM CONTROL POINT
SHN 7
ADN MS2W
CWD CM
LCN 0 PRESET AMOUNT OF SLOP IN BEST FIT
STD T5
LDD CM+4 SET FIRST TRACK
LJM ACE9
* SCAN TRT FOR CONTIGUOUS TRACKS.
ACE4 AOD T2 INCREMENT LENGTH OF THIS CHAIN
LDD CM+3 SET BYTE INDEX
LPN 3
STD T6
NJN ACE6 IF NOT POINTER TO NEW WORD
ACE5 LDD CM+3 READ NEW TRT WORD
SHN -2
ACEA ADC TRTS
CRD CN
ACE6 AOD CM+3
LMM CN,T6
ZJN ACE4 IF CONTIGUOUS TRACK
LDD T2 CHECK FOR LONGEST CHAIN
SBD CM+2
MJN ACE7 IF OLD TRACK CHAIN LONGER
RAD CM+2 SET NEW LENGTH
LDD T0 SET POINTER TO FIRST TRACK
STD CM
LDD T1 SET FIRST TRACK
STD CM+1
ACE7 LDD T2 CHECK IF THIS CHAIN LONG ENOUGH
SBD T7
MJN ACE8 IF NOT LONG ENOUGH
SBD T5 COMPARE AMOUNT OF SLOP
PJN ACE8 IF OLD CHAIN HAS LESS SLOP
RAD T5 SET NEW AMOUNT OF SLOP
LDD T0 SET POINTER TO FIRST TRACK
STD T3
LDD T1 SET FIRST TRACK
STD T4
ACE8 SOD CM+3 SET POINTER TO FIRST TRACK OF NEXT CHAIN
STD T0
LDM CN,T6 CHECK FOR EOI
ACE9 SHN 6
PJN ACE10 IF EOI
SHN -6
STD CM+3 SET FIRST TRACK OF NEXT CHAIN TO CHECK
STD T1
LPN 3 SET BYTE INDEX
STD T6
LDN 1
STD T2
LJM ACE5
* COMPLETE PROCESSING.
ACE10 LDD T7 ADJUST TRACK CHAIN LENGTH
RAD T5
LDD T4 CHECK IF LARGE ENOUGH CHAIN FOUND
NJN ACE11 IF CHAIN FOUND
LDD FS+4
UJN ACE14 DROP SHORT TRACK TRAIN
* DROP UNUSED TRACKS.
ACE11 LMD CM+4
ZJN ACE12 IF ONLY NEED TO DROP TRACKS OFF END
LDD FS SET EXTENDED MEMORY EQ NUMBER
STD CM+1
LDD FS+4 SET TRACK TO LINK TO
LPC 3777
STD CM+2
LDD T4 SET FIRST TRACK OF CONTIGUOUS CHAIN
STD CM+3
LDD T3 SET LAST TRACK TO DROP
STD CM+4
MONITOR DLKM
ACE12 LDD T7 CHECK IF ALL REQUEST SPACE FOUND
SBD T5
PJN ACE13 DROP UNNEEDED TRACKS
RAD T5
ACE13 LDD T4 COMPUTE LAST TRACK NEEDED IN CHAIN
ADD T5
SBN 1
ACE14 LPC 3777
STD CM+2
LDD FS SET EXTENDED MEMORY EQ NUMBER
LMC 4000
STD CM+1
LDN 0 SET SECTOR NUMBER
STD CM+3
MONITOR DTKM DROP TRACKS
* COMPUTE RA AND LAST TRACK OF USER EXTENDED MEMORY AREA.
LDD T4 SET FIRST TRACK
NJN ACE15 IF USER EXTENDED MEMORY SPACE FOUND
LJM ISS2 REPORT ERROR
ACE15 STD FS+1
LPC 3777 COMPUTE USER EXTENDED MEMORY RA
STD T6
SHN 6 *100
ADD T6 *101
SHN 1 *202
ADN 77 ROUND TO NEAREST *EMBS* WORDS
SHN -6
STD FS+3 SET USER EXTENDED MEMORY RA
LDN 17 ROUND TO NEAREST *UEBS* WORDS
ACEC SHN -4
* SHN -4+UESC-EMSC
RAD FS+3
LDD T5 COMPUTE USER EXTENDED MEMORY FL
RAD T6
STD FS+4 SET LAST TRACK
SHN 6 *100
ADD T6 *101
SHN -5 *202/100
SBD FS+3 SUBTRACT EXTENDED MEMORY RA
SBD FS+2
PJN ACE16 IF SUFFICIENT SPACE
LJM ECS6 REPORT ERROR
ACE16 LDC 3777 POINT TO LAST TRACK
RAD FS+4
LJM ACEX RETURN
CAD SPACE 4,10
** CAD - CLEAR ALLOCATION DATA.
*
* ENTRY (T9) = ID OF MACHINE TO BE CLEARED.
*
* USES T1.
CAD2 STI T1 CLEAR ENTRY
CAD SUBR ENTRY/EXIT
LDC TAXM
STD T1
CAD1 LDI T1
LMD T9
ZJN CAD2 IF MATCH FOUND
LDN 5
RAD T1
LMC TAXML
NJN CAD1 LOOP
UJN CADX RETURN
CAT SPACE 4,10
** CAT - CALCULATE ADDRESS OF TRT.
*
* ENTRY (CATA) = EXTENDED MEMORY MST ADDRESS / 10.
*
* EXIT (A) = FWA OF TRT - 1000.
*
* USES T0 - T4.
CAT SUBR ENTRY/EXIT
LDC ** READ TRT ADDRESS FROM EXTENDED MEMORY MST
CATA EQU *-1 (ECS MST ADDRESS)
SHN 3
ADN TRLL
CRD T0
LDD T0+3
LPN 77
SHN 14
LMD T0+4
SBD TH 4000/4
UJN CATX RETURN
CDI SPACE 4,10
** CDI - CLEAR DEVICE INTERLOCK ON ECS.
*
* ENTRY (FS) = EXTENDED MEMORY EST ORDINAL.
*
* EXIT (DIFL) = 0.
*
* USES CM - CM+4.
CDI SUBR ENTRY/EXIT
LDM DIFL
ZJN CDIX IF INTERLOCK NOT SET
LDD FS SET EQUIPMENT
STD CM+1
LDN CDIS SET FUNCTION
STD CM+3
LDN 0
STD CM+2
STD CM+4
MONITOR STBM
* LDN 0 CLEAR INTERLOCK FLAG
STM DIFL
UJN CDIX RETURN
CTE SPACE 4,10
** CTE - CREATE MEMORY CONTROL TABLE ENTRY.
*
* ENTRY (KA) = CP/PCP NUMBER.
* (CN) = RAX BACKWARD LINK.
* (CN+1) = RAX FORWARD LINK.
*
* USES AB - AB+4, CM - CM+4.
*
* CALLS SCA.
CTE SUBR ENTRY/EXIT
LDD KA
RJM SCA SET CURRENT CPA/PCPA ADDRESS
ADN ECSW
CRD CM READ MEMORY CONTROL WORD
LDD CM+4
RAD CM+3 FORM RAX + FLX
SHN -14
RAD CM+2 NEXT POTENTIAL RAX
LDD CN+1
ZJN CTE1 IF SYSTEM CP
LMD NC
NJN CTE2 IF NOT LINKED TO SYSTEM CP
CTE1 STD CM+2
UJN CTE3 SET NO UNASSIGNED MEMORY
CTE2 LDD CN+1 GET FORWARD LINKED CP/PCP ADDRESS
RJM SCA
ADN ECSW READ FL CONTROL WORD
CRD AB
LDD AB+2 RAX OF FORWARD LINK
SHN 14
LMD AB+3
SBD CM+3 SUBTRACT CURRENT RAX + FLX
CTE3 STD CN+4
SHN -14
SBD CM+2 SET UNASSIGNED MEMORY
STD CN+3
LDD KA FORM CONTROL TABLE ADDRESS
SHN 1
ADC 1 STORE MCT WORD
CTEA EQU *-1
CWD CN
UJP CTEX RETURN
FAD SPACE 4,10
** FAD - FETCH ALLOCATION DATA.
*
* EXIT (A) = ((T1)) = MACHINE ID,IF ONE FOUND.
* = 0 IF NO ENTRIES IN ALLOCATION DATA.
*
* USES T1.
FAD SUBR ENTRY/EXIT
LDC TAXM
STD T1
FAD1 LDI T1
NJN FADX IF ENTRY FOUND
LDN 5
RAD T1
LMC TAXML
ZJN FADX IF END OF SEARCH
UJN FAD1 LOOP
FSS SPACE 4,10
** FSS - FETCH SYSTEM SECTOR FOR USER EXTENDED MEMORY CHAIN.
*
* ENTRY (ECSE) = MST GLOBAL WORDS.
* (FS) = EXTENDED MEMORY EST ORDINAL.
*
* EXIT (BFMS) = SYSTEM SECTOR FOR USER EXTENDED MEMORY CHAIN.
*
* USES T5, T6.
*
* CALLS CDI, RSS.
FSS1 ENDMS
FSS SUBR ENTRY/EXIT
LDD FS SET EST ORDINAL
STD T5
LDM ECSE+ACGL*5+1 SET FIRST TRACK
STD T6
SETMS IO
LDC ECSF READ SYSTEM SECTOR
RJM RSS
ZJN FSS1 IF NO ERROR IN SYSTEM SECTOR
RJM CDI CLEAR DEVICE INTERLOCK
LDC =C*USER EXTENDED MEMORY SYSTEM SECTOR ERROR.*
UJN HNG ISSUE ERROR AND HANG
FTM SPACE 4,10
** FTM - FIND THIS MACHINES ID IN THE SYSTEM SECTOR.
*
* ENTRY (T9) = MACHINE ID TO BE FOUND.
* (BFMS) = SYSTEM SECTOR FOR USER EXTENDED MEMORY CHAIN.
*
* EXIT (T8) = POINTER TO THIS MACHINES ID OR POINTER TO THE
* FIRST EMPTY SUB-CHAIN ENTRY.
* IF NO MATCH AND NO EMPTY ENTRY THEN EXIT TO *ECS6*
* TO REPORT ERROR CONDITION.
*
* USES T1, T8.
FTM3 LDD T1
NJN FTM4 IF EMPTY ENTRY FOUND
LJM ECS6 REPORT ERROR
FTM4 STD T8 SET POINTER TO EMPTY SUB-CHAIN
FTM SUBR ENTRY/EXIT
LDC BFMS+2+3*5 INITIALIZE POINTERS
STD T8
LDN 0
STD T1
FTM1 LDN 5 INCREMENT POINTER
RAD T8
LMC BFMS+2+10*5
ZJN FTM3 IF END OF SUB-CHAIN ENTRIES
LDI T8
NJN FTM2 IF NOT AN EMPTY ENTRY
LDD T1
NJN FTM1 IF FIRST EMPTY ENTRY ALREADY FOUND
LDD T8 SET POINTER TO EMPTY ENTRY
STD T1
UJN FTM1 LOOP
FTM2 LMD T9
ZJN FTMX IF MATCH FOUND
UJN FTM1 LOOP
HNG SPACE 4,10
** HNG - ISSUE MESSAGE AND HANG.
*
* ENTRY (A) = ERROR MESSAGE ADDRESS.
HNG STM HNGA SAVE MESSAGE ADDRESS
LDN 4
STD T1
LDD NC WRITE MESSAGE TO SYSTEM CONTROL POINT
SHN 7
ADN MS2W
CWM **,T1
HNGA EQU *-1
UJN * HANG
ISS SPACE 4,10
** ISS - INITIALIZE SYSTEM SECTOR FOR USER EXTENDED MEMORY AREA.
*
* ENTRY (FS) = EXTENDED MEMORY EST ORDINAL.
* (CATA) = EXTENDED MEMORY MST ADDRESS / 10.
* (ECSE) = GLOBAL MST WORDS.
*
* EXIT UPDATED GLOBAL MST STORED IN CENTRAL MEMORY.
* SYSTEM SECTOR INITIALIZED.
*
* USES CM - CM+4, FA, T1, T2, T5, T6.
*
* CALLS CDI, DCH, RCH, SDI, SMS, WEI, WSS.
ISS SUBR ENTRY/EXIT
LDC 500 INITIALIZE TO CLEAR SYSTEM SECTOR
STD T1
ISS1 LDN 0 CLEAR SYSTEM SECTOR
STM BFMS+2,T1
SOD T1
NJN ISS1 IF NOT TIME TO MOVE FNT ENTRY
STD FA
LDD MA SET FNT ENTRY IN SYSTEM SECTOR
CWM ECSF,ON
SBN 1
CRM FNSS,ON
RJM CDI CLEAR INTERLOCK ON ECS
LDN ZERL REQUEST FIRST TRACK OF USER ECS CHAIN
CRD CM
LDD FS
STD CM+1
STD T5
MONITOR RTCM
LDD CM+4
NJN ISS3 IF TRACK ASSIGNED
ISS2 LDC =C*USER EXTENDED MEMORY SPACE UNAVAILABLE.*
LJM HNG ISSUE ERROR AND HANG
ISS3 STD T6
RJM SDI INTERLOCK ECS
LDD T6
STM ECSE+ACGL*5+1 SET FIRST TRACK IN GLOBAL DATA
LDM CATA SET FIRST TRACK IN MST
SHN 3
ADN ACGL
CWM ECSE+ACGL*5,ON
RJM CDI CLEAR INTERLOCK ON ECS
SETMS IO
RJM WSS WRITE SYSTEM SECTOR
RJM WEI WRITE EOI
ENDMS
LDD T6 PRESERVE USER EXTENDED MEMORY AREA
STD CM+2
LDN SPFS
STD CM+3
LDD FS SET EXTENDED MEMORY EQUIPMENT
ADC 4000 SET CHECKPOINT REQUEST
STD CM+1
MONITOR STBM
LJM ISSX RETURN
RLS SPACE 4,10
** RLS - RELEASE EXISTING USER EXTENDED MEMORY SUB-CHAIN.
*
* ENTRY (BFMS) = SYSTEM SECTOR FOR USER EXTENDED MEMORY CHAIN.
* (ECSE) = GLOBAL MST WORDS.
* (FS) = EXTENDED MEMORY EST ORDINAL.
* (T8) = POINTER TO SUB-CHAIN ENTRY TO BE RELEASED.
*
* EXIT (A) = (FS+1) = (FS+3) = (FS+4) = 0.
* TO *ECS6* IF UNABLE TO LOCATE PREDECESSOR TRACK FOR
* SUB-CHAIN TO BE RELEASED.
*
* USES CM - CM+4, T1, T3.
*
* CALLS CAT.
RLS SUBR ENTRY/EXIT
RJM CAT CALCULATE FWA OF TRT
STM RLSA+1
STM RLSB+1
SHN -14
LMC ADCI
STM RLSA
STM RLSB
LDC BFMS+2+3*5+4 INITIALIZE FOR SEARCH
STD T3
LDM ECSE+ACGL*5+1
STI T3
* LOCATE PREDECESSOR TRACK OF SUB-CHAIN TO BE RELEASED.
RLS1 LDI T3 READ TRT WORD CONTAINING THIS TRACK
SHN -2
RLSA ADC TRTS
CRD CM
LDI T3 SET BYTE INDEX
LPN 3
STD T1
LDM CM,T1 CHECK LINK
LMM 1,T8
ZJN RLS2 IF PREDECESSOR TRACK FOUND
LDN 5
RAD T3
LMC BFMS+2+10*5+4
NJN RLS1 IF MORE ENTRIES TO SEARCH
LJM ECS6 REPORT ERROR
* LOCATE SUCCESSOR TRACK TO SUB-CHAIN TO BE RELEASED.
RLS2 LDM 4,T8 FIND TRACK TO LINK TO
SHN -2
RLSB ADC TRTS
CRD CM
LDM 4,T8
LPN 3
STD T1
LDM CM,T1
SHN 21-13
PJN RLS3 IF LAST TRACK IN CHAIN
* DELINK SUB-CHAIN.
SHN -6 SET TRACK TO BE LINKED
STD CM+3
LDI T3 SET TRACK TO LINK TO
LPC 3777
STD CM+2
LDM 4,T8 SET LAST TRACK TO DROP
STD CM+4
LDD FS SET EST ORDINAL
ADC 4000 SET CHECKPOINT REQUEST
STD CM+1
MONITOR DLKM
UJN RLS4 COMPLETE PROCESSING
* DROP LAST SUB-CHAIN.
RLS3 LDI T3 GET PREDECESSOR TRACK
LPC 3777 SET TO DROP AFTER THIS TRACK
STD CM+2
LDN 0
STD CM+3
STD CM+4
LDD FS SET EST ORDINAL
ADC 4000 SET CHECKPOINT REQUEST
STD CM+1
MONITOR DTKM
* COMPLETE RELEASE SUB-CHAIN PROCESSING.
RLS4 LDN 0 CLEAR TRACK POINTERS
STD FS+1
STD FS+4
STD FS+3 CLEAR RA OF RELEASED SUB-CHAIN
LJM RLSX RETURN
SCP SPACE 4,10
** SCP - SETUP CONTROL POINT AREAS.
*
* ENTRY (FS+2) = LENGTH OF USER EXTENDED MEMORY AREA / *EMBS*.
* (FS+3) = RA/*EMBS* OF USER EXTENDED MEMORY AREA.
* (NC) = NUMBER OF CONTROL POINTS.
* (NS) = NUMBER OF CP-S + PCP-S.
*
* EXIT *ECRL* SETUP IN CMR, ALL CONTROL POINT AREAS SETUP.
*
* USES T1, T2, T7, CM - CM+4, FS+1 - FS+4.
*
* CALLS SMT.
SCP SUBR ENTRY/EXIT
LDD FS+2
STD FS+1
LDN ECRL COMPLETE BUILD OF *ECRL*
CRD CM
LDN 0 CLEAR EXTENDED MEMORY EQUIPMENT
STD CM
LDD FS+3 SET USER EXTENDED MEMORY RA
SCPA SHN 0
* SHN EMSC-UESC
STD FS+3
STD CM+3
SHN -14
STD FS+2
STD CM+2
LDN ECRL
CWD CM
LDD FS+1
ZJN SCPX IF NO USER ECS IN ECS EQUIPMENT
LDD CM+4
STD FS+4 SAVE USER XM RESERVED FOR CP 0
LDN ZERL
CRD CM
LDN CPNS SETUP CONTROL POINT AREAS
STD T7
LDD FS+2
SHN 14
ADD FS+3 SET XM RA IN CONTROL POINT WORK AREA
ADD FS+4
SCP2 STD CM+3
SHN -14
STD CM+2
SCP3 LDD T7 FORM CONTROL POINT ADDRESS
SHN 7
ADN ECSW SET ECS RA IN CONTROL POINT AREA
CWD CM
AOD T7
SBD NC
ZJN SCP4 IF SYSTEM CP
ADD NC
LMN 2
NJN SCP3 IF NOT SECOND CP
LDD FS+1
SCPB SHN 0
* SHN EMSC-UESC
ADD FS+3 ALLOCATE XM FL BETWEEN 1ST AND 2ND CP-S
SHN 6
LMD FS+2
SHN 14
UJN SCP2 SETUP SECOND CP AREA
SCP4 LDD FS+2 SETUP *ECSW* FOR SYSTEM CONTROL POINT
STD CM+2
LDD FS+3
STD CM+3
LDD FS+1
SCPC SHN 0
* SHN EMSC-UESC
STD CM+4
LDD NC
SHN 7
ADN ECSW
CWD CM
LDD NS SET NUMBER OF PSEUDO CONTROL POINTS
SBD NC
ZJN SCP6 IF NO PCP-S
STD T2
* SET UP PSEUDO CONTROL POINT AREAS.
LDD NC INITIALIZE PCP NUMBER
STD T1
SBN CPLK CP LINK TO PCP-S
SHN 7
ADN ECSW GET FLX CONTROL WORD
CRD CM
SCP5 AOD T1 ADVANCE AND SET PCPA ADDRESS
RJM SCA
ADN ECSW STORE FLX CONTROL WORD
CWD CM
SOD T2
NJN SCP5 IF MORE PCP-S
SCP6 RJM SMT
LDN ACML
CRD CM
LDD FS+1 SET UNASSIGNED USER XM
SCPF SHN 0
* SHN EMSC-UESC
SBD FS+4 ADJUST FOR USER XM RESERVED FOR CP 0
STD CM+3
LDN ACML STORE AVAILABLE USER XM
CWD CM
LDD FS+4
NJN SCP8 IF USER XM FOR CP 0
SCP7 LJM SCPX RETURN
SCP8 SHN 11 CONVERT TO WORD COUNT
SCPD SHN 0
* SHN EMSC-UESC
STD T2
SHN -14
STD T1
LDN ZERL CLEAR THE MESSAGE BUFFER
CRD CM
LDD MA
CWM CM,ON
CWM CM,ON
CWM CM,ON
CWM CM,ON
SCP9 LDD T1 CLEAR XM BUFFER
SHN 14
LMD T2
SBN 4
MJN SCP7 IF END OF BUFFER
STD CM+4
STD T2
SHN -14
STD T1
LMC WRES*1000 MERGE SUBFUNCTION
STD CM+3
LDD MA SET CM ADDRESS
STD CM+2
LDC 300 SET WORD COUNT-1
STD CM+1
MONITOR ECSM
LDD CM+1
ZJN SCP9 IF NO ERROR
LDC SCPE
RJM ERR DISPLAY MESSAGE AND HANG
SCPE DATA C+*ECSM* ERROR CLEARING USER XM.+
SDI SPACE 4,10
** SDI - SET DEVICE INTERLOCK ON ECS.
*
* ENTRY (FS) = EXTENDED MEMORY EST ORDINAL.
*
* EXIT (ECSE) = MST GLOBAL WORDS.
* (CATA) = EXTENDED MEMORY MST ADDRESS / 10.
* (DIFL) = 1.
*
* USES CM - CM+4.
*
* MACROS MONITOR, SFA.
SDI1 SFA EST,FS
ADK EQDE
CRD CM
LDD CM+4 READ MST GLOBAL WORDS
STM CATA
SHN 3
ADK TDGL
CRM ECSE,TR
SDI SUBR ENTRY/EXIT
LDC 0
DIFL EQU *-1 DEVICE INTERLOCKED FLAG (CLEARED BY *CDI*)
NJN SDI1 IF DEVICE INTERLOCKED
STD CM+2
STD CM+4
LDD FS SET EQUIPMENT
STD CM+1
LDN SDIS SET FUNCTION
STD CM+3
MONITOR STBM
AOM DIFL SET INTERLOCKED FLAG
UJN SDI1 READ MST GLOBAL WORDS
SMT SPACE 4,10
** SMT - SETUP MEMORY CONTROL TABLE.
*
* ENTRY (NC) = SYSTEM CP NUMBER.
* (NS) = NUMBER OF CP-S + PCP-S.
*
* USES T5, KA, KB, CN - CN+4.
*
* CALLS CTE.
SMT SUBR ENTRY/EXIT
LDN 0
STD KA INITIALIZE CP NUMBER
CRD CN
LDD NS SET MCT ENTRY COUNT
ADN 1
STD KB INCLUDE CP-0
STD T5
SMT1 LDD KA
STD CN SET BACKWARD LINK
LDD CN+1
STD KA CURRENT = PREVIOUS FORWARD LINK
LMD NC
ZJN SMT3 IF CREATING ENTRY FOR SYSTEM CP
AOD CN+1
ADN CPLK CHECK NEW FORWARD LINK
SBD NC
NJN SMT2 IF NOT CP TO LINK TO PCP-S
LDD NC
ADN 1 SET FIRST PCP NUMBER
STD CN+1
SMT2 LDD CN+1 CHECK NEW FORWARD LINK
LMD T5
NJN SMT4 IF NOT LINKING OUT OF PCP-S
LDD NC
SBN CPLK SET FORWARD LINK TO REAL CP
SMT3 STD CN+1
SMT4 RJM CTE CREATE TABLE ENTRY FOR XM
SOD KB
NJN SMT1 IF NOT END OF TABLE
UJP SMTX RETURN
SSS SPACE 4,10
** SSS - STORE SYSTEM SECTOR FOR USER EXTENDED MEMORY CHAIN.
*
* ENTRY (ECSE) = MST GLOBAL WORDS.
* (FS) = EXTENDED MEMORY EST ORDINAL.
* (FS+1) = FIRST TRACK OF SUB-CHAIN.
* (FS+2) = LENGTH OF USER EXTENDED MEMORY AREA.
* (FS+3) = RA OF USER EXTENDED MEMORY AREA.
* (FS+4) = LAST TRACK OF SUB-CHAIN.
* (T8) = POINTER TO SUB-CHAIN DESCRIPTOR ENTRY.
* (T9) = MMF MACHINE ID FOR CHAIN.
* = 0 IF SUB-CHAIN ENTRY TO BE CLEARED.
*
* EXIT SYSTEM SECTOR UPDATED WITH NEW INFORMATION.
*
* USES FA, T5, T6.
*
* CALLS WSS.
*
* MACROS ENDMS, SETMS.
SSS SUBR ENTRY/EXIT
LDD FS SET EST ORDINAL
STD T5
LDM ECSE+ACGL*5+1 SET FIRST TRACK
STD T6
LDD T9 SET MMF ID
NJN SSS1 IF NOT CLEARING ENTRY
LDD T8
STM SSSA
LDN ZERL
CRM **,ON
SSSA EQU *-1
UJN SSS2 WRITE SECTOR
SSS1 STI T8
LDD FS+1 SET FIRST TRACK OF USER ECS AREA
STM 1,T8
LDD FS+2 SET LENGTH OF USER EXTENDED MEMORY AREA
STM 2,T8
LDD FS+3 SET RA OF USER EXTENDED MEMORY AREA
STM 3,T8
LDD FS+4 SET LAST TRACK OF USER ECS
STM 4,T8
SSS2 SETMS IO,DF
LDN 0 SET FNT DATA PRESTORED
STD FA
RJM WSS WRITE SYSTEM SECTOR
ENDMS
LJM SSSX RETURN
SPACE 4,10
OVERFLOW ECSX,BFMS
PRS SPACE 4,10
** PRS - PRESET PROGRAM.
*
* ENTRY (FS) = BYTE 0 OF *ECRL* = EM EST ORDINAL FROM *SET*.
* (FS+1) = USER XM SIZE / *UEBS*.
* (FS+2 - FS+3) = USER XM RA / *UEBS*.
* (RS) = RECOVERY STATUS.
* TAXM = EM ALLOCATION TABLE GENERATED BY *SET*.
*
* EXIT (FS+2) = USER XM SIZE / *EMBS*.
* (FS+3) = USER XM RA / *EMBS*.
* (T9) = MACHINE ID.
*
* USES CM - CM+4, CN - CN+4, T5 - T7.
PRS SUBR ENTRY/EXIT
LDN MEFL
CRD T5 GET XM SHIFT COUNTS
ADN MMFL-MEFL
CRD CN FETCH MMF STATUS
ADN MCTP-MMFL
CRD CM READ MCT POINTER
LDD CM+1
RAM CTEA
SHN -14 SET MCT ADDRESS
ADD CM
RAM CTEA-1
LDD T7 EXTRACT USER XM SHIFT COUNT *UESC*
SHN -11
STD T9
LDD T7 EXTRACT XM SHIFT COUNT *EMSC*
SHN -5
LPN 3
STD T0
SBD T9
LPN 77 PRESET SHIFT INSTRUCTIONS
RAM SCPA
STM SCPB
STM SCPC
STM SCPD
STM SCPF
LMN 77
STM PRSA
STM PRSB
LDD T9
SBD T0
RAM ACEB
STM ACEC
LDD FS+2 ADJUST USER XM RA
SHN 14
ADD FS+3
PRSA SHN 0
* SHN UESC-EMSC
STD FS+3
LDD FS+1 ADJUST USER XM FL VALUE
PRSB SHN 0
* SHN UESC-EMSC
STD FS+2
LDD CN+1 CHECK ALLOCATING ON LINK DEVICE
LPC 777
STM ECSB
LDD CN SAVE MACHINE ID
STD T9
UJP PRSX RETURN
QUAL
TTL REC/4RC - RECOVER CHANNEL/EQUIPMENT STATUS.
TITLE
QUAL RCE
IDENT 4RC,RCEX
*COMMENT REC - RECOVER CHANNEL/EQUIPMENT STATUS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SPACE 4,10
*** RCE - RECOVER CHANNEL/EQUIPMENT STATUS.
*
* RCE WILL READ THE CHANNEL INTERLOCK TABLES AND THE
* EQUIPMENT STATUS TABLE (EST) FROM THE CHECKPOINT FILE.
* THE FOLLOWING ITEMS MUST BE RESTORED TO THE STATUS THAT
* EXISTED BEFORE THE RECOVERY.
* 1. CHANNELS THAT ARE GLOBALLY DOWN.
* 2. CHANNELS THAT ARE DOWN FOR A SPECIFIC EQUIPMENT, BUT
* ARE NOT GLOBALLY DOWN.
* 3. CHANNELS THAT ARE ASSIGNED TO EJT ORDINALS.
* 4. EQUIPMENTS THAT ARE DOWN. THE DATA TO BE RESTORED
* INCLUDES THE DOWN, UNAVAILABLE AND OFF BITS IN THE
* EST, AND GLOBAL DOWN, GLOBAL UNLOAD, UNLOAD
* REQUESTED AND UNLOADED BITS IN THE MST.
RCE SPACE 4,10
*** ENTRY CONDITIONS.
*
* (SE) = EST ORDINAL OF CHECKPOINT FILE.
* (RECE) = FIRST TRACK OF CHECKPOINT FILE.
SPACE 4,10
ORG OVLA
SPACE 4,10
** RCE - MAIN ROUTINE.
RCE SUBR ENTRY/EXIT
LDD RS
LPN SYMK CHECK RECOVERY LEVEL
LMN SYCM
ZJN RCE1 IF CM RECOVERY
LDD CE
STD T5 CHECKPOINT DEVICE EST ORDINAL
SETMS IO
LDM RECE SET FIRST TRACK OF CHECKPOINT FILE
STD T6
LDN 3 SET SECTOR OF EST
STD T7
RJM PET PROCESS EST
RJM PCH PROCESS CHANNEL TABLES
RCE1 RJM RSE RELEASE SYSTEM ASSIGNED EQUIPMENT
UJP RCEX RETURN
TITLE SUBROUTINES.
CDS SPACE 4,10
** CDS - CHECK DEVICE STATUS.
*
* ENTRY (T5) = EST ORDINAL.
* (CA) = BUFFER ADDRESS OF EST ENTRY.
*
* MACROS SMSTF.
CDS1 LDI CA CHECK PREVIOUS RECOVERY STATUS
SHN 21-6
PJN CDSX IF DEVICE AVAILABLE
CDS2 SMSTF LUNL SET UNLOAD REQUESTED
SMSTF LDUL SET DEVICE UNLOADED
CDS SUBR ENTRY/EXIT
LDI CA
SHN 21-13
PJN CDSX IF NOT MS DEVICE
SHN 14
LPN 3 CHECK DEVICE STATE
LMN 3
NJN CDS1 IF NOT DOWN
SMSTF GUNL SET GLOBAL UNLOAD
UJN CDS2 SET LOCAL MST STATUS
DDC SPACE 4,10
** DDC - DETERMINE DOWN CHANNELS.
*
* ENTRY (CA) = ADDRESS OF EST ENTRY IN BUFFER.
*
* EXIT ANY CHANNEL MARKED AS DOWN ON THE CHECKPOINT FILE
* WILL BE SET DOWN IN THE CM COPY OF THE EST ENTRY.
*
* USES T1, T2, CM - CM+4.
*
* CALLS ISF.
*
* MACROS MONITOR.
DDC4 AOD T1 ADVANCE CHANNEL BYTE ADDRESS
LMD T2
NJN DDC1 IF ANOTHER CHANNEL TO CHECK
DDC SUBR ENTRY/EXIT
LDD CA
ADN 1 SET CHANNEL BYTE ADDRESS
STD T1
ADN 2 SET END OF PATH DESCRIPTORS
STD T2
DDC1 LDI T1
ZJN DDC4 IF ACCESS UNDEFINED
SHN 0-11
LMN 4
DDC2 ZJN DDC4 IF CHANNEL PRESENT AND UP
LPN 3
ZJN DDC3 IF CHANNEL AVAILABLE
LDN DNCS
RJM ISF DOWN THE CHANNEL
DDC3 LDI T1
SHN 0-13
NJN DDC4 IF CHANNEL PRESENT
LDN DAPS
STD CM+3
LDD EO SET EST ORDINAL
STD CM+1
LDI T1
LPN 77
STD CM+2
MONITOR SCSM DISABLE ACCESS PATH
* LDN 0
UJP DDC4 CHECK FOR ALTERNATE ACCESS
IEQ SPACE 4,10
** IEQ - IDENTIFY EQUIPMENT.
*
* ENTRY (CA) = BUFFER ADDRESS OF EST ENTRY.
* (T5) = EST ORDINAL.
* (CN - CN+4) = EST ENTRY FROM CMR.
*
* MACROS SFA.
IEQ SUBR ENTRY/EXIT
LDD CA
ADN EQAE*5
STM IEQA
SFA EST,T5 REWRITE *EQAE* WORD OF EST ENTRY
ADK EQAE
CWM **,ON
IEQA EQU *-1
LDI CA
SHN 21-13
MJN IEQX IF MS DEVICE
LDM 3,CA
STD CN+3
SFA EST,T5 PRESERVE DEVICE MNEMONIC
ADK EQDE
CWD CN
UJP IEQX RETURN
ISF SPACE 4,10
** ISF - ISSUE *SEQM* FUNCTION.
*
* ENTRY (A) = *SEQM* SUBFUNCTION.
* (T1) = CHANNEL DESCRIPTOR ADDRESS.
* (EO) = EST ORDINAL.
*
* EXIT (A) = 0.
* (CM+1) = *SEQM* STATUS.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
ISF SUBR ENTRY/EXIT
STD CM+2
LDD EO SET EST ORDINAL
STD CM+1
LDI T1 SET CHANNEL NUMBER
LPN 77
STD CM+3
LDN 0 CLEAR MUX CHANNEL INDICATOR
STD CM+4
MONITOR SEQM MODIFY PATH DESCRIPTOR
* LDN 0
UJN ISFX RETURN
PCH SPACE 4,10
** PCH - PROCESS CHANNEL TABLES.
*
* ENTRY SYSTEM FILE POSITIONED TO CHANNEL TABLES.
*
* EXIT CHANNEL EJT ASSIGNMENT TABLE RESTORED.
*
* USES T1, CM - CM+4.
*
* CALLS RNS.
*
* MACROS ENDMS.
PCH SUBR ENTRY/EXIT
LDC BFMS READ CHANNEL TABLES
RJM RNS
ENDMS
LDN CTALL SET TABLE LENGTH
STD T1
LDC CHTP GET CHANNEL TABLE POINTER
CRD CM
LDD CM+2
SHN 14
ADD CM+3
ADK CTALL
CWM BFMS+2+CTALL*5,T1 RESTORE CHANNEL ASSIGNMENT TABLE
UJN PCHX RETURN
PET SPACE 4,10
** PET - PROCESS EST.
*
* ENTRY SYSTEM FILE POSITIONED TO EST SECTOR.
*
* EXIT FOR ALL EQUIPMENTS WITH DOWN STATUS SET,
* THE DOWN, OFF, AND UNAVAILABLE BITS WILL BE
* SET IN THE EST, AND THE GLOBAL
* UNLOAD, UNLOAD REQUESTED, AND UNLOAD PROCESSED
* BITS WILL BE SET IN THE MST.
* FOR EQUIPMENTS WITH A CHANNEL DOWN ON THE CHECKPOINT
* FILE, BUT NOT IN THE CM EST (CHANNEL IS NOT GLOABALLY
* DOWN), THE CHANNEL DOWN STATUS IS RESET WITH A *SEQM*
* FUNCTION.
*
* USES CA, EO, LM, T3, T5, CN - CN+4.
*
* CALLS CDS, DDC, IEQ, RNS, SES.
*
* MACROS ENDMS, SETMS, SFA.
PET2 AOD EO ADVANCE EST ORDINAL
STD T5
ERRNZ ESTE/2*2-ESTE CODE ASSUMES INTEGRAL EST-S PER PRU
LDN 5*ESTE ADVANCE BUFFER ADDRESS
RAD CA
SFA EST,EO GET EST ENTRY FROM CMR
ADK EQDE
CRD CN
RJM IEQ IDENTIFY EQUIPMENT
RJM SES
RJM DDC
RJM CDS CHECK DEVICE STATUS
PET4 LCN ESTE DECREMENT WORD COUNT
RAD LM
PJN PET2 IF NOT END OF SECTOR
LDD CE RESET CHECKPOINT DEVICE EST ORDINAL
STD T5
LDD T3 CHECK EST SECTOR
SHN -6
NJN PET1 IF NOT EOR
PET SUBR ENTRY/EXIT
LCN 0
STD EO
PET1 LDC BFMS+2-5*ESTE INITIALIZE BUFFER POINTER
STD CA
ADN 5*ESTE-2 READ NEXT SECTOR OF EST
RJM RNS
STD LM
ENDMS
LDD LM SET SECTOR WORD COUNT
STD T3
NJN PET4 IF NOT EMPTY SECTOR
UJN PETX RETURN
RSE SPACE 4,10
** RSE - RELEASE SYSTEM ASSIGNED EQUIPMENT.
*
* USES T5, T6, T7, CM - CM+4, FS - FS+4.
*
* MACROS SFA.
RSE2 LDD CP
ADN EACW UPDATE EQUIPMENT ASSIGNED COUNT WORD
CWD FS
RSE SUBR ENTRY/EXIT
LDD CP
ADN EACW GET EQUIPMENT ASSIGNED COUNT WORD
CRD FS
LDN ESTP
CRD T7-2 FETCH EST POINTERS
RSE1 SOD T7
MJN RSE2 IF EST SCAN COMPLETE
SFA EST
ADK EQAE READ EST ASSIGNMENT WORD
CRD CM
LDD CM+4 CHECK ASSIGNMENT
LMC 7777
NJN RSE1 IF NOT SYSTEM
STD CM+4
STD FS CLEAR EQUIPMENT ASSIGNED COUNT
SFA EST,T7
ADK EQAE CLEAR SYSTEM ASSIGNMENT
CWD CM
UJN RSE1 CONTINUE EST SCAN
SES SPACE 4,10
** SES - SET EQUIPMENT STATE.
*
* ENTRY (EO) = EST ORDINAL.
* (CA) = BUFFER ADDRESS OF EST ENTRY.
* (CN - CN+4) = EST ENTRY FROM CMR.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
SES SUBR ENTRY/EXIT
LDI CA
LMD CN COMPARE EQUIPMENT STATE
LPN 3
ZJN SESX IF NO CHANGE
LDI CA
LPN 3 EXTRACT PREVIOUS STATE
STD CM+2
ERRNZ ONES CODE DEPENDS ON VALUE
ERRNZ IDES-1 CODE DEPENDS ON VALUE
ERRNZ OFES-2 CODE DEPENDS ON VALUE
ERRNZ DWES-3 CODE DEPENDS ON VALUE
LDD EO
STD CM+1 RESTORE EQUIPMENT STATE
MONITOR SEQM
UJN SESX RETURN
SPACE 4,10
** COMMON DECKS.
QUAL$ EQU 1 DO NOT QUALIFY COMMON DECKS
*CALL COMPTGB
*CALL COMPTLB
SPACE 4,10
ERRPL *-BFMS OVERFLOW INTO BUFFER
SPACE 4,10
QUAL
TTL REC/4RD - CONTROL POINT RECOVERY ROUTINES.
TITLE
QUAL CPR
IDENT 4RD,CPRX
*COMMENT REC - CONTROL POINT RECOVERY ROUTINES.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
CPR SPACE 4,10
*** CPR - CONTROL POINT RECOVERY ROUTINES.
CPR SPACE 4,10
ORG OVLA
CPR SUBR ENTRY/EXIT
UJN CPRX RETURN AFTER LOAD
SPACE 4,10
** COMMON DECKS.
LIST X
*CALL COMPVEI
LIST *
TITLE SUBROUTINES.
UQE SPACE 4,15
** UQE - UPDATE QFT ENTRY.
*
* ENTRY (EO) = EJT ORDINAL IF PROCESSING CONTROL POINTS.
* = 0 IF PROCESSING QFT.
* (FS - FS+4) = FST INFORMATION.
*
* USES T5, T6.
*
* CALLS RSS.
*
* MACROS ENDMS, SETMS, SFA.
UQE SUBR ENTRY/EXIT
LDD FS SET EQUIPMENT
STD T5
LDD FS+1 SET FIRST TRACK
STD T6
SETMS IO
LDN 0 READ SYSTEM SECTOR
RJM RSS
NJN UQEX IF SYSTEM SECTOR ERROR
ENDMS
LDD EO
ZJN UQE1 IF PROCESSING QFT
STM IOSS+5*ENTQ+4
LDN 2
UQE1 STD T5
LDM IOSS+5*JSNQ+4 SET/CLEAR EJT ASSIGNMENT
SCN 7
LMD T5
STM IOSS+5*JSNQ+4
LDN QFTE LENGTH OF QFT ENTRY
STD T6
SFA QFT,GQSS STORE QFT ENTRY
CWM IOSS,T6
LJM UQEX RETURN
VEI SPACE 4,15
** VEI - VALIDATE EOI FOR MASS STORAGE FILE.
*
* ENTRY (FA) = FNT INDEX.
* (QT) = FILE TYPE.
* (FS - FS+4) = FST INFORMATION.
*
* USES QI, T6.
*
* CALLS CLF, C2D, IRA, RDC, RSS, WEI, WSS.
*
* MACROS ENDMS, SETMS, SFA.
VEI5 LDD QI RESTORE FNT ORDINAL
STD FA
VEI6 ENDMS RELEASE CHANNEL
VEI SUBR ENTRY/EXIT
LDD FS
ZJN VEIX IF NULL EQUIPMENT
STD T5
SFA EST READ EST ENTRY
ADK EQDE
CRD CM
LDD CM
SHN 0-13
ZJN VEIX IF NOT MASS STORAGE
LDD FS+1
ZJN VEIX IF FILE NOT USED
STD T6 SET FIRST TRACK
SHN -6 PUT STARTING TRACK IN MESSAGE
RJM C2D
STM VEIC
LDD T6
RJM C2D
STM VEIC+1
LDD T5 PUT EST ORDINAL IN MESSAGE
SHN -3
RJM C2D
STM VEIB
LDD T5
LPN 7
SHN 6
ADC 2R0,
STM VEIB+1
LDC DSCP*CPAS+MS1W DISPLAY MESSAGE
CWM VEIA,TR
SBN 1 SAVE ADDRESS FOR *RDC* MESSAGE
STM RDCA
RJM IRA INITIALIZE RANDOM ACCESS PROCESSORS
SETMS IO,RW
LCN 1 READ DISK CHAIN
RJM RDC
NJN VEI2 IF LENGTH/LINKAGE/DISK ERROR
VEI1 LJM VEI6 RETURN
VEI2 RJM CLF CHANGE LENGTH OF FILE IN TRT
LDD FS+4
NJN VEI3 IF NO REWRITE OF EOI REQUIRED
RJM WEI WRITE EOI
VEI3 LDD QT CHECK FILE TYPE
LMN PMFT
NJN VEI1 IF NOT DIRECT ACCESS PERMANENT FILE
LDD FS+1 SET FIRST TRACK
STD T6
LDD FA SAVE FNT ORDINAL
STD QI
SETMS POSITION
* LDN 0 SELECT NO FILE NAME VERIFICATION
STD FA
RJM RSS READ SYSTEM SECTOR
NJN VEI4 IF SYSTEM SECTOR ERROR
LDM /COMSPFM/CTSS+/COMSPFM/FCEC SET ERROR FLAG IN SS
LPC 7077
LMC 400
STM /COMSPFM/CTSS+/COMSPFM/FCEC
RJM WSS REWRITE SYSTEM SECTOR
VEI4 LJM VEI5 RESTORE FNT ORDINAL
VEIA DATA H* VERIFY EQ*
VEIB DATA H*000, A*
VEIC DATA C*0000.*
SPACE 4,10
OVLC EQU *+5 ORIGIN FOR *4RF*
ABT SPACE 4,10
** ABT - ABORT CM RECOVERY.
*
* ENTRY (PN) = CP/PCP NUMBER.
*
* EXIT TO *ERR*.
*
* USES PN.
*
* CALLS C2D.
ABT LDD PN CHECK CP NUMBER
SBD NC
MJN ABT1 IF REAL CP
ZJN ABT1 IF SYSTEM CP
SBN 1
STD PN SAVE PCP OFFSET
SOM ABTA
ABT1 LDD PN CONVERT CP/PCP NUMBER
RJM C2D
STM ABTB+1 SET NUMBER IN MESSAGE
LDC ABTB
ABTA EQU *-1
LJM ERR DISPLAY ERROR AND HANG
DATA 2H P
ABTB DATA C*CP00 CPA/MOVING.*
CRS SPACE 4,20
** CRS - CHECK ROLLIN/ROLLOUT STATUS.
*
* ENTRY (PN) = CP/PCP NUMBER.
*
* EXIT CONTROL POINT RELEASED IF JOB ROLLING IN.
* TO *ABT* IF PSEUDO-ROLLIN OR PSEUDO-ROLLOUT IN
* PROGRESS.
* *REC* ASSIGNED TO CP IF CP BEING RECOVERED.
* (A) = (EO) = EJT ORDINAL IF CP/PCP ASSIGNED.
* (A) = (EO) = 0 IF CP/PCP NOT ASSIGNED.
* (CP) = REAL CPA ADDRESS.
* (CN - CN+4) = *FLSW* WORD FROM CP/PCP AREA.
* (FN - FN+4) = *STSW* WORD WITH -
* ERROR FLAG SET AS REQUIRED.
* ROLLOUT FLAGS CLEARED.
*
* USES EO, QA, T6, T7, CA - CA+4, CN - CN+4, FN - FN+4,
* FS - FS+4.
*
* CALLS CSR, DEF, REJ, RJQ, RPJ, RSJ, SCA.
*
* MACROS MONITOR, SFA.
CRS SUBR ENTRY/EXIT
* GET CP/PCP PARAMETERS.
LDD PN SET CP/PCP ADDRESS
RJM SCA
ADN TFSW FETCH EJT ORDINAL
CRD EO
ERRNZ EO+1-CA CODE DEPENDS ON VALUE
SBN TFSW-STSW READ CONTROL POINT STATUS WORD
CRD FN
ADN FLSW-STSW READ FL PARAMETERS
CRD CN
LDD EO
ZJN CRSX IF CONTROL POINT UNASSIGNED
* GET EJT PARAMETERS AND CLEAR ROLLOUT FLAGS IF NOT PCP.
STD QA
SFA EJT READ EJT PARAMETERS
ADK JSNE
CRD FS
ADN SCHE-JSNE
CRD CA
LDD NC
SBD PN
MJN CRS1 IF PCP
LDN 0 CLEAR ROLLOUT FLAGS
STD FN+2
LDD PN SET CP/PCP ADDRESS
RJM SCA UPDATE *STSW*
ADN STSW
CWD FN
LDD FS+4 CLEAR JOB ADVANCE TO ALLOW *CCAM*
LPC 7677
STD FS+4
SFA EJT,EO
ADK JSNE
CWD FS
LDD PN
STD CM+1
MONITOR CCAM CHANGE ASSIGNMENT TO CP BEING RECOVERED
* CALL JOB STATUS PROCESSOR.
CRS1 LDD FS+4 EXTRACT JOB STATUS
SHN -1
LPN 37
STD T6
SBN MXJS
MJN CRS2 IF VALID STATUS
RJM DEF DETERMINE ERROR FLAG
UJN CRS3 UPDATE CP/PCP STATUS
CRS2 LDM TJRP,T6
ZJN CRS3 IF PROCESSOR UNDEFINED
STD T7
* EXIT TO PROCESSOR WITH -
* (PN) = CP/PCP NUMBER.
* (CP) = CPA ADDRESS IF REAL CP.
* (EO) = (QA) = EJT ORDINAL.
* (FS - FS+4) = *JSNE* WORD OF EJT ENTRY.
* (CA - CA+4) = *SCHE* WORD OF EJT ENTRY.
* (FN - FN+4) = CONTROL POINT AREA *STSW* WORD.
RJM 0,T7 RECOVER JOB
* RETURN WITH CONTROL POINT ASSIGNED STATUS.
CRS3 LDD EO
LJM CRSX RETURN
TJRP SPACE 4,10
** TJRP - TABLE OF JOB RECOVERY PROCESSORS.
TJRP INDEX
INDEX PRJS,RPJ
INDEX EXJS,REJ
INDEX ROJS,RJQ
INDEX SIJS,CSR
INDEX SOJS,RJQ
INDEX TOJS,RJQ
INDEX IOJS,RJQ
INDEX DOJS,RJQ
INDEX SUJS,RJQ
INDEX PCJS,RSJ
INDEX ERJS,RJQ
INDEX PWJS,RPJ
INDEX SWJS,RJQ
INDEX MXJS
DEF SPACE 4,20
** DEF - DETERMINE ERROR FLAG.
*
* ENTRY (EO) = EJT ORDINAL.
* (PN) = CONTROL POINT NUMBER.
* (CA - CA+4) = *SCHE* WORD OF EJT ENTRY.
* (CN - CN+4) = *FLSW* WORD.
* (FN - FN+4) = *STSW* WORD.
* (FS - FS+4) = *JSNE* WORD OF EJT ENTRY.
*
* EXIT (FN+1) = ERROR FLAG.
* ERROR FLAG SET IN CONTROL POINT AREA.
* *JCRW* CLEARED IF RECOVERED SUBSYSTEM.
*
* USES FN+1, FS+4, CM - CM+4.
*
* MACROS DELAY, MONITOR, SFA.
DEF3 LDD CA+2 CHECK *NORERUN* STATUS
SHN 0-13
ZJN DEF4 IF JOB IN RERUN STATE
LDN RAET&DRET
DEF4 LMN DRET SET ERROR FLAG
DEF5 STD FN+1
STD CM+1
MONITOR CEFM
DEF SUBR ENTRY/EXIT
LDD CA+2
LPC 3000
NJN DEFX IF JOB TERMINATION IN PROGRESS
LDD FN+1
LMN PEET
ZJN DEF2 IF *PEET* ERROR FLAG SET
LDD CN+4
ZJN DEF3 IF NOT RECOVERED SUBSYSTEM
LDN ZERL CLEAR *JCRW*
CRD CM
LDD CP
ADK JCRW
CWD CM
LDN RSET SET RECOVERED SUBSYSTEM ERROR
UJN DEF5 RETURN
DEF1 DELAY
DEF2 LDD PN
STD CM+1
MONITOR VFLM CALL CPUMTR TO VALIDATE FL
SOD CM+1
ZJN DEFX IF FL VERIFICATION FAILED
PJN DEF1 IF FUNCTION WAS IN USE
LDD FS+4 CLEAR JOB ADVANCE FLAG
LPC -100
STD FS+4
SFA EJT,EO
ADK JSNE
CWD FS
LDD CP SET CPU PRIORITY = *LJCS*
ADK CWQW
CRD CM
LDK LJCS
SHN 3
ADC 2000
STD CM
LDD CP
ADK CWQW
CWD CM
UJP DEF3 SET ERROR FLAG
TITLE JOB RECOVERY PROCESSORS.
CSR SPACE 4,10
** CSR - CHANGE STATUS TO ROLLOUT.
*
* USES FS+4.
*
* CALLS RJQ, SET.
CSR SUBR ENTRY/EXIT
LDD FS+4
SCN 76
LMN ROJS*2 CHANGE JOB STATUS
STD FS+4
RJM SET SET ENTRY TIME IN *SCHE*
SFA EJT,EO UPDATE EJT ENTRY
ADK JSNE
CWD FS
ADN SCHE-JSNE
CWD CA
RJM RJQ RETURN JOB TO QUEUE
UJN CSRX RETURN
REJ SPACE 4,10
** REJ - RECOVER EXECUTING JOB.
*
* USES CA+2.
*
* CALLS DEF.
*
* MACROS SFA.
*
* EXIT TO *ABT* IF PSEUDO-ROLLOUT IN PROGRESS.
REJ SUBR ENTRY/EXIT
LDD NC
SBD PN
MJN REJ1 IF PROCESSING PCP-S
LDD CA+2 CLEAR *DMP=* ROLLOUT FLAG
LPC 7377
STD CA+2
SFA EJT,EO UPDATE EJT ENTRY
ADK SCHE
CWD CA
RJM DEF DETERMINE ERROR FLAG
UJN REJX RETURN
* IF PROCESSING A PSEUDO-CONTROL POINT AND THE JOB STATE IS
* *EXJS*, A PSEUDO-ROLLOUT IS IN PROGRESS.
REJ1 LJM ABT ABORT RECOVERY
RJQ SPACE 4,10
** RJQ - RETURN JOB TO QUEUE.
*
* EXIT CONTROL POINT RELEASED.
* (EO) = 0.
* *REC* ASSIGNED TO SYSTEM CP.
*
* USES EO, FS+4, CM+1.
*
* MACROS MONITOR, SFA.
RJQ SUBR ENTRY/EXIT
LDC 100 SET JOB ADVANCE FOR *JACM* FUNCTION
RAD FS+4
SFA EJT,EO
CWD FS
LDN CCPS SET RELEASE CONTROL POINT
STD CM+1
MONITOR JACM RELEASE CONTROL POINT
* LDN 0
STD EO CLEAR EJT ORDINAL TO FLAG CP RELEASED
LDD NC
STD CM+1
MONITOR CCAM RETURN TO SYSTEM CP
UJN RJQX RETURN
RPJ SPACE 4,10
** RPJ - RECOVER PRE-INITIAL JOB.
*
* USES CM - CM+4.
*
* CALLS AST, RJQ.
RPJ1 RJM RJQ RETURN JOB TO QUEUE
RPJ SUBR ENTRY/EXIT
LDD CP
ADN JCIW
CRD CM
LDC LSSI CHECK SUBSYSTEM ID
SBD CM+2
PJN RPJ1 IF NOT SUBSYSTEM
LDD CM+2
LMC CEAF*10000 CLEAR JOB ACTIVE IN *SSAT*
RJM AST
UJN RPJ1 RETURN JOB TO QUEUE
RSJ SPACE 4,10
** RSJ - RECOVER JOB AT PSEUDO-CP.
*
* EXIT TO *ABT* IF PSEUDO-ROLLIN IN PROGRESS.
RSJ SUBR ENTRY/EXIT
LDD NC
SBD PN
MJN RSJX IF PROCESSING PCP-S
* IF PROCESSING A CONTROL POINT AND THE JOB STATE IS *PCJS*, A
* PSEUDO-ROLLIN IS IN PROGRESS.
LJM ABT ABORT RECOVERY
TITLE SUBROUTINES.
PLF SPACE 4,15
** PLF - PROCESS LOCAL FNT.
*
* ENTRY (CP) = CONTROL POINT ADDRESS.
* (CN - CN+4) = *FLSW* WORD.
* (FN - FN+4) = *STSW* WORD.
*
* EXIT (RA) = CONTROL POINT REFERENCE ADDRESS / 100.
*
* USES FA, QS, QT, CM - CM+4, FS - FS+4.
*
* CALLS UQE, VEI.
*
* MACROS MONITOR, NFA.
PLF SUBR ENTRY/EXIT
LDD CN SET END OF NFL
SHN 6
ADN 1
STD QS
LDC FNTN-LENF
STD FA
PLF1 LDN LENF ADVANCE FNT ADDRESS
RAD FA
SBD QS
PJN PLFX IF END OF NFL
NFA FA,R READ FNT ENTRY
CRD CM
ADN FSTL
CRD FS
LDD CM
ZJN PLF1 IF EMPTY FNT SLOT
LDD CM+4 SET FILE TYPE
SHN -6
STD QT
LMN QFFT
NJN PLF2 IF NOT QUEUE FILE
RJM UQE UPDATE QFT ENTRY
PLF2 LMN ROFT&QFFT
ZJN PLF5 IF ROLLOUT FILE
LDD FS+4
LPN 1
NJN PLF1 IF FILE NOT BUSY
PLF3 AOD FS+4
NFA FA,R UPDATE FST
ADN FSTL
CWD FS
LDD FS+4 CHECK LAST OPERATION
LPN 2
ZJN PLF4 IF NOT WRITE
RJM VEI VALIDATE EOI FOR FILE
PLF4 LJM PLF1 LOOP FOR NEXT FILE
PLF5 LDN LOFT-ROFT SET FILE TYPE TO *LOFT*
SHN 6
RAD CM+4
NFA FA,R UPDATE FNT
CWD CM
LDD FS+1 SET FIRST TRACK
ZJN PLF4 IF TRACKS NOT ASSIGNED
STD CM+2
LDD FS SET EQUIPMENT
LMD TH SET RETURN ON INACCESSIBLE DEVICE
STD CM+1
MONITOR DTKM RELEASE MASS STORAGE SPACE
LDN ZERL
CRD FS
LDN NEEQ ASSIGN TO NULL EQUIPMENT
STD FS
UJP PLF3 UPDATE FST
SPACE 4,10
** COMMON DECKS.
QUAL AST
QUAL$ EQU 0 DONT REQUALIFY COMMON DECK
AST$ EQU 0 ASSEMBLE *SSAT* MODIFICATION ROUTINES
*CALL COMPAST
QUAL SET
QUAL$ EQU 0 DONT REQUALIFY COMMON DECK
*CALL COMPRJC
CET$ EQU 0 ASSEMBLE ENTRY TIME CALCULATION ROUTINES
T1 EQU CA+3
T2 EQU CA+4
*CALL COMPCPE
SET SPACE 4,15
** SET - SET ENTRY TIME.
*
* ENTRY (EO) = EJT ORDINAL.
* (CA - CA+4) = *SCHE* WORD OF EJT ENTRY.
*
* EXIT ENTRY TIME SET IN (CA+2 - CA+4) FOR UPPER BOUND
* PRIORITY OF SERVICE CLASS.
*
* USES T1, CA+2 - CA+4, CM - CM+4.
*
* CALLS CET.
*
* MACROS SFA.
SET SUBR ENTRY/EXIT
SFA EJT,EO FETCH SERVICE CLASS FROM EJT ENTRY
ADN SCLE
CRD CM
LCN 0 SET MAXIMUM PRIORITY
STD T1
LDD CM CALCULATE ENTRY TIME
SCN 77
SHN 6
LMN EXQT
RJM CET
LDD CA+2 SET ENTRY TIME IN *SCHE*
SCN 77
STD CA+2
LDD T1
STD CA+3
LDD T2
STD CA+4
UJN SETX RETURN
QUAL CPR
AST EQU /AST/AST
CEAF EQU /AST/CEAF
SET EQU /SET/SET
SPACE 4,10
ERRPL *-BFMS OVERFLOW INTO BUFFER
SPACE 4,10
QUAL
ABT EQU /CPR/ABT
CRS EQU /CPR/CRS
OVLC EQU /CPR/OVLC
PLF EQU /CPR/PLF
UQE EQU /CPR/UQE
VEI EQU /CPR/VEI
TTL REC/4RE - ISSUE DEADSTART MESSAGES.
TITLE
QUAL IDM
IDENT 4RE,IDMX
*COMMENT REC - ISSUE DEADSTART MESSAGES.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
IDF SPACE 4,10
*** 4RE - ISSUE DEADSTART MESSAGES.
*
* *4RE* ISSUES THE DEADSTART MESSAGES PERTAINING TO RECOVERY,
* AS SET UP BY *4RA*.
IDF SPACE 4,20
*** DAYFILE MESSAGES.
*
* * YY/MM/DD. DEAD START LEVEL X.* = DATE AND LEVEL NUMBER OF
* DEADSTART.
* *X...X* = SYSTEM TITLE.
*
* *X...X* = SYSTEM VERSION.
*
*
* *EQXXX, DAYFILE TRACK LIMIT.* = DEADSTART IS ABANDONED.
*
* *EQXXX, LOCAL AREA SECTOR ERROR.* = READ ERROR OCCURRED.
*
* *FILENAM RECOVERED, EQXXX.* = SPECIFIED DAYFILE WAS
* RECOVERED ON EST ORDINAL XXX.
*
* *FILENAM CREATION DATE YY/MM/DD. * = CREATION DATE OF
* SPECIFIED DAYFILE.
*
* *FILENAME UPDATED YY/MM/DD. HH.MM.SS. * = DATE
* AND TIME LAST EOI WAS WRITTEN.
IDM SPACE 4,10
*** ACCOUNT FILE MESSAGES.
*
* *ABSY, YY/MM/DD.* = ACCOUNT FILE WAS INITIALIZED.
*
* *ARSY, X, YY/MM/DD.* = DAYFILES WERE RECOVERED ON A LEVEL X
* DEADSTART ON THE SPECIFIED DATE.
*
* *ABST, X...X.* = SYSTEM TITLE.
*
* *ABSV, X...X.* = SYSTEM VERSION.
IDM SPACE 4,10
*** ERROR LOG MESSAGES.
*
* *X...X* = SYSTEM TITLE.
*
* *X...X* = SYSTEM VERSION.
*
* *MICROCODE, XX.* = LEVEL OF LOADED MICROCODE.
*
* *EI, XX* = LEVEL OF ERROR INTERFACE.
*
* * BUFFERED I/O RECOVERY ERRORS.
* * WRITE LIST LINKAGE ERROR.
* * READ DATA ON WRITE LIST.
* * INTERLOCKED BUFFER ON WRITE LIST.
* * WRITE LIST BUFFER COUNT.
* * NON-LINKED WRITE BUFFER.
*
* * BUFFERED I/O RECOVERY ERRORS EQXXX.
* * I/O QUEUE SIZE ERROR.
* * I/O LINKAGE ERROR.
* * I/O *PUT* ORDINAL ERROR.
IDM SPACE 4,10
ORG OVLB
IDM SPACE 4,10
** IDM - ISSUE DEAD START MESSAGES.
*
* ENTRY (FN - FN+4) = DAYFILE EQUIPMENTS.
*
* EXIT DEAD START MESSAGE ISSUED TO SYSTEM DAYFILE.
* DEAD START MESSAGE ISSUED TO ACCOUNT DAYFILE.
* DEAD START MESSAGE ISSUED TO ERROR LOG DAYFILE.
* DEAD START MESSAGE ISSUED TO BML.
* APPROPRIATE MESSAGES CONCERNING DAYFILE RECOVERY.
* APPROPRIATE MESSAGES CONCERNING MICROCODE AND EI.
* SYSTEM TITLE AND VERSION ISSUED TO SYSTEM DAYFILE.
* SYSTEM TITLE AND VERSION ISSUED TO ACCOUNT DAYFILE.
* SYSTEM TITLE AND VERSION ISSUED TO ERROR LOG DAYFILE.
* SYSTEM TITLE AND VERSION ISSUED TO BML.
* BUFFERED I/O RECOVERY ERRORS PROCESSED.
*
* CALLS ACS, BRM, C2D, DFM.
*
* USES QT, T1, T4, CM - CM+4.
IDM SUBR ENTRY/EXIT
LDN DSSL SET RECOVERY LEVEL
CRD CM
LDD CM+4 CONVERT RECOVERY MODE
LPN 3
STM IDMG+2 SET IN BML MESSAGE
ADC 2R 0
STM IDMF1
SHN 6
LMN 1R,
STM RDBG+3
* ISSUE DEADSTART MESSAGES.
LDM RDBK
STM IDMA
LDN DTEL READ DATE TO MESSAGE
CRM IDMF,ON
SBN 1
CRM **,ON
IDMA EQU *-1
* CRM RDBG+3,ON (ACCOUNT FILE INITIALIZED)
* CRM RDBG+4,ON (ACCOUNT FILE RECOVERED)
LDC IDMF ISSUE MESSAGE TO DAYFILE
RJM DFM
LDC ACFN+RDBG ISSUE MESSAGE TO ACCOUNT DAYFILE
RJM DFM
LDC ERLN+IDMF ISSUE MESSAGE TO ERROR LOG
RJM DFM
LDM RDBF+MLDY
NJN IDM0 IF MAINTENANCE LOG CREATED
LDC DS0104 SET RECOVERY SYMPTOM
STM IDMG+1
IDM0 LDN IDMGL SET MESSAGE LENGTH
STD CM+1
LDC BMLN+IDMG ISSUE MESSAGE TO MAINTENANCE LOG
RJM DFM
* ISSUE SYSTEM TITLE AND VERSION DAYFILE MESSAGES
LDN 4 READ SYSTEM TITLE
STD T1
LDN SYTL
CRM IDMM2,T1
LDN 2 READ SYSTEM VERSION
STD T1
LDN SVNL
CRM IDMN2,T1
LDC IDMM2 ISSUE SYSTEM TITLE TO MASTER DAYFILE
RJM DFM
LDC IDMN2 ISSUE SYSTEM VERSION TO MASTER DAYFILE
RJM DFM
LDC ACFN+IDMM+2 ISSUE TITLE TO ACCOUNT DAYFILE
RJM DFM
LDC ACFN+IDMN+2 ISSUE SYSTEM VERSION TO ACCOUNT FILE
RJM DFM
LDC ERLN+IDMM2 ISSUE SYSTEM TITLE TO ERRLOG
RJM DFM
LDC ERLN+IDMN2 ISSUE SYSTEM VERSION TO ERRLOG
RJM DFM
LDN ZERL CLEAR BML AREA
CRM IDMM,ON
CRM IDMN,ON
LDC DM0400 INSERT BML ID
STM IDMM
STM IDMN
LDC SS0100 INSERT BML SYSTEM TITLE SYMPTOM
STM IDMM+1
LDC SS0101 INSERT BML SYSTEM VERSION SYMPTOM
STM IDMN+1
LDN IDMM1L SET SYSTEM TITLE MESSAGE LENGTH
STD CM+1
LDC BMLN+IDMM ISSUE MESSAGE TO MAINTENANCE LOG
RJM DFM
LDN IDMN1L SET SYSTEM VERSION MESSAGE LENGTH
STD CM+1
LDC BMLN+IDMN ISSUE MESSAGE TO MAINTENANCE LOG
RJM DFM
* COPY MICROCODE AND EI NAMES AND DATES TO MESSAGES.
LDK EABL+MFEI GET MESSAGE INFORMATION
CRD CM
ADK CPEI-MFEI
CRD CN
LDD CM+1 GET MF DESCRIPTOR
SCN 77
SHN 6
LMD CM
SHN 6
CRD CM
ADN 1 READ EI DATE/NAME
CRM IDMH1+2*5,ON
LDD CM+1
SHN -6
LMN 7
NJP IDM3 IF NOT CYBER 180 MACHINE
LDD CM+1
LPN 1
NJN IDM0.1 IF CPU-0 OFF
LDD CN+1 GET PROCESSOR DESCRIPTOR
SCN 77
SHN 6
LMD CN
SHN 6
UJN IDM1 FETCH MICROCODE IDENTIFICATION
IDM0.1 LDD CN+1
LPN 77
SHN 14
LMD CN+2
IDM1 ADN 2
CRM IDMH1,ON READ MICROCODE NAME/DATE
CRM IDMH1+5,ON
LDM IDMH1+2*5+3 MOVE EI NAME
STM IDMH1+4
LDM IDMH1+2*5+4 MOVE VERIFICATION FLAG
SHN 1
RAM IDMH1+5+4
LDN 0
STM IDMH1+2*5+3
STM IDMH1+2*5+4
LDN IDMHL SET MESSAGE LENGTH
STD CM+1
LDC BMLN+IDMH ISSUE MESSAGE TO MAINTENANCE LOG
RJM DFM
LDC IDMJ SET ASSEMBLY BUFFER ADDRESS
STD T1
LDC IDMH1 SET MICROCODE NAME
RJM ACS
LDC =C*, * INSERT SEPARATOR
RJM ACS
LDC IDMH1+1*5+0 SET MICROCODE DATE
RJM ACS
LDM IDMH1+1*5+4 DETERMINE IF MICROCODE LOADED
ZJN IDM2 IF LOADED
LDC =C*, * SET SEPARATOR
RJM ACS
LCN 1
IDM2 ADC =C*NL. *+1
RJM ACS
LDC IDML SET ASSEMBLY BUFFER ADDRESS
STD T1
LDM IDMH1+0*5+4 SET EI NAME
STI T1
AOD T1
LDC =C*, * INSERT SEPARATOR
RJM ACS
LDC IDMH1+2*5+0 SET EI DATE
RJM ACS
LDC =C*. * INSERT TERMINATOR
RJM ACS
LDC ERLN+IDMI ISSUE MESSAGE TO ERRLOG
RJM DFM
LDC ERLN+IDMK ISSUE MESSAGE TO ERRLOG
RJM DFM
IDM3 LCN 0 CLEAR FILE INDEX
STD QT
* ISSUE DAYFILE RECOVERY MESSAGES.
LDD RS
LPN FLMK
LMN FLCM
NJN IDM6 IF DAYFILES NOT RECOVERED FROM CM
RJM BRM PROCESS BUFFERED I/O RECOVERY MESSAGES
IDM4 LJM IDMX RETURN
IDM6 AOD QT ADVANCE TO NEXT FILE
SHN 2
ADD QT
STD T4
ADC RDBA CALCULATE DATE AND TIME ADDRESSES
STM IDMB
ADN RDBB-RDBA
STM IDMC
ADN RDBC-RDBB
STM IDMD
ADN RDBD-RDBC
STM IDME
LMC RDBE
ZJN IDM4 IF END OF DAYFILES
LDM RDBA,T4
ZJN IDM6 IF NO CREATION DATE
LDM FN,QT CONVERT UPPER DIGIT OF EST ORDINAL
SHN -6
LPN 7
ADC 2RQ0
STM RDBH+13
LDM FN,QT CONVERT LOWER TWO DIGITS OF EST ORDINAL
RJM C2D
STM RDBH+14
* COPY DATES AND TIMES TO MESSAGES.
LDD MA COPY CREATION DATE
CWM **,ON
IDMB EQU *-1
SBN 1
CRM RDBI1,ON
SBN 1 COPY UPDATE DATE
CWM **,ON
IDMC EQU *-1
SBN 1
CRM RDBJ1,ON
SBN 1 COPY UPDATE TIME
CWM **,ON
IDMD EQU *-1
SBN 1
CRM RDBJ1+1*5,ON
SBN 1 COPY FILE NAME
CWM **,ON
IDME EQU *-1
SBN 1
CRM RDBH,ON
SBN 1
CRM RDBI,ON
SBN 1
CRM RDBJ,ON
* ISSUE MESSAGES.
LDC RDBH *FILENAME RECOVERED, EQXXX.*
RJM DFM
LDM RDBB,T4
ZJN IDM7 IF FILE NOT UPDATED
LDC RDBI
RJM DFM ISSUE MESSAGES
LDC RDBJ
RJM DFM
IDM7 LJM IDM6 ADVANCE TO NEXT FILE
IDMF DATA H* YY/MM/DD. DEAD START LEVEL *
IDMF1 DATA C* 0.*
IDMG CON DM0406,DS0101 MAINTENANCE LOG CREATION MESSAGE
BSSZ IDMG+6-*
IDMGL EQU *-IDMG LENGTH OF MESSAGE
IDMH CON DM0407,DS0100 MAINTENANCE LOG MICROCODE/EI MESSAGE
VFD 36/0
IDMH1 BSSZ 3*5 MESSAGE
IDMHL EQU *-IDMH
IDMI DATA H*MICROCODE, * ERRLOG MICROCODE/EI MESSAGES
IDMJ BSSZ 15
IDMK DATA H*EI, *
IDML BSSZ 6
IDMM DATA H* ABST, * SYSTEM TITLE MESSGE
IDMM2 BSSZ 24 MESSAGE BUFFER
IDMM1L EQU *-IDMM
IDMN DATA H* ABSV, * SYSTEM VERSION MESSAGE
IDMN2 BSSZ 12 MESSAGE BUFFER
IDMN1L EQU *-IDMN
BRM SPACE 4,10
** BRM - BUFFERED I/O RECOVERY MESSAGE GENERATOR.
*
* USES CM - CM+4.
*
* CALLS IGM, IPM.
BRM SUBR ENTRY/EXIT
LDC BIOL
CRD CM
LDD CM+1
ADD CM+2
ZJN BRMX IF BUFFERED I/O NOT DEFINED
RJM IGM ISSUE GENERAL MESSAGES
RJM IPM ISSUE *PUT* RELATED MESSAGES
UJN BRMX RETURN
IGM SPACE 4,10
** IGM - ISSUE GENERAL RECOVERY MESSAGES.
*
* USES - T3, CM - CM+4, FN - FN+4.
*
* CALLS DFM.
IGM SUBR ENTRY/EXIT
LDN REML
CRD FN
LDD FN+4
ZJN IGMX IF NO MESSAGES TO ISSUE
LDC IGMA+ERLN ISSUE HEADER MESSAGE
RJM DFM
* LDN 0 INITIALIZE POINTER
STD T3
IGM1 LDD FN+4
SHN 21-0
STD FN+4
PJN IGM2 IF MESSAGE NOT SELECTED
LDM IGMB,T3
ADC ERLN
RJM DFM
IGM2 AOD T3
LMN IGMBL
ZJN IGMX IF END OF MESSAGES
UJN IGM1 CHECK NEXT MESSAGE
IGMA DATA C* BUFFERED I/O RECOVERY ERRORS.*
IGMB CON =C* WRITE LIST LINKAGE ERROR.*
CON =C* READ DATA ON WRITE LIST.*
CON =C* INTERLOCKED BUFFER ON WRITE LIST.*
CON =C* WRITE LIST BUFFER COUNT.*
CON =C* NON-LINKED WRITE BUFFER.*
IGMBL EQU *-IGMB
IPM SPACE 4,10
** IPM - ISSUE *PUT* RELATED RECOVERY ERROR MESSAGES.
*
* USES T3, CM - CM+4, CN - CN+4, FN - FN+4.
*
* CALLS DFM.
IPM SUBR ENTRY/EXIT
LDC BIOL SET UP *PUT* SCAN
CRD CM
LDD CM+1
SHN 14
LMD CM+2
ADN PUTP READ *PUT* POINTERS
CRD CN
LDD CN+3 CLEAR FLAGS
LPN 77
STD CN+3
AOD CN
IPM1 SOD CN
ZJN IPMX IF END OF *PUT* ENTRIES
LDN PUTL INCREMENT *PUT* ADDRESS
RAD CN+4
SHN -14
RAD CN+3
SHN 14
LMD CN+4
ADK UNCT
CRD CM
ADN PILL-UNCT
CRD FN
LDD FN
ZJN IPM1 IF NO ERRORS FOR THIS *PUT*
LDD CM+1 SET EST ORDINAL IN MESSAGE
RJM C2D
STM IPMA+21
LDD CM+1
SHN -6
ADC 2RQ0
STM IPMA+20
LDC IPMA+ERLN ISSUE HEADER MESSAGE
RJM DFM
* LDN 0
STD T3
IPM2 LDD FN
SHN 21-0
STD FN
PJN IPM3 IF MESSAGE NOT SELECTED
LDM IPMB,T3
ADC ERLN
RJM DFM
IPM3 AOD T3
LMN IPMBL
NJN IPM2 IF NOT END OF MESSAGES
LJM IPM1 LOOP FOR NEXT *PUT*
IPMA DATA C* BUFFERED I/O RECOVERY ERRORS EQXXX.*
IPMB CON =C* I/O QUEUE SIZE ERROR.*
CON =C* I/O QUEUE LINKAGE ERROR.*
CON =C$ I/0 QUEUE *PUT* ORDINAL ERROR.$
IPMBL EQU *-IPMB
SPACE 4,10
USE LITERALS
OVERFLOW IDMX
QUAL
TTL REC/4RF - MANAGED TABLE RECOVERY.
TITLE
QUAL MTR
IDENT 4RF,MTRX
*COMMENT REC - MANAGED TABLE RECOVERY.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
MTR SPACE 4,10
*** MTR - MANAGED TABLE RECOVERY.
SPACE 4,10
ORG OVLC
** MTR - MANAGED TABLE RECOVERY.
*
* EXIT (EJTA) = PRIMARY FILE VALIDATION FLAG.
* (RPFA) = MASS STORAGE VALIDATION FLAG.
*
* USES CN - CN+4.
MTR SUBR ENTRY/EXIT
LDN SSTL READ SYSTEM STATUS
CRD CN
LDD CN
LPN 4
NJN MTRX IF MASS STORAGE VALIDATION NOT PRESENT
LDD RS
SHN 21-6
ERRNZ JBCM-100 ADJUST IF VALUE CHANGES
PJN MTR1 IF NOT CM RECOVERY
LDD CN
LPN 20
NJN MTRX IF FILE VALIDATION DISABLED
LDC LDDI+QA ENABLE PRIMARY FILE VALIDATION
STM EJTA
LDK LDNI+PMFT
STM FNTA
MTR1 SOM RECA
UJN MTRX RETURN
CNA SPACE 4,10
** CNA - CLEAR NON-ROLLABLE ACCESS FLAG.
*
* ENTRY (FS - FS+4) = FST ENTRY.
*
* USES T5, T6, CM - CM+4.
*
* CALLS RSS, WSS.
*
* MACROS ENDMS, SETMS, SFA.
CNA SUBR ENTRY/EXIT
LDD FS SET EQUIPMENT
STD T5
SFA EST FETCH EST ENTRY
ADK EQDE
CRD CM
LDD CM
LPN 20
ZJN CNAX IF NOT INDEPENDENT SHARED DEVICE
SETMS IO,RW
LDD FS+1 SET FIRST TRACK
STD T6
LDN 0 SET NO FILE NAME VERIFICATION
RJM RSS READ SYSTEM SECTOR
NJN CNA1 IF SYSTEM SECTOR ERROR
LDM /COMSPFM/CASS CLEAR NON-ROLLABLE ACCESS
LPC 7545
STM /COMSPFM/CASS
RJM WSS REWRITE SYSTEM SECTOR
CNA1 ENDMS
UJN CNAX RETURN
CLT SPACE 4,15
** CLT - PROCESS COMMON LIBRARIES TABLE RECOVERY.
*
* ENTRY (EC) = NUMBER OF TABLE ENTRIES.
* (LM) = NUMBER OF ENTRIES IN USE.
* (QA) = (QI) = 0.
*
* EXIT (A) = 0 IF VALIDATION INFORMATION CLEARED FROM TABLE.
*
* USES LM, QA, CM - CM+4, FN - FN+4, FS - FS+4.
*
* MACROS SFA.
CLT3 LDN 1 RETURN ERROR INDICATOR
CLT SUBR ENTRY/EXIT
LDD EC
ZJN CLTX IF NO COMMON LIBRARIES TABLE EXISTS
CLT1 SOD LM
ZJN CLTX IF ALL ASSIGNED ENTRIES CHECKED
CLT2 AOD QA
LMD EC
ZJN CLT3 IF END OF CLT
SFA CLT,QA READ CLT ENTRY
CRD CM
ADN CLTF-CLTU
CRD FN
ADN CLTV-CLTF
CRD FS
LDD CM
ZJN CLT2 IF EMPTY ENTRY
LDD CM+3 CLEAR USER INDEX
SCN 77
STD CM+3
LDN 0
STD CM+4
STD FN+4 CLEAR FAMILY EQUIPMENT
STD FS+4 CLEAR PF VALIDATION
SFA CLT,QA REWRITE COMMON LIBRARIES ENTRY
CWD CM WRITE USER NAME
ADN CLTF-CLTU WRITE FAMILY NAME
CWD FN
ADN CLTV-CLTF WRITE PF VALIDATION
CWD FS
UJN CLT1 LOOP FOR NEXT ENTRY
EJT SPACE 4,15
** EJT - PROCESS EXECUTING JOB TABLE RECOVERY.
*
* ENTRY (EC) = NUMBER OF TABLE ENTRIES.
* (LM) = NUMBER OF ENTRIES IN USE.
* (QA) = (QI) = (QT) = 0.
*
* EXIT (A) = 0 IF TABLE FULLY RECOVERED.
*
* USES LM, QA, QI, T5 - T7, CM - CM+1, FN - FN+4,
* FS - FS+4.
*
* CALLS RRF, VEI.
*
* MACROS SFA.
EJT7 LDN 1 RETURN ERROR INDICATOR
EJT SUBR ENTRY/EXIT
EJT1 LDD QI CHECK JOB STATUS
EJT2 SBN MXJS
PJN EJT3 IF NON-STANDARD STATUS
AOM EJCT,QI
EJT3 SOD LM
ZJN EJTX IF ALL ASSIGNED ENTRIES CHECKED
EJT4 AOD QA
LMD EC
ZJN EJT7 IF END OF EJT
SFA EJT,QA
ADK JSNE
CRD FN READ EJT ENTRY
ADN SCHE-JSNE
CRD T5 READ ROLLOUT FILE POINTERS
ADN SCLE-SCHE
CRD FS READ JOB ORIGIN TYPE
LDD FN
ZJN EJT4 IF EMPTY SLOT
LDD FN+4
LPN 77
SHN 21-0 SET JOB STATUS
STD QI
PJN EJT5 IF ENTRY NOT BUSY
LDD FN+4 CLEAR JOB ADVANCE/BUSY STATUS
LPC 7676
STD FN+4
SFA EJT,QA CLEAR FILE BUSY
CWD FN
LDD QI CHECK JOB STATUS
EJT5 LMK PRJS
ZJN EJT6 IF PRE-INITIAL JOB STATUS
LMK PWJS&PRJS
ZJN EJT6 IF PRE-INITIAL WAIT JOB STATUS
LMK EXJS&PWJS
ZJN EJT6 IF EXECUTING JOB STATUS
LMK NVJS&EXJS
ZJN EJT6 IF NVE ENTRY
RJM RRF READ ROLLOUT FILE
EJTA UJN EJT6 PROCESS NEXT ENTRY
* LDD QA (MS VALIDATION ENABLED ON CM RECOVERY)
SFA EJT
ADN PRFE FETCH PRIMARY FILE POINTERS
CRD FS-3
RJM VEI VERIFY PRIMARY FILE
EJT6 LJM EJT1 PROCESS NEXT ENTRY
FNT SPACE 4,15
** FNT - PROCESS FILE NAME TABLE RECOVERY.
*
* ENTRY (EC) = NUMBER OF TABLE ENTRIES.
* (LM) = NUMBER OF ENTRIES IN USE.
* (QA) = (QI) = 0.
*
* EXIT (A) = 0 IF TABLE FULLY RECOVERED.
*
* USES LM, QA, QT, CM - CM+4, FN - FN+4, FS - FS+4.
*
* CALLS CNA, VEI.
*
* MACROS MONITOR, SFA.
FNT7 LDN 1 RETURN ERROR INDICATOR
FNT SUBR ENTRY/EXIT
FNT1 SOD LM
ZJN FNTX IF ALL ASSIGNED ENTRIES CHECKED
FNT2 AOD QA
LMD EC
ZJN FNT7 IF END OF FNT
SFA FNT,QA
CRD FN READ FNT ENTRY
ADN FSTG
CRD FS
LDD FN
ZJN FNT2 IF EMPTY SLOT
LDD FN+4
SHN -6
LMN SYFT
ZJN FNT3 IF INACTIVE FAST ATTACH FILE
LMN FAFT&SYFT
NJN FNT5 IF NOT ACTIVE FAST ATTACH FILE
AOM MSCT+FACT
LDD FS+4
SHN 21-1
PJN FNT3 IF NOT ATTACHED WITH NON-ROLLABLE OPTION
LDD FS+4 CLEAR NON-ROLLABLE ACCESS IN FST
LPC 375
STD FS+4
RJM CNA CLEAR SYSTEM SECTOR FLAG
FNT3 LDD FN+4
SCN 1
STD FN+4
SFA FNT,QA CLEAR FILE BUSY
CWD FN
ADN FSTG
CWD FS
FNT4 LJM FNT1 LOOP FOR NEXT ENTRY
FNT5 LMN PMFT&FAFT
ZJN FNT6 IF *CPD* SAMPLE FILE
LDD QA
STD CM+1
LDN PFNT RELEASE FNT ENTRY
STD CM+2
MONITOR MTRM
UJN FNT4 LOOP FOR NEXT ENTRY
FNT6 UJN FNT4 SKIP EOI VERIFICATION
* LDN PMFT (MS VALIDATION ENABLED ON CM RECOVERY)
FNTA EQU *-1
STD QT
RJM VEI VERIFY EOI
UJN FNT4 LOOP FOR NEXT ENTRY
LLF SPACE 4,15
** LLF - LOCATE LIBRARY FILE.
*
* ENTRY (FS+1) = ADDRESS OF FNT ENTRY IN BUFFER.
* (QA) = EJT ORDINAL.
* (FN - FN+4) = FIRST WORD OF EJT ENTRY.
*
* EXIT ERROR FLAG SET TO *DRET* IF FILE IS *LIFT* AND
* THE TRACK INTERLOCK FLAG IS SET IN THE FST.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
LLF SUBR ENTRY/EXIT
LDM 4,FS+1
SHN -6
LMN LIFT
NJN LLFX IF NOT LIBRARY TYPE FILE
LDM 11,FS+1
SHN 21-9D
PJN LLFX IF TRACK INTERLOCK NOT SET
LDC 4000+DRET SET ERROR FLAG
STD CM+1
LDD QA SET EJT ORDINAL
STD CM+2
LDD FN SET JSN
STD CM+3
LDD FN+1
STD CM+4
MONITOR CEFM CHANGE ERROR FLAG
UJN LLFX RETURN
QFT SPACE 4,15
** QFT - PROCESS QUEUE FILE TABLE RECOVERY.
*
* ENTRY (EC) = NUMBER OF TABLE ENTRIES.
* (LM) = NUMBER OF ENTRIES IN USE.
* (EO) = (QA) = (QI) = 0.
*
* EXIT (A) = 0 IF TABLE FULLY RECOVERED.
*
* USES LM, QA, QI, CM - CM+4, FN - FN+4, FS - FS+4.
*
* CALLS UQE, *0DQ*.
*
* MACROS EXECUTE, SFA.
QFT10 LDN 1 RETURN ERROR INDICATOR
QFT SUBR ENTRY/EXIT
QFT1 AOM QFCT,QI
QFT2 SOD LM
ZJN QFTX IF ALL ASSIGNED ENTRIES CHECKED
QFT3 AOD QA
LMD EC
ZJN QFT10 IF END OF QFT
SFA QFT,QA
ADK JSNQ
CRD FN READ QFT ENTRY
ADN ENTQ-JSNQ
CRD FS
ADN SCLQ-ENTQ
CRD CM
LDD FN
ZJN QFT3 IF EMPTY SLOT
LDD FN+4
SHN -11
STD QI SET QUEUE TYPE
LDD FN+4 CHECK FOR *SOQF* OR *SQQF* FILE
SHN -6
LMN SOQF
ZJN QFT8 IF *SOQF*
LMN SQQF&SOQF
ZJN QFT8 IF *SQQF*
LDD FN+4
LPN 6
NJN QFT6 IF CREATION MODE AND/OR ASSIGNED
LDD QI
LMK INQT
NJN QFT4 IF NOT INPUT FILE
LDD CM
LPN 77
LMN IAOT
ZJN QFT8 IF INTERACTIVE INPUT FILE
QFT4 LDD FN+4
LPN 1
ZJN QFT5 IF ENTRY NOT INTERLOCKED
SOD FN+4
SFA QFT,QA CLEAR FILE BUSY
CWD FN
QFT5 LJM QFT1 LOOP FOR NEXT ENTRY
QFT6 LPN 4
NJN QFT7 IF CREATION MODE
LDD FS+4
NJN QFT4 IF ASSIGNED TO EXECUTING JOB
RJM UQE
UJN QFT5 LOOP FOR NEXT ENTRY
QFT7 LDN 1
* CALL *0DQ*.
QFT8 STM ZDLA-1 DEQUEUE FILE
EXECUTE 0DQ,ZDLA
QFT9 LJM QFT2 LOOP FOR NEXT ENTRY
RRF SPACE 4,15
** RRF - READ ROLLOUT FILE.
*
* ENTRY (T5) = ROLLOUT FILE EST ORDINAL.
* (T6) = ROLLOUT FILE FIRST TRACK.
* (FS - FS+4) = *SCLE* WORD OF EJT ENTRY.
* (FN - FN+4) = *JSNE* WORD OF EJT ENTRY.
*
* USES FS - FS+4, T1, T2, T7, CN.
*
* CALLS LLF, RNS, RSS.
*
* MACROS ENDMS, SETMS.
RRF SUBR ENTRY/EXIT
LDD T5
ZJN RRFX IF NO ROLLOUT FILE
SETMS IO
LDN 0
RJM RSS READ SYSTEM SECTOR
NJN RRFX IF ERROR
LDC BUF READ CONTROL POINT AREA
RJM RNS
MJN RRFX IF ERROR
AOD T7 SKIP SECOND CP AREA SECTOR
LDM BUF+2+FLSW*5 GET NFL SIZE
SBN FNTS-1
STD CN SET NUMBER OF FNT SECTORS
LDD FS CHECK ORIGIN TYPE
LPN 17
LMN IAOT
NJN RRF3 IF NOT INTERACTIVE ORIGIN
RRF1 LDC BUF SKIP TERMINAL OUTPUT
RJM RNS
RRF2 MJN RRFX IF ERROR
LDD T1
SHN -6
NJN RRF1 IF MORE DATA SECTORS
RRF3 LDC SBUF INITIALIZE SEARCH ADDRESS
STD FS+1
SBN 2 INITIALIZE BUFFER POINTER
STD FS+2
LDN 0 SET INITIAL SEARCH MODE FLAG
STD T2
LDN 5 SET INITIAL ADVANCE COUNT
STD FS
* FILL BUFFER WITH DATA.
RRF4 LDD FS+2
ADC -SBUF-SBUFL+2
PJN RRF6 IF BUFFER IS FULL
RRF5 LDI FS+2 SAVE TWO BYTES
STD FS+3
LDM 1,FS+2
STD FS+4
LDD FS+2 READ SECTOR
RJM RNS
MJN RRF2 IF ERROR
LDD FS+3 RESTORE TWO BYTES
STI FS+2
LDD FS+4
STM 1,FS+2
LDC 500 ADVANCE BUFFER POINTER
RAD FS+2
SOD CN DECREMENT SECTOR COUNT
NJN RRF4 IF MORE TO READ
LDK -FNTT*5 ADJUST POINTER TO THE LAST FNT ENTRY
RAD FS+2
* PROCESS FULL BUFFER.
RRF6 LDD FS+2 CHECK FOR END OF BUFFER
ADN 2
SBD FS+1
SBN LENF*5
MJN RRF9 IF END OF BUFFER
LDI FS+1
ZJN RRF8 IF EMPTY ENTRY
LDD T2
NJN RRF7 IF START OF FNT-S PREVIOUSLY FOUND
AOD T2 CHANGE SEARCH MODE FLAG
LDN LENF*5 CHANGE ADVANCE COUNT
STD FS
RRF7 RJM LLF LOCATE LIBRARY FILE
RRF8 LDD FS ADVANCE TO NEXT ENTRY
RAD FS+1
UJN RRF6 CHECK NEXT ENTRY
RRF9 ADN LENF*5
STD T1 SAVE AMOUNT TO MOVE
LDD CN
ZJN RRF13 IF END OF FNT ENTRIES
LDD T1
NJN RRF10 IF NOT EXACT END OF BUFFER
LDC SBUF RESET START OF SEARCH
STD FS+1
UJN RRF12 REFILL BUFFER
* MOVE PARTIAL ENTRY TO TOP OF BUFFER.
RRF10 LDD FS+1 SET ADDRESS TO MOVE FROM
STM RRFA
LDC SBUF SET ADDRESS TO MOVE TO
SBD T1
STM RRFB
STD FS+1 RESET START OF SEARCH
SOD T1
RRF11 LDM **,T1 MOVE PARTIAL ENTRY TO TOP
RRFA EQU *-1 (ADDRESS TO MOVE FROM)
STM **,T1
RRFB EQU *-1 (ADDRESS TO MOVE TO)
SOD T1
PJN RRF11 IF MORE TO MOVE
RRF12 LDC SBUF-2 RESET BUFFER POINTER
STD FS+2
LJM RRF5 REFILL BUFFER
RRF13 ENDMS RELEASE MS RESERVATIONS
LJM RRFX RETURN
ZDLA EQU *+1 *0DQ* LOAD ADDRESS
ERRPL ZDLA+ZDQL-BFMS OVERFLOW INTO BUFFER
* ROLLOUT FILE FNT SECTOR BUFFER.
SBUF EQU *+LENF*5-5 LEAVE ROOM FOR FNT ENTRY - ONE WORD
ERRPL SBUF+SBUFL-EPFW BUFFER OVERFLOW
SPACE 4,10
QUAL
CLT EQU /MTR/CLT
EJT EQU /MTR/EJT
FNT EQU /MTR/FNT
QFT EQU /MTR/QFT
QUAL *
TTL REC/4RG - PROCESS ERROR LOGS.
TITLE
QUAL PEL
IDENT 4RG,PELX
*COMMENT REC - PROCESS ERROR LOGS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
CEL SPACE 4,10
*** PEL - PROCESS ERROR LOGS.
CEL SPACE 4,10
* COMMON DECKS.
*CALL COMPCHM
CEL SPACE 4,10
* DIRECT CELL DEFINITIONS.
AP EQU 20 - 24 *DSAL*
SC EQU 61 ERROR STATUS
EA EQU 62 ERROR MESSAGE ADDRESS
WX EQU 63 ASSEMBLY BUFFER INDEX
BX EQU 64 SUPPLEMENT INDEX
CX EQU 65 CEL BUFFER INDEX
CEL SPACE 4,10
* CONSTANTS.
AC EQU 0 *APP* INTERFACE CHANNEL
CEL SPACE 4,10
ORG OVLD
PEL SUBR ENTRY/EXIT
LDC OVL0 SET MASS STORAGE IDENT LOAD ADDRESS
STD LA
LDN 3 ISSUE BOTH ERRLOG AND BML MESSAGES
RJM IME IDENTIFY MASS STORAGE EQUIPMENT
RJM CEL DUMP DEADSTART ERROR LOG
RJM IEL INITIATE *DFT* ERROR LOGGING
UJN PELX RETURN
CEL SPACE 4,10
** CEL - DUMP CRITICAL ERROR LOG.
*
* USES CM+1, EA, AP - AP+4.
*
* CALLS AAP, DAP, DFM, LPR, PCL.
*
* MACROS MONITOR.
CEL SUBR ENTRY/EXIT
LDK DSAL READ *APP* PARAMETERS
CRD AP
RJM LPR PLACE *PPR* IN *DBUF*
RJM AAP ACTIVATE *APP*
MJN CEL1 IF *APP* NOT RESPONDING
RJM PCL PROCESS CRITICAL ERROR LOG
MJN CEL2 IF *APP* NOT RESPONDING
RJM DAP TERMINATE *APP* AND LOAD *PPR*
ZJN CEL2 IF NO ERRORS
CEL1 STD EA
CEL2 LDN 0 DROP *APP* INTERFACE CHANNEL
CELA EQU CEL2
ZJN CEL3 IF CHANNEL NOT RESERVED
STD CM+1
MONITOR DCHM
CEL3 LDD EA
ZJN CELX IF NO ERROR
LMC ERLN ISSUE MESSAGE TO ERROR LOG
RJM DFM
LJM CELX RETURN
AAP SPACE 4,10
** AAP - ACTIVATE *APP*.
*
* ENTRY (AP - AP+4) = *DSAL*.
*
* EXIT (A) = 1/1, 5/0, 12/MESSAGE ADDRESS IF *APP* NOT
* RESPONDING.
* (EA) = (SC) = 0.
*
* CALLS ECI, PRS.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
AAP SUBR ENTRY/EXIT
LDC CHTP
CRD CM
LDN NCTAL SET CHANNEL TABLE LENGTH
STD CM
LDD CM+2 READ UP CHANNEL TABLE
SHN 14
LMD CM+3
CRM BFMS,CM
LDM BFMS,AP CHECK *APP* CHANNEL
LPN 40
NJN APP1 IF CHANNEL DOWN
LDD AP
STD CM+1 SET CHANNEL IN REQUEST
STD CM+2
RAM CELA
MONITOR RCHM RESERVE THE CHANNEL
APP1 LDN 0
STD EA INITIALIZE MESSAGE ADDRESS
STD SC
LDN DSCL FETCH DEADSTART CONTROL WORD
CRD CM
LDD AP
LMC 4000 ACTIVATE ALTERNATE PP
STD CM
LDK DSCL POST REQUEST
CWD CM
LDD AP PRESET CHANNEL INSTRUCTIONS
RJM /COMPAPI/PRS
LDC IJMI WAIT FOR CHANNEL ACTIVE
RJM /COMPAPI/ECI
SHN 0-13
ZJN AAP2 IF NO ERROR
LDC /COMPAPI/CAIA+400000
AAP2 UJP AAPX RETURN
CCF SPACE 4,10
** CCF - CLEAR CEL FLAG IN DEADSTART SECTOR.
*
* EXIT (A) = 0 IF CEL FLAG CLEARED.
* .NE. 0 IF I/O ERROR.
*
* CALLS FEE, WDS, *0PI*.
*
* MACROS ENDMS, EXECUTE.
CCF2 LDC =C*DEADSTART SECTOR ERROR.*
CCF SUBR ENTRY/EXIT
RJM FEE FIND EST ENTRY OF DEADSTART DISK
NJN CCFX IF EST ENTRY NOT FOUND
LDD T5 SET *0PI* PARAMETERS
LMC 4000
STM OVL0-1
EXECUTE 0PI,OVL0 READ DEADSTART SECTOR
CCF1 NJN CCF2 IF NOT A VALID DEADSTART SECTOR
LDM BFMS+CFBP
SCN 20 CLEAR CEL FLAG
STM BFMS+CFBP
LDC BFMS+WLSF REWRITE DEADSTART SECTOR
RJM WDS
MJN CCF1 IF I/O ERROR
ENDMS
* LDN 0
LJM CCFX RETURN
CSC SPACE 4,10
** CSC - COMPUTE SYMPTOM CODE.
*
* ENTRY (CX) = CEL BUFFER INDEX.
*
* EXIT (A) = SYMPTOM CODE.
*
* USES T0.
CSC SUBR ENTRY/EXIT
LDM BFMS+APDL,CX
SHN -10
STD T0
LDN 2
SBD T0
SHN 10
ADK /COMSDFS/HS0001
UJN CSCX RETURN
DAP SPACE 4,10
** DAP - DEADSTART *APP*.
*
* EXIT (A) = 0 IF NO ERROR LOADING *PPR*.
DAP SUBR ENTRY/EXIT
LDC ** (ERROR MESSAGE ADDRESS)
DAPA EQU *-1
NJN DAPX IF *PPR* LOAD FAILURE
LDK MSFW+1 OUTPUT P ADDRESS
OAN AC
LDK PPFW-1 OUTPUT *PPR*
OAM DBUF+6,AC
FJM *,AC IF CHANNEL FULL
DCN AC
* LDN 0
UJN DAPX RETURN
FAB SPACE 4,10
** FAB - FLUSH ASSEMBLY BUFFER.
*
* EXIT (WX) = 0.
*
* USES T1, WX.
*
* CALLS DFM.
FAB SUBR ENTRY/EXIT
LDN 6*5 SET MESSAGE LENGTH
STD CM+1
LDC MBUF+BMLN ISSUE BML MESSAGE
RJM DFM
* LDN 0 RESET ASSEMBLY BUFFER INDEX
STD WX
LDN 3*5+4 CLEAR REGISTER AREA OF BUFFER
STD T1
FAB1 LDN 0
STM MBUF+2*5,T1
SOD T1
PJN FAB1 IF MORE BYTES TO CLEAR
UJN FABX RETURN
FEE SPACE 4,10
** FEE - FIND EST ENTRY OF DEADSTART DISK.
*
* ENTRY (AP+4) = 6/UNIT, 6/CHANNEL.
*
* EXIT (A) = 0 IF EST ENTRY FOUND.
* = ERROR MESSAGE ADDRESS IF EST ENTRY NOT FOUND.
* (T5) = DEADSTART DISK EST ORDINAL.
*
* USES T2 - T6, CM - CM+4.
*
* MACROS SFA.
FEE4 LDC =C*CEL DEVICE UNDEFINED.*
FEE SUBR ENTRY/EXIT
LDK ESTP
CRD T2
FEE1 SOD T5 DECREMENT EST ORDINAL
LMK NOPE-1
ZJN FEE4 IF END OF EST SCAN
LMK NOPE-1
SFA EST
ADK EQDE
CRD CM
LDD CM
SHN -6
LPN 42
LMN 42
NJN FEE1 IF NOT MASS STORAGE/*LDAM* DEVICE
LDD CM+1
LMD AP+4
LPN 77
ZJN FEE3 IF MATCH ON PRIMARY CHANNEL
LDD CM+2
ZJN FEE1 IF NO ALTERNATE ACCESS
LMD AP+4
LPN 77
FEE2 NJN FEE1 IF NOT A MATCH ON SECONDARY CHANNEL
FEE3 LDD CM+4
SHN 3
ADK DDLL
CRD CM
LDD AP+4
SHN -6
LMD CM+4
LPN 77
NJN FEE2 IF NOT A MATCH ON UNIT
LJM FEEX RETURN
IBM SPACE 4,15
** IBM - ISSUE BML MESSAGES.
*
* ENTRY (BFMS) = WORD COUNT.
* (BFMS+1 - BFMS+477) = CEL SECTOR.
*
* EXIT (EA) = ERROR MESSAGE ADDRESS IF BAD WORD COUNT.
*
* USES BX, CX, EA, EI, T6, T7, WX, CM - CM+4, CN - CN+4.
*
* CALLS CSC, FAB, MSW, TRS.
IBM SUBR ENTRY/EXIT
LDC MMFL SET MACHINE ID INTO BML
CRD CN
LDD CN
STM MBUF+5+3
LDK PPCP
CRD CN
LDD IA DETERMINE PP NUMBER
SBD CN+4
SHN 3
RAM MBUF+2
LDK ZERL INITIALIZE SUPPLEMENT WORD
CRD CN
LDN 0 INITIALIZE INDEX CELLS
STD WX
STD BX
STD CX
IBM1 RJM CSC COMPUTE SYMPTOM CODE
STM MBUF+1
LDN 4 SET CONTINUATION FLAG
STM MBUF+5+1
LDM BFMS+APDL+6,CX SET ELEMENT NUMBER
LPN 7
STD T7 SAVE ELEMENT NUMBER
IBM2 LDC BFMS+APDL+1 STORE BITS 0 - 59 OF REGISTER
ADD CX
STM IBMA
LDD WX
SHN 2
ADD WX
ADC MBUF+2*5
STM IBMB
LDD MA
CWM **,ON
IBMA EQU *-1
SBN 1
CRM **,ON
IBMB EQU *-1
AOD WX INCREMENT ASSEMBLY BUFFER INDEX
LDM BFMS+APDL+6,CX STORE REGISTER NUMBER AND UPPER BITS
SCN 7
STM CN,BX
LDM BFMS+APDL,CX
LPC 377
RAM CN,BX
AOD BX INCREMENT SUPPLEMENT BYTE INDEX
IBM3 LDD WX
LMN 4
NJN IBM4 IF NOT FULL ASSEMBLY BUFFER
RJM FAB FLUSH ASSEMBLY BUFFER
LDM MBUF+5+1 SET NOT FIRST BLOCK BIT
SCN 10
LMN 10
STM MBUF+5+1
IBM4 LDD BX
LMN 4
NJN IBM5 IF SUPPLEMENT WORD NOT FULL
RJM MSW MOVE SUPPLEMENT WORD TO ASSEMBLY BUFFER
UJN IBM3 CHECK FOR ASSEMBLY BUFFER FULL
IBM5 LDN 7 ADVANCE CEL BUFFER INDEX
RAD CX
SBM BFMS
NJN IBM7 IF NOT END OF CEL BUFFER
IBM6 RJM TRS TERMINATE REGISTER SET
LJM IBMX RETURN
IBM7 PJN IBM10 IF BAD WORD COUNT
RJM CSC COMPUTE SYMPTOM CODE
LMM MBUF+1
NJN IBM8 IF SYMPTOM CODE CHANGED
LDM BFMS+APDL+6,CX
LPN 7
LMD T7
ZJN IBM9 IF ELEMENT NUMBER UNCHANGED
* CHECK IF NEXT REGISTER IS FOR THE SECOND PROCESSOR.
LDM BFMS+APDL,CX
SHN 0-10
NJN IBM8 IF NOT A PROCESSOR ERROR
* CHANGE ELEMENT NUMBER IN BITS 32 - 39 OF ELEMENT ID REGISTER
* TO 10(16) TO INDICATE SECOND PROCESSOR.
LDM BFMS+APDL+3,CX
SCN 17
ADK 0#10S-4 SET ELEMENT NUMBER TO 10(16)
STM BFMS+APDL+3,CX
IBM8 RJM TRS TERMINATE REGISTER SET
LJM IBM1 PROCESS NEXT REGISTER SET
IBM9 LJM IBM2 PROCESS NEXT REGISTER
IBM10 LDC =C*BAD CEL WORD COUNT.*
STD EA
LJM IBM6 TERMINATE REGISTER SET AND RETURN
MBUF BSS 0 BML MESSAGE HEADER
VFD 12//COMSDFS/HM0250 MESSAGE ID
VFD 12/0 SYMPTOM CODE
VFD 6/0 PP NUMBER
VFD 6/17 MAINTENANCE CHANNEL
VFD 24/0 UNUSED
VFD 12/0 UNUSED
VFD 12/4 CONTINUATION FLAG
VFD 12/0 UNUSED
VFD 12/0 MACHINE ID
VFD 12/0 UNUSED
BSSZ 4*5 MESSAGE ASSEMBLY BUFFER
IEL SPACE 4,10
** IEL - INITIATE ERROR LOGGING BY *DFT*.
*
* EXIT TO *ERR* IF *DFT* DETERMINES THE REVISION LEVEL OF THE
* *DFT/OS* INTERFACE IS INCORRECT.
* *1MB* INHIBIT FLAG IN *SCRL* CLEARED.
*
* USES T1, T2, CM - CM+4.
*
* MACROS DCHAN, DELAY, EXECUTE, MONITOR, RCHAN.
IEL SUBR ENTRY/EXIT
LDK EIBP READ *EICB* POINTER WORD
CRD CM
LDD CM+3
SHN 14
LMD CM+4
ZJP IEL2 IF NO *DFT* VERIFICATION REQUIRED
ADN DSCM+3
CRD CM
LDD CM+2 SAVE ADDRESS OF *DFT* CONTROL WORD
SHN 14
LMD CM+3
SHN -4
SHN 6
LMD CM
CRD CM READ *DFT* CONTROL WORD
STM IELA
SHN -14
RAM IELA-1
LDD CM+4
SHN 21-/DFT/DCDM
MJN IEL0 IF NOT DEDICATED *DFT*
LDN DSAL RESERVE *CIP* CHANNEL
CRD CM
LDD CM+4
LPN 77
STD T1 SAVE CHANNEL
RCHAN
IEL0 LDD MA
CWM IELB,ON WRITE PP CALL TO MESSAGE BUFFER
LDN 0
STD CM+1
EXECUTE 1MP,=
MONITOR RPPM REQUEST PP FOR *1MB*
IEL1 DELAY
LDC ** READ *DFT* CONTROL WORD
IELA EQU *-1
CRD CM
LDD CM+4 CHECK RESPONSE
STD T2
SHN 21-/DFT/DCVR CHECK VERIFICATION FLAG
PJN IEL1 IF NO REPLY FROM *DFT*
SHN /DFT/DCVR-/DFT/DCDM
MJN IEL1.1 IF NOT DEDICATED *DFT*
LDD T1 RELEASE *CIP* CHANNEL
DCHAN
IEL1.1 LDD T2 CHECK RESPONSE
SHN 21-/DFT/DCRJ
MJN IEL4 IF REVISION LEVEL REJECTED BY *DFT*
SHN /DFT/DCRJ-/DFT/DCDM
MJN IEL3 IF NOT DEDICATED *DFT*
* CLEAR *1MB* INHIBIT FLAG IN *SCRL*.
IEL2 LDC SCRL READ *SCRL*
CRD CM
LDD CM CLEAR *1MB* INHIBIT FLAG
LPC 3777
STD CM
LDC SCRL REWRITE *SCRL*
CWD CM
IEL3 LJM IELX RETURN
* PROCESS *DFT* REJECT.
IEL4 LDC IELC *DFT REVISION LEVEL MISMATCH*
LJM ERR DISPLAY MESSAGE AND HANG
IELB VFD 18/3L1MP,6/**,12/0,24/0
IELC DATA C*DFT REVISION LEVEL MISMATCH.*
LPR SPACE 4,10
** LPR - LOAD AND PREPARE *PPR* IN *DBUF*.
*
* ENTRY (AP - AP+4) = *DSAL*.
*
* EXIT (DBUF - DBUF+PPFW-1) = *PPR*.
*
* USES T1, T2, T5 - T7, CM - CM+4, CN - CN+4.
*
* CALLS RNS.
*
* MACROS ENDMS, MONITOR, SETMS.
LPR SUBR ENTRY/EXIT
LDC 0L1PR SET *PPR* NAME
STD CM+3
SHN -14
STD CM+2
MONITOR SPLM SEARCH PERIPHERAL LIBRARY
LDD CM+1 SET EST ORDINAL
LPC 777
STD T5
LDD CM+2 SET TRACK NUMBER
STD T6
LDD CM+3 SET SECTOR NUMBER
STD T7
SETMS READSYS,ND
LDC DBUF-2
STD T2
LPR1 LDI T2 SAVE TWO WORDS
STD CN
LDM 1,T2
STD CN+1
LDD T2
RJM RNS READ NEXT SECTOR
MJN LPR3 IF I/O ERROR
LDD CN RESTORE TWO WORDS
STI T2
LDD CN+1
STM 1,T2
LDC 500 ADVANCE BUFFER ADDRESS
RAD T2
LDD T1
SHN -6
NJN LPR1 IF NOT END OF *PPR*
ENDMS
LDK PPCP GET FWA OF PP COMMUNICATIONS AREA
CRD CM
LDD AP *APP* PP NUMBER
SHN 3
ADD CM+4
STM DBUF+IA+5 SET UP *IA*
ADN 1
STM DBUF+OA+5 SET UP *OA*
ADN 1
STM DBUF+MA+5 SET UP *MA*
LPR2 LJM LPRX RETURN
LPR3 LDC =C* PPR LOAD ERROR.*
STM DAPA
UJN LPR2 RETURN
MSW SPACE 4,10
** MSW - MOVE SUPPLEMENT WORD TO ASSEMBLY BUFFER.
*
* ENTRY (WX) = ASSEMBLY BUFFER INDEX.
* (CN - CN+4) = SUPPLEMENT WORD.
*
* EXIT (BX) = 0.
* (CN - CN+4) = 0.
*
* USES BX, WX, CN - CN+4.
MSW SUBR ENTRY/EXIT
LDD WX MOVE SUPPLEMENT WORD
SHN 2
ADD WX
ADC MBUF+2*5
STM MSWA
LDD MA
CWD CN
CRM **,ON
MSWA EQU *-1
AOD WX INCREMENT ASSEMBLY BUFFER INDEX
LDK ZERL CLEAR SUPPLEMENT WORD
CRD CN
LDN 0 RESET BYTE INDEX
STD BX
UJN MSWX RETURN
PCL SPACE 4,15
** PCL - PROCESS CRITICAL ERROR LOG.
*
* ENTRY (AP - AP+4) = *DSAL*.
*
* EXIT (A) = 0 IF CRITICAL ERROR LOG NOT PRESENT OR READ
* WITHOUT ERROR.
* .GT. 0 IF ERROR OTHER THAN *APP* NOT RESPONDING.
* .LT. 0 IF *APP* NOT RESPONDING.
*
* USES EA, SC, CM+1.
*
* CALLS CCF, CDA, IBM.
*
* MACROS MONITOR.
PCL3 LDD SC SET EXIT CONDITION
SHN 14
PCL SUBR ENTRY/EXIT
LDD AP+3
ZJN PCLX IF CRITICAL ERROR LOG NOT PRESENT
LDD AP+4 REQUEST DEADSTART CHANNEL
LPN 37
STD CM+1
LDN 0
STD CM+2
MONITOR RCHM
LDC 3RLCE SET PROGRAM NAME
STM BFMS
SHN -6
SCN 77
STM BFMS+1
LDK CDAS*10000+BFMS REQUEST CRITICAL ERROR LOG
RJM CDA COMMON DISK AREA REQUEST
ZJN PCL1 IF NO ERROR
STD EA SAVE STATUS
SHN -14
STD SC
PCL1 MONITOR DCHM
LDM BFMS
SHN 21-13
PJN PCL2 IF NO DATA OR ERROR
SHN 3
SHN 13-21-3
STM BFMS
RJM IBM ISSUE BML MESSAGES
RJM CCF CLEAR CEL FLAG IN DEADSTART SECTOR
ZJN PCL2 IF NO ERROR
STD EA
SHN -14
STD SC
PCL2 LJM PCL3 RETURN
TRS SPACE 4,10
** TRS - TERMINATE REGISTER SET.
*
* ENTRY (BX) = SUPPLEMENT BYTE INDEX.
* (WX) = ASSEMBLY BUFFER INDEX.
*
* USES T6, WX.
*
* CALLS FAB, MSW.
TRS SUBR ENTRY/EXIT
LDD BX
ZJN TRS3 IF SUPPLEMENT WORD IN CURRENT BLOCK
LDD WX
SBD BX
STD T6
PJN TRS1 IF SUPPLEMENT WORD NOT IN CURRENT BLOCK
ADN 4
UJN TRS2 PROCESS SUPPLEMENT WORD IN CURRENT BLOCK
TRS1 RJM FAB FLUSH ASSEMBLY BUFFER
LDD T6
TRS2 STD WX
RJM MSW MOVE SUPPLEMENT WORD TO ASSEMBLY BUFFER
TRS3 LDM MBUF+5+1 CLEAR CONTINUATION BIT
SCN 4
STM MBUF+5+1
RJM FAB FLUSH ASSEMBLY BUFFER
UJN TRSX RETURN
CEL SPACE 4,10
* COMMON DECKS.
QUAL
CDA$ SET 1 SELECT *COMPAPI* COMMON DISK AREA ROUTINE
PRS$ SET 1 SELECT *COMPAPI* PRESET PROCESSOR
QUAL *
LIST X
*CALL COMPAPI
LIST *
CEL SPACE 4,10
RSTC RESTORE CHANNEL I/O INSTRUCTIONS
CEL SPACE 4,10
USE BUFFER
* DATA BUFFER.
DBUF EQU *+2
SPACE 4,10
** OVERLAID COMMON DECKS.
LIST X
*CALL COMPPDI
LIST *
SPACE 4,10
* OVERLAY ORIGINS.
OVL0 EQU DBUF+PPFW *0PI* ORIGIN
ERRPL OVL0+500-BFMS BUFFER OVERFLOW
CEL SPACE 4,10
* OVERFLOW CHECKS.
ERRPL OVL0+ZPXL-BFMS BUFFER OVERFLOW
TTL REC/4RH - RECOVER MASS STORAGE DEVICES.
TITLE
QUAL RMD
IDENT 4RH,RMDX
*COMMENT REC - RECOVER MASS STORAGE DEVICES.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
RMD SPACE 4,10
*** RMD - RECOVER MASS STORAGE DEVICES.
*
* *RMD* SCANS THE EST FOR MASS STORAGE DEVICES
* AND INITIATES A COPY OF *1RF* FOR EACH ONE.
RMD SPACE 4,10
ORG OVLA
** RMD - RECOVER MASS STORAGE DEVICES.
*
* ENTRY (RS) = RECOVERY STATUS.
* (NC) = SYSTEM CONTROL POINT NUMBER.
RMD SUBR ENTRY/EXIT
LDD RS SET RECOVERY STATUS IN PP CALL
STM RMDA+4
LDN ESTP GET ORDINAL OF LAST MS EQUIPMENT + 1
CRD T7-3
LDN NOPE-1 SET BEGINNING OF EST SEARCH
STD T6
LDN 0 CLEAR PP COUNT
STD T5
STD T4
STD DI CLEAR INITIALIZE COUNT
LDN EJTE
STD T3
LDN EJTP FETCH EJT POINTER
CRD CA
LDD CA GET SYSTEM EJT ENTRY
SHN 14
LMD CA+1
CRM BUFM,T3
.EO EQU DSEO-1
ADK .EO*EJTE SAVE DEADSTART EJT ENTRY SLOT
CRM RMDC,T3
SBN EJTE STORE DEADSTART EJT ENTRY
CWM BUFM,T3
* REQUEST PP-S TO PROCESS DEVICES.
RMD1 RJM GND GET NEXT DEVICE
ZJN RMD3 IF NO MORE DEVICES
STM RMDA+2 SET EST ORDINAL TO RECOVER
LDK PPAL
CRD CM
LDD CM+4 CHECK NUMBER OF REMAINING PP-S
SBN 3
MJN RMD4 IF LESS THAN 3 FREE
EXECUTE 1RF,=
LDD MA REQUEST ANOTHER COPY OF *1RF*
CWM RMDA,ON
LDN 1 SET PRIORITY REQUEST
STD CM+1
MONITOR RPPM REQUEST PP
LDD CM+1
ZJN RMD4 IF NO PP AVAILABLE
STM RMDB,T5
AOD T5
AOM RMDA+3 ADVANCE CONTROL POINT NUMBER
SBD NC
NJN RMD1 IF MORE CONTROL POINTS AVAILABLE
* AS PP-S COMPLETE, START THEM ON ANOTHER DEVICE.
RMD2 RJM GND GET NEXT DEVICE
RMD3 ZJN RMD5 IF NO MORE DEVICES
RMD4 RJM CRP CHECK RUNNING PP-S
LDD T6
STD CN+2
LDM RMDB,T1 TELL PP TO START NEXT DEVICE
CWD CN
UJN RMD2 LOOP
* AS PP-S FINISH, TELL THEM TO DROP.
RMD5 RJM CRP CHECK RUNNING PP-S
LDC 4000
STD CN+2
LDM RMDB,T1 TELL PP TO DROP
CWD CN
LDN 0 INDICATE THAT PP HAS DROPPED
STM RMDB,T1
AOD T4 INCREMENT COUNT OF DROPPED PP-S
LMD T5
NJN RMD5 IF PP-S STILL RUNNING
LDC MMFL
CRD CN READ MMF STATUS WORD
LDD CN+2
ZJN RMD6 IF DAT NOT INTERLOCKED
LDD DI
NJN RMD6 IF INITIALIZATION REQUESTS PENDING
STD CN+2
LDC MMFL CLEAR INTERLOCK STATUS
CWD CN
LCN DATI RELEASE FLAG REGISTER INTERLOCK
RJM IFR
RMD6 LDD CA EJT BASE ADDRESS
SHN 14
LMD CA+1
ADK DSEO*EJTE RESTORE DEADSTART EJT ENTRY SLOT
CWM RMDC,T3
LJM RMDX RETURN
RMDA VFD 18/3R1RF,6/0,12/0,12/1,12/0
RMDB BSSZ 20D-4 PP INPUT REGISTER LIST
RMDC BSS 5*EJTE EJT ENTRY SAVE AREA
CRP SPACE 4,10
** CRP - CHECK RUNNING PP-S.
*
* EXIT (T1) = INDEX INTO PP TABLE.
* (T5) = ASSIGNED PP COUNT.
* (CN - CN+4) = CONTENTS OF PP INPUT REGISTER.
*
* USES T1, T2, FN - FN+4.
CRP SUBR ENTRY/EXIT
CRP1 LDN 0
STD T1
CRP2 LDM RMDB,T1
ZJN CRP3 IF PP HAS ALREADY DROPPED
CRD CN
LDD CN+2
ZJN CRPX IF PP DONE
CRP3 AOD T1
LMD T5
NJN CRP2 IF MORE PP-S TO CHECK
UJN CRP1 LOOP
GND SPACE 4,10
** GND - GET NEXT DEVICE.
*
* ENTRY (T6) = ORDINAL OF LAST DEVICE PROCESSED.
*
* EXIT (A) = 0 IF NO MORE DEVICES.
* = (T6) = ORDINAL OF NEXT DEVICE TO PROCESS.
*
* USES FN - FN+4.
GND SUBR ENTRY/EXIT
GND1 AOD T6
LMD T7
ZJN GNDX IF END OF MASS STORAGE DEVICES
SFA EST,T6
ADK EQDE READ EST ENTRY
CRD FN
LDD FN CHECK DEVICE AVAILABILITY
SHN -6
LPN 41
LMN 40
NJN GND1 IF NOT AVAILABLE MS DEVICE
LDD FN
LPN 3
LMN DWES
ZJN GND1 IF DEVICE IS *DOWN*
LDD FN+4
SHN 3
ADK STLL FETCH LOCAL MST STATUS
CRD FN
LDD FN
SHN 22-LIAL+LIAL/12D*12D
LPN 1
RAD DI COUNT INITIALIZED DEVICES
LDD T6
UJP GNDX RETURN
SPACE 4,10
BUFM BSS 0 MESSAGE HOLDING BUFFER
SPACE 4,10
** OVERFLOW CHECK.
ERRPL BUFM+5*3-10001 MESSAGE WRAPS PP MEMORY
TTL REC - SYSTEM RECOVERY PROCESSOR.
TTL REC - SYSTEM RECOVERY PROCESSOR.
SPACE 4,10
END