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