IDENT 1MV,IMV
PERIPH
BASE MIXED
SST
*COMMENT 1MV - MASS STORAGE AND MEDIA VERIFICATION.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TITLE 1MV - MASS STORAGE AND MEDIA VERIFICATION.
SPACE 4,10
*** 1MV - MASS STORAGE AND MEDIA VERIFICATION.
*
* R. K. MYERS. 84/11/19.
* W. E. GOEBEL. 85/04/12.
SPACE 4,10
*** *1MV* PERFORMS THE FOLLOWING MASS STORAGE VALIDATION
* FUNCTIONS.
*
* 0 = DVFC = MASS STORAGE DEVICE VERIFICATION.
* PERFORM A PHYSICAL AND LOGICAL VERIFICATION OF A MASS
* STORAGE EQUIPMENT.
* PHYSICAL VERIFICATION INVOLVES WRITING AND READING
* THE MAINTENANCE CYLINDER ON ALL UNITS OF A DEVICE
* THROUGH ALL CHANNELS OF ACCESS. THE DATA READ IS
* VERIFIED AGAINST THE DATA WRITTEN.
* LOGICAL VERIFICATION INVOLVES THE READING OF THE
* LABEL SECTOR ON ALL UNITS OF A DEVICE THROUGH ALL
* CHANNELS OF ACCESS. THE LABEL READ IS VERIFIED FOR
* THE PROPER DATA.
*
* 1 = ONFC = SET DEVICE IN *ON* STATE.
* THE DEVICE IS TURNED ON UPON SUCCESSFUL VERIFICATION.
*
* 2 = IDFC = SET DEVICE IN *IDLE* STATE.
* SET THE DEVICE IN THE *IDLE* STATE UPON A SUCCESSFULL
* VERIFICATION.
*
* 3 = OFFC = SET DEVICE IN *OFF* STATE.
* SET THE DEVICE IN THE *OFF* STATE UPON A SUCCESSFULL
* LABEL VERIFICATION. THE PHYSICAL VERIFICATION IS
* NOT PERFORMED.
*
* 4 = MVFC = MEDIA VERIFICATION.
* A LOGICAL TRACK IS WRITTEN AND READ SECTOR
* BY SECTOR THROUGH ALL CHANNELS OF ACCESS.
* IF NO ERRORS ARE ENCOUNTERED, THE TRACK FLAW
* IS CLEARED AND THE TRACK CAN BE REUSED.
*
* 5 = UCFC = MASS STORAGE DATA PATH VERIFICATION AND SET
* CHANNEL STATE = *UP*.
* PERFORM A PHYSICAL AND LOGICAL VERIFICATION OF A
* MASS STORAGE EQUIPMENT USING A SPECIFIED CHANNEL.
* PHYSICAL AND LOGICAL VERIFICATION ARE PERFORMED IN THE
* SAME FASHION AS FOR FUNCTION *DVFC* WITH THE EXCEPTION
* THAT ONLY THE SPECIFIED CHANNEL IS USED. UPON
* SUCCESSFUL VERIFICATION, THE CHANNEL STATE IS CHANGED
* TO *UP*.
*
* 6 = SCFC = DISK SWEEP CYCLING.
* PERFORM THE NEXT SEEK SEQUENCE IN THE SWEEP CYCLING
* ALGORITHM FOR ALL PHYSICAL UNITS OF THE DEVICE WHOSE
* EST ORDINAL WAS PASSED IN THE *1MV* CALL.
SPACE 4,15
*** CALL.
*
*T 18/1MV, 6/CP, 12/EST, 6/FCN, 1/R, 17/PAR.
*
* CP CALLING CONTROL POINT.
* EST EST ORDINAL TO PROCESS.
* FCN FUNCTION CODE.
* R LABEL REPAIR HAS BEEN ATTEMPTED.
* PAR = TRACK NUMBER TO TEST (FUNCTION *MVFC*).
* = CHANNEL NUMBER, INCLUDING CONCURRENCY FLAG (FUNCTION
* *UCFC*).
SPACE 4,10
** COMMON DECKS.
*CALL COMPMAC
*CALL COMPCHI
*CALL COMSCPS
*CALL COMSDFS
QUAL DSL
*CALL COMSDSL
QUAL *
PLSS EQU /DSL/PLSS
*CALL COMSEVT
*CALL COMSHIO
*CALL COMSLSD
QUAL MMF
*CALL COMSMMF
QUAL *
MISD EQU /MMF/MISD
*CALL COMSMSP
*CALL COMSMST
*CALL COMSPFM
*CALL COMSPIM
*CALL COMSSSE
*CALL COMSWEI
*CALL COMSZOL
*CALL COMS1DS
LIST X
*CALL COMS1MV
LIST *
TITLE MACRO DEFINITIONS.
FCN SPACE 4,10
** FCN - DEFINE FUNCTION PROCESSOR.
*
* FN FCN P,R,E
*
* FN FUNCTION CODE.
* P NAME OF FUNCTION PROCESSOR.
* R NAME OF REPAIR PROCESSOR (HANDLES REPAIRABLE ERRORS).
* E ERRORS THAT CAN BE REPAIRED BY *R*.
*
* TABLE GENERATED.
*
*T,TN 12/ P,12/ R,12/ E
PURGMAC FCN
MACRO FCN,FN,P,R,E
MACREF FCN
ORG TFCN+3*FN
LOC FN
.A IFC NE,$P$$
CON P,R,E
.A ELSE
LOC *O
.A ENDIF
ENDM
OVERLAY SPACE 4,10
** OVERLAY - DEFINE THE SECONDARY OVERLAY(S).
*
* OVERLAY (TEXT)
* ENTRY *TEXT* = TEXT OF SUBTITLE.
.N SET 0
OVLB MICRO 1,, 2V OVERLAY NAME
PURGMAC OVERLAY
OVERLAY MACRO TEXT
MACREF OVERLAY
QUAL
.N SET .N+1
.M MICRO .N,1, ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
.O MICRO 1,3, "OVLB"".M"
QUAL ".O"
TITLE ".O" - TEXT
IDENT ".O",OVLA TEXT
*COMMENT 1MV - TEXT
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
ORG OVLA
LJM * ENTRY/EXIT
UJN *-2 OVERLAY EXIT ADDRESS
ENDM
ENTRY SPACE 4,10
** ENTRY - DEFINE OVERLAY ENTRY POINT.
*
* NAME ENTRY
* NAME = NAME OF ENTRY ADDRESS.
PURGMAC ENTRY
MACRO ENTRY,NAME
MACREF ENTRY
QUAL
NAME BSS 0 ENTRY
QUAL *
ENDM
VERIFY SPACE 4,10
** VERIFY - DEFINE HARDWARE VERIFICATION ROUTINE FOR EQUIPMENT.
*
* NAME ENTRY EQ
* NAM = NAME OF ENTRY ADDRESS.
* EQ = EQUIPMENT TYPE(S) TO VERIFY.
PURGMAC VERIFY
MACRO VERIFY,NAM,EQ
MACREF VERIFY
NAM SUBR ENTRY/EXIT
IRP EQ
PRC._EQ EQU NAM
IRP
ENDM
SPACE 4,20
**** DIRECT LOCATION ASSIGNMENTS.
BEGIN BSSN 16
T8 BSSN 1 SCRATCH
T9 BSSN 1 SCRATCH
CN BSSN 5 CM WORD BUFFER (5 LOCATIONS)
CC BSSN 1 CURRENT CHANNEL ORDINAL FOR DEVICE
DA BSSN 1 CHANNEL COUNT - 1 FOR DEVICE
ES BSSN 5 EST ENTRY (5 LOCATIONS)
EI BSSN 1 SCRATCH
FC BSSN 1 FUNCTION CODE
FP BSSN 1 *SEQM* FUNCTION PARAMETER
HC BSSN 1 HEAD PROCESSING COUNTER
MT BSSN 1 MEDIA ERROR THRESHOLD (1MV)
* SCRATCH CELL (2VA)
NS BSSN 1 NUMBER OF SECTORS TO PROCESS
SU BSSN 1 SINGLE UNIT SECTOR LIMIT
DP BSSN 5 DEVICE SEEK PARAMETERS (5 LOCATIONS)
ERRNG 50-* DIRECT CELL OVERFLOW
BSSN 57-*
SP BSSN 1 STATISTICS BUFFER POINTER
ERRNG 70-* DIRECT CELL OVERFLOW
END BSSN
EQ EQU IR+2 EQUIPMENT ORDINAL TO PROCESS
****
SPACE 4,10
**** ASSEMBLY CONSTANTS.
BUFL EQU 502 PP BUFFER SIZE
BUFP EQU 5252 BUFFER WORD PATTERN FOR WRITE/READ TEST
CH EQU 0 MASS STORAGE CHANNEL
DVSC EQU 3 DEVICE VERIFICATION SECTOR COUNT
FCOC EQU 10 OPERATION COMPLETE FUNCTION CODE
FCGS EQU 12 GENERAL STATUS FUNCTION CODE
FCFP EQU 16 FORMAT 895 FUNCTION CODE
FPBL EQU 22 PARAMETER BLOCK LENGTH FOR 895 FORMATTING
METH EQU 6 MAINTENANCE CYLINDER MEDIA ERROR THRESHOLD
** STATISTICS BUFFER DEFINITION.
BEGIN BSSN 0
WCDB BSSN 1 WRITE ERROR CODE BYTE
RCDB BSSN 1 READ ERROR CODE BYTE
FMTB BSSN 1 895 FORMATTING ERROR COUNT BYTE
WCTB BSSN 1 WRITE ERROR COUNT BYTE
RCTB BSSN 1 READ ERROR COUNT BYTE
VCTB BSSN 1 VERIFY ERROR COUNT BYTE
FMNB BSSN 3 FAMILY/PACK NAME BYTES
DNMB BSSN 1 DEVICE NUMBER BYTE
EMNB BSSN 1 EQUIPMENT MNEMONIC BYTE
LREB BSSN 1 LABEL READ ERROR CODE
LEFB BSSN 1 LABEL ERROR FLAGS
MXNB BSSN 0 MAXIMUM STATUS BUFFER BYTES
END BSSN
TBUFL EQU 2*10*MXNB TOTAL BUFFER LENGTH IN PP BYTES
****
TITLE MAIN PROGRAM.
** 1MV - MAIN PROGRAM.
ORG PPFW
IMV LJM PRS PRESET PROGRAM
DPP SPACE 4,10
** DROP PP.
DPP RJM RAE RELEASE ASSIGNED EQUIPMENT
RJM CVI CLEAR VERIFICATION INTERLOCK
MONITOR DPPM DROP PP
LJM PPR EXIT TO PP RESIDENT
TITLE FUNCTION PROCESSORS.
DVFC SPACE 4,10
** DVFC - DEVICE VERIFICATION AND CLEAR SUSPECT.
*
* ENTRY (IR+2) = EST ORDINAL TO VERIFY.
* (IR+3) = UPPER 6 BITS IS FUNCTION CODE *DVFC*.
DVF ENTRY ENTRY
RJM DHV PERFORM DEVICE VERIFICATION
RJM LBV PERFORM LABEL VERIFICATION
DVF1 RJM CFE CHECK FOR ERRORS
MJN DVF2 IF ERRORS
LDN CSES CLEAR SUSPECT
RJM SDA SET DEVICE AVAILABLE
RJM IPE ISSUE REMOVABLE PACK EVENT
DVF2 CMSTF L1MV CLEAR *1MV* ACTIVE FLAG
DVF3 UJP DPP DROP PP
ONFC SPACE 4,10
** ONFC - DEVICE VERIFICATION AND SET DEVICE *ON*.
*
* ENTRY (IR+2) = EST ORDINAL TO VERIFY.
* (IR+3) = UPPER 6 BITS IS FUNCTION CODE *ONFC*.
ONF ENTRY ENTRY
RJM DHV PERFORM DEVICE VERIFICATION
RJM LBV PERFORM LABEL VERIFICATION
ONF1 RJM CFE CHECK FOR ERRORS
MJN ONF2 IF ERRORS
LDN ONES SET DEVICE ON
RJM SDA SET DEVICE AVAILABLE
* LDN 0
RJM SVF CLEAR VERIFICATION FAILURE COUNT
ONF2 UJN DVF3 DROP PP
IDFC SPACE 4,10
** IDFC - DEVICE VERIFICATION AND SET DEVICE *IDLE*.
*
* ENTRY (IR+2) = EST ORDINAL TO VERIFY.
* (IR+3) = UPPER 6 BITS IS FUNCTION CODE *IDFC*.
IDF ENTRY ENTRY
RJM DHV PERFORM DEVICE VERIFICATION
RJM LBV PERFORM LABEL VERIFICATION
IDF1 RJM CFE CHECK FOR ERRORS
MJN IDF2 IF ERRORS
LDN IDES SET DEVICE IN *IDLE* STATE
RJM SDA SET DEVICE AVAILABLE
IDF2 UJN ONF2 DROP PP
LVA SPACE 4,10
** LVFC - LABEL VERIFICATION AND SET DEVICE *OFF*.
*
* ENTRY (IR+2) = EST ORDINAL TO VERIFY.
* (IR+3) = UPPER 6 BITS IS FUNCTION CODE *OFFC*.
LVA ENTRY ENTRY
RJM LBV PERFORM LABEL VERIFICATION
RJM CFE CHECK FOR ERRORS
MJN LVA1 IF ERRORS
LDN OFES SET DEVICE OFF
RJM CSF ISSUE *SEQM* FUNCTION
LVA1 UJN IDF2 DROP PP
MVA SPACE 4,10
** MVFC - MEDIA VERIFICATION OF A PARTICULAR TRACK.
*
* ENTRY (IR+2) = EST ORDINAL TO PROCESS.
* (IR+3) = UPPER 6 BITS IS FUNCTION CODE *MVFC*.
* (IR+4) = LOGICAL TRACK NUMBER TO VERIFY.
MVA ENTRY ENTRY
LDD ES+4 READ MAXIMUM TRACKS
SHN 3
ADK TDGL
CRD CM
LDD IR+4 PRESET TRACK NUMBER TO PROCESS
STD T6
LPC 3777
SBD CM
PJP MVA6 IF BEYOND END OF TRT
SETMS IOCH,(AD,DE,DF,ND,NR),DBUF
RJM FBP FILL BUFFER WITH WRITE PATTERN
* WRITE, READ AND VERIFY ENTIRE TRACK.
LDD T4 SET CHANNEL FOR BUFFERED DEVICE
MVA1 STM STSB
LDN 0 INITIALIZE SECTOR NUMBER
STD T7
LDN MXSC SET SECTOR COUNT
STD NS
MVA2 SBD NS
PJN MVA3 IF NOT MAXIMUM SECTORS TO PROCESS
RAD NS
MVA3 RJM WCS WRITE CONSECUTIVE SECTORS
NJN MVA5 IF WRITE ERRORS
RJM RCS READ BACK SECTOR DATA
NJN MVA5 IF READ ERRORS
RJM VBD VERIFY BUFFER DATA
NJN MVA5 IF DATA VERIFICATION ERRORS
LDM SLM
SBD T7
NJN MVA2 IF NOT SECTOR LIMIT
RJM SNC
PJP MVA1 IF ANOTHER CHANNEL TO PROCESS
LDD EQ
STD CM+1
LDD IR+4 TRACK NUMBER TO CLEAR FLAW ON
STD CM+2
LDN CTFS
STD CM+3
MONITOR STBM
UJN MVA6 RETURN
MVA5 ENDMS
LDK /COMSDFS/HS0105 ISSUE BML MESSAGE
RJM IBM
MVA6 LDD EQ CLEAR TRACK NUMBER IN MST
STD CM+1
LDD IR+4
STD CM+2
LDN CFTS CONDTIONALLY CLEAR TRACK NUMBER
STD CM+3
MONITOR SMDM
MVA7 UJP DVF2 CLEAR *1MV* ACTIVE AND DROP PP
UCFC SPACE 4,10
** UCFC - DATA PATH VERIFICATION AND SET CHANNEL STATE = *UP*.
*
* ENTRY (IR+2) = EST ORDINAL OF EQUIPMENT TO VERIFY.
* (IR+3) = UPPER 6 BITS IS FUNCTION CODE *UCFC*.
* (IR+4) = CHANNEL NUMBER, INCLUDING CONCURRENCY FLAG.
UCF ENTRY ENTRY
UCF1 LDM TSCH,CC
STD T4 STORE CHANNEL FOR VERIFICATION PROCESSOR
STM TSCH
LMD IR+4
ZJN UCF3 IF CHANNEL FOUND IN TABLE
AOD CC
LMD DA
NJN UCF1 IF ANOTHER CHANNEL
UCF2 UJN MVA7 DROP PP
UCF3 STD CC FORCE SINGLE CHANNEL VERIFICATION
STM DCHA+4
STM HVLA DISABLE HYDRA DIAGNOSTICS
ADN 1
STD DA
LDD ES
SHN 21-6
MJN UCF5 IF UNAVAILABLE DEVICE
RJM DHV PERFORM VERIFICATION ON SPECIFIED CHANNEL
RJM LBV PERFORM LABEL VERIFICATION
UCF4 RJM CFE CHECK FOR ERRORS
MJN UCF2 IF ERRORS
UCF5 LDD T5 SET CHANNEL STATE TO *UP*
STD CM+1
LDM TSCH CHANNEL
STD CM+2
LDK SUCS SUBFUNCTION
STD CM+3
MONITOR SCSM
RJM CEQ CLEAR ERRORS FROM UNIT I/O QUEUE
UCF6 UJP UCF2 CLEAR ACTIVE FLAG AND DROP PP
SCF SPACE 4,10
** SCFC - PERFORM DISK SWEEP CYCLING.
*
* ENTRY (IR+2) = EST ORDINAL OF EQUIPMENT ON WHICH TO PERFORM
* SWEEP CYCLING SEEK SEQUENCE.
* (IR+3) = UPPER 6 BITS IS FUNCTION CODE *SCFC*.
SCF ENTRY ENTRY
EXECUTE 0SC,OVLA EXECUTE *0SC*
UJN UCF6 CLEAR ACTIVE FLAG AND DROP PP
TITLE SUBROUTINES.
AEC SPACE 4,15
** AEC - ANALYZE ERROR CODE.
*
* ENTRY (RDCT) = 6/, 6/ EC.
* EC = ERROR CODE.
* (MT) = MEDIA ERROR THRESHOLD.
*
* EXIT (A) = 0, IF *EC* IS *DRVE* OR *CRSE*.
* = *PARE*, IF *EC*=*PARE* AND *METH* NOT EXCEEDED.
* = 1/1, 1/D, 6/, 1/C, 3/, 6/ EC.
* D = 1, IF *EC*=*DDFE*.
* C = 1, IF CHANNEL OR CONTROLLER ERROR.
* (MT) DECREMENTED IF MEDIA ERROR ENCOUNTERED.
*
* USES MT.
AEC1 LDD MT MEDIA ERROR THRESHOLD
ZJN AEC3 IF TOO MANY MEDIA ERRORS
SOD MT
LDK PARE+1000*IDC.ME
UJN AECX RETURN
AEC2 LMC SHNI&77&DDFE
STM AECA
LDC AECB BIT MAP OF ERRORS INVOLVING CHAN/CONT
SHN 0-** POSITION BIT CORRESPONDING TO ERROR
AECA EQU *-1
LPN 1
LMK IDC.ME
SHN 9D
LMD T0
AEC3 LMC 400000+PARE+1000*IDC.ME
AEC SUBR ENTRY/EXIT
LDM RDCT
LPN 77
LMN DRVE
ZJN AECX IF DRIVE RESERVE ERROR
LMN CRSE&DRVE
ZJN AECX IF CONTROLLER RESERVE ERROR
LMN PARE&CRSE
ZJN AEC1 IF MEDIA ERROR
STD T0
LMN DDFE&PARE
NJN AEC2 IF NOT DIAGNOSTIC FAILURE
LDC 600000+1000*IDC.DF+DDFE
UJN AECX RETURN
* GENERATE THE SET OF ERROR CODES OF CHANNEL/CONTROLLER ERRORS.
.1 SET 1
.2 SET 0
.A ECHO ,ES=("DREC")
.B IFEQ IDC.ES,1
ERRNG 17D-.1 ERROR CODE OVER 17 IS CHAN/CONT ERROR CODE
.1 DECMIC .1
.2 SET .2+1S".1"
.B ENDIF
.1 SET .1+1
.A ENDD
AECB EQU .2
CDA SPACE 4,10
** CDA - CALCULATE PHYSICAL DISK ADDRESS.
*
* ENTRY (T4 - T7) = MASS STORAGE DRIVER PARAMETERS.
* (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
*
* EXIT (DP - DP+4) = SEEK PARAMETERS.
*
* USES T1, T2, T3, T8, T9, CM - CM+4, DP - DP+4.
*
* MACROS MONITOR.
CDA9 LDD MA STORE LOGICAL DISK ADDRESS
CWD T4
MONITOR LDAM CONVERT TO PHYSICAL ADDRESS
LDD MA
ADN 1 RETRIEVE SEEK PARAMETERS
CRD DP
CDA10 AOD DP FLAG DISK ADDRESS PRESENT
CDA SUBR ENTRY/EXIT
LDD DP
NJN CDAX IF ADDRESS ALREADY OBTAINED
STD CM+1
STD T8 CLEAR PHYSICAL SECTOR ACCUMULATOR
CDAA LDD T6
* UJN CDA9 (NON-BUFFERED DEVICE)
LPC 3777
STD T3 ITERATION COUNT FOR CONVERSION
* UNIT INDEX = SECTOR NUMBER / SINGLE UNIT SECTOR LIMIT.
LDD T7 LOGICAL SECTOR NUMBER
STD T9
CDA1 STD T2
AOD DP ADVANCE UNIT INDEX
LDD T2
SBD SU
PJN CDA1 IF DIVISION INCOMPLETE
LDD ES+4
SHN 3
ADN DDLL FETCH UNIT DESCRIPTOR WORD FROM MST
CRD CM
SOD DP
SHN -1
LMC -0 CALCULATE BYTE ADDRESS
ADN CM+4
STD T1
LDD DP
LPN 1
SHN 21-0 DETERMINE POSITION WITHIN BYTE
LMI T1
PJN CDA2 IF UNIT POSITIONED LOW
SHN -6
CDA2 LPN 77 EXTRACT UNIT NUMBER
STD DP+1
LDD CM MERGE WITH EQUIPMENT (CONTROLLER) NUMBER
LPC 700
RAD DP+1
* CONVERT LOGICAL DISK ADDRESS TO RELATIVE SECTOR COUNT.
CDA3 SOD T3
MJN CDA5 IF CONVERSION COMPLETE
LDM LSLT
RAD T9 ADVANCE LOGICAL SECTOR COUNT
SHN -14
RAD T8
UJN CDA3 LOOP ON CONVERSION
* DIVIDE THE RELATIVE SECTOR COUNT BY THE NUMBER OF LOGICAL
* SECTORS PER CYLINDER.
CDA4 AOD DP+2 ADVANCE RELATIVE CYLINDER NUMBER
CDA5 LDM LSCY
STD T0
LDD T9
SBM LSCY+1 DIVIDE BY ITERATIVE SUBTRACTION
STD T9
PJN CDA6 IF NO BORROW
AOD T9
AOD T0
CDA6 LDD T8
SBD T0
STD T8
PJN CDA4 IF DIVISION NOT COMPLETE
LDM LSCY+1
RAD T9
SHN -14
ADD T0
RAD T8
LDD ES+4
SHN 3
ADN SCYL FETCH STARTING CYLINDER FROM MST
CRD CM
LDD CM+2 CONVERT RELATIVE CYLINDER TO ABSOLUTE
RAD DP+2
UJN CDA8 COMPLETE ADDRESS CONVERSION
* DIVIDE THE REMAINDER OF THE ABOVE CALCULATION BY THE NUMBER
* OF LOGICAL SECTORS PER PHYSICAL TRACK.
CDA7 AOD DP+3 ADVANCE PHYSICAL TRACK NUMBER
CDA8 LDN 0
SBM LSPT DIVIDE BY ITERATIVE SUBTRACTION
RAD T9
PJN CDA7 IF NO UNDERFLOW
ADM LSPT
CDAB SHN 0 SET PHYSICAL SECTOR NUMBER
STD DP+4
LJM CDA10 RETURN
CEQ SPACE 4,10
** CEQ - CLEAR ERRORS FROM UNIT I/O QUEUE.
*
* ENTRY (EQ) = EST ORDINAL.
* (ES - ES+4) = EST ENTRY.
*
* USES CM - CM+4.
*
* CALLS SUT.
*
* MACROS DELAY, MONITOR.
CEQ1 DELAY
LDD CN *PUT* ORDINAL
CEQ2 STD CM+2
LDN SUIS *BIOM* SUBFUNCTION
STD CM+1
MONITOR BIOM INTERLOCK *PUT* ENTRY
LDD CM+1
NJN CEQ1 IF CURRENTLY UNAVAILABLE
LDD CN
STD CM+2
LDN CETS CLEAR ERROR STATUS FROM I/O QUEUE
STD CM+1
MONITOR BIOM
* LDN 0 SCAN UNIT TABLE
CEQ3 RJM SUT
NJN CEQ2 IF SPECIFIED DEVICE
CEQ SUBR ENTRY/EXIT
LDD ES+3
LMC 2RDV
ZJN CEQX IF AN 819 DISK
LMK 2RDW&2RDV
ZJN CEQX IF AN 819 DISK
LCN 0
UJN CEQ3 CLEAR ERRORS
CFE SPACE 4,25
** CFE - CHECK FOR ERRORS.
*
* ENTRY (DVC1) = CHANNEL 1 DEVICE STATISTICS.
* (DVC2) = CHANNEL 2 DEVICE STATISTICS.
*
* EXIT (A) .LT. 0 IF ERRORS FOUND.
* *1DS* CALLED TO DOWN CHANNEL IF ERRORS ON ONE OF TWO
* CHANNELS OR PATH VERIFICATION FAILURE.
* DEVICE DOWNED IF VERIFY ERRORS.
* DEVICE TURNED OFF IF OTHER ERRORS.
*
* USES CC, SP, T2, T3, CM - CM+4, CN - CN+4.
*
* CALLS CSF, DCH, IBM, SVF, VSF.
*
* NOTE - *CFE* USES CM - CM+4 AND CN - CN+4 TO ACCUMULATE ANY
* ERRORS DETECTED ON THE FIRST AND SECOND CHANNELS,
* RESPECTIVELY. THE FIVE BYTES ARE USED AS FOLLOWS -
*
* BYTE 0 = CHANNEL NUMBER.
* BYTE 1 = VERIFICATION ERROR COUNT.
* BYTE 2 = TOTAL ERROR COUNT.
* BYTE 3 = UNREPAIRABLE ERROR COUNT.
* BYTE 4 = CHANNEL/CONTROLLER ERROR COUNT.
CFE SUBR ENTRY/EXIT
LDN ZERL CLEAR CHANNEL ERROR COUNTS
CRD CM
CRD CN
LDN CM SET FIRST CHANNEL ACCUMULATOR ADDRESS
STD T2
LDC DVC1 BUFFER START ADDRESS
STD SP
LDN 0
STD CC
CFE1 LDM TSCH,CC SET CHANNEL NUMBER
STI T2
LDN 10 SET UNIT COUNT
STD T3
CFE2 LDM VCTB,SP ACCUMULATE VERIFY ERROR COUNTS
ZJN CFE3 IF NO VERIFY ERROR
AOM 1,T2 COUNT VERIFY ERROR THIS UNIT
CFE3 LDM LEFB,SP GET REPAIRABLE LABEL ERRORS
LPC **
CFEA EQU *-1 (SET BY PRESET)
STD T0
LMM LEFB,SP ACCUMULATE READ/WRITE/LABEL ERROR COUNTS
ZJN CFE3.1 IF NO UNREPAIRABLE LABEL ERRORS
LDN 1
CFE3.1 ADM RCTB,SP
ADM WCTB,SP
ADM FMTB,SP
ZJN CFE3.3 IF NO UNREPAIRABLE ERRORS
SHN -9D
ZJN CFE3.2 IF NO CHANNEL/CONTROLLER ERRORS
AOM 4,T2 COUNT CHANNEL/CONTROLLER ERRORS
CFE3.2 AOM 3,T2 COUNT UNREPAIRABLE ERRORS
CFE3.3 ADD T0
ZJN CFE4 IF NO ERRORS
AOM 2,T2 COUNT ERRORS
CFE4 LDN MXNB
RAD SP
SOD T3
NJP CFE2 IF NOT THROUGH WITH ALL UNITS
LDN CN SET SECOND CHANNEL ACCUMULATOR ADDRESS
STD T2
AOD CC
LMD DA
NJP CFE1 IF ANOTHER CHANNEL
SOD CC
ZJN CFE8 IF ONLY ONE CHANNEL
LDD CN+1
ADD CN+2
NJN CFE5 IF ERRORS ON SECOND CHANNEL
LDD CM+1
ADD CM+2
ZJN CFE7 IF NO ERROR ON PRIMARY CHANNEL
* ERROR EXISTS ON PRIMARY CHANNEL BUT NOT ON SECONDARY CHANNEL.
LDN CM
UJN CFE6 DOWN CHANNEL
CFE5 LDD CM+1
ADD CM+2
NJN CFE8 IF ERRORS ON BOTH CHANNELS
LDN CN
CFE6 RJM DCH DOWN CHANNEL
CFE7 RJM VSF VERIFY SYSTEM FILE
UJP CFEX RETURN
CFE8 LDD CM+1
ADD CN+1
NJP CFE10 IF DATA VERIFICATION ERRORS
LDD CM+2
ADD CN+2
ZJN CFE7 IF NO READ/WRITE/LABEL ERRORS
LDD CM+3
ADD CN+3
NJN CFE9 IF UNREPAIRABLE ERRORS
LJM ** PROCESS REPAIRABLE ERROR
CFEB EQU *-1 (SET BY PRESET)
CFE9 LDM DCHA+4
ZJN CFE11 IF PATH VERIFICATION
LDD ES+4
SHN 3
ADN CTLL
CRD CN
AOD CN INCREMENT VERIFICATION FAILURE COUNTER
RJM SVF
LDD ES+4
SHN 3
ADN THLL
CRD CM
LDD CN
SBD CM
MJP CFE7 IF COUNT BELOW THRESHOLD - CLEAR ERROR
LDD ES
SHN 21-1
MJN CFE13 IF DEVICE OFF OR DOWN
LDN OFES
RJM CSF ISSUE *SEQM*
LDN /COMSDFS/HS0030 ISSUE BML MESSAGE
RJM IBM
UJN CFE13 RETURN
CFE10 LDM DCHA+4
NJN CFE12 IF NOT PATH VERIFICATION
CFE11 LDN CM
RJM DCH DOWN CHANNEL
LDC 4000+UCFC
RJM IBM ISSUE ERROR LOG MESSAGE
UJN CFE14 RETURN
* DOWN DEVICE WHEN VERIFY ERRORS ARE PRESENT ON ALL CHANNELS.
CFE12 LDD ES CHECK DEVICE STATE
LPN 3
LMN 3
ZJN CFE13 IF DEVICE DOWN
LDN DWES RETURN DOWN STATUS
RJM CSF ISSUE *SEQM*
LDN /COMSDFS/HS0034 ISSUE BML MESSAGE
RJM IBM
CFE13 LCN 0
CFE14 LJM CFEX RETURN
CSF SPACE 4,15
** CSF - CALL *SEQM* SUBFUNCTION.
*
* ENTRY (A) = *SEQM* SUBFUNCTION.
* (EQ) = EST ORDINAL.
* (ES - ES+4) = EST ENTRY.
*
* USES T3, CM - CM+4.
*
* CALLS RAE.
*
* MACROS MONITOR, SFA.
CSF SUBR ENTRY/EXIT
STD T3
LDD ES CHECK DEVICE STATE
LPN 3
LMN 3
NJN CSF1 IF NOT *DOWN*
RJM RAE RELEASE ASSIGNED EQUIPMENT
CSF1 LDD T3
STD CM+2 SET SUBFUNCTION FOR *SEQM* CALL
LDD EQ
STD CM+1
LDN 0
STD CM+4
MONITOR SEQM
SFA EST,EQ REREAD EST ENTRY
ADK EQDE
CRD ES
UJN CSFX RETURN
CVI SPACE 4,10
** CVI - CLEAR VERIFICATION INTERLOCK.
*
* ENTRY (CVIA) = EST ORDINAL OF DEVICE WITH INTERLOCK SET.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
CVI SUBR ENTRY/EXIT
LDN ZERL
CRD CM
LDC ** (EST ORDINAL OF DEVICE WITH INTERLOCK SET)
CVIA EQU *-1
ZJN CVIX IF NO INTERLOCK SET
STD CM+1 SET EST ORDINAL
LDN CVIS CLEAR DEVICE VERIFICATION INTERLOCK
STD CM+3
MONITOR STBM
* LDN 0
STM CVIA CLEAR EST ORDINAL
UJN CVIX RETURN
DCH SPACE 4,10
** DCH - DOWN CHANNEL.
*
* ENTRY (A) = ADDRESS OF CHANNEL SUMMARY.
* ((A)) = CHANNEL NUMBER.
* ((A)+4) = CHANNEL/CONTROLLER ERROR COUNT.
* (EQ) = EST ORDINAL OF EQUIPMENT BEING VERIFIED.
*
* USES CM - CM+4.
*
* MACROS EXECUTE, MONITOR.
DCH SUBR ENTRY/EXIT
STD CM+1
LDI CM+1
STM DCHA+3 SAVE CHANNEL AND CONCURRENCY FLAG
LDM 4,CM+1
NJN DCH1 IF CHANNEL/CONTROLLER ERRORS DETECTED
LDD EQ SET EST ORDINAL IN REQUEST
RAM DCHA+4
DCH1 LDD MA
CWM DCHA,ON
LDN 0
STD CM+1
EXECUTE 1DS,=
MONITOR RPPM CALL *1DS* TO DOWN CHANNEL
UJN DCHX RETURN
DCHA VFD 18/3L1DS,6/,12/DWNF,12/0,12/4000
DHV SPACE 4,10
** DHV - PERFORM DEVICE VERIFICATION.
*
* ENTRY (CC) = CHANNEL COUNT.
* (T5) = EST ORDINAL.
* (ES - ES+4) = WORD *EQDE* OF EST ENTRY.
*
* EXIT (A) .NE. 0 IF PREMATURE VERIFICATION TERMINATION.
* ERRORS ENCOUNTERED ARE REFLECTED IN STATISTICS BUFFER.
*
* USES T8.
*
* CALLS FBP, SVI, DEVICE DEPENDENT PROCESSORS.
DHV1 LDN 0 SET RETURN STATUS
DHV SUBR ENTRY/EXIT
RJM SVI SET VERIFICATION INTERLOCK
RJM FBP FILL BUFFER WITH WRITE PATTERN
LDM DVPC SETUP PROCESSOR
ZJN DHVX IF DEVICE NOT SUPPORTED
STD T8
LDC LDNI+METH ALLOW MAINTENANCE CYLINDER MEDIA ERRORS
ERRPL METH-100 CODE DEPENDS ON VALUE
STM RCSA
STM WCSA
RJM 0,T8 PERFORM DEVICE DEPENDENT PROCESSING
UJN DHVX RETURN
FBP SPACE 4,10
** FBP - FILL BUFFER WITH PATTERN TO WRITE.
*
* EXIT (A) = 0.
*
* USES T1.
FBP SUBR ENTRY/EXIT
LDC BUFL
STD T1
FBP1 LDC BUFP FILL BUFFER WITH PATTERN
STM BFMS-1,T1
SOD T1 FILL BUFFER WITH PATTERN
NJN FBP1 IF NOT END OF BUFFER
* LDN 0
UJN FBPX RETURN
FDC SPACE 4,10
** FDC - FORMAT 895 DEVICE MAINTENANCE TRACK.
*
* ENTRY (T4) = CHANNEL NUMBER.
* (EQ) = EST ORDINAL.
* (DVMT) = MAINTENANCE TRACK NUMBER.
* (ES - ES+4) = EST ENTRY.
*
* EXIT (A) .NE. 0 IF ERROR.
* (T4) = CHANNEL NUMBER.
* (T5) = EST ORDINAL.
* (T6) = MAINTENANCE TRACK NUMBER.
*
* CALLS /2VA/FDC.
*
* MACROS EXECUTE.
FDC SUBR ENTRY/EXIT
LDD T4 SAVE CHANNEL NUMBER
STM FDCA
EXECUTE 2VA
LDC * (CHANNEL NUMBER)
FDCA EQU *-1
STD T4
RJM /2VA/FMT FORMAT 895 MAINTENANCE TRACK
UJN FDCX RETURN
HVE SPACE 4,15
** HVE - HARDWARE VERIFICATION FOR EXTENDED MEMORY DEVICES.
*
* ENTRY (CC) = CHANNEL COUNT.
* (T5) = EST ORDINAL.
*
* EXIT ERRORS NOTED IN STATISTICS BUFFER.
*
* USES T6, T7.
*
* CALLS RCS, SNC, VBD, WCS.
*
* MACROS SETMS, VERIFY.
HVE VERIFY (DE,DP) ENTRY/EXIT
SETMS IOCH,(AD,AR,DE,DF,ND),DBUF
LDM DVMT SETUP MAINTENANCE TRACK
STD T6
ZJN HVEX IF UNDEFINED
HVE1 LDN 1
STD NS SET NUMBER OF SECTORS TO PROCESS
HVEA LDN 0
* LDN 20 IF EM TRACK SIZE IS MORE THAN 2020 WORDS
STD T7
HVE2 RJM WCS
RJM RCS
RJM VBD VERIFY READ BUFFERS
LDM SLM
SBD T7
NJN HVE2 IF MORE SECTORS TO PROCESS
RJM SNC SELECT NEXT CHANNEL
PJN HVE1 IF SECOND CHANNEL PRESENT
UJP HVEX RETURN
HVL SPACE 4,15
** HVL - HARDWARE VERIFICATION FOR RMS DEVICES.
*
* ENTRY (CC) = CHANNEL COUNT.
* (T4) = FIRST CHANNEL.
* (T5) = EST ORDINAL.
* (ES - ES+4) = WORD *EQDE* OF EST ENTRY.
*
* EXIT ERRORS NOTED IN STATISTICS BUFFER.
*
* USES HC, NS, SP, T6, T7.
*
* CALLS FDC, IHD, RCS, SNC, VBD, WCS.
*
* MACROS SETMS, VERIFY.
HVL VERIFY (DB,DC,DD,DF,DG,DH,DI,DJ,DK,DL,DM,DN,DQ,DR,DX,DY,DZ,EA,
,EB,EC,ED,EE,EF,EM,EN,EG,EH,EI,EJ,EK,EL,EO,EP,ES,EU,EV,EW)
SETMS IOCH,(AD,AR,DE,DF,ND),DBUF
HVLA UJN HVL2 INITIATE HYDRA DIAGNOSTICS
* PSN (PATH VERIFICATION)
HVL1 LDC 0 (HYDRA DIAGNOSTICS DISABLED)
* LDC 2*DDFE+1 (HYDRA DIAGNOSTIC FAILURE DETECTED)
HVLB EQU *-1
ZJN HVL3 IF NO DIAGNOSTICS
HVL2 RJM IHD
* UJN HVL3 (IF NOT HYDRA DEVICE)
HVLE EQU HVL2
HVL3 LDM DVMT SET MAINTENANCE TRACK
STD T6
ZJN HVLX IF UNDEFINED
HVLF RJM FDC FORMAT MAINTENANCE TRACK, IF 895
* UJN HVL3.1 (IF NOT 895 DEVICE)
NJP HVL5 IF FORMATTING ERROR
HVL3.1 LDN 0
STD HC
STM HVLD
STM HVLG INITIALIZE SECTOR NUMBER
SBM DVSB PHYSICAL SECTORS/BUFFER-1
STM HVLH INITIALIZE MASK
LDD T4 STORE CHANNEL IN CASE OF BUFFERED DEVICE
STM STSB
LDN DVSC SET NUMBER OF SECTORS TO PROCESS
STD NS
LDM DVST RESET FOR OTHER CHANNEL
STM HVLC
HVL4 LDC ** SECTOR NUMBER
HVLG EQU *-1
ADM DVSB ROUND UP TO BUFFER MULTIPLE
LPC **
HVLH EQU *-1
STD T7
SBM HVLC
PJN HVL7 IF ROUNDING EXCEEDS SECTOR LIMIT
RJM WCS WRITE CONSECUTIVE SECTORS
HVL5 NJN HVL6 IF WRITE ERRORS
RJM RCS READ BACK SECTOR DATA
NJN HVL6 IF READ ERRORS
RJM VBD VERIFY READ BUFFERS
HVL6 NJN HVL10 IF DATA VERIFICATION ERRORS
HVL7 LDM DVSI
SBN DVSC ADVANCE SECTOR TO NEXT PHYSICAL TRACK
RAM HVLG
LDC 0 SECTORS + GAP SECTORS PER LOGICAL TRACK
HVLC EQU *-1
SBM HVLG
SBN 1
PJN HVL8 IF STILL WITHIN SAME LOGICAL TRACK
LMC -0
ADC 0 OFFSET TO NEXT UNIT
HVLD EQU *-1
SBN 1
STM HVLG
AOD T6 INCREMENT TO NEXT LOGICAL TRACK
HVL8 AOD HC
SBM DVHL
ZJN HVL11 IF ALL HEADS PROCESSED
HVL9 LJM HVL4 PROCESS NEXT HEAD
HVL10 NJN HVL12 IF ERROR
HVL11 STD HC
LDN MXNB INCREMENT STATISTICS POINTER TO NEXT UNIT
RAD SP
LDM DVMT RESET LOGICAL TRACK POINTER
STD T6
LDD SU CHANGE FOR NEXT UNIT
RAM HVLC
LDD SU CHANGE SECTOR OFFSET TO NEXT UNIT
RAM HVLD
STD T7 SET NEXT SECTOR
LMM SLM
NJN HVL9 IF ANOTHER UNIT
HVL12 RJM SNC SELECT NEXT CHANNEL
PJP HVL1 IF SECOND CHANNEL PRESENT
LJM HVLX RETURN
IBM SPACE 4,15
** IBM - ISSUE BML MESSAGE.
*
* ENTRY (A) = SYMPTOM CODE OF BML MESSAGE.
* (CH) = CHANNEL NUMBER BEING DOWNED.
* (EQ) = EST ORDINAL.
*
* EXIT (A) = 0.
*
* USES CN.
*
* CALLS CDA, /2VA/ELM.
*
* MACROS EXECUTE.
IBM SUBR DVF2 ENTRY/EXIT
STD CN
RJM CDA GET PHYSICAL DISK ADDRESS
EXECUTE 2VA
LDD EQ RESET EQUIPMENT
STD T5
RJM /2VA/ELM ISSUE BML MESSAGE
UJN IBMX RETURN
IHD SPACE 4,10
** IHD - INITIATE HYDRA DIAGNOSTICS.
*
* ENTRY (EQ) = EST ORDINAL.
* (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
*
* USES CM - CM+4.
*
* CALLS SUT.
*
* MACROS MONITOR.
IHD2 SHN PUTLS CHANGE ORDINAL TO INDEX
ADD CN+4
STD CM+4
SHN -14 FORM *PUT* ENTRY ADDRESS
ADD CN+3
STD CM+3
LDN 1 PARAMETER WORD COUNT
STD CM+1
LDN 0 CLEAR UNUSED BYTE
STD CM+2
LDD MA STORE MESSAGE BUFFER PARAMETERS
CWM IHDA,CM+1
MONITOR UTEM
* LDN 0 SCAN UNIT TABLE
IHD3 RJM SUT
NJN IHD2 IF SPECIFIED DEVICE
IHD SUBR ENTRY/EXIT
IHD1 LCN 0
UJN IHD3 SEARCH FOR *PUT* ENTRY
IHDA VFD 6/PILL,6/1,6/DVDF,42/1
IPE SPACE 4,10
** IPE - ISSUE REMOVABLE PACK EVENT.
*
* ENTRY (ES - ES+4) = EST ENTRY.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
IPE SUBR ENTRY/EXIT
LDD ES+4 READ PACKNAME/DEVICE NUMBER
SHN 3
ADK PFGL
CRD CM
LDD CM+3
LPN 77
NJN IPEX IF NOT AUXILIARY DEVICE
LDD CM+3 BUILD PACKNAME HASH
ADD CM+2
ADD CM+1
ADD CM
STD CM+4
LDN 0 SET EVENT
STD CM+1
LDN VSNE/10000
STD CM+3
MONITOR EATM
UJN IPEX RETURN
LBV SPACE 4,10
** LBV - LABEL VERIFICATION.
*
* EXIT STATISTICS BUFFER UPDATED WITH LABEL ERROR STATUS.
*
* USES CC, NS, SP, T7, CM - CM+4.
*
* CALLS SNC, VLS.
LBV SUBR ENTRY/EXIT
LDD ES CHECK UNAVAILABLE DEVICE
SHN 21-6
MJN LBVX IF NOT TO PERFORM LABEL CHECK
SHN 21-5-21+6
MJN LBVX IF BUFFERED DEVICE
LDD ES+4 CHECK FOR INITIALIZE PENDING
SHN 3
ADN STLL
CRD CM
LDD CM
LPC MLIAL+MLIHD+MLIFD
NJN LBVX IF INITIALIZE PENDING
ADK /MMF/LSLT
STD T7
STD NS
STD CC
LDK DVC1 SET POINTER TO FIRST CHANNEL BUFFER
STD SP
* VALIDATE LABEL SECTORS ON ALL UNITS.
LBV1 RJM VLS CHECK CONTENTS OF LABEL
AOD NS INCREMENT RELATIVE UNIT NUMBER
LDN MXNB INCREMENT STATISTICS POINTER
RAD SP
LDD SU INCREMENT TO NEXT UNIT
RAD T7
SBM SLM
MJN LBV1 IF NOT FINISHED WITH LOGICAL TRACK
LDN /MMF/LSLT
STD T7 RESET STARTING SECTOR NUMBER
ADK 0-/MMF/LSLT
STD NS RESET RELATIVE UNIT NUMBER
RJM SNC SET NEXT CHANNEL
PJN LBV1 IF ALL CHANNELS NOT PROCESSED
UJP LBVX RETURN
RCS SPACE 4,25
** RCS - READ CONSECUTIVE SECTORS.
*
* *RCS* READS (NS) CONSECUTIVE SECTORS IN CONSECUTIVE BUFFERS
* AT (DBUF). IF A READ ERROR OCCURS, ((SP)+RCTB) IS INCREMENTED
* AND READ ERROR CODE SAVED IN ((SP)+RCDB).
*
* ENTRY (NS) = NUMBER OF SECTORS TO READ.
* (SP) = STATISTICS GATHERING POINTER.
* (T4 - T7) = MASS STORAGE DRIVER PARAMETERS.
*
* EXIT (A) = READ ERROR COUNT.
*
* USES MT, T7, T8, T9.
*
* CALLS AEC, RDS.
*
* MACROS SETMS.
RCS5 SETMS POSITION FORCE SEEK ON NEXT I/O REQUEST
* LDN 0
RCS SUBR ENTRY/EXIT
LDN 0 SET MEDIA ERROR THRESHOLD
* LDN METH (I/O ON MAINTENANCE CYLINDER)
RCSA EQU *-1
STD MT
LDC DBUF SET BUFFER POINTER
STD T8
LDN 0 SET SECTOR NUMBER
STD T9
RCS1 SBD NS
ZJN RCS5 IF ALL SECTORS READ
LDM DVBE,T9
NJN RCS3 IF SECTOR HAD WRITE ERRORS
LDD T8 SET UP BUFFER ADDRESS FOR READ
RJM RDS
PJN RCS3 IF NO ERROR
RJM AEC ANALYZE ERROR CODE
NJN RCS2 IF NO CONTROLLER RESERVE
LDN 1 SET ERROR INDICATION
UJN RCSX RETURN
RCS2 STM DVBE,T9
STM RCDB,SP SAVE LATEST READ ERROR CODE
PJN RCS3 IF NOT TOO MANY MEDIA OR OTHER ERRORS
AOM RCTB,SP SET READ ERROR COUNT
UJN RCSX RETURN
RCS3 AOD T7 ADVANCE TO NEXT SECTOR
LDC BUFL INCREMENT TO NEXT READ BUFFER
RAD T8
AOD T9 INCREMENT SECTOR NUMBER
UJP RCS1 PROCESS NEXT SECTOR
RAE SPACE 4,10
** RAE - RELEASE ASSIGNED EQUIPMENT.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
RAE SUBR ENTRY/EXIT
LDC 0
RAEA EQU *-1
ZJN RAEX IF EQUIPMENT NOT ASSIGNED
STD CM+1
MONITOR DEQM RELEASE EQUIPMENT ASSIGNMENT
* LDN 0
STM RAEA
UJN RAEX RETURN
RLT SPACE 4,10
** RLT - REPAIR LABEL TRACK.
*
* EXIT TO *CFE9* IF DEVICE NOT OWNED BY THIS MAINFRAME.
*
* USES CM - CM+4, CN - CN+4, IR+3.
*
* CALLS *1CK*, *1RU*.
*
* MACROS EXECUTE.
RLT LDD ES
SHN 21-4
MJN RLT1 IF ISHARED
EXECUTE 1CK REWRITE LABELS
* LJM IMV RERUN *1MV*
RLT1 LDD ES+4
SHN 3
ADK SDGL
CRD CM
ADK DULL-SDGL
CRD CN
LDD CN+2
LPN 17
ADN 1
SHN 1
LMD CM+4
LPN 76
ZJN RLT2 IF INTERLOCKED BY THIS MAINFRAME
LJM CFE9 PROCESS THE ERRORS
RLT2 STD IR+3 SET *1RU* FUNCTION CODE
EXECUTE 1RU REWRITE LABELS
* LJM IMV RERUN *1MV*
SDA SPACE 4,10
** SDA - SET DEVICE AVAILABLE.
*
* ENTRY (A) = *SEQM* SUBFUNCTION.
* (EQ) = EST ORDINAL.
*
* EXIT (A) = 0.
*
* USES T3, CM - CM+4.
*
* CALLS CEQ, CSF.
*
* MACROS MONITOR.
SDA SUBR ENTRY/EXIT
STD T3
RJM CEQ CLEAR ERRORS FROM UNIT I/O QUEUE
LDD T3
RJM CSF ISSUE *SEQM* FUNCTION
LDD EQ
STD CM+1
LDN STDE
STD CM+2
LDN CERS CLEAR *DE* DEVICE ERROR STATUS
STD CM+3
MONITOR SMDM
LDN ZERL CLEAR *CMS* TIMERS
CRD CM
ADN RDSL-ZERL
CWD CM
ERRNZ WISE CODE DEPENDS ON VALUE
LDD EQ
STD CM+3
MONITOR EATM ISSUE EVENT FOR THIS DEVICE
* LDN 0
UJN SDAX RETURN
SNC SPACE 4,15
** SNC - SELECT NEXT CHANNEL.
*
* ENTRY (CC) = CURRENT CHANNEL TABLE ORDINAL.
*
* EXIT (A) .EQ. CHANNEL NUMBER.
* .LT. 0 IF NO MORE CHANNELS.
* (T4) CHANNEL SELECTED.
* (CC) INCREMENTED.
* (SP) = SECOND CHANNEL STATISTICS POINTER.
* CURRENT CHANNEL RELEASED.
*
* USES CC, SP, T4.
*
* MACROS ENDMS.
SNC1 LCN 0
SNC SUBR ENTRY/EXIT
ENDMS
AOD CC ADVANCE CHANNEL TABLE INDEX
LMD DA
ZJN SNC1 IF NO MORE CHANNELS
LDC DVC2
STD SP
LDM TSCH,CC SET CHANNEL AND CONCURRENCY FLAG
STD T4
UJN SNCX RETURN
TSCH CON 0 PRIMARY CHANNEL (FIRST IF SINGLE ACCESS)
CON 0 SECONDARY CHANNEL
SUT SPACE 4,15
** SUT - SCAN (BUFFERED I/O) UNIT TABLE.
*
* ENTRY (A) .LT. 0 IF INITIAL CALL.
* (CN) = CURRENT *PUT* ORDINAL IF NOT INITIAL CALL.
* (EQ) = EST ORDINAL.
* (ES - ES+4) = EST ENTRY.
* (CN+3 - CN+4) = FWA OF *PUT* IF NOT INITIAL CALL.
*
* EXIT (A) = 0 IF END OF SCAN.
* = (CN) = *PUT* ORDINAL.
* (CN+3 - CN+4) = FWA OF PHYSICAL UNIT TABLE.
*
* USES CM - CM+4, CN - CN+4.
SUT1 SOD CN
ZJN SUTX IF END OF UNIT TABLE
SUT2 LDD CN+3
SHN 14-PUTLS
ADD CN FORM *PUT* ADDRESS
SHN PUTLS
ADD CN+4
ADK UNCT READ UNIT CONTROL WORD
CRD CM
LDD CM+1 CHECK EST ORDINAL
LMD EQ
NJN SUT1 IF NOT REQUIRED DEVICE
LDD CN
SUT SUBR ENTRY/EXIT
PJN SUT1 IF NOT INITIAL CALL
LDD ES+4
SHN 3
ADN DILL FETCH DEVICE STATUS FROM MST
CRD CM
LDD CM+2
ZJN SUTX IF NOT BUFFERED DEVICE
LDC BIOL
CRD CN
LDD CN+1 GET *PUT* DESCRIPTOR
SHN 14
LMD CN+2
ADN PUTP
CRD CN
LDD CN+3
LPN 77 CLEAR FLAGS
STD CN+3
UJP SUT2 BEGIN UNIT TABLE SCAN
SVF SPACE 4,10
** SVF - SET VERIFICATION FAILURE COUNT.
*
* ENTRY (A) = VERIFICATION FAILURE COUNT TO SET.
*
* EXIT FAILURE COUNT IN *CTLL* MST WORD UPDATED.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
SVF SUBR ENTRY/EXIT
STM SVFA+4
LDN 0
STD CM+2
LDD ES+4 BASE TABLE ADDRESS
SHN 3
STD CM+4
SHN -14
STD CM+3
LDN 1
STD CM+1
LDD MA UPDATE FAILURE COUNT
CWM SVFA,ON
MONITOR UTEM
UJN SVFX RETURN
SVFA VFD 1/0,5/CTLL,6/12D,6/48D,42/0
SVI SPACE 4,10
** SVI - SET VERIFICATION INTERLOCK.
*
* ENTRY (T5) = EST ORDINAL.
* (ES - ES+4) = WORD *EQDE* OF EST ENTRY.
*
* EXIT (CVIA) = EST ORDINAL OF DEVICE WITH INTERLOCK SET.
*
* USES CM - CM+4.
*
* MACROS DELAY, MONITOR.
SVI SUBR ENTRY/EXIT
LDD ES
SHN 21-11
PJN SVIX IF NOT SHARED DEVICE
SHN 21-4-21+11
MJN SVIX IF ISD DEVICE
SVI1 LDN ZERL
CRD CM
LDD T5 SET EST ORDINAL
STD CM+1
STM CVIA
LDN SVIS SET DEVICE VERIFICATION INTERLOCK
STD CM+3
MONITOR STBM
LDD CM+1
ZJN SVIX IF INTERLOCK SET SUCCESSFULLY
DELAY 20B DELAY 2 MILLISECONDS
UJN SVI1 RETRY
VBD SPACE 4,15
** VBD - VERIFY BUFFER DATA.
*
* FOR EACH BUFFER THAT DOES NOT VERIFY, ((SP)+VCTB) IS
* INCREMENTED.
*
* ENTRY (NS) = NUMBER OF BUFFERS TO PROCESS.
* (SP) = STATISTICS GATHERING POINTER.
* (T7) = LAST SECTOR TO CHECK + 1.
*
* EXIT (A) = DATA ERROR COUNT.
*
* USES CN, T1, T2, T3.
VBD SUBR ENTRY/EXIT
LDC DBUF SET BUFFER POINTER
STD T3
LDN 0 SET SECTOR NUMBER
STD T2
VBD1 SBD NS
ZJN VBDX IF ALL BUFFERS PROCESSED
LDD T3
STD T1 SET BUFFER ADDRESS TO CHECK
ADC BUFL
STD T3
LDM DVBE,T2
NJN VBD3 IF ERROR OCCURRED
LDD T7 COMPUTE SECTOR NUMBER
SBD NS
ADD T2
STD T0
ADN 1
LMI T1
NJN VBD4 IF MISMATCH ON SECTOR
AOD T1
LDI T1
LMD HN
NJN VBD4 IF MISMATCH ON WORD COUNT
AOD T1
VBD2 LDC BUFP
LMI T1
NJN VBD4 IF PATTERN MISMATCH
AOD T1
LMD T3
NJN VBD2 IF NOT END OF BUFFER
VBD3 AOD T2
UJN VBD1 CHECK FOR END OF BUFFERS
VBD4 LDD T0 SET (T7) TO SECTOR IN ERROR
STD T7
AOM VCTB,SP SET DATA ERROR COUNT
UJP VBDX RETURN
VLS SPACE 4,15
** VLS - VERIFY LABEL SECTOR.
*
* ENTRY (T7) = LABEL SECTOR NUMBER.
* (NS) = RELATIVE UNIT NUMBER.
* (SP) = ERROR STATISTICS BUFFER POINTER.
*
* EXIT ERROR INDICATORS SET IN STATISTICS BUFFER.
*
* USES MT, T4, T6, T7, T8, CM - CM+4, CN - CN+4, IR - IR+4.
*
* CALLS AEC, RDS, VLT, *5ME*.
*
* MACROS ENDMS, EXECUTE, SETMS.
VLS11 RJM AEC ANALYZE ERROR CODE
ZJN VLS12 IF DRIVE OR CONTROLLER RESERVE
STM LREB,SP SAVE LABEL READ ERROR
LDK REFG SET READ ERROR FLAG
VLS12 STM LEFB,SP
ENDMS
VLS SUBR ENTRY/EXIT
VLS0 SETMS IOCH,(AD,AR,DE,DF,ND)
* LDN 0 SET MEDIA ERROR THRESHOLD
STD MT
LDM TSCH,CC SET CHANNEL
STD T4
STM STSB STORE CHANNEL IN CASE BUFFERED DEVICE
LDD ES+4 READ MST DATA
SHN 3
ADN ALGL
CRD CM
LDD CM+1 SET LABEL TRACK NUMBER
STD T6
LDC BFMS
RJM RDS READ SECTOR
VLS0.1 MJP VLS11 IF MASS STORAGE ERROR
* CHECK CONTENTS OF LABEL.
* LDN 0
STD T8 SET ERROR STATUS
LDM LLSS
SHN -1
ZJN VLS0.2 IF NOT LEVEL 2 LABEL
LDD NS
NJN VLS0.2 IF NOT RELATIVE UNIT ZERO
RJM VLT VERIFY LEVEL 2 LABEL
MJN VLS0.1 IF TRT READ ERROR
STD T8 SET ERROR STATUS
LPK CKFG
NJP VLS12 IF CHECKSUM ERROR
VLS0.2 LDM BFMS CHECK CONTROL BYTES
LMC 3777
ZJN VLS1 IF PROPER CONTROL BYTE
LDK CBFG SET BAD CONTROL BYTE FLAG
RAD T8
VLS1 LDM BFMS+1
LMN 77
ZJN VLS2 IF PROPER WORD COUNT
LDK WCFG SET BAD WORD COUNT FLAG
RAD T8
VLS2 LDM FTSS
LMD T6
ZJN VLS3 IF PROPER TRACK
LDK TNFG SET BAD TRACK NUMBER FLAG
RAD T8
VLS3 LDM E4SS COMPARE EQUIPMENT TYPE WITH EST
STM EMNB,SP
LMM DVDT
ZJN VLS6 IF MATCHING EQUIPMENT MNEMONIC
LMN 1RP&1RE
VLSA PSN
* ZJN VLS6 (IF NON-MATCHING EM EQUIPMENT TYPES)
LDK EQFG SET BAD EQUIPMENT MNEMONIC
RAD T8
VLS6 LDD ES+4 GET FAMILY/PACKNAME
SHN 3
ADN PFGL
CRD CN
LDD MA COPY LABEL NAME TO MESSAGE BUFFER
CWM N4SS+5*PFGL,ON
SBN 1 MOVE NAME TO DIRECT CELLS
CRD CM
LDD CM
LMD CN
NJN VLS7 IF NOT THE SAME LABEL
LDD CM+1
LMD CN+1
NJN VLS7 IF NOT THE SAME LABEL
LDD CM+2
LMD CN+2
NJN VLS7 IF NOT THE SAME LABEL
LDD CM+3
LMD CN+3
SCN 77 CHECK DEVICE NUMBER SEPARATELY
NJN VLS7 IF NOT THE SAME LABEL
LDD CM+4
LMD CN+4
SCN 70
ZJN VLS8 IF GOOD COMPARE
VLS7 LDK FPFG SET FAMILY/PACK NAME ERROR FLAG
RAD T8
VLS8 LDD CM+3 COMPARE DEVICE NUMBERS
LMD CN+3
LPN 77
ZJN VLS9 IF DEVICE NUMBERS MATCH
LDK DNFG SET BAD DEVICE NUMBER FLAG
RAD T8
VLS9 LDD CM
STM FMNB,SP
LDD CM+1
STM FMNB+1,SP
LDD CM+2
STM FMNB+2,SP
LDD CM+3
STM DNMB,SP
LDD CM+4 CHECK RELATIVE UNIT NUMBER
SHN -3
LPN 7
LMD NS
ZJN VLS10 IF CORRECT UNIT NUMBER
LDK RUFG SET RELATIVE UNIT NUMBER ERROR
VLS10 RAD T8
LPK FPFG+DNFG+RUFG
NJN VLS10.2 IF WRONG PACK
VLS10.1 LDD T8
LJM VLS12 RETURN
VLS10.2 LDD ES
SHN 21-11
PJN VLS10.1 IF NOT SHARED
SHN 11-21
LPN 3
LMN 3
ZJN VLS10.1 IF DOWN
LDD T5
STD IR+3 SET EST ORDINAL
LDK BFMS
STD IR+2 SET BUFFER ADDRESS
EXECUTE 5ME
LDD IA RESTORE INPUT REGISTER
CRD IR
LDN /MMF/LSLT RESET LABEL SECTOR
STD T7
LJM VLS0 RETRY VERIFICATION
VLT SPACE 4,15
** VLT - VERIFY LEVEL TWO LABEL.
*
* ENTRY (NS) = RELATIVE UNIT NUMBER.
* (SP) = ERROR STATISTICS BUFFER POINTER.
* (T7) = LABEL SECTOR NUMBER.
* (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
*
* EXIT (A) = ERROR INDICATORS.
*
* USES T1, T7, T9, CM - CM+4.
*
* CALLS CLC, RDS.
VLT6 LDK CKFG CHECKSUM ERROR
VLT SUBR ENTRY/EXIT
RJM CLC COMPUTE LABEL CHECKSUM
LMM CKSS
NJN VLT6 IF INCORRECT CHECKSUM
LDM N4SS+SDGL*5+4 CHECK MST/TRT INTERLOCK
LPN 76
ZJN VLT1 IF NOT INTERLOCKED
SHN -1
STD T1
LDD ES+4 COMPARE INTERLOCK WITH THIS MF-S INDEX
SHN 3
ADK DULL
CRD CM
LDD CM+2
LPN 17
ADN 1
LMD T1
ZJN VLT1 IF INTERLOCKED BY THIS MAINFRAME
LDD T1
SHN 2
RAD T1
LDM DISS-5+3,T1
LPN 1
LMN 1
ZJN VLT1 IF INTERLOCKED FOR DEVICE RECOVERY
LDK ILFG
VLT1 STD T9
LDD NS
NJP VLT4 IF NOT RELATIVE UNIT ZERO
LDM N4SS+TDGL*5+2 CHECK MST AND TRT COUNTERS
SHN -6
ADN 1
RAD T7
LDC DBUF
RJM RDS READ LAST SECTOR OF TRT
MJN VLT5 IF READ ERROR
LDM N4SS+SDGL*5+2
LMM DBUF+2+77*5+2
NJN VLT2 IF COUNTERS DON-T MATCH
LDM N4SS+SDGL*5+3
LMM DBUF+2+77*5+3
NJN VLT2 IF COUNTERS DON-T MATCH
LDM N4SS+SDGL*5+4
LMM DBUF+2+77*5+4
SCN 77
ZJN VLT3 IF COUNTERS MATCH
VLT2 LDD TH COUNTER MISMATCH
* LDK CMFG
ERRNZ CMFG-1000B
RAD T9
VLT3 LDN /MMF/LSLT RESET LABEL SECTOR
STD T7
VLT4 LDD T9
VLT5 LJM VLTX RETURN
VSF SPACE 4,15
** VSF - VERIFY SYSTEM FILE.
*
* ENTRY (EQ) = (T5) = EST ORDINAL.
* (ES - ES+4) = EST ENTRY.
*
* EXIT (A) .LT. 0 IF I/O ERROR.
*
* USES CM - CM+4, CN - CN+4.
*
* CALLS IRA, WSF.
*
* MACROS SFA.
VSF SUBR ENTRY/EXIT
LDD ES
LPC 2003 CHECK DEVICE STATE
LMC 2003
NJN VSFX IF NOT DOWN SYSTEM DEVICE
LDN FNTP
CRD CM FETCH FNT POINTER
LDD CM
SHN 14 READ SYSTEM FILE FST
LMD CM+1
ERRNZ SYFO CODE DEPENDS ON VALUE
ADN FSTG
CRD CN
RJM IRA INITIALIZE RANDOM ACCESS PROCESSORS
* WRITE SYSTEM FILE - SYSTEM + EOI SECTORS.
LDD CN+1 PROCESS SYSTEM FILE
RJM WSF
MJN VSFX IF I/O ERROR
* WRITE PP LIBRARY FILE - SYSTEM + EOI SECTORS.
LDM PLSS PROCESS PP LIBRARY FILE
RJM WSF
UJP VSFX RETURN
WCS SPACE 4,15
** WCS - WRITE CONSECUTIVE SECTORS.
*
* ENTRY (NS) = NUMBER OF SECTORS TO WRITE.
* (SP) = STATISTICS GATHERING POINTER.
* (T4 - T7) = MASS STORAGE DRIVER PARAMETERS.
* (BFMS) = DATA TO WRITE.
*
* EXIT (A) = WRITE ERROR COUNT.
*
* USES MT, T7, T9.
*
* CALLS AEC, WDS.
WCS6 LDN 0 RESTORE ORIGINAL SECTOR NUMBER
SBD NS
RAD T7
LDN 0
WCS SUBR ENTRY/EXIT
LDN 0 SET MEDIA ERROR THRESHOLD
* LDN METH (I/O ON MAINTENANCE CYLINDER)
WCSA EQU *-1
STD MT
LDD HN
STM BFMS+1 SET SECTOR WORD COUNT
LDN 0
STD T9 INITIALIZE SECTOR NUMBER
LDD T7
WCS1 ADN 1 SET SECTOR LINKAGE
STM BFMS
AOD T9
SBD NS
ERRNZ WLSF CODE DEPENDS ON VALUE
ZJN WCS2 IF WRITING LAST SECTOR
PJN WCS6 IF WRITING COMPLETE
LDC WCSF
WCS2 ADC BFMS
RJM WDS
PJN WCS3 IF NO ERROR
RJM AEC ANALYZE ERROR CODE
NJN WCS3 IF NOT DRIVE OR CONTROLLER RESERVE
STM DVBE-1,T9
LDN 1 SET ERROR INDICATOR
WCS2.1 UJP WCSX RETURN
WCS3 STM DVBE-1,T9
STM WCDB,SP SAVE LATEST WRITE ERROR CODE
MJN WCS4 IF TOO MANY MEDIA OR OTHER ERRORS
AOD T7
UJP WCS1 PROCESS NEXT SECTOR
WCS4 SHN 21-20
PJN WCS5 IF NOT DIAGNOSTIC FAILURE
STM HVLB
WCS5 AOM WCTB,SP SET WRITE ERROR COUNT
UJN WCS2.1 RETURN
WSF SPACE 4,15
** WSF - WRITE SYSTEM FILE.
*
* ENTRY (A) = FIRST TRACK OF FILE.
* (EQ) = ORDINAL OF DEVICE BEING VERIFIED.
*
* EXIT (A) .LT. 0 IF I/O ERROR.
*
* USES T5, T6, T7.
*
* CALLS RDS, SEI, WEI, WSS.
*
* MACROS ENDMS, SETMS.
WSF SUBR ENTRY/EXIT
STD T6
LDN 0 SYSTEM SECTOR NUMBER
STD T7
SETMS READSYS,(AD,DF,ND)
LDC BFMS READ SYSTEM SECTOR
RJM RDS
MJN WSFX IF READ ERROR
ENDMS
LDD EQ SELECT DEVICE BEING VERIFIED
STD T5
SETMS IO,(AD,DF,ND,NR)
RJM WSS WRITE SYSTEM SECTOR
MJN WSFX IF WRITE ERROR
RJM SEI LOCATE EOI ON SYSTEM FILE
SETMS POSITION
RJM WEI WRITE EOI SECTOR
MJN WSF1 IF WRITE ERROR
ENDMS
* LDN 0
WSF1 UJP WSFX RETURN
SPACE 4,10
** COMMON DECKS.
*CALL COMPCLC
IRA$ EQU 0 SET *IRA* INITIALIZATION COMPLETE
*CALL COMPSEI
*CALL COMPIRA
*CALL COMPTLB
*CALL COMPWEI
*CALL COMPWSS
TITLE BUFFERS.
SPACE 4,10
** BUFFERS.
BUF EQU *
BEGIN BSSN BUF
* CELLS SET BY PRESET.
DVDT BSSN 1 DEVICE TYPE
DVMT BSSN 1 DEVICE MAINTENANCE TRACK
DVHL BSSN 1 DEVICE HEAD COUNT LIMIT PER TRACK
DVSI BSSN 1 DEVICE SECTOR INCREMENT TO NEXT HEAD
CVNF BSSN 1 CONVERSION FACTOR
DVST BSSN 0 DEVICE SECTORS BETWEEN LOGICAL TRACKS
LSLT BSSN 1 LOGICAL SECTORS/LOGICAL TRACK
LSCY BSSN 2 LOGICAL SECTORS/CYLINDER
LSPT BSSN 1 LOGICAL SECTORS/PHYSICAL TRACK
DVSB BSSN 1 PHYSICAL SECTORS / BUFFER - 1
DVPC BSSN 1 DEVICE HARDWARE VERIFICATION PROCESSOR
* ZEROED OUT TABLES.
DVC1 BSSN 10*MXNB CHANNEL 1 STATISTICS BUFFER
DVC2 BSSN 10*MXNB CHANNEL 2 STATISTICS BUFFER
EZOT BSSN 0 END OF ZEROED OUT TABLES
* SCRATCH CELLS.
.1 SET BFMS-*
MXSC EQU .1/503 MAXIMUM SECTORS IN BUFFER
DVBE BSSN MXSC DEVICE VERIFICATION ERROR FLAG BUFFER
DBUF BSSN MXSC*BUFL DATA VERIFICATION DATA BUFFER
END BSSN
OVLA EQU DVBE+5 *2VA* OVERLAY LOAD POINT
SPACE 4,10
ERRNG BFMS-DBUF-MXSC*BUFL OVERFLOW INTO WRITE BUFFER
ERRNG MXSC-DVSC NOT ENOUGH SECTORS FOR DEVICE VERIFY
ERRNG EPFW-OVLA-ZSCL *0SC* OVERLAYED BY ERROR PROCESSOR
TITLE PRESET TABLES.
TDVC SPACE 4,10
** TDVC - TABLE OF DEVICE CONSTANTS.
TDVC BSS 0
TDVCL EQU 13 TABLE ENTRY LENGTH
.A SET TDVCL+4
TDVCS EQU .A/5 TABLE ENTRY SIZE (CM WORD COUNT)
LIST G
ECHO ,DT="MSEQ"
.1 IF DEF,PRC._DT
CON 2R_DT DT
CON MCLT_DT LOGICAL TRACK OF MAINTENANCE CYLINDER
.2 IFEQ PRC.DT,HVL
CON PTCY_DT PHYSICAL TRACKS PER CYLINDER
.A SET TT_DT+1
CON LSPS_DT*PSPT_DT/.A SECTOR OFFSET TO NEXT HEAD POSITION
CON CFS_DT CONVERSION FACTOR SHIFT COUNT
CON SL_DT+GS_DT LOGICAL SECTORS/LOGICAL TRACK
.A SET PSPT_DT*PTCY_DT-SPSC_DT PHYSICAL SECTORS/CYLINDER
.B SET .A*LSPS_DT LOGICAL SECTORS/CYLINDER
.C SET .B/10000
.D SET .C*10000
CON .C UPPER LOGICAL SECTORS/CYLINDER
CON .B-.D LOWER LOGICAL SECTORS/CYLINDER
CON LSPT_DT LOGICAL SECTORS/PHYSICAL TRACK
.3 IF DEF,PSBF_DT
CON 37 LOGICAL SECTOR BUFFER ROUNDING FACTOR
.3 ELSE
CON 0
.3 ENDIF
.2 ELSE
BSSZ TDVCL-3
.2 ENDIF
CON PRC._DT DEVICE TYPE PROCESSOR
.1 ENDIF
ENDD
LIST *
BSSZ TDVCL END OF TABLE - NULL PARAMETERS
TFCN SPACE 4,10
** TFCN - TABLE OF FUNCTION PROCESSORS.
*
* ENTRY - 3 BYTES.
* BYTE 0 = FUNCTION PROCESSOR.
* BYTE 1 = REPAIR PROCESSOR.
* BYTE 2 = REPAIRABLE ERRORS.
TFCN BSS 0
DVFC FCN DVF,RLT,REFG+CKFG+CMFG
ONFC FCN ONF,RLT,REFG+CKFG+CMFG
IDFC FCN IDF,RLT,REFG+CKFG+CMFG
OFFC FCN LVA,RLT,REFG+CKFG+CMFG
MVFC FCN MVA,CFE9,0
UCFC FCN UCF,CFE9,0
SCFC FCN SCF,DVF2,0
MXFN FCN
TITLE PRESET.
PRS SPACE 4,30
** PRS - PRESET.
*
* ENTRY (IR - IR+4) = *1MV* CALL.
*
* EXIT (CC) = (DA) = CHANNEL COUNT.
* (FC) = FUNCTION CODE.
* (SU) = SINGLE UNIT SECTOR COUNT FROM MST.
* (SP) = POINTER TO STATISTICS BUFFER.
* (T4) = FIRST CHANNEL.
* (T5) = EST ORDINAL.
* (T7) = 0.
* (DP - DP+4) = 0 ((DP) = 1 IF EXTENDED MEMORY).
* (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
* (DVSA) = SINGLE UNIT SECTOR + GAP COUNT.
* (DVHL) = HEAD COUNT LIMIT FOR DEVICE.
* (DVMT) = MAINTENANCE CYLINDER LOGICAL TRACK.
* (DVSI) = SECTOR INCREMENT FOR FUNCTION.
*
* ERROR TO *DPP* IF BAD CALL.
*
* USES T1, T8, CM - CM+4, CN - CN+4, ES - ES+4.
PRS BSS ENTRY
LDD IR+3
SHN -6
STD FC EXTRACT FUNCTION CODE
SHN 1
ADD FC
STD T1
SBN MXFN*3
PJN PRS1 IF INCORRECT FUNCTION CODE
LDM TFCN,T1 SET PROCESSOR ADDRESS
STM PRSB
LDM TFCN+1,T1 SET REPAIR PROCESSOR ADDRESS
STM CFEB
LDM TFCN+2,T1 SET REPAIRABLE ERRORS
STM CFEA
LDK ESTP
CRD CM
LDD EQ SET EST ORDINAL
STD T5
SBD CM+3
PJN PRS1 IF OUT OF EST
SFA EST,T5 READ EST ENTRY
ADK EQDE
CRD ES
ADK EQAE-EQDE
CRD CN
LDD ES
SHN 21-13
MJN PRS2 IF DEVICE IS MASS STORAGE
PRS1 LJM DPP DROP PP
PRS2 LDD ES+3
LMC 2RDC
ZJN PRS2.1 IF 895 TYPE DEVICE
ISTORE HVLF,(UJN HVL3.1) DISABLE 895 FORMATTING
LDD ES+3
LMC 2RDF
ZJN PRS2.2 IF 887 TYPE (HYDRA) DEVICE
LMN 2RDH&2RDF
ZJN PRS2.2 IF 887 TYPE (HYDRA) DEVICE
PRS2.1 ISTORE HVLE,(UJN HVL3) DISABLE HYDRA DIAGNOSTICS
PRS2.2 LDD ES+4 READ MST DATA
SHN 3
ADN MDGL
CRD CM
ADN DILL-MDGL GET DRIVER WORD
CRD DP
LDD CM+1 SAVE SINGLE UNIT SECTOR LIMIT
LPC 3777
STD SU
* SEARCH FOR DEVICE IN TABLE.
LDC TDVC-TDVCL INITIALIZE POINTER INTO DEVICE CONSTANTS
STD T1
LDD DP+3
NJN PRS3 IF BUFFERED DEVICE
LDC *
ORG *-1 TRANSFER FOR NON-BUFFERED DEVICE
LOC CDAA
UJN CDA9 PROCESS *LDAM* DEVICE
LOC *O
STM CDAA
PRS3 LDN TDVCL INCREMENT POINTER
RAD T1
LDI T1 CHECK DEVICE MNEMONIC
ZJN PRS4 IF DEVICE NOT FOUND
LMD ES+3
NJN PRS3 IF NO MATCH
PRS4 STD CC
STD T7
STD DA
LDD T1 TRANSFER DEVICE PARAMETERS
STM PRSA
LDN TDVCS SET WORD COUNT
STD T1
ERRNG 6-TDVCS TRANSFER OVERFLOWS MESSAGE BUFFER
LDD MA
CWM 0,T1 MOVE TABLE ENTRY INTO MESSAGE BUFFER
PRSA EQU *-1
SBN TDVCS COPY ENTRY TO DEVICE PARAMETER BLOCK
CRM DVDT,T1
LDN ZERL CLEAR DEVICE SEEK PARAMETERS
CRD DP
LDN 77 SET LOGICAL TO PHYSICAL SECTOR CONVERSION
SBM CVNF
RAM CDAB
LDD ES+3
STM DVDT
LMC 2RDP
ZJN PRS5 IF ESM
LMN 2RDE&2RDP
NJN PRS6 IF NOT UEM
PRS5 ISTORE VLSA,(ZJN VLS6)
AOD DP AVOID ADDRESS CONVERSION
LDD CN+2
SHN -6
LPN 3
ZJN PRS6 IF XM TRACK SIZE IS 2020 WORDS
LDD ES+4
SHN 3 FORM MST ADDRESS
ADK ALGL
CRD CM
LDD CM+1
STM DVMT USE LABEL TRACK FOR VERIFICATION
LDN 20
RAM HVEA BEGIN VERIFICATION AT SECTOR 20
PRS6 LDD ES+3
LMC 2RDE
ZJN PRS9 IF EXTENDED MEMORY
LDN ES+1
STD T1
PRS7 LDI T1 SET CHANNEL IN TABLE
LPN 77
STM TSCH,DA
LMI T1
SHN 0-12
LMN 2
NJN PRS8 IF ACCESS NOT PRESENT OR DISABLED
AOD DA
PRS8 AOD T1 ADVANCE CHANNEL BYTE ADDRESS
LMN ES+3
NJN PRS7 IF ANOTHER CHANNEL BYTE
SOD DA
MJP DPP IF NO CHANNELS
ZJN PRS10 IF SINGLE ACCESS DEVICE
LDD ES
SHN 21-6
PJN PRS10 IF DEVICE IS AVAILABLE
LDD ES+1
LMD ES+2
LPC 400
PRS9 ZJN PRS10 IF SAME CONTROLLER TYPES
LDD ES+2
SHN 0-10
LPN 1
STD T1
LDM ES+1,T1 SET HALF TRACK CHANNEL FOR VERIFICATION
LPN 77
STM TSCH
UJN PRS11 CONTINUE
PRS10 AOD DA SET CHANNEL COUNT
LDM TSCH
PRS11 STD T4 SET FIRST CHANNEL
LDD IR+3 GET REPAIR STATUS
LPN 40
NJN PRS12 IF REPAIR HAS BEEN ATTEMPTED
LDD T5
STD CM+1
LDN RVES RESERVE EQUIPMENT
STD CM+2
MONITOR REQM
LDD CM+1
NJN PRS13 IF DEVICE RESERVED
LJM IBM+1 ISSUE BML MESSAGE
PRS12 LDN 0 COUNT ALL LABEL ERRORS AS UNREPAIRABLE
STM CFEA
PRS13 LDD T5
STM RAEA SET EQUIPMENT RESERVED
* CLEAR STATISTICS BUFFER.
LDC EZOT-1 SET BUFFER LWA+1
STD SP SAVE STARTING ADDRESS
ERRNG *-EZOT-1 TABLES OVERLAP CODE
PRS14 LDN 0
STI SP
SOD SP DECREMENT POINTER
LMC DVC1
NJN PRS14 IF NOT DONE CLEARING
STI SP
RJM ECA ENABLE CONTROLLER ACTIVITY
LJM * EXIT TO PROCESSOR
PRSB EQU *-1
TITLE PRESET SUBROUTINES.
ECA SPACE 4,15
** ECA - ENABLE CONTROLLER ACTIVITY.
*
* THIS ROUTINE FORCES THE 583X/47444 (*DAS*) OR 9853 (*XMD*)
* DRIVER TO REENABLE ACTIVITY TO A CONTROLLER IN ORDER TO
* ALLOW A *UCFC* (*UP,CCH*) FUNCTION TO BE PROCESSED.
* THIS IS ACCOMPLISHED BY SETTING A SPECIAL REQUEST BIT IN
* WORD *PILL* OF THE *PUT*, AND A BIT FOR THE SPECIFIED
* CHANNEL IN WORD *BDLL* OF THE *MST*.
*
* ENTRY (FC) = FUNCTION CODE.
* (IR+2) = EST ORDINAL.
* (IR+4) = CHANNEL.
*
* USES CM - CM+4, CN - CN+4, T1.
*
* MACROS MONITOR, SFA.
ECA SUBR ENTRY/EXIT
LDD FC CHECK FUNCTION CODE
LMN UCFC
NJN ECAX IF NOT *UP,CCH* FUNCTION
SFA EST,IR+2 READ EST ENTRY
ADK EQDE
CRD CM
LDN TECAL CHECK DEVICE TYPE
STD T1
ECA2 SOD T1 CHECK NEXT TABLE ENTRY
MJN ECAX IF THIS DEVICE TYPE NOT IN TABLE
LDD CM+3
LMM TECA,T1
NJN ECA2 IF DEVICE TYPE DOES NOT MATCH
* SET CHANNEL SELECTION FLAGS.
LDD CM+1 CHECK FOR FIRST CHANNEL SPECIFIED
LPN 77
LMD IR+4
NJN ECA3 IF FIRST CHANNEL NOT SPECIFIED
LDN 1 SET FLAG FOR FIRST CHANNEL
UJN ECA4 UPDATE *MST*
ECA3 LDN 2 SET FLAG FOR SECOND CHANNEL
* SET CHANNEL SELECTION FLAGS INTO *MST*.
ECA4 STD CN+4
LDC BDLL*100+2 6/INDEX INTO *MST*, 6/BITS TO CHANGE
STD CN
LDC 49D*100 6/LOW ORDER BIT, 6/0
STD CN+1
LDD MA
CWD CN STORE MESSAGE BUFFER PARAMETERS
LDD CM+4 SAVE *MST* ADDRESS
STD T1
SHN 3
STD CM+4
SHN -14
STD CM+3
LDN 1
STD CM+1 REQUESTS IN MESSAGE BUFFER
MONITOR UTEM UPDATE TABLE ENTRY
* SET SPECIAL REQUEST INTO *PUT*.
LDC PILL*100+1 6/INDEX INTO *PUT*, 6/BITS TO CHANGE
STD CN
LDC ECAF*100 6/LOW ORDER BIT, 6/0
STD CN+1
LDN 1
STD CN+4 NEW VALUE
LDD MA
CWD CN STORE MESSAGE BUFFER PARAMETERS
LDD T1
SHN 3 *MST* ADDRESS
ADK DILL
CRD CM (CM+2) = PUT ORDINAL
LDK BIOL
CRD CN READ BUFFERED I/O POINTERS
LDD CN+1
SHN 14
LMD CN+2
ADK PUTP
CRD CN READ *PUT* POINTER
LDD CM+2
SHN PUTLS
ADD CN+4
STD CM+4 SET START ADDRESS OF *PUT*
SHN -14
ADD CN+3
STD CM+3
LDN 1
STD CM+1 REQUESTS IN MESSAGE BUFFER
MONITOR UTEM UPDATE TABLE ENTRY
UJP ECAX RETURN
TECA BSS 0 TABLE OF 583X/9853/47444 DEVICES
CON 2RDN 9853
CON 2REA 5832 (1X SSD)
CON 2REB 5832 (2X SSD)
CON 2REC 5833 (1X SABRE)
CON 2RED 5833 (1XP SABRE)
CON 2REE 5833 (2X SABRE)
CON 2REF 5833 (2XP SABRE)
CON 2REG 5838 (1X ELITE)
CON 2REH 5838 (1XP ELITE)
CON 2REI 5838 (2X ELITE) (MP)
CON 2REJ 5838 (2XP ELITE) (MP)
CON 2REK 5838 (3XP ELITE) (MP)
CON 2REL 5838 (4X ELITE) (MP)
CON 2REM 5833 (3XP SABRE) (MP)
CON 2REN 5833 (4X SABRE) (MP)
CON 2REO 47444 (1X 3.5IN)
CON 2REP 47444 (1XP 3.5IN)
CON 2RES 47444 (2X 3.5IN) (MP)
CON 2REU 47444 (2XP 3.5IN) (MP)
CON 2REV 47444 (3XP 3.5IN) (MP)
CON 2REW 47444 (4X 3.5IN) (MP)
TECAL EQU *-TECA LENGTH OF TABLE
SPACE 4,10
OVERFLOW
OVERLAY (*1MV* FUNCTION COMPLETION OVERLAY.)
ELM SPACE 4,20
** ELM - ERROR LOG MESSAGE PROCESSOR.
*
* ENTRY (CN) = SYMPTOM CODE.
* (DCHA+3) = CHANNEL NUMBER, INCLUDING CONCURRENCY FLAG.
* (CN) = SYMPTOM CODE FOR BML MESSAGE.
* (EQ) = EST ORDINAL.
* (FC) = *1MV* FUNCTION CODE.
* (DP - DP+4) = DEVICE SEEK PARAMETERS.
*
* EXIT (A) = 0.
*
* USES MT, T1, T2, T3, T8, CM - CM+4, CN - CN+4.
*
* CALLS C2D, DFM.
*
* MACROS MONITOR.
ELM SUBR ENTRY/EXIT
LDD EQ CONVERT UPPER TWO DIGITS OF EST ORDINAL
SHN -3
RJM C2D
STM ELMB+1
STM ELMC+1
STM ELMD+1
STM ELME+1
STM ELMF+1
LDD EQ CONVERT LOWER DIGIT OF EST ORDINAL
STM BMLEO STORE EST ORDINAL IN BML MESSAGE
LPN 7
SHN 6
ADC 2R0
STM ELMB+2
STM ELMC+2
STM ELMD+2
STM ELME+2
STM ELMF+2
LDD CN STORE SYMPTOM CODE IN MESSAGE
STD T2
STM BMLSC
LDD DP+1 ADD UNIT NUMBER TO MESSAGE
STM BMLUN
ELM1 LDK PPCP ADD PP NUMBER TO MESSAGE
CRD CM
ADN MMFL-PPCP
CRD CN
LDD CN ADD MACHINE ID TO MESSAGE
STM BMLMF
LDD IA STORE PP NUMBER IN BML MESSAGE
SBD CM+4
SHN 3
LMM DCHA+3 APPEND CHANNEL NUMBER
STM BMLPP
* DETERMINE THE APPROPRIATE BML MESSAGE IDENTIFIER TO BE
* ADDED TO THE MESSAGE. FOR DISKS, THE MESSAGE ID CAN BE
* DETERMINED FROM THE DEVICE CODE. FOR EXTENDED MEMORY,
* IT MUST BE DETERMINED FROM DATA IN WORD *DILL* OF THE MST.
LDN 0 INITIALIZE TABLE POINTERS
STD T8
LDC MSGID-2 SET TABLE ADDRESS
STD T1
LDD ES+3 SAVE DEVICE CODE
STD T3
LMC 2RDE
ZJN ELM2 IF A *DE* TYPE DEVICE
LMN 2RDP&2RDE
NJN ELM3 IF NOT A *DP* TYPE DEVICE
ELM2 LDD ES+4 GET MST WORD *DILL*
SHN 3
ADN DILL
CRD CM
LDD CM+3 USE *DILL* DATA FIELDS
LPC 707
STD T3
LDC MSEID-2 SET TABLE ADDRESS
STD T1
ELM3 LDN 2
RAD T1
LDI T1 SCAN TABLE FOR A MATCH
ZJN ELM4 IF DEVICE IS NOT FOUND IN TABLE
LMD T3
NJN ELM3 IF A MATCH HAS NOT YET BEEN FOUND
LDM 1,T1
ELM4 STM BMLID STORE MESSAGE ID IN BML MESSAGE
LDN BMLL1
STD T3 SET BML MESSAGE LENGTH
ELM5 LDN 2
RAD T8
LDM TFCN-2,T8
LMD T2
NJN ELM5 IF NOT A SYMPTOM CODE MATCH
LDM TFCN-1,T8
STD T1
LDC ELMD SET DEFAULT ERRORLOG MESSAGE
LJM 0,T1 PROCESS SYMPTOM CODE DEPENDENT DATA
ELM6 LDM DCHA+3 CHANNEL NUMBER (AND CONCURRENCY FLAG)
RJM C2D CONVERT CHANNEL NUMBER FOR MESSAGE
STM ELMA+1
LDN 0 SET NO BML MESSAGE
STD T3
LDC ELMA *CHXX, EQXXX VERIFICATION FAILURE.*
LJM ELM9.1 ISSUE ERRLOG MESSAGE
ELM7 LDN BMLL2 SET BML MESSAGE LENGTH
STD T3
LDD DP+2 SET CYLINDER IN MESSAGE
STM BMLCY
LDD DP+3 SET PHYSICAL TRACK IN MESSAGE
STM BMLTR
LDD DP+4 SET PHYSICAL SECTOR IN MESSAGE
STM BMLSN
LDD IR+4 STORE TRACK NUMBER IN ERRLOG MESSAGE
RJM C2D
STM ELMF+5
LDD IR+4
SHN -6
RJM C2D
STM ELMF+4
LDC ELMF+ERLN ISSUE ERROR LOG MESSAGE
RJM DFM
UJN ELM11 ISSUE BML MESSAGE
ELM8 LDC ELMC *EQXXX DOWNED BY SYSTEM.*
ELM9 STD MT
LDC ELMB+ERLN *EQXXX VERIFICATION FAILURE.*
RJM DFM
LDD MT
ELM9.1 LMC ERLN ISSUE ERROR LOG MESSAGE
ELM10 RJM DFM
LDN ZERL ISSUE *SEE, ERRORLOG* EVENT
CRD CM
LDN ELAE
STD CM+4
MONITOR EATM
ELM11 LDD T3
ZJN ELM12 IF NULL MESSAGE
STD CM+1 SET BML MESSAGE LENGTH
LDC BML+BMLN ISSUE BML MESSAGE
RJM DFM
ELM12 LJM ELMX RETURN
ELM13 LDN 0 SET NO BML MESSAGE
STD T3
LDC ELME+ERLN
UJP ELM10 ISSUE ERRLOG MESSAGE
TFCN SPACE 4
** TFCN - TABLE OF SYMPTOM CODE DEPENDENT PROCESSORS.
TFCN BSS 0
CON 4000+UCFC,ELM6 CHANNEL VERIFICATION FAILURE
CON /COMSDFS/HS0030,ELM9 DEVICE SET *OFF* BY SYSTEM
CON /COMSDFS/HS0034,ELM8 DEVICE SET *DOWN* BY SYSTEM
CON /COMSDFS/HS0105,ELM7 TRACK FLAWED BY SYSTEM
CON 0,ELM13 DEVICE UNAVAILABLE
MSGID SPACE 4,10
* MSGID - TABLE OF MESSAGE ID-S FOR NON-EXTENDED MEMORY DEVICES.
MSGID BSS 0
CON 2RDI,/COMSDFS/RM0002 (DI) 844-2X, HALF TRACK
CON 2RDJ,/COMSDFS/RM0003 (DJ) 844-4X, HALF TRACK
CON 2RDK,/COMSDFS/RM0004 (DK) 844-2X, FULL TRACK
CON 2RDL,/COMSDFS/RM0005 (DL) 844-4X, FULL TRACK
CON 2RDV,/COMSDFS/RM0006 (DV) 819, SINGLE DENSITY
CON 2RDW,/COMSDFS/RM0006 (DW) 819, DOUBLE DENSITY
CON 2RDM,/COMSDFS/RM0007 (DM) 885, HALF TRACK
CON 2RDQ,/COMSDFS/RM0017 (DQ) 885, FULL TRACK
CON 2RDR,/COMSDFS/RM0015 (DR) CDSS II
CON 2RDX,/COMSDFS/RM0010 (DX) 3330-1
CON 2RDY,/COMSDFS/RM0011 (DY) 3330-11
CON 2RDZ,/COMSDFS/RM0012 (DZ) 3350
CON 2RDA,/COMSDFS/RM0013 (DA) 33502
CON 2RDB,/COMSDFS/RM0014 (DB) 885-42 (PFMD)
CON 2RDC,/COMSDFS/RM0115 (DC) 895
CON 2RDD,/COMSDFS/RM0110 (DD) 834
CON 2RDF,/COMSDFS/RM0120 (DF) 887 (4KB SECTOR)
CON 2RDG,/COMSDFS/RM0111 (DG) 836
CON 2RDH,/COMSDFS/RM0121 (DH) 887 (16KB SECTOR)
CON 2RDN,/COMSDFS/RM0124 (DN) 9853 (XMD/CM3)
CON 2REA,/COMSDFS/RM0130 (EA) 5832 (1X SSD)
CON 2REB,/COMSDFS/RM0131 (EB) 5832 (2X SSD)
CON 2REC,/COMSDFS/RM0132 (EC) 5833 (1X SABRE)
CON 2RED,/COMSDFS/RM0133 (ED) 5833 (1XP SABRE)
CON 2REE,/COMSDFS/RM0134 (EE) 5833 (2X SABRE)
CON 2REF,/COMSDFS/RM0137 (EF) 5833 (2XP SABRE)
CON 2REG,/COMSDFS/RM0142 (EG) 5838 (1X ELITE)
CON 2REH,/COMSDFS/RM0143 (EH) 5838 (1XP ELITE)
CON 2REI,/COMSDFS/RM0144 (EI) 5838 (2X ELITE) (MP)
CON 2REJ,/COMSDFS/RM0147 (EJ) 5838 (2XP ELITE) (MP)
CON 2REK,/COMSDFS/RM0145 (EK) 5838 (3XP ELITE) (MP)
CON 2REL,/COMSDFS/RM0146 (EL) 5838 (4X ELITE) (MP)
CON 2REM,/COMSDFS/RM0135 (EM) 5833 (3XP SABRE) (MP)
CON 2REN,/COMSDFS/RM0136 (EN) 5833 (4X SABRE) (MP)
CON 2REO,/COMSDFS/RM0162 (EO) 47444 (1X 3.5IN)
CON 2REP,/COMSDFS/RM0163 (EP) 47444 (1XP 3.5IN)
CON 2RES,/COMSDFS/RM0164 (ES) 47444 (2X 3.5IN) (MP)
CON 2REU,/COMSDFS/RM0167 (EU) 47444 (2XP 3.5IN) (MP)
CON 2REV,/COMSDFS/RM0165 (EV) 47444 (3XP 3.5IN) (MP)
CON 2REW,/COMSDFS/RM0166 (EW) 47444 (4X 3.5IN) (MP)
CON 0 END OF TABLE
MSEID SPACE 4,10
* MSEID - TABLE OF MESSAGE ID-S FOR EXTENDED MEMORY DEVICES.
MSEID BSS 0
CON 102,/COMSDFS/RM0070 (DP) ECS I - DC135 DDP
CON 100,/COMSDFS/RM0071 (DE) ECS I - COUPLER
CON 202,/COMSDFS/RM0072 (DP) ECS II - DC135 DDP
CON 200,/COMSDFS/RM0073 (DE) ECS II - COUPLER
CON 101,/COMSDFS/RM0074 (DP) ECS I - DC145 DDP
CON 201,/COMSDFS/RM0075 (DP) ECS II - DC145 DDP
CON 300,/COMSDFS/RM0076 (DP) LCME - COUPLER
CON 400,/COMSDFS/RM0077 (DE) UEM
CON 500,/COMSDFS/RM0207 (DE) ESM - COUPLER
CON 501,/COMSDFS/RM0210 (DP) ESM - LOW SPEED PORT
CON 601,/COMSDFS/RM0172 (DP) STORNET
CON 0 END OF TABLE
SPACE 4,10
* BINARY MAINTENANCE LOG MESSAGE.
BML BSS 0
BMLID VFD 12/ MESSAGE ID
BMLSC VFD 12/ SYMPTOM CODE
BMLPP VFD 6/ PP NUMBER
VFD 6/ CHANNEL NUMBER
BMLUN VFD 6/0 EQUIPMENT NUMBER
VFD 6/ UNIT NUMBER
VFD 12/0 RESERVED
BMLEO VFD 12/ EST ORDINAL
VFD 24/0 RESERVED
BMLMF VFD 12/ MAINFRAME ID
VFD 12/0 RESERVED
BMLL1 EQU *-BML MESSAGE LENGTH (NON-TRACK FLAW FORMAT)
VFD 24/0 RESERVED
BMLCY VFD 12/ CYLINDER
BMLTR VFD 12/ TRACK
BMLSN VFD 12/ SECTOR
BMLL2 EQU *-BML MESSAGE LENGTH (TRACK FLAW FORMAT)
SPACE 4,10
* ERROR LOG MESSAGES.
ELMA DATA 6HCHXX,
ELMB DATA C*EQXXX VERIFICATION FAILURE.*
ELMC DATA C*EQXXX DOWNED BY SYSTEM.*
ELMD DATA C*EQXXX OFFED BY SYSTEM.*
ELME DATA C*EQXXX UNAVAILABLE.*
ELMF DATA C*EQXXX,TKNNNN, MEDIA DEFECT FLAWED.*
FMT SPACE 4,10
** FMT - FORMAT 895 DEVICE MAINTENANCE TRACK.
*
* ENTRY (T4) = CHANNEL NUMBER.
* (EQ) = EST ORDINAL.
* (DVMT) = MAINTENANCE TRACK NUMBER.
* (ES - ES+4) = EST ENTRY.
*
* EXIT (A) .NE. 0 IF ERROR.
* (T4) = CHANNEL NUMBER.
* (T5) = EST ORDINAL.
* (T6) = MAINTENANCE TRACK NUMBER.
*
* USES T1, T2, T4, T5, T6, CM - CM+4, CN - CN+2.
*
* CALLS FNC, SDR.
*
* MACROS DCHAN, DELAY, RCHAN.
FMT12 LDD ES+4 GET UNIT COUNT
SHN 3
ADK DDLL
CRD CM
LDD CM
LPN 7
STD T2
LDN FMMC
RJM SDR
LDN 0 SET RETURN STATUS
FMT SUBR ENTRY/EXIT
LDM DVMT RESTORE MAINTENANCE TRACK NUMBER
STD T6
LDD EQ RESTORE EST ORDINAL
STD T5
LDD T4
LPN 40
NJN FMT12 IF CONCURRENT CHANNEL
LDD T4
RCHAN RESERVE CHANNEL
LDC CTAB
STD T1 SET CHANNEL TABLE ADDRESS
FMT1 LDI T1
ZJN FMT2 IF END OF LIST
STD T2
LDI T2 MODIFY INSTRUCTION
SCN 37
LMD T4
STI T2
AOD T1 ADVANCE LIST POINTER
UJN FMT1 MODIFY NEXT INSTRUCTION
FMT2 LDD ES+4 GET UNIT LIST
SHN 3
ADK DDLL
CRD CM
LDD T6 STORE CYLINDER NUMBER
LPC 3777
SHN -1
STD CN
FMT3 LDD CM+4 EXTRACT NEXT UNIT
SHN 14
STD CM+4
ERRPL 4000-3*SLDC CODE DEPENDS ON VALUE
SHN -14
LMC 3S6 SET MODE/OPERATION DECODE
STD CN+1
LDD TH SET LARGE RECORD SIZE
STD CN+2
FMT4 LDK FCFP ISSUE FORMAT FUNCTION
RJM FNC
MJN FMT6 IF ERROR
ACN CH
LDN FPBL
OAM CN,CH
NJN FMT6 IF INCOMPLETE DATA TRANSFER
FMT5 EJM FMT7,CH IF ALL DATA WAS ACCEPTED
ADN 1
NJN FMT5 IF NOT TIMEOUT
FMT6 UJN FMT9 SET ERROR STATUS
FMT7 DCN CH+40
LCN 0 SET 4 SECOND TIMEOUT
STD T2
FMT8 DELAY 10
LDK FCGS ISSUE GENERAL STATUS FUNCTION
RJM FNC
MJN FMT9 IF ERROR
ACN CH
LDN 1
IAM T1,CH
NJN FMT9 IF INCOMPLETE DATA TRANSFER
SFM FMT9,CH IF CHANNEL PARITY ERROR
DCN CH+40
LDD T1
ZJN FMT10 IF TRACK FORMATTING COMPLETE
SOD T2
NJN FMT8 IF NOT TIMEOUT
FMT9 AOM FMTB,SP SET ERROR STATUS
UJN FMT11 COMPLETE PROCESSING
FMT10 AOD CN+2 INCREMENT TRACK NUMBER
LPN 77
LMN PTCYDC
NJP FMT4 IF NOT END OF CYLINDER
LDD CM
LPN 7
SBN 1
STD CM
PJP FMT3 IF MORE UNITS TO FORMAT
FMT11 DCN CH+40
LDK FCOC RELEASE HARDWARE RESERVES
RJM FNC
SHN 0-21 SET ERROR STATUS IF ERROR
RAM FMTB,SP
LDD T4 RELEASE CHANNEL
DCHAN
LDM FMTB,SP
LJM FMTX RETURN
FNC SPACE 4,10
** FNC - FUNCTION CHANNEL.
*
* ENTRY (A) = FUNCTION CODE.
*
* EXIT (A) .EQ. 0 IF FUNCTION WAS ACCEPTED.
* .LT. 0 IF TIMEOUT OR CHANNEL ACTIVE UPON ENTRY.
FNC SUBR ENTRY/EXIT
AJM FNC2,CH IF CHANNEL ALREADY ACTIVE
FAN CH
FNC1 ADD ON
IJM FNC3,CH IF FUNCTION ACCEPTED
NJN FNC1 IF NOT TIMEOUT YET
FNC2 DCN CH+40
LCN 0 RETURN ERROR STATUS
UJN FNCX RETURN
FNC3 LDN 0 RETURN SUCCESSFUL STATUS
UJN FNCX RETURN
CTAB BSS 0 TABLE OF CHANNEL INSTRUCTION ADDRESSES
CHTB
SPACE 4,10
** COMMON DECKS.
*CALL COMPC2D
*CALL COMPSDR
*CALL COMPSMI
VTE SPACE 4,15
** VTE - VERIFY TRT EOI SECTORS.
*
* ENTRY (EQ) = EST ORDINAL BEING PROCESSED.
*
* USES T6, T7.
*
* CALLS CMI, CPF, CPS, FEB, FFT, PCV, WEI.
*
* MACROS SETMS.
VTE SUBR ENTRY/EXIT
RJM PCV PRESET
VTE1 RJM FEB FIND *EOI* BYTE IN TRT
ZJN VTEX IF FINISHED WITH *EOI* PROCESSING
RJM FFT FIND FIRST TRACK OF TRT CHAIN
RJM CPS CHECK IF FILE IS PRESERVED
ZJN VTE5 IF FILE IS NOT PRESERVED
RJM CPF CHECK PRESERVED FILE INTERLOCKS
NJN VTE1 IF FILE INTERLOCKED ON OTHER MAINFRAME
VTE2 LDD T9 SETUP TO WRITE AN ENHANCED EOI SECTOR
SBN 1
STD T6
LDD EI
STD T7
SETMS IO,(AD,ND,NR)
RJM WEI WRITE PROPER EOI SECTOR
* CHECK FOR MS ERROR.
ENDMS
VTE3 UJP VTE1 CONTINUE TO NEXT EOI
VTE5 RJM CMI CHECK MACHINE RECOVERY TABLE INTERLOCK
ZJN VTE3 IF FILE NOT LOCAL TO THIS MAINFRAME
UJP VTE2 GO WRITE CORRECT EOI TO FILE
CMI SPACE 4,15
** CMI - CHECK MACHINE RECOVERY TABLE INTERLOCK.
*
* ENTRY (T6) = FIRST TRACK NUMBER OF FILE.
* (T8) = BYTE NUMBER IN TRT WORD.
* (CM - CM+4) = TRT WORD CONTAINING (T6).
* (FTPB) = LENGTH OF TRT BEING PROCESSED.
*
* EXIT (A) = 0 IF FILE IS NOT LOCAL TO THIS MAINFRAME.
* .NE. 0 IF FILE IS LOCAL TO THIS MAINFRAME.
*
* USES T1, T2, CM - CM+4.
CMI3 LDN 1 RETURN WITH LOCAL FILE STATUS
CMI SUBR ENTRY/EXIT
LDD CM+4 CHECK TRACK INTERLOCK
LMM TCMI,T8
SBD CM+4
PJN CMI3 IF FILE NOT INTERLOCKED
* CHECK MRT TO DETERMINE WHO HAS FILE INTERLOCKED.
CMI1 LDD T6 CALCULATE WORD OFFSET INTO MRT
SHN 21-4
STD T1
SHN 4-21 SAVE BIT INTERLOCK NUMBER (BITS 0-4)
STD T2
CMIB LDC ** GET TRT FWA
ADM FTPB ADD LENGTH OF TRT
ADD T1 ADD OFFSET INTO MRT
CRD CM
LDN CM+5 SET BYTE POINTER WITHIN MRT WORD
STD T0
CMI2 SOD T0
LCN 14
RAD T2
PJN CMI2 IF NOT POSITIONED TO PROPER BYTE
ADC SHNI+21-0+14
STM CMIC
LDI T0
CMIC SHN **
SHN 0-21
UJP CMIX RETURN
TCMI CON 200,100,40,20 TABLE OF TRACK INTERLOCK BITS
CPF SPACE 4,15
** CPF - CHECK PRESERVED FILE STATUS.
*
* ENTRY (MT) = FIRST TRACK NUMBER OF FILE.
*
* EXIT (A) = 0 IF FILE IS NOT INTERLOCKED.
* .NE. 0 IF FILE IS INTERLOCKED ON OTHER MAINFRAME.
*
* USES T6, T7.
*
* CALLS CPI, RDS.
*
* MACROS ENDMS, SETMS.
CPF SUBR ENTRY/EXIT
LDD MT SETUP TO READ SYSTEM SECTOR
STD T6
LDN 0
STD T7
SETMS IO,(AD,ND)
LDC BFMS READ SYSTEM SECTOR
RJM RDS
* CHECK FOR MS ERROR.
ENDMS
LDM BFMS+2+4
SHN -6
LMN PMFT
ZJN CPF1 IF DIRECT ACCESS PERMANENT FILE
LMN FAFT&PMFT
NJN CPF2 IF NOT FAST ATTACH PERMANENT FILE
CPF1 LDD ES
LPC 1020
ZJN CPF2 IF DEVICE NOT A SHARED DEVICE
RJM CPI CHECK MMF PERMANENT FILE INTERLOCKS
CPF2 UJP CPFX RETURN
CPS SPACE 4,10
** CPS - CHECK FOR PRESERVED FILE STATUS.
*
* ENTRY (T6) = FIRST TRACK NUMBER.
* (T8) = BYTE NUMBER IN TRT WORD.
* (CM - CM+4) = TRT WORD CONTAINING (T6).
*
* EXIT (A) = 0 IF FILE IS NOT PRESERVED.
* .NE. 0 IF FILE IS PRESERVED FILE.
CPS SUBR ENTRY/EXIT
LDD CM+4 CHECK FOR PRESERVED BIT
LMM TCPS,T8
SBD CM+4
SHN -21
UJN CPSX RETURN
* BIT MASKS FOR INTERLOCK TESTS.
TCPS CON 4000,2000,1000,0400
CPI SPACE 4,10
** CPI - CHECK MMF PERMANENT FILE INTERLOCKS.
*
* ENTRY (BFMS) = SYSTEM SECTOR OF PRESERVED FILE.
*
* EXIT (A) = 0 IF FILE IS NOT INTERLOCKED.
* .NE. 0 IF FILE IS INTERLOCKED ON OTHER MAINFRAME.
*
* USES T2, T3, T5.
*
* CALLS SMI.
CPI SUBR ENTRY/EXIT
LDD EQ
STD T5
RJM SMI GET CURRENT MACHINE INDEX
STD T2
SHN 1
STD T3 *2
ADD T3 *4
RAD T2 *5
UJN CPIX RETURN
FEB SPACE 4,15
** FEB - FIND EOI TRT BYTE.
*
* ENTRY (T9) = TRACK NUMBER TO BEGIN SEARCH.
*
* EXIT (A) = 0 IF NO EOI BYTE FOUND.
* (T6) = TRACK NUMBER CONTAINING EOI BYTE, IF FOUND.
* (T9) = UPDATED TO BEGIN NEXT SEARCH.
*
* USES T2.
*
* CALLS FTP.
FEB SUBR ENTRY/EXIT
LDN 0
STD T2
LDD T9
RJM FTP
ZJN FEBX IF NO *EOI* FOUND
ADN 1
STD T9
UJN FEBX RETURN
FFT SPACE 4,10
** FFT - FIND FIRST TRACK LINK.
*
* ENTRY (T6) = TRACK NUMBER TO LINK BACK TO *BOI*.
*
* EXIT (A) = (MT) = (T6) = TRACK NUMBER OF FIRST TRACK.
*
* USES MT, T2, T6.
*
* CALLS FTP.
FFT SUBR ENTRY/EXIT
FFT1 LDD T6
STD T2
LDN 0 BEGIN SEARCH FROM BEGINNING OF TRT
RJM FTP
NJN FFT1 IF FIRST LINK NOT FOUND
LDD T6 SAVE FIRST TRACK NUMBER
STD MT
UJN FFTX RETURN
FTP SPACE 4,15
** FTP - FIND TRT BYTE PATTERN.
*
* ENTRY (A) = TRACK NUMBER IN TRT TO BEGIN WITH.
* (T2) = PATTERN TO FIND IN TRT BYTES.
*
* EXIT (A) = (T6) = TRACK NUMBER OF PATTERN MATCH.
* (EI) = *EOI* SECTOR NUMBER, IF FOUND AS MATCH.
* (T8) = BYTE NUMBER IN TRT WORD.
*
* USES EI, T1, T2, T6, T8, CM - CM+4.
FTP SUBR ENTRY/EXIT
STD T6
LPN 3 CALCULATE FIRST OFFSET
ADN CM
STD T1
LDD T6 CALCULATE TRT WORD OFFSET
LPC 3777
SHN -2
STD T6
FTP1 LDC ** READ TRT WORD
FTPA EQU *-1
ADD T6
CRD CM
FTP2 LDI T1
SHN 21-13
PJN FTP4 IF *EOI* BYTE
SHN 21+1-21+13
LMD T2
ZJN FTP5 IF PATTERN MATCH
FTP3 AOD T1
SBN CM+4
NJN FTP2 IF NOT THROUGH ALL TRT BYTES
LDN CM
STD T1
LDC ** CHECK IF DONE WITH TRT
FTPB EQU *-1 (NUMBER OF WORDS IN TRT)
SBD T6
ZJN FTPX IF NO PATTERN MATCH FOUND
AOD T6 INCREMENT TRT WORD OFFSET
UJN FTP1 CONTINUE SEARCHING TRT
FTP4 LDD T2
NJN FTP3 IF NOT SEARCHING FOR *EOI*
LDI T1 SAVE *EOI* SECTOR NUMBER
STD EI
FTP5 LDD T1 CONSTRUCT TRACK NUMBER
SBN CM
STD T8 SAVE BYTE NUMBER IN TRT WORD
SHN 21-2
ADD T6
SHN 2
ADC 4000
STD T6
LJM FTPX RETURN
PCV SPACE 4,20
** PCV - PRESET CONDITIONS FOR *VTE*.
*
* ENTRY (ES - ES+4) = EST ENTRY.
*
* EXIT (FTPB) = TRT LENGTH IN CM WORDS.
*
* USES CM - CM+4, CN - CN+4.
*
* CALLS IRA.
PCV SUBR ENTRY/EXIT
RJM IRA SET ADDRESSES
LDD ES+4
SHN 3
ADK TDGL GET TRT LENGTH
CRD CN
ADN TRLL-TDGL GET TRT FWA
CRD CM
LDD CN+2
STM FTPB
LDD CM+4 PRESET TRT ADDRESS
STM CMIB+1
STM FTPA
LDD CM+3
LPN 77
LMC LDCI
STM CMIB
STM FTPA-1
UJP PCVX RETURN
QUAL *
OVERFLOW OVLA,BFMS
TITLE
END