IDENT IMS,/IMS/IMS
PERIPH
BASE MIXED
SST
*COMMENT IMS - INITIALIZE MASS STORAGE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TITLE IMS - INITIALIZE MASS STORAGE.
SPACE 4
*** IMS - INITIALIZE MASS STORAGE.
* S. L. BETH 73/01/31.
* T. H. MACFARLAND. 74/04/25.
* P. D. HAAS. 87/03/31.
SPACE 4
*** IMS MAY BE CALLED TO DO THE FOLLOWING
*
*
* FUNCTION 1 INITIALIZE PERMANENT FILES.
* RELEASES ALL PF TRACKS AND REALOCATES
* THE CATALOG, PERMITS AND DATA TRACKS.
*
* FUNCTION 2 EDIT DIRECT ACCESS FILES.
* RELEASES DIRECT ACCESS FILES WHICH
* HAVE CATALOGS ON THE SPECIFIED DEVICE.
*
* FUNCTION 3 SET/CLEAR FLAWS ON THE EQUIPMENT.
* PROCESS FLAW LIST AND ENTER IN TRT.
*
* FUNCTION 4 CHECK SHARED DEVICE STATUS.
* CHECK IF SHARED DEVICE IS UNLOADED
* IN OTHER MACHINES.
*
* FUNCTION 5 INITIALIZE LOCAL AREAS.
* RELEASE SPACE WHICH IS PRESERVED BY
* INACTIVE LOCAL AREAS.
*
* FUNCTION 6 ALTER MST DATA.
* ENTER NEW DEVICE CHARACTERISTICS IN MST.
*
* FUNCTION 7 CLEAR INITIALIZE REQUESTS.
* CLEARS ALL INITIALIZE REQUESTS ON
* THE SPECIFIED DEVICE.
*
* FUNCTION 10 INITIALIZE INACTIVE DAYFILES.
* RELEASE SPACE ON SPECIFIED INACTIVE
* DAYFILE.
*
* FUNCTION 11 CLEAR CMS INTERLOCK.
* CLEAR DATI INTERLOCK AND BYTE 2 OF MMFL.
*
* FUNCTION 12 SET/CLEAR DEVICE INTERLOCK ON AN
* INDEPENDENT SHARED DEVICE.
*
* (THE CALLING JOB MUST HAVE SYSTEM PERMISSION)
*
*** CALL FORMATS
*
*
* INITIALIZE 18/IMS,6/20,18/100,18/EQ
*
* EDIT DA FILES 18/IMS,6/20,18/200,18/PARAM
*
* PARAM 12/MASK,12/EQ,36/0
*
* SET FLAWS 18/IMS,6/20,18/300,18/PARAM
*
* PARAM 12/TYPE,12/0,12/EQ,12/0,12/LOGICAL TRACK
*
* TYPE 0 = END TABLE
* 1 = SET FLAW
* 2 = CLEAR FLAW
*
* CHECK STATUS 18/IMS,6/20,18/400,18/ADDRESS
*
* ADDRESS 12/EQ,48/0
*
* INITIALIZE LOCAL 18/IMS,6/20,18/500,18/EQUIPMENT
*
* UPDATE MST 18/IMS,6/20,18/600,18/LIST
*
* CLEAR INI REQ 18/IMS,6/20,18/700,18/EQ
*
** INITIALIZE DAYFILES 18/IMS,6/20,18/100N,18/EQ
*
* N = 0 INITIALIZE SYSTEM DAYFILE.
* = 1 INITIALIZE ACCOUNT FILE.
* = 2 INITIALIZE ERRLOG FILE.
* = 3 INITIALIZE MAINTENANCE LOG FILE.
*
* CLEAR INTERLOCK 18/IMS,6/20,18/1100,18/0
*
* INTERLOCK DEVICE 18/IMS,6/20,18/1200,18/ADDRESS
* ADDRESS 12/EQ,47/0,1/F
SPACE 4
*** ENTRY CONDITIONS.
*
* (IR+2) = FUNCTION CODE.
* (IR+3) = PARAMETER ADDRESS IF REQUIRED
* (IR+4) = PARAMETER ADDRESS IF REQUIRED
SPACE 4
*** DAYFILE MESSAGES.
*
* * EQXXX, FILE ACTIVE - FILENAME.*
*
* * EQXXX, FILE BUSY - FILENAME.*
*
* * EQXXX, FLAWING INCOMPLETE.*
*
* * EQXXX, INITIALIZED - FILENAME.*
*
* * EQXXX, LABEL READ ERROR.*
*
* * EQXXX, LOCAL AREAS INITIALIZED.*
*
* * EQXXX, LOCAL AREA SECTOR RESET.*
*
* * EQXXX, NO INACTIVE DAYFILES FOUND.*
*
* * EQXXX, PF INITIALIZE COMPLETE.*
*
* * EQXXX, PROTECTED QUEUES IGNORED.*
*
* * EQXXX, TKYYYY - TRACK FLAWED BY IMS.
*
* * EQXXX, YY FLAWS NOT PROCESSED. (WITH LIST).*
*
* * EQXXX, YY TRACKS FLAWED.*
*
* * ERROR ON LINK DEVICE.*
*
* * INCORRECT IMS REQUEST.*
*
* * IMS ABORTED.*
*
* * LABEL TRACK CONFLICT.*
SPACE 4
*** ACCOUNT FILE MESSAGES.
*
* *ADDI, XXX, FFFFFFF, DD.* = EST ORDINAL XXX WITH FAMILY NAME
* FFFFFFF AND DEVICE NUMBER DD HAS BEEN INITIALIZED.
*
* *ADPI, XXX, PPPPPPP, UUUUUUU.* = EST ORDINAL XXX WITH PACKNAME
* PPPPPPP HAS BEEN INITIALIZED. IF PRESENT, UUUUUUU INDICATES
* THAT THE PACK IS A PRIVATE PACK BELONGING TO THAT USER.
SPACE 4
*** ERRLOG MESSAGES.
*
* * EQXXX, LOCAL AREA SECTOR ERROR.*
*
* * EQXXX, TKYYYY, SYSTEM SECTOR ERROR.*
*
* * EQXXX, TKYYYY - TRACK FLAWED BY IMS.
*
* * EQXXX, TKYYYY - VERIFICATION ERRORS.
*
* * EQXXX, YY TRACKS FLAWED.*
*
* * EQXXX, YY FLAWS NOT PROCESSED. (WITH LIST).*
*
* * IMS ABORTED.*
SPACE 4
*** CONTROL POINT MESSAGES.
* * EQXXX, BUSY ON MID YY.* = SHARED EST ORDINAL XXX IS NOT
* UNLOADED ON MAINFRAME WITH MACHINE ID YY.
*
* * EQXXX, INTERLOCKED BY MID YY.* = INDEPENDENT SHARED EST
* ORDINAL XXX IS INTERLOCKED FOR INITIALIZATION BY THE MAINFRAME
* WITH MACHINE ID YY.
*
* *MSI ABORT.* = *MSI* ABORTED. IF THIS OCCURRED DURING THE
* DEADSTART SEQUENCING JOB, JOB SCHEDULING WILL REMAIN DISABLED.
*
* *READING TRACK-XXXX* = *IMS* IS READING THE SPECIFIED TRACK.
*
* *WAITING - RECOVERY INTERLOCK.* = *IMS* IS WAITING FOR THE
* DAT INTERLOCK TO BECOME FREE, TO ENSURE THAT *CMS* IS NOT
* IN ANY OTHER MACHINE IN THE MMF COMPLEX.
SPACE 4
** ROUTINES USED.
*
* 0PI - PRESET DRIVER TO READ/WRITE DEADSTART SECTOR.
* 0TI - SET TRACK FLAWS IN TRT.
* 1CK - CHECKPOINT DEVICE.
SPACE 4
*CALL COMPMAC
*CALL COMSCPS
*CALL COMSDSL
QUAL EVENT
*CALL COMSEVT
QUAL *
*CALL COMSHIO
*CALL COMSIOQ
*CALL COMSLSD
*CALL COMSMMF
*CALL COMSMSC
*CALL COMSMSI
*CALL COMSMSP
*CALL COMSMST
*CALL COMSPFM
*CALL COMSPIM
*CALL COMSSSD
*CALL COMSWEI
SPACE 4
**** DIRECT LOCATION ASSIGNMENTS.
T9 EQU 17 SCRATCH CELL
CN EQU 20 - 24 CM WORD BUFFER (5 LOCATIONS)
TI EQU 25 TEMP INDEX
LD EQU 26 EST ORDINAL OF LINK DEVICE
MI EQU 27 MACHINE INDEX
ES EQU 30 - 34 EST ENTRY (5 LOCATIONS)
LT EQU 35 LABEL TRACK
TA EQU 36 TEMP COUNTER
TL EQU 37 TRT LENGTH
FN EQU 40 - 44 CM WORD BUFFER (5 WORDS).
DI EQU 45 DAT INDEX
BY EQU 46 BYTE COUNT
DE EQU 47 DAT ENTRY COUNT
AI EQU 57 ALGORITHM INDEX
WB EQU 60 - 64 CM WORD BUFFER (5 LOCATIONS)
PF EQU 65 PRESERVED FILE TRACK INTERLOCK STATUS
CA EQU 66 - 67 CENTRAL BUFFER (2 LOCATIONS)
****
SPACE 4,10
* ASSEMBLY CONSTANTS.
BUF EQU BFMS-502 ALTERNATE SECTOR BUFFER
FPPA EQU BUF+5 FLAW PROCESSOR PARAMETER ADDRESS
FPLA EQU FPPA+1 FLAW PROCESSOR LOAD ADDRESS
VERC EQU 2 VERIFICATION ERROR RETRY COUNT
SPACE 4
* EQUATES FOR FUNCTION 6 PARAMETER BUFFER
PMES EQU 5*0 EST ENTRY
PMPF EQU 5*1 PFGL WORD OF MST
PMPU EQU 5*2 PUGL WORD OF MST
PMMD EQU 5*3 MDGL WORD OF MST
PMNC EQU 5*4+0 NUMBER OF CATALOG TRACKS
PMEQ EQU 5*4+1 EST ORDINAL
PMAI EQU 5*4+2 ALGORITHM INDEX
PMCI EQU 5*4+3 CLEAR IN USE AS CHAINED DEVICE
PMNE EQU 5*4+4 NEXT EST ORDINAL IN CHAIN
PMAL EQU 5*5 EQUIPMENT ALLOCATION *DDLL*
PMRP EQU 5*6 REPLY WORD
PMMSL EQU 7 LENGTH OF PARAMETER BLOCK
SPACE 4
* FUNCTION EQUATES FOR SUBROUTINE *UEC*.
UPGA EQU 1 UPDATE GLOBAL AREA
UPDA EQU 2 UPDATE DAT INFORMATION
RDDA EQU 4 READ DAT INFORMATION
TITLE MACRO DEFINITIONS.
ENTRY SPACE 4,10
** ENTRY - DEFINE OVERLAY ENTRY POINT.
*
* NAME ENTRY
* NAME = NAME OF ENTRY ADDRESS.
PURGMAC ENTRY
MACRO ENTRY,NAME
MACREF ENTRY
QUAL
IF MIC,.M
NAME EQU *+1R".M"*10000B
ELSE 1
NAME EQU *
QUAL *
ENDM
FCN SPACE 4,10
** FCN - DEFINE FUNCTION PROCESSOR.
*
*TBLN FCN
* FCN CODE,NAME
*
* ENTRY *TBLN* = TABLE NAME (FIRST ENTRY ONLY).
* *CODE* = FUNCTION CODE.
* *NAME* = FUNCTION PROCESSING ROUTINE NAME.
MACRO FCN,T,C,N
IFC EQ,*N**
T INDEX C*2
ELSE 2
INDEX C*2,N-N/10000B*10000B
CON N/10000B
ENDM
OVERLAY SPACE 4,10
** OVERLAY - DEFINE SECONDARY OVERLAY(S).
*
* OVERLAY (TEXT),PRS
* ENTRY *TEXT* = TEXT OF SUBTITLE.
* *PRS* = NAME OF OPTIONAL PRESET ROUTINE.
.N SET 0
OVLB MICRO 1,, 4D OVERLAY NAME
PURGMAC OVERLAY
OVERLAY MACRO TEXT,PRS
MACREF OVERLAY
QUAL
.N SET .N+1
.M MICRO .N,1, 0123456789
.O MICRO 1,3, "OVLB"".M"
QUAL IMS
TTL IMS/".O" - TEXT
TITLE
IDENT ".O",OVLA TEXT
*COMMENT IMS - TEXT
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
ORG OVLA
OV".M"_X LJM * ENTRY/EXIT
IFC NE,*PRS**,1
RJM PRS
UJN OV".M"_X OVERLAY EXIT ADDRESS
ENDM
TBLM 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
TITLE MAIN PROGRAM.
IMS SPACE 4,10
** IMS - MAIN PROGRAM.
QUAL IMS
ORG PPFW
IMS RJM PRS PRESET PROGRAM
LDM TFCN+1,T2
ZJN IMS1 IF PROCESSOR RESIDENT
LMC 2L"OVLB"
RJM EXR LOAD OVERLAY
IMS1 LJM * PROCESS FUNCTION
IMSA EQU *-1
TITLE RESIDENT SUBROUTINES.
CLI SPACE 4,10
** CLI - CLEAR INTERLOCKS.
*
* EXIT (A) = 0.
*
* USES T5.
*
* MACROS CMSTF.
CLI SUBR ENTRY/EXIT
LDC 0
CLIA EQU *-1
ZJN CLIX IF INTERLOCK NOT SET
STD T5
CMSTF LUAI CLEAR LOCAL UTILITY INTERLOCK
* LDN 0
UJN CLIX RETURN
RDS SPACE 4,10
** RDS - READ SECTOR.
*
* ENTRY (A) = BUFFER ADDRESS.
* (T5 - T7) = MASS STORAGE DRIVER PARAMETERS.
*
* EXIT (A) .LT. 0 IF MEDIA ERROR.
*
* ERROR TO *ABT1* IF NON-MEDIA ERROR.
*
* CALLS RDS.
RDS1 LDC 1S17 RETURN WITH ERROR STATUS
RDSA EQU *-1
RDS SUBR ENTRY/EXIT
RJM //RDS
PJN RDSX IF NO ERROR
STM RDSA
LPN 77
LMN PARE
ZJN RDS1 IF MEDIA ERROR
UJN ABT2 ABORT
WDS SPACE 4,15
** WDS - WRITE SECTOR.
*
* ENTRY (A) = BUFFER ADDRESS.
* (T5 - T7) = MASS STORAGE DRIVER PARAMETERS.
*
* EXIT (A) .LT. 0 IF MEDIA ERROR.
* IF RECOVERED ERROR ON PREVIOUS SECTOR.
*
* ERROR TO *ABT1* IF NON-MEDIA ERROR.
*
* CALLS WDS.
WDS1 LDC 1S17 RETURN WITH ERROR STATUS
WDSA EQU *-1
WDS SUBR ENTRY/EXIT
RJM //WDS
PJN WDSX IF NO ERROR
STM WDSA
SHN 21-11
MJN WDS1 IF ERROR ON PREVIOUS SECTOR RECOVERED
SHN 12
LPN 77
LMN PARE
ZJN WDS1 IF MEDIA ERROR
* UJN ABT2 ABORT
ABT SPACE 4,10
** ABT - ABORT OPERATION.
*
* ENTRY (A) = ERROR MESSAGE ADDRESS.
*
* CALLS CLI, DFM.
*
* MACROS MONITOR.
ABT2 CON 0 PASS INSTRUCTION
ABTB EQU ABT2
* UJN ABT1 (DEADSTART SEQUENCING JOB)
ABT3 LDC MESM * IMS ABORTED.*
ABT LMC ERLN ISSUE MESSAGE TO ERRLOG
RJM DFM
RJM CLI CLEAR INTERLOCKS
MONITOR ABTM
ABTA LJM PPR EXIT TO PP RESIDENT
* LJM * (DEADSTART SEQUENCING)
ABT1 LDD ES CHECK DEVICE TYPE
SHN 21-10
PJN ABT3 IF NON-REMOVABLE
LDN PCLR
* UJN MSI CLEAR INITIALIZE REQUEST
MSI SPACE 4,15
** MSI - ISSUE *MSI* REQUEST.
*
* ENTRY (A) = REQUEST CODE.
*
* EXIT TO DPP.
*
* USES CM - CM+5.
MSI STD CM+5 SET FUNCTION CODE
LDN ZERL
CRD CM
LDD RA STORE *MSI* REQUEST
SHN 6
ADN PREQ
CWD CM+1
UJN DPP DROP
DPP2 RJM IPF INITIALIZE PACK FLAWS
DPP1 SMSTF LCKP SET EQUIPMENT CHECKPOINT
DPP RJM CLI CLEAR INTERLOCKS
MONITOR DPPM
LJM PPR EXIT TO PP RESIDENT
CKC SPACE 4,10
** CKC - CALL *1CK* TO PROCESS CHECKPOINT.
*
* ENTRY (A) = *1CK* FUNCTION CODE.
* (T5) = EST ORDINAL TO CHECKPOINT.
*
* EXIT TO *1CK*.
*
* CALLS CLI.
*
* MACROS EXECUTE.
CKC STM CKCA+2
RJM CLI CLEAR INTERLOCKS
LDD CP
SHN -7 SET CONTROL POINT
RAM CKCA+1
LDD IA SET UP CALL TO 1CK
CWM CKCA,ON
EXECUTE 1CK,=
LJM PPR RETURN TO PP RESIDENT
CKCA VFD 18/3L1CK,6/40,36/0
EQNO EQU CKCA+3
CAT SPACE 4,10
** CAT - CALCULATE ADDRESS OF TRT.
*
* ENTRY (A) = ADDRESS OF *TRLL* IN MST.
*
* EXIT (A) = ADDRESS OF TRT.
*
* USES CM - CM+4.
CAT SUBR ENTRY/EXIT
CRD CM GET FWA OF TRT
LDD CM+3
LPN 77
SHN 14
LMD CM+4
UJN CATX RETURN
CCS SPACE 4,10
CDE SPACE 4,10
** CDE - COMPARE DAT ENTRY.
*
* ENTRY (T2) = INDEX TO DAT SECTOR.
* (FN - FN+4) = CURRENT DEVICE DESCRIPTION.
*
* EXIT (A) = 0 IF DUPLICATE ENTRY.
CDE SUBR ENTRY/EXIT
LDD FN COMPARE ENTRY
LMM BFMS+2,T2
NJN CDEX IF NOT DUPLICATE
LDD FN+1
LMM BFMS+2+1,T2
NJN CDEX IF NOT DUPLICATE
LDD FN+2
LMM BFMS+2+2,T2
NJN CDEX IF NOT DUPLICATE
LDD FN+3
LMM BFMS+2+3,T2
UJN CDEX RETURN
CQF SPACE 4,20
** CQF - CHECK FOR QUEUED FILES.
*
* ENTRY (T5) = EQUIPMENT.
* (CN - CN+4) = TRT WORD.
* (TL) = TRT ORDINAL.
* (BY) = TRT BYTE NUMBER.
* DRIVER LOADED.
*
* EXIT (A) = 0 IF QUEUED FILE, DAYFILE, MRT, DAT OR
* USER EXTENDED MEMORY TRACK.
* (T6) = TRACK NUMBER.
*
* USES T1, T3, T6.
*
* CALLS CST, IMG, RSS, STM.
*
* MACROS ENDMS.
CQF5 LDN 1 SET NOT QUEUED FILE
CQF SUBR ENTRY/EXIT
LDD TL WORD COUNT
SHN 2
LMD BY BYTE COUNT
LMC 4000
STD T6
RJM IMG ISSUE READING TRACK MESSAGE
RJM CST CHECK FOR SPECIAL TRACKS
ZJN CQF5 IF INDIRECT CHAIN OR PERMIT CHAIN
MJN CQF2 IF IQFT TRACK OR DAT TRACK
LDN 0
RJM RSS READ SYSTEM SECTOR
NJN CQF4 IF ERROR IN SYSTEM SECTOR
ENDMS
LDM FNSS+4
SHN -6
STD T1 FILE TYPE
LMN LIFT CHECK FOR DAYFILES OR MRT
ZJN CQF2 IF DAYFILE TRACK
LDN RDATL
STD T3 MAXIMUM TYPES
CQF1 SOD T3
MJN CQF3 IF NOT QUEUED FILE
LDM RDAT,T3
LMD T1
NJN CQF1 IF NOT QUEUED
AOM CQFA
CQF2 LDN 0 INDICATE QUEUED FILE, DAYFILE, MRT, OR ECS
CQF3 LJM CQFX RETURN
CQF4 LDC MESN ISSUE SYSTEM SECTOR ERROR MESSAGE
RJM STM
UJN CQF2 RETURN
CQFA CON 0 QUEUE FILE COUNT
FILEREC GENERATE PROTECTED TYPE TABLE (RDAT)
CST SPACE 4,10
** CST - CHECK SPECIAL TRACKS.
*
* ENTRY (T6) = TRACK.
* (ES - ES+4) = EST ENTRY.
* (LD) = LINK DEVICE EST ORDINAL.
*
* EXIT (A) = 0 IF MATCH ON SPECIAL PF TRACKS.
* (A) .LT. 0 IF *IQFT*, DAT OR EXTENDED MEMORY TRACK.
CST SUBR ENTRY/EXIT
LDD ES+4 CHECK FOR PRESET NEEDED
LMC 7777
CSTB EQU *-1
ZJN CST1 IF NO PRESET NEEDED
LDD ES+4
STM CSTB
SHN 3
ADN ACGL
CRM CSTA+4,ON
ADN ALGL-ACGL-1
CRM CSTA,ON
CST1 LDD T6 CHECK FOR IAF TRACK
LMM CSTA
ZJN CSTX IF IAF TRACK
LDD T6
LMM CSTA+1
ZJN CSTX IF LABEL TRACK
LDD T6
LMM CSTA+2
ZJN CSTX IF PERMITS TRACK
LDD T6
LMM CSTA+4+3
ZJN CST3 IF MATCH ON IQFT FILE
LDD T6 CHECK FOR USER EXTENDED MEMORY TRACKS
LMM CSTA+4+1
ZJN CST3 IF USER EXTENDED MEMORY CHAIN
LDD T6 CHECK FOR DAT TRACK
LMM CSTA+4
NJN CST2 IF NO MATCH ON DAT TRACK
LDD LD CHECK FOR LINK DEVICE
ZJN CST2 IF NO LINK DEVICE
LMD T5
ZJN CST3 IF DAT TRACK
CST2 LDN 2 INDICATE SPECIAL TRACKS NOT FOUND
CST3 SBN 1 INDICATE *IQFT*, DAT OR ECS TRACK FOUND
LJM CSTX RETURN
CSTA BSSZ 5+4
CTB SPACE 4,15
** CTB - CHECK TRACK BITS.
*
* ENTRY (A) = TRACK NUMBER.
* (ES+4) = MST POINTER.
*
* EXIT (A) = (CM+4) = RESERVATION FLAG IN BIT 3.
* = PRESERVED FILE FLAG IN BIT 13.
* (T1) = TRT WORD INDEX.
* (T2) = TRT WORD NUMBER.
* (T6) = TRACK NUMBER.
*
* USES CM - CM+4.
*
* CALLS CAT.
CTB SUBR ENTRY/EXIT
STD T6
LPC 3777 SET TRT WORD NUMBER
SHN 21-1
STD T2
SHN 1-21 SET TRT WORD INDEX
STD T1
LMC SHNI+0
STM CTBA
LDD ES+4 READ TRT WORD
SHN 3
ADN TRLL
RJM CAT CALCULATE FWA OF TRT
ADD T2
CRD CM
LDD CM+4 SET TRACK BITS
CTBA SHN 0
LPC 4010
STD CM+4
UJN CTBX RETURN
FBT SPACE 4,10
** FBT - FLAW BLOCK OF TRACKS IN TRT.
*
* ENTRY (T3) = STARTING TRACK NUMBER (TRACK BIT NOT SET).
* (TL) = ENDING TRACK NUMBER + 1 (TRACK BIT NOT SET).
* (T5) = EST ORDINAL.
* (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
*
* EXIT (A) = 0 IF TRACK FLAWED.
*
* USES T1, CM - CM+4.
*
* CALLS CAT.
*
* MACROS MONITOR.
FBT SUBR ENTRY/EXIT
FBT1 LDD T3 UNPACK TRACK
SHN 21-1 SET TRT WORD INDEX
STD T0
SHN 1-21 SET BYTE INDEX
STD T1
LDD ES+4 READ TRT WORD
SHN 3
ADN TRLL
RJM CAT CALCULATE FWA OF TRT
ADD T0
CRD CM
LDM CM,T1 CHECK TRACK
LMC 3777
ZJN FBT2 IF TRACK ALREADY FLAWED
LDD T5 FLAW TRACK IN TRT
STD CM+1
LDD T3
STD CM+2
LDN STFS
STD CM+3
MONITOR STBM
FBT2 AOD T3 ADVANCE TRACK NUMBER
LMD TL
NJN FBT1 IF NOT END OF TRACKS TO FLAW
UJN FBTX RETURN
GDS SPACE 4,15
** GDS - GET DAT SECTOR.
*
* ENTRY (ES - ES+4) = EST ENTRY.
* (LD) = LINK DEVICE EST ORDINAL.
*
* EXIT DAT SECTOR AT BFMS.
* (TI) = INDEX TO DAT ENTRY.
* (A) = 0 IF DEVICE NOT DEFINED IN DAT.
*
* USES TI, T5 - T7, CM - CM+4, FN - FN+4.
*
* CALLS ABT, RDS.
*
* MACROS ENDMS, SETMS.
GDS SUBR ENTRY/EXIT
LDD LD SET EQUIPMENT
STD T5
SETMS IO
LDD CM+4 GET DAT POINTERS
SHN 3
ADN ALGL
CRD CM
LDD ES+4 READ DAT INDEX
SHN 3
ADN MDGL
CRD FN
LDD CM+4 SET DAT TRACK
STD T6
LDM EQNO
LMD LD
ZJN GDS1 IF LINK DEVICE
LDD FN SET DAT SECTOR
LPC 377
ZJN GDSX IF NO DAT INDEX
SHN 21-4
GDS1 STD T7
SHN -14 SET DAT SECTOR INDEX
STD TI
SHN 2
RAD TI INDEX*5
LDC BFMS READ SECTOR
RJM RDS
PJN GDS3 IF NO ERRORS
GDS2 LDC GDSA
LJM ABT ABORT *IMS*
GDS3 ENDMS
LDN 1
LJM GDSX RETURN
GDSA DATA C* ERROR ON LINK DEVICE.*
GLA SPACE 4,15
** GLA - GET LOCAL AREA SECTOR.
*
* ENTRY (IR+4) = EST ORDINAL.
*
* EXIT (A) = RETURN FROM *COMPRLA*.
* LOCAL UTILITY INTERLOCK SET.
*
* EREXIT TO *ABT* IF READ ERRORS.
*
* CALLS RLA, SLI, SME.
GLA1 STM BFMS+1 CLEAR SECTOR WORD COUNT
GLA SUBR ENTRY/EXIT
LDD IR+4 SET MASS STORAGE EQUIPMENT
RJM SME
RJM SLI SET LOCAL UTILITY INTERLOCK
RJM RLA READ SECTOR OF LOCAL AREAS
PJN GLAX IF NO READ ERRORS
LDM BFMS
ZJN GLA1 IF SECTOR NOT REFORMATTED
LDC GLAA * EQXXX, LOCAL AREA SECTOR ERROR.*
LJM ABT ABORT
GLAA DATA C* EQXXX, LOCAL AREA SECTOR ERROR.*
IMG SPACE 4,10
** IMG - ISSUE *READING* MESSAGE.
*
* ENTRY (T6) = TRACK NUMBER TO ISSUE.
*
* EXIT MESSAGE WRITTEN TO *MS2W*.
*
* CALLS C2D.
IMG SUBR
LDD T6
RJM C2D CONVERT LOWER
STM IMGA+10
LDD T6
SHN -6
RJM C2D CONVERT UPPER
STM IMGA+7
LDD CP STORE CONTROL POINT MESSAGE
ADN MS2W
CWM IMGA,TR
UJN IMGX RETURN
IMGA DATA C*READING TRACK-XXXX*
IPF SPACE 4,10
** IPF - INITIALIZE PACK FLAWS.
*
* ENTRY (T5) = EST ORDINAL.
* (ES - ES+4) = EST ENTRY.
*
* USES AI, T2, CM - CM+4, FN - FN+4.
*
* CALLS DFM, EXR, RCS, SDR, *0TI*, *0TJ*.
*
* MACROS EXECUTE.
IPF3 LDD ES+4
SHN 3
ADN DDLL
CRD CM
LDD CM SET NUMBER OF UNITS
LPN 7
STD T2
LDN PRFM SET TRACK FLAW REQUEST
RJM SDR
IPF SUBR ENTRY/EXIT
IPFA LDN 0
NJN IPFX IF PACK FLAWS ALREADY PROCESSED
LDD ES
SHN 21-7
PJN IPFX IF NOT AN LDAM DEVICE
AOM IPFA
LDD ES+1 CHECK CONCURRENT CHANNEL FLAGS
SHN 21-5
PJN IPF1 IF NOT A CONCURRENT CHANNEL
LDD ES+2
ZJN IPF3 IF SECOND CHANNEL NOT DEFINED
SHN 21-5
MJN IPF3 IF BOTH CHANNELS CONCURRENT
IPF1 LDD ES+4 FETCH THE ALGORITHM INDEX
SHN 3
ADN DILL
CRD FN
LDD T5 SET EQUIPMENT PARAMETER
STM FPPA
* EXECUTE FLAW PROCESSOR.
LDD FN+4 SET ALGORITHM INDEX
LPN 77
STD AI
EXECUTE 0TI,FPLA EXECUTE FLAW PROCESSOR
ZJN IPF2 IF FLAWING COMPLETE
LDC MESL * EQXXX, FLAWING INCOMPLETE.*
RJM DFM
IPF2 RJM RCS RESERVE *CTI* SPACE
LJM IPFX RETURN
LDA SPACE 4,10
** LDA - LOAD CM ADDRESS.
*
* ENTRY (IR+3 - IR+4) = RELATIVE ADDRESS.
*
* EXIT (A) = ABSOLUTE ADDRESS.
LDA SUBR ENTRY/EXIT
LDD IR+3
LPN 77
SHN 6
ADD RA
SHN 6
ADD IR+4
UJN LDAX RETURN
RCS SPACE 4,15
** RCS - RESERVE *CTI* SPACE.
*
* ENTRY (T5) = EST ORDINAL.
* (AI) = ALGORITHM INDEX
* (ES - ES+4) = EST ENTRY.
*
* EXIT *CTI* SPACE FLAWED IN TRT.
*
* USES FL, TL, T3, T9, CM - CM+4, FN - FN+4.
*
* CALLS CTB, FBT, RDS, WDS, *0PI*.
*
* MACROS CMSTF, ENDMS, EXECUTE, MONITOR, SMSTF.
RCS SUBR ENTRY/EXIT
LDD T5 SET PARAMETER WORD
LMC 4000
STM FPPA
EXECUTE 0PI,FPLA READ DEADSTART SECTOR
NJN RCS0 IF NOT A VALID DEADSTART SECTOR
STM RCSA PRESET FOR *CTI* PRESENT
ENDMS
LDM BFMS+MSLP
NJN RCS1 IF *MSL* INSTALLED
LDM BFMS+CDAP
NJN RCS1 IF COMMON DISK AREA INSTALLED
LDM BFMS+CTIP
NJN RCS1 IF *CTI* INSTALLED
RCS0 LDD AI
LMN AIDR
NJN RCSX IF NOT CDSS II
LDC 840D FIRST CYLINDER OF AREA TO BE FLAWED
STM RCSA INDICATE *CTI* NOT PRESENT
RCS1 SHN 1 CONVERT CYLINDER TO LOGICAL TRACK
STD T3
LDD ES+4 GET DEVICE LENGTH FROM MST
SHN 3
ADK TDGL
CRD TL
ERRNZ TL+1-FN READ DESTROYS DIRECT CELLS
ADN ACGL-TDGL FETCH DEADSTART FILE STATUS
CRD FN
LDD AI
LMN AIDA
NJN RCS2 IF NOT 33502
LDD T3 COMPLETE CYLINDER TO TRACK CONVERSION
SHN -1
ADC NTDA/2
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 TL
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 COMPLETE CYLINDER CONVERSION
RAD T3
RCS4 LDD T3
SBD TL
PJN RCS7 IF *CTI* BEYOND LOGICAL END OF DEVICE
RCS5 RJM FBT FLAW BLOCK OF TRACKS
RCS7 LDC ** ZERO IF *CTI* PRESENT
RCSA EQU *-1
NJP RCS9 IF *CTI* NOT PRESENT
SMSTF GCTI SET *CTI* PRESENT FLAG
LDD IR+2 CHECK FOR FLAW FUNCTION
LMN 3
ZJN RCS8 IF X.FLAW REQUEST
CMSTF GDSF
LDN ZERL CLEAR DEADSTART FILE INDICATOR
CRM BFMS+OSBP,ON
LDC BFMS+WLSF REWRITE DEADSTART SECTOR
RJM WDS
LDD FN
LPC MGDSF
ZJN RCS8 IF NO DEADSTART FILE
LDM BFMS+OSBP+5
RJM CTB
ZJN RCS8 IF TRACK CHAIN RELEASED
LDD T5
STD CM+1
LDD T6 DROP TRACK CHAIN
STD CM+2
MONITOR DTKM
RCS8 ENDMS RELEASE CHANNEL
RCS9 LJM RCSX RETURN
RDT SPACE 4,10
*** RDT - READ DIT TO BUFFER.
*
* ENTRY (A) = BUFFER ADDRESS.
* (T5) = EST ORDINAL OF DEVICE.
* (ES - ES+4) = EST ENTRY.
*
* ERROR TO *ABT2* IF ERROR READING LABEL (DIT) SECTOR.
*
* USES T1, T6, T7, CM - CM+4.
*
* CALLS RDS, SDL.
*
* MACROS ENDMS, MONITOR, SETMS.
RDT SUBR ENTRY/EXIT
STM RDTB SAVE BUFFER ADDRESS
LDD ES+4 SET LABEL TRACK
SHN 3
ADN ALGL
CRD CM
LDD CM+1
STD T6
LDN 0
STD T7
SETMS IO,(DF,NS)
LDC BFMS READ LABEL
RJM RDS
PJN RDT1 IF NO ERROR
* LDC MESM
LJM ABT2 ABORT
RDT1 ENDMS
LDN MISD
STD T1
RJM SDL
CWM DISS,T1
SBN MISD
CRM **,T1 READ DIT TO BUFFER
RDTB EQU *-1
LJM RDTX RETURN
SDL SPACE 4,10
** SDL - SET DIT LOCATION.
*
* ENTRY (ES - ES+4) = EST ENTRY.
*
* EXIT (A) = DIT ADDRESS.
*
* USES T2, T3, CM - CM+4.
*
* CALLS CAT.
SDL SUBR ENTRY/EXIT
LDD ES+4
SHN 3
ADK TDGL
CRD CM
LDD CM+2 SET MRT LENGTH
STD T2
ADN 7
SHN -3
STD T3
LDD ES+4
SHN 3
ADN TRLL
RJM CAT CALCULATE FWA OF TRT
ADD T2 ADD TRT LENGTH
ADD T3 ADD MRT LENGTH
UJN SDLX RETURN
SDT SPACE 4,10
** SDT - SEARCH DAT TABLES.
*
* ENTRY DAT INTERLOCK SET.
* (ES - ES+4) = EST ENTRY.
* (CN - CN+4) = SDGL WORD.
* (LD) = LINK DEVICE.
* (DI) = DAT INDEX.
* (DE) = DAT ENTRY COUNT.
*
* EXIT (A) = 0 IF DUPLICATE ENTRY.
*
* USES T1 - T7, CM - CM+4, FN - FN+4, DC.
*
* CALLS CDE, RDS.
*
* MACROS ENDMS, SETMS.
SDT SUBR ENTRY/EXIT
LDD ES+4 READ DEVICE DESCRIPTION
SHN 3
ADN PFGL
CRD FN
LDD FN+4 CHECK IF 1 OF N
LPN 70
NJN SDTX IF NOT 1 OF N
STD T7
LDD LD SET LINK DEVICE
STD T5
SETMS IO
LDD CM+4 GET DAT POINTER
SHN 3
ADN ALGL
CRD CM
LDD CM+4 SET DAT TRACK
STD T6
SDT1 LDC BFMS READ DAT SECTOR
RJM RDS
MJN SDT6 IF READ ERROR
ENDMS
* LDN 0
STD T1
STD T2
SDT3 RJM CDE COMPARE ENTRIES
ZJN SDT7 IF DUPLICATE ENTRY
SDT4 AOM SDTA BUMP DAT INDEX
LDN 5*2 BUMP SEARCH INDEX
RAD T2
SOD DE DECREMENT ENTRY COUNT
ZJN SDT8 IF END OF ENTRIES
LDN 2 BUMP WORD COUNT
RAD T1
LMD HN
NJN SDT3 IF NOT END OF SECTOR
AOD T7 BUMP SECTOR COUNT
UJN SDT1 PROCESS NEXT SECTOR
SDT6 LJM GDS2 ABORT
SDT7 LDD DI CHECK IF THIS DEVICE
LMC **
SDTA EQU *-1
ZJN SDT4 IF THIS DEVICE
AOM BUF+PMRP+4 FLAG DUPLICATE *DAT* ENTRY
LDN 1
SDT8 LMN 1
LJM SDTX RETURN
SLI SPACE 4,10
** SLI - SET LOCAL UTILITY INTERLOCK.
*
* ENTRY (T5) = EST ORDINAL.
*
* ERROR TO *ABT2* IF INTERLOCK NOT SET.
*
* CALLS SDI.
SLI1 LDD T5 SET INTERLOCK HELD
STM CLIA
SLI SUBR ENTRY/EXIT
RJM SDI SET INTERLOCK
NJN SLI1 IF INTERLOCK SET
* LDC MESM
LJM ABT2 ABORT
SME SPACE 4,10
** SME - SET MASS STORAGE EQUIPMENT.
*
* ENTRY (A) = EST ORDINAL.
*
* EXIT (T5) = EST ORDINAL.
* (ES - ES+4) = EST ENTRY.
* EQUIPMENT MNEMONIC AND NUMBER SET IN MESSAGES.
*
* USES T0, T1, T2, T3, T4, T5, ES - ES+4.
*
* CALLS C2D.
*
* MACROS SFA.
SME SUBR ENTRY/EXIT
STD T5
STM EQNO
SFA EST READ EST ENTRY
ADK EQDE
CRD ES
* SET (T0 - T2) = * EQXXX*, WHERE EQ = EQUIPMENT MNEMONIC AND
* XXX = EST ORDINAL.
LDD T5 CONVERT UPPER DIGIT OF EST ORDINAL
SHN -6
ADN 1R0
STD T1
LDD T5 CONVERT LOWER TWO DIGITS OF EST ORDINAL
RJM C2D
STD T2
LDD ES+3 PROCESS DEVICE MNEMONIC
LMC 1L
SHN 14
STD T0
SHN -6
SCN 77
RAD T1
LDN TSMEL INITIALIZE MESSAGE MODIFICATION LOOP
STD T3
SME1 SOD T3 DECREMENT MESSAGE INDEX
MJN SMEX IF ALL MESSAGES MODIFIED
LDM TSME,T3 SET MESSAGE ADDRESS
STD T4
LDD T0 TRANSFER * EQXXX* INTO DESTINATION BUFFER
STI T4
LDD T1
STM 1,T4
LDD T2
STM 2,T4
UJN SME1 LOOP FOR NEXT MESSAGE
** TSME - TABLE OF MESSAGES REQUIRING EQUIPMENT MNEMONICS AND
* EST ORDINALS.
TSME BSS 0
CON GLAA
CON MESA
CON MESB
CON MESC
CON MESD
CON MESE
CON MESG
CON MESH
CON MESI
CON MESJ
CON MESK
CON MESL
CON MESN
CON MESO
CON MESP
TSMEL EQU *-TSME
STB SPACE 4,15
** STB - SET TRACK BIT.
*
* ENTRY (A) = *STBM* SUBFUNCTION CODE.
* (T5) = EST ORDINAL.
* (T6) = TRACK NUMBER.
*
* EXIT (A) = MONITOR RESPONSE.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
STB SUBR ENTRY/EXIT
STD CM+3 SET SUBFUNCTION CODE
LDD T6 SET TRACK
STD CM+2
LDD T5 SET EST ORDINAL
LMC 1S10
STD CM+1
MONITOR STBM ISSUE REQUEST
LDD CM+1
UJN STBX RETURN
STI SPACE 4,15
** STI - SET TRACK INTERLOCK.
*
* ENTRY (T5) = EST ORDINAL.
* (T6) = TRACK.
*
* EXIT (A) = 0 IF TRACK INTERLOCKED.
* = (T6) IF TRACK NOT RESERVED.
* (PF) = (T6) IF TRACK INTERLOCKED.
*
* ERROR TO *ABT3* IF *ORET* ERROR FLAG DETECTED.
*
* CALLS STB.
*
* MACROS DELAY, PAUSE.
STI2 LDD T6 FLAG TRACK INTERLOCKED
STD PF
STI3 LMD T6 RETURN INTERLOCK STATUS
STI SUBR ENTRY/EXIT
STI1 LDN STIS ATTEMPT TRACK INTERLOCK
RJM STB
ZJN STI2 IF INTERLOCK SET
LMN 2
ZJN STI3 IF TRACK NOT RESERVED
DELAY 250D*10
PAUSE
LDD CM+1 CHECK ERROR FLAG
LMN ORET
NJN STI1 IF NOT OPERATOR OVERRIDE
* LDC MESM
LJM ABT3 ABORT
STM SPACE 4,10
** STM - SET TRACK NUMBER IN MESSAGE.
*
* ENTRY (A) = MESSAGE ADDRESS.
* (T6) = TRACK NUMBER.
*
* EXIT (T9) = MESSAGE ADDRESS.
*
* CALLS C2D, DFM.
STM SUBR ENTRY/EXIT
STD T9
LDD T6 CONVERT TRACK NUMBER
SHN -6
RJM C2D
STM 5,T9 SET CONVERSION IN MESSAGE
LDD T6
RJM C2D
STM 6,T9
LDC ERLN ISSUE MESSAGE TO ERRLOG
LMD T9
RJM DFM
UJN STMX RETURN
TED SPACE 4,10
** TED - TRANSFER DAT ENVIRONMENT DATA.
*
* ENTRY (A) = ECSM FUNCTION.
* (T6 - T7) = LINK DEVICE ADDRESS.
*
* EXIT (A) = ECSM FUNCTION REPLY.
*
* USES CM - CM+4, BY.
*
* CALLS CEA.
*
* MACROS MONITOR.
TED SUBR ENTRY/EXIT
SHN 11
STD BY
RJM CEA CONVERT EXTENDED MEMORY ADDRESS
LDN DAET SET DAT ENTRY
RAD CM+4
SHN -14
LMD BY MERGE FUNCTION
RAD CM+3
LDN 0 SET WORD COUNT TO 1
STD CM+1
LDD MA SET CM ADDRESS
STD CM+2
MONITOR ECSM
LDD CM+1
UJN TEDX RETURN
TRT SPACE 4,10
** TRT - UPDATE TRT.
*
* ENTRY (ES - ES+4) = EST ENTRY.
* (T5) = EQUIPMENT.
*
* EXIT TRT UPDATED IF DEVICE IS SHARED.
*
* USES CM - CM+4.
*
* CALLS STB.
*
* MACROS MONITOR.
TRT SUBR ENTRY/EXIT
LDD ES CHECK IF SHARED
SHN 21-11
PJN TRTX IF DEVICE NOT SHARED
LDN UTRS ENSURE TRT CURRENT
RJM STB
UJN TRTX RETURN
UDA SPACE 4,15
** UDA - UPDATE DAT ENTRY.
*
* ENTRY (TA) = EXTENDED MEMORY ACCESS OPTIONS.
* (DI) = DAT INDEX.
* (CN - CN+4) = *SDGL* WORD OF MST.
* (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
*
* USES T1, T2, T5, CM - CM+4, CN - CN+4.
*
* CALLS GDS, SDT, WDS.
*
* MACROS ENDMS, SETMS.
UDA5 LDM EQNO RESET EST ORDINAL
STD T5
UDA SUBR ENTRY/EXIT
LDD TA CHECK REQUEST
LPN RDDA
NJN UDA1 IF READ DAT ONLY
RJM SDT SEARCH DAT TABLES
ZJN UDA5 IF DUPLICATE ENTRY
UDA1 RJM GDS GET DAT SECTOR
ZJN UDA5 IF NO DAT ENTRY OR LINK DEVICE
LDD TI
ADC BFMS+2
STM UDAB
STD TI
ADN 11
STD T2
LDI T2 SET ACCESS STATUS IN CHECKPOINT REQUEST
LPC 0
UDAA EQU *-1
STM CKCA+4
SETMS IO,RW
LDD TA RECHECK REQUEST
LPN RDDA
NJN UDA4 IF NOT DAT UPDATE
LDD ES+4
SHN 3
ADN PFGL READ DAT INFORMATION
CRD CM
LDN 3
STD T2
UDA2 LDM CM,T2 COPY DATA TO DAT SECTOR
STM **,T2
UDAB EQU *-1
SOD T2
PJN UDA2 IF NOT END OF DATA
LDD CM+4
LPN 70
ZJN UDA3 IF PACK IS 1 OF N
LDN 0
STI TI CLEAR DAT ENTRY
STD CN
STD CN+1 CLEAR EXTENDED MEMORY ADDRESS
LDD ES+4
SHN 3
ADN SDGL UPDATE THE MST
CWD CN
LDD DI
ZJN UDA4 IF DAT INDEX NOT SET
UDA3 LDC BFMS+WLSF
RJM WDS REWRITE DAT SECTOR
UDA4 ENDMS
LJM UDA5 RETURN
UEC SPACE 4,15
** UEC - UPDATE EXTENDED MEMORY MST DATA.
*
* ENTRY (A) = UPDATE OPTIONS.
* (LD) = LINK DEVICE EST ORDINAL.
* (MI) = MACHINE INDEX.
* (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
*
* ERROR TO *GDS2* IF ERROR ON LINK DEVICE.
*
* USES TA, CM - CM+4, CN - CN+4.
*
* CALLS UDA.
*
* MACROS MONITOR.
UEC SUBR ENTRY/EXIT
STD TA
LDD LD
ZJN UECX IF NOT MMF MODE
LDD ES+4
SHN 3
ADN SDGL FETCH MST ADDRESS INFORMATION
CRD CN
LDD TA
LPN RDDA+UPDA
ZJN UEC1 IF NOT DAT ACCESS
RJM UDA
* UPDATE GLOBAL AREA.
UEC1 LDD CN CHECK EXTENDED MEMORY ADDRESS
ADD CN+1
ZJN UECX IF MST/TRT NOT EXTENDED MEMORY RESIDENT
LDD TA
LPN UPGA
UEC2 ZJN UECX IF NOT GLOBAL AREA UPDATE
LDD CN+1
ADN ALGL
STD CM+4 FORM EXTENDED MEMORY ADDRESS
SHN -14
ADD CN
LMC WECS*1000 MERGE SUBFUNCTION
STD CM+3
LDD ES+4 COMPUTE CM ADDRESS
SHN 3
ADN ALGL
STD CM+2
SHN -14
LMC 300 MERGE WORD COUNT
STD CM+1
MONITOR ECSM
LDD CM+1
ZJN UEC2 IF NO ERRORS
LJM GDS2 ABORT
SPACE 4
* COMMON DECKS.
QUAL$ EQU 1
*CALL COMPRLA
*CALL COMPRSS
WCS$ EQU 1 CONSECUTIVE SECTORS AFTER SYSTEM SECTOR
*CALL COMPWSS
QUAL
*CALL COMPCEA
*CALL COMPC2D
*CALL COMPIFR
*CALL COMPSDI
*CALL COMPSDR
STI EQU /IMS/STI
*CALL COMPTGB
*CALL COMPTLB
QUAL IMS
SPACE 4,10
** DAYFILE MESSAGES.
MESA DATA C* EQXXX, YY TRACKS FLAWED.*
MESB DATA C* EQXXX, YY FLAWS NOT PROCESSED.*
MESBL EQU * FLAW MESSAGE BUFFER
MESC DATA C* EQXXX, LOCAL AREAS INITIALIZED.*
MESD DATA C* EQXXX, LOCAL AREA SECTOR RESET.*
MESE DATA C* EQXXX, PF INITIALIZE COMPLETE.*
MESF DATA C* LABEL TRACK CONFLICT.*
MESG DATA C* EQXXX, NO INACTIVE DAYFILES FOUND.*
MENM EQU 13 FILENAME OFFSET FOR MESSAGES
MESH DATA C* EQXXX, INITIALIZED - . *
MESI DATA C* EQXXX, FILE ACTIVE - . *
MESJ DATA C* EQXXX, FILE BUSY - . *
MESK DATA C* EQXXX, PROTECTED QUEUES IGNORED.*
MESL DATA C* EQXXX, FLAWING INCOMPLETE.*
MESM DATA C* IMS ABORTED.*
MESN DATA C* EQXXX, TKYYYY, SYSTEM SECTOR ERROR.*
MESO DATA C* EQXXX, TKYYYY - TRACK FLAWED BY IMS.*
MESP DATA C* EQXXX, TKYYYY - VERIFICATION ERRORS.*
SPACE 4,10
OVLA EQU *+5 OVERLAY LOAD ADDRESS
TITLE RESIDENT PROCESSORS.
IND SPACE 4,10
*** FUNCTION *INDF* - INITIALIZE MASS STORAGE DEVICE.
*
* ENTRY (IR+4) = EST ORDINAL.
IND ENTRY
LDD IR+4 SET DEVICE PARAMETERS
RJM SMD
LDD WB CHECK INITIALIZE OPTIONS
SHN 21-LIAL+LIAL/12D*12D
MJN IND1 IF DEADSTART INITIALIZE
RJM TRT UPDATE TRT
RJM RPC RELEASE PERMANENT FILE CHAINS
RJM IPF INITIALIZE PACK FLAWS
IND1 LDD ES+4
SHN 3
ADN ALGL READ DEVICE ALLOCATION WORD FROM MST
CRD CN
ADN PUGL-ALGL GET DEVICE MASKS
CRD FN
ADN MDGL-PUGL GET DRIVER WORD
CRD CM
ADN STLL-MDGL UPDATE DEVICE STATUS
CWD WB
LDN 0 CLEAR ID DATA TRACK
STD CN
LDD CM
SHN 21-12
MJN IND2 IF AUXILIARY DEVICE
LDD FN+4
LPC 377
NJN IND2 IF MASTER DEVICE
* LDN 0
LJM IND5 PROCESS NON-MASTER DEVICE
IND2 LDD FN+3 SET CONTIGUOUS CATALOG TRACKS
SCN 60
LMN 40
STD FN+3
LDD FN
ZJN IND3 IF NOT PRIVATE DEVICE
LDN 1 SET CATALOG COUNT TO 1
STD CN+3
IND3 LDD CN+3 SET NUMBER OF CATALOG TRACKS
ADN 1
STD CA RESERVE CATALOG CHAIN
RJM RCC
ZJN IND4 IF ALL TRACKS NOT ASSIGNED
LDC NDAT RESERVE DATA TRACK
RJM RPT
ZJN IND4 IF TRACK NOT ASSIGNED
STD CN
LDC NPER RESERVE PERMITS TRACK
RJM RPT
NJN IND5 IF TRACK ASSIGNED
IND4 LDN PTKL
LJM MSI PASS ERROR TO *MSI*
IND5 STD CN+2 SET PERMIT TRACK
LDD ES+4
SHN 3
ADN ALGL UPDATE DEVICE LAYOUT WORD
CWD CN
ADN PUGL-ALGL UPDATE CATALOG CHAIN STATUS
CWD FN
LDN 0 CLEAR ERROR STATUS
RJM SES
CMSTF GDEI CLEAR ERROR IDLE STATUS
CMSTF GCTO CLEAR CATALOG TRACK OVERFLOW
LDM CQFA
ZJN IND7 IF NO QUEUES IGNORED
LDC MESK * EQXXX, PROTECTED QUEUES IGNORED.*
RJM DFM
IND7 LDC MESE * EQXXX, PF INITIALIZE COMPLETE.*
RJM DFM
LDN RDDA+UPGA READ DAT / UPDATE GLOBAL MST
RJM UEC
RJM IAM PROCESS ACCOUNTING MESSAGE
LDN 5
LJM CKC SET CHECKPOINT REQUEST
SPACE 4,10
** SYSTEM SECTOR FILE NAMES.
NDAT VFD 42/0LDATA,6/1,6/SYFT,6/0
NLAB VFD 42/0LLABEL,6/1,6/SYFT,6/0
NPER VFD 42/0LPERMIT,6/1,6/SYFT,6/0
DFT SPACE 4,20
** DFT - DROP AND FLAW TRACK.
*
* ENTRY (A) = 1/0,11/FT. ALL TRACKS AFTER *FT* ARE DROPPED
* AND THE EOI IS SET IN SECTOR ZERO OF *FT*.
* = 1/1,11/FT. ALL TRACKS FROM *FT* TO END OF
* CHAIN ARE DROPPED.
* (T5) = EST ORDINAL.
* (T6) = TRACK ON WHICH ERROR OCCURED.
* (TA) = VERIFICATION ERROR RETRY COUNT.
*
* EXIT (A) = 0 IF TRACK CHAIN DROPPED.
*
* ERROR TO *ABT2* IF RETRY COUNT EXHAUSTED.
*
* USES CM - CM+4.
*
* CALLS DFM, SES, STM.
*
* MACROS MONITOR.
DFT1 STD CM+3 CLEAR SECTOR NUMBER FIELD
LDD T5
STD CM+1 DROP CURRENT TRACK
MONITOR DTKM
LDC MESO ISSUE TRACK FLAWED MESSAGE TO ERRLOG
RJM STM
LDD T9 ISSUE SAME MESSAGE TO SYSTEM DAYFILE
RJM DFM
* LDN 0
DFT SUBR ENTRY/EXIT
STD CM+2 SET FIRST TRACK TO DROP
LDM RDCT
LPN 77 CHECK MASS STORAGE ERROR TYPE
LMN PARE
ZJN DFT1 IF MEDIA PROBLEM
LDC MESP
RJM STM ISSUE VERIFICATION ERROR MESSAGE
SOD TA
NJN DFTX IF VERIFICATION RETRY IN ORDER
LDN STVE
RJM SES SET *VE* ERROR STATUS IN MST
* LDC MESM
LJM ABT2 ABORT - MAINTENANCE REQUIRED
IAM SPACE 4,15
** IAM - ISSUE ACCOUNTING MESSAGE.
*
* ENTRY (T5) = EST ORDINAL.
* (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
*
* EXIT MESSAGE ISSUED TO ACCOUNTING DAYFILE.
* EVENT SET FOR AUXILIARY DEVICE.
*
* USES T1, CM - CM+4, CN - CN+4.
*
* CALLS ACS, C2D, DFM.
*
* MACROS MONITOR.
IAM SUBR ENTRY/EXIT
LDC IAMB SET ADDRESS OF ASSEMBLY BUFFER
STD T1
LDD T5 CONVERT UPPER TWO DIGITS OF EST ORDINAL
SHN -3
RJM C2D
STD CM
LDD T5 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 ES+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
NJN IAM1 IF NOT AUXILIARY DEVICE
LDD CM+3
ADD CM+2 BUILD PACKNAME EVENT HASH
ADD CM+1
ADD CM SAVE PACKNAME HASH
STD CN+4
UJN IAM2 FORMAT MESSAGE
IAM1 RJM C2D CONVERT TO DISPLAY CODE
STD CN
LDC 2RDI CHANGE MESSAGE PREFIX TO *ADDI*
STM IAMA+1
LDD CM+3 SET END OF FAMILY NAME
SCN 77
STD CM+3
IAM2 LDN CM ADD FAMILY/PACKNAME TO MESSAGE
RJM ACS
LDD CN
ZJN IAM3 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
IAM3 LDC =C*.* SET MESSAGE TERMINATOR
RJM ACS
LDC IAMA+ACFN ISSUE MESSAGE TO ACCOUNT FILE
RJM DFM
LDM IAMA+1 ISSUE EVENT
LMC 2RPI
NJN IAM4 IF NOT AUXILIARY DEVICE
LDN ZERL
CRD CM
LDN /EVENT/VSNE/10000 SET EVENT
STD CM+3
LDD CN+4 SET PACKNAME HASH
STD CM+4
MONITOR EATM
IAM4 LJM IAMX RETURN
IAMA DATA 6HADPI,
IAMB BSSZ 15 ASSEMBLY BUFFER
RCC SPACE 4,20
** RCC - RESERVE CATALOG CHAIN.
*
* ENTRY (CA) = CATALOG COUNT.
* (LT) = LABEL TRACK.
* (T5) = EST ORDINAL (DRIVER PRESET).
* (CN - CN+4) = DEVICE LAYOUT WORD OF MST
* (FN - FN+4) = PUGL WORD OF THE MST.
*
* EXIT (A) = 0 IF TRACKS NOT AVAILABLE.
* = .LT. 0 IF ALL CATALOG TRACKS RESERVED.
* (FN+3) = CONTIGUOUS TRACKS FLAG CLEARED IF NECESSARY.
*
* USES TA, T2, T6, T7, CA - CA+1, CM - CM+4.
*
* CALLS DFT, WVE.
*
* MACROS MONITOR.
RCC SUBR ENTRY/EXIT
LDD LT
STD T6 FIRST TRACK = LABEL TRACK
RCC1 SOD CA
MJN RCCX IF ALL CATALOG TRACKS RESERVED
LDN ZERL
CRD CM
LDD T5 SET EQUIPMENT
STD CM+1
LDD T6 SET CURRENT TRACK
STD CM+2
STD CA+1
MONITOR RTCM RESERVE TRACK
* LDN 0
STD T7 SET SECTOR
LDD CM+4
ZJN RCCX IF TRACK NOT ASSIGNED
SBN 1
SBD T6
ZJN RCC2 IF CONSECUTIVE
RAD T6
LDD FN+3 CLEAR CONTIGUOUS CATALOG TRACKS
SCN 40
STD FN+3
RCC2 AOD T6 SET NEXT TRACK
LDN VERC
STD TA
RCC3 LDD LT SET FIRST TRACK OF CHAIN
STD T2
LDC BFMS WRITE AND VERIFY WITH EOI SECTORS
RJM WVE
ZJN RCC4 IF WRITE AND VERIFY GOOD
LDD CA+1
LPC 3777 DROP AND FLAW TRACK
RJM DFT
NJN RCC3 IF RETRY DUE TO VERIFICATION ERRORS
AOD CA
LDD CA+1 RESTORE CURRENT TRACK
STD T6
RCC4 LJM RCC1 ALLOCATE NEXT CATALOG TRACK
RPC SPACE 4,15
** RPC - RELEASE PERMANENT FILE CHAINS.
*
* ENTRY (T5) = EST ORDINAL.
* (LT) = LABEL TRACK.
* (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
* (WB - WB+4) = *STLL* WORD OF MST.
*
* USES BY, TL, T5, T6, CM - CM+4, CN - CN+4.
*
* USES CAT, CQF.
*
* MACROS MONITOR, SETMS.
RPC5 LDN 0 CLEAR USER COUNT
STD WB+3
LDD CP CLEAR MESSAGE AT CP
ADN MS2W
CWD WB+3
RPC SUBR ENTRY/EXIT
LDD ES+4
SHN 3
ADK TDGL
CRD CN
ADN TRLL-TDGL
RJM CAT CALCULATE FWA OF TRT
STM RPCA+1
SHN -14
RAM RPCA
LDD CN+2 SET TRT LENGTH
STD TL
SETMS IO,(DF,NS)
LDN 0
RPC1 STD BY CLEAR BYTE COUNT
SOD TL
MJN RPC5 IF END OF TRT
RPCA ADC *
CRD CN READ TRT WORD
RPC2 LDD CN+4
LPC 7400 EXTRACT PRESERVED FILE FLAGS
SHN 1
STD CN+4
ZJN RPC1 IF NONE SET
SHN 5
PJN RPC4 IF NOT PRESERVED FILE CHAIN
RJM CQF CHECK FOR QUEUED FILES
ZJN RPC4 IF QUEUE, DAYFILE, MRT OR DAT TRACK
LDD T5
STD CM+1 SET EST ORDINAL
LDD T6
STD CM+2 TRACK NUMBER
LMD LT
NJN RPC3 IF NOT LABEL TRACK
STD CM+3
LDD LT DROP ALL TRACKS AFTER LABEL TRACK
LPC 3777
STD CM+2
RPC3 MONITOR DTKM
RPC4 AOD BY ADVANCE BYTE COUNT
UJN RPC2 LOOP FOR ALL BYTES
RPT SPACE 4,15
** RPT - RESERVE PRESERVED FILE TRACK.
*
* ENTRY (A) = ADDRESS OF SYSTEM SECTOR NAME.
*
* EXIT (A) = TRACK RESERVED.
*
* USES TA, T1, T2, T6, CM - CM+4.
*
* CALLS DFT, STB, WSS, WVE.
*
* MACROS ENDMS, MONITOR, SETMS.
RPT SUBR ENTRY/EXIT
STM RPTA
RPT1 LDC 500 PRESET INDEX
STD T1
RPT2 LDN 0 CLEAR SYSTEM SECTOR
STM BFMS+1,T1
SOD T1
NJN RPT2 IF NOT END OF SECTOR
LDD MA
CWM *,ON
RPTA EQU *-1
SBN 1 MOVE SYSTEM SECTOR NAME TO BUFFER
CRM FNSS,ON
LDN ZERL REQUEST TRACK
CRD CM
LDD T5 SET EST ORDINAL IN REQUEST
STD CM+1
MONITOR RTCM
LDD CM+4 SET TRACK
STD T6
ZJN RPTX IF TRACK NOT ASSIGNED
SETMS IO,NS
RJM WSS WRITE SYSTEM SECTOR
MJN RPT4 IF PARITY ERROR
LDN VERC
STD TA
RPT3 LDD T6 SET FIRST TRACK
STD T2
LDC BFMS WRITE AND VERIFY WITH EOI SECTORS
RJM WVE
NJN RPT4 IF WRITE / VERIFY ERRORS
LDD T5
STD CM+1 SET EST ORDINAL
LDD T6
LPC 3777 SET TRACK
STD CM+2
LDN FSMS SET SECTOR
STD CM+3
MONITOR DTKM SET EOI IN TRT
LDN SPFS
RJM STB SET FILE PRESERVED
LDD T6
LJM RPTX RETURN
* PROCESS BAD TRACK.
RPT4 LDD T6 DROP AND FLAW TRACK
RJM DFT
NJN RPT3 IF RETRY DUE TO VERIFICATION ERRORS
LJM RPT1 RESERVE ANOTHER TRACK
SMD SPACE 4,15
** SMD - SET MASS STORAGE DEVICE.
*
* ENTRY (A) = EST ORDINAL.
*
* EXIT (T5) = EST ORDINAL.
* (LT) = LABEL TRACK.
* (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
* (WB - WB+4) = *STLL* WORD OF MST.
*
* USES CM - CM+4, CN - CN+4, FN - FN+4.
*
* CALLS ABT, CAT, IPF, RPT, SLI, SME, WDS, WSS.
*
* MACROS ENDMS, MONITOR, SETMS.
SMD SUBR ENTRY/EXIT
RJM SME SET MASS STORAGE EQUIPMENT
RJM SLI SET LOCAL UTILITY INTERLOCK
LDD ES+4
SHN 3
ADN ALGL
CRD CN
ADN MDGL-ALGL
CRD FN
ADN STLL-MDGL READ MST STATUS WORD
CRD WB
LDD FN SET DAT INDEX
LPC 377
STD DI
LDD CN+1 CHECK LABEL TRACK
STD LT
NJN SMDX IF DEFINED
RJM IPF INITIALIZE PACK FLAWS
LDC NLAB
RJM RPT RESERVE LABEL TRACK
STD CN+1
STD LT SAVE LABEL TRACK
LDD ES+4
SHN 3
ADN ALGL
CWD CN UPDATE MST
LDD LT
ZJN SMD4 IF LABEL TRACK NOT ASSIGNED
LMC 4000
ZJN SMD3 IF LABEL ON TRACK ZERO
LDN ZERL
CRD CN
SETMS IO,(DF,NS,SM)
SMD1 LDD ES+4
SHN 3
ADN TRLL
RJM CAT CALCULATE FWA OF TRT
ADD CN+1
CRD FN
SMD2 LDM FN,CN CHECK TRACK BYTE
LMC 3777
ZJN SMD5 IF TRACK FLAWED
LDD CN+2
LMD LT
LPN 77
NJN SMD4 IF NOT LABEL TRACK
SMD3 LJM SMDX RETURN
SMD4 LDC MESF
LJM ABT ABORT OPERATION
* FLAG FLAWED TRACK IN SYSTEM SECTOR.
SMD5 LDD CN+2 SET TRACK NUMBER
LMC 4000
STD T6
LDC 3777 FLAWED TRACK INDICATOR
STM FNSS
RJM WSS WRITE SYSTEM SECTOR
SMD6 LDC BFMS+WCSF
RJM WDS WRITE FLAW DATA TO ALL SECTORS
AOD T7
SBM SLM
NJN SMD6 IF NOT END OF TRACK
ENDMS
AOD CN+2 BUMP TRACK COUNT
AOD CN BUMP BYTE COUNT
LMN 4
ZJN SMD7 IF END OF TRT WORD
LJM SMD2 PROCESS NEXT TRACK
SMD7 STD CN
AOD CN+1 BUMP WORD INDEX
LJM SMD1 GET NEXT TRT WORD
SPACE 4,10
* COMMON DECKS.
*CALL COMPACS
*CALL COMPSES
LIST X
*CALL COMPWVE
LIST *
SPACE 4,10
USE LITERALS
OVERFLOW OVLA,BUF
TITLE PRESET.
PRS SPACE 4,10
** PRS - PRESET PROGRAM.
*
* EXIT (PF) = 0.
* (LD) = MMF LINK DEVICE.
* (MI) = MACHINE INDEX.
* (DE) = DAT ENTRY COUNT.
* (T2) = FUNCTION TABLE INDEX.
* (CA - CA+1) = 0.
* (CN - CN+4) = *MMFL* WORD.
PRS SUBR ENTRY/EXIT
LDD CP
ADN STSW FETCH CP ERROR STATUS
CRD CM
LDD CM+1
NJP ABT3 IF ERROR FLAG SET
* LDN 0
STD CA CLEAR DIRECT CELLS
STD CA+1
STD PF
* SET LINK DEVICE PARAMETERS.
LDC MMFL
CRD CN
LDD CN+1 SET LINK EQUIPMENT
LPC 777
STD LD
LDD CN+4 SET MACHINE INDEX
STD MI
LDD CN+3 SET MACHINE MASK
STM UDAA
LDD IR+2 CHECK REQUEST
LMN MMSF
NJN PRS2 IF NOT TO MODIFY MST-S
LDD LD
ZJN PRS2 IF NOT MMF ENVIRONMENT
SFA EST
ADK EQDE FETCH LINK DEVICE EST ENTRY
CRD CM
LDD CM+4 GET LABEL TRACK
SHN 3
ADN ALGL
CRD CM
LDD CM+1 SAVE LINK DEVICE LABEL TRACK
STD T6
LDN ETLT
STD T7
LDN RECS GET DAT ENTRY COUNT
RJM TED
ZJN PRS1 IF NO ERRORS
LJM GDS2 ABORT
PRS1 LDD MA
CRD CM
LDD CM+4 SET DAT ENTRY COUNT
SHN -1
STD DE
* CHECK ORIGIN TYPE.
PRS2 LDD CP FETCH EJT ORDINAL
ADN TFSW
CRD CM
SBN TFSW-JCIW GET SUBSYSTEM ID
CRD WB
SFA EJT,CM READ EJT
ADN SCLE
CRD CM
LDD CM CHECK ORIGIN TYPE
LPN 17
LMK SYOT
NJN PRS4 IF NOT SYSTEM ORIGIN
* SET ABORT CONDITIONS.
LDD WB+2 CHECK SUBSYSTEM ID
LMC DSSI
NJN PRS3 IF NOT DEADSTART SEQUENCING JOB
LDC *
ORG *-1
LOC ABTB
UJN ABT1 CHECK DEVICE TYPE
LOC *O
STM ABTB SET DEADSTART SEQUENCING PATH
LDC ABTA
STM ABTA+1 FORCE PP HANG
* PROCESS FUNCTION.
PRS3 LDD IR+2
SHN 1 SET FUNCTION TABLE INDEX
STD T2
ERRNZ TFCNS-2 CODE DEPENDS ON VALUE
SBN TFCNL
PJN PRS4 IF INCORRECT REQUEST
LDM TFCN,T2
STM IMSA
LJM PRSX RETURN
PRS4 LDC PRSB * INCORRECT IMS REQUEST.*
RJM DFM
LJM DPP DROP PP
SPACE 4,10
EJT$ EQU 0 DEFINE *COMPGFP* ACCESS TO EJT
*CALL COMPGFP
PRSB DATA C* INCORRECT IMS REQUEST.*
TFCN SPACE 4
** TFCN - FUNCTION PROCESSOR TABLE.
* ENTRY = 2 BYTES.
* INDEXED BY FUNCTION NUMBER * 2.
*
*T, 12/ ADDR, 12/ OVLN
* ADDR ADDRESS OF FUNCTION PROCESSOR.
* OVLN LAST CHARACTER OF OVERLAY NAME.
TFCN FCN
FCN 0,PRS4 INCORRECT REQUEST
TFCNS EQU *O-TFCN
FCN INDF,IND INITIALIZE DEVICE
FCN EDTF,EDT EDIT DIRECT ACCESS FILES
FCN SFLF,SFL SET / CLEAR FLAWS
FCN CSDF,CSD CHECK SHARED DEVICE STATUS
FCN ILAF,ILA INITIALIZE LOCAL AREAS
FCN MMSF,MMS MODIFY MST-S
FCN CINF,CIN CLEAR INITIALIZE REQUESTS
FCN IDFF,IDF INITIALIZE DAYFILES
FCN CITF,CIT CLEAR *CMS* INTERLOCK
FCN ISDF,ISD INTERLOCK ISD-S
FCN IFMXF
TFCNL EQU *-TFCN LENGTH OF TABLE
SPACE 4,10
OVERFLOW
OVERLAY (MODIFY MASS STORAGE TABLES.)
MMS SPACE 4,20
*** FUNCTION *MMSF* - MODIFY MASS STORAGE TABLES.
*
* ENTRY (IR+3 - IR+4) = ADDRESS (ADDR) OF PARAMETERS.
*
*T, ADDR 60/ EST ENTRY
*T, 60/ PFGL WORD OF MST
*T, 60/ PUGL WORD OF MST
*T, 60/ MDGL WORD OF MST
*T, 12/ NC, 12/ EQ, 12/ AI, 12/ CI, 12/ NE
*T, 12/ NP, 48/ UNIT LIST (*LDAM* DEVICES)
*T, 60/ REPLY WORD
* NC = NUMBER OF CATALOG TRACKS.
* EQ = EST ORDINAL.
* AI = *LDAM* ALGORITHM INDEX.
* CI = CLEAR IN USE AS CHAINED DEVICE.
* NE = NEXT EQUIPMENT IN CHAIN.
MMS ENTRY
LDN PMMSL READ PARAMETER BLOCK
STD TI
RJM LDA READ EST ENTRY
CRD ES
CRM BUF,TI
LDM BUF+PMEQ SET EST ORDINAL
STD T5
STM EQNO
LDD LD
ZJN MMS1 IF NOT MMF ENVIRONMENT
LMD T5
NJN MMS1 IF NOT LINK DEVICE
LDD ES+4
SHN 3
ADN PFGL RETAIN ORIGINAL PF DESCRIPTION
CRM BUF+PMPF,TR
MMS1 RJM SLI SET LOCAL UTILITY INTERLOCK
LDD ES
SHN 21-10
PJN MMS2 IF NOT REMOVABLE
LDD ES+4 CHECK INITIALIZE OPTION
SHN 3
ADN STLL
CRD CM
LDD CM
SHN 21-LIAL+LIAL/12D*12D
MJN MMS2 IF DEADSTART INITIALIZE
RJM CTR CLEAR TRT
* PROCESS CATALOG TRACK COUNT.
MMS2 LDD ES+4
SHN 3
ADN ALGL
CRD CM
LDM BUF+PMNC
STD CM+3
LDD ES+4 UPDATE MST WORDS
SHN 3
ADN ALGL
CWD CM
ADN PFGL-ALGL STORE *PFGL* AND *PUGL*
CWM BUF+PMPF,TR
ADN DILL-PFGL-3
CRD CN
LDD CN+4 CLEAR ALGORITHM INDEX
SCN 77
STD CN+4
LDM BUF+PMMD SET DAT INDEX
LPC 377
STD DI
LDM BUF+PMAI
ZJN MMS4 IF NOT CHANGING ALGORITHM INDEX
RAD CN+4
LDD ES+4 UPDATE MST
SHN 3
ADN DILL
CWD CN
LDD ES+3 SET NEW MNEMONIC
STD CM+3
LDN SMNS SET MNEMONIC SUBFUNCTION
STD CM+2
LDD T5 SET EST ORDINAL
STD CM+1
MONITOR SEQM CHANGE EQUIPMENT MNEMONIC
LDD CN+4
LPN 77 EXTRACT ALGORITHM INDEX
SBN AIHT+1
SHN 0-21 CALCULATE *SCSM* SUBFUNCTION
ADN DAPS
ERRNZ DAPS+1-EAPS CODE DEPENDS ON VALUE
STD CM+3
SBN DAPS
SHN 3 APPEND CHANNEL PRESENT STATUS
LMN 11
RJM CCS
ZJN MMS4 IF NO ACCESS PATH CHANGE
* LDD T5
* STD CM+1
MONITOR SCSM SET CHANNELS FOR ACCESS
* PROCESS REMOVABLE DEVICE.
MMS4 LDD ES
SHN 21-10
PJN MMS6 IF NOT REMOVABLE
LDM BUF+PMCI
ZJN MMS5 IF SETTING DEVICE IN USE
LCN 0
MMS5 LMN LDIU SET/CLEAR DEVICE IN USE
RJM TLB
MMS6 LDN UPGA+UPDA
RJM UEC UPDATE EXTENDED MEMORY DATA
* UPDATE MST.
LDD ES+4
SHN 3
ADN DULL GET DEVICE USAGE WORD
CRD CN
ADN STLL-DULL GET STATUS WORD
CRD CM
ADN DDLL-STLL STORE UNIT LIST
CWM BUF+PMAL,ON
LDD CM+4 SET NEXT EST ORDINAL IN CHAIN
LPN 7
SHN 22-3
ADM BUF+PMNE
SHN 3
STD CM+4
RJM GAS SET ALTERNATE LABEL SECTOR
STD CN
LDD ES+4
SHN 3
ADN STLL UPDATE DEVICE STATUS
CWD CM
SBN STLL-DULL STORE ALTERNATE LABEL SECTOR IN MST
CWD CN
LDD ES
SHN 21-4
PJN MMS9 IF NOT INDEPENDENT SHARED DEVICE
LDD CM+1
LPN 77
LMN STLE
ZJN MMS7 IF LABEL ERROR ON DEVICE
LDD CM
LPN MLPTU
ZJN MMS9 IF *LPTU* INTERLOCK NOT SET
MMS7 LDN ZERL
CRD CN
LDN 0
STD T1
LDC MMFL
CRD CM
LDD CM SET MACHINE ID IN DIT
STD CN+4
MMS8 RJM SDL
ADD T1 ADD OFFSET
CWD CN
LDN 0 CLEAR REMAINDER OF DIT
STD CN+4
AOD T1
LMN MISD
NJN MMS8 IF NOT END OF DIT
MMS9 RJM LDA
ADN PMRP/5 REWRITE REPLY WORD
CWM BUF+PMRP,ON
LJM DPP EXIT
CCS SPACE 4,10
** CCS - CHECK CHANNEL STATUS.
*
* ENTRY (A) = REQUESTED STATUS.
* (ES - ES+4) = *EQDE* WORD OF 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 ES+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 ES+3
NJN CCS1 IF ANOTHER CHANNEL TO CHECK
* LDN 0
UJN CCS3 RETURN
CTR SPACE 4,15
** CTR - CLEAR TRT AND MST.
*
* ENTRY (T5) = EST ORDINAL (REMOVABLE DEVICE).
* (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
*
* EXIT MST UPDATED.
* TRT CLEARED.
*
* USES T6, CM - CM+4, CN - CN+4, WB - WB+4.
*
* CALLS CAT, STB.
*
* MACROS MONITOR.
CTR SUBR ENTRY/EXIT
LDD ES
SHN 21-4
PJN CTR1 IF NOT INDEPENDENT SHARED DEVICE
LDN PSNI
STM CTRA
CTR1 LDN SDIS SET DEVICE INTERLOCK
RJM STB
LDN ZERL
CRD CM
LDD ES+4
SHN 3
ADK TDGL
CRD CN
ADN ACGL-TDGL CLEAR DEVICE ACTIVITY WORD
CWD CM
ADN ALGL-ACGL CLEAR ALLOCATION WORD
CWD CM
ADN STLL-ALGL READ STATUS WORD
CRD WB
ADN TRLL-STLL
RJM CAT CALCULATE FWA OF TRT
STD CM+4
SHN -14
STD CM+3
LDD CN+2 SET TRT LENGTH
STD CM+2
SHN 2
STD CN+4 TRACK COUNT
LDC 4000
STD CN+3
CTRA UJN CTR2 CLEAR TRT/MRT/DIT
* PSN (INDEPENDENT SHARED DEVICE)
LDD CN+2
ADN 7
SHN -3 SET MRT LENGTH
ADN MISD
RAD CM+2 CLEAR TRT
CTR2 LDN 0
STD CM+1
MONITOR CSTM
* LDN 0 CLEAR USER COUNTS
STD WB+3
STD WB+1 CLEAR ERROR STATUS
LDD ES
SHN 21-6
PJN CTR3 IF DEVICE AVAILABLE
LDN MLPTU
STD WB CLEAR STATUS FLAGS
CTR3 LDD ES+4
SHN 3
ADK TDGL
CWD CN
ADN STLL-TDGL STORE STATUS WORD
CWD WB
LDN CDIS CLEAR DEVICE INTERLOCK
RJM STB
LDD CN FLAW ODD TRACKS OFF END OF TRT
STD T6
CTR4 LPN 3
NJN CTR5 IF ODD TRACK COUNT
LJM CTRX RETURN
CTR5 LDN STFS SET TRACK FLAWED
RJM STB
AOD T6
UJN CTR4 CHECK NEXT TRACK
GAS SPACE 4,10
** GAS - GET ALTERNATE LABEL SECTOR.
*
* ENTRY (ES - ES+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 ES+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
SPACE 4,10
OVERFLOW OVLA,BUF
OVERLAY (EDIT TRT / INITIALIZE LOCAL AREAS.)
EDT SPACE 4,10
*** FUNCTION *EDTF* - EDIT DEVICE TRT.
*
* ENTRY (IR+3 - IR+4) = ADDRESS (ADDR) 0F PARAMETERS.
*
*T, ADDR 12/ MASK, 12/ ESTO, 36/ 0
EDT ENTRY
RJM LDA READ PARAMETER WORD
CRD CN
LDC BUF-1 INITIALIZE BUFFER INDEX
STD TI
EDT1 AOD TI ADVANCE BUFFER INDEX
LDD CN
LPC 1 UNPACK MASK BITS
EDTA EQU *-1
STI TI SET IN MASK TABLE
LDM EDTA
RAM EDTA SHIFT BIT
SHN -10
ZJN EDT1 IF NOT END OF MASK
* SET UP TRT SEARCH FOR SELECTED FILES.
LDD CN+1 SET MASS STORAGE EQUIPMENT
RJM SME
RJM TRT UPDATE TRT
LDD ES+4
SHN 3
ADK TDGL GET TRACK COUNT FROM MST
CRD CN
SETMS IO,(DF,NS,RW)
LDD CN SET NUMBER OF TRACKS
STD CN+2
UJN EDT5 ENTER LOOP
EDT2 LDC MESN ISSUE SYSTEM SECTOR ERROR MESSAGE
RJM STM
EDT3 LDD PF
ZJN EDT5 IF TRACK NOT INTERLOCKED
LDN CTIS
RJM STB CLEAR TRACK INTERLOCK
* LDN 0
EDT4 STD PF CLEAR TRACK INTERLOCKED STATUS
* SCAN TRT FOR PRESERVED FILES.
EDT5 SOD CN+2
PJN EDT7 IF NOT END OF TRACKS
EDT6 LJM DPP1 SET CHECKPOINT AND DROP
EDT7 LMC 4000 SET TRACK BIT
RJM CTB CHECK TRACK IN TRT
SHN -4
ZJN EDT5 IF PRESERVED FILE BIT NOT SET
RJM CST CHECK SPECIAL TRACKS
ZJN EDT5 IF SPECIAL PF TRACK
MJN EDT5 IF DAT OR IQFT TRACK
LDN 0 READ SYSTEM SECTOR
RJM RSS
NJN EDT2 IF SYSTEM SECTOR ERROR
LDM FNSS+4
SHN -6
LMN PMFT
ZJN EDT9 IF DIRECT ACCESS FILE
LMN FAFT&PMFT
NJP EDT10 IF NOT FAST ATTACH FILE
EDT9 LDM CTSS+FCUI+1
LPN 7 SET USER INDEX
STD TI
LDM BUF,TI
ZJN EDT10 IF MASK DOES NOT MATCH
RJM RRS
* IF FILE HAS ACTIVE USERS, SET *PURGE* BIT IN SYSTEM SECTOR.
LDM CASS CHECK FOR ACTIVE USERS
LPN 32
ADM UCSS+1
ADM UCSS+2
ADM UCSS+3
ADM UCSS+4
ADM FISS
ZJN EDT11 IF NO USERS
LDM CASS
SCN 40
LMN 40 SET PURGE BIT
STM CASS
RJM WSS UPDATE SYSTEM SECTOR
EDT10 ENDMS
LJM EDT3 PROCESS NEXT TRACK
* FILES WHICH MATCH WITH THE MASK BELONG TO MASTER DEVICE
* WHICH HAS BEEN INITIALIZED AND MUST BE DROPPED.
EDT11 ENDMS
LDD T5 RELEASE TRACKS
STD CM+1
LDD T6
STD CM+2
MONITOR DTKM
* LDN 0
LJM EDT4 CLEAR TRACK INTERLOCKED STATUS
ILA SPACE 4,10
*** FUNCTION *ILAF* - INITIALIZE INACTIVE LOCAL AREAS.
*
* ENTRY (IR+4) = EST ORDINAL.
ILA ENTRY
LDC MMFL GET MACHINE ID CODE
CRM BUF,ON
LDD LD SET LINK EQUIPMENT
STD T5
ZJN ILA2 IF NOT MMF ENVIRONMENT
LDN 5*MXMF
STM PLAA
SETMS IO
LDD CM+4 GET LINK DEVICE LABEL TRACK
SHN 3
ADN ALGL
CRD CM
LDD CM+1
STD T6
LDN ETLT SET SECTOR ADDRESS
STD T7
LDC BUF-2 READ MACHINE ID CODES
RJM RDS
PJN ILA1 IF NO READ ERRORS
LJM GDS2 ABORT
ILA1 ENDMS RELEASE CHANNEL
* GET LOCAL AREA SECTOR.
ILA2 LDD IR+4 SET MASS STORAGE EQUIPMENT
RJM SME
LDD ES CHECK DEVICE USAGE
SHN 21-4
PJN ILA3 IF NOT INDEPENDENT SHARED DEVICE
LDC BUF-4 READ DIT TO BUFFER
RJM RDT
LDC MISD*5 SET TABLE LENGTH
STM PLAA
ILA3 LDD ES+4
SHN 3
ADN STLL GET STATUS WORD FROM MST
CRD CM
LDD CM+1 CHECK ERROR FIELD
LPN 77
LMN STLE
ZJN ILA4 IF LABEL ERROR
RJM GLA GET LOCAL AREA SECTOR
ZJN ILA4 IF NO SLA OR THIS MACHINE NOT PRESENT
LDN 0
STD TI CLEAR INDEX LOCATIONS
STD TA
* INITIALIZE INACTIVE LOCAL AREAS.
LDM BFMS+1 CHECK SECTOR WORD COUNT
ZJN ILA4 IF EMPTY SECTOR
ADC -101
MJN ILA5 IF LEGAL WORD COUNT
ILA4 CMSTF GLAP CLEAR SECTOR OF LOCAL AREAS FLAG
LDC MESD * EQXXX, LOCAL AREA SECTOR RESET.*
UJN ILA7 COMPLETE PROCESSING
ILA5 RJM PLA PROCESS LOCAL AREA
LDN 2*5
RAD TI ADVANCE SLA INDEX
LDN 2
RAD TA ADVANCE SECTOR INDEX
SBM BFMS+1
MJN ILA5 IF NOT END OF SECTOR DATA
* REFORMAT SECTOR AND UPDATE DEVICE.
RJM RFS REFORMAT SECTOR
ZJN ILA6 IF EMPTY SECTOR
SETMS IO,(DF,NS,RW)
LDC BFMS+WLSF REWRITE SECTOR
RJM WDS
ENDMS
ILA6 LDC MESC * EQXXX, LOCAL AREAS INITIALIZED.*
ILA7 RJM DFM
SMSTF LCKP SET EQUIPMENT CHECKPOINT
LDN 2
LJM CKC SET CHECKPOINT REQUEST
PLA SPACE 4,10
** PLA - PROCESS LOCAL AREAS.
*
* ENTRY (TI) = INDEX TO LOCAL AREA.
* (BUF) = LIST OF ACTIVE MACHINE ID CODES.
*
* EXIT TRACKS DROPPED FOR INACTIVE AREAS.
*
* USES T1, T2, CM - CM+4.
*
* MACROS MONITOR.
PLA SUBR ENTRY/EXIT
LDN 0
STD T2
PLA1 LDM BUF,T2 COMPARE ID CODES
LMM BFMS+2,TI
ZJN PLAX IF ACTIVE AREA
LDN 5
RAD T2 ADVANCE INDEX
LMC 5
PLAA EQU *-1
* LMC 5*MXMF (MMF ENVIRONMENT)
NJN PLA1 IF NOT END OF ID CODES
* DROP INACTIVE DAYFILE TRACKS.
LDN 5 SET DAYFILE INDEX
STD T2
LDC BFMS+2
ADD TI
STM PLAB SET LOCAL AREA ADDRESS
STM PLAC
STD T1
PLA2 LDM **,T2 CHECK FOR DAYFILE TRACK
PLAB EQU *-1
ZJN PLA3 IF TRACK NOT RESERVED
STD CM+2
LDD T5 SET EQUIPMENT
STD CM+1
MONITOR DTKM
PLA3 AOD T2 BUMP INDEX
LMN EXDF+5
NJN PLA2 IF NOT END OF DAYFILES
STD T2
PLA4 LDN 0 CLEAR LOCAL AREA
STM **,T2
PLAC EQU *-1
AOD T2
LMN 2*5
NJN PLA4 IF NOT END OF CLEAR
LJM PLAX RETURN
RFS SPACE 4,10
** RFS - REFORMAT SECTOR.
*
* ENTRY (BFMS) = REMAINING LOCAL AREAS.
*
* EXIT (A) = 0 IF SECTOR EMPTY.
*
* USES T1 - T3, TI.
*
* MACROS CMSTF.
RFS SUBR ENTRY/EXIT
LDN 0
STD T1 CLEAR INDICES
STD T2
STD TI CLEAR SECTOR WORD COUNT
STD T3
RFS1 LDM BFMS+2,T2
ZJN RFS4 IF EMPTY LOCAL AREA
LDD T2
LMD T3
ZJN RFS3 IF LOCAL AREA SECTOR MOVE NOT REQUIRED
RFS2 LDM BFMS+2,T2
STM BFMS+2,T3 MOVE DATA
AOD T3
LDN 0 CLEAR ENTRY
STM BFMS+2,T2
AOD T2 ADVANCE INDICES
AOD T1
LMN 2*5
NJN RFS2 IF NOT END OF MOVE
STD T1
RFS3 LDN 2 ADVANCE SECTOR WORD COUNT
RAD TI
UJN RFS5 CONTINUE REFORMAT
RFS4 LDN 2*5 ADVANCE SEARCH INDEX
RAD T2
RFS5 LCN 2 DECREMENT WORD COUNT
RAM BFMS+1
NJN RFS1 IF NOT END OF SECTOR
LDD TI SET SECTOR WORD COUNT
STM BFMS+1
NJN RFS6 IF NOT EMPTY SECTOR
* CLEAR LOCAL AREA SECTOR BIT.
CMSTF GLAP
RFS6 LJM RFSX RETURN
RRS SPACE 4,15
** RRS - REREAD SYSTEM SECTOR IF TRACK INTERLOCK NOT SET.
*
* ENTRY (PF) = TRACK INTERLOCK STATUS.
*
* EXIT TO CALLER IF TRACK INTERLOCKED ON ENTRY.
*
* EXIT (A) = (T6) IF TRACK NO LONGER RESERVED.
* = RESPONSE FROM *RSS*.
* TO PREVIOUS *RSS* CALLER.
*
* CALLS RSS, STI.
*
* MACROS ENDMS.
RRS SUBR ENTRY/EXIT
LDD PF
NJN RRSX IF FIRST TRACK INTERLOCKED
ENDMS
LDM RSS CHANGE RETURN TO LAST *RSS* CALLER
STM RRS
RJM STI SET TRACK INTERLOCK
NJN RRSX IF TRACK NO LONGER RESERVED
* LDN 0 REREAD SYSTEM SECTOR
RJM RSS
UJN RRSX RETURN
SPACE 4,10
OVERFLOW OVLA,BUF
OVERLAY (SHARED MASS STORAGE FUNCTIONS.),INT
CSD SPACE 4,15
*** FUNCTION *CSDF* - CHECK SHARED DEVICE STATUS.
*
* ENTRY (IR+3 - IR+4) = ADDRESS (ADDR) OF PARAMETERS.
* (T5) = EST ORDINAL.
* (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
* (WB - WB+4) = PARAMETER WORD AT ADDR.
*
*T, ADDR 12/ ESTO, 48/ 0
*
* EXIT WHEN DEVICE UNLOADED ON OTHER MACHINES -
*
*T, ADDR 12/ 7777, 48/ 0
CSD ENTRY
LDD LD
ZJP CSD7 IF INDEPENDENT SHARED DEVICE
RJM CRI CHECK RECOVERY INTERLOCK
RJM GDS GET DAT TRACK
ZJN CSD2 IF NOT DEFINED IN DAT
LDM BFMS+2+4,TI GET MST SECTOR
STD T6
LDN 0 SET SECTOR
STD T7
LDM BFMS+2+5+4,TI GET DAT STATUS
STD WB
SETMS IO,(DF,NS)
LDC BFMS READ MST FROM LINK DEVICE
RJM RDS
MJP GDS2 IF READ ERROR
ENDMS
STD T2 INITIALIZE MACHINE INDEX
* CHECK UNLOAD STATUS IN OTHER MACHINES.
LDC BFMS+2+STLL*5
STD TI
CSD1 AOD T2 INCREMENT DEVICE INDEX
LMN MXMF+1
CSD2 ZJN CSD5 IF END OF LOCAL AREAS
LDI TI
LPN MLDUL
NJN CSD4 IF UNLOADED
LDD T2
LMD MI
ZJN CSD3 IF THIS MACHINE
LDD WB
CSDA SHN 21-0
MJN CSD6 IF DEVICE ACTIVE ON ANOTHER MACHINE
UJN CSD4 ADVANCE SEARCH
CSD3 LDI TI CHECK THIS MACHINE STATUS
SHN 21-LIAL+LIAL/12D*12D
MJN CSD4 IF DEADSTART INITIALIZE
LDM 1,TI
LPN 77 CHECK ERROR CONDITION
LMN STLE
ZJN CSD4 IF LABEL ERROR
LDM 3,TI
NJN CSD6 IF ACTIVE USERS ON DEVICE
CSD4 LDN LLLL*5
RAD TI ADVANCE SEARCH INDEX
SOM CSDA
UJN CSD1 LOOP
CSD5 LCN 0
STD WB
RJM LDA SET ADDRESS OF PARAMETER BLOCK
CWD WB
LJM DPP EXIT
CSD6 LDM 2,TI SET MACHINE ID IN MESSAGE
STM CSDD
LDC CSDC SET MESSAGE ADDRESS
LJM RCL RECALL *IMS*
CSD7 LDD ES+4 CHECK ERROR STATUS
SHN 3
ADN STLL
CRD CM
LDD CM+1
LPN 77
LMN STLE
ZJN CSD5 IF LABEL ERROR
LDD CM
SHN 21-LIAL+LIAL/12D*12D
MJN CSD10 IF DEADSTART INITIALIZE
LDC BFMS READ DIT TO BUFFER
RJM RDT
LDC MMFL GET MACHINE ID
CRD T7
LDC BFMS+2 SET SEARCH INDEX
STD TI
CSD8 LDM 2,TI
ZJN CSD9 IF SLOT NOT ASSIGNED
LDM 1,TI
LPN 2
NJN CSD9 IF NON-REMOVABLE DEVICE UNLOADED
LDM 2,TI
LMD T7
NJN CSD11 IF NOT THIS MACHINE
CSD9 LDN 5
RAD TI
LMC BFMS+2+5*MISD
NJN CSD8 IF NOT END OF SEARCH
CSD10 LJM CSD5 SET RESPONSE
CSD11 LJM CSD6 SET BUSY RESPONSE
CSDC DATA H* EQXXX, BUSY ON MID *
CSDD DATA C*XX.*
ISD SPACE 4,15
*** FUNCTION *ISDF* - INTERLOCK INDEPENDENT SHARED DEVICE.
*
* ENTRY (IR+3 - IR+4) = ADDRESS (ADDR) OF PARAMETERS.
* (T5) = EST ORDINAL.
* (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
* (WB - WB+4) = PARAMETER WORD AT ADDR.
*
*T, ADDR 12/ ESTO, 47/ 0, 1/ F
* F = 0 TO CLEAR INTERLOCK.
* = 1 TO SET INTERLOCK.
*
* EXIT
*
*T, ADDR 12/ 7777, 48/ 0
ISD11 LDC ISDD ISSUE MESSAGE TO DAYFILE
RJM DFM
LJM DPP EXIT
ISD ENTRY
LDD ES+4 FETCH LABEL TRACK WORD FROM MST
SHN 3
ADN ALGL
CRD CN
LDC MMFL GET MACHINE ID
CRD FN
LDD CN+1 SET LABEL TRACK
STD T6
LDN 0
STD T7
SETMS IO,(DE,DF,NS,RW)
LDC BFMS READ LABEL SECTOR
RJM RDS
MJN ISD11 IF READ ERROR
LDC DISS
STD TI
ISD1 LDM 3,TI CHECK INITIALIZE INTERLOCK
LPN 1
ZJN ISD2 IF INTERLOCK NOT SET
LJM ISD7 PROCESS INTERLOCK SET
ISD2 LDM 4,TI
LMD FN
NJN ISD3 IF NOT THIS MACHINE
LDD TI SAVE ADDRESS FOR THIS MACHINE
ADN 3
STM ISDA
ISD3 LDN 5 INCREMENT ADDRESS
RAD TI
LMC DISS+5*MISD
NJN ISD1 IF NOT END OF SEARCH
LDD WB+4 CHECK FUNCTION
ZJN ISD5 IF CLEARING INTERLOCK
AOM ** SET INTERLOCK
ISDA EQU *-1
ISD4 RJM CDC COMPUTE LABEL CHECKSUM
STM CKSS
LDC BFMS+WLSF REWRITE LABEL SECTOR
RJM WDS
ISD5 ENDMS
LCN 0 SET RESPONSE
STD WB
RJM LDA
CWD WB
LDD WB+4
ZJN ISD6 IF CLEARING INTERLOCK
SMSTF LPTU SET TRT IN CM FLAG
ISD6 LJM DPP EXIT
ISD7 LDM 4,TI
LMD FN
NJN ISD8 IF NOT THIS MACHINE
LDD WB+4
NJN ISD5 IF SETTING THE INTERLOCK
SOM 3,TI
UJP ISD4 REWRITE SECTOR
ISD8 LDD ES+4 FETCH MST ERROR STATUS
SHN 3
ADN STLL
CRD CM
LDD CM+1 CHECK ERROR STATUS
LPN 77
LMN STLE
ZJN ISD9 IF LABEL ERROR
LDD CM
SHN 21-LIAL+LIAL/12D*12D
PJN ISD10 IF NOT DEADSTART INITIALIZE
ISD9 LJM ISD5 SET INTERLOCK COMPLETE
ISD10 LDM 4,TI SET MACHINE ID IN MESSAGE
STM ISDC
ENDMS
LDC ISDB DISPLAY MESSAGE
LJM RCL RECALL *IMS*
ISDB DATA H* EQXXX, INTERLOCKED BY MID *
ISDC DATA C*XX.*
ISDD DATA C* EQXXX, LABEL READ ERROR.*
CRI TITLE SUBROUTINES.
** CRI - CHECK RECOVERY INTERLOCK.
*
* EXIT TO *RCL* IF INTERLOCK NOT SET.
*
* USES CN - CN+4.
*
* CALLS IFR, RCL.
CRI1 LDC 4000 SET INTERLOCK FLAG
RAD CN+2
LDC MMFL STORE DAT INTERLOCK STATUS
CWD CN
CRI2 AOM RCLB FLAG DAT INTERLOCK SET
CRI SUBR ENTRY/EXIT
LDC MMFL
CRD CN
LDD CN+2 CHECK DAT INTERLOCKED
SHN 21-13
MJN CRI2 IF INTERLOCKED BY THIS MACHINE
LDN DATI GET DAT INTERLOCK
RJM IFR
ZJN CRI1 IF INTERLOCK SET
LDC CRIA RECALL WAITING FOR INTERLOCK
UJN RCL RECALL *IMS*
CRIA DATA C*$WAITING - RECOVERY INTERLOCK.*
RCL SPACE 4,10
** RCL - RECALL *IMS*.
*
* ENTRY (A) = MESSAGE ADDRESS.
* (IR - IR+4) = *IMS* CALL.
RCL STM RCLA WRITE MESSAGE TO CP
LDD CP
ADN MS2W
CWM **,TR
RCLA EQU *-1
RCLB LDN 0
* LDN 1 (DAT INTERLOCK SET)
ZJN RCL1 IF DAT NOT INTERLOCKED
LCN DATI
RJM IFR
LDC MMFL CLEAR DAT INTERLOCK FLAG
CRD CM
LDC 4000
RAD CM+2
LDC MMFL
CWD CM
RCL1 LDN ZERL
CRD CM
LDD MA RECALL REQUEST
CWM IR,ON
CWD CM
MONITOR RECM
LJM PPR EXIT
SPACE 4,10
** COMMON DECKS.
*CALL COMPCLC
SPACE 4
OVERFLOW OVLA,BFMS
INT SPACE 4,10
** INT - INITIALIZE OVERLAY.
*
* ENTRY (IR - IR+4) = *IMS* CALL.
*
* EXIT (ES - RS+4) = EST ENTRY.
* (WB - WB+4) = PARAMETER WORD FOR *IMS* CALL.
* (T5) = EST ORDINAL FROM THE PARAMETER WORD.
*
* CALLS C2D, LDA.
*
* MACROS SFA.
INT SUBR ENTRY/EXIT
RJM LDA READ PARAMETER WORD
CRD WB
SFA EST,WB GET EST ENTRY
ADK EQDE
CRD ES
LDD WB SET EST ORDINAL
STD T5
STM EQNO
RJM C2D
STM CSDC+2
STM ISDB+2
STM ISDD+2
LDD WB
SHN -6
ADC 2RQ0
STM CSDC+1
STM ISDB+1
STM ISDD+1
UJP INTX RETURN
OVERLAY (MISCELLANEOUS FUNCTIONS.)
SFL SPACE 4,10
*** FUNCTION *SFLF* - SET FLAWS.
*
* ENTRY (IR+3 - IR+4) = ADDRESS (ADDR) OF PARAMETERS.
*
*T, ADDR 12/ TYPE, 12/ 0, 12/ ESTO, 12/ 0, 12/ TRACK
*
* TYPE 0 = END OF TABLE.
* 1 = SET FLAW.
* 2 = CLEAR FLAW.
SFL ENTRY
LDN PNFE PARAMETER BLOCK WORD COUNT
STD TI
RJM LDA READ FLAW LIST
CRM BUF,TI
LDN 0 SET END OF BUFFER
STM BUF+PNFE*5
LDM BUF+2 SET MASS STORAGE EQUIPMENT
RJM SME
LDD ES+4
SHN 3
ADK TDGL FETCH TRT LENGTH FROM MST
CRD CN
RJM TRT UPDATE TRT
LDN 0
STD CA CLEAR FLAW REQUESTS PROCESSED
STD T4
STD CA+1 CLEAR FLAWS NOT PROCESSED
STD TI
LDC MESBL-1 SET MESSAGE BUFFER ADDRESS FOR FLAWS
STD TA
LDN 5+1 NUMBER OF TRACKS + 1 PRINTED PER LINE
STD T3
UJN SFL4 ENTER LOOP
* ENTER FLAW NOT PROCESSED IN MESSAGE.
SFL1 SOD T3
NJN SFL2 IF NOT YET A FULL LINE
STI TA COMPLETE PREVIOUS LINE
AOD T4 INCREMENT LINE COUNT
LDN 5 NUMBER OF TRACKS PRINTED PER LINE
STD T3
SFL2 AOD CA+1 COUNT FLAWS NOT PROCESSED
AOD TA
LDD T6 PLACE TRACK IN MESSAGE
SHN -6
RJM C2D
STI TA
AOD TA
LDD T6
RJM C2D
STI TA
AOD TA
LDC 2R,
STI TA
* INCREMENT TO NEXT FLAW REQUEST.
SFL3 AOD CA INCREMENT REQUEST COUNTER
LDN 5
RAD TI ADVANCE TO NEXT REQUEST
* CHECK FLAW REQUEST.
SFL4 LDM BUF+4,TI CHECK TRACK BIT
RJM CTB
LDM BUF,TI
ZJN SFL9 IF END OF LIST
LDD T2
SBD CN+2
PJN SFL8 IF OUT OF TRT
LDM CM,T1 CHECK LINKAGE BYTE
LMC 3777
NJN SFL7 IF TRACK NOT PREVIOUSLY FLAWED
LDM BUF,TI CHECK REQUEST TYPE
SBN 1
SFL5 ZJN SFL3 IF SET REQUEST
LDN CTFS&STFS
SFL6 LMK STFS SET FLAW REQUEST
RJM STB
ZJN SFL5 IF NO REJECT
UJN SFL8 SET FLAW NOT PROCESSED
SFL7 LDM BUF,TI
LMN 2
ZJN SFL5 IF CLEAR REQUEST
LDD CM+4
ZJN SFL6 IF TRACK NOT RESERVED
SFL8 LJM SFL1 SET FLAW NOT PROCESSED
SFL9 LDD CA COMPUTE FLAWS PROCESSED
SBD CA+1
RJM C2D CONVERT TO DISPLAY CODE
STM MESA+4
LDC MESA * EQXXX, YY TRACKS FLAWED.*
RJM DFM
LDC ERLN+MESA ISSUE MESSAGE TO ERRLOG
RJM DFM
LDD CA+1
ZJN SFL11 IF ALL FLAWS PROCESSED
RJM C2D
STM MESB+4 INSERT COUNT IN MESSAGE
LDC MESB
RJM DFM * EQXXX, YY FLAWS NOT PROCESSED.*
LDC ERLN+MESB
RJM DFM
LDN 0
STI TA COMPLETE LAST PARTIAL LINE
LDC MESBL-3*5
STD T3
SFL10 LDN 3*5 ADVANCE TO NEXT LINE
RAD T3
RJM DFM ISSUE A BUFFER OF FLAWS MESSAGE
LDD T3
LMC ERLN ISSUE MESSAGE TO ERRLOG
RJM DFM
SOD T4
PJN SFL10 IF MORE BUFFERS TO ISSUE
SFL11 LJM DPP2 INITIALIZE PACK FLAWS
IDF SPACE 4,15
*** FUNCTION *IDFF* - INITIALIZE INACTIVE DAYFILES.
*
* ENTRY (IR+3) = 6/ N, 6/ 0
* (IR+4) = EST ORDINAL.
*
* N = 0 TO INITIALIZE SYSTEM DAYFILE.
* = 1 TO INITIALIZE ACCOUNT FILE.
* = 2 TO INITIALIZE ERRLOG FILE.
* = 3 TO INITIALIZE MAINTENANCE LOG FILE.
*
* EXIT INACTIVE DAYFILE TRACK CHAINS RELEASED.
IDF ENTRY
RJM GLA GET LOCAL AREA SECTOR
ZJN IDF1 IF NO DAYFILES ON DEVICE
STM IDFA
LDD IR+3 PICKUP FILE POINTER
SHN -6
STD TI
ADN 1 SET POINTER FOR CHECKPOINT REQUEST
STM CKCA+4
LDM IDFA,TI
IDFA EQU *-1
NJN IDF2 IF FILE ON THIS EQUIPMENT
IDF1 LDC MESG * EQXXX, NO INACTIVE DAYFILES FOUND.*
LJM IDF8 CLEAR INTERLOCK AND EXIT
* SET DAYFILE EQUIPMENTS FOR ACTIVE FILES.
IDF2 STD T6 SET FIRST TRACK
LDN DFPP
CRD FN DAYFILE POINTER (FN)
LDD TI
SHN 1
ADD TI
SHN 6
ADD FN SET FWA OF DAYFILE POINTERS
SHN 14
ADD FN+1
ADN 2
CRD CN READ DAYFILE FST
LDD CN
LPN 77
LMD T5
NJN IDF4 IF NOT ACTIVE DAYFILE
LDC MESI * EQXXX, FILE ACTIVE - (NAME)*
UJN IDF7 CLEAR INTERLOCK AND ISSUE MESSAGE
IDF4 RJM DTS CHECK IF INTERLOCKED
PJN IDF5 IF FILE FREE
LDC MESJ * EQXXX, FILE BUSY - (NAME)*
UJN IDF7 CLEAR INTERLOCK AND ISSUE MESSAGE
* RELEASE FILE FROM SYSTEM.
IDF5 RJM STI INTERLOCK FILE
LMD T6
ZJN IDF6 IF TRACK NOT RESERVED
STD CM+2
LDD T5 RELEASE FILE
STD CM+1
MONITOR DTKM
* LDN 0 INDICATE LOCAL AREA UPDATE
IDF6 STM IDFD
UJN IDF10 ISSUE MESSAGES
IDF7 STD CM SET MESSAGE ADDRESS
ADN MENM
STM IDFC SET FILE TYPE ADDRESS
LDM DFTY,TI
STM IDFB SET FILE NAME
LDD MA
CWM **,ON
IDFB EQU *-1 FILE NAME ADDRESS
SBN 1
CRM **,ON READ FILE NAME INTO MESSAGE
IDFC EQU *-1
LDD CM ISSUE DAYFILE MESSAGE
ADC NMSN
IDF8 RJM DFM
LDC * CHECK FOR LOCAL AREA UPDATE
IDFD EQU *-1
ZJN IDF9 IF LOCAL AREA UPDATE REQUIRED
LJM DPP DROP PP
IDF9 LDN 4
LJM CKC CHECKPOINT LOCAL AREA
* ISSUE NORMAL COMPLETION MESSAGES.
IDF10 LDM DFTY,TI SET FILE NAME ADDRESS
STM IDFE
LDD MA MOVE FILE NAME TO MESSAGE
CWM **,ON
IDFE EQU *-1 (FILE NAME ADDRESS)
SBN 1
CRM MESH+MENM,ON
LDC MESH+NMSN ISSUE DAYFILES ONLY MESSAGE
UJN IDF8
* DAYFILE NAME POINTERS.
DFTY CON DFDF
CON DFAF
CON DFEL
CON DFML
* DAYFILE NAMES.
DFDF DATA 10HDAYFILE.
DFAF DATA 10HACCOUNT.
DFEL DATA 10HERRLOG.
DFML DATA 10HMAINLOG.
CIN SPACE 4,10
*** FUNCTION *CINF* - CLEAR INITIALIZE REQUEST.
*
* ENTRY (IR+4) = EST ORDINAL.
CIN ENTRY
LDD IR+4
STD T5
SFA EST READ EST ENTRY
ADK EQDE
CRD ES
LDD ES+4 GET MST STATUS WORD
SHN 3
ADN STLL
CRD WB
LDD WB CLEAR INITIALIZE FLAGS
STD T1
LPN MLCKP+MRASD+MLUNL+MLDUL
STD WB
LDD WB+1
LPN 77
STD WB+1
CIN1 LDD ES+4 STORE DEVICE STATUS WORD
SHN 3
ADN STLL
CWD WB
CMSTF LIAL FORCE MST UPDATE ON LINK DEVICE
LDD T1
LPC MLIAL+MLIHD+MLIFD+MLIPF
ZJN CIT3 IF NOT PF/FULL INITIALIZE
SOD CN+2
MJN CIT3 IF NOT MMF ENVIRONMENT
LPN 77
NJN CIT2 IF NOT LAST INITIALIZE REQUEST
* UJN CIT
CIT SPACE 4,10
*** FUNCTION *CITF* - CLEAR *CMS* INTERLOCK.
*
* ENTRY (IR+4) = *MSI* ABORT FLAG.
CIT ENTRY
LDD IR+4
NJN CIT4 IF *MSI* ABORT
CIT1 LDD CN+2 CHECK DAT INTERLOCKED
SHN 0-13
ZJN CIT3 IF INTERLOCK NOT SET
LCN DATI CLEAR DATI INTERLOCK
RJM IFR
STD CN+2 CLEAR INITIALIZE COUNT
CIT2 LDC MMFL
CWD CN
CIT3 LJM DPP DROP PP
CIT4 LDM ABTB
NJN CIT5 IF NOT DEADSTART SEQUENCING
LDD MA STORE *UADM* PARAMETERS
CWM CITA,ON
LDN 1 SET WORD COUNT / NO DROP PP
STD CM+1
STD CM+2 DISABLE JOB SCHEDULER
MONITOR UADM
CIT5 LDN NCPL READ NUMBER OF CONTROL POINTS
CRD CM
AOD CM+1 SET SYSTEM CONTROL POINT
SHN 7
ADN MS2W STORE CONTROL POINT MESSAGE
CWM CITB,TR
LJM CIT1 CHECK DAT INTERLOCKED
CITA CON LIOS INCREMENT BY ONE
CON INWL WORD ADDRESS
CON 13DS6+1 BIT POSITION + FIELD WIDTH
CON 0,0
CITB DATA C*MSI ABORT.*
SPACE 4,10
* COMMON DECKS.
*CALL COMPDTS
SPACE 4,10
OVERFLOW OVLA,BUF
SPACE 4
TTL IMS - INITIALIZE MASS STORAGE.
END