IDENT CMS,OBOV-2 PERIPH BASE M SST QUAL$ EQU 1 DEFINE UNQUALIFIED COMMON DECKS *COMMENT MSM - ON LINE MASS STORAGE MANAGER. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. TITLE MSM/CMS - MASS STORAGE MANAGER. CMS SPACE 4 ***** MSM - MASS STORAGE MANAGER. * * J. L. WARDELL. 73/02/15. * P. D. HAAS. 74/09/09. * S. L. BETH. 74/12/20. * R. M. DESSEL 82/12/15. * P. C. SMITH. 94/03/21. SPACE 4,10 *** *CMS* SURVEYS ALL MASS STORAGE DEVICES AND VERIFIES * THAT THE PROPER PHYSICAL DEVICES ARE MOUNTED OR MAKES THEM * AVAILABLE FOR USER ACCESS IF POSSIBLE. * * ON LINE VERIFICATION OCCURS EVERY 60D SCHEDULER * CYCLES. TO ENABLE/DISABLE THIS USE *DSD* COMMAND * *ENABLE/DISABLE REMOVABLE PACKS*. SPACE 4,10 ** PROGRAMMING NOTE. * DIRECT CELLS *LA* AND *EE* (*RG* AND *RG+1*) * ARE USED DURING LEVEL 3 RECOVERY IN OVERLAY *4DB* IF * EXECUTING ON A CENTRAL MEMORY EXTENSION MAINFRAME. SPACE 4 ** CALL. * *T, 18/ CMS,6/,12/ R,24/ * * R = POSITION IN EQUIPMENTS FOR UNLOAD INTERLOCK. SPACE 4 *** DAYFILE MESSAGES. * * SEE *4DA* DOCUMENTATION. SPACE 4 *** ERROR LOG MESSAGES. * * *ETXXX, UYY,PS=ZZZZZZ.* = A NEW DEVICE HAS BEEN INTRODUCED ON * EST ORDINAL *XXX* OF TYPE *ET*. UNIT *YY* OF THE DEVICE HAS * A PACK SERIAL NUMBER OF *ZZZZZZ*. * * SEE *4DB* DOCUMENTATION FOR ADDITIONAL MESSAGES. SPACE 4 *** ACCOUNT FILE MESSAGES. * * *ADDU, XXX, FFFFFFF, DD.* = EST ORDINAL XXX WITH FAMILY NAME * FFFFFFF AND DEVICE NUMBER DD HAS BEEN UNLOADED. * * *ADPD, XXX, PPPPPPP, UUUUUUU.* = EST ORDINAL XXX WITH * PACKNAME PPPPPPP HAS BEEN DISMOUNTED. IF PRESENT, UUUUUUU * INDICATES THAT THE PACK WAS A PRIVATE PACK BELONGING TO * THAT USER. * * SEE *4DA* DOCUMENTATION FOR ADDITIONAL MESSAGES. SPACE 4 *** OPERATOR MESSAGES. * * *ERROR ON ACTIVE DEVICES.* = LABEL CHECKING HAS DETECTED * A DEVICE WITH ACTIVE FILES AS HAVING SOME TYPE OF ERROR (SEE * E,M DISPLAY FOR ERROR TYPE ). THIS IS AN ABNORMAL SITUATION * AND SHOULD BE CORRECTED IMMEDIATELY. * * SEE E,M DISPLAY (DSD DOCUMENTATION) FOR ERROR TYPES POSSIBLE. * * SEE *4DB* DOCUMENTATION FOR ADDITIONAL MESSAGES. SPACE 4 ** ROUTINES CALLED. * * 0PI - LIST PACK SERIAL NUMBERS. * 5ME - FORMAT ERROR MESSAGES. SPACE 4 *CALL COMPMAC *CALL COMSACC *CALL COMSCPS *CALL COMSDSL *CALL COMSEVT *CALL COMSHIO *CALL COMSIOQ *CALL COMSLSD *CALL COMSMLS MMF$ EQU 1 INITIALIZE COMSMMF DIRECT CELLS *CALL COMSMMF *CALL COMSMSC *CALL COMSMSP *CALL COMSPFM *CALL COMSPIM *CALL COMSSSD *CALL COMSWEI *CALL COMSZOL SPACE 4,10 LIST X *CALL COMSMST SPACE 4,10 LIST * TITLE MACRO DEFINITIONS. SPACE 4 ** MACRO DEFINITIONS. COMMON SPACE 4,10 ** COMMON - COMMON CODE FOR *CMS* AND *RMS. * * THIS MACRO PROVIDES IDENTICAL CODE FOR *CMS* AND *RMS* * WHICH MAY BE CALLED BY THE OVERLAYS COMMON TO THESE TWO * ROUTINES. COMMON MACRO QUAL SPACE 4,10 * COMMON WORKING STORAGE. ECLT CON 0 EXTENDED MEMORY LABEL TRACK LDMP CON 0 LINK DEVICE MST POINTER SPACE 4,10 *CALL COMPC2D *CALL COMPIFR *CALL COMPTGB LRA SPACE 4,15 ** LRA - LOAD REFERENCE ADDRESS. * * ENTRY (LRAB) = RA/100 OF FREE AREA. * (TA) = RA/100 OF FREE AREA FOR NON-CME. * = 4000 IF CME PRESENT. * (LRAA) = MODIFIED FOR DESIRED OPERATION. * (LRAC) = MODIFIED FOR DESIRED OPERATION. * * EXIT (A) = REFERENCE ADDRESS. * *R* REGISTER LOADED IF NECESSARY. * * USES RG, RG+1. LRA1 LDC 0 LOAD RA INTO *R* REGISTER LRAB EQU *-1 STD RG+1 SHN -14 STD RG LRD RG LRA2 LDD RA SET RA LRAC EQU *-1 * LDD TA SHN 6 LRA SUBR ENTRY/EXIT LRAA UJN LRA2 SET RA * UJN LRA1 (CME PRESENT) PTA SPACE 4,10 ** PTA - PRESET FIRST WORD ADDRESS OF TRT. * * ENTRY (FN - FN+4) = EST ENTRY OF DEVICE. * * EXIT (STAA) = FWA OF TRT. * * USES CM - CM+4. PTA SUBR ENTRY/EXIT LDD FN+4 GET FWA OF TRT SHN 3 ADN TRLL CRD CM LDD CM+3 SET FWA OF TRT LPN 77 LMC LDCI STM STAA-1 LDD CM+4 STM STAA UJN PTAX RETURN STA SPACE 4,10 ** STA - SET FIRST WORD ADDRESS OF TRT. * * ENTRY (STAA) = FWA OF TRT. STA SUBR ENTRY/EXIT LDC 0 STAA EQU *-1 (FWA TRT) UJN STAX RETURN QUAL * ENDM SPACE 4 ** UJMF - GENERATE LIST OF INSTRUCTIONS TO BE MODIFIED * IF RECOVERING MMF SYSTEM. * * UJMF TAG UJMF MACRO TAG LOCAL A MACREF UJMF A UJN TAG L"QUAL" RMT CON A RMT UJMF ENDM SPACE 4 ** MMTE - GENERATE MACHINE MASK TABLE ENTRY. * * MMTE ADDR * ADDR = INSTRUCTION ADDRESS. MMTE MACRO L LOCAL B MACREF MMTE B EQU L T"QUAL" RMT CON B RMT MMTE ENDM TITLE DIRECT LOCATION ASSIGNMENTS. SPACE 4 **** DIRECT LOCATION ASSIGNMENTS. RG EQU 15 - 16 *R* REGISTER LOADING TEMP CELLS RI EQU 16 - 17 RANDOM INDEX FOR *CRA* T8 EQU 16 SCRATCH T9 EQU 17 SCRATCH QF EQU 17 FIRST TRACK OF INACTIVE QUEUE FILE SN EQU 17 SECTOR NUMBER DURING LABEL PROCESSING FS EQU 20 - 24 CM WORD BUFFER (5 LOCATIONS) TA EQU 25 REFERENCE ADDRESS (LEVEL 3 RECOVERY) CD EQU 25 CHECKPOINT DEVICE (4DA, 4DK) TW EQU 26 CONSTANT TWO QT EQU 27 QUEUED FILE TRACK (4DA) CN EQU 30 - 34 CM WORD BUFFER (5 LOCATIONS) QS EQU 35 QUEUED FILE SECTOR (4DA) QI EQU 36 QUEUE INDEX (4DA) EC EQU 37 ERROR CODE CR EQU 37 CM BUFFER ADDRESS (4DA) FN EQU 40 - 44 EST ENTRY RD EQU FN+3 - FN+7 DEVICE RECOVERY STATUS INFORMATION TS EQU FN+5 MST TRACKS FOR MMF SHARED DEVICES RE EQU FN+6 EQUIPMENT RECOVERY STATUS INFORMATION AL EQU FN+7 CM ADDRESS FOR MST LABEL DATA EQ EQU IR+3 EST ORDINAL RS EQU IR+4 RECOVERY STATUS AM EQU 57 ACCESS MODE FLAG RC EQU 60 DEVICE RECOVERY COUNT CF EQU 60 CONTROL POINT FOR MESSAGES (*1RF*/*4DA*) LO EQU 61 LAST MASS STORAGE ORDINAL + 1 UC EQU 62 UNIT COUNT DI EQU 62 DAT INDEX ET EQU 62 EOI TRACK ES EQU 63 EOI SECTOR SL EQU 63 SECTOR LIMIT EF EQU 63 ERROR FLAG CA EQU 64 - 65 CENTRAL ADDRESS P1 EQU 66 SCRATCH P2 EQU 67 SCRATCH **** SPACE 4,10 * DEFINE QUAL BLOCK ORDER. QUAL CMS QUAL RMS QUAL RDA QUAL ISD QUAL RDC QUAL RDD QUAL RDG QUAL RDI QUAL SPACE 4 ** CONSTANTS. FLRC EQU 1100 FIELD LENGTH FOR TRT RECOVERY SPACE 4 ** INTERNAL BUFFERS AND TABLES. BAEI EQU PPFW *BAET* IMAGE DLPB EQU BAEI+5 LABEL PARAMETER BLOCK (PFGL + PUGL) OBOV EQU DLPB+5*2 BASE OVERLAY ORIGIN SPACE 4,10 ** DEVICE RECOVERY STATUS TABLE. * * THE DEVICE RECOVERY TABLE IS CONTAINED IN *MSM-S* * FL. IT CONSISTS OF ONE WORD ENTRIES FOR EACH MASS * STORAGE EQUIPMENT. THE FORMAT IS AS FOLLOWS - *T, 12/ DT,12/ MT,12/ TS,12/ RE,12/ AL * * DT = DEVICE TYPE. * MT = MST/10B. * TS = MST TRACKS FOR MMF SHARED DEVICES. * RE = EQUIPMENT RECOVERY STATUS INFORMATION. * WHERE RE IS DEFINED AS: * 1/M,1/S,1/V,1/R,1/C,1/U,1/D,1/I,1/A,1/T,1/E,1/L * M = MASS STORAGE DEVICE. * S = SYSTEM/ASL/LINK DEVICE. * V = SHARED DEVICE. * R = REMOVABLE DEVICE. * C = DEVICE CLEARED FOR RECOVERY. * U = UNAVAILABLE DEVICE. * D = INCORRECT FULL TRACK ACCESS. * I = DEVICE INITIALIZATION SELECTED. * A = ACCESSED PREVIOUSLY (DAP) BY THIS MF (SHARED * DEVICES). * T = ECS TRACK FOR MST/TRT REQUIRED (MMF SHARED * DEVICES). * E = DEVICE ACCESSED PREVIOUSLY (DAP) BY SOME MF * (SHARED DEVICES ONLY). * L = LABEL STATUS (0 = LABEL IMAGE PRESENT). * AL = CM ADDRESSES FOR MST LABEL DATA. TITLE COMMON WORKING STORAGE AND SUBROUTINES. CMS SPACE 4 QUAL CMS ORG OBOV-2 LJM PRS PRESET *CMS* SPACE 4,10 LIST M COMMON LIST * TITLE MAIN ROUTINE. ** CMS - MAIN PROGRAM. CMS EXECUTE 4DB LDC LCMS ENABLE MMF RECOVERY ROUTINES RJM EMF CMS1 LDC RDL READ LABELS RJM MRL CMS2 LDD RC ZJN CMS3 IF NO REDEFINITION REQUESTS LJM CIR1 PROCESS DEVICE REDEFINITION CMS3 EXECUTE 4DD LOAD VERIFICATION ROUTINES LDC CAD VERIFY ACTIVE DEVICES RJM MRL CMSB LDC CID CHECK INACTIVE DEVICES * UJN CMS4 (DEADSTART SEQUENCING IN EFFECT) RJM MRL CMS4 LDN 0 CLEAR RECOVERY COUNT STD RC EXECUTE 4DE LOAD UNAVAILABLE DEVICE ROUTINES LDC CUD CHECK UNAVAILABLE DEVICES RJM MRL LDD RC ZJN CMS7 IF NO EQUIPMENT TO RECOVER UJMF CMS5 RJM GDT LOAD DEVICE ACCESS TABLE CMS5 EXECUTE 4DG LOAD RECOVERY ROUTINES LDD HN DO NOT CLEAR UNAVAILABLE RAM /RDG/EMTB LDC RCD RECOVER DEVICES RJM MRL UJMF CMS6 RJM UMT UPDATE MMF TABLES CMS6 EXECUTE 4DC VERIFY PF SYSTEM RJM RPF RELEASE DA INTERLOCKS CMS7 RJM CIR CHECK FOR INITIALIZE REQUESTS CMSD LDN 0 ZJN DPP IF NO ACTIVE DEVICE ERRORS LDN NCPL CRD CM AOD CM+1 DISPLAY MESSAGE AT SYSTEM CP SHN 7 ADN MS2W CWM CMSE,TR * DROP PP. DPP UJN DPP1 DEADSTART SEQUENCING NOT IN EFFECT * LDN CIRD-CIRB (DEADSTART SEQUENCING) * LDN CIRE-CIRB (DEADSTART SEQUENCING- RECOVERY DEADSTART) DPPB EQU *-1 RAM CIRA LDN CIRF NUMBER OF COMMANDS * LDN CIRF-1 (RECOVERY DEADSTART) DPPC EQU *-1 LJM CIR5 WRITE COMMAND BUFFER DPP1 MONITOR DPPM LJM PPR CMSE DATA C* ERROR ON ACTIVE DEVICES.* TITLE SUBROUTINES. RPF SPACE 4 ** RPF - RELEASE DIRECT ACCESS INTERLOCKS. * * ENTRY (RE) SET FOR DEVICES RECOVERED. * * EXIT INTERLOCKS FOR DA FILES ON DEVICES RECOVERED, CLEARED. * *IQFT* BUILT IF QUEUED FILES FOUND. * PACK SERIAL NUMBERS LISTED FOR DEVICES RECOVERED. * * USES T5, EQ, CR, FN - FN+4. * * CALLS IFR, LSN, 4DA. * * MACROS EXECUTE, SFA, UJMF. RPF1 LDD RA SHN 6 ADD T5 CRD RD LDD RE DETERMINE IF DEVICE RECOVERED SHN 21-7 PJN RPF2 IF DEVICE NOT RECOVERED SFA EST,T5 READ EST ENTRY ADK EQDE CRD FN RJM /RDA/LSN LIST PACK SERIAL NUMBERS LDN 0 INDICATE NO INITIALIZE RJM /RDA/RDA RECOVER PRESERVED FILES RPF2 AOD EQ ADVANCE TO NEXT EQUIPMENT RPF3 STD T5 LMD LO NJN RPF1 IF NOT END OF MS ENTRIES RPF4 UJMF RPFX RPFB LDN 0 NJN RPFX IF DATI SET FOR INITIALIZATION LCN DATI CLEAR FLAG REGISTER INTERLOCK RJM IFR RPF SUBR ENTRY/EXIT LDD RC ZJN RPF4 IF NO EQUIPMENT RECOVERED EXECUTE 4DA LOAD DA INTERLOCK ROUTINES LDD CA+1 SET *IQFT* BUFFER ADDRESS STD CR LDN NOPE INITIALIZE EST ORDINAL FOR SEARCH STD EQ UJN RPF3 CIR SPACE 4 ** CIR - CHECK FOR INITIALIZE REQUESTS. * * EXIT *MSI* CALLED IF ANY INITIALIZE REQUESTS FOUND. * * USES EQ, P2, RC, FS - FS+4, FN - FN+4, CN - CN+4. * * CALLS IFR. * * MACROS NFA, SFA, UJMF. CIR6 LDD FN SHN 0-13 ZJN CIR7 IF NOT MASS STORAGE LDD FN LPN 2 NJN CIR10 IF DEVICE OFF OR DOWN LDD FN+4 READ *STLL* SHN 3 ADN STLL CRD FS SBN STLL-DULL CRD CM LDD FS+1 LMN STNR LPN 77 CIR7 ZJN CIR10 IF EQUIPMENT NOT READY LDD FS LPC MLFPR+MLUNL+MLIRP LMN MLIRP NJN CIR10 IF INITIALIZE NOT TO BE PROCESSED LDD FS SHN -7 ZJN CIR9 IF PERMANENT FILES NOT INVOLVED LPN MLIAL/1S7 NJN CIR8 IF DEADSTART INITIALIZE LDD CM+4 CHECK ACTIVITY LPC 3777 ADD CM+1 ADD FS+3 NJN CIR10 IF ACTIVE FILES ON DEVICE CIR8 AOD RC INCREMENT RECOVERY COUNT CIR9 AOD P2 ADVANCE INITIALIZATION COUNT CIR10 AOD EQ ADVANCE TO NEXT EQUIPMENT LMD LO ZJN CIR11 IF END OF MASS STORAGE DEVICES SFA EST,EQ ADK EQDE CRD FN LJM CIR6 CIR11 LDD P2 CHECK INITIALIZE STATUS NJN CIR2 IF INITIALIZE REQUESTS PRESENT CIR SUBR ENTRY/EXIT LDN 0 PRESET EQUIPMENT INDEX STD RC CLEAR INITIALIZE COUNT STD P2 LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH STD EQ UJN CIR10 ENTER LOOP * ENTERED HERE EXTERNALLY. CIR1 LDN CIRC-CIRB CHANGE COMMAND CALL TO *CONFIG.* RAM CIRA CIR2 UJMF CIR4 LDD RC ZJN CIR4 IF NO REQUESTS INVOLVING PF DESCRIPTION LDC MMFL READ MMF STATUS WORD CRD CN LDD CN+2 CHECK DATI STATUS LMC 4000 ZJN CIR3 IF DAT INTERLOCKED STD CN+2 SET DAT INTERLOCKED SHN 0-13 ZJN CIR4 IF INTERLOCKED BY THIS MACHINE LDN DATI GET FLAG REGISTER INTERLOCK RJM IFR ZJN CIR3 IF DAT INTERLOCKED LJM GDT1 RECALL *CMS* CIR3 LDD RC SET INITIALIZATION COUNT RAD CN+2 LDC MMFL CWD CN * SET UP COMMAND TO INITIATE *MSI*. CIR4 LDN 1 * ENTERED HERE FROM *DPP*. * (A) = NUMBER OF COMMAND WORDS. CIR5 STD T1 NUMBER OF COMMAND WORDS LDD CP READ COMMAND POINTER WORD ADN CSPW CRD CM LDC CSBN SET FWA OF COMMANDS STD CM+3 SBD T1 SET LIMIT OF COMMANDS STD CM+4 LDD CP WRITE *CSPW* ADN CSPW CWD CM NFA CSBN STORE COMMANDS CWM CIRB,T1 CIRA EQU *-1 LJM DPP1 DROP PPU CIRB VFD 60/0LMSI. CIRC VFD 60/0LCONFIG. CIRD BSS 0 DATA C*CLDT.* CON 0 CIRE DATA C*$ISF(FM=0,SJ,SP)* * DATA C*$ISF(FM=0,SJ)* (RECOVERY DEADSTART) CON 0 CIRF2 EQU *-CIRD CIRF EQU CIRF2/5 CM LENGTH OF COMMANDS ERRNG 40-CIRF COMMAND BUFFER OVERFLOW GDT SPACE 4 ** GDT - GET DEVICE ACCESS TABLE. * * EXIT DEVICE ACCESS TABLE LOADED. * TO *RCL* IF DAT BUSY. * * USES P2, CN - CN+4. * * CALLS CLK, IFR, LDT. * * MACROS EXECUTE. GDT3 RJM LDT LOAD DEVICE ACCESS TABLE LDD P2 SET *DATI* STATUS FOR *RPF* RAM RPFB GDT SUBR ENTRY/EXIT LDC MMFL READ MMF STATUS WORD CRD CN LDD CN+2 CHECK DATI STATUS SHN -6 STD P2 LMN 40 ZJN GDT3 IF DAT INTERLOCKED LDN DATI GET DAT INTERLOCK RJM IFR ZJN GDT3 IF INTERLOCK SET * ENTERED HERE EXTERNALLY. GDT1 LDD CP ADN MS2W CWM GDTA,TR LDN FIRR FLAG REGISTER INTERLOCK REJECT LJM RCL RECALL CMS GDTA DATA C*$WAITING - RECOVERY INTERLOCK.* RCL SPACE 4,10 ** RCL - RECALL PP. * * ENTRY (A) = RECALL STACK REASON CODE. * * EXIT TO *PPR*. * * USES LA, CM - CM+4. * * MACROS MONITOR. RCL STD CM SET REASON CODE LDK ZERL CRD CM+1 LDD MA ENTER PP RECALL REQUEST CWM RCLA,ON CWD CM MONITOR RECM LJM PPR EXIT TO PP RESIDENT RCLA VFD 60/0LCMS * CODE BEYOND THIS POINT MAY BE OVERLAID. SDVR EQU * IAM SPACE 4 ** IAM - ISSUE ACCOUNTING MESSAGE. * * ENTRY (EQ) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT MESSAGE ISSUED TO ACCOUNTING DAYFILE. * * USES T1, CM - CM+4, CN - CN+4. * * CALLS ACS, C2D, DFM. IAM SUBR ENTRY/EXIT LDC IAMB SET ADDRESS OF ASSEMBLY BUFFER STD T1 LDD EQ CONVERT UPPER TWO DIGITS OF EST ORDINAL SHN -3 RJM C2D STD CM LDD EQ CONVERT LOWER DIGIT OF EST ORDINAL LPN 7 ADN 1R0 SHN 6 STD CM+1 LDN CM ADD EST ORDINAL TO MESSAGE RJM ACS LDC =C*, * ADD SEPARATOR TO MESSAGE RJM ACS LDD FN+4 GET DEVICE DESCRIPTION SHN 3 ADN PFGL CRD CM ADN PUGL-PFGL READ USER NAME CRD CN LDD CM+3 EXTRACT DEVICE NUMBER LPN 77 ZJN IAM1 IF AUXILIARY DEVICE RJM C2D CONVERT TO DISPLAY CODE STD CN LDD CM+3 SET END OF FAMILY NAME SCN 77 STD CM+3 LDC 2RDU&2RPD IAM1 LMC 2RPD SET MESSAGE PREFIX STM IAMA+1 LDN CM ADD FAMILY/PACKNAME TO MESSAGE RJM ACS LDD CN ZJN IAM2 IF NO USER/DEVICE NUMBER LDC =C*, * RJM ACS LDD CN+3 SET END OF USER NAME SCN 77 STD CN+3 LDN CN ADD USER/DEVICE NUMBER TO MESSAGE RJM ACS IAM2 LDC =C*.* SET MESSAGE TERMINATOR RJM ACS LDC IAMA+ACFN ISSUE MESSAGE TO ACCOUNT FILE RJM DFM * LDN 0 CLEAR ASSEMBLY BUFFER STM IAMB LJM IAMX RETURN IAMA DATA 6HADPD, IAMB BSSZ 15 ASSEMBLY BUFFER RCD SPACE 4 ** RCD - RECOVER DEVICES. * * ENTRY (RE) = EQUIPMENT TO RECOVER. * (AL) = CM ADDRESS CONTAINING LABEL MST. * (RC) = RECOVERY COUNT. * (EQ) = (T5) = EST ORDINAL. * (CA+1) = CM ADDRESS OF TRT BUFFER. * (FN - FN+4) = EST ENTRY. * * EXIT DEVICES RECOVERED OR SET UNAVAILABLE. * (A) .LT. 0 IF RECOVERY INFORMATION NOT TO * BE REWRITTEN TO CM UPON RETURN TO *MRL*. * * USES CA, EC, T1, CN - CN+4. * * CALLS CSD, DFM, IES, SEC, UDT. * * MACROS SMSTF, UJMF. RCD9 SCN 2 CLEAR INTERNAL SHARED STATUS SHN 7+1 STD RE RCD SUBR ENTRY/EXIT SHN 21-7 PJN RCD9 IF DEVICE NOT BEING RECOVERED SMSTF LPTU PROHIBIT TRT UPDATE BY *1RU* RJM SEC SET PROPER EQUIPMENT CONFIGURATION UJMF RCD3 NON MMF TRANSFER LDD RA GET DEVICE NAME FROM LABEL MST SHN 6 ADD AL ADN PFGL CRD CN RJM CSD CHECK SHARED DEVICE STATUS NJN RCD1 IF *DAT* CONFLICT LDD RS NJN RCD2 IF CONTINUATION OF RECOVERY DEADSTART LDD RE LPN 10 ZJN RCD2 IF NOT ACCESSED BY THIS MACHINE LDC CSDC RCD1 RJM DFM ISSUE MESSAGE TO DAYFILE LDN STCE SET CONFIGURATION ERROR UJN RCD5 ENTER ERROR STATUS RCD2 RJM UDT UPDATE DEVICE ACCESS TABLE NJN RCD1 IF MST/TRT TRACK UNAVAILABLE RCD3 LDD RE CHECK STATUS OF LABEL READ LPN 40 ZJN RCD4 IF VALID ACCESS MODE LDN STLE SET LABEL ERROR UJN RCD5 ENTER ERROR STATUS * READ AND EDIT TRT. RCD4 RJM RTT ZJN RCD6 IF RECOVERY COMPLETE * ERROR IN RECOVERY OF DEVICE. RCD5 STD EC SET ERROR STATUS SOD RC DECREMENT RECOVERY COUNT RJM IES INITIALIZE EQUIPMENT STATUS * LCN 0 (*MRL* REWRITE RECOVERY TABLE FLAG) RCD6 LJM RCDX RETURN RQS SPACE 4 ** RQS - REQUEST STORAGE. * * ENTRY (A) = STORAGE REQUIRED. * * EXIT STORAGE ASSIGNED. * TO *RCL* IF REQUEST PENDING. * * CALLS RSI. RQS SUBR ENTRY/EXIT RJM RSI REQUEST STORAGE INCREASE ZJN RQSX IF ASSIGNED LDN CFIR CM FL INCREASE PENDING LJM RCL RECALL *CMS* UMT SPACE 4 ** UMT - UPDATE MMF TABLES IN EXTENDED MEMORY. * * ENTRY (RC) = NUMBER OF EQUIPMENTS RECOVERED. * * CALLS *4DF*, MRL. UMT SUBR ENTRY/EXIT LDD RC ZJN UMTX IF NO EQUIPMENT RECOVERED EXECUTE 4DF LDC UER UPDATE EXTENDED MEMORY RESIDENT RJM MRL UJN UMTX RETURN SPACE 4 ** COMMON DECKS. *CALL COMPACS *CALL COMPRSI USE LITERALS TITLE PRESET. PRS SPACE 4 ** PRS - PRESET. * * EXIT DEVICE STATUS TABLE IN *MSM-S* FL SET WITH * RECOVERY STATUS INFORMATION AND CM ADDRESSES * FOR MST LABEL DATA. PRS BSS 0 LDD CP CHECK ORIGIN OF CALL ADN JCIW CRD CM ADN SNSW-JCIW CRD CN LDD CM+2 LMC MSSI ZJP PRS2 IF VALID SUBSYSTEM CALL LMN DSSI&MSSI NJP PRS3 IF NOT DEADSTART SEQUENCING PRIORITY ISTORE CMSB,(UJN CMS4) SET DEADSTART SEQUENCING STATUS ISTORE DPPB,(LDN CIRD-CIRB) LDD CP SET SYSTEM USER NAME/INDEX ADN UIDW CWM PRSA,ON LDN DSSL SET RECOVERY LEVEL CRD CM LDD CM+4 SET RECOVERY STATUS LPN 3 STD T1 ZJN PRS1 IF NOT RECOVERY DEADSTART LDC 100*1R) PREVENT *SYSPROC* CALL STM CIRE+6 LDN 0 STM CIRE+7 SOM DPPC PREVENT *CLDT* CALL LDN CIRE-CIRD RAM DPPB PRS1 LDM TRCO,T1 PRS2 UJN PRS5 SET RECOVERY STATUS PRS3 LDC PRSB ISSUE * INCORRECT CMS CALL.* RJM DFM PRS4 LDC MMFL READ MMF STATUS WORD CRD CN LDD CN+2 CHECK RECOVERY INTERLOCK SHN 0-13 ZJN ABT IF DAT NOT INTERLOCKED LCN DATI RELEASE RECOVERY INTERLOCK RJM IFR STD CN+2 CLEAR INTERLOCK STATUS LDC MMFL CWD CN ABT MONITOR ABTM LJM PPR PRS5 STD RS PAUSE CHECK ERROR FLAG LDD CM+1 NJN PRS4 IF ERROR FLAG SET LDD CN+3 CLEAR PAUSE BIT SCN 1 STD CN+3 LDD CP ADN SNSW CWD CN ADN PFCW-SNSW SWITCH TO NULL FAMILY CRD CN LDD CN+3 STD CM+1 LMN NEEQ CHECK FOR NULL FAMILY ZJN PRS6 IF NULL FAMILY LDN DFCS STD CM+3 MONITOR SMDM LDN NEEQ SET NULL FAMILY IN *PFCW* STD CN+3 LDD CP ADN PFCW CWD CN PRS6 LDN ESTP READ EST POINTER CRD CM LDN 2 SET CONSTANT TWO STD TW LDD CM+3 SET LAST MASS STORAGE ORDINAL + 1 STD LO ADN 7 SET INDEX INTO MST TABLE SCN 7 STD CA ADN 70 SHN -6 STD T1 SBD FL MJN PRS7 IF ENOUGH STORAGE AVAILABLE LDD T1 RJM RQS * INITIALIZE TABLES. PRS7 RJM IET INITIALIZE TABLES * CHECK FOR MULTI-MAINFRAME SYSTEM. LDC MMFL READ MMF STATUS WORD CRD CM LDD CM+1 LPC 777 ZJN PRS10 IF NOT MMF ENVIRONMENT STD EQ LDD RA GET LINK DEVICE SHN 6 ADD EQ CRD RD LDD RE ASSIGN SYSTEM STATUS TO LINK DEVICE LPC 5500 LMC 2000 STD RE LDD RA STORE LINK DEVICE RECOVERY INFORMATION SHN 6 ADD EQ CWD RD LDD FN+4 SET EXTENDED MEMORY MST POINTER STM LDMP SHN 3 GET ALLOCATION WORD FROM MST ADN ALGL CRD CN LDD CN+1 SET EXTENDED MEMORY LABEL TRACK STM ECLT LDN 10-1 ADVANCE FL AS NEEDED FOR *DAT* TABLE RAM PRSC PRS10 ZJN PRS12 IF STAND ALONE SYSTEM * SET FL REQUIRED FOR LABEL MSTS. PRS12 LDD CA SET ADDRESS OF TRT BUFFER STD CA+1 ADN 77 SHN -6 ADC FLRC/100+1 REQUEST FL FOR LABELS, MSTS AND TRT EDIT PRSC EQU *-1 RJM RQS LJM CMS RETURN PRSA VFD 42/0LSYSTEMX,18/SYUI PRSB DATA C* INCORRECT CMS CALL.* IET SPACE 4,10 ** IET - INITIALIZE TABLES. * * EXIT DEVICE RECOVERY STATUS TABLE INITIALIZED. * * USES TS, RE, AL, EQ, UC, CM - CM+4, FN - FN+4, FS - FS+4. * * MACROS SFA. IET3 LDN ZERL CLEAR RECOVERY TABLE ENTRY CRD RD IET4 LDD RA STORE RECOVERY TABLE INFORMATION SHN 6 ADD EQ CWD RD AOD EQ ADVANCE EST ORDINAL LMD LO NJN IET1 IF NOT END OF MASS STORAGE EQUIPMENTS STD RC IET SUBR ENTRY/EXIT LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH STD EQ IET1 SFA EST,EQ READ EST ENTRY ADK EQDE CRD FN LDD FN CHECK EST ENTRY LPC 7500 PRESET RECOVERY TABLE STD RE SHN 21-13 PJN IET3 IF NOT MASS STORAGE ENTRY LDD CA SET ADDRESS OF MST FOR FIRST UNIT STD AL LDD FN+4 READ *STLL* SHN 3 ADN STLL CRD FS ADN DDLL-STLL READ *DDLL* CRD CM LDD CM CHECK ORIGINAL UNIT COUNT SHN -3 LPN 7 STD UC IET2 LDN MSTL ADVANCE INDEX IN MST TABLE RAD CA SOD UC DECREMENT UNIT COUNT PJN IET2 IF MORE UNITS THIS EQUIPMENT LDD FS ASSIGN SYSTEM STATUS TO ASR DEVICE LPN MRASD SHN 12-RASD+RASD/12D*12D RAD RE LJM IET4 INITIALIZE DEVICE RECOVERY INFORMATION TRCO SPACE 4,10 ** TRCO - TABLE OF RECOVERY OPTIONS. TRCO BSS 0 LOC 0 CON 0 CON FLTB+SYTB CON FLTB CON 0 LOC *O EJECT TTL MSM/RMS - RECOVER MASS STORAGE. IDENT RMS,OBOV-2 *COMMENT MSM - MASS STORAGE RECOVERY MANAGER. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4 *** *RMS* SURVEYS ALL MASS STORAGE DEVICES AND RECOVERS * ANY DEVICE POSSIBLE. UPON COMPLETION, *REC* IS CALLED * INTO THIS PP TO PROCEED WITH SYSTEM RECOVERY. SPACE 4 *** ENTRY CONDITIONS. * * (IR+3) = CPUMTR MMF INITIALIZATION STATUS- * LINK DEVICE LABEL TRACK IF NO ERROR. * ERROR MESSAGE NUMBER IF ERROR. * (IR+4) = RECOVERY STATUS. SPACE 4 *** OPERATOR MESSAGES. * * * REFER TO OPERATORS GUIDE FOR INFORMATION AS TO CAUSE OF * ERROR AND RECOMMENDED CORRECTIVE ACTION. * * *DEVICE ACTIVE IN DAT.* (MMF) * * *END OF DAT TRACK CHAIN.* (MMF) * * *EQXXX EQYYY CONFLICTING DN.* * * *EQXXX EQYYY CONFLICTING PN.* * * *EQXXX EQYYY CONFLICTING UM.* * * *EQXXX, DEVICE ACCESS ERROR.* * * *ERROR ON DEVICE WITH ACTIVE FILES.* * * *ERROR ON SYSTEM DEVICE.* * * *EXTENDED MEMORY LABEL TRACK NOT FOUND.* (MMF) * * *EXTENDED MEMORY READ/WRITE PARITY ERRORS.* (MMF) * * *INSUFFICIENT MEMORY FOR CM RECOVERY.* * * *LABEL TRACK CONFLICT.* * * *LINK DEVICE SIZE ERROR.* (MMF) * * *LOCAL AREA SECTOR ERROR.* * * *MAXIMUM NUMBER MIDS ACTIVE.* (MMF) * * *MID UNDEFINED IN EXTENDED MEMORY.* (MMF) * * *MID CURRENTLY ACTIVE IN EXTENDED MEMORY.* (MMF) * * *MMF DEVICE ACCESS ERROR.* (MMF) * * *NON-SHARED DEVICE ACTIVE IN DAT.* (MMF) * * *PF LINKAGE ERROR.* * * *PRESET NOT ALLOWED.* (MMF) * * *REMOVABLE DEVICE CONFLICT.* (MMF) * * *SHARED DEVICE ACTIVE IN DAT.* (MMF) * * *TRT LENGTH ERROR.* * * *UNMATCHED SYSTEM DEVICES.* SPACE 4 ** ROUTINES CALLED. * * 0MF - PRESET MMF LINK DEVICE. * 0SD - SPIN UP/DOWN ISMD DRIVES. TITLE COMMON WORKING STORAGE AND SUBROUTINES. RMS SPACE 4 QUAL RMS ORG OBOV-2 LJM PRS PRESET *RMS* SPACE 4,10 LIST M COMMON LIST * TITLE MAIN ROUTINE. ** RMS - MAIN PROGRAM. RMS1 EXECUTE 4DB LOAD RECOVERY ROUTINES RJM RLD RECOVER MMF LINK DEVICE LDC 0 SET UEM EQUIPMENT FOR SPECIAL PROCESSING RMSE EQU *-1 STM MRLC LDC ZJNI-ZJNI SET JUMP TO PROCESS OR IGNORE UEM * LDC NJNI-ZJNI (IF PROCESSING ONLY UEM) RMSH EQU *-1 RAM MRLD LDC RDL READ LABELS RJM MRL RMSA LDN 0 ZJN RMS2 IF NO DEVICE INITIALIZATION EXECUTE 4DD LOAD VERIFICATION ROUTINES EXECUTE 4DH LOAD INITIALIZATION ROUTINES LDC IMS PROCESS DEVICE INITIALIZATION RJM MRL RMS2 EXECUTE 4DD LOAD VERIFICATION ROUTINES EXECUTE 4DG LOAD RECOVERY ROUTINES RMSB UJN RMS3 IF NOT CM RECOVERY * PSN LDC CAD CHECK ACTIVE DEVICES RJM MRL LDC RMR UPDATE MRT TABLES RJM MRL RJM UMT UPDATE MMF TABLES UJN DPP CALL *REC* RMS3 LDC CDS CHECK DEVICE STATUS RJM MRL LDD RC ZJN RMS4 IF NO EQUIPMENTS TO RECOVER LDC RCD RECOVER DEVICES RJM MRL RJM REM RESTORE UEM (LEVEL 1 OR 2 AND UEM PRESENT) LDC ** WRITE DAYFILE RECOVERY SELECTIONS BACK RMSC EQU *-1 CWM RMSF,ON RMS4 RJM UMT UPDATE MMF TABLES EXECUTE 4DC VERIFY PF SYSTEM DPP LDC DSCP*200+MS1W STORE *RECOVERY* MESSAGE CWM RMSG,ON LDD IA CALL *REC* INTO THIS PP CWM RMSD,ON LJM PPR RMSD VFD 18/3LREC,6/DSCP,36/0 RMSF BSS 5 DAYFILE RECOVERY SELECTIONS RMSG DATA C*RECOVERY* TITLE CM RECOVERY ROUTINES. CAD SPACE 4 ** CAD - CHECK ACTIVE DEVICES (CM RECOVERY). * * ENTRY (EQ) = (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT (A) .LT. 0 IF RECOVERY INFORMATION NOT TO * BE REWRITTEN TO CM UPON RETURN TO *MRL*. * * USES T5 - T7, FN - FN+4, FS - FS+4. * * CALLS ATC, CTD, EBP, IES, VLP. CAD SUBR ENTRY/EXIT SHN 21-6 MJN CADX IF DEVICE UNAVAILABLE SHN 6-0 MJN CADX IF LABEL NOT READ LDD FN+4 READ PF DESCRIPTION SHN 3 ADN PFGL CRM DLPB,TW ADN STLL-PFGL-2 READ STATUS (STLL) CRD FS UJMF CAD2 RJM RDE READ *DAT* ENTRY LDM DATB+11 CHECK ACCESS BY THIS MACHINE LPC 0 CADA EQU *-1 NJN CAD1 IF DEVICE SET LDC =C*MMF DEVICE ACCESS ERROR.* LJM HNG DISPLAY MESSAGE AND HANG CAD1 LDN 10 SET ACCESS BY THIS MACHINE RAD RE CAD2 RJM EBP ENABLE BST/BAT PROCESSING, IF REQUIRED RJM VLP VERIFY LABEL PARAMETERS MJN CAD3 IF NOT FIRST EQUIPMENT IN CHAIN NJN CAD4 IF ERRORS FOR THIS EQUIPMENT RJM ATC ADJUST TRACK COUNT (AND CLEAR INTERLOCKS) LDD FN LPN 20 ZJN CAD3 IF NOT ISHARED DEVICE LDD RE LPN 10 ZJN CAD3 IF CURRENT TRT NOT IN THIS MACHINE LCN 2 RAD RE RJM CTD * LDN 0 (*MRL* REWRITE RECOVERY TABLE FLAG) CAD3 LJM CADX RETURN * ERROR IN LABEL DETECTED. CAD4 LDD FN SHN 21-10 PJN CAD5 IF NOT REMOVABLE DEVICE LDD FN+4 CHECK ACTIVITY SHN 3 ADN DULL CRD CM LDD CM+4 LPC 3777 ADD FS+3 NJN CAD5 IF ACTIVE FILES ON DEVICE RJM IES INITIALIZE EQUIPMENT STATUS * LCN 0 (*MRL* REWRITE RECOVERY TABLE FLAG) UJN CAD3 CAD5 LDC =C*ERROR ON DEVICE WITH ACTIVE FILES.* * LJM HNG HNG SPACE 4 ** HNG - DISPLAY ERROR AND HANG PP. * * ENTRY (A) = ADDRESS OF MESSAGE. * * USES T2. * * CALLS IFR. * * MACROS UJMF. HNG STM HNGA UJMF HNG1 LCN DATI CLEAR FLAG REGISTER INTERLOCK RJM IFR HNG1 LDN 4 STD T2 LDC CPAS+MS2W SET MESSAGE IN RECOVERY MESSAGE BUFFER CWM *,T2 HNGA EQU *-1 UJN * STOP SEM SPACE 4 ** SEM - SET EQUIPMENT MESSAGE. * * ENTRY (EQ) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * USES CM - CM+4. * * CALLS C2D. SEM SUBR ENTRY/EXIT LDN 1R STD CM LDN 0 SET END OF ASSEMBLY STD CM+4 LDD FN+3 ENTER EQUIPMENT MNEMONIC STD CM+1 LDD EQ CONVERT UPPER TWO DIGITS OF EST ORDINAL SHN -3 RJM C2D STD CM+2 LDD EQ CONVERT LOWER DIGIT OF EST ORDINAL LPN 7 ADN 1R0 SHN 6 STD CM+3 LDC CPAS+MS1W+1 CWD CM ADN MS2W-MS1W-1 CLEAR SECOND LINE OF MESSAGE CWD CM+4 UJN SEMX TITLE NON - CM RECOVERY ROUTINES. CDS SPACE 4,20 ** CDS - CHECK DEVICE STATUS (LEVEL 0, 1, 2 RECOVERY). * * ENTRY (EQ) = (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT (RC) = COUNT OF EQUIPMENTS TO RECOVER. * (RE) = SET WITH RECOVERY INFORMATION. * (A) .LT. 0 IF RECOVERY INFORMATION NOT TO * BE REWRITTEN TO CM UPON RETURN TO *MRL*. * * USES FN - FN+4, FS - FS+4, T4 - T7, RC, EQ, EC. * * CALLS CSD, CSE, HNG, IES, UDT, VLP. * * MACROS UJMF. CDS12 LDN 0 INHIBIT FURTHER PROCESSING OF DEVICE STD RE CDS SUBR ENTRY/EXIT SHN 21-4 MJN CDSX IF INITIALIZATION SPECIFIED LDD FN LPN 2 NJN CDS12 IF DEVICE OFF OR DOWN LDD RA READ LABEL DATA SHN 6 ADD AL ADN PFGL READ DEVICE DESCRIPTION CRD CN ERRNZ PUGL-PFGL-1 ADJUST IF *PUGL* POSITION CHANGES ERRNZ MDGL-PFGL-2 ADJUST IF *MDGL* POSITION CHANGES CRM DLPB,TW LDD FN+4 READ STLL SHN 3 ADN STLL CRD FS SBN STLL-MDGL CRD CM+3 RJM CSE CHECK SYSTEM EQUIPMENT * VERIFY LABELS FOR THIS EQUIPMENT. CDS1 UJMF CDS2 LDD CN+4 LPN 70 NJN CDS2 IF NOT FIRST UNIT OF EQUIPMENT RJM CSD CHECK SHARED DEVICE STATUS NJN CDS7 IF DAT CONFLICT CDS2 RJM VLP VERIFY LABEL PARAMETERS MJN CDS4 IF NOT FIRST EQUIPMENT IN CHAIN NJN CDS6 IF ERROR ON ANY LABEL UJMF CDS3 NON MMF TRANSFER RJM UDT UPDATE DEVICE ACCESS TABLE NJN CDS7 IF EXTENDED MEMORY TRACK UNAVAILABLE CDS3 LDD RE CHECK INCORRECT MODE CHANGE LPN 40 NJN CDS5 IF FULL TRACK ACCESS SET LDC 200 SET EQUIPMENT RECOVERY RAD RE AOD RC ADVANCE RECOVERY COUNT CDS4 LJM CDSX RETURN CDS5 LDN STLE SET LABEL ERROR STATUS STD EC * ERROR IN LABEL VERIFICATION. CDS6 LDD RE SHN 21-10 MJN CDS10 IF REMOVABLE DEVICE ERROR SHN 21-12+22-21+10 CDSA PJN CDS9 IF NOT DEVICE WITH SYSTEM STATUS * PJN CDS11 (LVL0 - IF NOT DEVICE WITH SYSTEM STATUS) LDC =C*ERROR ON SYSTEM DEVICE.* CDS7 LJM HNG DISPLAY ERROR AND HANG * NON REMOVABLE DEVICE ERROR. CDS9 LDC =C*ERROR ON DEVICE WITH ACTIVE FILES.* UJN CDS7 DISPLAY ERROR AND HANG * REMOVABLE DEVICE ERROR. CDS10 LDD EC CHECK ERROR CODE * UJN CDS11 (LEVEL 0 DEADSTART) CDSB EQU *-1 LMN STLE ZJN CDS11 IF LABEL ERROR LMN STNR&STLE ZJN CDS11 IF NOT READY LDD RA CHECK LABEL COPY OF *STLL* SHN 6 ADD AL ADN DULL CRD CM ADN STLL-DULL CRD CN LDD CM+4 CHECK ACTIVITY LPC 3777 ADD CN+3 NJN CDS9 IF ACTIVE FILES ON DEVICE CDS11 RJM IES INITIALIZE EQUIPMENT STATUS * LCN 0 (*MRL* REWRITE RECOVERY TABLE FLAG) LJM CDSX RETURN CSE SPACE 4,10 ** CSE - CHECK SYSTEM EQUIPMENT. * * ENTRY (FN - FN+4) = EST ENTRY. * (CM+3 - CM+7) = MDGL WORD OF MST. * * EXIT TO *HNG* IF MISMATCHED SYSTEM DEVICES. CSE2 LDD FN+3 SET SYSTEM DEVICE TYPE STM CSEA LDD CM+7 SET MAXIMUM SECTOR LIMIT STM CSEA+1 CSE SUBR ENTRY/EXIT LDD FN SHN 21-12 PJN CSEX IF NOT SYSTEM DEVICE LDM CSEA ZJN CSE2 IF FIRST SYSTEM DEVICE LMD FN+3 COMPARE DEVICE TYPE NJN CSE1 IF NO MATCH WITH FIRST SYSTEM DEVICE LDM CSEA+1 CHECK SECTOR LIMIT LMD CM+7 ZJN CSEX IF MATCHING TRACK SIZE CSE1 LDC =C*UNMATCHED SYSTEM DEVICES.* LJM HNG CSEA CON 0,0 RCD SPACE 4,20 ** RCD - RECOVER DEVICE. * * ENTRY (A) = (RE) = EQUIPMENT RECOVERY STATUS INFORMATION. * (EQ) = (T5) = EST ORDINAL. * (RC) = RECOVERY COUNT. * (CA+1) = CM ADDRESS OF TRT BUFFER. * (FN - FN+4) = EST ENTRY. * (RE) SET WITH DEVICE RECOVERY INFORMATION. * (AL) = CM ADDRESS CONTAINING LABEL MST. * * EXIT DEVICE RECOVERED OR LEFT AS UNAVAILABLE. * (A) .LT. 0 IF RECOVERY INFORMATION NOT TO * BE REWRITTEN TO CM UPON RETURN TO *MRL*. * * USES CA, EC, P1, T1. * * CALLS CDC, HNG, IES, RDY, SEC. RCD6 RJM RDY RECOVER DAYFILES LDN 0 RCD SUBR ENTRY/EXIT SHN 21-7 PJN RCDX IF EQUIPMENT NOT BEING RECOVERED SMSTF LPTU PROHIBIT TRT UPDATE BY *1RU* RJM SEC SET EQUIPMENT CONFIGURATION * READ TRT FOR THIS DEVICE. RJM RTT ZJN RCD6 IF RECOVERY COMPLETE * ERROR IN DEVICE RECOVERY. STD EC SET ERROR CODE LMN STTL ZJN RCD1 IF LENGTH ERROR LDN RCDB-RCDA RCD1 ADC RCDA SET ERROR MESSAGE ADDRESS STD P1 RCDC LDD FN * UJN RCD4 (LEVEL 0 DEADSTART) SHN 21-10 PJN RCD5 IF NOT REMOVABLE DEVICE LDM MBUF+5*STLL+3 NJN RCD4 IF ACTIVE USERS RCD2 SOD RC DECREMENT RECOVERY COUNT RJM IES INITIALIZE EQUIPMENT STATUS * LCN 0 (*MRL* REWRITE RECOVERY TABLE FLAG) RCD3 UJP RCDX RETURN RCD4 LDD RE SHN 21-12 PJN RCD2 IF NOT SYSTEM DEVICE RCD5 LDD P1 LJM HNG DISPLAY MESSAGE AND HANG RCDA DATA C*TRT LENGTH ERROR.* RCDB DATA C*PF LINKAGE ERROR.* RDY SPACE 4,10 ** RDY - RECOVER DAYFILES. * * ENTRY (MBUF) = MST. * * USES P1. * * CALLS CDC, *4DG*, *4DJ*. * * MACROS EXECUTE. RDY SUBR ENTRY/EXIT LDM MBUF+5*ACGL+4 LPC MGLAP ZJN RDYX IF NO SECTOR OF LOCAL AREAS LDN EXDF SET NUMBER OF EXCESS DAYFILES STD P1 RDY1 SOD P1 MJN RDYX IF END OF DAYFILES LDM MBUF+5*DALL,P1 ZJN RDY1 IF NO TRACK ASSIGNED EXECUTE 4DJ LOAD DAYFILE RECOVERY ROUTINES RJM CDC CHASE DAYFILE CHAIN EXECUTE 4DG RELOAD RECOVERY ROUTINES UJN RDYX RETURN REM SPACE 4,10 ** REM - RESTORE UEM FROM CHECKPOINT FILE IF LEVEL 1 OR 2 * DEADSTART AND UEM IS PRESENT. * * USES LO. * * CALLS 4DK. * * MACROS EXECUTE. REM1 STM MRLC RESTORE PROCESSING OF ALL EQUIPMENTS REM SUBR ENTRY SOM REMA ZJN REM1 IF UEM NOT TO BE RESTORED THIS PASS EXECUTE 4DK RESTORE UEM * *4DK* DOES NOT RETURN CONTROL HERE. IT EXITS TO *RMS1*. REMA CON 1 IF ZERO, *4DK* WILL NOT BE CALLED RLD SPACE 4,15 ** RLD - RECOVER LINK DEVICE. * * ENTRY (FN - FN+4) = EST ENTRY FOR LINK DEVICE. * (RD - RD+4) = RECOVERY INFORMATION FOR LINK DEVICE. * * USES EQ, P1, P2, RC, RE, T5, CM - CM+4, CN - CN+4. * * CALLS CDS, EMF, IMS, LDT, LRA, RCD, RDL, SEM, *0MF*, *4DB*, * *4DD*, *4DG*, *4DH*. * * MACROS EXECUTE, MONITOR. RLD2 LDD RE SHN 21-4 PJN RLD3 IF INITIALIZE NOT SPECIFIED EXECUTE 4DD LOAD VERIFICATION ROUTINES EXECUTE 4DH LOAD INITIALIZATION ROUTINES LCN 0 INITIALIZE LINK DEVICE RJM IMS SOM RMSA DECREMENT INITIALIZATION COUNT UJN RLD4 CHECK LABEL TRACK RLD3 LDN PSNI FORCE LINK DEVICE SIZE VERIFICATION STM WMTC RJM RDL READ DEVICE LABEL EXECUTE 4DD LOAD VERIFICATION ROUTINES EXECUTE 4DG LOAD RECOVERY ROUTINES RJM LDT LOAD DEVICE ACCESS TABLE LDD EQ STD T5 LDN 0 CHECK DEVICE STATUS RJM CDS LDD EQ STD T5 LDD RE RJM RCD RECOVER DEVICE RLD4 LDM LDMP GET DEVICE ALLOCATION WORD FROM MST SHN 3 ADN ALGL CRD CN LDD CN+1 CHECK LABEL TRACK LMM ECLT ZJN RLD5 IF SAME AS FOUND BY *CPUMTR* MONITOR HNGM HANG PP RLD5 STD RC LDD RE SAVE LINK DEVICE RECOVERY STATUS STM UMTA LDC ** *PRESET* COUNT RLDA EQU *-1 ZJN RLD6 IF PRESET NOT SPECIFIED STD P1 LDC ** BUFFERED DEVICE *PRESET* COUNT RLDC EQU *-1 STD P2 EXECUTE 0MF,PRS LDN 0 CLEAR LINK DEVICE RECOVERY STATUS STM UMTA RLD6 STD RE CLEAR RECOVERY FOR LINK DEVICE RJM LRA LOAD REFERENCE ADDRESS ADD EQ CWD RD EXECUTE 4DB RELOAD *4DB* LDC LRMS ENABLE MMF RECOVERY RJM EMF RLD SUBR ENTRY/EXIT RLDB LDN 0 * LDN 1 (LINK DEVICE ALREADY RECOVERED) NJN RLDX IF LINK DEVICE ALREADY RECOVERED AOM RLDB LDC ** (LINK DEVICE EST ORDINAL) RLDD EQU *-1 ZJN RLDX IF STAND-ALONE SYSTEM STD T5 STD EQ RLDE LDC LRMS ENABLE MMF RECOVERY * UJN RLD1 (PRESET SELECTED) RJM EMF RLDF STM WMTB ENABLE LINK DEVICE RECOVERY * UJN RLDX (CM RECOVERY) RLD1 RJM SEM SET EQUIPMENT MESSAGE LJM RLD2 CHECK FOR INITIALIZATION UMT SPACE 4 ** UMT - UPDATE MMF TABLES IN EXTENDED MEMORY. * * CALLS IFR, LRA, MRL, UIS, 4DF. UMT1 LDC UIS UPDATE ISD TABLES RJM MRL UMT SUBR ENTRY/EXIT EXECUTE 4DF UJMF UMT1 LDC 0 UMTB EQU *-1 (LINK DEVICE EST ORDINAL) STD T5 RJM LRA LOAD REFERENCE ADDRESS ADD T5 CRD RD LDC * RESTORE LINK DEVICE RECOVERY STATUS UMTA EQU *-1 STD RE RJM LRA LOAD REFERENCE ADDRESS ADD T5 CWD RD RESTORE RECOVERY TABLES LDC UER UPDATE EXTENDED MEMORY RESIDENT RJM MRL UMTC LCN DATI CLEAR FLAG REGISTER INTERLOCK * UJN UMTX (LEVEL 0 DEADSTART OR CM RECOVERY) RJM IFR LJM UMTX RETURN SPACE 4 USE LITERALS TITLE PRESET PROGRAM. PRS SPACE 4 ** PRS - PRESET. * * EXIT (RS) = RECOVERY STATUS. * (TW) = CONSTANT 2. * (LM) = EXTENDED MEMORY MST POINTER IF MMF SYSTEM. * (LO) = LAST MASS STORAGE ORDINAL + 1. * (FN - FN+4) = EXTENDED MEMORY EST ENTRY IF MMF SYSTEM. * (CA+1) = FWA FOR CM TRT BUFFER. * DEVICE RECOVERY STATUS TABLE IN *MSM-S* FL SET WITH * RECOVERY STATUS INFORMATION AND CM ADDRESSES FOR MST * LABEL DATA. * * USES CA, CA+1, LO, P1, RE, RS, TA, TW, T5, CM - CM+4, * CN - CN+4, FN - FN+4, RD - RD+4. * * CALLS CRE, CUR, IET, IFR, LCM, SUD. * * MACROS SFA. PRS BSS 0 LDN JSCL READ SCHEDULER CONTROL CRD CM LDD CM SET SCHEDULER ACTIVE LPC 3777 LMC 4000 STD CM LDN JSCL STORE SCHEDULER CONTROL CWD CM LDN 2 DEFINE CONSTANT 2 STD TW LDN ESTP READ EST POINTER CRD CM LDD CM+3 SET LAST MASS STORAGE ORDINAL + 1 STD LO ADN 7 SET INDEX IN MST TABLE SCN 7 STD CA STD CA+1 LDD IR+4 SET RECOVERY STATUS * STD RS STM RMSD+4 STORE IN *REC* CALL NJN PRS0 IF NOT LEVEL 0 DEADSTART ISTORE CDSA,(PJN CDS11) ISTORE CDSB,(UJN CDS11) ISTORE RCDC,(UJN RCD4) ISTORE UMTC,(UJN UMTX) PRS0 LDD RS LPN FLMK LMN FLCM STD P1 NJN PRS1 IF NOT CM RECOVERY IFGT TA,RA LDN RA-TA ELSE 1 LCN RA-TA RAM LRAC RJM LCM FIND FREE AREA LDK MABL CHECK MAINFRAME TYPE CRD CM LDD CM+1 SHN 21-13 MJN PRS1 IF CME NOT PRESENT LDC 4000 STD TA LDC 0 ORG *-1 LOC LRAA UJN LRA1 SET *R* REGISTER LOC *O STM LRAA PRS1 RJM IET INITIALIZE EQUIPMENT TABLE LDD P2 NJN PRS2 IF NOT ALL-ISD CONFIGURATION LDK CFGL CRD CM LDD CM+3 LPC 7377 ADC 400 SET ALL-ISD FLAG STD CM+3 LDK CFGL CWD CM PRS2 LDD CA SET ADDRESS OF TRT BUFFER STD CA+1 LDC CPAS+MS1W ISSUE *SPINNING UP DRIVES* MESSAGE CWM PRSE,TR LDN 0 SPIN UP ISMD DRIVES RJM SUD LDN 0 WAIT - SPIN UP COMPLETE RJM SUD LDC CPAS+MS1W ISSUE RECOVERY MESSAGE CWM PRSA,TW LDD P1 NJN PRS3 IF NOT CM RECOVERY STM RMSB RJM LCM CHECK FIELD LENGTH RJM CRE CHECK RECOVERY PRS3 LDN DFPP CRD CM LDD CM SET FWA OF DAYFILE POINTERS SHN 14 ADD CM+1 CRD CM LDD CM SET ADDRESS OF DAYFILE RECOVERY SELECTIONS RAM RMSC-1 LPN 37 SHN 14 ADD CM+1 STM RMSC CRM RMSF,ON READ DAYFILE RECOVERY SELECTIONS RJM CUR CHECK FOR UEM RECOVERY REQUIRED LDK MMFL CHECK MMF STATUS WORD CRD CN LDD CN+1 GET LINK DEVICE EST ORDINAL LPC 777 STM RLDD NJN PRS5 IF NOT STAND ALONE SYSTEM PRS4 LDC DSCP*200+MS1W STORE RECOVERY MESSAGE CWM PRSF,TW LJM RMS1 EXIT TO MAIN ROUTINE PRS5 STD T5 STM UMTB SFA EST READ LINK DEVICE EST ENTRY TO (FN - FN+4) ADK EQDE CRD FN LDD IR+3 CHECK FOR INITIALIZE ERROR FROM *CPUMTR* STM ECLT SHN 21-13 MJN PRS6 IF NO ERROR LDM PRSB-1,IR+3 DISPLAY ERROR CONDITION LJM HNG PRS6 LDD CN+3 SET MACHINE MASK STM CADA RJM LRA LOAD REFERENCE ADDRESS ADD T5 CRD RD LDD RE ASSIGN SYSTEM STATUS TO LINK DEVICE LPC 5520 LMC 2000 STD RE RJM LRA LOAD REFERENCE ADDRESS ADD T5 RESTORE LINK DEVICE INFORMATION CWD RD LDD FN+4 SET LINK DEVICE MST POINTER STM LDMP LDK DSCL CHECK PRESET REQUESTED CRD CM LDD CM+3 STM RLDA ZJN PRS6.1 IF *PRESET* NOT SELECTED ISTORE RLDE,(UJN RLD1) PRS6.1 LDD CM+4 STM RLDC LDD P1 NJN PRS6.2 IF NOT CM RECOVERY ISTORE RLDF,(UJN RLDX) ISTORE UMTC,(UJN UMTX) UJN PRS8 STORE RECOVERY MESSAGE PRS6.2 LDD RS NJN PRS7 IF RECOVERY SELECTED LDC 4000 SET DAT INTERLOCKED STD CN+2 LDC MMFL STORE MMF STATUS WORD CWD CN PRS7 SBN 1 DELAY NJN PRS7 LDC CPAS+MS1W+1 STORE *WAITING* MESSAGE CWM PRSC,ON ADN MS2W-MS1W-2 CWM PRSD,TR LDN DATI GET FLAG REGISTER INTERLOCK RJM IFR NJN PRS7 IF DAT BUSY PRS8 LJM PRS4 STORE RECOVERY MESSAGE PRSA DATA C*RECOVERY,* PRSB CON ERM1 CON ERM2 CON ERM3 CON ERM4 CON ERM5 CON ERM6 ERM1 DATA C*EXTENDED MEMORY LABEL TRACK NOT FOUND.* ERM2 DATA C*MID UNDEFINED IN EXTENDED MEMORY.* ERM3 DATA C*MID CURRENTLY ACTIVE.* ERM4 DATA C*MAXIMUM NUMBER MIDS ACTIVE.* ERM5 DATA C*EXTENDED MEMORY READ/WRITE PARITY ERRORS.* ERM6 DATA C*PRESET NOT ALLOWED.* PRSC DATA C*WAITING* PRSD DATA C*MMF DEADSTART IN PROGRESS.* PRSE DATA C*SPINNING UP DRIVES.* PRSF DATA C*RECOVERING* CRE SPACE 4,10 ** CRE - CHECK RECOVERY. * * EXIT TO *PPR* TO CALL *1CK* IF ONLY TO CHECKPOINT. * * USES T1 - T6, CM - CM+4. * MACROS SFA. CRE7 LDN 7 SET CHECKPOINT OF NON-BUFFERED DEVICES STM CREB+2 CRE8 LDN NCPL CALL *1CK* TO SYSTEM CP CRD CM AOD CM+1 RAM CREB+1 LDD IA CWM CREB,ON EXECUTE 1CK,= LJM PPR EXIT TO PP RESIDENT CRE SUBR ENTRY/EXIT LDD IR+3 SHN 21-13 MJN CRE2 IF LABEL TRACK SPECIFICATION SHN 13-21 LPN 7 ZJN CRE1 IF NO MMF PRESET ERROR LMN 2 NJN CREX IF NOT *RECOVERY DS PREVENTED THIS MID.* CRE1 LDD IR+3 SHN 21-12 MJN CRE7 IF CHECKPOINT NON-BUFFERED DEVICES CRE2 LDC BIOL CRD CM LDD CM+1 SHN 14 LMD CM+2 NJN CRE2.1 IF BUFFERED I/O PRESENT LDD IR+3 SHN 21-11 MJP CRE8 IF CHECKPOINT ALL DEVICES UJN CREX RETURN CRE2.1 ADN PUTP CRD T1 LDD T1+3 CLEAR FLAGS LPN 77 STD T1+3 LDC CPAS+MS2W ENTER MESSAGE CWM CREA,TR LDN ZERL REQUEST FLUSH OF ALL WRITE BUFFERS CRD CM LDC BMFW*100+1 STD CM+4 MONITOR BFMM CRE3 LDD T1 SET NUMBER OF ENTRIES ADN 1 STD T6 CRE4 SOD T6 ZJN CRE5 IF ALL ENTRIES CHECKED SHN PUTLS CHECK *PUT* FOR OUTSTANDING REQUESTS ADD T1+4 SHN 6 ADD T1+3 SHN 14 ADK UNCT CRD CM LDD CM+3 ZJN CRE4 IF NO REQUESTS OUTSTANDING SFA EST,CM+1 ADK EQDE CRD CM LDD CM LPN 3 LMN 3 ZJN CRE4 IF DEVICE IS DOWN UJP CRE3 WAIT FOR FLUSH TO COMPLETE CRE5 STD CM CLEAR MESSAGE LDC CPAS+MS2W CWD CM LDD IR+3 SHN 21-13 MJN CRE6 IF LABEL TRACK SPECIFICATION SHN 21-11-21+13 PJN CRE6 IF NO CHECKPOINT ABORT LJM CRE8 CHECKPOINT ALL DEVICES AND ABORT CRE6 LJM CREX RETURN CREA DATA C*FLUSHING BUFFERED DEVICES.* CREB VFD 24/3L1CK,12/6,24/0 CUR SPACE 4,10 ** CUR - CHECK FOR UEM RECOVERY REQUIRED. * * ENTRY (RS) = RECOVERY STATUS. * * USES CM - CM+4. * * MACROS SFA. CUR SUBR ENTRY/EXIT LDD RS LPN FLMK LMN FLTB NJN CURX IF NOT LEVEL 1 OR 2 RECOVERY LDN ESTP SEARCH FOR UEM EQUIPMENT CRD T3 LDN NOPE-1 STD T5 CUR1 AOD T5 LMD T6 ZJN CURX IF NO UEM EQUIPMENT SFA EST,T5 ADK EQDE CRD CM LDD CM SHN 21-13 PJN CUR1 IF NOT MASS STORAGE LDD CM+4 SHN 3 ADK DILL CRD CM LDD CM+3 CHECK MEMORY TYPE SHN -6 LPN 7 LMN 4 NJN CUR1 IF NOT UEM LDD T5 STM RMSE AOM REMA ENABLE *4DK* CALL UJP CURX RETURN IET SPACE 4,10 ** IET - INITIALIZE EQUIPMENT TABLE. * * ENTRY (CA) = CM ADDRESS OF MST TABLE. * * EXIT (RC) = 0. * (P2) = 0 IF ALL ISD CONFIGURATION. * (CA) = LWA OF MST TABLE IN CM. * DEVICE RECOVERY INFORMATION IN CM INITIATED. * * USES T5, UC, CM - CM+4, FN - FN+4, FS - FS+4, RD - RD+4. * * CALLS LRA. * * MACROS SFA. IET5 LDN ZERL CLEAR RECOVERY TABLE ENTRY CRD RD IET6 RJM LRA LOAD REFERENCE ADDRESS ADD T5 CWD RD AOD T5 ADVANCE EST ORDINAL LMD LO NJN IET1 IF NOT END OF MASS STORAGE DEVICES STD RC IET SUBR ENTRY/EXIT LDN 0 SET ISD CONFIGURATION FLAG STD P2 LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH STD T5 IET1 SFA EST,T5 READ EST ENTRY ADK EQDE CRD FN LDD FN CHECK EST ENTRY LPC 7500 PRESET RECOVERY TABLE STD RE SHN 21-13 PJN IET5 IF NOT MASS STORAGE ENTRY LDD CA SET ADDRESS OF MST FOR FIRST UNIT STD AL LDD FN+4 READ *STLL* SHN 3 ADN STLL CRD FS ADN DDLL-STLL READ *DDLL* CRD CM LDD CM SET ORIGINAL UNIT COUNT SHN -3 LPN 7 STD UC LDD FN+3 CHECK FOR ISD DEVICE LMC 2RDE ZJN IET2 IF EXTENDED MEMORY LMN 2RDD&2RDE ZJN IET2 IF ISD LMN 2RDG&2RDD ZJN IET2 IF ISD STD P2 SET NON-ISD FLAG IET2 LDN MSTL ADVANCE INDEX IN MST TABLE RAD CA SOD UC PJN IET2 IF MORE UNITS THIS EQUIPMENT LDD FS ASSIGN SYSTEM STATUS TO ASR DEVICE LPN MRASD SHN 12-RASD+RASD/12D*12D RAD RE LDD FS LPC MLIAL ZJN IET4 IF FULL INITIALIZE NOT SPECIFIED LDN 20 SET INITIALIZE FLAG RAD RE AOM RMSA ADVANCE INITIALIZATION COUNT IET3 LJM IET6 STORE RECOVERY INFORMATION IET4 LDD FN SHN 21-10 PJN IET3 IF NON-REMOVABLE DEVICE LDD RS LPN FLMK LMN FLTB NJN IET3 IF FILES NOT RECOVERED FROM MASS STORAGE LJM IET5 DEFER RECOVERY TO *CMS* LCM SPACE 4,10 ** LCM - LOCATE CM FOR RECOVERY. * * ENTRY (A) = 0 IF RECHECKING FIELD LENGTH. * (CA+1) = MEMORY REQUIRED. * * EXIT (LRAB) = RA OF FREE AREA. * (CN - CN+3) = PARAMETERS FROM *CMA*. * * CALLS CMA. LCM SUBR ENTRY/EXIT ZJN LCM1 IF RECHECKING FIELD LENGTH LDN ZERL CRD CN LDN CN FIND LARGEST FREE AREA RJM CMA LDD CN+1 SAVE RA OF AREA STM LRAB STD TA LDD CN RAM LRAB-1 LCM1 LDD CN+2 NJN LCMX IF SUFFICIENT FL LDD CA+1 ADN 77 SHN -6 SBD CN+3 MJN LCMX IF SUFFICIENT MEMORY AVAILABLE ZJN LCMX IF SUFFICIENT MEMORY AVAILABLE LDC LCMA * INSUFFICIENT MEMORY FOR CM RECOVERY.* LJM HNG PROCESS ERROR LCMA DATA C* INSUFFICIENT MEMORY FOR CM RECOVERY.* SPACE 4,10 * COMMON DECKS. *CALL COMPCMA *CALL COMPSUD OVL0 BSS 0 *0SD* LOAD ADDRESS ERRNG BFMS-OVL0-ZSDL *0SD* OVERFLOW QUAL TTL MSM/1RF - RECOVER PRESERVED FILES. TITLE QUAL RPF IDENT 1RF,PPFW *COMMENT MSM - RECOVER PRESERVED FILES. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. QUAL 1RF RPF SPACE 4,15 *** *1RF* IS CALLED BY *REC* TO RECOVER PRESERVED * FILES ON A MASS STORAGE DEVICE. WHEN *1RF* HAS FINISHED * WITH A DEVICE, IT INDICATES TO *REC* THAT IT IS COMPLETE. * *REC* TELLS IT EITHER TO PROCESS ANOTHER DEVICE OR DROP. RPF SPACE 4,15 *** ENTRY CONDITIONS. * * (IR+2) = EST ORDINAL. * (IR+3) = CP NUMBER AT WHICH TO DISPLAY MESSAGES. * (IR+4) = RECOVERY STATUS. * * WHEN *1RF* COMPLETES, IT SETS (IR+2) TO 0. *REC* EITHER * REPLIES WITH ANOTHER EST ORDINAL OR 4000 WHICH INDICATES * THAT *1RF* SHOULD DROP. RPF SPACE 4,10 ** ROUTINES CALLED. * * 4DA - RECOVER PRESERVED FILES. RPF SPACE 4,10 ORG PPFW RPF BSS 0 ENTRY LDD IR+3 SET *IQFT* BUFFER ADDRESS SHN 6 STD CR SHN 7-6 SET MESSAGE CONTROL POINT STD CF * LDD IR+4 SET RECOVERY STATUS * STD RS LDD RS NJN RPF0 IF RECOVERY DEADSTART LDC DSCP+ENRS MOVE TO DEADSTART CONTROL POINT STD CM+1 MONITOR CCAM RPF0 LDN 10 STD T1 LDD CF SAVE CONTROL POINT MESSAGES ADK MS1W CRM RPFC,T1 * NOTE - *DSD* DOES NOT DISPLAY CONTROL POINT MESSAGES ON THE * B-DISPLAY UNLESS THERE IS A NON-ZERO EJT ORDINAL PRESENT. ADK TFSW-MS1W-10 CRD CM LDD CM SAVE CURRENT EJT ORDINAL STM RPFB LDN DSEO SET DEADSTART EJT ORDINAL STD CM LDD CF ADK TFSW CWD CM LDN 2 STD TW EXECUTE 4DA LOAD SYSTEM SECTOR CLEANUP ROUTINES LDC LDDI+CF FORCE MESSAGES TO CONTROL POINT *CF* STM /RDA/RDAK STM /RDA/RDAL STM /RDA/CUSA LDN 0 SBN 1 DELAY FOR OTHER *4DA* LOADS TO COMPLETE NJN *-1 RPF2 LDD IR+2 SET EST ORDINAL STD T5 SFA EST FETCH MST POINTER FROM EST ADK EQDE CRD FN LDD FN+4 READ MST STATUS WORD SHN 3 ADN STLL CRD CM LDD CM EXTRACT FULL INITIALIZE FLAG LPC MLIAL RJM /RDA/RDA CLEAR PRESERVED FILE INTERLOCKS LDN 0 STD IR+2 INDICATE RECOVERY COMPLETE LDD IA CWD IR RPF3 DELAY WAIT 125 MICROSECONDS LDD IA CRD IR CHECK FOR REPLY FROM *REC* LDD IR+2 ZJN RPF3 IF NO REPLY YET SHN 21-13 PJN RPF2 IF ANOTHER DEVICE TO PROCESS LDN 10 STD T1 LDD CF RESTORE CONTROL POINT MESSAGES ADN MS1W CWM RPFC,T1 LDD CF ADK TFSW CRD CM LDC 0 RESTORE EJT ORDINAL RPFB EQU *-1 STD CM LDD CF ADK TFSW CWD CM RPF4 MONITOR DPPM LJM PPR EXIT TO PP RESIDENT RPFC BSS 0 CONTROL POINT MESSAGE SAVE AREA SPACE 4,10 SDVR EQU RPFC+10*5 QUAL TTL MSM/4DA - RECOVER PRESERVED FILES. TITLE IDENT 4DA,/RDA/RDEX *COMMENT MSM - RECOVER PRESERVED FILES. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4,10 *** *RDA* PERFORMS SYSTEM SECTOR CLEANUP ON ALL DIRECT * ACCESS PERMANENT FILES AS WELL AS BUILDING THE *IQFT* * ON LEVEL 0 DEADSTARTS. SPACE 4 *** ENTRY CONDITIONS. * * (A) = 0, IF DEVICE IS NOT BEING INITIALIZED. * (CF) = MESSAGE CONTROL POINT ADDRESS (*1RF* CALL). * (CP) = CONTROL POINT ADDRESS (*CMS* CALL). * (CR) = RELATIVE ADDRESS OF *IQFT* BUFFER. * (FN - FN+4) = EST ENTRY. * (RS) = RECOVERY STATUS. * (T5) = EST ORDINAL. SPACE 4 *** OPERATOR MESSAGES. * * *EQXXX, ANNNN TYYYY SZZZZ LINKAGE* = LENGTH / LINKAGE ERROR * AT TRACK YYYY SECTOR ZZZZ OF PRESERVED FILE ON EST ORDINAL * XXX, FIRST TRACK AT NNNN. OPERATOR INTERVENTION IS REQUIRED. * IF THE OPERATOR ENTERS *GO*, EOI WILL BE WRITTEN AT THE * LOCATION OF THE ERROR AND RECOVERY WILL PROCEED. IF THE * OPERATOR ENTERS *PAUSE*, ERROR IDLE STATUS WILL BE SET AND * RECOVERY OPERATIONS ON THE DEVICE TERMINATED. * * *RECOVER EQXXX, ANNNN TMMMM. = RECOVERING PRESERVED FILE ON * EST ORDINAL XXX. FIRST TRACK IS NNNN AND TRACK CURRENTLY * BEING READ IS MMMM. SPACE 4 *** DAYFILE MESSAGES. * * *EQXXX, ERROR IDLE SET.* = THIS FOLLOWS THE *PF LENGTH ERROR* * OR *QF LENGTH ERROR* MESSAGE IF ERROR IDLE WAS FORCED BY THE * SYSTEM OR THE OPERATOR ENTERED *PAUSE*. * * *EQXXX NNNN DIRECT ACCESS FILE ERRORS.* = COUNT OF ERRORS * DETECTED IN DIRECT ACCESS FILES ON EST ORDINAL XXX. THE * COUNT SHOULD MATCH THE NUMBER OF ERROR MESSAGES PRODUCED. * * *EQXXX NNNN DIRECT ACCESS FILES RECOVERED.* = COUNT OF DIRECT * FILES RECOVERED ON EST ORDINAL XXX. * * *EQXXX, FFFFFFF, DD RECOVERED.* = RECOVERY COMPLETE ON EST * ORDINAL XXX WITH FAMILY NAME FFFFFFF AND DEVICE NUMBER DD. * * *EQXXX NNNN PRESERVED FILE ERRORS.* = COUNT OF ERRORS * DETECTED WHILE READING SYSTEM SECTORS ON EST ORDINAL XXX. * * *EQXXX NNNN QUEUED FILE ERRORS.* = COUNT OF QUEUED FILE * ERRORS DETECTED ON EST ORDINAL XXX. THE COUNT SHOULD * MATCH THE NUMBER OF ERROR MESSAGES PRODUCED. * * *EQXXX NNNN QUEUED FILES RECOVERED.* = COUNT OF QUEUED * FILES RECOVERED ON EST ORDINAL XXX. * * *EQXXX NNNN QUEUED FILES IGNORED.* = COUNT OF QUEUED FILES * NOT WRITTEN TO THE *IQFT* FILE DUE TO LACK OF SPACE. * * *EQXXX, PF CATALOG SIZE ERROR.* = THE PERMANENT FILE CATALOGS * ON EST ORDINAL XXX ARE THE WRONG SIZE FOR THE CURRENT SYSTEM. * * *EQXXX, PPPPPPP RECOVERED.* = RECOVERY COMPLETE ON EST * ORDINAL XXX WITH PACKNAME PPPPPPP. * * *EQXXX, PRESERVED FILE RECOVERY INITIATED.* = PRESERVED FILE * RECOVERY WAS STARTED FOR EST ORDINAL XXX. * * *EQXXX, TRACK LIMIT ON IQFT.* = NO TRACK AVAILABLE FOR IQFT. * * *EQXXX PF LENGTH ERROR UINDEX FILENAME* = PERMANENT FILE * LENGTH WAS INCORRECT. * * *EQXXX QF LENGTH ERROR FILENAME* = QUEUED FILE * LENGTH WAS INCORRECT. SPACE 4 *** ACCOUNT FILE MESSAGES. * * *ADDR, XXX, FFFFFFF, DD, LVLL, LVLU.* = EST ORDINAL XXX * WITH FAMILY NAME FFFFFFF, DEVICE NUMBER DD, LOWER SECURITY * ACCESS LEVEL LVLL AND UPPER SECURITY ACCESS LEVEL LVLU * HAS BEEN RECOVERED. * * *ADPM, XXX, PPPPPPP, UUUUUUU, LVLL, LVLU.* = EST ORDINAL * XXX WITH PACKNAME PPPPPPP, LOWER SECURITY ACCESS LEVEL * LVLL AND UPPER SECURITY ACCESS LEVEL LVLU HAS BEEN MOUNTED. * IF PRESENT, UUUUUUU INDICATES THAT THE PACK WAS A PRIVATE * PACK BELONGING TO THAT USER. SPACE 4 *** ERROR LOG MESSAGES. * * *EQXXX, ANNNN PF RECOVERY ERROR.* = SYSTEM SECTOR ERROR OR * UNIDENTIFIED FILE TYPE WHILE PROCESSING A PRESERVED FILE ON * TRACK NNNN OF EST ORDINAL XXX. * * *EQXXX, ANNNN TYYYY SZZZZ LINKAGE ERROR.* = LENGTH / LINKAGE * ERROR AT TRACK YYYY SECTOR ZZZZ OF A PRESERVED FILE WHOSE BOI * IS ON TRACK NNNN OF EST ORDINAL XXX. * * *EQXXX, ERROR IDLE SET.* = THIS FOLLOWS THE *PF LENGTH ERROR* * OR *QF LENGTH ERROR* MESSAGE IF ERROR IDLE WAS FORCED BY THE * SYSTEM OR THE OPERATOR ENTERED *PAUSE*. * * *EQXXX, PF CATALOG SIZE ERROR.* = THE PERMANENT FILE CATALOGS * ON EST ORDINAL XXX ARE THE WRONG SIZE FOR THE CURRENT SYSTEM. * * *EQXXX, TYYYY SZZZZ LINKAGE ERROR.* = THIS MESSAGE FOLLOWS * THE *PF LENGTH ERROR* AND *QF LENGTH ERROR* MESSAGES, GIVING * ADDITIONAL DETAILS ON THE LOCATION OF THE ERROR - EST ORDINAL * XXX, TRACK YYYY, SECTOR ZZZZ. * * *LI LENGTH ERROR FILENAME* = LIBRARY FILE LENGTH * WAS INCORRECT. THE *LINKAGE ERROR.* MESSAGE FOLLOWS THIS * MESSAGE. * * *PF LENGTH ERROR UINDEX FILENAME* = PERMANENT FILE LENGTH * WAS INCORRECT. THE *LINKAGE ERROR.* MESSAGE FOLLOWS THIS * MESSAGE. * * *QF LENGTH ERROR FILENAME* = QUEUED FILE LENGTH WAS * INCORRECT. THE *LINKAGE ERROR.* MESSAGE FOLLOWS THIS * MESSAGE. SPACE 4 O4DA MAX /CMS/SDVR+5,/1RF/SDVR+5 QUAL RDA SPACE 4 *CALL COMSJIO *CALL COMSPFM *CALL COMSSSE SPACE 4,10 ** ASSEMBLY CONSTANTS. EQV$ EQU 1 DO NOT VERIFY EQUIPMENT IN *COMPRSS* IRA$ EQU 1 RANDOM ACCESS PROCESSORS INITIALIZED NSDF EQU 5 NUMBER OF SPECIAL DAFS SBUF EQU BFMS-502 SCRATCH BUFFER FOR EOI SECTOR SPACE 4 DATB EQU O4DA-5 BUFFER FOR DEVICE ACCESS TABLE ENTRY ORG O4DA RDE SUBR ENTRY/EXIT TITLE MAIN LOOP. RDA SPACE 4 ** RDA - MAIN ROUTINE. RDA SUBR PRS ENTRY/EXIT ERRNZ RDE+1-RDAX CODE DEPENDS ON VALUE STD T3 SAVE INITIALIZE FLAG ZJN RDA1 IF DEVICE NOT BEING INITIALIZED UJMF RDAX RDA1 LDD T5 CONVERT UPPER TWO DIGITS OF EST ORDINAL SHN -3 RJM C2D STM RDAD STM IQFB+1 STM IDMC+1 STM IRMB+1 STM CPSB+1 STM RDAI+1 STM RDAJ+1 STM PFEE+1 LDD T5 CONVERT LOWER DIGIT OF EST ORDINAL LPN 7 SHN 6 ADC 2R0, STM CPSB+2 STM IQFB+2 STM IRMB+2 STM RDAD+1 STM RDAI+2 STM RDAJ+2 LMN 1R &1R, REMOVE COMMA FROM MESSAGE STM IDMC+2 STM PFEE+2 LDD T3 NJN RDA1.1 IF DEVICE BEING INITIALIZED LDC RDAJ+NMSN *PRESERVED FILE RECOVERY INITIATED* RJM DFM ISSUE DAYFILE MESSAGE RDA1.1 LDD FN+4 READ TDGL WORD OF MST SHN 3 ADK TDGL CRD CN ADN MDGL-TDGL GET MASS STORAGE DRIVER WORD CRD T7 SBN MDGL-ALGL GET DAT TRACK ADDRESS CRD CM LDD CM+4 SAVE DAT TRACK ADDRESS STM SPFD LDD T7 SAVE 16-WORD PFC FLAG SHN -11 LPN 1 STD T1 STM CPSA LDM RDAH,T1 ENABLE / DISABLE DAF PROCESSING STM RDAG RJM PTA PRESET TRT ADDRESS RJM GDE GET *DAT* ENTRY SETMS IO,DF * LDN 0 STD CN+3 INITIALIZE TRACK SEARCH RDAA UJN RDA2 CONTINUE * PSN (LEVEL-0 RECOVERY) RJM IQF INITIALIZE THE *IQFT* FILE STM CQFA ZJN RDA2 IF TRACK NOT ASSIGNED AOM CQFC FLAG *IQFT* INITIALIZED STM TQFA * LOOP FOR EACH TRACK ON DEVICE. RDA2 RJM SPF SEARCH FOR PRESERVED FILE NJP RDA5 IF PRESERVED FILE FOUND * COMPLETE PROCESSING FOR THIS DEVICE. LDD RS NJN RDA3 IF RECOVERY DEADSTART RJM TQF TERMINATE *IQFT* RDA3 ENDMS RELEASE CHANNEL RJM IDM ISSUE DAYFILE MESSAGES RJM WDE UPDATE DAT ENTRY LDC 0 SET ERROR IDLE IF NON-ZERO RDAM EQU *-1 ZJN RDA4 IF NO ERROR IDLE TO BE SET LDC RDAI+NMSN SEND ERROR IDLE MESSAGES RJM DFM LDC RDAI+ERLN RJM DFM SMSTF GDEI SET DEVICE ERROR IDLE STATUS LDN STEI RJM SES CMSTF LCKP CLEAR POSSIBLE CHECKPOINT REQUEST RDA4 LDN 0 CLEAR CONSOLE MESSAGE STD CM RDAK LDD CP * LDD CF (*1RF* CALL) ADN MS2W CWD CM RJM CPS CHECK PFC SIZE RJM CUS CLEAR UNAVAILABLE STATUS LJM RDAX EXIT * CONVERT TRACK NUMBER AND DISPLAY MESSAGE. RDA5 RJM C2D STM RDAE+1 LDD T6 SHN -6 RJM C2D STM RDAE RDAL LDD CP * LDD CF (*1RF* CALL) ADN MS2W CWM RDAC,TR SBN 1 SAVE ADDRESS FOR *RDC* MESSAGE STM RDCA SETMS POSITION * LDN 0 STD CN CLEAR FILE TYPE RJM RSS READ SYSTEM SECTOR NJN RDA6 IF ERROR * DETERMINE TYPE OF PRESERVED FILE. RJM SFT SET FILE TYPE NJN RDA6 IF UNKNOWN FILE TYPE LDD RS ZJN RDA5.1 IF NOT RECOVERY DEADSTART RJM VFR VERIFY FILE FOR RECOVERY DEADSTART UJN RDA7 PROCESS NEXT TRACK RDA5.1 LDD CN CHECK FILE TYPE NJN RDA5.2 IF NOT QUEUED FILE RJM CQF CREATE QUEUED FILE ENTRY UJN RDA7 PROCESS NEXT TRACK RDA5.2 LMN PMFT CHECK FILE TYPE ZJN RDA9 IF DIRECT ACCESS PERMANENT FILE LMN FAFT&PMFT ZJN RDA9 IF FAST ATTACH FILE LJM RDA10 PROCESS SPECIAL PRESERVED FILE RDA6 RJM IEM ISSUE ERROR LOG MESSAGE RDA7 LJM RDA2 PROCESS NEXT TRACK * RELEASE FILE. RDA8 ENDMS LDD T5 DROP TRACK CHAIN FOR FILE LMC 4000 ADD CHECKPOINT REQUEST STD CM+1 LDD T6 STD CM+2 MONITOR DTKM UJN RDA7 * PROCESS PERMANENT FILES. RDA9 LDM CASS CHECK FILE ACCESS * UJN RDA7 (8-WORD PFC DEVICE) RDAG EQU RDA9 STD CN+1 SET SYSTEM SECTOR REWRITE STATUS SHN 21-5 MJN RDA8 IF PURGE FLAG SET SHN 5-4 MJN RDA11 IF FILE CAN BE SHORTENED LDM UCSS+1 ADM UCSS+2 ADM UCSS+3 ADM UCSS+4 ADM FISS RAD CN+1 SET SYSTEM SECTOR REWRITE STATUS RDA10 RJM VFL VERIFY FILE LENGTH ZJN RDA12 IF NO LENGTH ERROR RDA11 RJM RDC READ DISK CHAIN ZJN RDA12 IF NO LENGTH/LINKAGE/DISK ERROR RJM CFL CHANGE FILE LENGTH LDD CN LMN LIFT ZJN RDA15 IF LIBRARY TYPE FILE UJN RDA13 ISSUE FILE ERROR MESSAGE RDA12 LDD FS+1 LMM SBUF+FTEI ZJN RDA14 IF NO BOI/EOI ERROR RDA13 RJM PFE ISSUE FILE ERROR MESSAGE RDA14 RJM CTU CLEAR USER COUNTS RDA15 ENDMS LJM RDA2 LOOP FOR NEXT TRACK RDAC DATA H*RECOVER EQ* RDAD DATA 6HXXX, A RDAE DATA 4HNNNN RDAF CON 0 DATA C*F RECOVERY ERROR.* RDAH BSS 0 TABLE OF INSTRUCTIONS TO PLUG LOC RDAG UJN RDA7 LOC *O CON LDMI RDAI DATA C*EQXXX, ERROR IDLE SET.* RDAJ DATA C*EQXXX, PRESERVED FILE RECOVERY INITIATED.* TITLE SUBROUTINES. CFL SPACE 4,15 ** CFL - CHANGE FILE LENGTH. * * ENTRY (T6) = TRACK FOR EOI. * (T7) = SECTOR FOR EOI. * (CN) = FILE TYPE. * (FS+4) = 0, IF EOI REWRITE REQUIRED. * (BFMS) LOADED WITH SYSTEM SECTOR. * * EXIT EOI IN TRT CHANGED. * EOI REWRITTEN, IF (FS+4) = 0. * ERROR FLAG SET IN SYSTEM SECTOR CATALOG IMAGE. * (CN+1) NONZERO (SYSTEM SECTOR REWRITE FLAG). * * USES CM - CM+4. * * CALLS CLF, WEI. CFL SUBR ENTRY/EXIT RJM CLF CHANGE LENGTH OF FILE IN TRT LDD FS+4 NJN CFL1 IF NO REWRITE OF EOI REQUIRED LDD MA COPY FNT/FST FROM SYSTEM SECTOR TO EOI CWM FNSS,TW SBN 2 CRM SBUF+FNEI,TW RJM WEI WRITE EOI CFL1 LDD CN CHECK FILE TYPE LMN LIFT ZJN CFLX IF LIBRARY FILE LDM CTSS+FCEC SET ERROR FLAG IN SYSTEM SECTOR LPC 7077 LMC 400 STM CTSS+FCEC AOD CN+1 SET SYSTEM SECTOR REWRITE STATUS UJN CFLX RETURN CPS SPACE 4,10 ** CPS - CHECK PFC SIZE. * * ENTRY (T5) = EST ORDINAL. * * CALLS DFM, SES. * * MACROS CMSTF, SMSTF. CPS SUBR ENTRY/EXIT LDC * * LDC 0 (8-WORD PFC DEVICE) CPSA EQU *-1 NJN CPSX IF NOT 8-WORD PFC DEVICE LDC CPSB ISSUE DAYFILE MESSAGE RJM DFM LDC CPSB+ERLN ISSUE MESSAGE TO ERROR LOG RJM DFM SMSTF GDEI SET GLOBAL ERROR IDLE FLAG LDN STCS SET PF CATALOG SIZE ERROR STATUS RJM SES CMSTF LCKP CLEAR POSSIBLE CHECKPOINT UJN CPSX RETURN CPSB DATA C*EQXXX, PF CATALOG SIZE ERROR.* CQF SPACE 4,20 ** CQF - CREATE QUEUED FILE ENTRY. * * CQF CREATES THE ENTRY REPRESENTING A QUEUED FILE IN * THE INACTIVE QUEUED FILE LIST. * * ENTRY (BFMS) = SYSTEM SECTOR. * (CQFA) = 0 IF NOT *IQFT* SPACE AVAILABLE. * * EXIT *IQFT* ENTRY CREATED, IF QUEUE FILE RECOVERED. * * USES QI, T1, T6, CM - CM+4. * * CALLS IQF, PFE, RSS, VFL, WEI, WQF, WSR. * * MACROS FILEREC, SETMS. CQF7 AOM PQIC ADVANCE QUEUE FILE IGNORED COUNT CQF SUBR ENTRY/EXIT LDC 1 CQFA EQU *-1 ZJN CQF7 IF NO SPACE FOR/ON *IQFT* CQFC LDN 0 * LDN 1 (QUEUE FILE PROCESSING INITIATED) NJN CQF2 IF QUEUE FILE PROCESSING INITIATED RJM IQF INITIALIZE *IQFT* STM CQFA ZJN CQF7 IF TRACK UNAVAILABLE FOR *IQFT* LDD FS+1 REREAD THE QUEUE FILE SYSTEM SECTOR STD T6 SETMS POSITION * LDN 0 READ SYSTEM SECTOR RJM RSS AOM CQFC STM TQFA CQF2 RJM VFL VERIFY FILE LENGTH NJN CQF4 IF LENGTH ERROR LDM DTSS NJN CQF3 IF ENHANCED EOI INDICATED LDD MA COPY FNT/FST FROM SYSTEM SECTOR TO EOI CWM FNSS,TW SBN 2 CRM SBUF+FNEI,TW RJM WEI REWRITE EOI UJN CQF5 ADVANCE RECOVERY COUNT CQF3 LDD FS+1 VERIFY BOI/EOI STD T6 LMM SBUF+FTEI ZJN CQF5 IF VERIFY GOOD CQF4 LCN 0 SET LENGTH ERROR STM FLSS STM FLSS+1 RJM PFE ISSUE ERROR MESSAGE LJM CQF7 IGNORE THIS FILE AND RETURN CQF5 AOM PMRC ADVANCE QUEUED FILE RECOVERY COUNT LDM FGSS SET INACTIVE QUEUE FILE STATUS SCN 2 STM FGSS LDD FS+1 RESET SYSTEM SECTOR ADDRESS RJM WSR WRITE SYSTEM SECTOR WITH REWRITE * ENTER THIS FILE IN *IQFT* BUFFER IN CM. LDM FLSS+1 INSERT FILE LENGTH STM CDSS+1 LDM FLSS STM CDSS LDD T5 SET EST ORDINAL STM IOSS+5*ENTQ LDN 10 MAXIMUM QFT ENTRY LENGTH STD T1 LDM RMSS USE THE RESIDENT MACHINE ID FOR RECOVERY STM FMSS+4 LDD RA SHN 6 ADD CR FWA OF IQFT BUFFER ADD QI CWM IOSS,T1 QFT ENTRY CWM CDSS,ON DATE, TIME AND FILE LENGTH IN SECTORS CWM FMSS,ON WRITE FAMILY NAME CWM FDSS,ON DESTINATION FAMILY NAME CWM OASS,ON OWNER USER NAME, USER INDEX CWM FOSS,ON OWNER FAMILY NAME LDN QFEWL QUEUED FILE ENTRY WORD COUNT RAD QI ADVANCE BUFFER POINTER SHN -6 WORDS/PRU (0-77) ZJN CQF6 IF NOT FULL SECTOR RJM WQF WRITE QUEUED FILE SECTOR CQF6 LJM CQFX RETURN * QUEUED FILE RECOVERY TABLE. (RDAT) LIST G FILEREC LIST * CON PMFT+100 CON FAFT+100 CON LIFT+100 RDATBL EQU *-RDAT CUS SPACE 4,15 ** CUS - CLEAR UNAVAILABLE STATUS. * * ENTRY (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * USES T1, T3, T6, T7, CM - CM+4. * * CALLS CDC, RDS, SDA, SMI, WDS. * * MACROS DELAY, ENDMS, PAUSE, SETMS. CUS6 LDD RS CHECK RECOVERY STATUS LPN FLMK LMN FLCM ZJN CUSX IF CM RECOVERY RJM SDA SET DEVICE AVAILABLE CUS SUBR ENTRY/EXIT LDD FN LPN 20 ZJN CUS6 IF NOT INDEPENDENT SHARED DEVICE SETMS IO,(DE,DF,NS) LDN FN+1 PRESET ERROR RETRY STATUS STD T3 LDD FN+4 SET LABEL TRACK SHN 3 ADN ALGL CRD CM LDD CM+1 STD T6 LDN 0 STD T7 CUS1 LDC BFMS READ LABEL FOR *DIT* RJM RDS MJN CUS3 IF READ ERROR LDM N4SS+5*SDGL+4 LPN 77 SHN -1 ZJN CUS5 IF SOFTWARE INTERLOCK NOT SET CUSA LDD CP * LDD CF (*1RF* CALL) ADN MS2W CWM CUSB,TR *WAITING FOR INTERLOCK.* CUS2 ENDMS DELAY PAUSE LDD CM+1 CHECK ERROR FLAG LMN ORET NJN CUS1 IF NOT OPERATOR OVERRIDE CUS3 AOD T3 LMN FN+3 ZJN CUS4 IF BOTH CHANNELS TRIED LDI T3 NJN CUS2 IF ANOTHER CHANNEL PRESENT CUS4 ENDMS LJM RDAX EXIT CUS5 RJM SMI CALCULATE *DIT* ENTRY ADDRESS STD T1 SHN 2 ADC //DISS-5+3 RAD T1 LDI T1 CLEAR DIT INTERLOCK SCN 1 STI T1 RJM CDC COMPUTE LABEL CHECKSUM STM CKSS LDC BFMS+WLSF REWRITE LABEL RJM WDS MJN CUS4 IF WRITE ERROR ENDMS LJM CUS6 SET DEVICE AVAILABLE CUSB DATA C*WAITING FOR INTERLOCK.* IEM SPACE 4,15 ** IEM - ISSUE ERROR LOG MESSAGE. * * ENTRY (T4) = CHANNEL NUMBER. * (CN) = FILE TYPE. * * EXIT ERROR COUNT (PMPC) ADVANCED. * * CALLS DFM. * * MACROS ENDMS. IEM SUBR ENTRY/EXIT LDD CN LMN SYFT ZJN IEMX IF SYSTEM FILE AOM PMPC ADVANCE ERROR COUNT LDC 2R P STM RDAF ENDMS RELEASE CHANNEL LDC ERLN+RDAD-1 ISSUE MESSAGE TO ERROR LOG RJM DFM * LDN 0 CLEAR END OF CP MESSAGE STM RDAF UJN IEMX RETURN IQF SPACE 4,15 ** IQF - INITIALIZE *IQFT*. * * ENTRY (T5) = EST ORDINAL. * * EXIT (A) = 0 IF TRACK UNAVAILABLE FOR *IQFT*. * (QF) = (QT) = FIRST TRACK OF *IQFT*. * (QS) = FIRST SECTOR OF *IQFT*. * (QI) = 0. * * USES T3, CM - CM+4. * * CALLS DFM, WSS. * * MACROS ENDMS, MONITOR, SETMS. IQF2 LDC IQFB *EQXXX, TRACK LIMIT ON IQFT.* RJM DFM * LDN 0 IQF SUBR ENTRY/EXIT ENDMS LDN ZERL CRD CM LDD T5 REQUEST *IQFT* TRACK STD CM+1 MONITOR RTCM LDD CM+4 ZJN IQF2 IF NO TRACK AVAILABLE STD T6 STD QF STD QT LDC 500 STD T3 IQF1 LDN 0 CLEAR SYSTEM SECTOR BUFFER STM BFMS+1,T3 SOD T3 NJN IQF1 IF NOT START OF BUFFER STD QI LDD RA SHN 6 ADD CR FWA OF IQFT BUFFER CWM BFMS,HN CLEAR CM BUFFER LDD MA MOVE FILE NAME TO BUFFER CWM IQFA,ON SBN 1 CRM FNSS,ON SETMS POSITION RJM WSS WRITE *IQFT* SYSTEM SECTOR LDN FSMS SET FIRST *IQFT* SECTOR STD QS LJM IQFX RETURN IQFA VFD 42/0LQUEUES,6/1,6/SYFT,6/0 IQFB DATA C*EQXXX, TRACK LIMIT ON IQFT.* PTA SPACE 4,10 ** PTA - PRESET FIRST WORD ADDRESS OF TRT. * * ENTRY (FN - FN+4) = EST ENTRY OF DEVICE. * * USES CM - CM+4. PTA SUBR ENTRY/EXIT LDD FN+4 GET FWA OF TRT SHN 3 ADN TRLL CRD CM LDD CM+3 SET FWA OF TRT LPN 77 LMC ADCI STM SPFA-1 STM GDEC-1 LPN 77 SHN 14 LMD CM+4 STM SPFA STM GDEC SBD TH STM SEIA+1 STM SNTA+1 SHN -14 LMC ADCI STM SEIA STM SNTA UJP PTAX RETURN SFT SPACE 4,10 ** SFT - SET FILE TYPE. * * ENTRY (BFMS) = SYSTEM SECTOR. * * EXIT (A) = 0, IF VALID FILE TYPE. * (CN) = 0, IF QUEUE FILE. * (CN) = FILE TYPE, IF NOT QUEUE FILE. * * USES T2. SFT2 LDM RDAT,T2 SHN -6 NJN SFT3 IF NOT QUEUED FILE STD CN SFT3 LDN 0 RETURN SUCCESSFUL STATUS SFT SUBR ENTRY/EXIT LDN RDATBL-1 SET TABLE LENGTH STD T2 LDM FNSS+4 SET FILE TYPE SHN -6 STD CN SFT1 LDD CN CHECK PRESERVED FILE TYPE LMM RDAT,T2 LPN 77 ZJN SFT2 IF FILE TYPE MATCH SOD T2 PJN SFT1 IF NOT END OF TABLE LDN 1 UJN SFTX RETURN ERROR STATUS SPF SPACE 4,10 ** SPF - SEARCH FOR PRESERVED FILE. * * ENTRY (CN+2) = TRT LENGTH. * (CN+3) = CURRENT TRACK - 4000. * * EXIT (A) = (T6) = (FS+1) = FIRST TRACK OF FILE. * = 0 IF END OF TRT (ALL FILES CHECKED). * (FS+4) NONZERO. * * USES T1, T2, CM - CM+4. SPF SUBR ENTRY/EXIT LDN 1 ENSURE (FS+4) NONZERO STD FS+4 AOD CN+3 SHN 21-1 STD T2 SET TRT WORD INDEX LMD CN+2 ZJN SPFX IF END OF TRT SHN 1-21 STD T1 SET BYTE INDEX SPF1 LDD T2 ADC 0 READ TRT WORD SPFA EQU *-1 CRD CM LDD CM+4 CHECK FOR PRESERVED FILES SHN -10 STM SPFB NJN SPF5 IF 1 TO 4 PRESERVED FILES THIS WORD SPF2 STD T1 AOD T2 ADVANCE TRT WORD INDEX LMD CN+2 NJN SPF1 IF NOT END OF TRT * LDN 0 UJN SPFX RETURN SPF4 AOD T1 ADVANCE BYTE INDEX LPN 3 ZJN SPF2 IF END OF TRT WORD SPF5 LDM SPFC,T1 LPC 0 CHECK FIRST TRACK OF PRESERVED FILE SPFB EQU *-1 ZJN SPF4 IF FILE NOT PRESERVED LDD T2 SHN 2 CALCULATE TRT POSITION LMD T1 STD CN+3 LMC 4000 SET TRACK NUMBER STD T6 LMC ** SPFD EQU *-1 ZJN SPF4 IF *DAT* TRACK LDD T6 STD FS+1 LJM SPFX RETURN SPFC CON 10,4,2,1 PRESERVED FILE TRT FLAGS TQF SPACE 4,15 ** TQF - TERMINATE *IQFT*. * * ENTRY (T5) = EST ORDINAL. * (T4) = CHANNEL. * (QF) = FIRST TRACK OF *IQFT*. * (QT) = CURRENT *IQFT* TRACK. * (QS) = CURRENT *IQFT* SECTOR. * * EXIT EOI SECTOR WRITTEN ON *IQFT*. * * USES T1, T6, T7, CM - CM+4. * * CALLS WEI, WQF. * * MACROS MONITOR, SMSTF. TQF2 LDD QF RELEASE *IQFT* CHAIN STD CM+2 LDD T5 STD CM+1 MONITOR DTKM TQF3 AOM CQFA RESET QUEUE FILE PROCESSING ENABLED TQF SUBR ENTRY/EXIT TQFA LDN 0 * LDN 1 (QUEUE FILE PROCESSING INITIATED) ZJN TQF3 IF NO QUEUE FILE PROCESSING SOM TQFA STM CQFC LDD QT ZJN TQF2 IF RELEASING *IQFT* RJM WQF WRITE LAST *IQFT* SECTOR LDC 500 STD T1 TQF1 LDN 0 CLEAR EOI SECTOR BUFFER STM SBUF+1,T1 SOD T1 NJN TQF1 LOOP TO START OF BUFFER LDD MA MOVE FILE NAME TO BUFFER CWM IQFA,ON SBN 1 CRM SBUF+FNEI,ON LDD T5 SETUP EOI/SYSTEM SECTOR BUFFER STM SBUF+FSEI LDD QF STM SBUF+FTEI LDD QT SET CURRENT *IQFT* TRACK AND SECTOR STD T6 LDD QS STD T7 RJM WEI WRITE EOI SECTOR ENDMS LDD T5 SET EOI IN TRT STD CM+1 LDD QT LPC 3777 STD CM+2 LDD QS STD CM+3 MONITOR DTKM LDN SPFS SET PRESERVED FILE STATUS ON *IQFT* STD CM+3 LDD QF STD CM+2 LDD T5 STD CM+1 MONITOR STBM LDN SIQS SET *IQFT* INDICATOR IN MST STD CM+3 LDD QF STD CM+2 LDD T5 STD CM+1 MONITOR STBM SMSTF LCKP SET CHECKPOINT REQUEST LJM TQF3 RETURN VFR SPACE 4,10 ** VFR - VERIFY FILE FOR RECOVERY DEADSTART. * * ENTRY SYSTEM SECTOR IN *BFMS*. * * EXIT (RDAM) NONZERO IF ERROR IN TRT CHAIN. * * CALLS PFE, VTC. * * MACROS ENDMS. VFR SUBR ENTRY/EXIT ENDMS LDD CN NJN VFR1 IF NOT QUEUED FILE LDM FLSS SHN 21-13 MJN VFRX IF LENGTH ERROR STATUS ALREADY SET VFR1 RJM VTC VERIFY TRACK CHAIN ZJN VFRX IF NO TRT CHAIN ERROR RJM PFE ISSUE FILE ERROR MESSAGE AOM RDAM FORCE SETTING OF ERROR IDLE STATUS UJN VFRX RETURN VTC SPACE 4,10 ** VTC - VERIFY TRACK CHAIN. * * ENTRY (T5) = EST ORDINAL. * (T6) = FIRST TRACK OF PRESERVED FILE. * * EXIT (A) = 0 IF TRACK CHAIN GOOD / VALIDATION DISABLED. * * USES CM - CM+4. VTC SUBR ENTRY/EXIT VTCA LDN 0 ZJN VTCX IF MASS STORAGE VALIDATION DISABLED LDD T5 STD CM+1 LDD T6 SET UP MONITOR CALL STD CM+2 LDN VTCS REQUEST TRACK CHAIN VALIDATION STD CM+3 MONITOR VMSM LDD CM+1 UJN VTCX RETURN WQF SPACE 4,15 ** WQF - WRITE QUEUED FILE SECTOR. * * WQF WRITES THE SECTOR OF QUEUED FILE ENTRIES. * * ENTRY (QT) = INACTIVE QUEUES FILE TRACK. * (QS) = INACTIVE QUEUES FILE SECTOR. * (QI) = INACTIVE QUEUED FILE INDEX. * * USES T3, T6, T7, QS, CM - CM+4, CSSA. * * CALLS DFM, WDS. * * MACROS ENDMS, MONITOR, SETMS. WQF SUBR ENTRY/EXIT LDD QT SET *IQFT* TRACK STD T6 LDD QS SET *IQFT* SECTOR STD T7 ADN 1 SET SECTOR LINKAGE STM SBUF STD QS SET NEXT *IQFT* SECTOR LMM SLM NJN WQF1 IF NOT LAST SECTOR ENDMS * LDN 0 STD CM+3 RESET SECTOR STD CM+4 STD QS LDD T5 STD CM+1 LDD T6 STD CM+2 MONITOR RTCM REQUEST TRACK LDD CM+4 STM SBUF DISK LINKAGE ZJN WQF4 IF TRACK NOT ASSIGNED STD QT WQF1 SETMS POSITION LDD QI SET WORD COUNT IN LINKAGE STM SBUF+1 ZJN WQF2 IF EMPTY SECTOR LDD RA SHN 6 ADD CR FWA OF IQFT BUFFER CRM SBUF+2,QI READ PRU BACK WQF2 LDC SBUF+WLSF RJM WDS WRITE SECTOR LDN 0 STD QI RESET QUEUE INDEX WQF3 LJM WQFX RETURN * NO SPACE AVAILABLE LEAVE PRU FOR EOI SECTOR. WQF4 STM CQFA DISABLE QUEUE FILE PROCESSING LDD T7 RESET SECTOR STD QS LDC IQFB *EQXXX, TRACK LIMIT ON IQFT.* RJM DFM UJN WQF3 RETURN IDM SPACE 4,20 ** IDM - ISSUE DAYFILE MESSAGES FOR FILES PROCESSED. * * ENTRY (PMPC) = PRESERVED FILE ERROR COUNT. * (PMEC) = FILE ERROR COUNT. * (PMFC) = FILE RECOVERY COUNT. * (PMRC) = QUEUED FILE RECOVERY COUNT. * (PMQC) = QUEUED FILE ERROR COUNT. * (PQIC) = QUEUED FILES IGNORED COUNT. * (FN - FN+4) = EST ENTRY. * (T5) = EQUIPMENT. * * EXIT APPROPRIATE MESSAGES ISSUED TO DAYFILE. * * USES T1, T7, CM - CM+4. * * CALLS ACS, DFM, IRM. IDM3 RJM IRM ISSUE RECOVERY MESSAGES IDM SUBR ENTRY/EXIT LDC IDMA-1 SET BIASED MESSAGE ADDRESS STD T7 * ISSUE FILES PROCESSED. IDM1 AOD T7 ADVANCE ADDRESS LMC IDMB ZJN IDM3 IF END OF MESSAGES LDI T7 ZJN IDM1 IF NO COUNT LDN ZERL CLEAR COUNT CRD CM * SET COUNT TO COUNT*1000. IDM2 LDC 1000D RAD CM+4 SHN -14 RAD CM+3 SOI T7 DECREMENT COUNT NJN IDM2 IF MORE TO CONVERT LDC IDMD STD T1 LDD MA CONVERT COUNT CWD CM MONITOR RDCM STI T1 LDD MA CRD CM LDD CM+1 STM IDMC+3 LDD CM+2 STM IDMC+4 LDM IDMB-IDMA,T7 ADD DESCRIPTION TO MESSAGE RJM ACS LDC IDMC ISSUE MESSAGE RJM DFM LJM IDM1 LOOP FOR NEXT MESSAGE IDMA BSS 0 PMFC CON 0 FILE RECOVERY COUNT PMPC CON 0 PRESERVED FILE ERROR COUNT PMEC CON 0 PERMANENT FILE ERROR COUNT PMRC CON 0 QUEUED FILE RECOVERY COUNT PMQC CON 0 QUEUED FILE ERROR COUNT PQIC CON 0 QUEUED FILES IGNORED COUNT IDMB CON =C* DIRECT ACCESS FILES RECOVERED.* CON =C* PRESERVED FILE ERRORS.* CON =C* DIRECT ACCESS FILE ERRORS.* CON =C* QUEUED FILES RECOVERED.* CON =C* QUEUED FILE ERRORS.* CON =C* QUEUED FILES IGNORED.* IDMC DATA H*EQXXX NNNN* IDMD BSS 21 IRM SPACE 4,10 ** IRM - ISSUE RECOVERY MESSAGES. * * ENTRY (FN - FN+4) = EST ENTRY. * * EXIT MESSAGES ISSUED TO ACCOUNTING AND SYSTEM DAYFILES. * EVENT SET FOR AUXILIARY DEVICE. * * USES T1, T3, T4, T6, T7, CM - CM+4, CN - CN+4. * * CALLS ACS, C2D, DFM. IRM SUBR ENTRY/EXIT LDD FN+4 GET FAMILY/PACKNAME SHN 3 ADN PFGL CRD CM ADN PUGL-PFGL READ USER NAME CRD CN LDC 2REQ STM IRMB LDC IRMB+3 SET ADDRESS OF ASSEMBLY BUFFER STD T1 LDC 2L RESET BUFFER STI T1 LDD CM+4 SAVE SECURITY ACCESS LEVELS SHN -6 STD T4 LDN 0 SET *END OF LINE* IN (CM+4) STD CM+4 LDD CM+3 EXTRACT DEVICE NUMBER LPN 77 STD T7 LMD CM+3 CLEAR DEVICE NUMBER STD CM+3 ADD CM+2 BUILD PACKNAME HASH ADD CM+1 ADD CM STD CN+4 SAVE PACKNAME HASH LDD CN+3 SET END OF USER NAME SCN 77 STD CN+3 LDN CM ADD FAMILY/PACKNAME TO MESSAGE RJM ACS LDD T7 ZJN IRM1 IF AUXILIARY DEVICE RJM C2D CONVERT DEVICE NUMBER STD CM+3 LDC =C*, * ADD SEPARATOR RJM ACS LDN CM+3 ADD DEVICE NUMBER TO MESSAGE RJM ACS LDC 2RPM&2RDR SET ACCOUNT FILE MESSAGE PREFIX IRM1 LMC 2RPM STM IRMA+1 LDD T1 SAVE CURRENT END OF ASSEMBLY STD T3 LDI T1 STD T6 LDC IRMD ADD * RECOVERED.* TO MESSAGE RJM ACS LDC IRMB ISSUE SYSTEM DAYFILE MESSAGE RJM DFM LDD T3 SET START OF NEW ASSEMBLY STD T1 LDD T6 STI T1 LDC 2R, REPLACE *EQ* WITH *, * STM IRMB LDC =C*, * INSERT SEPARATOR RJM ACS LDD T7 NJN IRM2 IF PERMANENT FILE DEVICE LDN CN ADD USER NAME TO MESSAGE RJM ACS LDC =C*, * INSERT SEPARATOR RJM ACS IRM2 LDD T4 GET LOWER SECURITY ACCESS LEVEL SHN -3 SHN 2 CALCULATE INDEX INTO ACCESS TABLE ADC TALV INSERT LOWER ACCESS LEVEL RJM ACS LDC =C*, * INSERT SEPARATOR RJM ACS LDD T4 GET UPPER ACCESS LEVEL LPN 7 SHN 2 CALCULATE INDEX INTO ACCESS TABLE ADC TALV INSERT UPPER ACCESS LEVEL RJM ACS LDC IRME ADD *.* TO END OF MESSAGE RJM ACS LDC IRMA+ACFN ISSUE ACCOUNT FILE MESSAGE RJM DFM LDK SSTL CRD CM LDD CM+1 SHN 21-5 PJN IRM3 IF DISK VALIDATION IS ENABLED LDD T7 NJN IRM3 IF NOT AUXILIARY DEVICE STD CM+1 SET EVENT LDN VSNE/10000 STD CM+3 LDD CN+4 READ PACKNAME HASH STD CM+4 MONITOR EATM IRM3 LJM IRMX RETURN IRMA DATA 4HADDR IRMB DATA H*EQXXX, * IRMC BSS 22 IRMD DATA 10H RECOVERED IRME DATA C*.* LSN SPACE 4,15 ** LSN - LIST PACK SERIAL NUMBERS. * * ENTRY (EQ) = EST ORDINAL. * (FN - FN+4) = EST ENTRY FOR EQUIPMENT. * * EXIT PACK SERIAL NUMBER IDENTIFICATION MESSAGES ISSUED TO * THE ERROR LOG FOR ALL UNITS OF THE EQUIPMENT. * * USES CM+1, T1, T2, CN - CN+4, FS+1 - FS+3. * * CALLS DFM, SDR, *0PI*. * * MACROS EXECUTE. LSN4 LDN TLSNL-1 CHECK DEVICE TYPE FOR NON-*LDAM* DEVICE STD T1 LSN5 LDD FN+3 LMM TLSN,T1 ZJN LSNX IF DEVICE TYPE MATCHES SOD T1 PJN LSN5 IF MORE DEVICE TYPES TO CHECK LSN6 LDN LDIF RJM /RDA/SDR SET BUFFERED DEVICE REQUEST LSN SUBR ENTRY/EXIT LDD FN+4 SHN 3 ADN DDLL GET LOGICAL UNIT COUNT CRD CN LDD CN EXTRACT UNIT COUNT LPN 7 STD CN STD T2 LDD FN SHN 21-7 PJN LSN4 IF NOT *LDAM* DEVICE LDD FN+1 SHN 21-5 MJN LSN6 IF CONCURRENT CHANNEL LDD T5 STM /RDA/SBUF EXECUTE 0PI,/RDA/SBUF+1 STD FS+3 SAVE MAIN PROCESSOR ADDRESS LDN 0 SET TO FIRST LOGICAL UNIT STD FS+1 LSN1 LDD FS+1 GET MESSAGE FOR A LOGICAL UNIT RJM 0,FS+3 ZJN LSN2 IF MASS STORAGE ERROR STD FS+2 SAVE MESSAGE TABLE ADDRESS SHN -14 SET BML MESSAGE LENGTH STD CM+1 LDC BMLN ADM 1,FS+2 ADD BML MESSAGE ADDRESS RJM DFM LDI FS+2 GET ERROR LOG MESSAGE ADDRESS LMC ERLN SEND MESSAGE TO ERROR LOG RJM DFM LSN2 AOD FS+1 ADVANCE LOGICAL UNIT SOD CN DECREMENT LOGICAL UNIT COUNT PJN LSN1 IF MORE LOGICAL UNITS LJM LSNX EXIT TLSN BSS 0 NON-*LDAM* DEVICES WITH NO PSN-S TO LIST CON 2RDE EXTENDED MEMORY CON 2RDP EXTENDED MEMORY/STORNET CON 2RDV 819 CON 2RDW 819 TLSNL EQU *-TLSN LENGTH OF TABLE PFE SPACE 4,15 ** PFE - PERMANENT FILE ERROR. * * ENTRY (CN) = FILE TYPE. * (BFMS) LOADED WITH SYSTEM SECTOR. * * EXIT ERROR MESSAGE ISSUED TO ERROR LOG AND SYSTEM DAYFILE. * APPROPIATE ERROR COUNT INCREMENTED. * * USES T1 - T3, CM - CM+4. * * CALLS ACS, C2D, DFM. * * MACROS ENDMS. PFE SUBR ENTRY/EXIT ENDMS LDD CN NJN PFE1 IF NOT QUEUE FILE AOM PMQC ADVANCE QUEUED FILE ERROR COUNT LDC 2RQF UJN PFE1.1 SET MESSAGE PREFIX PFE1 LMN LIFT NJN PFE1.2 IF NOT A LIBRARY FILE LDC 2RLI PFE1.1 STM PFEA SET MESSAGE PREFIX * BLANK USER INDEX FOR QUEUED FILE OR LIBRARY FILE. LDC 2R BLANK USER INDEX STM PFEB STM PFEB+1 STM PFEB+2 LDD MA CWM FNSS,ON UJN PFE2 MOVE FILE NAME TO MESSAGE * PROCESS PERMANENT FILE ERROR. PFE1.2 AOM PMEC ADVANCE ERROR COUNT LDM CTSS+FCUI FIRST 2 DIGITS RJM C2D STM PFEB LDM CTSS+FCUI+1 SECOND 2 DIGITS SHN -6 RJM C2D STM PFEB+1 LDM CTSS+FCUI+1 LAST 2 DIGITS RJM C2D STM PFEB+2 LDC 2RPF SET FILE TYPE STM PFEA LDD MA MOVE FILE NAME TO MESSAGE CWM CTSS+FCFN,ON PFE2 SBN 1 CRM PFEC,ON LDM PFEC+3 CLEAR 8TH CHARACTER SCN 77 STM PFEC+3 LDC IDMC+3 SET MESSAGE ADDRESSES STD T1 LDC PFED+5 STD T3 LDN T7 SET SECTOR ADDRESS STD T2 PFE3 LDI T2 CONVERT DISK ADDRESS OF ERROR RJM C2D STI T3 STORE IN MESSAGE SOD T3 LDI T2 CONVERT UPPER HALF OF SECTOR/TRACK SHN -6 RJM C2D STI T3 STORE IN MESSAGE LCN 2 DECREMENT MESSAGE ADDRESS RAD T3 SOD T2 DECREMENT PARAMETER ADDRESS LMN T6-1 NJN PFE3 IF TRACK NOT CONVERTED STM PFEC+4 SET END OF MESSAGE I STI T1 LDC RDAD+2 ASSEMBLE FIRST PART OF MESSAGE II RJM ACS AOD T3 ASSEMBLE END OF MESSAGE II RJM ACS LDC PFEE+ERLN ISSUE TO ERROR LOG RJM DFM LDC IDMC+ERLN RJM DFM LDC PFEE+NMSN ISSUE TO SYSTEM RJM DFM LJM PFEX RETURN PFEE DATA H*EQXXX * PFEA DATA H*PF LENGTH ERROR * PFEB DATA H*UINDEX * PFEC DATA H*FILENAME * PFED DATA C* TTTTT SSSSS LINKAGE ERROR.* CTU SPACE 4,10 ** CTU - CLEAR TOTAL USER COUNTS. * * ENTRY (CN) = FILE TYPE. * (FS+1) = FIRST TRACK OF FILE. * (CN+1) = SYSTEM SECTOR REWRITE FLAG. * * USES T1. * * CALLS WSR. CTU2 AOM PMFC ADVANCE DAF RECOVERY COUNT CTU SUBR ENTRY/EXIT LDD CN+1 ZJN CTU2 IF NO SYSTEM SECTOR REWRITE LDD CN LMN LIFT ZJN CTU2 IF LIBRARY FILE LDC 5*MMPF+5 STD T1 CTU1 LDN 0 CLEAR USER COUNT FIELDS STM UCSS-1,T1 SOD T1 NJN CTU1 STM CASS CLEAR CURRENT ACCESS MODE STM FISS CLEAR FAST ATTACH FLAGS LDD FS+1 RESET FIRST TRACK RJM WSR WRITE SYSTEM SECTOR WITH REWRITE UJN CTU2 ADVANCE DAF RECOVERY COUNT GDE SPACE 4,15 ** GDE - GET DAT ENTRY. * * ENTRY (FN - FN+4) = EST ENTRY FOR DEVICE. * (T3) = 0 IF DEVICE NOT BEING INITIALIZED. * (T7) = BYTE 0 OF MDGL WORD. * (CN - CN+4) = TDGL WORD OF MST. * * EXIT (DATB) = SECOND WORD OF DAT ENTRY. * * USES T1, T2, CM - CM+4. * * CALLS CPS, CUS, IRM, WDE. * * MACROS MMTE, MONITOR, UJMF. GDE3 LDD CN+2 SET *DIT* OFFSET SBN 10-7 SHN -3 ADD CN+2 STD T2 LDN 0 STD T1 GDE4 AOD T1 LMN MISD ZJN GDEX IF ALL ENTRIES CHECKED LDD T1 ADC 0 READ *DIT* ENTRY GDEC EQU *-1 ADD T2 CRD CM LDD CM+4 ZJN GDE4 IF ENTRY NOT USED LMC * GDED EQU *-1 ZJN GDE4 IF THIS MACHINE LJM GDE1 ISSUE RECOVERY MESSAGES GDE SUBR ENTRY/EXIT LDD FN SHN 21-4 MJN GDE3 IF INDEPENDENT SHARED DEVICE UJMF GDEX LDN 1-1 WORD COUNT FOR *ECSM* REQUEST STD CM+1 LDD T7 SET *DAT* ORDINAL FROM INDEX LPC 377 SHN 1 ADC 1 ADD DAT TRACK ADDRESS GDEA EQU *-1 STD CM+4 STM WDEA SHN -14 ADC RECS*1000 GDEB EQU *-1 STD CM+3 STM WDEB LDD MA CM ADDRESS = PP MESSAGE BUFFER STD CM+2 MONITOR ECSM LDD MA READ *DAT* ENTRY TO PP BUFFER CRM DATB,ON LDD T3 NJN GDE2 IF DEVICE BEING INITIALIZED LDM DATB+4 CHECK DEVICE STATUS LPC -0 MMTE *-1 NJN GDE1 IF RECOVERY COMPLETE LJM GDEX RETURN GDE1 RJM IRM ISSUE RECOVERY MESSAGES RJM CPS CHECK PFC SIZE RJM CUS GDE2 RJM WDE UPDATE DAT ENTRY LJM RDAX EXIT OVERLAY WDE SPACE 4,10 ** WDE - WRITE DAT ENTRY TO EXTENDED MEMORY. * * ENTRY *DATI* INTERLOCK SET. * DAT ENTRY IN DATB. WDE SUBR ENTRY/EXIT UJMF WDEX LDM DATB+4 SET MACHINE ACCESS LPC -0 MMTE *-1 LMC 0 MMTE *-1 STM DATB+4 LDC ** SET DAT ADDRESS WDEA EQU *-1 STD CM+4 LDC ** WDEB EQU *-1 ADD TH ERRNZ RECS+1-WECS ADJUST IF *RECS/WECS* VALUES CHANGE STD CM+3 LDD MA SET CM ADDRESS OF ENTRY STD CM+2 CWM DATB,ON LDN 1-1 WORD COUNT FOR TRANSFER * SHN 6 STD CM+1 MONITOR ECSM UJN WDEX RETURN WSR SPACE 4,15 ** WSR - WRITE SYSTEM SECTOR WITH REWRITE. * * ENTRY (A) = FIRST TRACK OF FILE. * (T5) = EST ORDINAL. * *SETMS IO* PERFORMED. * * EXIT (T6) = FIRST TRACK OF FILE. * * USES T6. * * CALLS WSS. * * MACROS SETMS. WSR SUBR ENTRY/EXIT STD T6 SETMS POSITION LDM UERR SAVE ERROR PROCESSING OPTIONS STM WSRA+1 LMD HN SET REWRITE MODE ERRNZ EPRW-100 CODE DEPENDS ON VALUE STM UERR SETMS =,IO,RW RJM WSS REWRITE SYSTEM SECTOR WSRA LDC 0 RESET ERROR PROCESSING OPTIONS STM UERR SETMS =,IO UJN WSRX RETURN SPACE 4,10 ** COMMON DECKS. *CALL COMPACS *CALL COMPCLC *CALL COMPC2D *CALL COMPSDA *CALL COMPSDR *CALL COMPRSS *CALL COMPSEI *CALL COMPSES *CALL COMPSMI *CALL COMPSNT *CALL COMPTLB *CALL COMPTGB VAL$ SET 1 *CALL COMPVLC WEIA EQU SBUF USE *SBUF* FOR EOI BUFFER *CALL COMPWEI *CALL COMPWSS LIST X *CALL COMPVEI LIST * USE LITERALS ERRNG SBUF-* CODE OVERFLOWS INTO BUFFER TITLE PRESET. PRS SPACE 4,10 ** PRS - PRESET. PRS2 STD T2 SET INSTRUCTION ADDRESS LDN PSNI REPLACE INSTRUCTION WITH *PSN* STI T2 AOD T1 ADVANCE LIST ADDRESS PRS3 LDI T1 NJN PRS2 LOOP TO END OF LIST PRSX LJM RDEX EXIT OVERLAY PRS BSS 0 ENTRY LDN SSTL READ SYSTEM STATUS CRD CM LDD CM ENABLE/DISABLE TRACK CHAIN VALIDATION LPN 4 LMN 4 RAM VTCA LDD RS NJN PRS0 IF RECOVERY DEADSTART LDN PSNI SET LEVEL-0 RECOVERY STM RDAA PRS0 LDC MMFL READ MMF STATUS WORD CRD CM LDD CM SET MACHINE ID STM GDED LDD CM+1 LPC 777 ZJN PRSX IF NOT MMF SYSTEM SFA EST READ EST ENTRY FOR LINK DEVICE ADK EQDE CRD CN LDD CN+4 SET EXTENDED MEMORY MST POINTER STM LDMP SHN 3 READ DEVICE ALLOCATION WORD ADN ALGL CRD CN LDD CN+4 SET DAT TRACK STD T6 LDN 0 STD T7 LDC T"QUAL" SET LIST ADDRESS STD T1 LDI T1 SET INSTRUCTION ADDRESS PRS1 STD T0 LDD CM+3 SET MACHINE MASK LMI T0 STI T0 AOD T1 ADVANCE LIST ADDRESS LDI T1 NJN PRS1 LOOP TO END OF TABLE RJM CEA LDD CM+4 SET ADDRESS IN CODE RAM GDEA LDD CM+3 RAM GDEB LDC LRDA ENABLE MMF RECOVERY STD T1 LJM PRS3 SPACE 4,10 ** COMMON DECKS USED BY PRESET. *CALL COMPCEA * LIST OF *4DA* INSTRUCTIONS MODIFIED FOR MMF RECOVERY. LRDA BSS 0 LRDA HERE ERRZR LRDA-* TABLE EMPTY - REMOVE PRESET CODE CON 0 TERMINATE LIST * LIST OF INSTRUCTIONS TO BE PRESET WITH MACHINE MASK. T"QUAL" BSS 0 T"QUAL" HERE ERRZR T"QUAL"-* TABLE EMPTY - REMOVE PRESET CODE CON 0 TERMINATE LIST QUAL SPACE 4,10 OVERFLOW O4DA,EPFW CHECK FOR OVERFLOW TTL MSM/4DB - DEVICE RECOVERY ROUTINES. TITLE IDENT 4DB,RDBX *COMMENT MSM - DEVICE RECOVERY ROUTINES. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4 *** *4DB* CONTAINS ROUTINES FOR READING LABELS * AND COMMON SUBROUTINES REQUIRED FOR TRT RECOVERY. SPACE 4,10 *** OPERATOR MESSAGES. * * *EQXXX, DEVICE ACCESS ERROR.* = DEADSTART MESSAGE * INDICATING THAT THE DEVICE ACCESS LEVEL LIMITS IN THE * DEVICE LABEL OF A NON-REMOVABLE DEVICE ARE NOT WITHIN * THE EQUIPMENT ACCESS LEVEL LIMITS FROM THE DEVICE EST * ORDINAL FOR EQUIPMENT XXX. * * *EQXXX, SECURED DEVICE.* = DEVICE ACCESS LEVEL LIMITS * IN THE DEVICE LABEL ON AN UNSECURED SYSTEM ARE NOT * WITHIN THE EQUIPMENT ACCESS LEVEL LIMITS FROM THE * EST FOR EST ORDINAL XXX. SPACE 4,10 *** ERRLOG MESSAGES. * * *EQXXX, SECURED DEVICE.* = DEVICE ACCESS LEVEL LIMITS * IN THE DEVICE LABEL ON AN UNSECURED SYSTEM ARE NOT * WITHIN THE EQUIPMENT ACCESS LEVEL LIMITS FROM THE * EST FOR EST ORDINAL XXX. * * EQXXX, SECURED DEVICE RECOVERED.* = DEVICE ACCESS LEVEL * LIMITS IN THE DEVICE LABEL ON AN UNSECURED SYSTEM WERE * NOT WITHIN THE EQUIPMENT ACCESS LEVEL LIMITS FROM THE * EST FOR EST ORDINAL XXX, BUT THE OPERATOR ENTERED * *GO,CMS.* TO RECOVER THE DEVICE. SPACE 4,10 ** MACRO DEFINITIONS. SPACE 4,10 ** TBLM = GENERATE TABLE OF ALTERNATE LABEL SECTORS. * * TBLM EQ * EQ = MASS STORAGE EQUIPMENT MNEMONIC. PURGMAC TBLM TBLM MACRO EQ CON 2R_EQ,LC_EQ ENDM SPACE 4 ** INTERNAL TABLES AND BUFFERS. .1 MAX /CMS/PRS,/RMS/PRS BUFFER FOR *DAT* ENTRY DATB EQU .1 ORDB EQU DATB+12-4 *4DB* OVERLAY ORIGIN ORDK EQU ORDB *4DK* OVERLAY ORIGIN SPACE 4 ORG ORDB RDB SUBR ENTRY/EXIT LJM PRS MMFP CON 0 MMF PRESENT FLAG SDIF CON 0 SHARED DEVICE INTERLOCK FLAG MRL TITLE MAIN RECOVERY LOOP. ** MRL - MAIN RECOVERY LOOP. * * ENTRY (A) = PROCESSOR ADDRESS. * * EXIT TO SELECTED PROCESSOR. * (EQ) = (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * USES T5, EQ, FN - FN+4. * * CALLS LRA, /RMS/SEM. * * MACROS SFA. MRL1 LDC 0 EQUIPMENT FOR SPECIAL PROCESSING MRLC EQU *-1 ZJN MRL2 IF NO SPECIAL EQUIPMENT CHECK LMD EQ MRLD ZJN MRL3 IF NOT TO PROCESS THIS EQUIPMENT * NJN MRL3 IF ONLY PROCESSING THIS EQUIPMENT MRL2 RJM LRA LOAD REFERENCE ADDRESS ADD EQ CRD RD LDD RE SHN 0-13 ZJN MRL3 IF NOT MASS STORAGE OR BEING RECOVERED MRLB RJM /RMS/SEM SET EQUIPMENT MESSAGE * UJN *+2 (*CMS* CALL) SFA EST,EQ READ EST ENTRY ADK EQDE CRD FN LDD RE CHECK EST ENTRY RJM * MRLA EQU *-1 MJN MRL3 IF REWRITE NOT REQUIRED RJM LRA LOAD REFERENCE ADDRESS ADD EQ REWRITE RECOVERY TABLES CWD RD MRL3 AOD EQ ADVANCE EQUIPMENT INDEX MRL4 STD T5 LMD LO NJN MRL1 IF NOT END OF MASS STORAGE DEVICES MRL SUBR ENTRY/EXIT STM MRLA SET PROCESSOR ADDRESS LDN NOPE INITIALIZE EST ORDINAL FOR SEARCH STD EQ UJN MRL4 ENTER LOOP TITLE COMMON DECKS. ** COMMON DECKS. CEA$ EQU 0 ASSEMBLE *CEI* IN PRESET *CALL COMPCEA QUAL CLC *CALL COMPCLC QUAL CDC EQU /CLC/CDC CLC EQU /CLC/CLC RLA$ EQU 1 DEFINE ENTRY CONDITIONS FOR *COMPRLA* *CALL COMPRLA *CALL COMPSES *CALL COMPSMI *CALL COMPTLB TITLE COMMON SUBROUTINES. ADE SPACE 4,15 ** ADE - ACCESS DAT ENTRY. * * ENTRY (A) = *ECSM* FUNCTION CODE. * (QS) = DAT INDEX. * (ADEA) = DAT TRACK. * * EXIT (T6) = DAT TRACK. * * USES T6, T7, CM - CM+4. * * CALLS CEA. * * MACROS MONITOR. ADE SUBR ENTRY/EXIT SHN 11 SAVE FUNCTION CODE STM ADEB LDC ** SET DAT TRACK ADEA EQU *-1 STD T6 LDN 0 STD T7 RJM CEA CONVERT EXTENDED MEMORY ADDRESS LDD QS RAD CM+4 SHN -14 LMC ** SET SUBFUNCTION * LMC RECS*1000 (READ SUBFUNCTION) * LMC WECS*1000 (WRITE SUBFUNCTION) ADEB EQU *-1 RAD CM+3 LDD HN SET WORD COUNT (2 WORDS) STD CM+1 LDD MA CM ADDRESS = PP MESSAGE BUFFER STD CM+2 MONITOR ECSM LJM ADEX RETURN ATC SPACE 4,10 ** ATC - ADJUST TRACK COUNT. * * ENTRY (FN - FN+4) = EST ENTRY. * (T5) = EQUIPMENT. * * EXIT REMAINING TRACK AND SECTOR COUNTS SET. * * USES T0 - T3, CM - CM+4, CN - CN+4. * * CALLS PTA, STA. ATC SUBR ENTRY/EXIT LDD RE CHECK SHARED DEVICE STATUS LPC 1002 LMC 1002 ZJN ATCX IF PREVIOUSLY DEFINED AS SHARED RJM PTA PRESET FWA OF TRT LDD FN+4 READ TDGL WORD OF MST SHN 3 ADK TDGL CRD CN LDD CN+2 SET LENGTH OF TRT STD T2 SHN 2 STD CN+4 RJM STA SET FWA OF TRT ADD T2 UJN ATC4 READ TRT * CLEAR TRACK INTERLOCKS. ATC1 LDD CM+4 LPC 7417 STD CM+4 LPN 17 SET RESERVATION BITS ZJN ATC3 IF NONE ATC2 SHN 21-0 PJN ATC2 IF BIT NOT RESERVED STD T0 SOD CN+4 LDD T0 NJN ATC2 IF MORE RESERVATIONS ATC3 RJM STA SET FWA OF TRT ADD T2 CWD CM ATC4 SBN 1 CRD CM SOD T2 PJN ATC1 IF NOT END OF TRT LDC 4000 SET NOS MST FLAG STD CN+3 LDD FN+4 STORE *TDGL* SHN 3 ADK TDGL CWD CN LJM ATCX RETURN CDA SPACE 4,10 ** CDA - CHECK DEVICE AVAILABILITY. * * ENTRY (EQ) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT (A) = 0, IF AVAILABLE FOR RECOVERY. * .NE. 0, IF UNLOADED. * .LT. 0, IF NOT AVAILABLE FOR RECOVERY. * * USES FS - FS+4. CDA1 LCN 0 CDA SUBR ENTRY/EXIT LDD RE SHN 21-6 PJN CDA1 IF DEVICE AVAILABLE SHN 6-21 LPN 1 NJN CDAX IF LABEL NOT READ LDD FN+4 READ *STLL* SHN 3 ADN STLL CRD FS SBN STLL-PFGL READ DEVICE DESCRIPTION CRM DLPB,TW LDD FS+4 LPN MLDIU NJN CDA1 IF EQUIPMENT IN USE LDD FS LPN MLUNL UJN CDAX RETURN CDI SPACE 4,15 ** CDI - CLEAR ISD INTERLOCKS. * * ENTRY (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT INTERLOCKS CLEARED IN LABEL. * * USES T0, T1, T6, T7, CM - CM+4. * * CALLS CDC, CLT, RDS, SMI, WDS. * * MACROS ENDMS, SETMS. CDI3 ENDMS CDI SUBR ENTRY/EXIT LDD FN SHN 21-4 PJN CDIX IF NOT INDEPENDENT SHARED DEVICE RJM CLT ZJN CDIX IF NO LABEL TRACK LDN 0 STD T7 SETMS IO,(DE,DF) LDC BFMS RJM RDS MJN CDIX IF READ ERROR RJM SMI STD T1 SET MACHINE INDEX SHN 1 LMM N4SS+5*SDGL+4 SCN 1 STD T0 CHECK MST INTERLOCK LPN 76 NJN CDI1 IF NOT INTERLOCKED BY THIS MACHINE LDD T0 STM N4SS+5*SDGL+4 CDI1 LDD T1 CALCULATE ADDRESS OF DIT ENTRY SHN 2 ADC DISS-5+4 RAD T1 SBN 4 STM CDIB LDI T1 CHECK MACHINE ID LMC 0 CDIA EQU *-1 NJN CDI2 IF DIT ENTRY NOT ASSIGNED HERE LDN ZERL CRM *,ON CDIB EQU *-1 RJM CDC COMPUTE LABEL CHECKSUM STM CKSS LDC BFMS+WLSF RJM WDS CDI2 LJM CDI3 RETURN CLR SPACE 4 ** CLR - CLEAR RESIDENT TRT. * * ENTRY (FN - FN+4) = EST ENTRY. * * EXIT (A) = MST ADDRESS OF TDGL WORD. * CMR AREA FOR TRT CLEARED. * FLAWS RETAINED FOR NON-REMOVABLE DEVICE. * MRT FOR SHARED DEVICE CLEARED. * * USES T0 - T3, CM - CM+7, CN - CN+4. * * CALLS PTA, STA. CLR3 RJM STA SET FWA OF TRT ADD T1 CRD CM LDD CM+4 ZJN CLR7 IF NO TRACKS RESERVED LDN CM STD T3 LDN ZERL CLEAR ASSEMBLY CRD CN CLR4 LDI T3 CHECK TRACK BYTE LMC 3777 NJN CLR5 IF TRACK NOT FLAWED AOD T0 ADVANCE FLAWED TRACK COUNT LDI T3 SET FLAW IN ASSEMBLY STM CN-CM,T3 LDM CLRB-CM,T3 SET TRACK RESERVATION RAD CN+4 CLR5 AOD T3 ADVANCE BYTE INDEX LMN CM+4 NJN CLR4 LOOP TO END OF TRT WORD CLR6 RJM STA SET FWA OF TRT ADD T1 CWD CN CLR7 AOD T1 ADVANCE WORD INDEX LMD T2 CLR8 NJN CLR3 LOOP TO END OF TRT * NJN CLR6 REMOVABLE DEVICE STD CM+4 CLEAR UNUSED BYTE LDD CM+6 SET TRACK COUNTS STD CM+3 SBD T0 STD CM+7 LDC 4000 SET NOS MST FLAG STD CM+6 LDD FN+4 UPDATE MST SHN 3 ADK TDGL CWD CM+3 CLR SUBR ENTRY/EXIT RJM PTA PRESET FWA OF TRT LDD FN+4 READ *TDGL* SHN 3 ADK TDGL CRD CM+3 LDD CM+3 SAVE TRACK COUNT FOR DEVICE STD CM+6 LDN 0 SET INDEX STD T1 LDD CM+5 SET LENGTH OF TRT STD T2 STD CM ADN 7 SET END OF MRT SHN -3 ADD CM STD T3 LDN 0 STD T0 LDN ZERL CRD CN LDD FN SHN 21-11 PJN CLR2 IF NOT SHARED DEVICE SHN 21-4-21+11 PJN CLR1 IF NOT AN ISHARED DEVICE LDN MISD ADD IN *DIT* LENGTH RAD T3 CLR1 RJM STA SET FWA OF TRT ADD CM SET FWA OF MRT CWD CN CLEAR MRT WORD AOD CM LMD T3 NJN CLR1 LOOP TO END OF MRT CLR2 LDD FN EXTRACT REMOVABLE STATUS SHN -10 LPN 1 STD T3 LDM CLRA,T3 SET LOOP CONDITION STM CLR8 LJM CLR8 CLEAR TRT CLRA BSS 0 LOC CLR8 NJN CLR3 LOC CLR8 NJN CLR6 LOC *O CLRB CON 10 TRACK RESERVATION BITS CON 4 CON 2 CON 1 CLT SPACE 4,10 ** CLT - CHECK LABEL TRACK. * * ENTRY (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT (A) = (T6) = LABEL TRACK. * (CM+7) = BYTE 4 OF *ALGL* WORD. * * USES CM - CM+7. * * CALLS LRA. CLT SUBR ENTRY/EXIT LDD FN+4 SHN 3 ADN ALGL CHECK LABEL TRACK IN MST CRD CM+3 LDD CM+4 NJN CLT1 IF LABEL TRACK FOUND RJM LRA LOAD REFERENCE ADDRESS ADD AL ADN ALGL CHECK MST IMAGE FROM LABEL TRACK CRD CM LDD CM+1 SET LABEL TRACK CLT1 STD T6 UJN CLTX RETURN CMT SPACE 4 ** CMT - CLEAR MST. * * ENTRY (FN - FN+4) = EST ENTRY. * (FS - FS+4) = STLL WORD. * (EC) = ERROR CODE. * (EQ) = PRIMARY EST ORDINAL. * * EXIT (T6) = GLOBAL UNLOAD STATUS. * EST - MST RESTORED TO ORIGINAL STATUS. * DEVICE SET UNAVAILABLE. * * USES CN - CN+4, CM - CM+4, FS - FS+4, FN. * * CALLS CLR, CLT. * * MACROS CMSTF, SFA. CMT SUBR ENTRY/EXIT LDN ZERL CRD CN LDD FN LPC 7667 LMD HN SET DEVICE UNAVAILABLE STD FN SFA EST,T5 UPDATE EST ADK EQDE CWD FN RJM CLT NJN CMT1 IF LABEL TRACK KNOWN LDD CM+7 CMT1 STD CN+4 LDN ZERL CRD CM LDD FN+4 CLEAR DEVICE ALLOCATION WORD SHN 3 ADN ALGL CWD CN ADN DULL-ALGL CLEAR DAYFILE POINTERS CWD CM SBN DULL-MDGL READ DRIVER WORD CRD CN SBN MDGL-SDGL CRD CM SBN SDGL-ACGL GET DEVICE ACTIVITY WORD CRD CM+3 LDD CM+7 RETAIN GLOBAL UNLOAD FLAG LPN MGUNL STD CM+7 STD T6 LDN ZERL CLEAR TRT UPDATE STATUS CRD CM+2 * SET DEVICE STATUS. LDD FS RETAIN INTIALIZE AND EQUIPMENT STATUS SCN MLCKP STD FS LDN MLDIU+MLMTI SET DEVICE IN USE STD FS+4 LDD CN CLEAR AUXILIARY STATUS LPC 5777 STD CN LDD T5 LMD EQ NJN CMT2 IF NOT PRIMARY EQUIPMENT LDD FS+1 SET ERROR CODE SCN 77 LMD EC STD FS+1 LDD FN SHN 21-11 MJN CMT3 IF SHARED DEVICE LDD CN CLEAR *DAT* INDEX LPC 7400 STD CN UJN CMT3 STORE MST PARAMETERS CMT2 LDD FN+4 CLEAR DEVICE AND USER DESCRIPTION SHN 3 ADK PFGL CWD CM+2 ADK PUGL-PFGL CWD CM+2 CMT3 LDD FN+4 STORE MST PARAMETERS SHN 3 ADN MDGL RESET DRIVER CHARACTERISTICS CWD CN ADN STLL-MDGL STORE *STLL* CWD FS SBN STLL-SDGL CWD CM SBN SDGL-ACGL STORE DEVICE ACTIVITY WORD CWD CM+3 ADN ISGL-ACGL CLEAR INSTALLATION AREA CWD CM+2 ADN I2GL-ISGL CWD CM+2 ADN CTLL-I2GL CLEAR ERROR COUNTS CWD CM+2 RJM CLR CLEAR TRT RJM LRA LOAD REFERENCE ADDRESS ADD T5 CRD RD CMSTF LDIU CLEAR DEVICE IN USE * LDN 0 INHIBIT FURTHER PROCESSING OF DEVICE STD RE RJM LRA LOAD REFERENCE ADDRESS ADD T5 CWD RD RESTORE RECOVERY TABLE VALUES LJM CMTX IES SPACE 4 ** IES - INITIALIZE EQUIPMENT STATUS. * * ENTRY (T5) = EQUIPMENT. * (EC) = ERROR CODE FOR PRIMARY EQUIPMENT. * (EQ) = PRIMARY EST ORDINAL. * * EXIT ALL EQUIPMENT IN CHAIN RESTORED TO ORIGINAL CONFIGUR- * ATION AND SET AS UNAVAILABLE. * (A) .LT. 0 IF RECOVERY INFORMATION NOT TO * BE REWRITTEN TO CM RETURN TO *MRL*. * * USES T4, T5, T7, UC, CN - CN+4, FN - FN+4, FS - FS+4. * * CALLS CDI, CMT, SSL. * * MACROS SFA, SMSTF. IES SUBR ENTRY/EXIT SMSTF LPTU PROHIBIT TRT UPDATE BY *1RU* SFA EST,T5 READ EST ENTRY ADK EQDE CRD FN LDD FN+4 SHN 3 ADN DDLL READ DEVICE DESCRIPTION CRD CN LDD CN SET TOTAL UNIT COUNT LPN 7 STD UC LMD CN SET UNIT COUNT = ORIGINAL UNIT COUNT STD CN SHN -3 LPN 7 RAD CN LPN 7 CHECK UNIT COUNTS LMD UC ZJN IES1 IF NO CHANGE IN UNIT COUNT * RESTORE EQUIPMENT TO ORIGINAL STATUS. LDD FN+4 RESET ORIGINAL UNIT COUNT SHN 3 ADN DDLL CWD CN RJM SSL SET SECTOR LIMITS IES1 RJM CDI CLEAR ISD INTERLOCKS LDD FN+4 GET *DDLL* WORD FROM MST SHN 3 ADN DDLL CRD CN SBN DDLL-STLL CRD FS LDD FS+4 SAVE CHAINED EST ORDINAL SHN -3 STD T7 LDD CN SET ORIGINAL UNIT COUNT SHN -3 LPN 7 STD T4 IES2 RJM CMT CLEAR MST PARAMETERS LDD T7 NJN IES4 IF NOT END OF CHAIN LCN 0 DISABLE *MRL* REWRITE OF RECOVERY TABLE IES3 LJM IESX RETURN * CHECK NEXT EQUIPMENT IN CHAIN. IES4 STD T5 LDD UC SBD T4 SBN 1 MJN IES3 IF NO MORE UNITS IN CHAIN STD UC SFA EST,T5 READ NEXT EST ENTRY ADK EQDE CRD FN SMSTF LUNL SET LOCAL UNLOAD LDD T6 ZJN IES5 IF LAST EQUIPMENT NOT GLOBALLY UNLOADED SMSTF GUNL SET GLOBAL UNLOAD IES5 LJM IES1 CHECK NEXT EQUIPMENT SSL SPACE 4 ** SSL - SET SECTOR LIMITS. * * ENTRY (FN - FN+4) = EST ENTRY. * * EXIT SECTOR LIMITS SET IN MST WORD (MDGL). * * USES T2, T3, CN - CN+4, CM - CM+4. SSL2 LDD FN+4 STORE DRIVER WORD SHN 3 ADN MDGL CWD CN SSL SUBR ENTRY/EXIT LDD FN+4 READ DRIVER WORD FROM MST SHN 3 ADN MDGL CRD CN ADN DDLL-MDGL CRD CM LDD CM LPN 7 STD T2 LDD CN+1 SET SINGLE UNIT SECTOR LIMIT LPC 3777 STD T3 STD CN+4 * SET SECTOR LIMITS FOR MULTI UNIT DEVICE. SSL1 SOD T2 DECREMENT UNIT COUNT MJN SSL2 IF NO MORE UNITS LDD T3 RAD CN+4 UJN SSL1 SPACE 4,10 MBUF EQU * MST BUFFER OVLA EQU MBUF+5*MSTL+5 OVERLAY LOAD ADDRESS ORDC EQU OVLA LOAD ADDRESS FOR *4DC* ORDD EQU OVLA LOAD ADDRESS FOR *4DD* ORDF EQU OVLA LOAD ADDRESS FOR *4DF* SPACE 4,10 * THE FOLLOWING CODE IS OVERLAID AFTER READING THE DEVICE * LABELS. TITLE LABEL PROCESSING ROUTINES. CAM SPACE 4,15 ** CAM - CHANGE ACCESS MODE. * * ENTRY (A) = BIAS FOR ALGORITHM INDEX. * (AM) = 0 IF CHANGING TO HALF TRACK MODE. * = *AIHT* IF CHANGING TO FULL TRACK MODE. * (EQ) = EST ORDINAL. * (CM+2) = CHANNEL FOR ACCESS PATH CHANGE. * (CN - CN+4) = DILL WORD OF MST. * (FN - FN+4) = EST ENTRY. * * USES T0, T2, CM - CM+4. * * CALLS SSL. * * MACROS MONITOR. CAM SUBR ENTRY/EXIT RAD CN+4 ADJUST ALGORITHM INDEX LPN 77 STD T2 EXTRACT ALGORITHM INDEX LDD CM+2 ZJN CAM2 IF NO ACCESS CHANGE LDD AM ZJN CAM1 IF SWITCHING TO HALF TRACK MODE LDN EAPS&DAPS CAM1 LMN DAPS SET *SCSM* SUBFUNCTION STD CM+3 LDD EQ SET EST ORDINAL STD CM+1 MONITOR SCSM ENABLE / DISABLE HALF TRACK ACCESS CAM2 LDM TEQM-1,T2 STD CM+3 SET NEW MNEMONIC STD FN+3 LDN SMNS SET MNEMONIC SUBFUNCTION STD CM+2 LDD EQ CHANGE EQUIPMENT MNEMONIC STD CM+1 MONITOR SEQM LDD FN+4 READ MDGL WORD OF MST SHN 3 ADN MDGL CRD CM LDM TSLM-1,T2 SET SINGLE UNIT SECTOR LIMIT STD CM+1 LDD FN+4 UPDATE MST SHN 3 ADN MDGL CWD CM ADN DILL-MDGL CWD CN RJM SSL SET SECTOR LIMITS CAM5 LJM CAMX RETURN TEQM BSS 0 TABLE OF EQUIPMENT MNEMONICS CON 2RDI HALF TRACK SINGLE DENSITY CON 2RDJ HALF TRACK DOUBLE DENSITY CON 2RDM HALF TRACK DOUBLE DENSITY (885) CON 2RDK FULL TRACK SINGLE DENSITY CON 2RDL FULL TRACK DOUBLE DENSITY CON 2RDQ FULL TRACK DOUBLE DENSITY (885) TSLM BSS 0 TABLE OF SECTOR LIMITS CON SLDI+4000 HALF TRACK SINGLE DENSITY CON SLDJ+4000 HALF TRACK DOUBLE DENSITY CON SLDM+4000 HALF TRACK DOUBLE DENSITY (885) CON SLDK FULL TRACK SINGLE DENSITY CON SLDL FULL TRACK DOUBLE DENSITY CON SLDQ FULL TRACK DOUBLE DENSITY (885) CCS SPACE 4,10 ** CCS - CHECK CHANNEL STATUS. * * ENTRY (A) = REQUESTED STATUS. * (FN - FN+4) = EST ENTRY. * * EXIT (A) = (CM+2). * = 0 IF REQUESTED STATUS NOT PRESENT. * = CHANNEL DESCRIPTOR IF STATUS FOUND. * * USES T2. CCS2 LDI CM+3 SET CHANNEL DESCRIPTOR CCS3 STD CM+2 CCS SUBR ENTRY/EXIT STD T2 LDN FN+1 INITIALIZE FOR SCAN STD CM+3 CCS1 LDI CM+3 CHECK CHANNEL SHN 0-10 SCN 6 REMOVE STATE FIELD LMD T2 ZJN CCS2 IF REQUESTED STATUS PRESENT AOD CM+3 LMN FN+3 NJN CCS1 IF ANOTHER CHANNEL TO CHECK * LDN 0 UJN CCS3 RETURN CLE SPACE 4,10 ** CLE - CHECK LABEL ERROR. * * ENTRY (A) .LT. 0 IF MASS STORAGE ERROR. * = 1 IF ERROR IN *DIT*. * * EXIT (A) = ERROR CODE FOR MST. * .LT. 0 IF FULL TRACK RETRY IN ORDER. * * CALLS CME. CLE1 SBN 1 ZJN CLE2 IF ERROR IN *DIT* LCN 0 CLE2 LMN STCE RETURN *CONFIGURATION ERROR* CLE SUBR ENTRY/EXIT PJN CLE1 IF NOT MASS STORAGE ERROR RJM CME UJN CLEX RETURN CME SPACE 4,15 ** CME - CHECK MASS STORAGE ERROR. * * ENTRY (T3) = (RDCT). * (SN) = LABEL SECTOR NUMBER. * (FN - FN+4) = EST ENTRY. * * EXIT (A) = 0 IF RETRY IN ORDER. * = ERROR CODE FOR MST. * .LT. 0, IF PARITY ERROR ENCOUNTERED. * TO *CUD2* IF DRIVER DETECTED *DOWN* CONDITION. * TO *RDL1* IF NON-REMOVABLE DEVICE NOT READY. * * USES CM - CM+4. * * CALLS SDU. * * MACROS SMSTF. CME5 LDD FN CHECK EQUIPMENT STATUS CMEB EQU *-1 * UJN CME8 (*CMS* CALL) SHN 21-10 PJP RDL1 IF NON-REMOVABLE DEVICE LDD SN NJN CME7 IF NOT FIRST UNIT OF EQUIPMENT STD RE CME7 RJM SDU SET DEVICE UNLOADED CMEA EQU CME7 * UJN CME8 (*CMS* CALL) CME8 LDN STNR RETURN *NOT READY* CME SUBR ENTRY/EXIT LDD T3 ZJN CMEX IF FLAWED TRACK LPN 77 LMN NRDE ZJN CME5 IF NOT READY LMN LNRE&NRDE ZJP CUD2 IF DEVICE DOWN LMN PARE&LNRE NJN CME2 IF NOT A PARITY ERROR LCN PARE UJN CMEX EXIT WITH ERROR STATUS CME2 LDN STDE UJN CMEX RETURN *DEVICE ERROR* CUC SPACE 4,10 ** CUC - COMPARE UPDATE COUNTS. * * ENTRY (T5) = EST ORDINAL. * (T7) = SECTOR NUMBER OF LABEL READ. * (FN - FN+4) = *EQDE* WORD OF EST ENTRY. * (BFMS) = LABEL SECTOR. * (RUCA) = UPDATE COUNT FROM LAST TRT SECTOR. * * EXIT (A) = 0 IF COUNTS MATCH. * (RG) = 0 IF OPERATOR ENTERED *GO*. * * CALLS CLC, GAS, SOM, WOC. * COMPARE UPDATE COUNT FROM MST WITH THAT AT END OF TRT. CUC3 LDM N4SS+5*SDGL+2 COMPARE UPDATE COUNTS LMM RUCA+2 NJN CUC2 IF NO MATCH LDM N4SS+5*SDGL+3 LMM RUCA+3 NJN CUC2 IF NON-MATCHING COUNTS LDM N4SS+5*SDGL+4 LMM RUCA+4 SCN 77 NJN CUC2 IF NON-MATCHING COUNTS RJM CLC LMM CKSS NJN CUC2 IF INCORRECT LABEL CHECKSUM CUC SUBR ENTRY/EXIT LDD FN SHN 21-6 PJN CUC1 IF DEVICE AVAILABLE LDM LLSS SBN 2 PJN CUC3 IF NEW LABEL CUC1 LDN 0 UJN CUCX RETURN CUC2 LDD T7 NJN CUCX IF ALTERNATE LABEL LDC CUCA SET EST ORDINAL IN MESSAGE RJM SOM * LDC CUCA WAIT ON OPERATOR INPUT RJM WOC NJN CUCX IF OPERATOR ENTERED *PAUSE* STD RG RJM GAS GET ALTERNATE LABEL SECTOR STD T7 LJM RLS2 READ ALTERNATE LABEL CUCA DATA C*EQXXX, TABLES INCONSISTENT.* CUD SPACE 4,15 ** CUD - CHECK UNAVAILABLE DEVICE. * * ENTRY (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * (FS - FS+4) = *STLL* WORD OF MST. * * EXIT TO *RDLX* IF UNLOAD REQUESTED. * IF DEVICE OFF. * IF DEADSTART INITIALIZE. * * CALLS WMT. CUD4 LDD FS CHECK DEVICE STATUS LPN MLUNL ZJN CUDX IF NO UNLOAD REQUEST LDD FN SHN 21-3 MJN CUDX IF DEVICE ACTIVE SHN 4+21-6 MJN CUD3 IF DEVICE UNAVAILABLE CUD SUBR ENTRY/EXIT LDD FS SHN 21-LIAL+LIAL/12D*12D MJN CUD2 IF DEADSTART INITIALIZE LDD FN LPN 2 ZJN CUD4 IF DEVICE ON CUD2 LDN 0 STD RE INHIBIT FURTHER PROCESSING OF DEVICE CUD3 LDC 1S12 RJM WMT SET LABEL NOT READ INDICATOR LDN 0 LJM RDLX EXIT GAS SPACE 4,10 ** GAS - GET ALTERNATE LABEL SECTOR. * * ENTRY (FN - FN+4) = *EQDE* WORD OF EST ENTRY. * * EXIT (A) = ALTERNATE LABEL SECTOR. * * USES T1. GAS1 LDN 2 ADVANCE TABLE ADDRESS RAD T1 GAS2 LDI T1 ZJN GASX IF END OF TABLE LMD FN+3 NJN GAS1 IF NOT MATCHING DEVICE MNEMONIC LDM 1,T1 GAS SUBR ENTRY/EXIT LDC TALS STD T1 UJN GAS2 ENTER SEARCH LOOP TALS BSS 0 LIST G TBL "MSEQ" LIST * PURGMAC TBLM CON 0 END OF TABLE PUE SPACE 4,10 ** PUE - PROCESS UNSECURED SYSTEM SECURITY ERROR. * * ENTRY (T5) = EST ORDINAL. * * EXIT (A) = 0 IF OPERATOR ENTERED *GO*. * .NE. 0 IF OPERATOR ENTERED *PAUSE*. * * CALLS DFM, SOM, WOC. PUE SUBR ENTRY/EXIT LDC 2RE. STM PUEB LDN 0 STM PUEB+1 LDC PUEA SET EST ORDINAL IN MESSAGE RJM SOM LDC PUEA+ERLN ISSUE MESSAGE TO ERRLOG RJM DFM LDD T8 WAIT ON OPERATOR INPUT RJM WOC NJN PUE2 IF OPERATOR ENTERED *PAUSE* LCN 1R.-1R RAM PUEB LDC 2RRE STM PUEB+1 LDC PUEA+ERLN ISSUE MESSAGE TO ERRLOG RJM DFM * LDN 0 PUE2 UJP PUEX RETURN PUEA DATA 20HEQXXX, SECURED DEVIC PUEB DATA C*E RECOVERED.* RUC SPACE 4,15 ** RUC - RETRIEVE UPDATE COUNT FROM TRT. * * ENTRY (T5) = EST ORDINAL. * (T6) = LABEL TRACK. * (T7) = LABEL SECTOR. * (SN) = FIRST UNIT OF EQUIPMENT INDICATOR. * (FN - FN+4) = *EQDE* WORD OF EST ENTRY. * * EXIT (QS) = (T7) ON ENTRY IF TRT UPDATE COUNT READ. * * USES CM - CM+4. * * CALLS RLP. RUC SUBR ENTRY/EXIT LDD FN SHN 21-6 PJN RUCX IF DEVICE AVAILABLE LDD SN NJN RUCX IF NOT FIRST UNIT OF EQUIPMENT LDD FN+4 SHN 3 ADK TDGL FETCH TRT LENGTH FROM MST CRD CM LDD T7 SAVE LABEL SECTOR STD QS LDD CM+2 CALCULATE LAST SECTOR OF TRT SHN -6 ADN 1 ADVANCE OVER LABEL SECTOR RAD T7 RJM RLP READ END OF TRT SECTOR LDD MA CWM BFMS+2+5*77,ON SBN 1 SAVE MST/TRT UPDATE COUNTER CRM RUCA,ON LDD QS RESTORE LABEL SECTOR STD T7 UJP RUCX RETURN RUCA BSSZ 5 MST/TRT UPDATE COUNT SDU SPACE 4,10 ** SDU - SET DEVICE UNLOADED. * * ENTRY (T5) = EST ORDINAL. * (FN - FN+4) = *EQDE* WORD OF EST ENTRY. * * MACROS CMSTF, SMSTF. SDU SUBR ENTRY/EXIT LDD FN SHN 21-10 PJN SDUX IF NON-REMOVABLE DEVICE SMSTF LUNL SMSTF LDUL SET DEVICE UNLOADED LDD FN LPN 20 ZJN SDUX IF NOT INDEPENDENT SHARED DEVICE SMSTF LPTU CMSTF GPRS CLEAR PRESET STATUS * LDN 0 UJN SDUX RETURN SFT SPACE 4,15 ** SFT - SET FULL TRACK MODE. * * ENTRY (AM) = 0 IF UNAVAILABLE *LDAM* DEVICE. * (T4 - T7) = MASS STORAGE PARAMETERS. * (FN - FN+4) = EST ENTRY. * * EXIT TO *RDL3* IF MODE CHANGED TO FULL TRACK. * (AM) .NE. 0 TO DISABLE REENTRY TO SUBROUTINE. * * USES RE, CN - CN+4. * * CALLS CAM, CCS. SFT SUBR ENTRY/EXIT LDD AM ADD SN NJN SFTX IF CHANGE ALREADY MADE LDD FN+4 SHN 3 ADN DILL FETCH ALGORITHM INDEX WORD FROM MST CRD CN SFTA LDN 0 * LDN 10 (2X PP STATUS) * LDN 4 (4X PP STATUS) ZJN SFT1 IF 1X PP SPEED * CHECK CONTROLLER CONFIGURATION. LDN 10 LOOK FOR FULL TRACK ACCESS RJM CCS NJN SFT2 IF FULL TRACK PATH PRESENT SFT1 STD CM+2 LDN 40 FLAG INVALID FULL TRACK ACCESS SET RAD RE UJN SFT3 CHANGE ACCESS MODE SFT2 LDN 11 CHECK FOR HALF TRACK ACCESS RJM CCS SFT3 LDN AIHT DISABLE REENTRY TO *SFT* STD AM RJM CAM CHANGE ACCESS MODE LDN 0 STD T7 LJM RDL3 SEARCH FOR LABEL IN FULL TRACK MODE SHT SPACE 4,10 ** SHT - SET HALF TRACK MODE. * * ENTRY (FN - FN+4) = EST ENTRY. * * EXIT (AM) = 0 IF UNAVAILABLE *LDAM* DEVICE. * * USES CM - CM+4, CN - CN+4. * * CALLS CAM, CCS. SHT1 AOD AM SET FULL TRACK STATUS SHT SUBR ENTRY/EXIT LDD FN+4 GET MST PARAMETERS SHN 3 ADN MDGL CRD CM ADN DILL-MDGL CRD CN LDD CM+3 SET ACCESS MODE FLAG LMN LA6DI LPN 77 STD AM LDD FN ADD AVAILABLE STATUS LPC 100 LMD HN RAD AM NJN SHTX IF AVAILABLE OR NOT *6DI* DRIVER LDD CM+1 SHN 21-13 MJN SHTX IF DEVICE IN HALF TRACK MODE LDD CN+4 LPN 77 CHECK ALGORITHM INDEX SBN 2*AIHT+1 PJN SHT1 IF FULL TRACK ONLY DEVICE LDN 1 CHECK INACTIVE HALF TRACK PATH RJM CCS LCN AIHT CHANGE ACCESS MODE RJM CAM UJN SHTX RETURN SOM SPACE 4,10 ** SOM - SET EST ORDINAL IN MESSAGE. * * ENTRY (A) = MESSAGE ADDRESS. * (T5) = EST ORDINAL. * * EXIT (A) = (T8) = MESSAGE ADDRESS. * * CALLS C2D. SOM1 LDD T8 RETURN WITH (A) = MESSAGE ADDRESS SOM SUBR ENTRY/EXIT STD T8 LDI T8 CHECK MESSAGE FORMAT LMC 2REQ NJN SOM1 IF NOT *EQXXX* MESSAGE LDD T5 SHN -3 CONVERT UPPER TWO DIGITS RJM C2D STM 1,T8 STORE IN MESSAGE LDD T5 LPN 7 EXTRACT LOW ORDER DIGIT SHN 6 ADC 2R0, COMPLETE ORDINAL CONVERSION STM 2,T8 UJN SOM1 RETURN RDL SPACE 4,15 ** RDL - READ DEVICE LABEL. * * ENTRY (EQ) = (T5) = EST ORDINAL. * (RS) = RECOVERY STATUS. * (FN - FN+4) = EST ENTRY. * (AL) = CM ADDRESSES FOR MSTS OF EACH UNIT. * * EXIT LABEL READ AND MST PLACED IN CM. * * USES T6, T7, CA, RE, SL, UC, CM - CM+4, CN - CN+4, * FS - FS+4. * * CALLS CLE, CUD, PTA, RLM, RLS, SFT, SHT, SLT, SSL, WMT. RDL16 AOD RC ADVANCE REDEFINITION REQUESTED COUNT RDL17 LDN 0 INHIBIT FURTHER PROCESSING OF DEVICE STD RE RDL SUBR ENTRY/EXIT RDLA RJM SSL SET SECTOR LIMITS * UJN *+2 IF CM RECOVERY OR *CMS* CALL LDD RE SHN 21-4 MJN RDLX IF DEADSTART INITIALIZE SPECIFIED RJM PTA PRESET FWA OF TRT RDL1 LDD FN+4 SHN 3 ADN STLL CRD FS ADN DDLL-STLL CRD CN SBN DDLL-ACGL CRD CM LDD CM+4 CHECK REDEFINITION REQUESTED SHN 21-13 MJN RDL16 IF REDEFINITION REQUESTED LDD CN SET CURRENT UNIT COUNT LPN 7 STD UC LDD CN SHN -11 NJN RDL17 IF NO UNITS OR REDEFINITION IN PROGRESS STD T7 SET LABEL SECTOR LDD CN SHN -3 LPN 7 SBD UC PJN RDL2 IF CURRENT .LE. ORIGINAL UNIT COUNT RAD UC RDL2 LDD AL SET ADDRESS FOR LABEL MST STD CA RJM CUD CHECK UNAVAILABLE DEVICE RJM SHT SET HALF TRACK MODE * READ LABEL FOR UNITS ON THIS EQUIPMENT. RDL3 LDD FN+4 FETCH LABEL TRACK FROM MST SHN 3 ADN ALGL CRD CM ADN MDGL-ALGL CRD CN LDD CN+1 SET SINGLE UNIT SECTOR LIMIT LPC 3777 STD SL LDD CM+1 SET LABEL TRACK STD T6 ZJN RDL8 IF LABEL TRACK UNKNOWN ADN 1 STM SLTA RDL7 RJM RLS READ LABEL SECTOR ZJN RDL14 IF VALID LABEL RJM CLE CHECK LABEL ERROR MJN RDL9 IF POSSIBLE WRONG MODE NJN RDL14 IF ERROR STATUS FOR MST * ERROR IN LABEL READ - TRY ANOTHER TRACK. AOD T6 ADVANCE TO NEXT TRACK RDL8 RJM SLT NJN RDL7 IF NOT AT BAD TRACK LIMIT RDL9 RJM SFT LDD RE CHECK INCORRECT MODE CHANGE LPN 40 ZJN RDL10 IF MODE CHANGE LEGAL OR NONE RJM SHT RESTORE HALF TRACK ACCESS RDL10 LDN STLE SET LABEL ERROR STATUS * ENTER MST FROM LABEL INTO CM TABLE FOR FURTHER PROCESSING. RDL14 RJM WMT COPY MST TO CM TABLE LDD SN NJN RDL15 IF NOT FIRST UNIT OF EQUIPMENT RDLC RJM RLM GET LOCAL MST DATA * UJN RDL15 (LEVEL 3 D/S OR *CMS* W/O D/S SEQUENCING) RDL15 LDD SL ADVANCE TO LABEL ON NEXT UNIT ADD SN STD T7 SOD UC PJP RDL7 IF MORE UNITS TO CHECK LDN 0 LJM RDLX RETURN RLM SPACE 4 ** RLM - READ LOCAL MST BLOCK. * * ENTRY (T6) = LABEL TRACK. * (T7) = 0. * (FN - FN+4) = EST ENTRY. * (FS - FS+4) = MST STATUS WORD (STLL). * BFMS LOADED WITH LABEL MST. * * EREXIT TO */RMS/HNG* IF ERROR READING SECTOR OF LOCAL AREAS. * * USES P1, CN - CN+4. * * CALLS GAS, LRA, RLA, SES. RLM6 LDM BFMS ZJN RLM7 IF SECTOR NOT REFORMATTED LDN STDE&STLE RLM7 LMN STLE SET ERROR STATUS IN MST RJM SES AOD RE FLAG BAD LABEL RLM SUBR ENTRY/EXIT LDD RE SHN 21-6 PJN RLMX IF EQUIPMENT AVAILABLE SHN 6-0 MJN RLMX IF LABEL NOT READ LDM N4SS+5*ACGL+4 LPC MGLAP ZJN RLMX IF NO SECTOR OF LOCAL AREAS LDM N4SS+5*DULL+2 SAVE MACHINE INDEX STD P1 RJM RLA READ LOCAL AREA SECTOR PJN RLM3 IF NO ERROR ADN 1 NJN RLM1 IF SECTOR REFORMATTED LDD FN SHN 21-10 MJN RLM2 IF REMOVABLE DEVICE RLM1 LDC RLMC *LOCAL AREA SECTOR ERROR.* LJM /RMS/HNG DISPLAY MESSAGE AND HANG RLMA EQU *-1 * LJM RLM6 (*CMS* CALL) RLM2 LDN 0 RLM3 STD T2 SET ADDRESS OF *SLA* DAYFILE DATA LDN ZERL CRD CN CRD CM LDD T2 ZJN RLM4 IF NO ENTRY OR REMOVABLE DEVICE LDM 4,T3 EXTRACT ACTIVE USER COUNT STD FS+3 LDM 1,T3 MOVE SYSTEM TABLE TRACK STD CM+3 LDM 3,T3 MOVE FAMILY COUNT STD CM+4 LDD T3 SET ADDRESS OF ENTRY SBN CN-5 RLM4 ADN CN STM RLMB LDD FS+1 CLEAR ERROR STATUS SCN 77 STD FS+1 LDD P1 STD CM+2 RJM GAS SET ALTERNATE LABEL SECTOR STD CM RJM LRA LOAD REFERENCE ADDRESS ADD AL ADN DALL CWM *,ON RLMB EQU *-1 ADN DULL-DALL-1 CWD CM ADN STLL-DULL CWD FS LJM RLMX RETURN RLMC DATA C*LOCAL AREA SECTOR ERROR.* RLS SPACE 4 ** RLS - READ LABEL SECTOR. * * ENTRY (T6) = TRACK. * (T7) = SECTOR. * (FN - FN+4) = EST ENTRY. * (FS - FS+4) = *STLL* WORD OF MST. * * EXIT (A) = 0 IF VALID LABEL. * (A) .LT. 0 IF MS ERROR. * (A) .GT. 0 IF INCORRECT LABEL. * (A) = 1 IF ERROR IN *DIT*. * (T3) = ERROR CODE IF (A) .LT. 0. * (SN) = LABEL SECTOR NUMBER. * TO *CUD2* IF DEVICE INACCESSIBLE. * * USES EC, P1, P2, RG, T1, T2, T3, CM - CM+4, CN - CN+4. * * CALLS CDA, CDC, CMI, RDS, SDT, SDU, SOM, WDS. * * MACROS DELAY, ENDMS, MONITOR, SETMS. RLP2 LDD T7 CHECK SECTOR NUMBER LMK LSLT NJN RLP3 IF NOT PRIMARY LABEL SECTOR LDM N4SS+5*SDGL+4 LPN 77 SHN -1 EXTRACT SOFTWARE RESERVE STD P2 RLP3 LDM FNSS CHECK FILE NAME FIELD LMC 3777 RLP SUBR ENTRY/EXIT LDC BFMS RJM RDS READ LABEL SECTOR STD T3 PJN RLP2 IF NO MASS STORAGE ERROR RLP1 ENDMS LDC 1S17 SET ERROR FLAG LMD T3 * UJN RLSX EXIT RLS SUBR ENTRY/EXIT LDD T7 STD SN SAVE LABEL SECTOR NUMBER * READ SECTOR. RLS1 SETMS IO,(DF,ND,NR,RR) LDM MSD RETURN STATUS TO CALLER SHN 21-6 MJP CUD2 IF DEVICE INACCESSIBLE LDN 1 STD RG RLS2 RJM RUC RETRIEVE UPDATE COUNT RJM RLP READ LABEL ZJN RLP1 IF FLAWED TRACK * CHECK CONTENTS OF LABEL. LDM BFMS CHECK CONTROL BYTES LMC 3777 NJN RLS5 IF INCORRECT SYSTEM SECTOR LINKAGE LDM BFMS+1 LMN 77 ZJN RLS7 IF PROPER WORD COUNT RLS5 ENDMS LDN 2 INDICATE INCORRECT LABEL UJP RLSX RETURN RLS7 LDM FTSS CHECK LABEL TRACK LMD T6 NJN RLS5 IF INCORRECT TRACK LDD FN+3 LMC 2RDE ZJN RLS10 IF ECS LMN 1RP&1RE ZJN RLS10 IF DDP LDM E4SS LMD FN+3 NJN RLS5 IF NO MATCH ON DEVICE MNEMONIC LDD SN NJN RLS10 IF NOT FIRST UNIT OF EQUIPMENT RJM CUC NJN RLS5 IF MST AND TRT OUT OF SYNC LDD FN SHN 21-4 PJN RLS10 IF NOT INDEPENDENT SHARED DEVICE RLSA SHN 5+21-6 PJN RLS10 IF EQUIPMENT AVAILABLE SHN 6-3 PJN RLS11 IF NOT PREVIOUSLY RECOVERED SHN 4+21-10 MJN RLS11 IF REMOVABLE DEVICE RLS10 ENDMS * LDN 0 INDICATE VALID LABEL LJM RLSX RETURN * PROCESS *DIT* ON INDEPENDENT SHARED DEVICE. RLS11 BSS 0 QUAL ISD LDD RS CHECK RECOVERY STATUS LPN FLMK LMN FLCM STD P1 ZJN RLS12 IF FILES RECOVERED FROM CM RJM CDA NJN RLS10 IF RECOVERY INHIBITED RLS12 LDD RE LPN 40 NJN RLS10 IF INCORRECT ACCESS MODE LDK EPDE RAM UERR REREAD LABEL WITH *ENDMS* DISABLED RJM RLP LDD FN+4 FETCH MST PARAMETERS SHN 3 ADN ACGL CRD CM ADN DULL-ACGL CRD CN LDD CM+4 LPC MGPRS ZJN RLS14 IF *PRESET* OPTION NOT SET LMD CM+4 STD CM+4 LDD FN+4 INDICATE PRESET NOTED SHN 3 ADN ACGL CWD CM LDC 5*MISD CLEAR DIT STD T1 RLS13 LDN 0 STM DISS-1,T1 SOD T1 NJN RLS13 IF MORE WORDS TO CLEAR STM N4SS+5*STLL STD P2 CLEAR POSSIBLE SOFTWARE RESERVE RLS14 RJM SDT MJN RLS16 IF ANY DIT ENTRY INTERLOCKED RLSB ZJN RLS18 IF THIS MACHINE NOT IN DIT * NJN RLS17 (RECOVERY DEADSTART) LDN RLSF-RLSE RLS15 ADC RLSE LJM RLS22 DISPLAY ERROR MESSAGE RLS16 ENDMS RELEASE CHANNEL LDC DSCP*CPAS+MS2W RLSC EQU *-1 * LDC CP+MS2W (*CMS* CALL) CWM RLSG,TR DELAY LJM RLS1 LOOP RLS17 STD T1 SET DIT ORDINAL RLS18 LDD T1 ZJN RLS15 IF DIT FULL STD T3 SHN 2 SET INDEX OF DIT ENTRY RAD T3 RJM CMI NJN RLS16 IF MST INTERLOCKED / INITIALIZE PENDING * LDN 0 STD T7 ENSURE PRIMARY LABEL SECTOR LDD P1 NJP RLS20 IF FILES NOT RECOVERED FROM CM * CLEAR LOCAL DEVICE INTERLOCKS AND PF ACTIVITY. LDM DISS-5,T3 GET LOCAL PF ACTIVITY COUNT LPN 77 STD T0 LCN 77 LMM N4SS+TDGL*5+1 STM RLSH LPN 77 SBD T0 PJN RLS19.1 IF LOCAL PF ACTIVITY .LE. GLOBAL ACTIVITY RLS19 MONITOR HNGM HANG PP UJN RLS19 HANG PP RLS19.1 LDM DISS-5,T3 LPC 0 RLSH EQU *-1 (COMPLEMENT OF GLOBAL INTERLOCKS) SHN -6 NJN RLS19 IF LOCAL INTERLOCK SET WITHOUT GLOBAL LDM N4SS+TDGL*5+1 CLEAR LOCAL INTERLOCKS AND PF ACTIVITY SBM DISS-5,T3 STM N4SS+TDGL*5+1 LDN 0 STM N4SS+DULL*5+1 STD CN+1 STM DISS-5,T3 LDD P2 LMD T1 NJN RLS21 IF MST NOT INTERLOCKED BY THIS MACHINE LDN 10 RAD RE * SET MACHINE ACTIVE ON DEVICE. RLS20 LDD FS+2 SET MACHINE ID IN DIT ENTRY STM DISS-5+4,T3 AOM DISS-5+3,T3 SET DIT ENTRY INTERLOCK LDM N4SS+5*SDGL+4 SHN -1 SCN 37 LMD T1 SET SOFTWARE RESERVE SHN 1 STM N4SS+5*SDGL+4 SOD T1 SET MACHINE INDEX IN LOCAL AREA STM N4SS+5*DULL+2 STD CN+2 AOM SDIF ADVANCE INTERLOCK COUNT RLS21 LDD EC ADD RS ZJN RLS25 IF INITIAL RECOVERY LDD FN SHN 13-10 LMM N4SS+5*MDGL CHECK MATCHING REMOVABLE STATUS SHN 21-13 PJN RLS24 IF MODES MATCH LDC RLSI *REMOVABLE DEVICE CONFLICT* RLS22 STD T3 SAVE MESSAGE ADDRESS RJM SOM ENDMS LDD FN CHECK DEVICE TYPE SHN 21-10 MJN RLS23 IF REMOVABLE DEVICE LDD T3 RLSD LJM /RMS/HNG DISPLAY THE ERROR MESSAGE * UJN *+2 (*CMS* CALL) RLS23 LDD T3 ISSUE MESSAGE RJM DFM RJM SDU SET DEVICE UNLOADED LDN 1 LJM RLSX RETURN RLS24 LDN 2 SET DEVICE ACCESSED RAD RE RLS25 LDD FN+4 STORE DEVICE USAGE INFORMATION SHN 3 ADN DULL CWD CN RJM CDC COMPUTE LABEL CHECKSUM STM CKSS LDC BFMS+WLSF RJM WDS LDD QS RESTORE ACTUAL LABEL SECTOR STD T7 LJM RLS10 RETURN RLSE DATA C*NO SPACE IN DIT.* RLSF DATA C*EQXXX, ID NN NOW IN DIT.* RLSG DATA C*WAITING FOR INTERLOCK.* RLSI DATA C*REMOVABLE DEVICE CONFLICT.* CMI SPACE 4,10 ** CMI - CHECK MST INTERLOCKS. * * ENTRY (T1) = MACHINE INDEX. * (P2) = SOFTWARE RESERVE FROM *SDGL*. * (RG) = OPERATOR OVERRIDE STATUS. * (BFMS) = LABEL SECTOR. * * EXIT (A) = 0 IF NO INTERLOCKS PROHIBITING RECOVERY. * * USES T2. CMI SUBR ENTRY/EXIT LDD RG ZJN CMIX IF OPERATOR OVERRIDE LDD P2 NJN CMI1 IF DEVICE INTERLOCK SET LDM N4SS+5*STLL LPC MLIAL+MLIHD+MLIFD+MLIPF ZJN CMIX IF NO FULL / PF INITIALIZE PENDING LDM N4SS+5*DULL+2 LPN 17 ADN 1 CHECK OWNER OF INITIALIZE REQUEST CMI1 STD T2 LMD T1 ZJN CMIX IF DEVICE OPEN FOR RECOVERY LDD T2 SHN 2 CONVERT DIT INDEX TO BYTE INDEX RAD T2 LDM DISS-5+4,T2 SET MACHINE ID IN MESSAGE STM CMIA+11 LDC CMIA SET EST ORDINAL IN MESSAGE RJM SOM * LDC CMIA WAIT ON OPERATOR COMMAND RJM WOC UJP CMIX RETURN CMIA DATA C*EQXXX, BUSY ON ID NN.* SDT SPACE 4,15 ** SDT - SEARCH DEVICE INFORMATION TABLE. * * ENTRY (FS - FS+4) = *STLL* WORD OF MST. * (BFMS) = LABEL SECTOR. * * EXIT (A) = 0 IF THIS MACHINE NOT IDENTIFIED IN DIT. * = MACHINE INDEX FOR THIS DEVICE. * .LT. 0 IF ANY DIT ENTRY INTERLOCKED. * (EC) = COUNT OF MACHINES ACCESSING DEVICE. * (T1) = INDEX OF NEXT FREE DIT SLOT. * * USES T2, T3. SDT2 LDD T2 SET MACHINE INDEX STD T0 SDT3 LDD T2 SET INDEX OF EMPTY SLOT STD T1 SDT4 SOD T2 NJN SDT1 IF MORE DIT ENTRIES TO CHECK LDD T0 SDT SUBR ENTRY/EXIT LDN 0 STD EC STD T0 STD T1 LDC DISS+5*MISD+4 PRESET SEARCH ADDRESS STD T3 LDN MISD INITIALIZE DIT INDEX STD T2 SDT1 LCN 5 DECREMENT ADDRESS RAD T3 LDI T3 ZJN SDT3 IF EMPTY SLOT LMD FS+2 ZJN SDT2 IF SLOT ASSIGNED TO THIS MACHINE AOD EC LDM -1,T3 LPN 1 ZJN SDT4 IF ENTRY NOT INTERLOCKED LCN 1 UJN SDTX RETURN SPACE 4,10 QUAL * SLT SPACE 4,10 ** SLT - SEARCH FOR LABEL TRACK. * * ENTRY (A) = 0 IF STARTING SCAN FOR LABEL TRACK. * * EXIT (A) = 0 IF END OF LABEL TRACK SCAN. * (T6) = NEXT LABEL TRACK CANDIDATE. * * USES T1, T2, CM - CM+4. * * CALLS STA. SLT1 LDD T6 SET TRT WORD INDEX SLT2 SHN 21-1 LMD TH REMOVE TRACK BIT STD T1 SHN 1-21 SET BYTE INDEX STD T2 RJM STA SET FWA OF TRT ADD T1 CRD CM LDM CM,T2 CHECK TRACK LMC 3777 NJN SLTX IF NOT FLAWED AOD T6 ADVANCE TRACK SLT3 LMC LTKL SLTA EQU *-1 NJN SLT1 IF NOT AT LABEL TRACK LIMIT SLT SUBR ENTRY/EXIT NJN SLT3 IF NOT FIRST TRACK LDC LTKL SET LIMIT FOR VALID LABEL TRACK STM SLTA SBN LTKL-FLTK SET FIRST TRACK STD T6 UJN SLT2 VAL SPACE 4,20 ** VAL - VERIFY ACCESS LEVEL LIMITS. * * ENTRY (T5) = EST ORDINAL. * * EXIT (A) = 0 IF ACCESS LEVELS WITHIN LIMITS, OR OPERATOR * ENTERED *GO,CMS*. * (EC) = *STSV* WHEN ACCESS LEVELS NOT WITHIN LIMITS ON * *RMS* CALL PROCESSING REMOVABLE DEVICE, *CMS* * CALL PROCESSING SECURED SYSTEM, OR *CMS* CALL * PROCESSING UNSECURED SYSTEM IN WHICH OPERATOR * ENTERED *PAUSE*. * TO *HNG* ON *RMS* CALL PROCESSING NON-REMOVABLE * DEVICE WHEN ACCESS LEVELS NOT WITHIN LIMITS. * * USES CM, EC, CN - CN+4. * * CALLS PUE, SOM. * * MACROS SFA. VAL7 LDN 0 CLEAR ERROR RETURN STATUS VAL SUBR ENTRY/EXIT SFA EST,T5 GET ACCESS LEVELS FROM EST ADK EQAE CRD CN LDM N4SS+5*PFGL+4 GET ACCESS LEVELS CONTAINED IN MST SHN -6 STD CM LDD CN+3 COMPARE LOWER LEVELS LPN 70 STD CN LDD CM SCN 7 SBD CN MJN VAL2 IF LOWER LEVEL NOT WITHIN LIMITS LDD CM COMPARE UPPER LEVELS LPN 7 STD CM LDD CN+3 LPN 7 SBD CM VAL1 PJN VAL7 IF ACCESS LEVELS WITHIN LIMITS VAL2 LDD RE PROCESS *RMS* ERROR * UJN VAL5 (PROCESS *CMS* ERROR) SHN 21-10 PJN VAL6 IF NON-RECOVERABLE DEVICE VAL3 LDN STSV SET ERROR STATUS STD EC VAL4 UJN VALX RETURN VAL5 LDD FN PROCESS *CMS* ERROR SHN 21-6 PJN VAL1 IF DEVICE ALREADY AVAILABLE VALB RJM PUE PROCESS UNSECURED ERROR * UJN VAL3 (SECURED SYSTEM) NJN VAL3 IF OPERATOR ENTERED *PAUSE* UJN VAL4 RETURN VAL6 LDC VALA SET EST ORDINAL IN MESSAGE RJM SOM LJM /RMS/HNG HANG PP VALA DATA C*EQXXX, DEVICE ACCESS ERROR.* WMT SPACE 4,20 ** WMT - ENTER MST TO CM TABLE. * * ENTRY (A) = STATUS OF LABEL READ ATTEMPT. * (CA) = ADDRESS FOR MST. * (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * (FS - FS+4) = STLL WORD FROM MST. * (T7) = SECTOR READ. * (T6) = LABEL TRACK READ. * (SN) = LABEL SECTOR NUMBER. * * EXIT (CA) = ADDRESS FOR MST OF NEXT UNIT. * TO */RMS/HNG* IF LINK DEVICE SIZE ERROR. * * USES T1, CA, EC, CM - CM+4, FS - FS+4. * * CALLS GAS, LRA, SES, VAL. WMT SUBR ENTRY/EXIT STD EC SAVE STATUS ZJN WMT3 IF NO ERROR * ERROR ENCOUNTERED ON LABEL READ. WMTA LMN STNR * PSN (CMS CALL) NJN WMT1 IF NOT *NOT READY* STD EC CLEAR ERROR CODE (RMS ONLY) WMT1 LDC MSTL*5 STD T1 WMT2 LDN 0 CLEAR MST AREA STM N4SS-1,T1 SOD T1 NJN WMT2 AOD RE SET NO LABEL PRESENT LDD FN+4 SHN 3 ADN PFGL RETAIN PF DESCRIPTION CRM N4SS+5*PFGL,TW LDD EC SET ERROR STATUS IN MST IMAGE STM N4SS+5*STLL+1 NJN WMT2.1 IF ERROR STATUS PRESENT LDD FS+1 LPN 77 PRESERVE EXISTING ERROR STATUS STD EC WMT2.1 LJM WMT4 CONTINUE * LABEL READ SUCCESSFUL. WMT3 RJM VAL VERIFY ACCESS LEVELS NJN WMT1 IF LEVELS NOT WITHIN LIMITS LDD T6 SET LABEL TRACK STM N4SS+5*ALGL+1 LDD T7 SET SECTOR READ STM N4SS+5*DILL LDM N4SS+5*ACGL+4 CLEAR PF UTILITY INTERLOCK LPC MGLAP STM N4SS+5*ACGL+4 LDM N4SS+STLL*5+1 CLEAR ERROR STATUS SCN 77 STM N4SS+STLL*5+1 RJM GAS SET ALTERNATE LABEL SECTOR STM N4SS+5*DULL WMTC UJN WMT4 WRITE LABEL DATA TO CM * PSN (IF LINK DEVICE RECOVERY) * VERIFY TRT LENGTH FOR LINK DEVICE. LDD FN+4 GET TRT LENGTH DEFINED AT DEADSTART SHN 3 ADK TDGL CRD CM LDD CM+2 LMM N4SS+TDGL*5+2 TRT LENGTH RECOVERED FROM DEVICE ZJN WMT4 IF CORRECT TRT LENGTH LDC WMTD *LINK DEVICE SIZE ERROR.* LJM /RMS/HNG HANG PP * ENTER LABEL DATA INTO CM TABLE. WMT4 LDN MSTL SET MST LENGTH STD T1 RJM LRA LOAD REFERENCE ADDRESS ADD CA CWM N4SS,T1 LDN MSTL ADVANCE TABLE ADDRESS RAD CA * ENTER APPROPRIATE STATUS TO MST. LDD SN NJN WMT6 IF NOT FIRST UNIT OF EQUIPMENT LDD FN SHN 21-6 PJN WMT5 IF DEVICE AVAILABLE LDD FN+4 STORE PF DESCRIPTION SHN 3 ADN PFGL CWM N4SS+5*PFGL,TW ERRNZ PUGL-PFGL-1 ADJUST IF *PFGL* POSITION CHANGES WMTB UJN WMT5 CHECK PREVIOUS ERROR STATUS * PSN (RECOVERING MMF LINK DEVICE) SBN PFGL+2-ALGL STORE LINK DEVICE ALLOCATION WORD CWM N4SS+5*ALGL,ON LDM N4SS+5*ALGL+4 SET DAT TRACK STM ADEA WMT5 LDD FS+1 LPN 77 CHECK CURRENT ERROR STATUS SBN MNEC PJN WMT6 IF STATUS NOT TO BE CLEARED LDD EC RJM SES SET/CLEAR ERROR STATUS WMT6 LJM WMTX RETURN WMTD DATA C*LINK DEVICE SIZE ERROR.* WOC SPACE 4,10 ** WOC - WAIT ON OPERATOR COMMAND. * * ENTRY (A) = ADDRESS OF PROMPT MESSAGE. * * EXIT (A) = 0 IF OPERATOR ENTERED *GO*. * = 1 IF OPERATOR ENTERED *PAUSE*. * * USES T8, CM - CM+4. * * MACROS PAUSE. WOC SUBR ENTRY/EXIT STM WOCC WOCA LDC **+SNSW ADDRESS OF *SNSW* IN CP (*RMS* - SYSTEM CP) CRD CM GET SENSE SWITCH WORD STD T8 LDN 3 SET PAUSE FLAGS STD CM+3 LDD T8 STORE PAUSE FLAGS CWD CM ADN MS2W-SNSW STORE CONTROL POINT MESSAGE CWM *,TR WOCC EQU *-1 WOC1 LCN 0 PAUSE FOR OPERATOR ACTION SBN 1 NJN *-1 IF DELAY NOT COMPLETE PAUSE NE LDD T8 READ SENSE SWITCH WORD CRD CM LDD CM+3 CHECK FOR OPERATOR INPUT LPN 2 NJN WOC1 IF OPERATOR HAS NOT RESPONDED LMD CM+3 UJP WOCX RETURN ERRNG BFMS-* OVERFLOW INTO BUFFER TITLE PRESET. PRS SPACE 4,10 ** PRS - PRESET. PRS BSS 0 ENTRY LDD RS CHECK RECOVERY STATUS LPN FLMK LMN FLCM NJN PRS1 IF NOT LEVEL 3 RECOVERY ISTORE RDLC,(UJN RDL15) BYPASS *RLM* CALL PRS1 LDM DLYA CHECK PP SPEED LPN 14 RAM SFTA LDC MMFL READ MMF STATUS WORD CRD CM LDD CM SAVE MACHINE ID STM CDIA STM /ISD/RLSF+5 LDD CM+4 ZJP PRS4 IF STAND ALONE SYSTEM LDK STDI+T1 ACTIVATE *EMF* SUBROUTINE STM EMFA LDM LDMP READ LINK DEVICE ALLOCATION WORD SHN 3 ADN ALGL CRD CM LDD CM+4 SET DAT TRACK STM ADEA RJM CEI INITIALIZE *CEA* SUBROUTINE PRS4 LDD RS ZJN PRS5 IF NOT RECOVERY DEADSTART LCN 1RW-1RT RAM /ISD/RLSF+7 MODIFY ERROR MESSAGE ISTORE /ISD/RLSB,(NJN /ISD/RLS17) MODIFY DIT CHECK PRS5 LDD IR LMC 2RCM ZJN PRS6 IF *CMS* CALL ISTORE RLSA,(UJN RLS11) SET RECOVERY LEVEL CHECK LDN NCPL CRD CM AOD CM+1 GET SYSTEM CPA ADDRESS SHN 7 LJM PRS8 SET *SNSW* ADDRESS PRS6 LDC UJNI+2 DISABLE CALLS TO DEADSTART ROUTINES STM MRLB STM RDLA STM /ISD/RLSD ISTORE VAL2,(UJN VAL5) ISTORE CMEA,(UJN CME8) ISTORE CMEB,(UJN CME8) LDC RLM6 SET ERROR RETURN FROM *RLM* STM RLMA LDN PSNI STM WMTA LDD CP ADN MS2W STM /ISD/RLSC LDM /CMS/DPPB SHN -6 LMN UJNI/100 NJN PRS7 IF DEADSTART SEQUENCING ISTORE RDLC,(UJN RDL15) BYPASS *RLM* CALL PRS7 LDD CP GET CPA ADDRESS PRS8 ADN SNSW SET *SNSW* ADDRESS STM WOCA+1 LDN SSML DETERMINE IF SECURED SYSTEM CRD CM LDD CM LPN 77 ZJN PRS9 IF UNSECURED SYSTEM ISTORE VALB,(UJN VAL3) DISABLE CALL TO *PUE* PRS9 LJM RDBX EXIT EMF SPACE 4,10 ** EMF - ENABLE MMF RECOVERY. * * ENTRY (A) = ADDRESS OF INSTRUCTION LIST. * * EXIT (A) = 0. * * USES T1, T2. EMF1 STD T2 SET INSTRUCTION ADDRESS LDN PSNI REPLACE INSTRUCTION WITH *PSN* STI T2 AOD T1 ADVANCE LIST ADDRESS EMF2 LDI T1 NJN EMF1 LOOP TO END OF LIST EMF3 LDN 0 EMF SUBR ENTRY/EXIT EMFA UJN EMF3 EXIT (STAND-ALONE SYSTEM) * STD T1 SET LIST ADDRESS (MULTI-MAINFRAME SYSTEM) STM MMFP SET MMF PRESENT UJN EMF2 ENTER LOOP SPACE 4,10 CEI HERE SPACE 4,10 * LIST OF *CMS* INSTRUCTIONS MODIFIED FOR MMF SYSTEM. QUAL CMS LCMS BSS 0 LCMS HERE ERRZR LCMS-* TABLE EMPTY - REMOVE PRESET CODE CON 0 TERMINATE LIST * LIST OF *RMS* INSTRUCTIONS MODIFIED FOR MMF RECOVERY. QUAL RMS LRMS BSS 0 LRMS HERE ERRZR LRMS-* TABLE EMPTY - REMOVE PRESET CODE CON 0 TERMINATE LIST QUAL SPACE 4,10 OVERFLOW ORDB,EPFW CHECK FOR OVERFLOW TTL MSM/4DC - VALIDATE PF SYSTEM. TITLE IDENT 4DC,/RDC/RDCX *COMMENT MSM - VALIDATE PF SYSTEM. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4 *** *VPF* VALIDATES THAT THE PERMANENT FILE SYSTEM * CONTAINS NO DUPLICATE PACKNAMES, DEVICE NUMBERS OR USER * MASKS WITHIN A FAMILY. THE MST TABLES FOR ALL ACTIVE * DEVICES ARE VERIFIED TO BE UNIQUE. SPACE 4 *** DAYFILE MESSAGES. * * *EQXXX EQYYY CONFLICTING DN.* = TWO EST ORDINALS HAVE THE * SAME FAMILY NAME AND DEVICE NUMBER, AND ONE DEVICE IS A * SYSTEM DEVICE. ACTION - REMOVE ONE OF THE DEVICES. * * *EQXXX EQYYY CONFLICTING PN.* = TWO AUXILIARY DEVICES HAVE * THE SAME PACKNAME. ACTION - REMOVE ONE OF THE DEVICES. * * *EQXXX EQYYY CONFLICTING UM.* = TWO EST ORDINALS IN THE SAME * FAMILY HAVE ONE OR MORE DUPLICATED BITS IN THE *DM* MASK, AND * ONE DEVICE IS A SYSTEM DEVICE. ACTION - REMOVE ONE OF THE * DEVICES. SPACE 4 ** ENTRY CONDITIONS. * * (RS) = RECOVERY STATUS. TITLE MAIN ROUTINE. SPACE 4,10 QUAL RDC ORG ORDC RDC SUBR ENTRY/EXIT LDD IR LMC 2RRM ZJN RDC3 IF *RMS* CALL * VERIFY RUNNING SYSTEM. RDC1 RJM VPF VERIFY PF SYSTEM ZJN RDCX IF NO ERRORS LDD EF NJN RDC1 IF EITHER DEVICE SET UNAVAILABLE LDD P1 STD T5 LDD EC SET ERROR STATUS ON FIRST DEVICE RJM SES LDD P2 STD T5 LDD EC SET ERROR STATUS FOR SECOND DEVICE RJM SES RDC2 UJP RDCX RETURN * VERIFY DEADSTART SYSTEM. RDC3 LDD RS NJN RDC4 IF RECOVERY DEADSTART RJM SDF SET DEFAULT FAMILY NAME LDN 0 RJM GFO ENTER DEFAULT FAMILY IN FOT RDC4 LDD RC ZJN RDC6 IF NO EQUIPMENT RECOVERED RDC5 RJM VPF VERIFY PF SYSTEM FOR CONFLICTS ZJN RDC6 IF NO CONFLICTS MJN RDC5 IF ERROR ON NON-SYSTEM DEVICE LJM /RMS/HNG DISPLAY ERROR AND HANG * RESET DEFAULT FAMILY EQUIPMENT TO FAMILY MASTER EQUIPMENT. RDC6 RJM SDF SET DEFAULT FAMILY NAME RJM SFE SET FAMILY EQUIPMENT NJN RDC2 IF MASTER EQUIPMENT NOT FOUND LDD T2 STD CN+3 LDC PFNL SET FAMILY EST ORDINAL IN *PFNL* CWD CN UJN RDC2 RETURN TITLE PRIMARY SUBROUTINES. SDF SPACE 4,10 ** SDF - SET DEFAULT FAMILY NAME. * * EXIT (CN - CN+4) = *PFNL* WORD. * (FN - FN+4) = *PFGL* WORD FROM DEFAULT FAMILY MST. * * USES CN - CN+4, FN - FN+4. * * MACROS SFA. SDF SUBR ENTRY/EXIT LDC PFNL CRD CN SFA EST,CN+3 READ FAMILY EST ENTRY ADK EQDE CRD FN LDD FN+4 READ FAMILY NAME SHN 3 ADN PFGL CRD FN UJN SDFX RETURN VPF SPACE 4,10 ** VPF - VERIFY PF SYSTEM FOR CONFLICTS IN - * DEVICE NUMBERS. * DEVICE MASKS. * PACKNAMES. * * USES EF, EQ, T2, T5, T7, CM - CM+4, FN - FN+7, FS - FS+4. * * CALLS CFN, CFR, ERR, GNE, LRA. * * MACROS SFA. VPF SUBR ENTRY/EXIT LDN 0 CLEAR FAMILY COUNT STD EF LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH STD EQ VPF1 AOD EQ READ EST ENTRY STD T5 LMD LO ZJN VPFX IF END OF EST RJM LRA LOAD REFERENCE ADDRESS ADD EQ CRD RD SFA EST,EQ GET EST ENTRY ADK EQDE CRD FN LDD RE ZJN VPF1 IF DEVICE NOT BEING RECOVERED LPC 300 LMD HN ZJN VPF1 IF UNAVAILABLE DEVICE LDD FN+4 SHN 3 ADN PFGL READ FAMILY/PACK NAME CRD FN ADN STLL-PFGL GET DEVICE STATUS CRD T7 SBN STLL-PUGL READ DEVICE MASK CRD CM ADN MDGL-PUGL CHECK AUXILIARY STATUS CRD FS LDD T7 CHECK DEVICE STATUS LPC MLIAL+MLIHD+MLIFD+MLUNL NJN VPF1 IF UNLOAD/INITIALIZE PENDING LDD FS SHN -12 LPN 1 STD T2 VPF2 RJM GNE GET NEXT ENTRY ZJN VPF7 IF NOT FOUND RJM CFN COMPARE DEVICE NAMES NJN VPF2 IF NOT SAME FAMILY LDD T2 LMN 1 ZJN VPF3 IF AUXILIARY DEVICE LDD T7 LMN 1 ZJN VPF3 IF NEW DEVICE IS AN AUXILIARY DEVICE * CHECK DEVICE NUMBERS. LDD FS+3 LMD FN+3 ZJN VPF4 IF SAME DEVICE NUMBERS * CHECK USER MASKS. LDD CN+4 STM VPFA LDD CM+4 LPC * VPFA EQU *-1 LPC 377 ZJN VPF2 IF NOT DUPLICATE MASKS LDN STUM-STPN SET USER MASK ERROR VPF3 ADN STPN-STDN SET PACKNAME ERROR VPF4 ADN STDN SET DEVICE NUMBER ERROR LJM ERR VPF7 LDD T2 NJN VPF8 IF AUXILIARY DEVICE RJM CFR CHECK FAMILY DEVICE RECOVERED VPF8 LJM VPF1 LOOP FOR NEXT EQUIPMENT TITLE SUBROUTINES. CFN SPACE 4 ** CFN - COMPARE FAMILY/PACK NAMES. * * ENTRY (FN - FN+4) = FAMILY/PACK NAME1. * (FS - FS+4) = FAMILY/PACK NAME2. * * EXIT (A) = 0 IF NAMES EQUAL. CFN SUBR ENTRY/EXIT LDD FN LMD FS NJN CFNX IF NOT EQUAL LDD FN+1 LMD FS+1 NJN CFNX IF NOT EQUAL LDD FN+2 LMD FS+2 NJN CFNX IF NOT EQUAL LDD FN+3 LMD FS+3 SCN 77 UJN CFNX EXIT CFR SPACE 4,10 ** CFR - CHECK FAMILY DEVICE RECOVERED. * * ENTRY (EQ) = EST ORDINAL. * * ERROR TO *ERR* IF FOT FULL. * TO *RDCX* IF ERROR FLAG SET. CFR SUBR ENTRY/EXIT LDD RS NJN CFRX IF RECOVERY DEADSTART LDD RE SHN 21-7 PJN CFRX IF DEVICE NOT RECOVERED LDN 0 SEARCH FOR/CREATE FOT ENTRY RJM GFO SCN 1 ZJN CFRX IF ENTRY FOUND/CREATED LPC 400000 LMN STFF PJN ERR IF FOT FULL LJM RDCX EXIT ERR SPACE 4 ** ERR - PROCESS ERROR CONDITIONS. * * ENTRY (A) = ERROR STATUS. * (EQ) = EST ORDINAL OF FIRST DEVICE. * (T5) = EST ORDINAL OF SECOND DEVICE. * * USES FN - FN+4, P1, P2, T1, T5, EC, EQ. * * CALLS C2D, IES, LRA. * * MACROS SFA. ERR STD EC SAVE ERROR CODE LDD T5 SAVE EST ORDINAL OF SECOND DEVICE STD P2 LDD EQ SAVE EST ORDINAL OF FIRST DEVICE STD P1 STD T5 PROCESS FIRST EST ORDINAL RJM LRA LOAD REFERENCE ADDRESS ADD EQ CRD RD SFA EST,T5 ADK EQDE CRD FN LDD RE SHN -6 LPN 62 LMN 62 ZJN ERR3 IF RECOVERED SYSTEM DEVICE SCN 20 NJN ERR1 IF EQUIPMENT NOT RECOVERED AOD EF FLAG *IES* CALL RJM IES INITIALIZE EQUIPMENT STATUS ERR1 LDD P2 PROCESS SECOND EQUIPMENT STD EQ STD T5 RJM LRA LOAD REFERENCE ADDRESS ADD EQ CRD RD SFA EST,T5 READ EST ENTRY ADK EQDE CRD FN LDD RE SHN -6 LPN 62 LMN 62 ZJN ERR3 IF RECOVERED SYSTEM DEVICE SCN 20 NJN ERR2 IF EQUIPMENT NOT RECOVERED AOD EF FLAG *IES* CALL RJM IES INITIALIZE EQUIPMENT STATUS ERR2 LCN 0 SET NON SYSTEM DEVICE ERROR LJM VPFX * PROCESS ERROR ON SYSTEM DEVICE. ERR3 SFA EST,P1 ADK EQDE CRD FN LDD FN+3 SET DEVICE TYPE STM ERRA LDD P1 CONVERT UPPER TWO DIGITS OF FIRST DEVICE SHN -3 RJM C2D STM ERRA+1 LDD P1 CONVERT LOWER DIGIT OF FIRST DEVICE LPN 7 SHN 6 ADC 2R0 STM ERRA+2 SFA EST,P2 ADK EQDE CRD FN LDD FN+3 SET DEVICE TYPE STM ERRA+3 LDD P2 CONVERT UPPER TWO DIGITS OF SECOND DEVICE SHN -3 RJM C2D STM ERRA+4 LDD P2 CONVERT LOWER DIGIT OF SECOND DEVICE LPN 7 SHN 6 ADC 2R0 STM ERRA+5 LDD EC SET PROPER ERROR SBN STFF ZJN ERR4 IF FOT FULL ADN STFF-STDN STD T1 LDM ERRC,T1 STM ERRB LCN ERRD-ERRA ERR4 ADC ERRD LJM VPFX ERRA DATA H*EQXXX EQYYY CONFLICTING * ERRB DATA C*ET. * ERRC VFD 12/0LDN VFD 12/0LPN VFD 12/0LUM ERRD DATA C*FOT FULL.* GNE SPACE 4 ** GNE - GET NEXT ENTRY. * * ENTRY (T5) = ADDRESS OF LAST ENTRY CHECKED. * * EXIT (FS - FS+4) = PF DESCRIPTION WORD. * (CN+4) = DEVICE MASK. * (A) = 0 IF ENTRY NOT FOUND. * (T7) = 1, IF AUXILIARY DEVICE. * * USES T1, T5, T7, CM - CM+3, FS - FS+4. * * CALLS LRA. GNE SUBR ENTRY/EXIT GNE1 AOD T5 LMD LO ZJN GNEX IF END OF MASS STORAGE DEVICES RJM LRA LOAD REFERENCE ADDRESS ADD T5 CRD T7 SFA EST,T5 READ NEXT EST ENTRY ADK EQDE CRD FS READ NEXT ENTRY * LDD RE CHECK DEVICE CHARACTERISTICS LDD CM+2 SHN 21-13 PJN GNE1 IF NOT MASS STORAGE SHN 21-6-21+13 PJN GNE2 IF AVAILABLE SHN 21-7-21+6+22 PJN GNE1 IF DEVICE NOT BEING RECOVERED GNE2 LDD FS+4 READ MST STD T1 SAVE MST ADDRESS SHN 3 ADN MDGL CRD FS ADN STLL-MDGL GET DEVICE STATUS CRD T7 LDD T7 CHECK INITIALIZE REQUESTED LPC MLIAL+MLIHD+MLIFD NJN GNE1 IF FULL INITIALIZE PENDING LDD FS SHN -12 LPN 1 STD T7 LDD T1 GET FAMILY NAME SHN 3 ADN PFGL CRD FS ADN PUGL-PFGL READ DEVICE MASK CRD CN LJM GNEX RETURN SPACE 4,10 ** COMMON DECKS. *CALL COMPSFE GFO$ EQU 0 DEFINE FOT ACCESS ROUTINE *CALL COMPUFT SPACE 4,10 OVERFLOW ORDC,EPFW CHECK FOR OVERFLOW TTL MSM/4DD - DEVICE VERIFICATION ROUTINES. TITLE IDENT 4DD,/RDD/RDDX *COMMENT MSM - DEVICE VERIFICATION ROUTINES. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. *** *4DD* CONTAINS LABEL VERIFICATION ROUTINES. QUAL RDD ORG ORDD RDD SUBR ENTRY/EXIT LJM POV PROCESS OVERLAY PRESET TITLE MMF ROUTINES. ABD SPACE 4,15 ** ABD - ALLOCATE BAT FOR DEVICE. * * ENTRY (FN - FN+4) = EST ENTRY. * (BAEI+4) = NEXT AVAILABLE BAT TRACK. * * EXIT (A) = 0 IF BAT ALLOCATED, OR IF BAT NOT REQUIRED. * (A) = MESSAGE ADDRESS, IF NO BAT TRACK AVAILABLE. * * USES T6, T7, CM - CM+4, CN - CN+4. * * CALLS CEA, SNT. * * MACROS MONITOR. ABD1 LDC ABDA EXIT WITH (A) = MESSAGE ADDRESS ABD SUBR ENTRY/EXIT LDD FN LPN 40 ZJN ABDX IF NOT SHARED BUFFERED DEVICE LDM BAEI+4 NEXT AVAILABLE BAT TRACK ZJN ABD1 IF NO TRACK AVAILABLE STD T6 RJM SNT SET NEXT TRACK STM BAEI+4 * SET EXTENDED MEMORY ADDRESS OF BAT INTO DAT. LDN 0 STD T7 RJM CEA GET ADDRESS OF BAT TRACK LDD CM+3 SET EXTENDED MEMORY ADDRESS OF BAT STM DATB+5 LDD CM+4 STM DATB+6 * CLEAR BAT. LDN ZERL CRD CM LDD T6 SET TRACK TO CLEAR STD CM+4 LDN BATL/100 SET NUMBER OF SECTORS TO CLEAR STD CM+3 LDN CEMS CLEAR EXTENDED MEMORY TRACK STD CM+1 MONITOR MTEM UJP ABDX RETURN ABDA DATA C* END OF BAT TRACK CHAIN.* CDE SPACE 4,15 ** CDE - CHECK DAT ENTRY. * * ENTRY (DI) = DAT INDEX FROM MST. * (QS) = INDEX INTO DEVICE ACCESS TABLE. * (T2) = ADDRESS OF DATB+11. * (FN - FN+4) = EST ENTRY. * (DATB) = DAT ENTRY. * * EXIT (A) = 0 IF NO DAT CONFLICTS. * (A) = ADDRESS OF ERROR MESSAGE, IF DAT CONFLICT. * (T6) = 0, IF DAT ENTRY FOR NON-SHARED DEVICE. * (T6) = EXTENDED MEMORY TRACK, IF SHARED DEVICE ENTRY. * * USES T6. CDE2 LDI T2 CHECK MACHINE ACCESS BYTE SHN 21-13 MJN CDE3 IF RECOVERY IN PROGRESS LDD DI CHECK DAT INDEX LMD QS ZJN CDEX IF VALID INDEX LMD QS ZJN CDEX IF NO DAT INDEX IN MST CDE3 LDC CSDC+3 CDE SUBR ENTRY/EXIT LDM DATB+4 SET ECS POINTER FOR SHARED DEVICE STD T6 SHN 11-13 LMD FN MAP TRACK BIT WITH SHARE FLAG SHN 21-11 PJN CDE2 IF COMPARE LDD T6 ZJN CDE1 IF DAT ENTRY FOR NON-SHARED DEVICE LDN CSDC-CSDB CDE1 ADC CSDB SET ADDRESS OF ERROR MESSAGE UJN CDEX RETURN CSD SPACE 4,20 ** CSD - CHECK SHARED DEVICE STATUS. * * ENTRY (EQ) = DEVICE EST ORDINAL. * (RS) = RECOVERY STATUS. * (CN - CN+4) = PF DESCRIPTOR WORD (PFGL). * (FN - FN+4) = EST ENTRY. * * EXIT (A) = 0 IF NO DAT CONFLICT. * (A) = ADDRESS OF ERROR MESSAGE, IF DAT CONFLICT. * (T2) = 0 IF DEVICE NOT DESCRIBED IN DAT. * * USES QS, RE, T7, CM - CM+4. * * CALLS SDT, CDE, CEA. * * MACROS MONITOR. CSD6 LDD MA MOVE ENTRY TO DAT BUFFER CWD CN CRM DATB,ON LDD DI CHECK DAT INDEX ZJN CSD7 IF NO DAT ENTRY FOR DEVICE STD QS UJN CSD8 DAT SLOT ASSIGNED CSD7 LDD FN SHN 2-11 LPN 4 MAP SHARE FLAG AS ECS TRACK REQUIRED RAD RE CSD8 LDN 0 CLEAR MACHINE ACCESS BYTE CSD9 STM DATB+11 CSD SUBR ENTRY/EXIT RJM SDT SEARCH DEVICE ACCESS TABLE STD T2 ZJN CSD6 IF NO ENTRY FOR NAMED DEVICE RJM CDE CHECK DAT ENTRY NJN CSDX IF DAT CONFLICT/ERROR STD T7 LDD T6 NJN CSD1 IF SHARED DEVICE LDI T2 LPC -0 MMTE *-1 ZJN CSDX IF ACCESS BY THIS MACHINE ONLY LDC CSDB UJN CSDX RETURN CSD1 LDI T2 CHECK MACHINES ACCESSING DEVICE ZJN CSD9 IF NO MACHINE ACCESS LPC -0 MMTE *-1 ADD RS ZJN CSD9 IF ACCESS BY THIS MACHINE ONLY SBD RS LMI T2 ZJN CSD2 IF NOT ACCESSED BY THIS MACHINE LDN 10 CSD2 ADN 2 FLAG TRT RECOVERY FROM EXTENDED MEMORY RAD RE RJM CEA CONVERT EXTENDED MEMORY ADDRESS LDD AL SET CM TABLE ADDRESS ADK TDGL STD CM+2 LDC GLGL*100-100+40 SET WORD COUNT STD CM+1 LDC RECS*1000 SUBFUNCTION = READ ECS RAD CM+3 MONITOR ECSM ISSUE MONITOR REQUEST LDD RA READ DRIVER WORD FROM GLOBAL MST SHN 6 ADD AL ADN MDGL CRD CM LDD DI ZJN CSD3 IF DNAP BY THIS MACHINE LMD QS NJN CSD4 IF DAT CONFLICT CSD3 LDD FN SCN 77 SHN 14-10 LMD QS SHN -1 COMPARE REMOVABLE STATUS + DAT INDEX LMD CM LPC 4377 ZJN CSD5 IF NO CONFLICT CSD4 LDC CSDD CSD5 LJM CSDX RETURN CSDB DATA 4HNON- CSDC DATA C*SHARED DEVICE ACTIVE IN DAT.* CSDD DATA C*REMOVABLE DEVICE CONFLICT.* EBP SPACE 4,10 ** EBP - ENABLE BST/BAT PROCESSING FOR SHARED BUFFERED DEVICE. * * ENTRY (EQ) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * USES T5, T6, T7, CM - CM+4. * * MACROS MONITOR. EBP SUBR ENTRY/EXIT LDD FN SHN 21-11 PJN EBPX IF NOT SHARED DEVICE SHN 21-5-21+11 PJN EBPX IF NOT BUFFERED DEVICE * FLUSH WRITE BUFFERS / DROP ALL BUFFERS. EBP1 LDN ZERL CLEAR ASSEMBLY AREA CRD CM LDD EQ SET EST ORDINAL STD CM+3 LDC BMFW*100 FLUSH ALL WRITE BUFFERS STD CM+4 MONITOR BFMM LDN ZERL CLEAR ASSEMBLY AREA CRD CM LDD EQ SET EST ORDINAL STD CM+3 LDC BMDD*100 DROP ALL BUFFERS ON DEVICE STD CM+4 MONITOR BFMM LDD CM+4 ZJN EBP2 IF COMPLETE DELAY 20B DELAY TWO MILLISECONDS PAUSE UJP EBP1 REISSUE REQUEST * CLEAR ACCESS PERMISSIONS IN *BAT*. EBP2 LDN ZERL * UJN EBP3 (*CMS* CALL) EBPA EQU *-1 CRD CM EBPB LDN CBWS CLEAR READ/WRITE PERMISSIONS IN *BAT* * LDN CBRS (LVL3 - CLEAR READ PERMISSIONS IN *BAT*) STD CM+1 EBPC LDN ** SET MACHINE INDEX STD CM+2 LDD EQ STD CM+4 MONITOR MTEM * ENABLE BST/BAT PROCESSING. EBP3 LDD MA WRITE REQUEST CWM EBPD,ON LDD FN+4 SHN 3 STD CM+4 SET MST ADDRESS SHN -14 STD CM+3 LDN 1 SET WORD COUNT STD CM+1 MONITOR UTEM UJP EBPX RETURN EBPD VFD 6/BDLL,6/1,6/27,42/0 LDT SPACE 4,15 ** LDT - LOAD DEVICE ACCESS TABLE. * * ENTRY (EL) = EXTENDED MEMORY LABEL TRACK. * * EXIT (QI) = CURRENT DAT INDEX. * (QT) = LAST MST/TRT TRACK ASSIGNED. * DEVICE ACCESS TABLE LOADED TO CM. * * USES CA+1, CM - CM+4, CN - CN+4, T2 - T7. * * CALLS CEA. * * MACROS MONITOR. LDT1 LDD HN ADVANCE EXTENDED MEMORY ADDRESS RAD CN+4 SHN -14 RAD CN+3 LDD HN ADVANCE CM ADDRESS RAD CN+2 SHN -14 RAD CN+1 LDT2 LDD MA MOVE REQUEST CWD CN CRD CM MONITOR ECSM ISSUE REQUEST SOD T5 DECREMENT BLOCK COUNT PJN LDT1 IF NOT END OF DAT LDT SUBR ENTRY/EXIT * RETRIEVE BAT POINTER WORD *BAET*, IF REQUIRED. LDM ECLT SET LABEL TRACK STD T6 LDN ETLT SET ENVIRONMENT TABLE SECTOR STD T7 LDTA RJM CEA GET ADDRESS OF ENVIRONMENT TABLE SECTOR * UJN LDT0 (NO SHARED BUFFERED DEVICES CONFIGURED) LDN BAET ADJUST ADDRESS TO BAT POINTER RAD CM+4 SHN -14 LMC RECS*1000 SET SUBFUNCTION RAD CM+3 LDD MA SET CM ADDRESS STD CM+2 LDN 0 STD CM+1 MONITOR ECSM ISSUE REQUEST LDD MA READ *BAET* CRM BAEI,ON * RETRIEVE DAT POINTER WORD *DAET*. LDT0 RJM CEA GET ADDRESS OF ENVIRONMENT TABLE SECTOR LDN DAET ADJUST ADDRESS TO DAT POINTER RAD CM+4 SHN -14 LMC RECS*1000 SET SUBFUNCTION RAD CM+3 LDD MA SET CM ADDRESS STD CM+2 LDN 0 STD CM+1 MONITOR ECSM ISSUE REQUEST * LDN 0 STD T7 LDD MA READ *DAET* CRD CM LDD CM SET CURRENT DAT TRACK STD QT LDM LDMP GET DEVICE ALLOCATION WORD FROM MST SHN 3 ADN ALGL DAT TRACK TO (T6) CRD T6-4 LDD CM+4 SET DAT INDEX STD QI SHN -6 SET BLOCK COUNT STD T5 RJM CEA LDD CM+4 MOVE ADDRESS TO REQUEST IMAGE STD CN+4 LDD CM+3 LMC RECS*1000 STD CN+3 LDD CA+1 SET CM ADDRESS STD CN+2 ADD TH STD CA+1 ADVANCE ADDRESS FOR TRT RECOVERY LDC 77S6+40 SET WORD COUNT FOR TRANSFER STD CN+1 LJM LDT2 ENTER LOOP RDE SPACE 4,15 ** RDE - READ DAT ENTRY. * * ENTRY (EQ) = EST ORDINAL. * (FN - FN+4) = EST ENTRY FOR DEVICE. * * EXIT (QS) = DAT INDEX. * (T6) = DAT TRACK. * (DATB) = DAT ENTRY. * * USES QS, RE, TS, CM - CM+4. * * CALLS ADE. RDE SUBR ENTRY/EXIT LDD FN+4 READ DRIVER WORD SHN 3 ADN MDGL DAT INDEX TO (CM) CRD CM LDD CM SET DAT ORDINAL FROM INDEX LPC 377 SHN 1 STD QS LDN RECS SET READ SUBFUNCTION RJM ADE ACCESS *DAT* ENTRY LDD MA READ DAT ENTRY TO PP BUFFER CRM DATB,TW LDM DATB+4 SET MST/TRT TRACK IN TABLE STD TS SHN 1-13 ADD DAP STATUS IF SHARED DEVICE LPN 2 RAD RE LJM RDEX RETURN SDT SPACE 4,15 ** SDT - SEARCH DEVICE ACCESS TABLE. * * ENTRY (FN - FN+4) = EST ENTRY. * (CA+1) = CM ADDRESS (+1000) OF DAT. * (CN - CN+3) = DEVICE DESCRIPTION. * (QI) = CURRENT DAT INDEX. * * EXIT (A) = 0 IF ENTRY NOT FOUND. * (A) = ADDRESS OF DATB+11 IF ENTRY FOUND. * (QS) = INDEX INTO DEVICE ACCESS TABLE. * (DI) = DAT INDEX. * * USES T1, T2, DI, QS, CM - CM+4, CN+4. SDT1 LDM DATB+4 NJN SDT2 IF SHARED DEVICE SLOT LDD T2 SAVE INDEX OF HOLE STD QS SDT2 LDD DI ZJN SDT3 IF DNAP BY THIS MACHINE LMD T2 NJN SDT3 IF NOT AT DAT SLOT FOR DEVICE LDM DATB+4 SET MST POINTER STD CN+4 SDT3 LDN 2 ADVANCE INDEX RAD T2 LMD QI ZJN SDTX IF END OF DAT ENTRIES SDT4 LDD RA READ NEXT ENTRY SBN 10 SHN 6 ADD CA+1 ADD T2 CRM DATB,TW LDM DATB ZJN SDT1 IF POSSIBLE HOLE LDN CN STD T1 * COMPARE ENTRY FOR MATCHING FAMILY/PACK NAME + DEVICE NUMBER. SDT5 LDM DATB-CN,T1 LMI T1 NJN SDT2 IF NO MATCH AOD T1 LMN CN+4 NJN SDT5 IF NOT 4 BYTES LDD T2 SET INDEX TO MATCHING ENTRY STD QS LDC DATB+11 SDT SUBR ENTRY/EXIT LDD FN+4 READ MST FOR DAT INDEX SHN 3 ADN MDGL CRD CM LDD CM LPC 377 EXPAND DAT INDEX SHN 1 STD DI LDN 0 CLEAR SEARCH INDEX STD T2 STD CN+4 STD QS LJM SDT4 ENTER LOOP SNT SPACE 4,10 ** SNT - SET NEXT TRACK IN EXTENDED MEMORY TRACK CHAIN. * * ENTRY (A) = CURRENT TRACK. * (LDMP) = EXTENDED MEMORY MST POINTER. * * EXIT (A) = NEXT TRACK. * * USES T0, T1, CM - CM+4. SNT SUBR ENTRY/EXIT SHN 21-1 REMOVE TRACK BIT LMD TH STD T0 SET WORD INDEX SHN 1-21 STD T1 SET BYTE INDEX LDM LDMP GET FWA OF TRT SHN 3 ADN TRLL CRD CM LDD CM+3 READ TRT WORD LPN 77 SHN 14 LMD CM+4 ADD T0 CRD CM LDM CM,T1 EXTRACT NEXT TRACK UJN SNTX RETURN UDT SPACE 4,15 ** UDT - UPDATE DEVICE ACCESS TABLE. * * ENTRY (RS) = RECOVERY STATUS. * (EQ) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * DAT ENTRY IN (DATB). * * EXIT (A) = 0 IF MST/TRT TRACK AVAILABLE. * (A) = MESSAGE ADDRESS, IF ERROR. * * USES QI, QS, QT, TS, T6, T7, CM+3 - CM+7, CN - CN+4. * * CALLS ABD, CEA, EBP, SNT, WDE. UDT5 LDC UDTA EXIT WITH (A) = MESSAGE ADDRESS UDT SUBR ENTRY/EXIT LDD RS ZJN UDT1 IF LEVEL 0 DS/ON LINE RECOVERY LDM DATB+11 SET MACHINE ACCESS LPC -0 MMTE *-1 LMC 0 MMTE *-1 STM DATB+11 UDT1 LDD RE LPN 2 NJN UDT3 IF DEVICE ACCESSED PREVIOUSLY LDD QS NJN UDT2 IF EMPTY SLOT IN *DAT* LDD QI SET INDEX OF ENTRY STD QS ADN 2 ADVANCE INDEX STD QI UDT2 LDD RE CHECK MST/TRT TRACK REQUIRED LPN 4 ZJN UDT3 IF NOT REQUIRED LDD QT ASSIGN MST/TRT TRACK RJM SNT ADVANCE CURRENT TRACK ZJN UDT5 IF END OF TRACK CHAIN STM DATB+4 SET TRACK IN *DAT* ENTRY STD QT RJM ABD ALLOCATE BAT FOR DEVICE, IF REQUIRED NJP UDTX IF BAT TRACK NOT AVAILABLE UDT3 RJM WDE WRITE DAT ENTRY TO ECS LDC 4000 FLAG RECOVERY IN PROGRESS RAM DATB+11 LDD RA UPDATE CM COPY OF DAT SBN 10 SHN 6 ADD CA+1 ADD QS CWM DATB,TW * UPDATE MST. LDD FN+4 READ DRIVER WORD SHN 3 ADN MDGL CRD CN LDN ZERL CRD CM+3 LDM DATB+4 STD TS STD T6 LDD RE LPN 2 ZJN UDT4 IF DEVICE NOT ACCESSED PREVIOUSLY LDN 0 STD T7 RJM CEA CONVERT EXTENDED MEMORY ADDRESS UDT4 LDD CN SET *DAT* INDEX IN DRIVER WORD LPC 6000 SHN 1 LMD QS SHN -1 STD CN LDD FN+4 STORE MST INFORMATION SHN 3 ADN MDGL CWD CN SBN MDGL-SDGL CWD CM+3 ADN NVGL-SDGL READ *NVGL* CRD CN LDM DATB+5 SET BAT EM ADDRESS STD CN+1 LDM DATB+6 STD CN+2 LDD FN+4 REWRITE *NVGL* SHN 3 ADN NVGL CWD CN RJM EBP ENABLE BST/BAT PROCESSING IF REQUIRED LDN 0 LJM UDTX RETURN UDTA DATA C* END OF DAT TRACK CHAIN.* WDE SPACE 4,15 ** WDE - WRITE DAT ENTRY TO EXTENDED MEMORY. * * ENTRY (QS) = DAT INDEX. * DAT ENTRY IN (DATB). * * EXIT (A) = 0. * (T6) = DAT TRACK. * * USES T6, T7, CM - CM+4. * * CALLS ADE. WDE SUBR ENTRY/EXIT LDD MA MOVE DAT ENTRY TO MESSAGE BUFFER CWM DATB,TW LDN WECS SET WRITE SUBFUNCTION RJM ADE ACCESS *DAT* ENTRY UJN WDEX RETURN SPACE 4,10 ORDH EQU *+5 LOAD ADDRESS FOR *4DH* TITLE VERIFY LABEL PARAMETERS. CCE SPACE 4,15 ** CCE - CHECK CHAINED EQUIPMENT. * * ENTRY (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT (A) .LT. 0 IF FIRST EQUIPMENT IN CHAIN FOUND. * (EC) = *STCE* IF FIRST EQUIPMENT NOT FOUND. * * USES T3, T6, CM - CM+6, CN - CN+4. * * CALLS CEP, CLP, LRA. * * MACROS SFA. CCE1 RJM LRA LOAD REFERENCE ADDRESS ADD T6 CRD RD LDD RE CHECK EQUIPMENT STATUS SHN 21-10 PJN CCE2 IF NOT REMOVABLE DEVICE LDD T6 LMD EQ ZJN CCE2 IF INITIAL EQUIPMENT SFA EST,T6 READ EST ENTRY ADK EQDE CRD CM RJM CEP COMPARE EQUIPMENT PARAMETERS NJN CCE2 IF NO MATCH RJM LRA LOAD REFERENCE ADDRESS ADD AL ADN PFGL CRD CM+2 ADN PUGL-PFGL GET USER NAME CRD CN RJM CLP CHECK LABEL PARAMETERS ZJN CCE3 IF CORRECT UNIT FOUND CCE2 AOD T6 READ EST ENTRY LMD LO NJN CCE1 IF NOT END OF MASS STORAGE EST LDN STCE SET CONFIGURATION ERROR CCE3 STD EC SBN 1 CCE SUBR ENTRY/EXIT LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH STD T6 SET START OF EST SCAN LDD FN+3 STM CEFA UJN CCE2 ENTER LOOP CEP SPACE 4,10 ** CEP - COMPARE EQUIPMENT PARAMETERS. * * ENTRY (FN - FN+4) = EST ENTRY OF PRIMARY EQUIPMENT. * (CM - CM+4) = EST ENTRY OF DEVICE BEING CHECKED. * * EXIT (A) = 0 IF MATCHING EQUIPMENTS. CEP1 LDD CM+2 TEST FOR SECONDARY CHANNEL CEP2 LMD FN+2 LPC 4677 CHECK CHANNEL ACTIVE, MODE AND PORT CEP SUBR ENTRY/EXIT LDC ** CEFA EQU *-1 (DEVICE MNEMONIC) LMD CM+3 NJN CEPX IF NOT SAME TYPE LDD FN+1 LMD CM+1 TEST CHANNELS LPC 4677 ZJN CEP1 IF MATCH ON PRIMARY CHANNEL LDD FN+1 LMD CM+2 REORDER CHANNEL TEST LPC 4677 NJN CEPX IF NO CHANNEL MATCH LDD CM+1 UJN CEP2 TEST FOR SECONDARY CHANNEL CLP SPACE 4,15 ** CLP - CHECK LABEL PARAMETERS. * * ENTRY (UC) = N/M OF DESIRED UNIT. * (CM+2 - CM+6) = FAMILY/PACK NAME. * (CN - CN+4) = USER NAME. * (DLPB) = UNIT LABEL PARAMETERS. * * EXIT (A) = 0 IF VALID LABEL. * (A) = *STIL* IF REQUESTED UNIT NOT FOUND. * * USES T1. CLP SUBR ENTRY/EXIT LDN 0 STD T1 CLP1 LDM DLPB,T1 VERIFY FAMILY/PACK NAME LMM CM+2,T1 NJN CLP3 IF NO MATCH AOD T1 INCREMENT INDEX LMN 4 NJN CLP1 LOOP FOR FOUR BYTES LDD UC CHECK NUMBER OF UNITS LMD CM+6 LPN 77 NJN CLP3 IF INCORRECT UNIT COUNT CLP2 LDM DLPB+1,T1 VERIFY OWNER LMM CN-4,T1 NJN CLP3 IF NO MATCH AOD T1 ADVANCE INDEX LMN 7 NJN CLP2 LOOP FOR THREE BYTES LDM DLPB+10 CHECK SEVENTH CHARACTER LMD CN+3 SCN 77 ZJN CLPX IF VALID LABEL CLP3 LDN STIL SET ERROR STATUS UJN CLPX RETURN VDP SPACE 4,15 ** VDP - VERIFY DEVICE PARAMETERS. * * ENTRY (CA) = CM ADDRESS OF MST. * (FN - FN+4) = EST ENTRY. * * EXIT (A) = 0 IF MST PARAMETERS MATCH LABEL. * = *STLE* IF ERROR IN FAMILY NAME. * * USES CM+2 - CM+6, CN - CN+4. * * CALLS CLP, LRA, VFN. VDP2 LDN STLE SET LABEL ERROR STATUS VDP SUBR ENTRY/EXIT LDD FN+4 GET FAMILY NAME FROM MST SHN 3 ADN PFGL CRD CM+2 RJM VFN NJN VDP1 IF VALID NAME LDD CM+5 CHECK FOR NULL FAMILY SCN 77 ADD CM+4 ADD CM+3 ADD CM+2 NJN VDP2 IF NOT NULL FAMILY VDP1 RJM LRA LOAD REFERENCE ADDRESS ADD CA ADN PFGL CRD CM+2 ADN PUGL-PFGL READ USER NAME CRD CN RJM CLP CHECK LABEL PARAMETERS UJN VDPX RETURN VLP SPACE 4,15 ** VLP - VERIFY LABEL PARAMETERS. * * ENTRY (DLPB) LOADED WITH LABEL PARAMETERS. * (T5) = EST ORDINAL. * (EQ) = PRIMARY EST ORDINAL. * (FN - FN+4) = EST ENTRY. * (FS - FS+4) = STLL WORD OF EQUIPMENT. * * EXIT (A) = (EC) = 0 IF VALID LABEL. * .LT. 0 IF EQUIPMENT NOT FIRST IN CHAIN. * (EC) = *STIL* IF ANY UNIT HAS INCORRECT LABEL. * (EC) = *STCE* IF ANY UNIT CAUSES CONFIGURATION ERROR. * (EC) = *STNR* IF ANY UNIT NOT READY. * (EC) = *STLE* IF ANY UNIT HAS INCORRECT LABEL. * (FN - FN+4) = EST ENTRY OF PRIMARY EQUIPMENT. * (FS - FS+4) = STLL WORD OF PRIMARY EQUIPMENT. * (T5) = PRIMARY EST ORDINAL. * * USES T0 - T7, EC, UC, CA, CA+1, FN - FN+4, FS - FS+4. * * CALLS CCE, LRA, VDP. * * MACROS SFA, SMSTF. VLP12 RJM CCE CHECK CHAINED EQUIPMENT MJN VLPX IF FIRST EQUIPMENT FOUND VLP13 LDD EQ RESTORE PRIMARY EQUIPMENT PARAMETERS STD T5 RJM LRA LOAD REFERENCE ADDRESS ADD T5 CRD RD SFA EST,T5 ADK EQDE CRD FN LDD FN+4 RESTORE STATUS WORD SHN 3 ADN STLL CRD FS LDD EC EXIT WITH (A) = ERROR CODE VLP SUBR ENTRY/EXIT RJM LRA LOAD REFERENCE ADDRESS ADD EQ CWD RD REWRITE RECOVERY TABLE LDN 0 CLEAR CURRENT UNIT COUNT STD T7 STD EC LDM DLPB+4 SET TOTAL UNIT COUNT LPN 77 STD T3 LPN 7 STD T2 STD UC SET CURRENT UNIT POSITION LMD T3 ZJN VLP1 IF FIRST EQUIPMENT IN CHAIN LJM VLP12 CHECK CHAINED EQUIPMENT * SET PARAMETERS FOR THIS EQUIPMENT. VLP1 LDD AL SET ADDRESS OF CURRENT UNITS MST STD CA LDN 0 CLEAR CURRENT UNIT COUNT FOR THIS EQUIP. STD T6 LDD FN+4 SHN 3 ADN DDLL CRD CM LDD CM SET UNIT COUNT FOR THIS EQUIPMENT SHN -3 LPN 7 STD T3 VLP2 RJM LRA LOAD REFERENCE ADDRESS ADD CA ADN STLL READ STATUS WORD CRD CM * VERIFY ALL UNITS FOR THIS EQUIPMENT. LDD CM+1 LPN 77 ZJN VLP5 IF NO ERROR THIS UNIT STD EC SET ERROR CODE LDD T7 ZJN VLP4 IF FIRST UNIT OF EQUIPMENT LDN STCE *CONFIGURATION ERROR* VLP3 STD EC VLP4 LJM VLP13 VLP5 RJM VDP VERIFY DEVICE PARAMETERS NJN VLP3 IF LABEL CONFLICT * LABEL FOR THIS UNIT VALID - PROCEED TO NEXT UNIT. LDD EQ LMD T5 ZJN VLP6 IF FIRST EQUIPMENT IN CHAIN SMSTF LDIU SET DEVICE IN USE * LDN 0 INHIBIT FURTHER PROCESSING OF DEVICE STD RE RJM LRA LOAD REFERENCE ADDRESS ADD T5 CWD RD VLP6 LDD T7 LMD T2 ZJN VLP7 IF NO MORE UNITS AOD T7 SET N/M FOR NEXT UNIT SHN 3 ADD T2 STD UC LDD T6 LMD T3 ZJN VLP10 IF NO MORE UNITS THIS EQUIPMENT AOD T6 ADVANCE UNIT NUMBER LDN MSTL ADVANCE TABLE ADDRESS RAD CA LJM VLP2 * ALL UNITS CHECKED. VLP7 LDD FN SHN 0-10 LPN 1 LMN 1 ZJN VLP9 IF DEVICE REMOVABLE LDD FN+4 GET UNIT COUNT FROM MST SHN 3 ADN DDLL CRD CN LDD CN LPN 7 LMD T7 ZJN VLP9 IF CORRECT NUMBER OF UNITS VLP8 LDN STCE SET CONFIGURATION ERROR VLP9 STD EC LJM VLP13 * PROCEED TO NEXT EQUIPMENT IN CHAIN. VLP10 LDD FS+4 SHN -3 NJN VLP11 IF EQUIPMENT LINKED RJM CCE CHECK CHAINED EQUIPMENT PJN VLP8 IF NO EQUIPMENT TO CHAIN LDD T6 SET EQUIPMENT LINK SHN 3 RAD FS+4 * REREAD EST ENTRY, SINCE (FN+4) WAS DESTROYED BY *CCE*. SFA EST,T5 REREAD EST ENTRY ADK EQDE CRD FN LDD FN+4 UPDATE MST SHN 3 ADN STLL CWD FS LDD T6 SET NEXT EQUIPMENT VLP11 STD T5 RJM LRA LOAD REFERENCE ADDRESS ADD T5 CRD RD SFA EST,T5 READ EST ENTRY ADK EQDE CRD FN LDD FN+4 READ MST STATUS WORD SHN 3 ADN STLL CRD FS LJM VLP1 LOOP FOR NEXT EQUIPMENT IN CHAIN SPACE 4,10 ** COMMON DECKS. QUAL VFN FN EQU CM+2 *CALL COMPVFN QUAL * VFN EQU /VFN/VFN SPACE 4,10 ORDG EQU *+5 LOAD ADDRESS FOR *4DG* ORDJ EQU *+5 LOAD ADDRESS FOR *4DJ* TITLE *CMS* DEVICE VERIFICATION - COMMON ROUTINES. CUS SPACE 4,15 ** CUS - CHECK UNLOAD STATUS. * * ENTRY (A) = 0 IF CHECKING DEVICE ACTIVITY. * = MID IF PROCESSING UNLOAD. * * EXIT (A) .LT. 0 IF DEVICE INACCESSIBLE. * = (DATB) = 0 IF DEVICE INACTIVE. * .GT. 0 IF DEVICE ACTIVE. * * USES T3, T7. * * CALLS RIL. * * MACROS ENDMS. CUS SUBR ENTRY/EXIT STD T3 RJM RIL MJN CUSX IF DEVICE NOT ACCESSIBLE ENDMS * LDN 0 * STD T7 CUS1 LDN 5 ADVANCE DIT INDEX RAD T7 LMC 5*MISD+5 ZJN CUS2 IF END OF DIT LDM DISS-5+4,T7 ZJN CUS1 IF DIT SLOT EMPTY LMD T3 ZJN CUS1 IF ASSIGNED TO THIS MACHINE CUS2 STM DATB UJN CUSX RETURN RIL SPACE 4,15 ** RIL - READ INDEPENDENT SHARED DEVICE LABEL. * * ENTRY (A) .LT. 0, IF WAIT ON NOT READY DESIRED. * (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT (A) = READ STATUS. * (T7) = 0 IF LABEL READ. * (BFMS) = LABEL SECTOR. * * CALLS CLT, RDS. * * MACROS ENDMS, SETMS. RIL2 SETMS IO,(DE,DF,NR) RJM CLT NJN RIL3 IF LABEL TRACK KNOWN LDD CM+7 ZJN RIL1 IF NO PREVIOUS LABEL TRACK STD T6 RIL3 LDN 0 SET LABEL SECTOR STD T7 LDC BFMS READ LABEL SECTOR RJM RDS MJN RIL1 IF READ ERROR RIL SUBR ENTRY/EXIT PJN RIL2 IF RETURN ON NOT READY SETMS IO,(DE,DF) RJM CLT NJN RIL3 IF LABEL TRACK FOUND RIL1 ENDMS LCN 1 UJN RILX RETURN SPACE 4,10 ORDE EQU *+5 LOAD ADDRESS FOR *4DE* TITLE *CMS* ACTIVE/INACTIVE DEVICE ROUTINES. CAD SPACE 4,15 ** CAD - CHECK ACTIVE DEVICES. * * ENTRY (EQ) = (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT (CMSD) ADVANCED IF ERROR SET ON DEVICE. * (A) .LT. 0 IF RECOVERY INFORMATION NOT TO * BE REWRITTEN TO CM UPON RETURN TO *MRL*. * * USES IR+2, CM - CM+4, CN - CN+4, FS - FS+4. * * CALLS SES, UMS, VLP, *5ME*. * * MACROS EXECUTE, MONITOR. CAD8 AOM /CMS/CMSD ADVANCE DEVICE IN ERROR COUNT CAD SUBR ENTRY/EXIT SHN 21-6 MJN CADX IF DEVICE UNAVAILABLE RJM UMS UPDATE MST NJN CADX IF DEVICE INTERLOCKED LDD FN+4 READ MST WORDS SHN 3 ADN DULL CRD CM ADN STLL-DULL CRD FS SBN STLL-PFGL READ PF DESCRIPTION CRM DLPB,TW LDD FS+1 LPN 77 NJN CAD8 IF ERROR STATUS PRESENT CAD1 LDD CN+4 CHECK ERROR IDLE FLAG LPN MGDEI ZJN CAD2 IF NOT SET LDN STEI SET ERROR STATUS IN MST RJM SES CAD2 LDD FN SHN 21-10 PJN CAD3 IF NOT REMOVABLE DEVICE LDD CM+4 CHECK ACTIVITY LPC 3777 ADD FS+3 NJN CAD3 IF ACTIVE FILES LDD FS SHN 21-2 MJN CAD3 IF CHECKPOINT PENDING SHN 3+21-3 MJN CAD4 IF LOCAL UNLOAD SET CAD3 RJM VLP VERIFY LABEL PARAMETERS MJN CAD4 IF NOT FIRST EQUIPMENT IN CHAIN NJN CAD5 IF VERIFICATION ERRORS LDM SDIF NJN CAD6 IF INTERLOCKS ON ISD LDN SSTL CHECK SYSTEM STATUS CRD CM LDD CM LPN 14 CAD4 NJN CAD6 IF MS VALIDATION DISABLED / NOT PRESENT LDD EQ STD CM+1 LDN VEIS REQUEST MS VALIDATION STD CM+3 MONITOR VMSM LDD CM+1 ZJN CAD6 IF NO ERRORS STD IR+2 EXECUTE 5ME PROCESS ERRLOG MESSAGES LDN STVE SET ERROR STATUS IN MST CAD5 RJM SES * LDN 0 INHIBIT FURTHER PROCESSING OF DEVICE STD RE AOM /CMS/CMSD ADVANCE DEVICE IN ERROR COUNT CAD6 LJM CADX RETURN CID SPACE 4,15 ** CID - CHECK INACTIVE DEVICES. * * ENTRY (EQ) = (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT INACTIVE EQUIPMENTS WITH UNLOAD REQUESTED * RESTORED TO ORIGINAL AND UNAVAILABLE STATE. * TO *GDT2* IF RECOVERY INTERLOCK UNAVAILABLE. * (A) .LT. 0 IF RECOVERY INFORMATION NOT TO * BE REWRITTEN TO CM UPON RETURN TO *MRL*. * * USES CM - CM+4, FN - FN+4, FS - FS+4. * * CALLS CDB, CDD, CDS, CUS, IAM, IES, IFR, ILK, RDE, RGM, UIS, * WDE. * * MACROS MMTE, SFA, SMSTF. CID9 RJM UIS SET UNLOAD STATUS IN DIT ENTRY LDD FN LPC -100 LMD HN SET DEVICE UNAVAILABLE STD FN SFA EST,EQ ADK EQDE CWD FN SMSTF LDUL CID SUBR ENTRY/EXIT RJM CDS CHECK DEVICE STATUS NJN CIDX IF DEVICE ACTIVITY RJM ILK ENSURE PFM-S NOT ACTIVE ON DEVICE RJM CDS RECHECK DEVICE NJN CIDX IF NEW DEVICE ACTIVITY LDD FN SHN 21-10 PJN CID9 IF NON-REMOVABLE DEVICE RJM RGM READ GLOBAL MST WORDS NJN CIDX IF INTERLOCK SET LDD CN+4 CHECK GLOBAL UNLOAD LPN MGUNL NJN CIDX IF GLOBAL UNLOAD SET STM DATB RJM CBF CHECK FOR BUFFERS TO FLUSH NJN CIDX IF UNABLE TO FLUSH ALL BUFFERS UJMF CID5 LDN DATI GET DAT INTERLOCK RJM IFR ZJN CID2 IF FLAG REGISTER INTERLOCKED LJM /CMS/GDT1 RECALL *CMS* CID2 RJM RDE READ DAT ENTRY LDD QS ZJN CID4 IF NO DAT ENTRY LDM DATB+11 CLEAR ACCESS BY THIS MACHINE LPC -0 MMTE *-1 STM DATB+11 NJN CID3 IF ALL ACCESSES NOT CLEARED STM DATB CLEAR DAT ENTRY CID3 RJM WDE STORE DAT ENTRY CID4 LCN DATI DROP FLAG REGISTER INTERLOCK RJM IFR CID5 LDD FN LPN 20 ZJN CID6 IF NOT ISD STM DATB LDD FS+2 CHECK UNLOAD STATUS RJM CUS CID6 LDM DATB NJN CID7 IF DEVICE NOT UNLOADED IN ALL MACHINES LDN MGUNL SET GLOBAL UNLOAD RAD CN+4 LDD FN+4 STORE DEVICE ACTIVITY WORD SHN 3 ADN ACGL CWD CN CID7 RJM /CMS/IAM ISSUE ACCOUNTING MESSAGE RJM IES INITIALIZE EQUIPMENT STATUS SMSTF LDUL SET DEVICE UNLOADED LDM DATB NJN CID8 IF DEVICE NOT UNLOADED ON ALL MACHINES RJM CDD CLEAR DEVICE DESCRIPTION CID8 LCN 0 DISABLE *MRL* REWRITE OF RECOVERY TABLES LJM CIDX RETURN TITLE *CMS* ACTIVE/INACTIVE DEVICE SUBROUTINES. CBF SPACE 4,15 ** CBF - CHECK FOR BUFFERS TO FLUSH. * * ENTRY (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT (A) .NE. 0, IF UNFLUSHED BUFFERS ARE STILL PRESENT. * IF BUFFERED DEVICE, I/O BUFFERS FLUSHED AND RELEASED. * IF SHARED BUFFERED DEVICE, *BAT* AND *BST* PERMISSIONS * ARE RELEASED AND *BST* PROCESSING IS DISABLED. * * USES T6, CM - CM+4. * * MACROS DELAY, PAUSE, MONITOR. CBF SUBR ENTRY/EXIT LDD FN CHECK IF BUFFERED DEVICE LPN 40 ZJN CBFX IF NOT A BUFFERED DEVICE LDD TH SET MAXIMUM RETRY COUNT STD T6 * FLUSH AND RELEASE BUFFERS - RELEASE *BAT*/*BST* PERMISSIONS. CBF1 LDN ZERL CLEAR ASSEMBLY AREA CRD CM LDD FN SHN 21-11 MJN CBF2 IF SHARED BUFFERED DEVICE LDD T5 SET EST ORDINAL STD CM+3 LDC BMFW*100 FLUSH ALL WRITE BUFFERS STD CM+4 MONITOR BFMM LDN ZERL CLEAR ASSEMBLY AREA CRD CM LDD T5 SET EST ORDINAL STD CM+3 LDC BMDD*100 DROP ALL BUFFERS ON DEVICE STD CM+4 MONITOR BFMM UJN CBF3 CHECK STATUS CBF2 LDD T5 SET EST ORDINAL STD CM+4 LDN RBPS RELEASE *BAT*/*BST* ACCESS PERMISSIONS STD CM+1 MONITOR MTEM CBF3 LDD CM+4 CHECK STATUS ZJN CBF4 IF SUCCESSFUL DELAY 200B DELAY 16 MILLISECONDS PAUSE SOD T6 NJP CBF1 IF RETRY COUNT NOT EXHAUSTED LDN 1 RETURN ERROR RESPONSE LJM CBFX EXIT * DISABLE *BST* PROCESSING. CBF4 LDD FN SHN 21-11 PJN CBF5 IF NOT SHARED BUFFERED DEVICE LDD MA WRITE REQUEST CWM CBFB,ON LDD FN+4 SHN 3 STD CM+4 SET MST ADDRESS SHN -14 STD CM+3 LDN 1 SET WORD COUNT STD CM+1 MONITOR UTEM CBF5 LDN 0 RETURN SUCCESSFUL RESPONSE UJP CBFX RETURN CBFB VFD 6/BDLL,6/1,6/27,42/1 CDD SPACE 4,10 ** CDD - CLEAR DEVICE DESCRIPTION. * * ENTRY (EQ) = EST ORDINAL. * * EXIT DEVICE DESCRIPTION CLEARED. * EXTENDED MEMORY COPY OF MST/TRT CLEARED. * * USES CM - CM+7, CN - CN+4, FN - FN+4. * * MACROS MONITOR, SFA, UJMF. CDD SUBR ENTRY/EXIT SFA EST,EQ READ EST ENTRY ADK EQDE CRD FN LDN ZERL CRD CN LDD FN+4 SHN 3 ADN SDGL CRD CM+3 ADN PUGL-SDGL CLEAR USER DESCRIPTION CWD CN SBN PUGL-PFGL CLEAR DEVICE DESCRIPTION CWD CN UJMF CDDX SBN PFGL STD CM+2 SHN -14 LMC GLGL*100-100 SET WORD COUNT FOR ECS TRANSFER STD CM+1 LDD CM+3 ADD CM+4 ZJN CDDX IF NOT SHARED DEVICE CDDA LDN 1 MACHINE INDEX*2 + 1 RAD CM+7 LDD FN+4 STORE DEVICE INTERLOCK STATUS SHN 3 ADN SDGL CWD CM+3 LDC WECS*1000 UPDATE GLOBAL MST IN ECS RAD CM+3 MONITOR ECSM LDD EQ SET EST ORDINAL STD CM+1 LDN CDIS INSERT MONITOR SUBFUNCTION STD CM+3 MONITOR STBM CLEAR TRT IN ECS LJM CDDX RETURN CDS SPACE 4,10 ** CDS - CHECK DEVICE STATUS. * * ENTRY (FN - FN+4) = EST ENTRY. * * EXIT (A) = 0 IF NO ACTIVITY AND UNLOAD SET. * (FS - FS+4) = *STLL* WORD OF MST. * * USES CM - CM+4. CDS SUBR LDD FN+4 SHN 3 ADN DULL CRD CM ADN STLL-DULL CRD FS LDD FS LPN MLUNL+MLCKP+MLDUL LMN MLUNL NJN CDSX IF CHECKPOINT SET / NO LOCAL UNLOAD LDD CM+4 CHECK ACTIVITY LPC 3777 ADD FS+3 NJN CDSX IF ACTIVE FILES ON DEVICE LDK INWL PROHIBIT UNLOAD IF *MREC* ACTIVE CRD CM LDD CM+3 SHN -6 NJN CDSX IF *MREC* ACTIVE LDD FS+4 LPN MLUAI UJN CDSX RETURN ILK SPACE 4,10 ** ILK - INTERLOCK *PFM* FROM ACCESSING DEVICE DURING UNLOAD. * * ENTRY (EQ) = EQUIPMENT TO UNLOAD. * (FN - FN+4) = EST OF EQUIPMENT TO UNLOAD. * * EXIT TO *RCL* IF UNABLE TO INTERLOCK. * * USES T5, T7, CM - CM+4, FN - FN+4. * * CALLS CUT, SUT. * * MACROS SFA. ILK6 LDD EQ RESET DIRECT CELLS STD T5 SFA EST ADK EQDE CRD FN LDN 0 CLEAR EST ORDINAL OF PROCESSED ENTRY STM ILKA ILK SUBR ENTRY/EXIT LDD FN+4 READ PF DESCRIPTION SHN 3 ADN PFGL CRD FN ADN PUGL-PFGL CRD CM LDD CM+3 SET DEVICE MASK LPN 17 SHN 14 LMD CM+4 SHN -10 STM ILKB LDC ** SET EQUIPMENT FROM PREVIOUS CALL ILKA EQU *-1 NJN ILK1 IF PREVIOUS EQUIPMENT LDD LO SBN 1 ILK1 STD T5 AOD T5 * SEARCH FOR MASTER DEVICES TO INTERLOCK AGAINST *PFM*. ILK2 SOD T5 ZJN ILK6 IF END OF EQUIPMENTS SFA EST ADK EQDE CRD CM LDD CM CHECK DEVICE CHARACTERISTICS SHN 21-13 PJN ILK2 IF NOT MASS STORAGE SHN 13-6 MJN ILK2 IF DEVICE UNAVAILABLE LDD T5 SBD EQ ZJN ILK4 IF EQUIPMENT TO UNLOAD LDD CM+4 SHN 3 ADN PUGL CRD CM SBN PUGL-PFGL CRD T7 LDD CM+4 LPC ** ILKB EQU *-1 ZJN ILK2 IF NOT A MASTER FOR DEVICE TO UNLOAD LDD FN CHECK FOR PROPER FAMILY LMD T7 ILK3 NJN ILK2 IF NO MATCH ON FAMILY LDD FN+1 LMD T7+1 NJN ILK2 IF NO MATCH ON FAMILY LDD FN+2 LMD T7+2 NJN ILK2 IF NO MATCH ON FAMILY LDD FN+3 LMD T7+3 SCN 77 NJN ILK3 IF NO MATCH ON FAMILY ILK4 RJM SUT SET UTILITY INTERLOCK FOR DEVICE NJN ILK5 IF INTERLOCK NOT SET * INTERLOCK MAY BE IMMEDIATELY CLEARED SINCE IT IS ONLY * SET TO INSURE *PFM* HAS NOTICED THE UNLOAD REQUEST FOR THE * DEVICE. RJM CUT LJM ILK2 PROCESS NEXT EQUIPMENT ILK5 LDD T5 SAVE EQUIPMENT FOR NEXT INTERLOCK TRY STM /CMS/RCLA+2 LDN PIRR SET WAITING FOR PF INTERLOCK CONDITION LJM /CMS/RCL RECALL RGM SPACE 4,15 ** RGM - READ GLOBAL MST WORDS. * * ENTRY (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT (A) = DEVICE INTERLOCK STATUS. * (CN - CN+4) = ACGL WORD OF MST. * (CM - CM+4) = SDGL WORD OF MST. * * USES CM - CM+7, CN - CN+4. * * CALLS RIL. * * MACROS ENDMS, MONITOR, UJMF. RGM0 LDN 0 READ INDEPENDENT SHARED DEVICE LABEL RJM RIL MJN RGM1 IF DEVICE NOT READY ENDMS LDM N4SS+SDGL*5+4 CHECK FOR SOFTWARE RESERVE/INTERLOCK LPN 77 NJN RGMX IF SOFTWARE RESERVE OR INTERLOCK LDD MA CWM N4SS,TR LDD MA UJN RGM4 READ MST WORDS RGM1 LDD T6 ZJN RGM3 IF NO LABEL TRACK FOUND UJN RGMX RETURN RGM2 LDD FN SHN 21-4 MJN RGM0 IF ISHARED DEVICE RGM3 LDD FN+4 READ DEVICE ACTIVITY WORD SHN 3 RGM4 ADN ACGL CRD CN ADN SDGL-ACGL READ DEVICE INTERLOCK WORD CRD CM LDD CM+4 EXTRACT INTERLOCK STATUS LPN 1 RGM SUBR ENTRY/EXIT UJMF RGM2 NON MMF SYSTEM LDD FN+4 READ DEVICE INTERLOCK WORD SHN 3 ADN SDGL CRD CM+3 LDD CM+3 CHECK EXTENDED MEMORY POINTER ADD CM+4 ZJN RGM3 IF NOT SHARED DEVICE LDD MA SET CM ADDRESS FOR TRANSFER STD CM+2 LDC RECS*1000 SELECT READ SUBFUNCTION RAD CM+3 LDC SDGL*100 SET WORD COUNT STD CM+1 MONITOR ECSM GET MST WORDS FROM ECS LDD MA UJN RGM4 READ MST WORDS UIS SPACE 4,10 ** UIS - UPDATE INDEPENDENT SHARED DEVICE TABLES. * * ENTRY (T5) = EST ORDINAL. * (FN - FN+4) = *EQDE* WORD OF EST ENTRY. * * USES T1. * * CALLS CDC, RIL, SMI, WDS. * * MACROS ENDMS. UIS SUBR LDD FN SHN 21-4 PJN UISX IF NOT INDEPENDENT SHARED DEVICE RJM RIL READ LABEL MJN UISX IF LABEL NOT READ RJM SMI STD T1 SET DIT INDEX SHN 2 RAD T1 LDM DISS-5+3,T1 SCN 2 LMN 2 SET UNLOAD STATUS STM DISS-5+3,T1 RJM CDC COMPUTE LABEL CHECKSUM STM CKSS LDC BFMS+WLSF REWRITE LABEL RJM WDS ENDMS UJN UISX RETURN UMS SPACE 4,15 ** UMS - UPDATE MASS STORAGE TABLES. * * ENTRY (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT (A) = 0 IF UPDATE COMPLETE / UNNECESSARY. * * USES CM - CM+4. * * CALLS RGM. * * MACROS MONITOR, UJMF. UMS SUBR ENTRY/EXIT RJM RGM READ GLOBAL MST WORDS NJN UMSX IF DEVICE INTERLOCKED LDD FN LPC 1S9 ZJN UMSX IF NOT SHARED EQUIPMENT LDD T5 REQUEST MST/TRT UPDATE STD CM+1 LDN UTRS STD CM+3 MONITOR STBM ISSUE REQUEST * LDN 0 UJN UMSX RETURN SPACE 4,10 ** COMMON DECKS. *CALL COMPCUT *CALL COMPSUT SPACE 4,10 QUAL CMS CAD EQU /RDD/CAD CID EQU /RDD/CID QUAL * USE LITERALS ERRNG BFMS-* OVERLAY OVERFLOW INTO BUFFER POV SPACE 4,10 ** POV - MODIFY INSTRUCTIONS AS REQUIRED FOR CM/MMF RECOVERY. POV LDD IR+2 SET PREVIOUS EQUIPMENT OF INTERLOCK STM ILKA LDM MMFP ZJP POV5 IF DO NOT PRESET FOR MMF LDC MMFL CRD CM LDD CM+4 SET MACHINE INDEX RAM EBPC LPN 77 SHN 1 RAM CDDA LDD CM+1 SHN 21-11 MJN POV0 IF SHARED BUFFERED DEVICES ARE CONFIGURED ISTORE LDTA,(UJN LDT0) DISABLE *BAET* READ POV0 LDC L"QUAL" SET LIST ADDRESS STD T1 UJN POV2 MODIFY INSTRUCTIONS POV1 STD T0 LDN PSNI REPLACE INSTRUCTION WITH *PSN* STI T0 AOD T1 ADVANCE LIST ADDRESS POV2 LDI T1 NJN POV1 LOOP TO END OF TABLE LDC T"QUAL" SET LIST ADDRESS STD T1 UJN POV4 ENTER LOOP POV3 STD T0 LDD CM+3 ADD MACHINE MASK TO INSTRUCTION LMI T0 STI T0 AOD T1 POV4 LDI T1 NJN POV3 IF MORE INSTRUCTIONS POV5 LDD IR LMC 2RCM ZJN POV6 IF *CMS* CALL LDD RS CHECK RECOVERY STATUS LPN FLMK LMN FLCM NJN POV7 IF NOT LEVEL 3 RECOVERY ISTORE EBPB,(LDN CBRS) CLEAR ONLY READ PERMISSIONS IN *BAT* UJN POV7 POV6 ISTORE EBPA,(UJN EBP3) POV7 LJM RDDX RETURN * LIST OF INSTRUCTIONS TO BE PRESET. L"QUAL" BSS 0 L"QUAL" HERE ERRZR L"QUAL"-* TABLE EMPTY - REMOVE PRESET CODE CON 0 TERMINATE TABLE T"QUAL" BSS 0 T"QUAL" HERE ERRZR T"QUAL"-* TABLE EMPTY - REMOVE PRESET CODE CON 0 TERMINATE LIST QUAL CSD EQU /RDD/CSD CSDB EQU /RDD/CSDB CSDC EQU /RDD/CSDC CUS EQU /RDD/CUS EBP EQU /RDD/EBP LDT EQU /RDD/LDT RDE EQU /RDD/RDE UDT EQU /RDD/UDT VFN EQU /RDD/VFN VLP EQU /RDD/VLP WDE EQU /RDD/WDE ORDE EQU /RDD/ORDE ORDG EQU /RDD/ORDG ORDH EQU /RDD/ORDH ORDJ EQU /RDD/ORDJ SPACE 4,10 OVERFLOW ORDD,EPFW CHECK FOR OVERFLOW TTL MSM/4DE - *CMS* UNAVAILABLE DEVICE ROUTINES. TITLE IDENT 4DE,/RDE/RDEX *COMMENT MSM - *CMS* UNAVAILABLE DEVICE ROUTINES. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1994. *** *4DE* CONTAINS CODE FOR *CMS* UNAVAILABLE DEVICE PROCESSING. QUAL RDE ORG ORDE RDE SUBR ENTRY/EXIT UJN RDEX RETURN TITLE CHECK UNAVAILABLE DEVICE. CUD SPACE 4,15 ** CUD - CHECK UNAVAILABLE DEVICES. * * ENTRY (EQ) = (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT (RC) = NUMBER OF EQUIPMENTS TO RECOVER. * (RE) SET WITH EQUIPMENTS TO RECOVER. * (A) .LT. 0 IF RECOVERY INFORMATION NOT TO * BE REWRITTEN TO CM UPON RETURN TO *MRL*. * * USES FN, RC, CM+1 - CM+7, FS - FS+4. * * CALLS CDA, CDI, CGU, SES, VLP. * * MACROS MONITOR, SFA. CUD6 RJM CGU CHECK GLOBAL UNLOAD CUD SUBR ENTRY/EXIT RJM CDA MJN CUDX IF RECOVERY INHIBITED NJN CUD6 IF DEVICE UNLOADED LDD FN SHN 21-10 MJN CUD1 IF REMOVABLE DEVICE SHN 11+21-11 PJN CUD1 IF NON-SHARED DEVICE LDD FN+4 GET EXTENDED MEMORY ADDRESS OF MST/TRT SHN 3 ADN SDGL CRD CM+3 ADN ALGL-SDGL SET CM ADDRESS FOR MST UPDATE STD CM+2 SHN -14 LMC GLGL*100-ALGL*100 STD CM+1 LDD CM+3 ADD CM+4 ZJN CUD1 IF DEVICE NOT PREVIOUSLY RECOVERED LDD CM+7 ADD CM+6 ADD CM+5 NJN CUD4 IF DEVICE ACCESSED PREVIOUSLY CUD1 RJM VLP VERIFY LABEL PARAMETERS MJN CUD2 IF NOT FIRST EQUIPMENT IN CHAIN NJN CUD3 IF VERIFY ERRORS LDC 200 SET EQUIPMENT RECOVERY RAD RE AOD RC ADVANCE RECOVERY COUNT CUD2 LJM CUDX RETURN CUD3 RJM SES SET ERROR STATUS RJM CDI CLEAR ISD INTERLOCKS LCN 0 UJN CUD2 RETURN CUD4 LDD FN SHN 21-4 MJN CUD5 IF INDEPENDENT SHARED DEVICE LDN ALGL RAD CM+4 LDC RECS*1000 SET MONITOR SUBFUNCTION RAD CM+3 MONITOR ECSM UPDATE GLOBAL MST FROM ECS CUD5 LDN 0 CLEAR UNAVAILABLE STATUS SBD HN RAD FN SFA EST,EQ REWRITE EST ENTRY ADK EQDE CWD FN UJN CUD2 RETURN TITLE SUBROUTINES. CGU SPACE 4,10 ** CGU - CHECK GLOBAL UNLOAD. * * ENTRY (FN - FN+4) = EST ENTRY. * * EXIT (CN - CN+4) = *ACGL* WORD OF MST. * * USES CM - CM+7. * * CALLS CIU. * * MACROS MONITOR. CGU1 RJM CIU CHECK ISD GLOBALLY UNLOADED CGU SUBR ENTRY/EXIT LDD FN+4 SHN 3 ADN MDGL READ DRIVER WORD FOR DAT INDEX CRD CM SBN MDGL-SDGL GET EXTENDED MEMORY POINTER CRD CM+3 SBN SDGL-ACGL CRD CN LDD FN LPN 20 NJN CGU1 IF ISD LDD CM LPC 377 ZJN CGUX IF LINK TO DAT SLOT CLEARED LDD CM+3 ADD CM+4 ZJN CGUX IF NON-SHARED DEVICE LDN ACGL RAD CM+4 SHN -14 LMC RECS*1000 UPDATE ACTIVITY WORD FROM ECS RAD CM+3 LDN PFGL-ACGL SET WORD COUNT FOR ECS TRANSFER SHN 6 STD CM+1 LDD MA READ MST DATA TO MESSAGE BUFFER STD CM+2 MONITOR ECSM LDD MA CRD CM+3 LDD CM+3 SAVE DEVICE UP/DOWN STATUS STD CN LDD CM+7 SET GLOBAL UNLOAD STATUS LPN MGUNL STD CN+4 LDD MA ADN PFGL-ACGL CRD CM LDD FN+4 SHN 3 ADN ACGL STORE UNLOAD STATUS IN CMR CWD CN ADN PFGL-ACGL STORE DEVICE DESCRIPTION CWD CM LJM CGUX RETURN CIU SPACE 4,15 ** CIU - CHECK INDEPENDENT SHARED DEVICE UNLOADED. * * ENTRY (FN - FN+4) = EST ENTRY. * (CN - CN+4) = *ACGL* WORD OF MST. * * USES CM - CM+6. * * CALLS CUS, VFN. CIU SUBR ENTRY/EXIT LDD FN SHN 21-10 PJN CIUX IF NOT REMOVABLE LDD FN+1 SHN 0-11 CHECK CHANNEL STATUS LMN 4 ZJN CIU1 IF PRIMARY CHANNEL ALIVE AND WELL LDD FN+2 SHN 0-11 TEST SECONDARY CHANNEL LMN 4 NJN CIUX IF CHANNEL UNAVAILABLE *CIU1 LDN 0 CIU1 RJM CUS MJN CIU4 IF DEVICE INACCESSIBLE ZJN CIU2 IF NO ONE ACCESSING DEVICE LDN MGUNL CIU2 LMN MGUNL SET/CLEAR GLOBAL UNLOAD STD CN+4 NJN CIU4 IF SETTING UNLOAD CIU3 LDD MA CWM N4SS+5*PFGL,ON SBN 1 VERIFY FAMILY/PACK NAME CRD CM+2 RJM VFN NJN CIU5 IF VALID NAME IN LABEL CIU4 LDN ZERL CRD CM+2 CIU5 LDD FN+4 STORE/CLEAR DEVICE NAME SHN 3 ADN PFGL CWD CM+2 SBN PFGL-ACGL STORE GLOBAL UNLOAD STATUS CWD CN LJM CIUX RETURN SPACE 4,10 USE LITERALS SPACE 4,10 ERRNG BFMS-* OVERLAY OVERFLOW INTO BUFFER SPACE 4,10 QUAL CMS CUD EQU /RDE/CUD QUAL SPACE 4,10 OVERFLOW ORDE,EPFW CHECK FOR OVERFLOW TTL MSM/4DF - UPDATE MMF TABLES IN EXTENDED MEMORY. TITLE IDENT 4DF,EDTX *COMMENT MSM - UPDATE MMF TABLES IN EXTENDED MEMORY. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4 *** *4DF* UPDATES THE DAT POINTER WORD IN ECS * AND CONTAINS ROUTINES FOR PROCESSING OF MACHINE * RECOVERY TABLES (MRTS). SPACE 4 *** ENTRY CONDITIONS. * * DEVICE ACCESS TABLE IMAGE IN CM. * DATI INTERLOCK SET. TITLE UPDATE DAT POINTER WORD. EDT SPACE 4,10 ** EDT - EDIT DAT POINTER WORD. * * CALLS CEA. ORG ORDF EDT SUBR ENTRY/EXIT LDK MMFL CRD CM LDD RS CHECK RECOVERY LEVEL LPN FLMK LMN FLCM ZJN EDTX IF CM RECOVERY LDD CM+4 ZJN EDTX IF NOT MMF ENVIRONMENT LDM ECLT SET LABEL TRACK FOR ECS STD T6 LDN ETLT SET ENVIRONMENT TABLE SECTOR STD T7 * UPDATE *BAET* IN ENVIRONMENT TABLE SECTOR, IF REQUIRED. LDD CM+1 SHN 21-11 PJN EDT1 IF NO SHARED BUFFERED DEVICES CONFIGURED RJM CEA GET ADDRESS OF ENVIRONMENT TABLE SECTOR LDN BAET ADJUST ADDRESS TO BAT POINTER RAD CM+4 SHN -14 LMC WECS*1000 SUBFUNCTION = WRITE XM RAD CM+3 LDN 0 STD CM+1 SET WORD COUNT - 1 FOR TRANSFER LDD MA SET BUFFER ADDRESS IN MONITOR REQUEST STD CM+2 CWM BAEI,ON STORE *BAET* IMAGE IN CM BUFFER MONITOR ECSM * UPDATE *DAET* IN ENVIRONMENT TABLE SECTOR. EDT1 LDN ZERL CLEAR *DAET* ASSEMBLY CRD CN CRD CM * LDN 0 * STD CM+1 SET WORD COUNT - 1 FOR TRANSFER RJM CEA GET ADDRESS OF ENVIRONMENT TABLE SECTOR LDN DAET ADJUST ADDRESS TO DAT POINTER RAD CM+4 SHN -14 LMC WECS*1000 SUBFUNCTION = WRITE XM RAD CM+3 LDD QT SET CURRENT DAT TRACK STD CN LDD QI SET DAT INDEX STD CN+4 LDD MA STORE *DAET* IMAGE IN CM BUFFER CWD CN STD CM+2 SET BUFFER ADDRESS IN MONITOR REQUEST MONITOR ECSM LJM EDTX RETURN UER SPACE 4 ** UER - UPDATE EXTENDED MEMORY RESIDENT. * * ENTRY (EQ) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * EXIT (A) .LT. 0 IF RECOVERY INFORMATION NOT TO * BE REWRITTEN TO CM UPON RETURN TO *MRL*. * * CALLS ERT, SMT, SRT, CRT. UER1 SHN 21-3+22-21+1 PJN UER2 IF DNAP BY THIS MACHINE LDN STBM CLEAN UP TRACK INTERLOCKS RJM ERT LDD RS NJN UER2 IF RECOVERY SELECTED LDD FN SHN 21-10 MJN UER2 IF REMOVABLE DEVICE LDN DTKM CLEAN UP LOCAL FILE SPACE RJM ERT UER2 LDD EQ RESET EST ORDINAL STD T5 CMSTF LUNL FORCE EXTENDED MEMORY UPDATE OF LOCAL MST UER SUBR ENTRY/EXIT SHN 21-11 PJN UERX IF NOT SHARED DEVICE SHN 11-6 MJN UERX IF DEVICE UNAVAILABLE SHN 6-1 MJN UER1 IF DEVICE ACCESSED PREVIOUSLY (DAP) RJM SMT STORE MST/TRT IN ECS RJM CRT CLEAR MRTS IN ECS UJN UER2 UIS SPACE 4,10 ** UIS - UPDATE ISD MRT TABLES. * * ENTRY (A) = MS FLAG (RE) SHIFTED TO SIGN POSITION. * (EQ) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * (RS) = RECOVERY STATUS. * * EXIT (A) .LT. 0 IF RECOVERY INFORMATION NOT TO * BE REWRITTEN TO CM UPON RETURN TO *MRL*. * * CALLS ERT. UIS SUBR ENTRY/EXIT SHN 21-6 MJN UISX IF DEVICE NOT AVAILABLE LDD RS ZJN UISX IF LEVEL ZERO DEADSTART LDD FN SHN 21-4 PJN UISX IF NOT AN ISD DEVICE LDN STBM CLEAN UP TRACK INTERLOCKS RJM ERT UJN UISX RETURN CRT TITLE CLEAR MACHINE RECOVERY TABLES. ** CRT - CLEAR MRTS. * * CALLS STA, WDS. * * MACROS ENDMS, SETMS. CRT SUBR ENTRY/EXIT LDC MMFL READ MMF STATUS WORD CRD CM LDD CM+1 SET LINK DEVICE EST ORDINAL LPC 777 STD T5 SETMS IO,DF LDD FN+4 GET TRT LENGTH FROM MST SHN 3 ADK TDGL CRD CN LDD TS SET MST/TRT TRACK STD T6 LDN MRST-1 INITIALIZE MRT SECTOR STD T7 LDD CN+2 SET MRT LENGTH ADN 7 SHN -3 STD CN+1 SAVE MRT LENGTH STM BFMS+1 STD T1 SET BUFFER LENGTH SHN 2 RAD T1 CRT1 LDN 0 CLEAR BUFFER STM BFMS+1,T1 SOD T1 NJN CRT1 LDN MXMF SET LOOP COUNT STD CN * CLEAR MRT SECTORS FOR *MXMF* MAINFRAMES. CRT2 AOD T7 ADVANCE MRT SECTOR ADN 1 SET NEXT SECTOR IN LINKAGE STM BFMS LDC BFMS CLEAR MRT RJM WDS SOD CN NJN CRT2 IF MORE MRT-S TO CLEAR ENDMS RELEASE CHANNEL RJM STA SET FWA OF TRT ADD CN+2 SET FWA OF MRT CWM BFMS+2,CN+1 LJM CRTX RETURN ERT TITLE EDIT MACHINE RECOVERY TABLE. ** ERT - EDIT MRT. * * ENTRY (A) = *STBM* TO CLEAN UP TRACK INTERLOCKS. * = *DTKM* TO CLEAN UP LOCAL FILE SPACE. * (EQ) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT ALL LOCAL TRACK CHAINS DROPPED. * * USES T0 - T7, CM - CM+4. * * CALLS PTA, RDS, STA. * * MACROS MONITOR. ERT2 SHN 21-0 CHECK NEXT BIT STI T1 PJN ERT3 IF NO RESERVATION LDD T2 SET TRT WORD INDEX SHN 21-1 STD T0 SHN 1-21 FORM *SHN* WITH BYTE INDEX ADC SHNI+21-7 STM ERTA RJM STA SET FWA OF TRT ADD T0 CRD CM LDD CM+4 CHECK WRITE INTERLOCK ERTA SHN ** ERTB PJN ERT3 IF TRACK NOT INTERLOCKED * MJN ERT3 IF NOT LOCAL FILE LDD MA LOAD MONITOR REQUEST CRD CM LDD T2 SET TRACK IN REQUEST RAD CM+2 ERTC MONITOR STBM * MONITOR DTKM ERT3 AOD T2 ADVANCE TRACK NUMBER ERT4 LDI T1 NJN ERT2 IF NOT END OF RESERVATIONS IN MRT BYTE LDN 4*3 ALIGN TRACK NUMBER FOR NEXT MRT BYTE RAD T6 STD T2 SOD T1 MOVE TO NEXT BYTE IN MRT WORD LMD T5 NJN ERT4 IF NOT END OF DATA IN WORD LCN 4 ALIGN TRACK FOR NEXT MRT WORD RAD T6 STD T2 ERT5 LDN 3+5 ADVANCE TO NEXT MRT WORD RAD T1 SBN 3 SET END OF DATA CHECK STD T5 LMD T7 NJN ERT4 IF NOT END OF TRT EDIT ERT SUBR ENTRY/EXIT LMC LDNI SET MONITOR FUNCTION STM ERTC LPN 77 LMN STBM ZJN ERT1 IF CLEARING TRACK INTERLOCKS LDD HN MJNI - PJNI ERT1 ADC PJNI+ERT3-ERTB STM ERTB RJM PTA PRESET FWA OF TRT LDD FN+4 GET TRT LENGTH SHN 3 ADK TDGL CRD T3 LDC BFMS+1 STD T7 SBN 3 INITIALIZE MRT ADDRESS STD T1 LDD T3+2 SET END OF MRT STD T0 SAVE TRT LENGTH ADN 7 SHN -3 STD T5 SHN 2 ADD T5 ADN 5-3 RAD T7 RJM STA SET FWA OF TRT ADD T0 CRM BFMS+2,T5 READ MRT LDN ZERL CLEAR TRACK POINTERS CRD T6-4 LDD EQ SET UP BASIC MONITOR REQUEST STD CM+1 LDC 4000 STD CM+2 LDN CTIS STD CM+3 LDD MA STORE REQUEST IMAGE IN MESSAGE BUFFER CWD CM LJM ERT5 ENTER LOOP SMT TITLE STORE MST/TRT IN EXTENDED MEMORY. ** SMT - STORE MST + TRT IN EXTENDED MEMORY. * * ENTRY (EQ) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * USES P1, T1, CM+3 - CM+7, CN - CN+4, T5 - T7. * * CALLS CEA, PTA, STA, WDS. * * MACROS ENDMS, SETMS. SMT SUBR ENTRY/EXIT RJM PTA PRESET FWA OF TRT LDC 500-5*GLGL STD T7 SMT1 LDN 0 CLEAR BUFFER STM BFMS+1+5*GLGL,T7 SOD T7 NJN SMT1 STD P1 LDC MMFL READ MMF STATUS WORD CRD CN LDD CN+1 SET LINK DEVICE EST ORDINAL LPC 777 STD T5 SETMS IO,DF * SET UNLOAD STATUS IN EACH LOCAL MST BLOCK. SMT2 LDN MLUNL+MLDUL STM BFMS+2+5*STLL,P1 LDN 5*LLLL ADVANCE INDEX RAD P1 LMC MXMF*5*LLLL NJN SMT2 LOOP FOR *MXMF* MSTS LDD TS SET MST/TRT TRACK STD T6 LDD HN SET FULL SECTOR WORD COUNT STM BFMS+1 LDN ZERL CRD CM+3 RJM CEA LDN GLGL SET LENGTH OF GLOBAL MST STD T1 LDN 1 SET INITIAL TRT ACCESS COUNT STD CM+6 LDD FN+4 SHN 3 ADN SDGL CWD CM+3 SBN SDGL-TDGL CRD CN CRM BFMS+2,T1 LCN 100-1 INITIALIZE TRT INDEX STD CN+4 LDN 0 UJN SMT5 ENTER LOOP WITH (A) = 0 SMT3 SBD HN DECREMENT BLOCK COUNT PJN SMT4 IF ANOTHER FULL SECTOR ADD HN STM BFMS+1 SET SHORT SECTOR LDN 0 SMT4 STD CN+2 LDD HN ADVANCE TRT ADDRESS RAD CN+4 RJM STA SET FWA OF TRT ADD CN+4 CRM BFMS+2,HN AOD T7 ADVANCE SECTOR SMT5 ADN 1 STM BFMS LDC BFMS WRITE NEXT SECTOR RJM WDS LDD CN+2 NJN SMT3 LOOP TO END OF TRT ENDMS LJM SMTX EXIT SPACE 4,10 ERRNG BFMS-* OVERFLOW INTO BUFFER SPACE 4,10 OVERFLOW ORDF,EPFW CHECK FOR OVERFLOW TTL MSM/4DG - DEVICE RECOVERY ROUTINES. TITLE IDENT 4DG,/RDG/RDGX *COMMENT MSM - DEVICE RECOVERY ROUTINES. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4 *** *4DG* CONTAINS ADDITIONAL DEVICE RECOVERY ROUTINES. SPACE 4 QUAL RDG ORG ORDG RDG SUBR ENTRY/EXIT RJM PRS PRESET OVERLAY UJN RDGX RETURN TITLE COPY MST/TRT TO DISK. CTD SPACE 4,15 ** CTD - COPY TABLES TO DISK. * * ENTRY (FN - FN+4) = EST ENTRY. * * EXIT (A) .GE. 0. * * USES P1, T3, T6, T7, CM - CM+4, CN - CN+4. * * CALLS CLC, PTA, RDS, STA, WDS. * * MACROS CMSTF, ENDMS, MONITOR, SETMS. CTD5 LDD RE CHECK ACCESS STATUS LPC 1002 LMC 1002 CTD6 NJN CTDX IF NOT SHARED DEVICE ACCESSED PREVIOUSLY LDD T5 STD CM+1 LDN UITS GET CURRENT COPY OF TRT / UPDATE MRT STD CM+3 MONITOR STBM CTD SUBR ENTRY/EXIT RJM PTA PRESET FWA OF TRT CMSTF LPTU ENABLE TRT UPDATE BY *1RU* * LDN 0 STD T7 LDD FN SHN 21-4 PJN CTD5 IF NOT INDEPENDENT SHARED DEVICE LDD FN+4 SHN 3 ADN ALGL FETCH ALLOCATION WORD FROM MST CRD CM LDD CM+1 SET LABEL TRACK STD T6 SETMS IO,(DE,DF) LDC BFMS REREAD LABEL SECTOR RJM RDS LDD RE SHN 21-1 MJN CTD1 IF ACCESSED PREVIOUSLY BY OTHER MF LDM N4SS+5*SDGL+4 LPN 77 SAVE DIT INDEX STD P1 LDN MSTL SET CHECKPOINTED MST LENGTH STD T3 LDD FN+4 SET MST ADDRESS SHN 3 ADK TDGL GET TRT LENGTH CRD CN SBK TDGL UPDATE MST IN LABEL SECTOR CRM N4SS,T3 LDD P1 SET SOFTWARE RESERVE IN LABEL LMD HN STM N4SS+5*SDGL+4 LDD CN+2 SET MRT LENGTH ADN 7 SHN -3 CALCULATE DIT OFFSET RAD CN+2 UJN CTD2 GENERATE CHECKSUM CTD1 LDN 0 CLEAR MACHINE ID TO FORCE TRT UPDATE IN CM STM N4SS+5*STLL+2 LDM N4SS+5*SDGL+4 CLEAR MST INTERLOCK SCN 77 STM N4SS+5*SDGL+4 CTD2 RJM CLC COMPUTE LABEL CHECKSUM STM CKSS LDC BFMS+WLSF RJM WDS ENDMS RELEASE HARDWARE RESERVE LDD RE LPN 2 NJN CTD3 IF DEVICE ACCESSED PREVIOUSLY AOM N4SS+5*SDGL+4 LDD FN+4 SET MST ADDRESS SHN 3 ADN SDGL STORE DEVICE INTERLOCK IN CM CWM N4SS+5*SDGL,ON RJM STA STORE DIT IN CM ADD CN+2 ERRNZ MISD-MSTL CODE DEPENDS ON VALUE CWM DISS,T3 LDD T5 STD CM+1 SET EST ORDINAL LDN CDIS STD CM+3 UPDATE TABLES ON DISK MONITOR STBM * LDN 0 SET IMMEDIATE RETURN CTD3 LMN 2 LJM CTD6 RETURN RMR SPACE 4,15 ** RMR - READ MRT. * * ENTRY (T5) = (EQ) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * USES T5 - T7, CM - CM+4, CN - CN+4. * * CALLS PTA, RDS, STA. * * MACROS ENDMS, SETMS. RMR SUBR ENTRY/EXIT LDD FN SHN 21-11 PJN RMRX IF DEVICE NOT SHARED SHN 21-4-21+11 PJN RMR1 IF NOT ISD LDD RS LPN FLMK LMN FLTB NJN RMRX IF FILES NOT RECOVERED FROM MS TABLES LDD RA SHN 6 ADD AL FETCH LABEL SECTOR ADN DILL CRD T7 LDD FN+4 GET LABEL TRACK SHN 3 ADN ALGL CRD CM ADN DULL-ALGL GET MACHINE INDEX CRD CN LDD CM+1 SET LABEL TRACK STD T6 LDD CN+2 SET MRT SECTOR LPN 17 ADN MRTL RAD T7 UJN RMR2 READ MRT RMR1 LDK MMFL GET LINK DEVICE EST ORDINAL CRD CN LDD CN+1 LPC 777 STD T5 LDD TS SET MST/TRT TRACK FOR DEVICE STD T6 LDD CN+4 SET MRT SECTOR FOR THIS MACHINE ADN MRST-1 STD T7 RMR2 SETMS IO,DF LDC BFMS RJM RDS ENDMS LDD EQ RESTORE (T5) STD T5 * COPY MRT TO CM AT THE END OF THE TRT. RJM PTA PRESET TRT ADDRESS LDD FN+4 GET TRT LENGTH SHN 3 ADK TDGL CRD CM LDD CM+2 SET MRT LENGTH STD T0 SAVE TRT LENGTH ADN 7 SHN -3 STD CM+2 RJM STA SET TRT FWA ADD T0 CWM BFMS+2,CM+2 COPY MRT TO CM LJM RMRX RETURN TITLE COPY TRT. CTT SPACE 4,10 ** CTT - COPY TRT. * * ENTRY (CA) = CM ADDRESS OF TRT. * (FN - FN+4) = EST ENTRY. * * EXIT (A) = 0. * * USES T6, CM - CM+4, CN - CN+4. * * CALLS PTA, STA. CTT SUBR ENTRY/EXIT RJM PTA LDN 0 SET TRT WORD INDEX STD T6 LDD FN+4 READ *TDGL* SHN 3 ADK TDGL CRD CN CTT1 LDD RA READ BUFFER WORD SHN 6 ADD CA ADD T6 CRD CM RJM STA SET FWA OF TRT ADD T6 CWD CM AOD T6 ADVANCE WORD LMD CN+2 NJN CTT1 LOOP TO END OF TRT * LDN 0 UJN CTTX RETURN EMT TITLE ENTER MST PARAMETERS FROM LABEL. ** EMT - ENTER MST PARAMETERS FROM LABEL. * * ENTRY (FN - FN+4) = EST ENTRY. * (FS - FS+4) = STLL WORD. * (T5) = EST ORDINAL. * (RS) = RECOVERY STATUS. * (MBUF) = LABEL MST. * * EXIT MST UPDATED TO REFLECT DEVICE LOADED. * EST UPDATED TO REFLECT DEVICE LOADED. * DEVICE SET AVAILABLE. * * USES T1, T2, CM - CM+4, CN - CN+4. * * MACROS MONITOR, SFA. EMT SUBR ENTRY/EXIT LDD FN LPC 7667 EMTB EQU *-1 * LPC 7767 (*CMS* CALL) STD FN LDD FN+4 FETCH MST DRIVER WORD SHN 3 ADN MDGL CRD CM LDD CM RETAIN *R* STATUS AND DAT INDEX LPC 4377 STD CM LDN 0 STD T2 STM MBUF+5*NVGL+4 CLEAR UNITS RESERVED TO *NVE* LDD RS NJN EMT1 IF RECOVERY SELECTED STM MBUF+5*STLL+3 CLEAR ACTIVE USER COUNT STM MBUF+5*DULL+1 CLEAR PF INTERLOCK AND COUNT STM MBUF+5*DULL+3 CLEAR SYSTEM TABLE TRACK STM MBUF+5*DULL+4 CLEAR ACTIVE USER COUNT EMT1 LDD RE CLEAR UNAVAILABLE STATUS LPC 7677 STD RE LPN 2 NJN EMT3 IF DEVICE ACCESSED PREVIOUSLY LDD RS NJN EMT2 IF RECOVERY DEADSTART LDM MBUF+5*ACGL+3 SAVE *IQFT* TRACK STD T2 LDN 0 CLEAR *IQFT* POINTER STM MBUF+5*ACGL+3 LDM MBUF+5*ACGL+0 CLEAR *DAS* PARITY DEVICE ACCESS FLAGS SCN 17 STM MBUF+5*ACGL+0 LDD FN+3 CHECK DEVICE TYPE LMC 2RDE ZJN EMT2 IF *DE* DEVICE LMN 2RDP&2RDE ZJN EMT2 IF *DP* DEVICE LDN 0 CLEAR *DAS* PARITY DEVICE FIELDS STM MBUF+5*ACGL+1 EMT2 LDD FN+4 STORE DEVICE ACTIVITY WORD SHN 3 ADN ACGL CWM MBUF+5*ACGL,ON EMT3 LDM MBUF+5*STLL+3 RETAIN ACTIVE USER COUNT STD FS+3 LDM MBUF+5*MDGL SET *X* AND 16-WORD PFC STATUS FROM LABEL LPC 3000 RAD CM LDD FN SET MACHINE INDEX FOR DEVICE SHN 21-4 MJN EMT4 IF ISD EMTA LDN 0 (MACHINE INDEX - 1) STM MBUF+5*DULL+2 EMT4 LDD FN+4 STORE ALLOCATION AND DEVICE DESCRIPTION SHN 3 ADN ALGL ERRNZ PFGL-ALGL-1 ADJUST IF *PFGL* POSITION CHANGES ERRNZ PUGL-ALGL-2 ADJUST IF *PUGL* POSITION CHANGES CWM MBUF+5*ALGL,TR ADK MDGL-ALGL-3 STORE DRIVER WORD CWD CM LDD FN+4 PRESERVE BAT ADDRESS SHN 3 ADN NVGL CRD CM LDD CM+1 STM MBUF+5*NVGL+1 LDD CM+2 STM MBUF+5*NVGL+2 LDD FN+4 STORE BAT PARAMETERS SHN 3 ADN NVGL ERRNZ NVGL+1-ISGL CODE DEPENDS ON VALUE ERRNZ ISGL+1-I2GL CODE DEPENDS ON VALUE CWM MBUF+5*NVGL,TR ADN DULL-NVGL-3 STORE DEVICE USAGE INFORMATION CWM MBUF+5*DULL,ON CWD FS STORE DEVICE STATUS SFA EST,T5 SET EQUIPMENT AVAILABLE IN EST ADK EQDE CWD FN LDD T2 ZJN EMT5 IF NO *IQFT* STD CM+2 LDD T5 RELEASE *IQFT* TRACK CHAIN STD CM+1 MONITOR DTKM EMT5 LJM EMTX RETURN ETT TITLE EDIT TRT. ** ETT - EDIT TRACK TABLE. * * ENTRY (CA) = ADDRESS OF CM BUFFER CONTAINING TRT. * (FN - FN+4) = EST ENTRY. * (MBUF) = LABEL MST. * * EXIT (A) = 0 IF COPY SUCCESSFUL. * (A) .LT. 0 IF ERROR IN EDITING. * ALL NON-PRESERVED FILE CHAINS RELEASED. * * USES T1, T2, T6, T7, P1, CM - CM+4. * * CALLS PTA, RTC, STF. ETT SUBR ENTRY/EXIT LDD FN+4 GET TRT LENGTH SHN 3 ADK TDGL CRD CM LDD CM+2 SET TRT LENGTH STD P1 RJM PTA PRESET FWA OF TRT LDN 0 CLEAR WORD AND BYTE INDEX STD T6 STD T7 STM MBUF+5*ACGL+2 CLEAR PRESERVED FILE COUNT ETT1 LDD RA READ BUFFER WORD SHN 6 ADD CA ADD T6 CRD CM LDD CM+4 SET PRESERVED FILE IDENTIFIERS LPC 7400 STM ETTB SET BIT MASK LDM CM,T7 CHECK FOR RESERVED TRACK LMC 3777 NJN ETT2 IF NOT FLAWED TRACK RJM STF SET TRACK FLAW UJN ETT3 ADVANCE BYTE INDEX ETT2 LDM ETTC,T7 CHECK PRESERVED FILE BIT LPC * ETTB EQU *-1 ZJN ETT3 IF NOT PRESERVED FILE RJM RTC RESERVE TRACK CHAIN AOM MBUF+5*ACGL+2 ADVANCE PRESERVED FILE COUNT ETT3 AOD T7 ADVANCE BYTE INDEX LMN 4 NJN ETT4 IF NOT END OF TRT WORD STD T7 AOD T6 ADVANCE WORD INDEX LMD P1 ZJN ETT5 IF END OF BUFFER ETT4 LJM ETT1 LOOP ETT5 LDM MBUF+5*NVGL ZJN ETT7 IF NO MEDIA ERRORS RECORDED SHN 21-1 LMD TH EXTRACT TRT WORD INDEX STD T6 SHN 1-21 FORM BYTE INDEX FROM TRACK NUMBER STD T7 RJM STF SET TRACK FLAW NJN ETT6 IF TRACK RESERVED STM MBUF+5*NVGL ETT6 LDN 0 ETT7 LJM ETTX RETURN * TRACK RESERVATION BITS. ETTC BSS 0 CON 4010 CON 2004 CON 1002 CON 0401 RTC TITLE RESERVE TRACK CHAIN. ** RTC - RESERVE TRACK CHAIN. * * ENTRY (CA) = BUFFER ADDRESS. * (P1) = TRT LENGTH. * (FN - FN+4) = EST ENTRY. * (T6) = WORD INDEX. * (T7) = BYTE INDEX. * * EXIT (A) = *STLK* IF LINKAGE ERROR. * TO *ETTX* IF LINKAGE ERROR. * * USES T1, T2, CM - CM+4, CN - CN+4. * * CALLS STA. RTC SUBR ENTRY/EXIT LDD T6 SET WORD INDEX STD T1 LDD T7 SET BYTE INDEX STD T2 RTC1 LDD T1 CHECK WORD INDEX SBD P1 PJN RTC2 IF OUT OF TRT RJM STA SET FWA OF TRT ADD T1 CRD CN LDM CN,T2 CHECK TRACK LINK ZJN RTC3 IF CLEAR RTC2 LDN STLK LJM ETTX EXIT RTC3 LDM CM,T2 SET NEXT LINK STM CN,T2 LDM ETTC,T2 SET PROPAGATION MASK STM RTCB LMC -0 SET RESERVATION MASK STM RTCA LDD CN+4 SAVE PREVIOUS BITS LPC * RTCA EQU *-1 STD CN+4 LDD CM+4 LPC * RTCB EQU *-1 RAD CN+4 RJM STA SET FWA OF TRT ADD T1 CWD CN LDM CN,T2 CHECK NEXT LINK SHN 6 MJN RTC4 IF NOT END OF TRACK CHAIN LJM RTCX RETURN RTC4 SHN 12 SET WORD INDEX LMD TH STD T1 SHN -20 SET BYTE INDEX STD T2 LDD RA READ BUFFER WORD SHN 6 ADD CA ADD T1 CRD CM LJM RTC1 LOOP TO END OF CHAIN RTT TITLE READ TRT. ** RTT - RECOVER TRACK RESERVATION TABLE. * * ENTRY (T5) = EST ORDINAL. * (CA+1) = CM BUFFER ADDRESS FOR TRT. * (FN - FN+4) = EST ENTRY. * * EXIT (A) = 0 IF SUCCESSFUL RECOVERY. * = *STTL* IF TRT LENGTH ERROR. * = *STLK* IF TRT LINKAGE ERROR. * (CA) = FWA OF TRT IN CM. * (MBUF) = LABEL MST. * * USES P1, T1, T3, T6, T7, CN - CN+4. * * CALLS ATC, CTD, CTT, EMT, ETT, RMR, RDS. * * MACROS ENDMS, MONITOR, SETMS. RTT4 NJN RTTX IF LENGTH ERROR RJM ETT EDIT TRACK TABLE RTTA EQU *-1 * RJM CTT (RECOVERY DEADSTART) NJN RTTX IF LINKAGE ERROR RTT5 RJM EMT ENTER MST PARAMETERS RJM ATC ADJUST TRACK COUNT RTTB UJN *+2 SKIP MRT UPDATE CON RMR * RJM RMR (RECOVERY DEADSTART) RJM CTD COPY SHARED TABLES LDN 0 RTT SUBR ENTRY/EXIT LDN MSTL STD T1 LDD RA READ LABEL INTO MST BUFFER SHN 6 ADD AL CRM MBUF,T1 LDD RE CHECK ESM RESIDENT TRT LPC 1002 LMC 1002 ZJN RTT5 IF DEVICE ACCESSED PREVIOUSLY SETMS IO,DF LDD CA+1 SET FWA FOR TRT IN CM STD CA LDM MBUF+5*ALGL+1 SET LABEL TRACK STD T6 LDM MBUF+5*DILL SET SECTOR NUMBER ADN FSMS STD T7 LDD FN+4 SET LENGTH OF TRT SHN 3 ADK TDGL CRD CN LDD CN+2 STD P1 RTT1 LDC BFMS READ SECTOR RJM RDS MJN RTT2 IF MS ERROR LDM BFMS ZJN RTT2 IF EOF/EOI STD T7 LDM BFMS+1 ZJN RTT2 IF END OF TRT STD T1 LDD P1 SBD T1 MJN RTT2 IF WORD COUNT > TRT SIZE STD P1 LDD RA WRITE SECTOR TO CM SHN 6 ADD CA CWM BFMS+2,T1 LDD T1 RAD CA LDD T1 SHN -6 NJN RTT1 IF NOT EOR RTT2 ENDMS RELEASE CHANNEL LDD CA+1 STD CA SET FWA OF TRT IN CM LDD P1 ZJN RTT3 IF CORRECT TRT LENGTH LDN STTL RTT3 LJM RTT4 COMPLETE RECOVERY STF TITLE SET TRACK FLAW. ** STF - SET TRACK FLAW IN TRT. * * ENTRY (T6) = TRT WORD INDEX. * (T7) = BYTE INDEX. * (P1) = TRT LENGTH. * * EXIT (A) = 0 IF INVALID TRACK. * * USES CM - CM+4. * * CALLS STA. STF1 LDN 0 INDICATE INVALID TRACK STF SUBR ENTRY/EXIT LDD T6 SBD P1 PJN STF1 IF TRACK OUT OF TRT RJM STA ADD T6 READ TRT WORD CRD CM LDM ETTC,T7 SET TRACK RESERVATION MASK LPN 17 STD T0 LMD CM+4 CHECK TRACK ASSIGNMENT SBD T0 LMD CM+4 NJN STFX IF RESERVED LDD T0 RAD CM+4 SET TRACK RESERVED LDC 3777 STM CM,T7 SET TRACK FLAWED RJM STA ADD T6 STORE TRT WORD CWD CM UJN STFX RETURN TITLE SET EQUIPMENT CONFIGURATION. AUL SPACE 4,15 ** AUL - ASSEMBLE UNIT LIST. * * ENTRY (UC) = REQUIRED UNIT COUNT. * (FN - FN+4) = EST ENTRY. * (CN - CN+4) = UNIT DESCRIPTOR WORD (DDLL). * * EXIT (A) = 0 IF REQUIRED UNIT COUNT SATISFIED. * (CN - CN+4) = NEW UNIT LIST. * (FS - FS+4) = DEVICE STATUS WORD (STLL). * * USES T0 - T3, CM - CM+4, FS - FS+4. AUL2 AOD T1 ADVANCE UNITS TRANSFERED COUNT SHN 21-0 MJN AUL3 IF NOT CROSSING BYTE BOUNDARY SOD T2 DECREMENT SOURCE ADDRESS AUL3 AOD CN ADVANCE TOTAL UNIT COUNT LPN 7 SHN -1 STD T0 LDN CN+4 FORM DESTINATION BYTE ADDRESS SBD T0 STD T3 LDI T2 EXTRACT NEXT UNIT SHN 14 STI T2 SHN -14 AULA PJN AUL4 IF PACKING UNIT LOW * MJN AUL4 FALL THRU IF PACKING UNIT HIGH SHN 6 LMI T3 ASSEMBLE UNIT DESCRIPTOR WORD SCN 77 LMI T3 AUL4 STI T3 LDD UC LMD CN LPN 7 ZJN AULX IF REQUIRED UNIT COUNT SATISFIED LDM AULA TOGGLE UNIT PACKING TRANSFER LMD HN STM AULA SOD CM PJN AUL2 IF MORE UNITS THIS EQUIPMENT AUL SUBR ENTRY/EXIT LDD FN+4 SHN 3 ADN STLL CRD FS ADN DDLL-STLL GET UNIT DESCRIPTOR WORD CRD CM LDD CM LPN 7 STD CM LDD CN CHECK CURRENT UNIT COUNT LPN 1 ZJN AUL1 IF NEXT UNIT PACKS LOW LDD HN PJNI .NOT. MJNI AUL1 LMC MJNI+AUL4-AULA STM AULA SET INITIAL PACKING TRANSFER LDN 0 CLEAR UNITS UNPACKED STD T1 LDN CM+4 SET INITIAL SOURCE ADDRESS STD T2 LJM AUL3 ENTER LOOP SEC SPACE 4,15 ** SEC - SET EQUIPMENT CONFIGURATION. * * ENTRY (T5) = EST ORDINAL. * (EQ) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT EST/MST SET TO ACCOMMODATE NEW CONFIGURATION. * ALL EXCEPT FIRST EQUIPMENT IN CHAIN SET IN USE. * (FS - FS+4) = STLL WORD FOR EQUIPMENT. * (FN - FN+4) = EST ENTRY. * * USES EC, UC, CM - CM+7, CN - CN+4. * * CALLS AUL, SES, SSL. * * MACROS SFA, SMSTF. SEC5 RJM SSL SET SECTOR LIMITS SEC SUBR ENTRY/EXIT LDN 0 CLEAR MST ERROR STATUS STD EC RJM SES LDD FN+4 READ CONFIGURATION PARAMETERS SHN 3 ADN MDGL CRD CM+3 SBN MDGL-PFGL CRD CM ADN STLL-PFGL CRD FS ADN DDLL-STLL CRD CN LDD CN SAVE CURRENT UNIT COUNT LPN 7 STD T0 LDD FN CHECK EQUIPMENT STATUS SHN 21-10 PJN SEC5 IF NOT REMOVABLE DEVICE LDD CM+5 LMC 2RDI ZJN SEC1 IF *6DI* DRIVER LMN 2RDJ&2RDI ZJN SEC1 IF *6DJ* DRIVER LDD CM+4 SET REQUIRED = CURRENT UNIT COUNT LPN 7 STD CM+4 LDD CN SCN 7 LMD CM+4 STD CN SEC1 LDD CM+4 SET REQUIRED UNIT COUNT LPN 7 STD UC SBD T0 ZJN SEC4 IF REQUIRED = CURRENT UNIT COUNT MJN SEC3 IF REQUIRED COUNT .LT. CURRENT SEC2 LDD FS+4 SET NEXT EQUIPMENT IN CHAIN SHN -3 STD T5 SFA EST READ NEXT EQUIPMENT EST ADK EQDE CRD FN SMSTF LDIU SET DEVICE IN USE RJM AUL ASSEMBLE UNIT LIST NJN SEC2 IF REQUIRED UNITS NOT ASSEMBLED SEC3 RAD CN LDD EQ RESTORE FIRST EQUIPMENT PARAMETERS STD T5 SFA EST ADK EQDE CRD FN SEC4 LDD FN+4 SHN 3 ADN STLL CRD FS ADN DDLL-STLL UPDATE UNIT DESCRIPTOR WORD CWD CN LJM SEC5 COMPLETE PROCESSING AND EXIT SPACE 4 ERRNG BFMS-* OVERFLOW INTO BUFFER TITLE PRESET. PRS SPACE 4,10 ** PRS - PRESET OVERLAY. PRS SUBR ENTRY/EXIT * PRESET FOR MMF PROCESSING. LDM MMFP ZJN PRS1 IF DO NOT PRESET FOR MMF LDC MMFL GET MMF STATUS CRD CM SOD CM+4 RAM EMTA * PRESET FOR RECOVERY PROCESSING. PRS1 LDD RS ZJN PRSX IF NOT RECOVERY DEADSTART LDC CTT STM RTTA ENABLE RECOVERY PROCESSING LDC RJMI STM RTTB UJP PRSX EXIT SPACE 4,10 QUAL CTD EQU /RDG/CTD RMR EQU /RDG/RMR RTT EQU /RDG/RTT SEC EQU /RDG/SEC SPACE 4,10 OVERFLOW ORDG,EPFW CHECK FOR OVERFLOW TTL MSM/4DH - DEVICE INITIALIZATION ROUTINES. TITLE QUAL RDH IDENT 4DH,/RDH/RDHX *COMMENT MSM - DEVICE INITIALIZATION ROUTINES. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. RDH SPACE 4,10 *** *4DH* CONTAINS ROUTINES UTILIZED BY *RMS* * IN INITIALIZING MASS STORAGE EQUIPMENTS. RDH SPACE 4,10 ** ROUTINES CALLED. * * 0PI - PRESET DRIVER TO READ/WRITE DEADSTART SECTOR. * 0TI - SET TRACK FLAWS IN TRT. SPACE 4,10 **** DIRECT LOCATION ASSIGNMENTS. PB EQU RG - RI+1 FORMAT PARAMETER BLOCK (3 LOCATIONS) CS EQU ET CHANNEL STATUS FR EQU P1 FORMAT REQUIRED FLAG LC EQU P2 LAST CYLINDER + 1 **** SPACE 4,10 ** ASSEMBLY CONSTANTS. DC EQU 11 DISK CHANNEL FCGS EQU 12 GENERAL STATUS FUNCTION CODE FCFP EQU 16 FORMAT PACK FUNCTION CODE FPBL EQU 22 FORMAT PACK PARAMETER BLOCK LENGTH RDH SPACE 4,10 ORG ORDH RDH SUBR ENTRY/EXIT LJM POV PRESET OVERLAY TITLE MAIN INITIALIZATION ROUTINE. IMS SPACE 4,15 ** IMS - INITIALIZE MASS STORAGE. * * ENTRY (EQ) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * * EXIT (A) .LT. 0 IF RECOVERY INFORMATION NOT TO * BE REWRITTEN TO CM UPON RETURN TO *MRL*. * * ERROR TO *HNG* IF SHARED DEVICE CONFLICT. * * USES CM+3 - CM+7, CN - CN+4, FS - FS+4. * * CALLS CSD, /RMS/CSE, IDS, UDT. * * MACROS UJMF. IMS5 RJM IDS INITIALIZE DEVICE STATUS NJN IMSX IF DEVICE NOT READY UJMF IMSX NON MMF TRANSFER RJM UDT UPDATE DAT NJN IMS1 IF EXTENDED MEMORY TRACK UNAVAILABLE IMS SUBR ENTRY/EXIT SHN 21-4 PJN IMSX IF INITIALIZE NOT SELECTED LDD FN+4 GET FAMILY NAME/DEVICE NUMBER SHN 3 ADN PFGL CRD CN ADN MDGL-PFGL GET SECTOR LIMITS CRD CM+3 ADN STLL-MDGL FETCH DEVICE STATUS CRD FS RJM /RMS/CSE CHECK SYSTEM EQUIPMENT UJMF IMS5 NON MMF TRANSFER RJM CSD CHECK SHARED DEVICE STATUS IMS1 NJN IMS4 IF DAT CONFLICT LDD T2 IMS2 ZJN IMS5 IF DEVICE NOT DESCRIBED IN DAT LDI T2 LPC -0 IMSA EQU *-1 STI T2 ZJN IMS5 IF DEVICE NOT ACTIVE IN DAT LDM DATB+4 ZJN IMS3 IF NON-SHARED DEVICE LDN CSDC-CSDB IMS3 ADC CSDB IMS4 LJM /RMS/HNG DISPLAY ERROR AND HANG PP TITLE SUBROUTINES. CFR SPACE 4,20 ** CFR - CHECK FOR FORMAT REQUEST. * * ENTRY (A) = 0 IF DEADSTART SECTOR READ BY *RCS*. * (AM) = ALGORITHM INDEX. * (CS) = CHANNEL STATUS. * (FR) = FORMAT REQUIRED FLAG. * (LC) = FIRST CYLINDER OF *CTI* SPACE. * (T5) = EST ORDINAL. * (T6) = TRACK CONTAINING DEADSTART SECTOR. * (T7) = DEADSTART SECTOR. * (FN - FN+4) = EST ENTRY. * (FS - FS+4) = *STLL* WORD OF MST. * * USES T3. * * CALLS *4DI*. * * MACROS EXECUTE. CFR SUBR ENTRY/EXIT STD T3 LDD FR NJN CFR1 IF FORMAT REQUIRED LDD FS SHN 21-LFPR+LFPR/12D*12D PJN CFRX IF DEVICE NOT BEING FORMATTED CFR1 LDD AM LMN AIDC NJN CFRX IF NOT 895 DEVICE LDD CS ZJN CFRX IF ALL CONCURRENT CHANNELS EXECUTE 4DI FORMAT 895 DEVICE UJN CFRX RETURN CTF SPACE 4,10 ** CTF - CHECK TRACK FLAWED IN TRT. * * ENTRY (A) = TRACK NUMBER. * * EXIT (A) = 0 IF TRACK FLAWED. * * USES T0, T1, CM - CM+4. * * CALLS STA. CTF SUBR ENTRY/EXIT LPC 3777 UNPACK TRACK SHN 21-1 SET TRT WORD INDEX STD T0 SHN 1-21 SET BYTE INDEX STD T1 RJM STA SET FWA OF TRT ADD T0 CRD CM LDM CM,T1 CHECK TRACK LMC 3777 UJN CTFX RETURN FBT SPACE 4,10 ** FBT - FLAW BLOCK OF TRACKS IN TRT. * * ENTRY (T3) = FIRST TRACK NUMBER. * (CN) = LAST TRACK NUMBER + 1. * (T5) = EST ORDINAL. * * EXIT ALL TRACKS FLAWED IN SPECIFIED BLOCK. * * USES T3, CM - CM+4. * * CALLS CTF. * * MACROS MONITOR. FBT SUBR ENTRY/EXIT FBT1 LDD T3 CHECK TRACK FLAWED RJM CTF ZJN FBT2 IF TRACK ALREADY FLAWED LDD T5 STD CM+1 LDD T3 STD CM+2 LDN STFS FLAW TRACK IN TRT STD CM+3 MONITOR STBM FBT2 AOD T3 ADVANCE TRACK NUMBER LMD CN NJN FBT1 IF NOT END OF TRACKS TO FLAW UJN FBTX RETURN IDS SPACE 4,15 ** IDS - INITIALIZE DEVICE. * * ENTRY (EQ) = (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * (FS - FS+4) = STLL WORD. * * EXIT (A) = 0 IF DEVICE SET TO INITIALIZE. * LABEL TRACK ASSIGNED. * * USES CS, T1, T3, T6, CM - CM+4, CN - CN+4. * * CALLS CFR, CTF, IFM, PTA, PTF, RCS, SNC. * * MACROS ENDMS, MONITOR, SETMS, SFA, SMSTF. IDS7 LDN 0 INHIBIT FURTHER PROCESSING OF DEVICE STD RE LDN 1 INDICATE DEVICE NOT INITIALIZED IDS SUBR ENTRY/EXIT LDD FN LPN 2 NJN IDS7 IF DEVICE OFF OR DOWN SMSTF LPTU PROHIBIT TRT UPDATE BY *1RU* RJM PTA PRESET FWA OF TRT LDD FN CHECK EQUIPMENT TYPE LPC 200 STM PFTA SET LDAM FLAG FOR *PFT* ROUTINE ZJN IDS1 IF NOT *LDAM* DEVICE RJM SNC SELECT NIO CHANNEL STD CS RJM IFM INTERPRET FLAW MAP RJM RCS RESERVE *CTI* SPACE RJM CFR CHECK FOR FORMAT REQUEST IDS1 LDN ZERL REQUEST LABEL TRACK CRD CM LDD T5 STD CM+1 MONITOR RTCM * LDN 0 SET SECTOR STD T7 LDD CM+4 SET LABEL TRACK STD T6 ZJP IDS2 IF NO TRACK ASSIGNED STD CM+2 LDN SPFS SET PRESERVED FILE STATUS STD CM+3 MONITOR STBM LDD FN+4 READ *ALGL* SHN 3 ADK TDGL CRD CM ADN ALGL-TDGL CRD CN LDD CM SET TRACK COUNT STD T3 LDD T6 SET LABEL TRACK STD CN+1 LDD FN+4 STORE *ALGL* SHN 3 ADN ALGL CWD CN LDD FN SET DEVICE AS AVAILABLE LPC 7667 LMN 10 SET DEVICE ACTIVE STD FN LDD RE LPC 7677 STD RE SFA EST,T5 WRITE EST ENTRY ADK EQDE CWD FN LDC 501 BUFFER INDEX STD T1 LDC LTKL-1 SBD T6 PJN IDS3 IF LABEL TRACK WITHIN RANGE IDS2 LDC IDSA LJM /RMS/HNG ISSUE ERROR MESSAGE AND HANG * PREWRITE ALL POTENTIAL LABEL TRACKS THAT ARE FLAWED. IDS3 LDN 0 CLEAR SECTOR BUFFER STM BFMS,T1 SOD T1 PJN IDS3 IF MORE TO CLEAR SHN -7 STM FNSS SET FLAW INDICATOR SETMS IO,(SM,AR,DF) RJM PFT PREWRITE LABEL TRACK LDC FLTK STD T6 IDS4 LDD T6 CHECK TRACK FLAWED RJM CTF NJN IDS5 IF NOT FLAWED STD T7 RJM PFT PREWRITE FLAWED TRACK IDS5 SOD T3 ZJN IDS6 IF END OF TRACKS ON DEVICE AOD T6 LMC LTKL NJN IDS4 IF NOT ALL POSSIBLE LABEL TRACKS IDS6 ENDMS * LDN 0 LJM IDSX RETURN IDSA DATA C*LABEL TRACK CONFLICT.* IFM SPACE 4,15 ** IFM - INTERPRET FLAW MAP. * * ENTRY (EQ) = (T5) = EST ORDINAL. * (FS - FS+4) = MST STATUS WORD (STLL). * (FN - FN+4) = EST ENTRY FOR EQUIPMENT. * (CS) = CHANNEL STATUS. * * EXIT (T5) = EQUIPMENT. * (AM) = ALGORITHM INDEX. * FLAWS SET IN TRT FOR *LDAM* TYPE EQUIPMENT. * * EREXIT (A) .NE. 0 IF REMOVABLE *LDAM* DEVICE NOT READY. * TO *IDSX* IF REMOVABLE *LDAM* DEVICE NOT READY. * * USES T3, CM - CM+4, FS - FS+1. * * CALLS EXR, SDR, *0TI*, *0TJ*. * * MACROS EXECUTE. IFM2 LDD FN+3 GET UNIT COUNT SHN 3 ADN DDLL CRD CM LDD CM SET UNIT COUNT LPN 7 STD T2 LDN PRFM REQUEST FLAW MAP PROCESSING RJM SDR SET BUFFERED DEVICE REQUEST IFM SUBR ENTRY/EXIT LDD CS ZJN IFM2 IF ALL CONCURRENT CHANNELS LDD T5 SET EQUIPMENT PARAMETER STM MIPA IFM1 LDD FN+4 SHN 3 ADN DILL READ ALGORITHM INDEX FROM LIST CRD CM LDD CM+4 LOAD ALGORITHM INDEX LPN 77 STD AM EXECUTE 0TI,MILA EXECUTE FLAW PROCESSOR ZJN IFMX IF NO FLAWING ERRORS LDM RDCT LPN 77 LMN NRDE NJN IFMX IF DEVICE READY LDD FN SHN 21-10 PJN IFM1 IF NON-REMOVABLE DEVICE LDN ZERL CRD CM LDN 0 CLEAR INITIALIZATION REQUEST STD RE STD FS LMN STNR SET NOT READY STATUS STD FS+1 LDD FN+4 SHN 3 ADN PFGL CLEAR DEVICE DESCRIPTION CWD CM ADN PUGL-PFGL CWD CM ADN STLL-PUGL STORE MST STATUS WORD CWD FS LJM IDSX EXIT PFT SPACE 4,15 ** PFT - PREWRITE FLAWED TRACK. * * ENTRY (T4 - T7) = MASS STORAGE PARAMETERS. * (PFTA) .NE. 0 IF *LDAM* DEVICE. * DRIVER PRESET. * * CALLS WDS. PFT SUBR ENTRY/EXIT PFT2 LDC BFMS+WCSF WRITE SECTOR RJM WDS LDC 0 PFTA EQU *-1 ZJN PFTX IF NOT *LDAM* DEVICE AOD T7 LMM SLM NJN PFT2 IF NOT END OF TRACK UJN PFTX RETURN RCS SPACE 4,15 ** RCS - RESERVE *CTI* SPACE. * * ENTRY (EQ) = EST ORDINAL. * (AM) = ALGORITHM INDEX. * (FN+4) = MST POINTER. * (CS) = CHANNELS STATUS. * * EXIT (A) = 0 IF DEADSTART SECTOR READ WITHOUT ERROR. * (FR) = 0 IF FORMAT UNREQUIRED (*CIP* SPACE INTACT). * (LC) = FIRST CYLINDER OF *CTI* SPACE. * (T5) = EST ORDINAL. * (T6) = TRACK CONTAINING DEADSTART SECTOR. * (T7) = DEADSTART SECTOR. * *CTI* SPACE FLAWED IN TRT. * * USES T3, T9, CM - CM+4, CN - CN+4. * * CALLS FBT, RDS, WDS, *0PI*. * * MACROS ENDMS, EXECUTE, SMSTF. RCS8 LDC ** CHECK DEADSTART SECTOR RCSA EQU *-1 NJN RCSX IF NO VALID DEADSTART SECTOR LDD FR FORMAT REQUIRED STATUS RCS SUBR ENTRY/EXIT LDN 0 STD FR CLEAR FORMAT REQUIRED STD LC LDD CS ZJN RCSX IF ALL CONCURRENT CHANNELS LDD EQ SET PARAMETER WORD LMC 4000 STM MIPA EXECUTE 0PI,MILA READ DEADSTART SECTOR STM RCSA NJN RCS1.1 IF NOT A VALID DEADSTART SECTOR ENDMS LDM BFMS+CFBP EXTRACT FORMAT REQUIRED FLAG LPN 40 STD FR LMM BFMS+CFBP CLEAR FORMAT REQUIRED FLAG STM BFMS+CFBP LDM BFMS+MSLP NJN RCS1 IF *MSL* INSTALLED LDM BFMS+CDAP NJN RCS1 IF COMMON DISK AREA INSTALLED LDM BFMS+CTIP RCS1 STD LC NJN RCS1.2 IF *CTI* INSTALLED RCS1.1 LDD AM LMN AIDR NJP RCS8 IF NOT CDSS II LDC 840D FIRST CYLINDER OF AREA TO BE FLAWED RCS1.2 SHN 1 STD T3 LDD FN+4 GET DEVICE LENGTH FROM MST SHN 3 ADK TDGL CRD CN LDD AM LMN AIDA NJN RCS2 IF NOT 33502 LDD T3 SHN -1 ADC NTDA/2 COMPLETE CYLINDER TO TRACK CONVERSION STD T3 UJN RCS4 FLAW TRACKS RCS2 LMN AIDI&AIDA ZJN RCS3 IF 7X54/844-21 LMN AIDK&AIDI ZJN RCS3 IF 7154/844-21 LMN AIDX&AIDK ZJN RCS3 IF FSC 3330-1 LMN AIDR&AIDX NJN RCS4 IF NOT CDSS II LDD T3 INITIALIZE TRACK CALCULATION STD T9 LDN 0 STD T3 LDC 1062 SET FLAW LIMIT FOR CDSS II STD CN RCS2.1 LCN 3 FOR THIS PURPOSE, TRACK = CYLINDER*2/3 RAD T9 MJN RCS5 IF CONVERSION COMPLETE AOD T3 INCREMENT TRACK NUMBER UJN RCS2.1 CONTINUE DIVISION RCS3 LDD T3 RAD T3 COMPLETE CYLINDER CONVERSION RCS4 LDD T3 SBD CN PJN RCS7 IF *CTI* BEYOND LOGICAL END OF DEVICE RCS5 RJM FBT FLAW BLOCK OF TRACKS LDD LC ZJP RCS8 IF *CTI* NOT PRESENT (CDSS II ONLY) RCS7 SMSTF GCTI SET *CTI* PRESENT FLAG LDN ZERL CLEAR DEADSTART FILE INDICATOR CRM BFMS+OSBP,ON LDC BFMS+WLSF REWRITE DEADSTART SECTOR RJM WDS ENDMS RELEASE CHANNEL * LDN 0 LJM RCSX RETURN SNC SPACE 4,10 ** SNC - SELECT AVAILABLE NIO CHANNEL. * * ENTRY (FN - FN+4) = EST ENTRY. * * EXIT (A) = 0, IF NO NIO CHANNEL AVAILABLE * = NON-CONCURRENT CHANNEL BYTE. SNC2 AOD T0 ADVANCE ADDRESS LMN FN+3 NJN SNC1 IF POSSIBLE SECOND CHANNEL SNC SUBR ENTRY/EXIT LDN FN+1 STD T0 INITIALIZE CHANNEL BYTE ADDRESS SNC1 LDI T0 LPC 7040 CHECK CHANNEL STATUS LMC 4000 NJN SNC2 IF NOT AN AVAILABLE CHANNEL LDI T0 UJN SNCX RETURN SPACE 4,10 ** COMMON DECKS. *CALL COMPSDR SPACE 4,10 ORDI EQU *+5 LOAD ADDRESS FOR *4DI* MIPA EQU * *0TI* PARAMETER ADDRESS MILA EQU MIPA+1 *0TI* LOAD ADDRESS SPACE 4,10 ERRNG BFMS-MILA-ZPXL OVERFLOW INTO BUFFER ERRNG BFMS-MILA-ZTXL OVERFLOW INTO BUFFER POV SPACE 4,10 ** POV - PRESET OVERLAY. POV LDM MMFP ZJN POV3 IF DO NOT PRESET FOR MMF LDC MMFL CRD CM LDD CM+3 SET MACHINE MASK LMM IMSA STM IMSA LDC L"QUAL" SET LIST ADDRESS STD T1 UJN POV2 ENTER LOOP POV1 STD T0 LDN PSNI REPLACE INSTRUCTION WITH *PSN* STI T0 AOD T1 ADVANCE ADDRESS POV2 LDI T1 NJN POV1 IF MORE TO PRESET POV3 LJM RDHX RETURN * LIST OF INSTRUCTIONS TO BE PRESET. L"QUAL" BSS 0 L"QUAL" HERE ERRZR L"QUAL"-* TABLE EMPTY - REMOVE PRESET CODE CON 0 TERMINATE LIST QUAL IMS EQU /RDH/IMS ORDI EQU /RDH/ORDI SPACE 4,10 OVERFLOW ORDH,EPFW CHECK FOR OVERFLOW TTL MSM/4DI - PROCESS FORMAT REQUEST. TITLE QUAL RDI IDENT 4DI,/RDI/PFRX *COMMENT MSM - PROCESS FORMAT REQUEST. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1994. RDI SPACE 4,10 *** *4DI* CONTAINS ROUTINES UTILIZED BY *RMS* IN * FORMATTING 895 DEVICES. SPACE 4,10 *CALL COMPCHM SPACE 4,10 **** DIRECT LOCATION ASSIGNMENTS. PB EQU RG - RI+1 FORMAT PARAMETER BLOCK (3 LOCATIONS) CS EQU ET CHANNEL STATUS FR EQU P1 FORMAT REQUIRED FLAG LC EQU P2 LAST CYLINDER + 1 **** SPACE 4,10 ** ASSEMBLY CONSTANTS. DC EQU 11 DISK CHANNEL FCGS EQU 12 GENERAL STATUS FUNCTION CODE FCFP EQU 16 FORMAT PACK FUNCTION CODE FPBL EQU 22 FORMAT PACK PARAMETER BLOCK LENGTH RDH SPACE 4,10 ORG ORDH TITLE PROCESS FORMAT REQUEST. PFR SPACE 4,20 ** PFR - PROCESS FORMAT REQUEST. * * ENTRY (T3) = 0 IF DEADSTART SECTOR READ BY *RCS*. * (AM) = ALGORITHM INDEX. * (CS) = CHANNEL STATUS. * (FR) = FORMAT REQUIRED FLAG. * (LC) = FIRST CYLINDER OF *CTI* SPACE. * (T5) = EST ORDINAL. * (T6) = TRACK CONTAINING DEADSTART SECTOR. * (T7) = DEADSTART SECTOR. * (FN - FN+4) = EST ENTRY. * (FS - FS+4) = *STLL* WORD OF MST. * * USES T1, T2, T3, T4, CM - CM+4, CN - CN+4. * * CALLS F8D. * * MACROS CMSTF, ENDMS, RCHAN. PFR SUBR ENTRY/EXIT LDN 0 STD CM+2 LDD CS LPN 77 CLEAR IMMEDIATE RETURN AND RESERVE CHANNEL RCHAN LDD CM+1 SAVE CHANNEL FOR *ENDMS* STD T4 AOM CHRV LDC CTDC SET ADDRESS OF INSTRUCTION LIST STD T1 UJN PFR3 MODIFY CHANNEL INSTRUCTIONS PFR2 STD T2 SET INSTRUCTION ADDRESS LDI T2 SCN 37 LMD T4 MODIFY INSTRUCTION STI T2 AOD T1 ADVANCE LIST ADDRESS PFR3 LDI T1 NJN PFR2 IF NOT END OF LIST LDD FN+4 SHN 3 ADN DDLL FETCH UNIT LIST FROM MST CRD CN LDC DSCP*200+MS1W STORE FORMATTING MESSAGE CWM PFRA,ON * GENERATE PARAMETER BLOCK TO FORMAT DEVICE. PFR4 LDN 0 SET FIRST CYLINDER STD PB LDD TH SET LARGE RECORD SIZE STD PB+2 LDD CN+4 EXTRACT NEXT UNIT SHN 14 STD CN+4 ERRPL 4000-3*SLDC CODE DEPENDS ON VALUE SHN -14 LMC 1S10+3S6 APPEND MODE / OPERATION DECODE STD PB+1 RJM F8D FORMAT DEVICE LDD T3 ZJN PFR7 IF DEADSTART SECTOR READ WITHOUT ERROR LDC 885D STD PB SET CYLINDER FOR DEADSTART SECTOR ADN 1 STD LC LDC 502 SECTOR BUFFER INDEX STD PB+2 PFR5 LDN 0 CLEAR SECTOR BUFFER STM BFMS-1,PB+2 SOD PB+2 NJN PFR5 IF BUFFER NOT CLEARED * LDN 0 * STD PB+2 RJM F8D FORMAT DEADSTART CYLINDER LDC -1S10 RAD PB+1 PFR6 SOD PB FORMAT PROTECTED AREA RJM F8D AOD PB+2 ADVANCE TRACK NUMBER LMN 2 NJN PFR6 IF MORE TRACKS TO FORMAT LDC BFMS+WLSF RJM WDS CLEAR DEADSTART SECTOR PFR7 LDD CN LPN 7 SBN 1 DECREMENT UNIT COUNT STD CN PJP PFR4 IF MULTI-UNIT DEVICE ENDMS LDC DSCP*200+MS1W RESTORE RECOVERY MESSAGE CWM PFRB,ON CMSTF LFPR CLEAR FORMAT REQUEST LJM PFRX RETURN PFRA DATA 10HFORMATTING PFRB DATA 10HRECOVERING TITLE SUBROUTINES. F8D SPACE 4,10 ** F8D - FORMAT 895 DEVICE. * * ENTRY (LC) = LAST CYLINDER + 1 TO FORMAT. * (PB - PB+2) = FORMAT PARAMETER BLOCK. * * USES PB, CM - CM+4. * * CALLS C2D, /RMS/SEM, WNB. F8D2 LDC DSCP*200+MS1W+2 UPDATE CYLINDER NUMBER IN MESSAGE CWD CM FNC FCFP,DC ISSUE FORMAT FUNCTION ACN DC LDN FPBL OUTPUT PARAMETER BLOCK OAM PB,DC FJM *,DC WAIT TRANSMISSION COMPLETE DCN DC AOD PB ADVANCE CYLINDER NUMBER F8D3 RJM C2D STD CM+3 LDD PB CONVERT VALUE FOR MESSAGE SHN -6 RJM C2D STD CM+2 RJM WNB WAIT NOT BUSY LDD PB LMD LC NJN F8D2 IF MORE CYLINDERS TO FORMAT F8D SUBR ENTRY/EXIT LDD PB+1 RJM C2D CONVERT UNIT NUMBER STM F8DA RJM /RMS/SEM SET EQUIPMENT MESSAGE LDN 1RU STD CM+4 INSERT UNIT DESIGNATOR LDC DSCP*200+MS1W+1 CWD CM ADN 1 CWM F8DA,TW CHANGE MESSAGE SBN 2 CRD CM LDD LC NJN F8D1 IF *CTI* COMPONENT FOUND LDC NTDC/2 ERRNZ TTDC CODE DEPENDS ON VALUE STD LC F8D1 LDD PB LJM F8D3 FORMAT DEVICE F8DA DATA C*XX C0000.* WNB SPACE 4,10 ** WNB - WAIT NOT BUSY. * * ERROR TO */RMS/HNG* IF CONTROLLER HUNG BUSY. * * USES T1, T2. * * CALLS C2D. WNB SUBR ENTRY/EXIT LDC 400D STD T2 SET 400 MILLISECOND DELAY WNB1 DELAY 10 FNC FCGS,DC REQUEST GENERAL STATUS ACN DC IAN DC INPUT STATUS DCN DC STD T1 SAVE GENERAL STATUS LPN 2 ZJN WNBX IF NOT BUSY SOD T2 NJN WNB1 IF NOT TIMEOUT LDD T1 SHN -6 RJM C2D CONVERT GENERAL STATUS STM WNBA+11 LDD T1 RJM C2D STM WNBA+12 STORE IN MESSAGE LDC WNBA LJM /RMS/HNG DISPLAY MESSAGE AND HANG PP WNBA DATA C* HUNG BUSY - GS = XXXX.* SPACE 4,10 ** CHANNEL TABLE. CHTB DC SPACE 4,10 ERRNG BFMS-* OVERFLOW INTO BUFFER SPACE 4,10 QUAL SPACE 4,10 OVERFLOW ORDI,EPFW CHECK FOR OVERFLOW TTL MSM/4DJ - DAYFILE RECOVERY ROUTINES. TITLE IDENT 4DJ,/RMS/RDJX *COMMENT MSM - DAYFILE RECOVERY ROUTINES. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4,10 *** *4DJ* CONTAINS ROUTINES UTILIZED BY *RMS* IN * RECOVERING DAYFILES. SPACE 4,10 QUAL RMS ORG ORDJ RDJ SUBR ENTRY/EXIT UJN RDJX RETURN CDC SPACE 4,25 ** CDC - CHASE DAYFILE CHAIN. * * CDC CHASES THE DAYFILE CHAIN ON DISK TO RECOVER THE * DAYFILE RIGHT UP TO THE EOI. THE CHAINING IS DONE OFF OF THE * DISK RATHER THAN THE TRTS TO RECOVER THE EXACT DAYFILE AS IT * EXISTS ON DISK. THIS PERMITS DAYFILE RECOVERY TO BE * INDEPENDENT OF TRT UPDATES AND SYSTEM DEVICE CHECKPOINTS. * THE DAYFILE WILL BE TRUNCATED TO THE LAST SECTOR OF THE * CURRENT TRACK IF DISK EOI EXTENDS BEYOND THE CURRENT * TRACK IN THE TRT. * * ENTRY (T5) = EST ORDINAL. * (FN - FN+4) = EST ENTRY. * (FS - FS+4) = DEVICE STATUS WORD (STLL). * (MBUF) = LABEL MST. * * EXIT TRT ALTERED IF TRT AND DISK DO NOT MATCH AND VALID * EOI FOUND. * (A) MUST EQUAL 0 TO ENSURE *MRL* UPDATE OF CM * RECOVERY INFORMATION UPON RETURN FROM */RMS/RCD*. * * USES EE, FA, P1, T6, T7, CM+1 - CM+3. * * CALLS CDR, CFL, RSS, ULA, VEI, WDS. * * MACROS ENDMS, MONITOR, SETMS. CDC5 ENDMS SETMS IO,(DF,RW) RJM ULA UPDATE SECTOR OF LOCAL AREAS CDC SUBR ENTRY/EXIT LDM MBUF+5*ACGL+4 LPC MGLAP ZJN CDCX IF NO SECTOR OF LOCAL AREAS SETMS READSTR,(DF,RW) LDN EXDF SET NUMBER OF EXCESS DAYFILES STD P1 CDC1 SOD P1 MJN CDC5 IF END OF DAYFILES LDM MBUF+5*DALL,P1 ZJN CDC1 IF NO TRACK ASSIGNED STD T6 RJM CDR CHECK DAYFILE RECOVERY SELECTION NJN CDC1 IF FILE INITIALIZED * VERIFY DAYFILE RECOVERY. RJM CFL CHECK FILE LENGTH ZJN CDC1 IF EMPTY DAYFILE RJM VEI VERIFY EOI SECTOR CDC2 ZJN CDC1 IF EOI ON DISK MATCHES TRT EOI ENDMS LDD T6 LPC 3777 SET NEW EOI SECTOR STD CM+2 LDD T7 SECTOR STD CM+3 LDD T5 EQUIPMENT STD CM+1 MONITOR DTKM UPDATE EOI SECTOR * LDN 0 UJP CDC1 LOOP FOR NEXT DAYFILE CDR SPACE 4,10 ** CDR - CHECK DAYFILE RECOVERY. * * ENTRY (T6) = DAYFILE TRACK. * (P1) = DAYFILE INDEX. * (FS - FS+4) = STLL WORD OF THE MST. * * EXIT (A) = 0 IF DAYFILE NOT INITIALIZED. * SPACE RELEASED IF FILE INITIALIZED. * * USES FS, FS+1, CM+1 - CM+3. * * CALLS TLB. * * MACROS CMSTF, ENDMS, MONITOR. CDR SUBR ENTRY/EXIT * CHECK FOR INITIALIZE REQUEST. LDM CDRB,P1 STM CDRA LDD FS+1 CHECK INITIALIZE REQUEST LPC * CDRA EQU *-1 ZJN CDRX IF INITIALIZE NOT REQUESTED * INITIALIZE DAYFILE. LMD FS+1 CLEAR INITIALIZE REQUEST STD FS+1 SHN 6 LMD FS SCN MLIRP+MLPTU+MLCKP+MRASD NJN CDR1 IF MORE INITIALIZE FLAGS CMSTF LIRP CLEAR INITIALIZE PENDING CDR1 ENDMS * LDN 0 STD CM+3 LDD T6 SET FIRST TRACK STD CM+2 LDD EQ STD CM+1 MONITOR DTKM RELEASE DAYFILE SPACE STM MBUF+5*DALL,P1 CLEAR DAYFILE POINTER AOM ULAA SET LOCAL AREA SECTOR UPDATE LCN 0 CLEAR INITIALIZE REQUEST IN THE MST LMM CDRC,P1 RJM TLB LJM CDRX RETURN * INITIALIZE REQUEST MASKS FOR EXCESS DAYFILES. CDRB CON MLIDF DAYFILE CON MLIAF ACCOUNT FILE CON MLIEF ERROR LOG CON MLIMF MAINTENANCE LOG * INITIALIZE REQUEST BIT MAPPING. CDRC CON LIDF DAYFILE CON LIAF ACCOUNT FILE CON LIEF ERROR LOG CON LIMF MAINTENANCE LOG CDT SPACE 4,10 ** CDT - CHECK LAST UPDATE DATE AND TIME. * * ENTRY (P1) = DAYFILE INDEX. * (WEIA) = DAYFILE EOI SECTOR. * (TPDT) = TIME AND DATE FOR LATEST RECOVERED DAYFILE. * * EXIT RECOVERY POINTERS UPDATED IF THIS IS A LATER DAYFILE. * (TPDT) UPDATED TO LATEST DATE. * * USES P2, CM - CM+4. CDT SUBR ENTRY/EXIT LDD FN SHN 21-10 MJN CDTX IF REMOVABLE DEVICE LDD P1 SHN 1 ADD P1 STD P2 LDD MA COPY LAST UPDATE DATE AND TIME OF NEW FILE CWM BFMS+DTEI,ON SBN 1 CRD CM LDM TPDT,P2 CHECK YEAR AND MONTH SBD CM+2 MJN CDT1 IF LATER YEAR OR MONTH NJN CDTX IF NOT LATER YEAR OR MONTH LDM TPDT+1,P2 CHECK DAY AND HOUR SBD CM+3 MJN CDT1 IF A LATER DAY OR HOUR NJN CDTX IF NOT A LATER DAY OR HOUR LDM TPDT+2,P2 SBD CM+4 MJN CDT1 IF A LATER MINUTE NJN CDTX IF NOT A LATER MINUTE * SET THIS DAYFILE AS THE NEW ONE TO RECOVER. CDT1 LDD T5 SET LATEST DAYFILES EQUIPMENT STM RMSF,P1 LDD CM+2 SET LATEST DAYFILES DATE STM TPDT,P2 LDD CM+3 STM TPDT+1,P2 LDD CM+4 STM TPDT+2,P2 LJM CDTX RETURN TPDT BSS 3 LATEST DATE/TIME SYSTEM DAYFILE BSS 3 LATEST DATE/TIME ACCOUNT DAYFILE BSS 3 LATEST DATE/TIME ERRLOG DAYFILE BSS 3 LATEST DATE/TIME MAINTENANCE LOG CFL SPACE 4,10 ** CFL - CHECK FILE LENGTH. * * ENTRY (T6) = DAYFILE TRACK FROM SECTOR OF LOCAL AREAS. * (P1) = DAYFILE INDEX. * * EXIT (A) = 0 IF DAYFILE EMPTY. * (ET) = DAYFILE EOI TRACK. * (ES) = DAYFILE EOI SECTOR. * * CALLS SEI. CFL1 LDD T6 SAVE EOI TRACK STD ET LDD T7 SAVE EOI SECTOR STD ES LDM MBUF+5*DALL,P1 RESTORE FIRST TRACK STD T6 CFL SUBR ENTRY/EXIT RJM SEI SEARCH FOR EOI LDD T3 ADD T2 NJN CFL1 IF NOT EMPTY FILE AOM ULAA LDN 0 CLEAR DAYFILE POINTER STM MBUF+5*DALL,P1 UJN CFLX RETURN TDF SPACE 4,15 ** TDF - TRUNCATE DAYFILE. * * ENTRY (P1) = DAYFILE INDEX. * (T6) = DAYFILE EOI TRACK. * (T7) = SECTOR AT WHICH EOI TO BE WRITTEN. * * EXIT (EE) .NE. 0 TO INDICATE EOI WRITTEN. * * CALLS WDS. TDF SUBR ENTRY/EXIT LDN 0 SET EOI LINKAGE STM BFMS STM BFMS+1 LDN ZERL CLEAR DATE AND TIME CRM BFMS+DTEI,ON LDM MBUF+5*DALL,P1 SET FIRST TRACK STM BFMS+FTEI LDC BFMS+WLSF WRITE EOI SECTOR RJM WDS LDM RMSF,P1 CHECK FOR FILES RECOVERED SHN 6 PJN TDFX IF A FILE HAS BEEN RECOVERED LDD T5 SET THIS FILE AS RECOVERED STM RMSF,P1 UJN TDFX RETURN ULA SPACE 4,15 ** ULA - UPDATE SECTOR OF LOCAL AREAS. * * ENTRY (T5) = EST ORDINAL. * * ERROR TO *HNG* IF ERROR READING SECTOR OF LOCAL AREAS. * * USES T6. * * CALLS CTI, RLA, STI, WDS. * * MACROS ENDMS, SETMS. ULA SUBR ENTRY/EXIT LDC 0 ULAA EQU *-1 ZJN ULAX IF NO UPDATE REQUIRED SETMS POSITION * LDN 0 CLEAR UPDATE FLAG STM ULAA LDM MBUF+5*ALGL+1 SET LABEL TRACK STD T6 RJM STI INTERLOCK LABEL TRACK RJM RLA READ LOCAL AREA SECTOR PJN ULA2 IF NO ERROR ULA1 LDD T6 CLEAR LABEL TRACK INTERLOCK RJM CTI LDC ULAC *LOCAL AREA SECTOR ERROR.* LJM HNG DISPLAY MESSAGE AND HANG ULA2 STM ULAB ZJN ULA1 IF LOCAL AREA ENTRY NOT FOUND LDD MA TRANSFER DF STATUS TO LOCAL AREA ENTRY CWM MBUF+5*DALL,ON SBN 1 CRM *,ON ULAB EQU *-1 LDC BFMS+WLSF REWRITE SECTOR OF LOCAL AREAS RJM WDS ENDMS LDD T6 CLEAR LABEL TRACK INTERLOCK RJM CTI LJM ULAX RETURN ULAC DATA C*LOCAL AREA SECTOR ERROR.* VEI SPACE 4,15 ** VEI - VERIFY END OF INFORMATION SECTOR. * * ENTRY (ET) = TRT EOI TRACK. * (ES) = TRT EOI SECTOR. * (P1) = DAYFILE INDEX. * * EXIT (A) = 0 IF EOI ON DISK MATCHES TRT EOI. * (T7) = DISK EOI SECTOR. * * USES T6, T7. * * CALLS CDT, RDS, TDF. * * MACROS SETMS. VEI4 RJM TDF TRUNCATE DAYFILE VEI5 LDD T7 COMPARE EOI ON DISK WITH TRT EOI LMD ES VEI SUBR ENTRY/EXIT LDD ET SET EOI TRACK STD T6 LDD ES SET EOI SECTOR STD T7 SETMS POSITION VEI1 LDC BFMS SEARCH FOR EOI ON DISK RJM RDS MJN VEI4 IF READ ERROR LDM BFMS ADM BFMS+1 ZJN VEI2 IF EOI FOUND AOD T7 ADVANCE SECTOR NUMBER LDM BFMS CHECK LINKAGE SHN 6 PJN VEI1 IF NOT CROSSING TRACK BOUNDARY SOD T7 SET EOI SECTOR AT END OF TRACK RJM TDF TRUNCATE DAYFILE VEI2 RJM CDT CHECK DATE AND TIME UJP VEI5 SET EXIT CONDITIONS AND RETURN SPACE 4,10 ** COMMON DECKS. *CALL COMPCTI *CALL COMPSEI *CALL COMPSTI SPACE 4,10 ERRNG BFMS-* CODE OVERFLOWS INTO BUFFER SPACE 4,10 OVERFLOW ORDJ,EPFW CHECK FOR OVERFLOW TTL MSM/4DK - UEM RECOVERY ROUTINES. TITLE IDENT 4DK,/RMS/RUJX *COMMENT MSM - UEM RECOVERY ROUTINES. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. RUE SPACE 4,10 *** *4DK* RESTORES UEM FROM THE CHECKPOINT FILE. RUE SPACE 4,10 QUAL RMS ORG ORDK SPACE 4,10 RUJ SUBR ENTRY LDK MEFL CRD CM LDD CM+2 SET TRACK SHIFT COUNTS SHN -5 LPN 3 STD T1 RAM CUAB LDD T1 RAM CUAA RJM RUE RESTORE UEM LDN 0 STD CM LDC CPAS+MS2W CLEAR MESSAGE CWD CM LJM RMS1 RECOVER UEM CUA SPACE 4,10 ** CUA - CALCULATE UEM ADDRESS. * * ENTRY (T8) = TRACK. * (FS - FS+1) = UEM BASE ADDRESS. * * EXIT (A) = BITS 5 - 0 OF ABSOLUTE UEM ADDRESS. * (FS+2 - FS+3) = BITS 27 - 6 OF ABSOLUTE UEM ADDRESS * (TO BE USED IN *R* REGISTER). * (FS+4) = BITS 5 - 0 OF ABSOLUTE UEM ADDRESS * (TO BE USED IN *A* REGISTER). * * USES FS+2 - FS+4. CUA SUBR ENTRY/EXIT LDD T8 CALCULATE TRACK * 2020 SHN 6 * 100 ADD T8 * 101 STD FS+3 CUAA SHN -10 * SHN -10+EMSC STD FS+2 * 2020 HIGH BITS LDD FS+3 CUAB SHN 4 * SHN 4+EMSC LPC 7777 ADD FS+1 ADD UEM BASE ADDRESS STD FS+4 LOW LOW BITS FOR *A* REGISTER SHN -14 ADD FS RAD FS+2 HIGH BYTE ABSOLUTE UEM ADDRESS SHN 6 SHIFT RESULT FOR *R* REGISTER STD FS+3 SHN 6 STD FS+2 LDD FS+4 SHN 14 RAD FS+3 SHN -14 STD FS+4 SET LOW 6 BITS FOR *A* REGISTER UJN CUAX RETURN GCD SPACE 4,15 ** GCD - GET CHECKPOINT DEVICE. * * ENTRY (CD) = CURRENT EST ORDINAL. * (LO) = LAST MASS STORAGE ORDINAL + 1. * * EXIT (A) = 0 IF END OF MASS STORAGE DEVICES. * (T5) = (CD) = CHECKPOINT DEVICE ORDINAL. * (T6) = TRACK POINTER TO UEM PORTION OF CHECKPOINT * FILE. * (FN - FN+4) = EST ENTRY. * * USES CD, RI, RI+1, T5, T6, FN - FN+4. * * CALLS CRA, GSP. * * MACROS SETMS, SFA. GCD SUBR ENTRY/EXIT GCD1 AOD CD ADVANCE EST ORDINAL STD T5 LMD LO ZJN GCDX IF END OF DEVICES SFA EST,T5 READ EST ENTRY ADK EQDE CRD FN LDD FN SHN 21-13 PJN GCD1 IF NOT MASS STORAGE DEVICE SHN 13-2 PJN GCD1 IF NOT CHECKPOINT DEVICE LDD FN+4 SHN 3 ADN DULL CRD CM LDD CM+3 CHECKPOINT FILE POINTER STD P1 SHN 21-13 PJN GCD1 IF NOT A VALID FILE RJM GSP GET SECTOR POINTER ZJN GCD1 IF ERROR STD RI+1 SET RANDOM ADDRESS LDN 0 STD RI LDD P1 SET CHECKPOINT FILE TRACK STD T6 RJM CRA CONVERT RANDOM ADDRESS MJN GCD1 IF ADDRESS NOT ON TRT CHAIN SETMS READSTR LDN 1 INDICATE CHECKPOINT DEVICE FOUND LJM GCDX RETURN GSP SPACE 4,15 ** GSP - GET UEM SECTOR POINTER. * * THIS ROUTINE RETURNS THE UEM SECTOR OFFSET. * * ENTRY (FN - FN+4) = DEVICE EST ENTRY. * (T5) = DEVICE EST ORDINAL. * * EXIT (A) = 0, IF ERROR. * = SECTOR OFFSET IF NO ERROR. * * USES CM - CM+4. GSP SUBR ENTRY/EXIT LDD RA SHN 6 ADD T5 CRD CM SBD T5 ADD AL-RD+CM ADN DALL CRD CM LDD CM+4 UJN GSPX RETURN RUE SPACE 4,15 ** RUE - RECOVER UEM. * * USES T8, T9, FS+4, CM - CM+4. * * CALLS CUA, C2D, GCD, RNS. * * MACROS ENDMS. RUE5 ENDMS LDC RUEA *CHECKPOINT DEVICE NOT FOUND.* LJM /RMS/HNG ISSUE ERROR MESSAGE AND HANG RUE6 ENDMS LDK NJNI-ZJNI SET TO PROCESS ONLY UEM STM RMSH RUE SUBR ENTRY/EXIT LDK NOPE-1 SET EST ORDINAL STD CD LDK UEML PRESET UEM BASE ADDRESS CRD CM LDD CM SHN 21-2 STD FS SHN -6 SCN 7 STD FS+1 MSR CON PSNI *RNS* ERROR RETURN RUE1 RJM GCD GET CHECKPOINT DEVICE ZJN RUE5 IF END OF CHECKPOINT DEVICES RUE2 LDC BFMS READ LINKAGE SECTOR RJM /4DK/RNS ADI T3 ZJN RUE6 IF EOI REACHED LDM BFMS+2 SET TRACK NUMBER STD T8 LDM BFMS+3 SET SECTOR COUNT STD T9 LDD T8 SHN -6 RJM C2D CONVERT UPPER 2 DIGITS OF TRACK TO DISPLAY STM RUEB+12 LDD T8 RJM C2D CONVERT LOWER 2 DIGITS OF TRACK TO DISPLAY STM RUEB+13 LDC CPAS+MS2W ISSUE *RESTORING UEM TRACK XXXX* MESSAGE CWM RUEB,TR RJM CUA CALCULATE UEM ADDRESS LDM BFMS+1 ZJN RUE3 IF LINKAGE WORDS NOT IN THIS SECTOR STD T3 RAD FS+4 ADVANCE UEM ADDRESS FOR LATER SBD T3 ADC 400000 LRD FS+2 CWM BFMS+4,T3 WRITE LINKAGE WORDS TO UEM RUE3 LDC BFMS RJM /4DK/RNS LDD FS+4 ADC 400000 LRD FS+2 WRITE SECTOR TO UEM CWM BFMS+2,HN AOD FS+3 ADVANCE UEM ADDRESS SHN -14 RAD FS+2 SOD T9 DECREMENT SECTOR COUNT NJN RUE3 IF NOT FINISHED WITH TRACK LJM RUE2 IF FINISHED WITH TRACK RUEA DATA C*CHECKPOINT DEVICE NOT FOUND.* RUEB DATA C*RESTORING UEM TRACK XXXX.* SPACE 4,15 ** COMMON DECKS. *CALL COMPCRA QUAL 4DK MSR EQU /RMS/MSR MSR$ SET 1 SELECT ERROR PROCESSING IN *COMPRNS* *CALL COMPRNS QUAL * SPACE 4,10 ERRNG BFMS-* DATA BUFFER OVERLAYS CODE SPACE 4,10 OVERFLOW ORDK,EPFW CHECK FOR OVERFLOW SPACE 4 TTL MSM - MASS STORAGE MANAGER. END