IDENT 1RM,RDM
PERIPH
BASE M
SST
TITLE 1RM - REDEFINE MASS STORAGE.
*COMMENT 1RM - REDEFINE MASS STORAGE.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
RDM SPACE 4,10
***** 1RM - REDEFINE MASS STORAGE.
*
* A. J. BEEKMAN. 77/04/25.
* W. E. GOEBEL. 80/02/25.
*
* *1RM* PROVIDES FUNCTIONS USED IN THE REDEFINITION OR REPAIR
* OF 844 AND 885 TYPE MASS STORAGE DEVICES.
SPACE 4,10
*** *1RM* USES PARAMETERS PASSED TO IT FROM THE CPU ROUTINE
* *CONFIG* (CONFIGURATION MONITOR) TO PERFORM OPERATIONS
* WHICH CONTROL THE ON-LINE RECONFIGURATION OR REPAIR OF
* 844 AND 885 TYPE MASS STORAGE DEVICES.
SPACE 4,10
*** *1RM* PROCESSES THE FUNCTIONS AS DEFINED IN *COMS1RM*.
* ALL *1RM* FUNCTIONS REQUIRE THAT THE CALLING JOB HAS MASS
* STORAGE SUBSYSTEM ID.
*
* THE CALL TO *1RM* IS IN THE FOLLOWING FORM -
*
*T IR 24/ *1RMP*,18/ KDMA,18/ ADDR
*
* ADDR = ADDRESS OF CALL BLOCK.
* KDMA = K-DISPLAY MESSAGE LINE ADDRESS.
*
* THE CALL BLOCK FORMAT IS DOCUMENTED IN *COMS1RM*.
SPACE 4,10
*** K-DISPLAY COMMANDS.
*
* THE FOLLOWING COMMANDS ARE ENTERED IN RESPONSE TO AN
* ERROR CONDITION DETECTED BY *1RM*.
*
* ABORT. THIS COMMAND IS ENTERED TO DISCONTINUE PROCESSING
* OF THE CURRENT COMMAND IN PROGRESS.
*
* IGNORE. THE ERROR CONDITION DETECTED BY *1RM* IS TO
* BE IGNORED. THIS COMMAND SHOULD BE USED WITH
* DISCRETION. IT SHOULD BE USED ONLY WHEN THE
* ERROR BEING POSTED IS WELL UNDERSTOOD AND
* CAN LEGITIMATELY BE IGNORED.
*
* NEXT. THIS COMMAND IS ENTERED IN RESPONSE TO AN
* 885 SERVO TIMING CHECK WHEN THE TIMING DATA
* IS IN THE REQUIRED RANGE. ENTRY OF THIS
* COMMAND WILL CAUSE PROCESSING TO CONTINUE
* WITH EITHER THE NEXT UNIT OR THE NEXT STEP
* OF PROCESSING.
*
* RECHECK. THIS COMMAND IS ENTERED TO RETRY A PROCESS
* WHICH PREVIOUSLY GAVE AN ERROR. IF THE ERROR
* PERSISTS THE MESSAGE WILL BE POSTED AGAIN
* WITH ANOTHER OPPORTUNITY FOR OPERATOR ACTION.
SPACE 4,10
*** K-DISPLAY OPERATOR MESSAGES.
*
*
* THE FOLLOWING COMMANDS ARE POSTED ON THE K-DISPLAY BY
* *1RM*. WHEN *1RM* DETECTS A CONDITION WHICH MAY BE
* RESPONDED TO BY THE OPERATOR, A MESSAGE IS POSTED AND
* THE LEGAL COMMANDS ARE POSTED ON THE K-DISPLAY. THE
* FOLLOWING LIST OF ERROR MESSAGES LISTS THOSE LEGAL
* COMMANDS AND INDICATES IF AN OPERATOR RESPONSE IS
* REQUIRED OR OPTIONAL.
*
*
* UNIT XX, CHYY WRITE/READ VERIFY ERROR.
* PART OF THE VALIDATION PROCEDURE WHEN RETURNING
* AN EQUIPMENT FOR SYSTEM USE (CLEAR COMMAND) IS
* TO WRITE A SECTOR OF DATA TO THE DEVICE, READ IT
* BACK AND VERIFY THE DATA. WHEN THIS VERIFICATION
* FAILS THE ABOVE MESSAGE APPEARS.
* COMMANDS - REQUIRED.
* ABORT, IGNORE, RECHECK.
*
*
* ERROR IN PERFORMING SERVO CHECK ON UNIT XX.
* THE SERVO ADJUSTMENT PROCEDURE HAS ENCOUNTERED
* A DISK ERROR CONDITION.
* COMMANDS - REQUIRED.
* ABORT, IGNORE, RECHECK.
*
*
* UNIT XX SERVO TIMING= XXX. ACCEPTABLE RANGE IS 325 TO 345.
* WHEN RECONFIGURING AN 885 HDA A SERVO ADJUSTMENT
* PROCEDURE IS EXECUTED. THIS PROCEDURE MEASURES
* SERVO TIMING CHARACTERISTICS WHICH MUST BE IN THE
* SPECIFIED RANGE. A DRIVE ADJUSTMENT MUST BE MADE
* BY A CE UNTIL THE TIMING IS IN THE SPECIFIED
* RANGE.
* COMMANDS - REQUIRED.
* ABORT, RECHECK.
* NEXT. ONLY IF TIMING IS IN RANGE.
* IGNORE. ONLY IF TIMING IS NOT IN RANGE.
*
*
* ERROR ON LINK DEVICE.
* WHEN A DEVICE IS SHARED BETWEEN MAINFRAMES THE
* LINK DEVICE IS READ TO SYNCHRONIZE PROCESSING
* BETWEEN MACHINES. WHEN AN ERROR OCCURS IN
* READING THE LINK DEVICE THIS ERROR MESSAGE
* IS ISSUED.
* COMMANDS - REQUIRED.
* ABORT, IGNORE.
*
*
* SPIN DOWN UNIT XX.
* THIS IS A DIRECTIVE TO THE OPERATOR OR CE TO
* SPIN DOWN THE SPECIFIED UNIT IN PREPARATION
* FOR MOVING THE PACK OR HDA.
* COMMAND - OPTIONAL.
* ABORT, IGNORE.
*
*
* MOVE PACK FROM UNIT XX TO UNIT YY AND SPIN UP.
* THIS DIRECTIVE IS ISSUED TO THE OPERATOR FOR
* EACH UNIT TO BE MOVED DURING A RECONFIGURATION.
* UNIT XX HAS PREVIOUSLY BEEN DIRECTED TO BE
* SPUN DOWN AND ITS PACK OR HDA IS NOW TO BE
* MOVED TO UNIT YY.
* COMMANDS - OPTIONAL.
* ABORT, IGNORE.
*
*
* UNIT XX, CHYY LABEL READ ERROR.
* IN VERIFYING THAT THE CORRECT LABEL IS PRESENT
* ON UNIT XX A DISK ERROR OCCURRED WHICH PREVENTED
* THE LABEL FROM BEING READ SUCCESSFULLY.
* THE CHANNEL IS SPECIFIED IN THE MESSAGE AND
* MAY BE HELPFUL IF THE VERIFY ERROR OCCURS
* ONLY FROM A SINGLE CHANNEL IN A DUAL ACCESS
* CONFIGURATION.
* COMMANDS - REQUIRED.
* ABORT, IGNORE, RECHECK.
*
*
* UNIT XX, CHYY LABEL VERIFICATION ERROR.
* THE LABEL SECTOR WAS READ BUT THE DATA IN THE
* LABEL SECTOR IS NOT CORRECT.
* COMMANDS - REQUIRED.
* ABORT, IGNORE, RECHECK.
*
*
* WAITING FOR MACHINE ID=XX.
* A SHARED DEVICE IS BEING PROCESSED AND IT HAS
* BEEN DETECTED THAT MACHINE IDXX IS NOT AT THE
* SAME STAGE OF PROCESSING AS THIS MACHINE.
* COMMANDS - REQUIRED.
* ABORT, IGNORE.
*
*
* COMMAND ABORTED.
* INFORMATIVE MESSAGE STATING THAT THE ATTEMPTED
* COMMAND WAS ABORTED AND ALL VALUES FOR THE CURRENT
* EQUIPMENT BEING PROCESSED HAVE BEEN RESET TO THEIR
* ORIGINAL VALUE.
* COMMANDS - NONE.
*
*
* UNIT XX SERVO TIMING IN PROGRESS.
* INFORMATIVE MESSAGE STATING THAT ADJUSTMENTS ARE
* BEING MADE ON THE SERVO TIMING.
* COMMANDS - NONE.
*
*
* EQXXX, REDEFINITION COMPLETE.
* NORMAL COMPLETION MESSAGE.
*
*
* EQXXX, SYSTEM USAGE OF DEVICE SUSPENDED.
* INFORMATIVE MESSAGE STATING THAT DEVICE USAGE HAS
* BEEN SUSPENDED AS REQUESTED.
* COMMANDS - NONE.
SPACE 4,10
*** DAYFILE MESSAGES.
*
* * 1RM INCORRECT REQUEST.* = INCORRECT FUNCTION CODE OR STATUS
* WORD ADDRESS OUT OF RANGE.
*
* * 1RM USER ACCESS NOT VALID.* = CALLING JOB NOT MASS STORAGE
* SUBSYSTEM QUEUE PRIORITY.
SPACE 4,10
** ROUTINES USED.
*
* 0SI - SERVO TIMING.
SPACE 4
** COMMON DECKS.
*CALL COMPMAC
*CALL COMSCPS
QUAL DSL
*CALL COMSDSL
QUAL *
*CALL COMSEVT
*CALL COMSLSD
*CALL COMSMMF
*CALL COMSMSP
*CALL COMSMST
*CALL COMSPIM
*CALL COMSPRD
*CALL COMSSSD
*CALL COMSZOL
LIST X
*CALL COMS1RM
LIST *
TITLE MACROS.
COMMAND SPACE 4,10
** COMMAND - SPECIFY LEGAL K-DISPLAY COMMANDS.
*
* THE *TPAR* WORD INDICATES TO *CONFIG* WHICH K-DISPLAY
* COMMANDS ARE LEGAL FOR *1RM* PROCESSING. THIS
* MACRO IS USED TO SET THE *TPAR* WORD TO THE LEGAL
* COMMANDS. WHEN *CONFIG* DETECTS A LEGAL COMMAND IT IS
* PASSED TO *1RM* VIA WORD *TCOM* IN THE CALL BLOCK.
* *1RM* CHECKS FOR COMMANDS WITH THE AID OF THE *IFCOM*
* MACRO.
*
* COMMAND C
* C = A LIST OF LEGAL COMMAND KEYWORDS.
COMMAND MACRO C
MACREF COMMAND
.2 SET 0
IRP C
.1 DECMIC ._C-1
.2 SET .2+1BS".1"
IRP
IFGT .2,77
LDC .2
ELSE 1
LDN .2
RJM SLC
ENDM
LDBUF SPACE 4,10
** LDBUF - LOAD ADDRESS OF CALL BUFFER WORD.
*
* LDBUF ADD
* ADD = CALL BUFFER WORD INDEX.
LDBUF MACRO A
MACREF LDBUF
RJM LDB
IFNE A,0,1
ADN A
ENDM
IFCOM SPACE 4,10
** IFCOM - CHECK IF COMMAND ENTERED.
*
* THIS MACRO CHECKS FOR A COMMAND PREVIOUSLY SPECIFIED
* WITH THE COMMAND MACRO TO SEE IF IT HAS BEEN ENTERED
* VIA THE K-DISPLAY.
*
* IFCOM C,TAG
* C = COMMAND LIST TO BE CHECKED.
* TAG = ADDRESS TO JUMP TO IF COMMAND ENTERED.
IFCOM MACRO C,TAG
MACREF IFCOM
.2 SET 0
IRP C
.1 DECMIC ._C-1
.2 SET .2+1BS".1"
IRP
IFGT .2,77
LDC .2
ELSE 1
LDN .2
RJM CLC
IF DEF,TAG
IFLT *-TAG,40
NJN TAG IF TAG WITHIN RANGE
ELSE 2
ZJN *+3 IF TAG OUT OF RANGE, REVERSE TEST LOGIC
LJM TAG LONG JUMP TO TAG
ENDM
MESG SPACE 4,10
** MESG - SEND MESSAGE TO K-DISPLAY.
*
* MESG ADD
* ADD = ADDRESS OF K-DISPLAY MESSAGE.
MESG MACRO A
MACREF MESG
IFC NE,=A=*=,1
LDC A
RJM KMS
ENDM
SPACE 4,10
**** DIRECT LOCATION ASSIGNMENTS.
BEGIN BSSN 20
CN BSSN 5 CM WORD BUFFER
CH BSSN 1 CHANNEL CURRENTLY IN USE
DI BSSN 1 DAT INDEX
EQ BSSN 1 EST ORDINAL FOR RECONFIGURATION
FN BSSN 1 FUNCTION IN PROGRESS
GL BSSN 1 DEVICE UNAVAILABLE FLAG
LU BSSN 1 LOGICAL UNIT NUMBER OF CURRENT UNIT
LT BSSN 1 LABEL TRACK FROM MST
MF BSSN 1 MMF STATUS
MM BSSN 1 MACHINE MASK FOR THIS MACHINE
MS BSSN 1 MST ADDRESS/10B
NC BSSN 1 FIRST OF SECOND CHANNEL FLAG
NU BSSN 1 NUMBER OF UNITS FOR EQUIPMENT
PU BSSN 1 PHYSICAL UNIT NUMBER OF CURRENT UNIT
RM BSSN 1 *RD* DEVICE MST ADDRESS/10B
RU BSSN 1 UNITS FOR RECONFIGURATION OR REPAIR
SC BSSN 1 SUSPENDED DEVICE COUNT
SL BSSN 1 SINGLE UNIT SECTOR LIMIT FOR EQUIPMENT
MX BSSN 0 MAXIMUM DIRECT CELL
END BSSN
ERRPL MX-50 DIRECT CELL OVERFLOW
****
TITLE RDM - MAIN PROGRAM.
** RDM - MAIN PROGRAM.
ORG PPFW
RDM RJM PRS PRESET
RDM1 DELAY
PAUSE
LDBUF RFNB CHECK FOR FUNCTION REQUEST
CRD CN
LDD CM+1
ZJN RDM2 IF NO ERROR FLAG
LDN 0
LJM RDM4 DROP PP
RDM2 LDD CN+4
SHN 21
PJN RDM1 IF NO FUNCTION PRESENT
STD FN
RJM SEQ SET EQUIPMENT PARAMETERS
LDM TFCN,FN
STM RDMA
RJM * PROCESS REQUEST
RDMA EQU *-1
* RETURN FROM FUNCTION PROCESSOR.
* IF A DEVICE SUSPEND REQUEST IS OUTSTANDING *1RM* MUST
* REMAIN ASSIGNED UNTIL IT IS CLEARED. IF *1RM* WERE
* TO DROP OUT A DEADLOCK COULD BE CREATED BECAUSE OF
* PP RESOURCES BEING TIED UP WAITING FOR THE SUSPENDED
* DEVICE.
*
* (A) = 0 IF COMMAND WAS NOT ABORTED.
* (A) .NE. 0 IF *ABORT* WAS ENTERED.
ZJN RDM3 IF COMMAND NOT ABORTED
MESG RDMB *COMMAND ABORTED*
RDM3 RJM RRD RESET *RD* DEVICE
LDBUF RFNB READ FUNCTION WORD
CRD CN
LDD SC CHECK FOR SUSPENDED DEVICES
ZJN RDM4 IF NO DEVICE SUSPENDED - DROP PP
LDD CN+4
SCN 1
RDM4 STD CN+4
LDBUF RFNB
CWD CN
LDD CN+4
ZJN RDM5 IF DROP OF PP
LJM RDM1 CHECK FOR NEXT FUNCTION
RDM5 RJM CSP CLEAR EQUIPMENT ASSIGNMENT
LDK ZERL RESTART JOBS WAITING ON DEVICE
CRD CM
LDD EQ EST ORDINAL
STD CM+3
* LDN 0 *WISE* SUBFUNCTION
* STD CM+4
ERRNZ WISE ADJUST CODE IF VALUE CHANGES
MONITOR EATM
MONITOR DPPM
LJM PPR EXIT
RDMB DATA C*COMMAND ABORTED.*
SPACE 4,10
** TFCN - TABLE OF FUNCTION CODE PROCESSORS.
*
* ENTRY = 1 WORD INDEXED BY FUNCTION CODE.
*
*T 12/ ADDR
* ADDR = ADDRESS OF FUNCTION PROCESSOR.
TFCN INDEX TABLE OF FUNCTION CODE PROCESSORS
INDEX RUMF,UMT UPDATE MST-S FROM EXTENDED MEMORY
INDEX RCLF,CLR CLEAR IDLE AND SUSPEND REQUESTS
INDEX RCDF,CDI CLEAR DAT INTERLOCK
INDEX RDDF,RDD REDEFINE DEVICE
INDEX RSPF,SPD SUSPEND DEVICE ACTIVITY
INDEX RMXF
CDI TITLE CLEAR *DATI* INTERLOCK.
** CDI - CLEAR *DATI* INTERLOCK. (FUNCTION RCDF).
*
* ENTRY (MF) = MULTI-MAINFRAME LINK DEVICE.
*
* USES CN - CN+4.
*
* CALLS IFR.
CDI SUBR ENTRY/EXIT
LDD MF CHECK FOR MULTI-MAINFRAME
ZJN CDIX IF NOT MMF
LDC MMFL READ *DATI* INTERLOCK INDICATION
CRD CN
LDD CN+2
ZJN CDIX IF INTERLOCK NOT SET
LCN DATI
RJM IFR CLEAR *DATI* FLAG REGISTER INTERLOCK
LDN 0 CLEAR INTERLOCK INDICATOR
STD CN+2
LDC MMFL
CWD CN
LDN 0
UJN CDIX RETURN
TITLE CLR - CLEAR IDLE AND SUSPEND REQUEST.
** CLR - CLEAR IDLE AND SUSPEND REQUEST. (FUNCTION RCLF).
*
* CLEAR THE IDLE AND SUSPEND REQUESTED BIT FOR THE SPECIFIED
* EQUIPMENT.
*
* ENTRY (EQ) = EST ORDINAL.
*
* EXIT (A) .NE. 0 IF THE OPERATION WAS ABORTED OR AN ERROR
* FLAG IS SET AT THE CONTROL POINT.
*
* USES LU, NC, T5, T7, CM - CM+4, CN - CN+4.
*
* CALLS CAS, CDI, CDP, CSP, MSV, PUE, SCF, SDI, SNC, VLB, WAM.
*
* MACROS CMSTF, LDBUF, MONITOR, SFA.
CLR SUBR ENTRY
LDD GL
ZJN CLR1 IF DEVICE AVAILABLE
LJM CLR6 CLEAR SUSPEND AND IDLE STATUS
CLR1 LDN MSTL SET MST WORD COUNT
STD T7
LDBUF ESTD READ EST ENTRY
CRD CN
ADN MSTD-ESTD READ MST
CRM BFMS,T7
RJM SCF SET COMMON FIELDS IN *RD* DEVICE
NJN CLRX IF ERROR FLAG SET AT CP
* VERIFY FUNCTIONAL AND LOGICAL INTEGRITY OF EQUIPMENT.
CLR2 LDN 1 SET FIRST CHANNEL
STD NC
CLR3 RJM SNC SET *NC* CHANNEL
NJN CLR5 IF CHANNEL NOT AVAILABLE
RJM VLB VERIFY LABEL SECTOR
NJN CLR7 IF *ABORT*
CLR4 RJM MSV MASS STORAGE VERIFICATION
ZJN CLR5 IF VERIFY GOOD
LDC CLRA * UNIT XX, CHYY WRITE/READ VERIFY ERROR.*
RJM PUE PROCESS UNIT ERROR
MJN CLR4 IF *RECHECK*
NJN CLR7 IF *ABORT*
CLR5 SOD NC
PJN CLR3 IF MORE CHANNELS TO PROCESS
* ADVANCE TO NEXT UNIT.
AOD LU
LDD SL
RAD T7
SBM SLM
MJN CLR2 IF MORE UNITS TO PROCESS
* CLEAR SUSPEND AND IDLE STATUS.
CLR6 RJM SDI SET DAT INTERLOCK
CLR7 NJN CLR9 IF *ABORT*
RJM CSP CLEAR SUSPEND STATUS
RJM CAS CHECK ALL SUSPENDS CLEARED
NJN CLR8 IF SUSPEND SET FOR OTHER MACHINES
LDD EQ
STD T5
CMSTF GRDR CLEAR REDEFINITION REQUESTED
CLR8 RJM CDI CLEAR DAT INTERLOCK
LDC ZJNI+WAM4-WAMB USE CORRECT CONDITIONAL JUMP
RJM WAM ENSURE SYNCHRONIZATION OF PROCESSING
NJN CLR9 IF *ABORT*
RJM CDP COMPLETE DEVICE PROCESSING
LDN 0
CLR9 LJM CLRX RETURN
CLRA DATA C* UNIT XX, CHYY WRITE/READ VERIFY ERROR.*
RDD TITLE REDEFINE UNITS FUNCTION PROCESSOR.
** RDD - REDEFINE UNITS. (FUNCTION RDDF).
*
* REDEFINE AN EQUIPMENT BY CHANGING THE UNITS AND OPTIONALLY
* THE CHANNELS. THE CHANGE MAY INVOLVE PHYSICALLY MOVING
* PACKS OR HDAS IN WHICH CASE THE PROCESS IS GUIDED BY
* MESSAGES WHICH APPEAR ON THE *K* DISPLAY AND AT THE USER-S
* CONTROL POINT.
*
* ENTRY (FG) = FLAGS.
* 1 = SPIN DOWN UNITS BEING CHANGED.
* 2 = VERIFY LABELS ON NEW CONFIGURATION.
*
* EXIT (A) .NE. 0 IF OPERATION ABORTED.
*
* USES CM - CM+4, CN - CN+4.
*
* CALLS CLR, GCI, SCH, SDU, SPD, SUU, ULD.
*
* MACROS LDBUF.
RDD SUBR ENTRY/EXIT
LDD RU
ZJN RDD1 IF NO CHANGE OF UNITS
RJM SPD SUSPEND DEVICE USAGE
NJN RDDX IF REDEFINITION ABORTED
LDD GL
NJN RDD1 IF DEVICE UNAVAILABLE
RJM SDU SPIN DOWN CHANGED UNITS
NJN RDDX IF *ABORT* OR ERROR FLAG SET
RJM SUU SPIN UP UNITS
NJN RDDX IF *ABORT* OR ERROR FLAG SET
* SET NEW CONFIGURATION IN MST.
RDD1 LDBUF ESTD SET NEW CHANNELS
CRD CN
LDD CN+1 SET NEW CHANNELS IN EST
RJM GCI
ZJN RDD2 IF FULL-TRACK CHANNEL
LDD CN+1 SET HALF-TRACK FLAG
LPC 7377
LMC 400
STD CN+1
RDD2 LDD CN+2 PROCESS SECOND CHANNEL
ZJN RDD5 IF NO SECOND CHANNEL
RJM GCI
ZJN RDD5 IF FULL-TRACK CHANNEL
LDD CN+2 SET HALF-TRACK FLAG
LPC 7377
LMC 400
STD CN+2
RDD5 LDD EQ SET CHANNELS IN EST
RJM SCH
LDBUF MSTD+DDLL SET NEW UNIT LIST
CRD CN
LDD CN
LPC 3777
STD CN
LDD MS
SHN 3
ADN DDLL
CWD CN
RJM ULD UPDATE LINKED DEVICES MST-S
RJM CLR CLEAR SUSPEND AND IDLE AFTER VALIDATION
LJM RDDX RETURN
SPD TITLE SUSPEND PROCESSING ON DEVICE.
** SPD - SUSPEND PROCESSING ON DEVICE. (FUNCTION RSPF).
*
* THIS FUNCTION SUSPENDS PROCESSING ON A DEVICE SO THAT
* REPAIR OPERATIONS CAN BE EFFECTED. ALSO A DEVICE MAY
* BE SUSPENDED SO THAT A UNIT IN ITS CONFIGURATION MAY
* BE ADDED TO ANOTHER EQUIPMENT.
*
* EXIT (A) .NE. 0 IF THE OPERATION WAS ABORTED OR AN ERROR
* FLAG IS SET AT THE CONTROL POINT.
* (SC) UPDATED TO INDICATE NEW SUSPEND COUNT.
*
* USES CM - CM+4.
*
* CALLS CDI, SDI, SSP, WAM.
*
* MACROS MONITOR, SFA.
SPD SUBR ENTRY/EXIT
* THE *DATI* INTERLOCK IS HELD WHILE SETTING THE SUSPEND
* STATUS ON A DEVICE. SUSPEND STATUS REQUIRES THAT IDLE
* BE SET ON THE DEVICE. THE *DATI* INTERLOCK CONTROLS THE
* CLEARING OF SUSPEND. WHEN THE LAST MACHINE CLEARS IT-S
* SUSPEND STATUS IT ALSO CLEARS DEVICE IDLE. THUS WHEN
* CHECKING TO ENSURE IDLE IS SET SO THAT SUSPEND MAY THEN BE
* SET, THE *DATI* INTERLOCK IS HELD TO ENSURE THAT ANOTHER
* MACHINE IS NOT CLEARING IDLE AT THE SAME TIME.
RJM SDI SET *DATI* INTERLOCK
NJN SPDX IF SUSPEND ABORTED
* CHECK THAT THE DEVICE IDLE STATUS HAS NOT BEEN CLEARED
* BY ANOTHER MACHINE.
LDD EQ OBTAIN UP-TO-DATE MST IN CM
STD CM+1
LDN UTRS
STD CM+3
MONITOR STBM
SFA EST,EQ READ *ACGL* WORD OF MST
ADK EQDE
CRD CM
LDD CM+4
SHN 3
ADN ACGL
CRD CM
LDD CM+4 CHECK REDEFINITION REQUESTED BIT
SHN 21-GRDR
PJN SPD1 IF IDLE NOT SET
RJM SSP SET SUSPEND STATUS
SPD1 RJM CDI CLEAR *DATI* INTERLOCK
* IN ORDER TO ENSURE ALL MACHINES ARE SYNCHRONIZED IN
* THEIR PROCESSING OF A DEVICE THE FOLLOWING CODE WAITS
* FOR ANY OTHER MACHINES SHARING THE DEVICE TO SUSPEND
* ACTIVITY.
LDC NJNI+WAM4-WAMB USE CORRECT CONDITIONAL JUMP
RJM WAM WAIT FOR ALL MACHINES
NJN SPD2 IF *ABORT*
* LDN 0 INDICATE NO ABORT
SPD2 LJM SPDX RETURN
TITLE UMT - UPDATE SHARED DEVICE MST FROM EXTENDED MEMORY.
** UMT - UPDATE SHARED DEVICE MST FROM ECS. (FUNCTION RUMF).
*
* ENTRY NO CALL BLOCK PARAMETERS NEEDED.
*
* EXIT MST-S FOR ALL SHARED DEVICES UPDATED FROM ECS.
*
* USES CM - CM+4, CN - CN+4.
*
* MACROS MONITOR, SFA.
UMT SUBR ENTRY/EXIT
LDD MF
ZJN UMTX IF NOT MULTI-MAINFRAME
LDN ESTP INITIALIZE EST SEARCH
CRD CN
LDN NOPE-1 INITIALIZE EST ORDINAL FOR SEARCH
STD CN
UMT1 AOD CN ADVANCE EST ORDINAL
LMD CN+3
ZJN UMTX IF END OF EQUIPMENTS
SFA EST,CN READ EST ENTRY
ADK EQDE
CRD CM
LDD CM
SHN 21-13
PJN UMT1 IF NOT MASS STORAGE
SHN 21-11-21+13
PJN UMT1 IF NOT SHARED DEVICE
LDD CN UPDATE MST FROM EXTENDED MEMORY
STD CM+1
LDN UTRS
STD CM+3
MONITOR STBM
UJN UMT1 NEXT EQUIPMENT
CAS TITLE SUBROUTINES.
CAS SPACE 4,10
** CAS - CHECK ALL SUSPENDS CLEARED.
*
* ENTRY (EQ) = EST ORDINAL.
* (DI) = DAT INDEX.
*
* EXIT (A) = 0 IF SUSPEND CLEARED FOR ALL OTHER MACHINES.
*
* USES T1 - T3.
*
* CALLS RDE.
*
* MACROS SFA.
CAS SUBR ENTRY/EXIT
LDD MF
ZJN CASX IF NOT MMF
SFA EST,EQ TEST FOR SHARED DEVICE
ADK EQDE
CRD CM
LDD CM
LPC 1000
ZJN CASX IF DEVICE NOT SHARED
RJM RDE READ DAT ENTRY FOR DEVICE
NJN CASX IF *ABORT*
LDC BFMS+2+DALL*5
STD T1
LDN 1 PRESET SEARCH MASK
STD T2
LDN MXMF
STD T3
CAS1 LDM TDAT+5+4
LMD T2
SBM TDAT+5+4
PJN CAS2 IF NOT SHARING WITH THIS MACHINE
LDI T1
SHN 0-10
LMN 3
ZJN CAS4 IF DEVICE IS DOWN
CAS2 LDD T2 ADVANCE MACHINE MASK AND INDEX
RAD T2
LDN LLLL*5
RAD T1
SOD T3
NJN CAS1 IF MORE MACHINES
CAS3 LJM CASX RETURN
CAS4 LDN 1 SET REPLY STATUS
UJN CAS3 RETURN
CDP SPACE 4,10
** CDP - COMPLETE DEVICE PROCESSING.
*
* ENTRY (EQ) = EST ORDINAL.
*
* CALLS C2D.
*
* MACROS MESG.
CDP SUBR ENTRY/EXIT
LDD EQ CONVERT UPPER TWO DIGITS OF EST ORDINAL
SHN -3
RJM C2D
STM CDPA+1
LDD EQ CONVERT LOWER DIGIT OF EST ORDINAL
LPN 7
SHN 6
ADC 2R0,
STM CDPA+2
MESG CDPA
UJN CDPX RETURN
CDPA DATA C*EQXXX, REDEFINITION COMPLETE.*
CLC SPACE 4,10
** CLC - CHECK FOR LEGAL COMMAND.
*
* ENTRY (A) = COMMAND MASK TO CHECK.
*
* EXIT (A) .NE. 0 IF COMMAND ENTERED.
* LEGAL COMMANDS CLEARED WHEN (A) .NE. 0.
*
* USES CM - CM+4.
*
* MACROS COMMAND, LDBUF, PAUSE.
.1 DECMIC .ABORT-1 SET BIT NUMBER MICRO FOR *ABORT*
CLC1 LDN 1BS".1" ERROR FLAG TREATED AS *ABORT* COMMAND
CLC2 BSS 0
CLCA LPC *
ZJN CLCX IF NO LEGAL COMMAND FOUND
COMMAND CLEAR LEGAL COMMANDS
LDN 1 RETURN STATUS
CLC SUBR ENTRY/EXIT
STM CLCA+1 SET LEGAL COMMAND MASK
SHN -14
LMC LPCI
STM CLCA
PAUSE CHECK ERROR FLAG
LDD CM+1
SBN ODET
PJN CLC1 IF ERROR FLAG SET
LDBUF TCOM READ LEGAL COMMANDS
CRD CM
LDD CM+3
SHN 14
LMD CM+4
LJM CLC2 RETURN
CNR SPACE 4,10
** CNR - CHECK NOT READY STATUS ON DEVICE.
*
* ENTRY (T6) = TRACK TO READ.
* (T5) = EST ORDINAL.
*
* EXIT (A) = 0 IF UNIT HAS NOT READY STATUS.
* .GT. 0 IF UNIT HAS READY STATUS.
* .LT. 0 IF MASS STORAGE READ ERROR.
*
* CALLS RDS.
*
* MACROS ENDMS, SETMS.
CNR1 ENDMS
LDN 1 SET READY STATUS
CNR SUBR ENTRY/EXIT
SETMS IO,(AD,DF,NR)
LDC BFMS READ SECTOR
RJM RDS
PJN CNR1 IF NO MASS STORAGE ERROR
LPN 77 CHECK NOT READY STATUS
LMN NRDE
ZJN CNRX IF NOT READY
LCN 1 SET READ ERROR
UJN CNRX RETURN
CSP SPACE 4,10
** CSP - CLEAR SUSPEND STATUS.
*
* ENTRY (MS) = MST ADDRESS/10B.
* (SC) = SUSPEND COUNT.
*
* USES SC, T5, CM - CM+7.
*
* MACROS CMSTF, MONITOR.
CSP SUBR ENTRY/EXIT
LDM SCFA
LPN 77
ZJN CSP1 IF EQUIPMENT NOT ASSIGNED
SOM SCFA CLEAR ASSIGNMENT FLAG
LDD CP GET EJT ORDINAL
ADK TERW
CRD CM+3
LDD EQ
LMC 4000 INDICATE EJT ORDINAL PASSED
STD CM+1
MONITOR DEQM
CSP1 LDD SC
ZJN CSPX IF EQUIPMENTS NOT SUSPENDED
LDD EQ SET DEVICE STATE = ON
STD T5
STD CM+1
LDN **
CSPA EQU *-1
ZJN CSP2 IF DEVICE STATE UNCHANGED
LDK ONES
STD CM+2
MONITOR SEQM
SOD SC UPDATE SUSPEND COUNT
CSP2 CMSTF LFPR FORCE UPDATE OF LOCAL MST TO ECS
UJP CSPX RETURN
C3D SPACE 4,10
** C3D - CONVERT THREE DIGITS OF DECIMAL DISPLAY CODE.
*
* ENTRY (A) = NUMBER TO CONVERT.
*
* EXIT (A) = THREE DISPLAY CODE DIGITS.
* (A) = 999 IN DISPLAY CODE IF .GT. THREE DIGITS.
*
* USES CM - CM+4.
C3D3 LDC 3R999
C3D SUBR ENTRY/EXIT
STD CM+3
ADC -999D
PJN C3D3 IF .GE. 999
LDN 2 PRESET DIVISION
STD CM+4
LDN 0
STD CM
STD CM+1
STD CM+2
C3D1 LDD CM+3
SBM C3DA,CM+4
MJN C3D2 IF NEXT DECIMAL PLACE
STD CM+3
AOM CM,CM+4
UJN C3D1 CONTINUE DIVISION
C3D2 SOD CM+4
PJN C3D1 IF NOT COMPLETE
LDD CM+2 ASSEMBLE DIGITS
SHN 6
ADD CM+1
SHN 6
ADD CM
ADC 3R000
UJN C3DX RETURN
C3DA CON 1,10D,100D DIVISION TABLE
DOS SPACE 4,20
** DOS - DELAY APPROXIMATELY ONE SECOND.
*
* THE PURPOSE OF THIS ROUTINE IS TO AVOID CHECKING THE DEVICE
* TOO OFTEN. THE TIME INTERVAL IS NOT REALLY IMPORTANT.
*
* USES T1, T2.
*
* MACROS DELAY, PAUSE.
DOS SUBR ENTRY/EXIT
LDN 40D SET DELAY INCREMENT PARAMETERS
STD T2
DOS1 LDC 100D
STD T1
DOS2 DELAY
PAUSE NE
SOD T1
NJN DOS2 IF NOT END OF INNER INCREMENT
SOD T2
NJN DOS1 IF NOT END OF DELAY
UJN DOSX RETURN
GCI SPACE 4,10
** GCI - GET CHANNEL CONTROLWARE TABLE INDEX.
*
* ENTRY (A) = CHANNEL(S).
*
* EXIT (A) = 0, IF FULL-TRACK CONTROLLER CHANNEL.
* .NE. 0, OTHERWISE.
* (T2) = CHANNEL BEING PROCESSED.
*
* USES T0, T1, T2, CM - CM+4.
GCI SUBR ENTRY/EXIT
LPN 37 SAVE CHANNEL NUMBER
STD T1
STD T2
LCN 0
STD T0
GCI1 AOD T0 INCREMENT CM WORD OFFSET
LCN 5 DIVIDE BY 5
RAD T1
PJN GCI1 IF INCORRECT CM WORD OFFSET
LDC ** FWA OF CHANNEL CONTROLWARE TABLE
GCIA EQU *-2
ADD T0 ADD CORRECT CM WORD OFFSET
CRD CM
LDM CM+5,T1
LPN 77
LMN /DSL/FTCW
ZJN GCIX IF FULL TRACK CONTROLWARE CHANNEL
LMN /DSL/FMCW&/DSL/FTCW
UJN GCIX RETURN
KMS SPACE 4,10
** KMS - SEND MESSAGE TO K-DISPLAY.
*
* ENTRY (A) = MESSAGE ADDRESS.
*
* USES T1 - T2.
*
* MACROS DELAY, PAUSE.
KMS SUBR ENTRY/EXIT
STD T1
LDN 0
STD T2
KMS1 LDI T1 MOVE MESSAGE TO BUFFER
ZJN KMS2 IF END OF MESSAGE
STM KMSA,T2
AOD T1
AOD T2
LMN 60D/2
NJN KMS1 IF NOT END OF LINE
KMS2 LDC 2R BLANK FILL MESSAGE
STM KMSA,T2
AOD T2
SBN 60D/2
MJN KMS2 IF NOT END OF LINE
LDN 6
STD T1
LDD IR+3 WRITE MESSAGE TO K-DISPLAY
SCN 77
SHN 6
ADD IR+2
ADD RA
SHN 6
CWM KMSA,T1
KMS3 DELAY PAUSE FOR MESSAGE TO BE SEEN
PAUSE NE
SOD T2
PJN KMS3 IF MORE DELAY
LJM KMSX RETURN
KMSA BSS 60D/2+1
LDB SPACE 4,10
** LDB - LOAD CALL BLOCK BUFFER ADDRESS.
*
* EXIT (A) = ABSOLUTE ADDRESS OF CALL BLOCK.
LDB SUBR ENTRY/EXIT
LDD IR+3 GET CALL BLOCK ADDRESS FROM *IR*
LPN 77
SHN 6
ADD RA
SHN 6
ADD IR+4
UJN LDBX RETURN
PSA SPACE 4,10
** PSA - PROCESS SERVO ADJUSTMENT.
*
* ENTRY (T5) = 0.
* (T6) = LABEL TRACK.
* (T7) = CURRENT SECTOR.
*
* EXIT (A) .NE. 0 IF *ABORT*.
*
* USES CN - CN+1, T6 - T7.
*
* CALLS C3D, SPU, WFC.
*
* MACROS COMMAND, EXECUTE, MESG, SETMS.
PSA9 LDN 0 RETURN STATUS
PSA SUBR ENTRY/EXIT
SETMS STATUS
LDD CM+3
LPC 3777
LMC 2RDM
ZJN PSA1 IF 885
LMN 2RDQ&2RDM
NJN PSA9 IF NOT 885
PSA1 LDD T7 SAVE LOGICAL SECTOR NUMBER
STD CN
LDD RM SET UNIT IN MESSAGES
RJM SPU
STM PSAB+24
STM PSAC+3
STM PSAD+3
PSA2 MESG PSAD * UNIT XX SERVO TIMING IN PROGRESS.*
LDN 0 SET *0SI* FUNCTION
STM OVLA
EXECUTE 0SI,OVLA+1
STM PSAA SET PROCESSOR ADDRESS
LDN 0 SET TRACK TO ZERO
STD T6
LDD CN RESTORE SECTOR NUMBER
STD T7
RJM * PERFORM SERVO CHECK
PSAA EQU *-1
MJN PSA4 IF SERVO CHECK UNSUCCESSFUL
STD CN+1 SAVE TIME
NJN PSA3 IF NOT OUT OF RANGE
LDC 999D SET OUT OF RANGE
PSA3 RJM C3D CONVERT THREE DIGITS TO DECIMAL DISPLAY
STM PSAC+14
SHN -14
LMC 2L
STM PSAC+13
LDD CN+1
ADC -325D
MJN PSA5 IF OUT OF RANGE
SBN 346D-325D
PJN PSA5 IF OUT OF RANGE
COMMAND (ABORT,NEXT,RECHECK) ENABLE COMMANDS
UJN PSA6 SET MESSAGE
PSA4 COMMAND (ABORT,IGNORE,RECHECK) ENABLE COMMANDS
MESG PSAB SET ERROR MESSAGE
UJN PSA7 WAIT FOR COMMAND
PSA5 COMMAND (ABORT,IGNORE,RECHECK) ENABLE COMMANDS
PSA6 MESG PSAC SET TIMING DATA MESSAGE
PSA7 LDD LT RESET TO LABEL TRACK
STD T6
RJM WFC WAIT FOR COMMAND
PJN PSA8 IF NOT *RECHECK*
LJM PSA2 RECHECK SERVO TIMING
PSA8 LJM PSAX RETURN WITH STATUS
PSAB DATA C* ERROR IN PERFORMING SERVO CHECK ON UNITXX.*
PSAC DATA C* UNIT XX SERVO TIMING= XXX. ACCEPTABLE RANGE IS 325
,TO 345.*
PSAD DATA C* UNIT XX SERVO TIMING IN PROGRESS.*
PUE SPACE 4,10
** PUE - PROCESS UNIT ERROR.
*
* ENTRY (A) = ERROR MESSAGE ADDRESS.
* (CH) = CHANNEL.
*
* EXIT (A) .LT. 0 IF *RECHECK* COMMAND ENTERED.
* (A) = 0 IF *IGNORE* OR *NEXT* COMMAND ENTERED.
* (A) .GT. 0 IF *ABORT* COMMAND ENTERED.
*
* USES T1.
*
* CALLS C2D, SPU, WFC.
*
* MACROS COMMAND, MESG.
PUE SUBR ENTRY/EXIT
STD T1
LDD RM SET UNIT AND CHANNEL IN MESSAGE
RJM SPU
STM 3,T1
LDD CH
RJM C2D
STM 6,T1
COMMAND (ABORT,IGNORE,RECHECK)
LDD T1
MESG *
RJM WFC WAIT FOR COMMAND
LJM PUEX RETURN
RDE SPACE 4,20
** RDE - READ DAT ENTRY FROM EXTENDED MEMORY.
*
* ENTRY (MF) = LINK EQUIPMENT.
* (DI) = DAT INDEX.
*
* EXIT (A) .NE. 0 IF *ABORT*.
* (TDAT) = DAT ENTRY.
* (BFMS) = DAT TRACK FOR THIS EQUIPMENT.
*
* USES T3, CM - CM+4, T5 - T7.
*
* CALLS RDS.
*
* MACROS COMMAND, ENDMS, IFCOM, MESG, SETMS.
RDE SUBR ENTRY/EXIT
LDD MF SET LINK EQUIPMENT
STD T5
SETMS IO,(NR,DF)
* SET POINTERS TO READ DAT.
LDD CM+4 GET DAT POINTER
SHN 3
ADN ALGL
CRD CM
LDD CM+4 SET DAT TRACK
STD T6
LDD DI SET DAT SECTOR
SHN 21-4
STD T7
SHN -14 SET DAT SECTOR INDEX
STD T3
SHN 2 SET INDEX * 5
RAD T3
* READ DAT.
LDC BFMS READ SECTOR
RJM RDS
PJN RDE2 IF NO ERROR
MESG RDEA ERROR ON LINK DEVICE
COMMAND (ABORT,IGNORE) SET LEGAL COMMANDS
RDE1 IFCOM IGNORE,RDE2 IF *IGNORE*
IFCOM ABORT,RDEX IF *ABORT*
UJN RDE1 RECHECK COMMAND ENTRY
RDE2 LDN 0 INITIALIZE BUFFER INDEX
STD CM
RDE3 LDM BFMS+2,T3
STM TDAT,CM
AOD T3 ADVANCE POINTERS
AOD CM
LMN 5*2
NJN RDE3 IF TWO WORDS NOT MOVED
LDM TDAT+4 SET DAT TRACK FOR THIS EQUIPMENT
STD T6
LDN 0
STD T7
LDC BFMS READ DAT TRACK
RJM RDS
PJN RDE5 IF NO ERROR
MESG RDEA ERROR ON LINK DEVICE
COMMAND (ABORT,IGNORE) SET LEGAL COMMANDS
RDE4 IFCOM IGNORE,RDE5 IF *IGNORE*
IFCOM ABORT,RDEX IF *ABORT*
UJN RDE4 RECHECK COMMAND ENTRY
RDE5 ENDMS
LJM RDEX RETURN
RDEA DATA C*ERROR ON LINK DEVICE.*
RRD SPACE 4,10
** RRD - RESET *RD* DEVICE FIELDS.
*
* ENTRY (RM) = MST ADDRESS/10B OF *RD* DEVICE.
* (EQ) = ORIGINAL EST ORDINAL.
*
* USES CM - CM+4, CN - CN+4.
*
* CALLS SCH.
*
* MACROS MONITOR.
RRD SUBR ENTRY/EXIT
LDM SCFB
ZJN RRDX IF *RD* DOES NOT NEED TO BE RESET
* RESET EST/MST FIELDS.
LDN ZERL CLEAR CHANNELS
CRD CM
LDD RM CLEAR MST WORDS
SHN 3
ADN MDGL
CWD CM
ADN DILL-MDGL
CWD CM
ADN DDLL-DILL
CWD CM
LDN ZERL CLEAR CHANNELS
CRD CN
LDN 0
RJM SCH
LDC 2RRD RESET *RD* EQUIPMENT TYPE
STD CM+3
LDN SMNS SET MNEMONIC
STD CM+2
MONITOR SEQM
* LDN 0
STM SCFB CLEAR *RD* ALTERED FLAG
LJM RRDX RETURN
SCF SPACE 4,20
** SCF - SET COMMON *RD* DEVICE FIELDS.
*
* ENTRY (CN - CN+4) = EST ENTRY.
* (BFMS) = MST ENTRY.
* (EQ) = ORIGINAL EST ORDINAL.
*
* EXIT (A) .NE. 0 IF AN ERROR FLAG IS SET IN THE CPA.
* (T5) = 0.
* (T6) = LABEL TRACK.
* (T7) = 0.
* (LU) = 0.
*
* USES T5, T7 - CM+3.
*
* CALLS SCH.
*
* MACROS DELAY, MONITOR, PAUSE.
SCF SUBR ENTRY/EXIT
SCFA LDN 0
* LDN 1 (ON SECOND CALL)
NJP SCF2 IF DEVICE ALREADY ASSIGNED
LDD CP
ADK TERW
CRD T7
LDD EQ SET ORIGINAL EST ORDINAL
STD T5
SCF1 DELAY
PAUSE
LDD CM+1
NJN SCFX IF ERROR FLAG IS SET
LDD T5 SET EST ORDINAL
LMC 4000
STD CM+1
LDK RVES
STD CM+2
LDD T7 SPECIFY EJT ORDINAL
STD CM+3
MONITOR REQM
LDD CM+1
ZJN SCF1 IF EQUIPMENT NOT ASSIGNED
AOM SCFA INDICATE ASSIGNED EQUIPMENT
SCF2 LDN 0 CLEAR DEVICE ACTIVITY/SET STATE = ON
STM BFMS+DALL*5
STM BFMS+DALL*5+1
LDD RM SET PARAMETERS IN *RD* DEVICE
SHN 3
ADN MDGL
CWM BFMS+MDGL*5,ON
ADN DILL-MDGL-1
CWM BFMS+DILL*5,ON
ADN DDLL-DILL-1
CWM BFMS+DDLL*5,ON
LDN 0 SET CHANNELS
RJM SCH
LDN 0
STD CM+1
LDD CN+3 SET EQUIPMENT TYPE IN EQUIPMENT 0
STD CM+3
LDN SMNS SET MNEMONIC
STD CM+2
MONITOR SEQM
SFA EST,EQ
ADN EQAE
CRD CM
LDD CM+2 SET INSTRUCTION PLUG FOR DRIVER
STM SCFC+4
LDN 1
STD CM+1
LDD MA
CWM SCFC,ON
LDN 0 SET ADDRESS FOR *RD* DEVICE
SFA EST
STD CM+4
SHN -14
STD CM+3
MONITOR UTEM
* LDN 0 PRESET VALIDATION LOOP
STD LU
STD T5
STD T7
LDD LT
STD T6
AOM SCFB FLAG *RD* ALTERED
SETMS IO,(AD,DF,NR)
LDM MSD CHECK STATUS
LPC 100
LJM SCFX RETURN
SCFB CON 0 *RD* DEVICE ALTERED FLAG
SCFC VFD 6/EQAE,6/12D,6/24D,42/0
SCH SPACE 4,10
** SCH - SET CHANNEL(S) IN EST.
*
* ENTRY (A) = EQUIPMENT.
* (CN+1 - CN+2) = CHANNEL(S).
*
* USES CM - CM+4.
*
* MACROS MONITOR.
SCH SUBR ENTRY/EXIT
STD CM+1 ENTER CALL PARAMETERS
LDD CN+1
STD CM+2
LDD CN+2
STD CM+4
LDN SCHS SET CHANNEL(S) IN EST
STD CM+3
MONITOR SCSM SET CHANNELS
UJN SCHX RETURN
SDI SPACE 4,10
** SDI - SET *DATI* INTERLOCK.
*
* ENTRY (MF) = MMF LINK DEVICE.
*
* EXIT (A) .NE. 0 IF ABORT COMMAND ENTERED.
*
* USES CN - CN+4.
*
* CALLS IFR.
*
* MACROS COMMAND, IFCOM.
SDI2 COMMAND RESET LEGAL COMMANDS
LDC 4000 SET DAT INTERLOCK INDICATION
STD CN+2
LDC MMFL WRITE INTERLOCK INDICATOR
CWD CN
SDI3 LDN 0 RETURN STATUS
SDI SUBR ENTRY/EXIT
LDD MF
ZJN SDIX IF NOT MULTI-MAINFRAME
LDC MMFL CHECK *DATI* INTERLOCK HELD
CRD CN
LDD CN+2
NJN SDI3 IF INTERLOCK PREVIOUSLY SET
COMMAND ABORT ENABLE *ABORT* COMMAND
SDI1 LDN DATI ATTEMPT TO SET INTERLOCK
RJM IFR
LDD CM+1
ZJN SDI2 IF INTERLOCK SET
IFCOM ABORT,SDIX IF ABORT COMMAND ENTERED
UJN SDI1 RECHECK INTERLOCK
SDU SPACE 4,10
** SDU - SPIN DOWN UNITS.
*
* THIS ROUTINE MONITORS THE SPINNING DOWN OF UNITS TO BE
* RECONFIGURED OR RECABLED.
*
* ENTRY (RU) = UNITS TO BE RECONFIGURED OR RECABLED.
*
* EXIT (A) .NE. 0 IF *ABORT* ENTERED OR A CONTROL POINT
* ERROR FLAG IS SET.
*
* USES LU, T7, CN - CN+4.
*
* CALLS CNR, DOS, SCF, SPU.
*
* MACROS COMMAND, IFCOM, MESG, SFA.
SDU4 LDN 0
SDU SUBR ENTRY/EXIT
LDN MSTL SET *RD* DEVICE
STD T7
SFA EST,EQ SET OLD DEVICE PARAMETERS
ADK EQDE
CRD CN
LDD MS
SHN 3
CRM BFMS,T7
RJM SCF SET COMMON *RD* DEVICE FIELDS
NJN SDUX IF ERROR FLAG SET
UJN SDU2 ENTER LOOP
* FIND UNITS TO PROCESS AND WAIT FOR *NOT READY*.
SDU1 COMMAND CLEAR COMMAND LIST
AOD LU ADVANCE UNIT
LDD SL
RAD T7
SBM SLM
PJN SDU4 IF NO MORE UNITS
SDU2 LDD RU CHECK IF PROCESSING THIS UNIT
LMM TMSK,LU
SBD RU
PJN SDU1 IF NOT THIS UNIT
LDD RM
RJM SPU SET PHYSICAL UNIT NUMBER
STM SDUA+10
MESG SDUA * SPIN DOWN UNIT XX.*
SDU3 RJM CNR CHECK NOT READY
ZJN SDU1 IF NOT READY
COMMAND (ABORT,IGNORE)
IFCOM IGNORE,SDU1 IF *IGNORE*
IFCOM ABORT,SDUX IF *ABORT*
RJM DOS DELAY
UJN SDU3 RETRY
SDUA DATA C* SPIN DOWN UNIT XX.*
SEQ SPACE 4,10
** SEQ - SET EQUIPMENT PARAMETERS.
*
* EXIT (DI) = DAT INDEX FOR EQUIPMENT.
* (EQ) = EST ORDINAL FROM CALL BLOCK.
* (GL) = DEVICE UNAVAILABLE FLAG.
* (LT) = LABEL TRACK FOR EQUIPMENT.
* (MS) = MST ADDRESS FOR EQUIPMENT.
* (NU) = NUMBER OF UNITS IN EQUIPMENT.
* (RU) = UNITS FOR RECONFIGURATION OR REPAIR.
* (SL) = SINGLE UNIT SECTOR LIMIT.
*
* USES DI, EQ, GL, LT, MS, NU, RU, SL, CM - CM+4, T5 - T7.
*
* MACROS LDBUF, MONITOR, SFA.
SEQ SUBR ENTRY/EXIT
LDBUF CUEQ GET CURRENT EST ORDINAL
CRD CM
ADN URCD-CUEQ GET RECONFIGURATION AND REPAIR UNITS
CRD CM-1
ADN ESTD-URCD GET EST ENTRY
CRD CM-2
ADN MSTD-ESTD+ALGL GET LABEL TRACK
CRD CM-3
LDD CM+4 SET EST ORDINAL
STD EQ
LDD CM-1+4 SET UNITS
STD RU
LDD CM-2+4 SET MST ADDRESS
STD MS
LDD CM-3+1 SET LABEL TRACK
STD LT
LDBUF MSTD+MDGL READ DAT INDEX
CRD CM-2
ADN DDLL-MDGL READ NUMBER OF UNITS
CRD CM
LDD CM-2 SET DAT INDEX
LPC 377
STD DI
LDD CM-2+1 SET SINGLE UNIT SECTOR LIMIT
LPC 3777
STD SL
LDD CM SET NUMBER OF UNITS
LPN 7
ADN 1
STD NU
LDD CM
SHN 21-12
PJN SEQ1 IF NOT NULL EQUIPMENT
SOD NU
SEQ1 SFA EST,EQ SET DEVICE UNAVAILABLE FLAG
ADK EQDE
CRD CM
LDD CM
LPC 100
STD GL
SEQ2 LJM SEQX RETURN
SLC SPACE 4,10
** SLC - SET LEGAL COMMAND.
*
* ENTRY (A) = BIT MASK OF LEGAL COMMANDS.
*
* MACROS LDBUF.
SLC1 LDN ZERL CLEAR LEGAL COMMANDS
CRM SLCA,ON
LDBUF TCOM CLEAR COMMANDS ENTERED
CWM SLCA,ON
SBN 1+TCOM-TPAR
CWM SLCA,ON
SLC SUBR ENTRY/EXIT
ZJN SLC1 IF CLEARING COMMANDS
STM SLCA+4 CLEAR LEGAL COMMANDS
SHN -14
STM SLCA+3
LDBUF TPAR SET LEGAL COMMANDS
CWM SLCA,ON
UJN SLCX RETURN
SLCA BSSZ 5 LEGAL COMMANDS
SNC SPACE 4,10
** SNC - SET CHANNEL SPECIFIED BY *NC*.
*
* ENTRY (NC) = CHANNEL FLAG, 0 = FIRST CHANNEL.
*
* EXIT (A) = 0 IF CHANNEL SET IN *RD* DEVICE.
* (A) .NE. 0 IF CHANNEL DOWN OR NOT PRESENT.
*
* USES CH, CM - CM+4, CN - CN+4.
*
* CALLS SCH.
*
* MACROS LDBUF.
SNC2 LDN 1 SET CHANNEL NOT PRESENT
SNC SUBR ENTRY/EXIT
LDD NC
ZJN SNC1 IF FIRST CHANNEL
LDD CN+2
ZJN SNC2 IF NO SECOND CHANNEL
STD CN+1
LDN 0
SNC1 STD CN+2
LPN 77
STD CH
SHN 21-12
MJN SNCX IF DOWN CHANNEL
LDN 0
RJM SCH SET CHANNEL IN EST
LDBUF ESTD RESTORE EST
CRD CN
LDN 0
UJN SNCX RETURN
SPU SPACE 4,10
** SPU - SET PHYSICAL UNIT.
*
* ENTRY (LU) = LOGICAL UNIT NUMBER.
* (A) = MST ADDRESS CONTAINING UNIT.
*
* EXIT (PU) = UNIT NUMBER.
* (A) = DISPLAY CODE UNIT NUMBER.
*
* USES PU, T0, CM - CM+4.
*
* CALLS C2D.
SPU SUBR ENTRY/EXIT
SHN 3 READ *DDLL* MST WORD
ADN DDLL
CRD CM
LDN CM*2+11 SET BYTE POINTER = CM+4 - LU/2
SBD LU
SHN 21
STD T0
LMD T0
LMI T0
MJN SPU1 IF FIRST UNIT IN BYTE
SHN -6
SPU1 LPN 77
STD PU
RJM C2D CONVERT TO DISPLAY CODE
UJN SPUX RETURN
SSP SPACE 4,20
** SSP - SET SUSPEND STATUS ON DEVICE.
*
* ENTRY (EQ) = EST ORDINAL.
* (MS) = MST ADDRESS.
* (SC) = CURRENT COUNT OF SUSPENDED DEVICES.
*
* EXIT (A) .NE. 0 IF A CONTROL POINT ERROR FLAG IS SET.
* (SC) = UPDATED SUSPEND COUNT.
*
* USES CM+1, CM+2, SC, T5.
*
* CALLS C2D.
*
* MACROS CMSTF, MESG, MONITOR.
SSP SUBR ENTRY/EXIT
* SET DOWN STATUS.
LDD EQ
STD T5
STD CM+1
LDK DWES
STD CM+2
MONITOR SEQM
AOD SC UPDATE SUSPEND COUNT
AOM CSPA SET DEVICE STATE CHANGE FLAG
LDD EQ SET EQUIPMENT
STD T5
SHN -3 CONVERT UPPER TWO DIGITS OF EST ORDINAL
RJM C2D
STM SSPA+1
LDD EQ CONVERT LOWER DIGIT OF EST ORDINAL
LPN 7
SHN 6
ADC 2R0,
STM SSPA+2
CMSTF LFPR FORCE UPDATE OF LOCAL MST TO ECS
MESG SSPA
LDN 0
LJM SSPX RETURN
SSPA DATA C*EQXXX, SYSTEM USAGE OF DEVICE SUSPENDED.*
SUU SPACE 4,10
** SUU - SPIN UP UNITS.
*
* ENTRY (RU) = UNITS TO BE RECONFIGURED OR RECABLED.
*
* EXIT (A) .NE. 0 IF *ABORT* ENTERED OR CP ERROR FLAG IS SET.
*
* USES LU, T7, CN - CN+4.
*
* CALLS CNR, DOS, PSA, SCF, SPU.
*
* MACROS COMMAND, IFCOM, LDBUF, MESG.
SUU SUBR ENTRY/EXIT
LDN MSTL SET *RD* DEVICE
STD T7
LDBUF ESTD SET NEW DEVICE PARAMETERS
CRD CN
ADN MSTD-ESTD
CRM BFMS,T7
RJM SCF SET COMMON *RD* DEVICE FIELDS
NJN SUUX IF CONTROL POINT ERROR FLAG SET
UJN SUU2 ENTER LOOP
SUU1 COMMAND CLEAR COMMAND LIST
AOD LU ADVANCE UNIT
LDD SL
RAD T7
SBM SLM
ZJN SUUX IF END OF UNITS
SUU2 LDD RU
LMM TMSK,LU
SBD RU
PJN SUU1 IF NOT CHANGING THIS UNIT
LDD MS
RJM SPU GET OLD UNIT NUMBER
STM SUUA+12
LDD RM
RJM SPU GET NEW UNIT NUMBER
STM SUUA+20
COMMAND (ABORT,IGNORE) SET LEGAL COMMANDS
MESG SUUA *MOVE PACK FROM UNIT XX TO UNIT YY ...*
SUU3 RJM CNR CHECK IF UNIT READY
NJN SUU4 IF READY CHECK SERVO TIMING
RJM DOS DELAY
IFCOM IGNORE,SUU1 IF IGNORE OF NOT READY
IFCOM ABORT,SUUX IF *ABORT*
UJN SUU3 RECHECK UNIT
SUU4 RJM PSA PROCESS SERVO ADJUSTMENT
NJN SUU5 IF *ABORT*
LJM SUU1 PROCESS NEXT UNIT
SUU5 LJM SUUX RETURN
SUUA DATA C*MOVE PACK FROM UNIT XX TO UNIT YY AND SPIN UP.*
ULD SPACE 4,20
** ULD - UPDATE LINKED DEVICE MST-S.
*
* ENTRY (NU) = NUMBER OF UNITS FOR EQUIPMENT.
* (MS) = MST ADDRESS/10B OF EQUIPMENT TO RECONFIGURE.
*
* USES T7, CM - CM+4, CN - CN+4, T1 - T3.
*
* MACROS SFA.
ULD SUBR ENTRY/EXIT
* CHECK IF UNIT IS IN FIRST EQUIPMENT OF LINKED DEVICE.
LDD MS GET ORIGINAL NUMBER OF UNITS - 1
SHN 3
ADN DDLL
CRD CM
LDD CM
SHN -3
LPN 7
ADN 1
STD T1 SAVE POSITION IN UNIT LIST
SBD NU
PJN ULDX IF UNITS IN FIRST EQUIPMENT IN CHAIN
* BUILD TABLE OF UNITS IN *TDAT*.
LDN 0 INITIALIZE LOOP
STD T2
LDN 4
STD T3
ULD1 LDM CM,T3 SET UNITS
SHN 14
STM TDAT+1,T2
SHN -14
STM TDAT,T2
LDN 2 ADVANCE TABLE POINTER
RAD T2
SOD T3
NJN ULD1 IF MORE UNITS IN *DDLL*
* GET NEXT EQUIPMENT IN CHAIN.
ULD2 LDD MS
SHN 3
ADN STLL
CRD CN
LDD CN+4
SHN -3
SFA EST
ADK EQDE
CRD CM
LDD CM+4
STD T7 SAVE MST ADDRESS
SHN 3
ADN DDLL
CRD CM
LDD CM
SHN 21-12
MJN ULD2 IF NULL EQUIPMENT
LDD CM SET NUMBER OF UNITS - 1 FOR THIS EQUIPMENT
SHN -3
LPN 7
STD T2
* RESET UNIT LIST FROM TABLE OF UNITS.
LDN CM+4 PRESET LOOP
STD T3
ULD3 LDI T3 REPLACE LOWER UNIT
SCN 77
LMM TDAT,T1
STI T3
AOD T1 ADVANCE TABLE POINTER
SBD NU
PJN ULD4 IF END OF UNITS
SOD T2
MJN ULD4 IF END OF EQUIPMENT
LDI T3 REPLACE UPPER UNIT
SHN 14
SCN 77
LMM TDAT,T1
SHN 6
STI T3
SOD T3
AOD T1 ADVANCE TABLE POINTER
SBD NU
PJN ULD4 IF END OF UNITS
SOD T2
PJN ULD3 IF MORE UNITS IN THIS EQUIPMENT
ULD4 LDD T7 REWRITE UNIT LIST
SHN 3
ADN DDLL
CWD CM
LDD T1
SBD NU
PJN ULD5 IF END OF UNITS
LJM ULD2 GET NEXT EQUIPMENT IN CHAIN
ULD5 LJM ULDX RETURN
VLB SPACE 4,20
** VLB - VERIFY LABEL.
*
* ENTRY (T5) = 0, *RD* PSEUDO EQUIPMENT.
* (T6) = LABEL TRACK.
* (T7) = LU * SINGLE UNIT SECTOR LIMIT.
* (LU) = LOGICAL UNIT NUMBER, 0 - 7.
* (PU) = PHYSICAL UNIT NUMBER, 0 - 77.
* (CH) = CHANNEL(S) TO CHECK.
*
* EXIT (A) .NE. 0 IF ABORT ENTERED.
*
* USES CM - CM+4.
*
* CALLS PUE, RDS.
*
* MACROS ENDMS, SETMS.
VLB5 LDC VLBB * UNIT XX LABEL VERIFY ERROR.*
RJM PUE PROCESS UNIT ERROR
MJN VLB1 IF *RECHECK*
* UJN VLBX RETURN *ABORT* OR *IGNORE* STATUS
VLB SUBR ENTRY/EXIT
VLB1 SETMS IO,(AD,DF,NR)
LDC BFMS READ LABEL SECTOR
RJM RDS
PJN VLB2 IF NO READ ERROR
LDC VLBA * UNIT XX LABEL READ ERROR.*
RJM PUE PROCESS UNIT ERROR
MJN VLB1 IF *RECHECK*
NJN VLBX IF *ABORT*
* UJN VLB2 IGNORE READ ERROR
VLB2 ENDMS
* VERIFY CONTROL BYTES, TRACK AND EQUIPMENT TYPE.
LDM BFMS CHECK CONTROL BYTES
LMC 3777
VLB3 NJN VLB5 IF NOT PROPER CONTROL BYTE
LDM BFMS+1
LMN 77
NJN VLB3 IF NOT PROPER WORD COUNT
LDM FTSS
LMD LT
NJN VLB3 IF NOT PROPER TRACK
LDD MS READ FAMILY AND DEVICE NUMBER
SHN 3
ADN PFGL
CRD CM
LDM E4SS CHECK EQUIPMENT TYPE
LMD CN+3
LPC 3777
VLB4 NJN VLB3 IF NOT CORRECT EQUIPMENT TYPE
* VERIFY FAMILY, DEVICE NUMBER AND RELATIVE UNIT.
LDD CM+4 SET RELATIVE UNIT
SCN 70
STD CM+4
LDD LU
SHN 3
RAD CM+4
LDM N4SS+5*PFGL COMPARE FAMILY AND DEVICE NUMBER
LMD CM
NJN VLB4 IF NO MATCH
LDM N4SS+5*PFGL+1
LMD CM+1
NJN VLB4 IF NO MATCH
LDM N4SS+5*PFGL+2
LMD CM+2
NJN VLB4 IF NO MATCH
LDM N4SS+5*PFGL+3
LMD CM+3
NJN VLB4 IF NO MATCH
LDM N4SS+5*PFGL+4 COMPARE RELATIVE UNIT AND TOTAL UNITS
LMD CM+4
LPN 77
NJN VLB4 IF NO MATCH
LJM VLBX RETURN
VLBA DATA C* UNIT XX, CHYY LABEL READ ERROR.*
VLBB DATA C* UNIT XX, CHYY LABEL VERIFICATION ERROR.*
WAM SPACE 4,10
** WAM - WAIT FOR ALL MACHINES TO SYNCHRONIZE PROCESSING.
*
* ENTRY (A) = CONDITIONAL JUMP INSTRUCTION FOR *WAMB*.
* (MF) = MULTI-MAINFRAME FLAG.
* (MM) = MACHINE MASK OF THIS MACHINE.
*
* EXIT (A) .NE. 0 IF COMMAND ABORTED.
*
* USES CN - CN+2.
*
* CALLS RDE.
*
* MACROS COMMAND, IFCOM, MESG, SFA.
WAM5 COMMAND CLEAR COMMAND LIST
LDN 1 RETURN ABORT STATUS
WAM SUBR ENTRY/EXIT
STM WAMB CHANGE CONDITIONAL JUMP INSTRUCTION
ERRNG 37+WAMB-WAM4 IF OUT OF RANGE
LDD MF
ZJN WAMX IF NOT MULTI-MAINFRAME
SFA EST,EQ TEST FOR SHARED DEVICE
ADK EQDE
CRD CM
LDD CM
LPC 1000
ZJN WAMX IF DEVICE NOT SHARED
* CHECK FOR DOWN STATUS SET/CLEAR ON ALL ACTIVE MACHINES
* SHARING THIS DEVICE.
LDN 1 INITIALIZE MACHINE SEARCH LOOP
STD CN MACHINE INDEX
STD CN+1 MACHINE MASK
LDN 0
STD CN+2 MST LOCAL AREA INDEX
WAM1 RJM RDE READ DAT ENTRY
NJN WAM5 IF *ABORT*
WAM2 LDM TDAT+5+4 CHECK ACCESS BIT
LMD CN+1
SBM TDAT+5+4
PJN WAM3 IF NO ACCESS SET FOR MACHINE
LDD MM
LMD CN+1
ZJN WAM3 IF THIS MACHINE
LDM BFMS+2+DALL*5,CN+2
SHN 0-10
LMN 3
NJN WAM4 IF DEVICE NOT DOWN
* ZJN WAM4 IF DEVICE STILL DOWN
WAMB EQU *-1
WAM3 LDD CN+1 ADVANCE MACHINE
RAD CN+1
LDN LLLL*5
RAD CN+2
AOD CN
LMN MXMF+1
NJN WAM2 IF NOT END OF MACHINES
COMMAND CLEAR LEGAL COMMAND TABLE
LDN 0
LJM WAMX RETURN
WAM4 COMMAND (ABORT,IGNORE) ENABLE COMMAND PROCESSING
LDM BFMS+2+STLL*5+2,CN+2 SET MACHINE ID
STM WAMA+14
MESG WAMA SET MESSAGE IN K-DISPLAY
IFCOM IGNORE,WAM3 IF *IGNORE* COMMAND ENTERED
IFCOM ABORT,WAM5 IF *ABORT* COMMAND ENTERED
LJM WAM1 RECHECK THIS MACHINE INDEX
WAMA DATA C* WAITING FOR MACHINE ID=XX.*
WFC SPACE 4,10
** WFC - WAIT FOR COMMAND TO BE ENTERED.
*
* EXIT (A) .LT. 0 IF *RECHECK* COMMAND ENTERED.
* (A) = 0 IF *IGNORE* OR *NEXT* COMMAND ENTERED.
* (A) .GT. 0 IF *ABORT* COMMAND ENTERED.
* COMMAND LIST CLEARED.
*
* USES T1.
*
* MACROS COMMAND, IFCOM.
WFC2 COMMAND CLEAR COMMAND LIST
SOD T1 RETURN COMMAND CODE
WFC SUBR ENTRY/EXIT
WFC1 LDN 0 PRESET COMMAND CODE
STD T1
IFCOM RECHECK,WFC2 IF *RECHECK*
AOD T1
IFCOM (IGNORE,NEXT),WFC2 IF *IGNORE* OR *NEXT*
AOD T1
IFCOM ABORT,WFC2 IF *ABORT*
UJN WFC1 RECHECK COMMAND ENTRY
TITLE COMMON DECKS.
** COMMON DECKS.
*CALL COMPC2D
*CALL COMPIFR
*CALL COMPTGB
*CALL COMPTLB
*CALL COMPMSV
SPACE 4
USE LITERALS
TABLES SPACE 4,10
TMSK BSS 0 TABLE OF MASK BITS INDEXED BY ORDINAL
CON 1
CON 2
CON 4
CON 10
CON 20
CON 40
CON 100
CON 200
CON 400
CON 1000
CON 2000
CON 4000
TDAT EQU * TWO CM WORD BUFFER FOR DAT ENTRY
OVLA EQU TDAT+5*2 OVERLAY AREA
L.1RM EQU OVLA+1+ZPXL END OF *1RM* PLUS *0PI*
ERRPL L.1RM-BFMS *OPI* EXTENDS INTO BFMS
PRS TITLE PRESET.
** PRS - PRESET.
*
* EXIT (SC) = 0, SUSPENDED DEVICE COUNT.
* (EQ) = *RD* EQUIPMENT EST ORDINAL.
* (RM) = *RD* DEVICE MST ADDRESS.
* (MF) = MULTI-MAINFRAME LINK DEVICE NUMBER.
* (TUNL) = DDLL MST WORD FOR NEW DEFINITION.
*
* USES EQ, MF, MM, RM, SC, CM - CM+4.
*
* CALLS DFM.
*
* MACROS MONITOR, SFA.
PRS SUBR ENTRY/EXIT
* CHECK STATUS WORD ADDRESS.
LDD IR+3 CHECK ADDRESS
LPN 77
SHN 14
MJN PRS1 IF OUT OF RANGE
ADD IR+4
ADN CBMX
SHN -6
SBD FL
PJN PRS1 IF .GT. FL - 1
LDD IR+3 SET ADDRESS - 2
LPN 77
SHN 14
ADD IR+4
SBN 2
PJN PRS2 IF .GT. RA + 1
PRS1 LDC =C* 1RM INCORRECT REQUEST.*
LJM PRS3 ISSUE ERROR MESSAGE AND ABORT
* CHECK FOR LEGAL ACCESS.
PRS2 LDD CP GET QUEUE PRIORITY
ADN JCIW
CRD CM
LDC MSSI
LMD CM+2
ZJN PRS4 IF LEGAL ACCESS
LDC =C* 1RM USER ACCESS NOT VALID.*
PRS3 RJM DFM ISSUE MESSAGE
MONITOR ABTM
LJM PPR EXIT
* GET MASS STORAGE EQUIPMENT EST POINTERS.
* SET MULTI-MAINFRAME STATUS.
PRS4 LDC MMFL GET EST ORDINAL OF LINK DEVICE
CRD CM
LDD CM+1 SET MMF STATUS
LPC 777
STD MF
LDD CM+3 SET MACHINE MASK
STD MM
LDN RDEQ READ *RD* EST ENTRY
STD EQ
SFA EST
ADK EQDE
CRD CM
LDD CM+4
STD RM
LDN 0 CLEAR SUSPENDED DEVICE COUNT
STD SC
LDK CHTP READ FWA OF CHANNEL TABLES
CRD CM
LDD CM+2 PRESET FWA OF CONTROLWARE TABLE
SHN 14
LMD CM+3
ADN CTALL*2
STM GCIA+1
SHN -14
RAM GCIA
LJM PRSX RETURN
SPACE 4
END