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