IDENT 1DS,IDS
PERIPH
BASE MIXED
SST
*COMMENT 1DS - DSD REQUEST PROCESSOR.
EQV$ EQU 1 DO NOT VERIFY EQUIPMENT IN *COMPRSS*
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TITLE 1DS - DSD REQUEST PROCESSOR.
SPACE 4,10
*** 1DS - DSD REQUEST PROCESSOR.
* G. R. MANSFIELD. 70/10/24.
* R. E. DENNIS. 74/10/15.
* C. B. LOSCHEIDER. 78/09/11.
SPACE 4,10
*** *1DS* PROCESSES FUNCTIONS FOR *DSD* WHICH ARE NOT
* POSSIBLE FOR *DSD* TO PROCESS. *1DS* IS CALLED BY
* *1SJ* TO INITIATE THE JOB *CMS*. *1DS* IS CALLED
* BY *6DI* TO INITIATE THE *LBC* JOB.
SPACE 4,10
*** PROGRAMMING CONSIDERATIONS.
*
** FOR A DETAILED EXPLAINATION OF THE *DSD*/*1DS*
* INTERFACE, SEE COMMON DECK *COMS1DS*.
SPACE 4,15
*** CALL.
*
*T 18/1DS, 6/SC, 1/C, 1/L, 3/LOG, 6/REQ, 12/P1, 12/P2
*
* SC SYSTEM CONTROL POINT.
* C CONTROL POINT CHANGE REQUIRED (CP NUMBER IN P2).
* L LOCKED BUFFER.
* LOG LOGGING CONTROL BITS.
* REQ FUNCTION CODE.
* P1 PARAMETER 1.
* P2 PARAMETER 2.
SPACE 4,10
*** DAYFILE MESSAGES.
*
*
* *DEADSTART SEQUENCING FAILED.*
* THE DEADSTART SEQUENCING JOB COULD NOT BE INITIATED
* AFTER SEVERAL RETRIES BECAUSE OF AN I/O ERROR
* ENCOUNTERED ON A MASS STORAGE DEVICE.
SPACE 4,15
*** ACCOUNT DAYFILE MESSAGES.
*
*
* *ABLQ, C1, JSN, YYMMDD, HHMMSS, DC.*
* *ABLQ, C2, XXXXXX.XXXKUNS.*
* QUEUED FILE WITH JOB SEQUENCE NAME JSN AND
* DISPOSITION CODE DC HAS BEEN ROUTED TO THE
* QUEUE ON DATE YYMMDD AT TIME HHMMSS.
* THE FILE HAS A DISPOSITION CODE OF DC AND IS
* XXXXXX.XXX THOUSAND PRU-S IN LENGTH.
*
* *ACDT, DATE YY/MM/DD.*
* WHERE YY=YEAR, MM=MONTH, DD=DAY OF THE NEW
* DATE ENTERED BY THE OPERATOR.
*
* *ACDT, TIME HH.MM.SS.*
* WHERE HH=HOURS, MM=MINUTES, SS=SECONDS OF THE
* NEW TIME ENTERED BY THE OPERATOR.
*
* *MSEQ, NNN, LEVEL1, LEVEL2.*
* WHERE NNN=EST ORDINAL, LEVEL1=LOWER ACCESS LEVEL,
* LEVEL2=UPPER ACCESS LEVEL ENTERED BY THE OPERATOR
* VIA THE *SECUREQ* COMMAND.
*
* *MSOT, OT, LEVEL1, LEVEL2.*
* WHERE OT=ORIGIN TYPE (IN DISPLAY CODE),
* LEVEL1=LOWER ACCESS LEVEL, LEVEL2=UPPER ACCESS LEVEL
* ENTERED BY THE OPERATOR VIA THE *SECURES* COMMAND.
*
* *MSSA, USERNAME.*
* WHERE USERNAME=VALID USER NAME (I.E., A USER WITH
* SECURITY ADMINISTRATOR PRIVILEGES) ENTERED BY THE
* OPERATOR VIA THE *SECURITY-UNLOCK* COMMAND.
*
* *MSSI, USERNAME.*
* WHERE USERNAME=INCORRECT USER NAME (I.E., A USER WHO
* DOES NOT HAVE SECURITY ADMINISTRATOR PRIVILEGES)
* ENTERED BY THE OPERATOR VIA THE
* *SECURITY-UNLOCK* COMMAND.
SPACE 4,20
**** DIRECT LOCATION ASSIGNMENTS.
PP EQU LA POT POINTER
S1 EQU 16 SCRATCH CELL
S2 EQU 17 SCRATCH CELL
PA EQU S1 - S2 POT ADDRESS (2 LOCATIONS)
FS EQU 20 - 24 FST ENTRY (5 LOCATIONS)
MS EQU FS+5 MST POINTER
QA EQU 26 FNT ORDINAL
CA EQU 27 COMMAND ADDRESS
CN EQU 30 - 34 CM WORD BUFFER (5 LOCATIONS)
JF EQU 35 JOB FIELD LENGTH
TN EQU 36 TABLE NUMBER
FG EQU 37 CPU FLAGS
AB EQU 40 - 44 CM WORD BUFFER (5 LOCATIONS)
NC EQU 45 SYSTEM CP NUMBER
JS EQU 57 JOB SERVICE CLASS
FN EQU 60 - 64 CM WORD BUFFER (5 LOCATIONS)
SR EQU FN SCRATCH (5 LOCATIONS)
FV EQU 65 CONSTANT FIVE
JC EQU 66 JOB COUNTER
BA EQU 67 SECTOR BUFFER ADDRESS
****
SPACE 4,10
* ASSEMBLY CONSTANTS.
CPMR EQU 10D CONTROL POINT MOVE RETRY COUNT
DFFL EQU 60000 DEFAULT FIELD LENGTH
DFTL EQU 777777 DEFAULT JOB STEP TIME LIMIT
SPACE 4,10
*CALL COMPMAC
*CALL COMSACC
QUAL BIO
*CALL COMSBIO
QUAL *
*CALL COMSCPS
*CALL COMSDFS
QUAL DSL
*CALL COMSDSL
QUAL *
*CALL COMSDSP
*CALL COMSEJT
QUAL EVENT
*CALL COMSEVT
QUAL *
*CALL COMSHIO
*CALL COMSJIO
QUAL LSD
*CALL COMSLSD
QUAL *
*CALL COMSMLS
QUAL MMF
*CALL COMSMMF
QUAL *
QUAL MTX
*CALL COMSMTX
QUAL *
*CALL COMSMSP
*CALL COMSMST
*CALL COMSPFM
QUAL REM
*CALL COMSREM
QUAL *
QUAL RSX
*CALL COMSRSX
QUAL *
*CALL COMSSCD
*CALL COMSSSD
*CALL COMSSSE
*CALL COMSPIM
*CALL COMSPRD
*CALL COMSTCM
*CALL COMSWEI
*CALL COMSZOL
QUAL 1DS
LIST X
*CALL COMS1DS
LIST *
QUAL *
*CALL COMS1MV
TITLE MACRO DEFINITIONS.
BIODF SPACE 4,20
** BIODF - DEFINE *BIO* DEVICE/FUNCTIONS.
*
* BIODF FUNC,(DV,DV,...DV)
*
* ENTRY *FUNC* = *BIO* REQUEST FUNCTION.
* *DV* = DEVICE TYPE.
*
* THIS MACRO WORKS LIKE THE *INDEX* MACRO DEFINED IN *COMPMAC*.
* IT IS USED TO GENERATE A TABLE OF ALLOWABLE DEVICES FOR
* REQUESTS TO *BIO*. ENTRIES IN THE TABLE ARE PLACED
* BETWEEN THE FIRST *BIODF* AND LAST *BIODF* SHOWN BELOW.
*
*TAG BIODF
* .
* .
* BIODF MAXFUNC
*
* MACROS .1.
PURGMAC BIODF
MACRO BIODF,A,B,C
MACREF BIODF
IFC NE,$A$$
A BSS 0
.3 SET A
ELSE 8
ORG .3+/BIO/_B
IFC NE,$C$$,5
QUAL BIO
LOC B
.1 (C)
CON .1
QUAL *
BSS 0
BIODF ENDM
CHKERR SPACE 4,10
** CHKERR - CHECK ERROR FLAG.
*
* RETURNS BYTE ONE OF *STSW*.
PURGMAC CHKERR
CHKERR MACRO
MACREF CHKERR
LDD CP
ADK STSW
CRD CM
LDD CM+1
ENDM
FCN SPACE 4,10
** FCN - DEFINE FUNCTION PROCESSOR.
*
* FCN CODE,NAME
*
* ENTRY *CODE* = FUNCTION CODE.
* *NAME* = FUNCTION PROCESSING ROUTINE NAME.
FCN MACRO C,N
INDEX C*2,N-N/10000B*10000B
CON N/10000B
ENDM
OVERLAY SPACE 4,10
** OVERLAY - DEFINE THE SECONDARY OVERLAY(S).
*
* OVERLAY (TEXT)
* ENTRY *TEXT* = TEXT OF SUBTITLE.
.N SET 0
OVLB MICRO 1,, 2D 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"
TTL 1DS/".O" - TEXT
TITLE
IDENT ".O",OVLA TEXT
*COMMENT 1DS - TEXT
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
ORG OVLA
LJM * ENTRY/EXIT
UJN *-2 OVERLAY EXIT ADDRESS
ENDM
SUBSYST SPACE 4,10
** SUBSYST - GENERATE SUBSYSTEM TABLE.
*
* SUBSYST NAME,ID,PR,PP,AUTO,DEF,DCP,CP,PROC,ABT
*
* ENTRY *NAME* = 3 CHARACTER SUBSYSTEM NAME.
* *ID* = SUBSYSTEM ID.
* *PP* = NAME OF PP, IF PP INITIATED SUBSYSTEM.
* *AUTO* = *AUTO* IF *AUTO* ENABLED SUBSYSTEM.
PURGMAC SUBSYST
SUBSYST MACRO NM,ID,PT,PP,AU,DF,DC,CP,PR,AB
.SUB RMT
IAS.NM EQU * TAG FOR TABLE ENTRY
VFD 18/3L_NM NAME
.A IFC EQ,$PP$$
VFD 1/0 PPU FLAG
.A ELSE
VFD 1/1 PPU FLAG
.A ENDIF
.B IFC EQ,$AU$AUTO$
VFD 1/1 AUTO FLAG
.B ELSE
VFD 1/0 AUTO FLAG
.B ENDIF
.1 SET MXSI-ID
.2 SET .1/12D
.3 SET 4-.2
.4 DECMIC .1-12D*.2
.5 SET 1S".4"
VFD 4/.3 *SSSL* BYTE
VFD 12/ID SSID
VFD 12/.5 *SSSL* MASK
.C IFC EQ,$NM$CMS$
VFD 12/NOQF*100+7
.C ELSE
VFD 12/0
.C ENDIF
IASBE EQU *-IAS.NM
.SUB RMT
SUBSYST 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_X LJM * EXIT ADDRESS
NAME EQU *-1+.N*10000B
.NAME EQU NAME-.N*10000B ENTRY ADDRESS WITHIN OVERLAY
QUAL *
ENDM
TITLE MAIN PROGRAM.
** IDS - MAIN PROGRAM.
ORG PPFW
IDS RJM /PRESET/PRS PRESET PROGRAM
LDM /PRESET/TRQP+1,CM CHECK OVERLAY LOAD
ZJN IDS1 IF OVERLAY NOT NEEDED
LMC 2L"OVLB" LOAD OVERLAY
RJM EXR
IDS1 RJM * PROCESS FUNCTION
IDSA EQU *-1
IDS2 RJM LKC LOG COMMAND
LDC 0
IDSB EQU *-1
ZJN IDS3 IF NO JOBS ENTERED
LDC INWL CHECK CHECKPOINT IN PROGRESS FLAG
CRD CN
LDD CN+4
LPN 20
NJN IDS3 IF CHECKPOINT IN PROGRESS
LDN 1
STD CM+2
MONITOR RSJM REQUEST SCHEDULER
LDN **
IDSE EQU *-1
NJN IDS4 IF PP NOT TO BE DROPPED
IDS3 MONITOR DPPM DROP PP
IDS4 LJM PPR EXIT TO PP RESIDENT
IDSC CON 0 ORIGINAL (IR+2)
IDSD CON 0 *DSD* REPLY STATUS
TITLE RESIDENT SUBROUTINES.
CSS SPACE 4,10
** CSS - CHECK SUBSYSTEM STATUS.
*
* ENTRY (A) = SUBSYSTEM ID.
* (CP) = SUBSYSTEM CPA ADDRESS.
*
* EXIT (A) = 0, IF SUBSYSTEM ACTIVE.
* TO *IDS2* IF SUBSYSTEM NOT ACTIVE.
*
* USES T7, CM - CM+4.
CSS SUBR ENTRY/EXIT
STD T7
LDD CP
ADN JCIW
CRD CM
LDD CM+2
LMD T7
ZJN CSSX IF CORRECT SUBSYSTEM
LJM IDS2 DROP PP
FAS SPACE 4,10
** FAS - FORMAT AND SEND ACCOUNT FILE MESSAGE.
*
* FORMAT AND SEND *DSD* MESSAGE TO ACCOUNT DAYFILE
* AND/OR ERROR LOG AND/OR SYSTEM DAYFILE.
*
* ENTRY (IDSC) = LOGGING CONTROL BITS.
* (IR+4) = 6/KEYBOARD BUFFER OFFSET, 6/ .
* (BUF+2 - BUF+61) = DSD KEYBOARD DATA.
*
* CALLS DFM, RPK.
FAS SUBR ENTRY/EXIT
LDC /OVERLAY/BUF+2 READ AND PACK KEYBOARD BUFFER
RJM RPK
LDN ZERL CLEAR LAST WORD
CRM /OVERLAY/BUF+31,ON
LDC 2RDS PLACE HEADER ON MESSAGE
STM /OVERLAY/BUF
LDC 2R,
STM /OVERLAY/BUF+1
LDM IDSC
SHN 21-6
PJN FAS1 IF ERROR LOG NOT SELECTED
LDC /OVERLAY/BUF+ERLN SEND TO ERROR LOG
RJM DFM
FAS1 LDM IDSC
SHN 21-7
PJN FAS2 IF SYSTEM DAYFILE NOT SELECTED
LDC /OVERLAY/BUF+MDON
RJM DFM
FAS2 LDM IDSC
SHN 21-10
PJN FAS3 IF ACCOUNT FILE NOT SELECTED
LDN ZERL CLEAR LAST WORD
CRM /OVERLAY/BUFB+31,ON
LDC /OVERLAY/BUFB+ACFN
RJM DFM
FAS3 LJM FASX EXIT
LKC SPACE 4,10
** LKC - LOG KEYBOARD COMMAND.
*
* ENTRY (IDSC) = ORIGINAL IR+2.
*
* EXIT (IR+4) = 0.
*
* USES IR+4, CM - CM+4.
*
* CALLS FAS.
LKC SUBR ENTRY/EXIT
LDM IDSC SET LOGGING PARAMETER
LPC 700
ZJN LKC1 IF NO LOGGING REQUIRED
LDN 0
STD IR+4
RJM FAS PROCESS LOGGING
LKC1 LDM IDSC
LPC 1700
ZJN LKCX IF INTERLOCK NOT SET
LMM IDSC
STM IDSC
LDM IDSD *DSD* REPLY
STD T7
LDN ZERL CLEAR INTERLOCK
CRD CM
ADN /1DS/DSDL+1-ZERL
CWD T7
SBN 1
CWD CM
UJN LKCX RETURN
RPK SPACE 4,10
** RPK - READ AND PACK KEYBOARD BUFFER.
*
* ENTRY (A) = DESTINATION ADDRESS.
* (IR+4) = 6/KEYBOARD BUFFER OFFSET, 6/ .
*
* USES S1, S2, T0.
RPK SUBR ENTRY/EXIT
STD S1 SAVE ADDRESS
LDN /1DS/KBCML
STD S2
LDC /1DS/DSDL
CRM BFMS+100D,S2
LDN ZERL
CRM BFMS+100D+/1DS/KBCML*5,ON
LDD IR+4 SET KEYBOARD ADDRESS
SHN -6
ADC BFMS+100D
STD S2
LDN /1DS/KBCML*5/2
STD T0
RPK1 LDI S2 PACK NEXT TWO CHARACTERS
SHN 6
LMM 1,S2
STI S1
ZJN RPK2 IF END OF MESSAGE
LDN 2
RAD S2
RPK2 AOD S1
SOD T0
PJN RPK1 IF MORE DATA TO PACK
LDD S1 READ ONE CM WORD OF ZERO
STM RPKA
LDN ZERL
CRM *,ON
RPKA EQU *-1
LJM RPKX EXIT
SCP SPACE 4,10
** SCP - SET CP/PCP AREA ADDRESS.
*
* ENTRY (A) = CP/PCP NUMBER.
* (NC) = SYSTEM CP NUMBER.
*
* EXIT (A) = CPA/PCPA ADDRESS.
SCP1 ADD NC SET REAL CP AREA ADDRESS
SHN 7
SCP SUBR ENTRY/EXIT
SBD NC
MJN SCP1 IF REAL CP
ZJN SCP1 IF SYSTEM CP
SBN 1 SET PCP AREA ORDINAL
SHN 7
ADC 0 ADD BASE PCPA ADDRESS
SCPA EQU *-1
UJN SCPX RETURN
SRD SPACE 4,10
** SRD - SAVE REPLY TO *DSD*.
*
* ENTRY (A) = 0 IF POSITIVE REPLY TO *DSD*.
*
* EXIT (IDSD) = *DSD* REPLY.
* (IDSC) LOGGING BITS (6-8) CLEARED IF ERROR RESPONSE.
SRD SUBR ENTRY/EXIT
STM IDSD SAVE REPLY
ZJN SRDX IF NO ERROR
LDM IDSC
LPC -700 CLEAR LOGGING
STM IDSC
UJN SRDX RETURN
SPACE 4,10
** COMMON DECKS.
QUAL ACS
QUAL$ EQU 0 DO NOT FURTHER QUALIFY *ACS*
T2 EQU LA
*CALL COMPACS
QUAL *
ACS EQU /ACS/ACS
*CALL COMPCLD
*CALL COMPC2D
*CALL COMPCTI
RND$ EQU 1 SELECT ROUNDING FOR *COMPDV5*
*CALL COMPDV5
EJT$ EQU 1 EJT SEARCH
FNT$ EQU 1 FNT SEARCH
IFP$ EQU 1 *COMPGFP* REMOTE ASSEMBLY
JCB$ EQU 1 JCB SEARCH
QFT$ EQU 1 QFT SEARCH
*CALL COMPGFP
SFI$ EQU 1 SELECT CALLER DELAY PROCESSING
*CALL COMPSFI TABLE INTERLOCK
*CALL COMPSTI
*CALL COMPTGB
*CALL COMPTLB
WCS$ EQU 1 CONSECUTIVE SECTORS AFTER SYSTEM SECTOR
*CALL COMPWSS
SPACE 4,10
OVLA EQU *+5 ORIGIN OF OVERLAY AREA
TITLE OVERLAYABLE SUBROUTINES.
QUAL OVERLAY
CCF SPACE 4,15
** CCF - CLEAR CHECKPOINT FLAGS.
*
* THIS ROUTINE CLEARS THE *VALID CHECKPOINT
* FILE* FLAG IN THE SECTOR OF LOCAL AREAS FOR
* EACH CHECKPOINT DEVICE. THIS PREVENTS
* LEVEL 1 AND 2 RECOVERY DEADSTART FROM
* AN OBSOLETE CHECKPOINT FILE.
*
* USES T6, AB - AB+4, CM - CM+4, CN - CN+4,
* FN - FN+4, FS - FS+4.
*
* CALLS CSB, LKC.
*
* MACROS SFA.
CCF SUBR ENTRY/EXIT
RJM LKC LOG KEYBOARD COMMAND
CCF1 LDN JSCL READ SCHEDULER CONTROL WORD
CRD AB
LDD AB
SHN 21-13
PJN CCF2 IF SCHEDULER ACTIVE
DELAY
UJN CCF1 WAIT UNTIL SCHEDULER ACTIVE
CCF2 LDK ESTP GET LAST MASS STORAGE EST ORDNAL+1
CRD AB
ADK MMFL-ESTP
CRD FN
LDN NOPE-1 INITIALIZE EST ORDINAL
STD S1
CCF3 AOD S1 ADVANCE EST ORDINAL
STD T5
LMD AB+3
ZJN CCFX IF END OF MASS STORAGE DEVICES
SFA EST,S1 READ EST ENTRY
ADK EQDE
CRD FS
LDD FS
SHN 21-13
PJN CCF3 IF NOT MASS STORAGE DEVICE
SHN 13-2
PJN CCF3 IF NOT CHECKPOINT DEVICE
LDD FS+4
SHN 3
ADK ACGL
CRD CN
ADK ALGL-ACGL
CRD CM
LDD CM+1 SET LABEL TRACK FOR *CSB*
STD T6
RJM CSB CLEAR SLA BIT
UJN CCF3 PROCESS NEXT DEVICE
CCI SPACE 4,15
** CCI - COMPLETE COMMAND IMAGE.
*
* ENTRY (A) = ADDRESS OF COMMAND COMPLETION IN *C* FORMAT.
* (CA) = FWA OF COMMAND BUFFER.
*
* EXIT (T1) = BUFFER ADDRESS FOR NEXT COMMAND.
*
* ERROR TO *IDS2* IF FULL SECTOR.
*
* USES T1.
*
* CALLS ACS, DV5.
CCI2 ADD HN SET ADDRESS FOR NEXT COMMAND
STD T1
SHN 2
ADD CA
RAD T1
CCI SUBR ENTRY/EXIT
RJM ACS ASSEMBLE CHARACTER STRING
LDI T1
ZJN CCI1 IF ASSEMBLY ON BYTE BOUNDARY
AOD T1
CCI1 AOD T1 CALCULATE CM WORD COUNT
SBD CA
RJM DV5
STM -1,CA SET WORD COUNT IN LINKAGE
SBD HN
MJN CCI2 IF NOT FULL SECTOR
LJM IDS2 DROP PP
CSB SPACE 4,15
** CSB - CLEAR SLA BIT.
*
* ENTRY (T5) = CHECKPOINT DEVICE EST ORDINAL.
* (T6) = LABEL TRACK.
* (CN - CN+4) = *ACGL* WORD OF MST.
* (FN - FN+4) = *MMFL*.
*
* USES T1, T2, T7.
*
* CALLS CTI, RDS, STI, WDS.
*
* MACROS ENDMS, SETMS.
CSB3 ENDMS
CSB4 LDD T6 CLEAR TRACK INTERLOCK
RJM CTI
CSB SUBR ENTRY/EXIT
LDD CN+4
LPC MGLAP
ZJN CSBX IF NO SECTOR OF LOCAL AREAS
RJM STI SET LABEL TRACK INTERLOCK
NJN CSBX IF ERROR
LDN /MMF/LMLT SET LOCAL AREA SECTOR
STD T7
SETMS IO,RW
LDC BFMS
RJM RDS
MJN CSB4 IF ERROR
LDM BFMS
ZJN CSB3 IF UNFORMATTED SECTOR
LCN 2*5-1 INITIALIZE ENTRY OFFSET
STD T2
LCN 2-1 INITIALIZE WORD COUNT
STD T1
CSB1 LDN 2*5 ADVANCE ENTRY OFFSET
RAD T2
LDN 2 INCREMENT WORD COUNT
RAD T1
LDD T1
SBM BFMS+1
PJN CSB2 IF NO ENTRY FOR THIS MF
LDM BFMS+2,T2
LMD FN
NJN CSB1 IF ENTRY NOT FOR THIS MF
LDM BFMS+2+1,T2 CLEAR *VALID CHECKPOINT FILE* FLAG
LPC 3777
STM BFMS+2+1,T2
LDC BFMS+WLSF REWRITE SECTOR
RJM WDS
CSB2 LJM CSB3 CLEAR TRACK INTERLOCK
EJB SPACE 4,25
** EJB - ENTER JOB.
*
* ENTRY (BUFA - BUFA+4) = UJN, ZERO-FILLED.
* (BA) = FWA OF COMMAND SECTOR.
* (JS) = JOB SERVICE CLASS.
* (FN - FN+4) = SUBSYSTEM NAME, SPACE-FILLED.
* (EJBC) = FILE TYPE AND STATUS, IF FILE TYPE .NE.
* *INQF*.
* (EJBE) = SUBSYSTEM ID.
* (EJBF - EJBG) = PROCEDURE FILE NAME.
*
* EXIT (A) = 0 IF JOB ENTERED.
* (A) .LT. 0 FOR - QFT FULL / TRACK LIMIT / DISK ERROR.
* (QA) = QFT ORDINAL.
* = 0, IF NO QFT ENTRY WAS ASSIGNED.
* (FN - FN+4) = FIRST WORD OF QFT ENTRY.
*
* USES QA, CM - CM+4, FN - FN+4, T1 - T7.
*
* CALLS CTE, RFI, WDS, WEI, WSS, *0QM*.
*
* MACROS ENDMS, EXECUTE, MONITOR, SETMS, SFA.
*
* NOTE THAT THE CONTENTS OF *BUF* STARTING AT *BUFA* WILL BE
* OVERLAYED BY THE EOI BUFFER AND *0QM* ON EXIT.
EJB SUBR ENTRY/EXIT
LDC 501
STD T7
EJB1 LDN 0 CLEAR SYSTEM SECTOR BUFFER
STM BFMS,T7
SOD T7
NJN EJB1 IF NOT START OF BUFFER
STD QA INITIALIZE QFT ORDINAL
LDN PDTL ENTER CREATION DATE
CRM CDSS,ON
ADN RTCL-PDTL-1 SET ENTRY TIME
CRM IOSS+5*ENTQ+3,ON
* SET JOB ACCESS LEVEL LIMITS AND ACCESS LEVEL VALIDATION
* BITS TO ALL LEVELS VALID FOR THE SYSTEM. FOR THE
* DEADSTART SEQUENCING JOB, SET ALL LEVELS AND VALIDATIONS,
* REGARDLESS OF SYSTEM LIMITS. A NULL CATEGORY SET WILL BE
* SET FOR ALL JOBS.
LDN ZERL SET UP *VSAM* FUNCTION
CRD CM
ERRNZ SYOT CODE DEPENDS ON VALUE
CRM IOSS+5*ENTQ+5,ON
LDN 7 REQUEST ALL VALID ACCESS LEVELS
STD CM+3
LDN VJCS VALIDATE JOB CREATION PARAMETERS
STD CM+1
LDD MA SET ALL LEVELS AND VALIDATIONS
CWM EJBL,ON
SBN 1
CRM VASS+5*ASVW,ON
MONITOR VSAM REQUEST VALID LEVELS AND CATEGORIES
LDM EJBE
LMC DSSI
ZJN EJB1.0 IF DEADSTART SEQUENCING JOB
LDD MA SET ONLY VALID LEVELS
CRM VASS+5*ASVW,ON
LDN 0 CLEAR VALIDATION BITS
STM VASS+5*ASVW
* SET JOB ACCESS LEVEL LIMITS INTO QFT.
EJB1.0 LDD CM+4 LOWER ACCESS LEVEL LIMIT
SHN 3
LMD CM+2 INITIAL JOB ACCESS LEVEL
SHN 3
LMD CM+3 UPPER ACCESS LEVEL LIMIT
STM IOSS+5*INSQ+3
* ASSIGN MASS STORAGE FOR FILE.
LDN ZERL
CRD CM
LDM IOSS+5*INSQ+3 GET LOWER ACCESS LEVEL LIMIT
SHN -6
ADN 40 SET ACCESS LEVEL SELECTION BIT
SHN 6
STD CM+3
EJBF LDN TNDS SELECT TEMPORARY - NONSHARED DEVICE
* LDN TSDS (SELECT SYSTEM DEVICE)
STD CM+2
MONITOR RTCM REQUEST TRACK CHAIN
LDD CM+4
STM IOSS+5*ENTQ+1
NJN EJB1.1 IF TRACK ASSIGNED
LDD CP ISSUE B-DISPLAY MESSAGE
ADK MS2W
CWM EJBN,TR
LJM EJB2.1 SET QUEUED STATUS
EJB1.1 STD T6
LDD CM+1 SAVE EQUIPMENT
STD T5
STM IOSS+5*ENTQ
LDC 7777 SET UI=377777
* LDC 0 (SET BY *ICJ*)
EJBA EQU *-1
STD FN+3
LDC 100+37 SET FAMILY ORDINAL=1
* LDC 0 (SET BY *ICJ*)
EJBB EQU *-1
STD FN+2
LDC INQF*100+7 SET FILE TYPE AND STATUS
EJBC EQU *-1
STD FN+4
LDD MA
CWD FN
CRD CM+3
LDD JS
LMN SYSC
ZJN EJB2 IF SYSTEM JOB
LMN SYSC&DSSC
ZJN EJB2 IF DEADSTART SEQUENCING JOB
LMN DSSC&SSSC
ZJN EJB2 IF SUBSYSTEM
LDC -4000
EJB2 ADC 4000 SET SYSTEM JOB FLAG
EJBD ADC PQFT REQUEST QFT ENTRY
* ADC 10000B+PQFT (DISABLE JSN ACQUISITION)
RJM CTE
NJN EJB3 IF ENTRY CREATED
EJB2.0 LDD T6 SET TRACK
STD CM+2
LDD T5 SET EQUIPMENT
STD CM+1
MONITOR DTKM DROP ALL TRACKS
EJB2.1 LCN 0 SET JOB NOT QUEUED STATUS
LJM EJBX RETURN
EJB3 CRD FN FIRST WORD OF QFT ENTRY
CRM IOSS,ON
LDM IOSS+JSNQ*5+4 CLEAN UP STATUS FIELD
SCN 17
STM IOSS+JSNQ*5+4
LDD CM+1 SAVE QFT ORDINAL
STD QA
STM GQSS
LDD FN SET JSN
STM OJSS
LDD FN+1
STM OJSS+1
LDD JS SET SERVICE CLASS/JOB ORIGIN TYPE
SHN 6
LMK SYOT
STM IOSS+SCLQ*5
LCN 0 INDICATE NO JOB COMMAND FL
STM JCSS
STM JESS
* SET SYSTEM SECTOR FIELDS FOR *SYSTEMX* JOB.
LDD MA SET UN, UI, AND UNLIMITED VALIDATIONS
CWM EJBJ,ON
CWM EJBM,ON
SBN 2
CRM VASS+ACCN*5,ON
CRM VASS+AHMT*5,ON
SBN 1
CRM VASS+AHDS*5,ON
SBN 1
CRM VASS+AAWC*5,ON
LDN IPRL SET DEFAULT KEYPUNCH MODE
CRD CM
LDD CM+2
SHN -13
STM JFSS
LDC DFTL SET DEFAULT TIME LIMIT
STM JTSS+1
SHN -14
STM JTSS
LDC 0 SET SUBSYSTEM ID
EJBE EQU *-1 (SUBSYSTEM ID)
STM SISS
LDN 3 SET FLAGS
STM FGSS
LDC MMFL SET MACHINE ID
CRD CM
LDD CM
STM RMSS
STM CMSS
LDM EJBA CHECK IF UI WAS SPECIFIED
ZJN EJB5 IF NO UI SPECIFIED
* SET INFORMATION IN SYSTEM SECTOR TO MATCH QFT
* FAMILY ORDINAL AND UI INFORMATION.
LDD MA SET CREATION USER NAME
CWM EJBJ,ON
SBN 1
CRM OASS,ON
SBN 1
CRM ACSS,ON
LDK FOTP SET CREATION FAMILY
CRD CM
LDD CM
SHN 14
LMD CM+1
ADN 1
CRD CM
LDD CM+3
SCN 77
STD CM+3
LDN 0
STD CM+4
LDD MA MOVE FAMILY NAME TO SYSTEM SECTOR
CWD CM
CRM FOSS,ON
SBN 1
CRM FMSS,ON
EJB5 LDN 0 SET CREATION JSN
SFA QFT
CRM CJSS,ON
LDD MA
CWM BUFA,ON
CWM EJBH,ON SET FNT
LDD MA
CRM JNSS,ON
CRM FNSS,ON
LDC 2RIN SET DISPOSITION CODE
STM DCSS
LDD BA
ZJN EJB9 IF NO COMMAND SECTOR
AOM FLSS+1
LDC JNSS REMOVE *.* FROM UJN
STD T1
ADN 3
STD T2
EJB6 LDI T1
LPN 77
LMN 1R.
ZJN EJB7 IF *.* FOUND
LDM 1,T1
SHN -6
LMN 1R.
ZJN EJB8 IF *.* FOUND
AOD T1
LMD T2
NJN EJB6 IF NOT END OF UJN
EJB7 LDI T1
SCN 77 REMOVE *.*
STI T1
LDN 0
EJB8 STM 1,T1
EJB9 AOM FLSS+1 SET FILE LENGTH
LDC FLSS GET ADDRESS OF SYSTEM SECTOR FILE LENGTH
RJM RFI SET FILE SIZE INDEX IN QFT ENTRY
* WRITE FILE.
SETMS IO
RJM WSS WRITE SYSTEM SECTOR
EJB9.1 MJP EJB2.0 IF DISK ERROR
LDD BA
ZJN EJB10 IF NO COMMANDS
LMC WCSF
RJM WDS WRITE COMMAND SECTOR
EJB9.2 MJN EJB9.1 IF DISK ERROR
AOD T7 ADVANCE SECTOR
EJB10 LDN QFTE*5-5-1 SAVE QFT ENTRY
STD T2
EJB10.1 LDM IOSS+5,T2
STM EJBK,T2
SOD T2
PJN EJB10.1 IF MORE TO MOVE
LDD MA SET FNT/FST INFORMATION IN EOI SECTOR
CWM FNSS,TR
SBN 3
CRM BUFA+FNEI,TR
LDC 501-DTEI-5 CLEAR END OF EOI BUFFER
STD T2
EJB11 LDN 0
STM BUFA+DTEI+5,T2
SOD T2
PJN EJB11 IF MORE TO CLEAR
LDC BUFA SET EOI BUFFER ADDRESS
RJM WEI WRITE EOI
MJN EJB9.2 IF DISK ERROR
ENDMS
LDD T5 SET EQUIPMENT
STD CM+1
LDD T7 SET LAST SECTOR
STD CM+3
LDD T6 SET TRACK
LPC 3777
STD CM+2
MONITOR DTKM DROP TRACKS
* QUEUE FILE.
LDC 2RAB SET *ABLQ* ACCOUNT FILE MESSAGE
STM OVL0-2
LDC 2RLQ
STM OVL0-1
EXECUTE 0QM,OVL0 ISSUE MESSAGE TO ACCOUNT FILE
LCN 7 CLEAR ENTRY INTERLOCK
RAD FN+4
LDN QFTE-1
STD T2
SFA QFT,QA SET QFT ADDRESS
ADN 1 WRITE QFT DATA
CWM EJBK,T2
SBN QFTE-JSNQ WRITE INTERLOCK WORD
CWD FN
AOM IDSB ADVANCE JOB ENTRY COUNT
LDK INQF*100+7 SET DEFAULT FILE TYPE AND STATUS
STM EJBC
* REINITIALIZE *EJB*.
LDN 0 CLEAR PARAMETERS
STM EJBE
LJM EJBX RETURN
EJBH VFD 42/0LINPUT,6/0,6/INFT,6/0
EJBK BSS QFTE*5-5 BUFFER FOR QFT ENTRY
EJBJ VFD 42/0,18/SYUI
EJBL VFD 12/7777,12/377,36/0
EJBM VFD 60/-0
EJBN DATA C* NO INPUT FILE SPACE AVAILABLE.*
GAC SPACE 4,10
** GAC - GENERATE ASSIGN COMMAND.
*
* ENTRY (A) = ADDRESS OF STRING *XXX,LOAD)*.
* (IR+3) = EST ORDINAL.
*
* USES T3.
*
* CALLS ACS, C2D, CCI.
GAC SUBR ENTRY/EXIT
STD T3 SAVE ADDRESS OF FILE NAME
LDC =C*ASSIGN(*
RJM ACS
LDD IR+3 CONVERT UPPER TWO DIGITS OF EST ORDINAL
SHN -3
RJM C2D
STI T3
LDD IR+3 CONVERT LOWER DIGIT OF EST ORDINAL
LPN 7
SHN 6
ADC 2R0,
STM 1,T3
LDD T3 COMPLETE COMMAND IMAGE
RJM CCI
UJN GACX RETURN
GJC SPACE 4,10
** GJC - GENERATE JOB COMMAND.
*
* ENTRY (A) = ADDRESS OF LEFT JUSTIFIED NAME.
*
* EXIT (BUFA - BUFA+4) = JOB COMMAND.
*
* USES T1, T3.
*
* CALLS ACS, CCI.
GJC SUBR ENTRY/EXIT
STD T3 SAVE JOB COMMAND ADDRESS
LDD CA
ADC 477
STD T1
GJC1 LDN 0 CLEAR COMMAND BUFFER
STI T1
SOD T1
LMD CA
NJN GJC1 IF NOT END OF BUFFER
STI T1
LDD T3 COPY JOB COMMAND TO BUFFER
RJM ACS
LDC =C*.* COMPLETE JOB COMMAND
RJM CCI
UJN GJCX RETURN
ISJ SPACE 4,10
** ISJ - INITIATE SUBSYSTEM JOB.
*
* ENTRY (A) = SUBSYSTEM ID.
* (TN) = ADDRESS OF SUBSYSTEM TABLE ENTRY.
*
* EXIT (A) = 0, IF SUBSYSTEM INITIATED.
*
* USES BA, JS, FN - FN+4.
*
* CALLS AST, EJB.
ISJ SUBR ENTRY/EXIT
STM EJBE SET SUBSYSTEM ID
LMC DSSI
ZJN ISJ0 IF DEADSTART SEQUENCING JOB
LMC FEAF*10000&DSSI FETCH *SSAT* ENTRY
RJM AST
NJN ISJX IF SUBSYSTEM ACTIVE
ISJ0 STD BA
LDN ZERL ZERO FILL BUFFER
CRM BUFA,ON
LDI TN SET JSN AND UJN = SUBSYSTEM NAME
STD FN
STM BUFA
LDM 1,TN
SCN 77
STM BUFA+1
LMN 1R SPACE-FILL JSN
STD FN+1
LDC ADCI+1 DISABLE JSN ACQUISITION
STM EJBD
ISJA LDN SSSC SET SERVICE CLASS
* LDN DSSC (DEADSTART SEQUENCING JOB)
STD JS
LDM 4,TN SET FILE TYPE AND STATUS
ZJN ISJ1 IF NOT SPECIFIED
STM EJBC
ISJ1 LDM 1,TN
SHN 21-5
MJP ISJ2 IF PP-INITIATED SUBSYSTEM
* FOR NON-PP-INITIATED SUBSYSTEMS, GENERATE A JOB INPUT FILE
* WITH THE FOLLOWING FORMAT -
* SUBPROC.
* GET,SUBPROC/NA.
* SUBPROC.
LDC BUF INDICATE COMMAND RECORD PRESENT
STD BA
LDN ZERL BUILD SUBSYSTEM PROCEDURE FILE NAME
CRD AB
LDI TN SUBSYSTEM NAME
STD AB
LDM 1,TN
SCN 77
SHN 6
LMC ** (FIRST BYTE OF PROCEDURE NAME SUFFIX)
ISJB EQU *-1
SHN -6+22
STD AB+1
LPC 770000
LMC ** (SECOND BYTE OF PROCEDURE NAME SUFFIX)
ISJC EQU *-1
SHN -6+22
STD AB+2
SHN -6
SCN 77
STD AB+3
LDN AB GENERATE JOB COMMAND
RJM GJC
LDC =C*GET,* GENERATE *GET,SUBPROC/NA.*
RJM ACS
LDN AB
RJM ACS
LDC =C*/NA.*
RJM CCI
LDN AB GENERATE NAME CALL TO PROCEDURE
RJM ACS
LDC =C*.*
RJM CCI
LDN 0 CLEAR SUFFIX FOR NEXT CALL
STM ISJB
STM ISJC
ISJ2 RJM EJB ENTER JOB
LJM ISJX RETURN
SJF SPACE 4,10
** SJF - SET JOB FIELD LENGTH.
*
* ENTRY (AB - AB+4) = ENTRY POINT NAME.
*
* EXIT (JF) = FIELD LENGTH.
*
* USES JF, CM - CM+4.
*
* CALLS CLD.
SJF1 LDC DFFL/100 SET DEFAULT FIELD LENGTH
SJF2 STD JF
SJF SUBR ENTRY/EXIT
RJM CLD SEARCH FOR PROGRAM
CRD CM
LDD CM CHECK FOR MFL=/RFL= ENTRY POINT
ZJN SJF1 IF NO FILE LENGTH SPECIFIED
STD JF
SHN 6
PJN SJFX IF NOT MFL= ENTRY POINT
SHN 2
SHN -8D
UJN SJF2 SET FIELD LENGTH
SSC SPACE 4,10
** SSC - SET SERVICE CLASS.
*
* ENTRY (AB - AB+1) = COMMAND.
*
* EXIT (JS) = *MASC* IF MAINTENANCE JOB.
* = *SYSC* IF NOT MAINTENANCE JOB.
*
* USES JC, TN.
SSC2 LMD AB FIND COMMAND
NJN SSC3 IF NO MATCH
LDM 1,JC
LMD AB+1
ZJN SSC5 IF MAINTENANCE JOB
SSC3 LDN 2 ADVANCE TABLE ADDRESS
RAD JC
SSC4 LDI JC
NJN SSC2 IF NOT END OF TABLE
AOD TN ADVANCE LIST ADDRESS
LMN ITJAL
NJN SSC1 IF NOT END OF TABLES
LDN SYSC&MASC
SSC5 LMN MASC SET SERVICE CLASS
STD JS
SSC SUBR ENTRY/EXIT
LDN 0
STD TN
SSC1 LDM ITJA,TN SET TABLE ADDRESS
STD JC
UJN SSC4 ENTER LOOP
TITLE REQUEST PROCESSORS.
ICJ SPACE 4,10
*** FUNCTION ICJF - INITIATE COMMAND JOB.
*
* ENTRY (IR+4) = 6/KEYBOARD BUFFER OFFSET, 6/.
* (IJCA) = FIELD LENGTH SPECIFIED BY CALLER (*IJCF*
* FUNCTION ONLY. ZERO, OTHERWISE.)
ICJ ENTRY ENTRY/EXIT
LDC BFMS GET COMMAND
RJM RPK
LDC /1DS/DSDL+/1DS/KBCML GET SPECIAL PARAMETER
CRD AB
LDN 0
STM BFMS+/1DS/KBCML/2*5
RJM SJF SET JOB FIELD LENGTH
LDM IJCA
ZJN ICJ1 IF NO FIELD LENGTH SPECIFIED
STD JF
ICJ1 LDD JF CONVERT INITIAL RFL
SHN -6
RJM C2D
STM ICJH+2
LDD JF
RJM C2D
STM ICJH+3
LDN AB GENERATE JOB COMMAND
RJM GJC
LDC ICJF
RJM CCI CREATE COMMAND IMAGE
LDC TSJN
STD T3
UJN ICJ3 CHECK SPECIAL JOB NAME
ICJ2 LDI T3 ADVANCE TO NEXT ENTRY
ADN 1
RAD T3
STM ICJA
ICJ3 LDI T3 SET ENTRY LENGTH
ZJN ICJ5 IF END OF TABLE
STD T2
ICJ4 LDM TSJN,T2 COMPARE JOB NAMES
ICJA EQU *-1
LMM AB-1,T2
NJN ICJ2 IF NO COMPARE
SOD T2
NJN ICJ4 IF NOT END OF NAME
STM EJBA
STM EJBB
LCN ICJGL
ICJ5 ADN ICJGL+1 ADJUST POINTER FOR NEXT COMMAND
RAD LA
ICJ6 LDD LA CREATE COMMAND IMAGE
RJM CCI
AOD LA ADVANCE COMMAND POINTER
LDI LA
NJN ICJ6 IF NOT END OF COMMAND STREAM
LDC BFMS COPY COMMAND (OR JOB COMMAND)
* LDC BUFA (INITIATE JOB CALL)
ICJB EQU *-1
RJM CCI
RJM SSC SET SERVICE CLASS
LDC UJSI SET *SISS* FIELD
* LDC IRSI (SET INHIBIT ROLLOUT ID)
ICJC EQU *-1
STM EJBE
LDC INQF*100+7 GENERATE OUTPUT
* LDC NOQF*100+7 (DO NOT GENERATE OUTPUT)
ICJD EQU *-1
STM EJBC
RJM EJB ENTER JOB
LJM ICJX RETURN
ICJF DATA Z*MODE(0)*
* DATA Z*MODE(1)* (CYBER 176)
ICJG DATA Z*SUI(0)*
ICJGL EQU *-ICJG
DATA Z*RETURN(INPUT)*
DATA Z*NORERUN.*
ICJH DATA Z*RFL(XXXX00)*
CON 0 END OF COMMANDS
TSJN SPACE 4,10
** TSJN - TABLE OF SPECIAL JOB NAMES.
*
* JOBS LISTED IN THIS TABLE WILL HAVE A *SUI(0)*
* COMMAND INCLUDED IN THEIR JOB STREAM.
*
* 12/ L, 12*L/ NAME
* L = LENGTH OF JOB NAME IN PP WORDS.
* NAME = JOB NAME TO COMPARE.
TSJN BSS 0
VFD 12/2,24/0LDDF
VFD 12/2,24/0LDIS
VFD 12/2,24/0LO26
VFD 12/0 END OF TABLE
ISC SPACE 4,10
*** FUNCTION ISCF - INITIATE SYSTEM COMMAND JOB.
*
* ENTRY (IR+4) = 6/ KEYBOARD BUFFER OFFSET, 6/.
*
* NOTE FLAGS SET IN ROUTINE *ICJ* TO SET
* *SISS* FIELD IN THE SYSTEM SECTOR AND
* TO NOT DISPOSE OUTPUT AT END OF JOB TIME.
ISC ENTRY ENTRY/EXIT
LDN IRSI SET INHIBIT ROLLOUT IN *SISS*
STM ICJC
LDC NOQF*100+7 SET NO OUTPUT
STM ICJD
RJM ICJ INITIATE COMMAND JOB
UJN ISCX RETURN
ITJ SPACE 4,10
*** FUNCTION ITJF.
*
* INITIATE JOBS FROM TABLE.
* INITIATE ALL ENABLED SUB-SYSTEMS.
* CALCULATE NEXT TABLE NUMBER FROM CPU TYPE.
ITJ8 LDD FG CALCULATE NEXT TABLE NUMBER
SHN 0-4
LPN 1 ZERO IF INSTRUCTION STACK PRESENT
STD T1
LDD FG
SHN 1-6
LPN 2 ZERO IF CYBER 170 MAINFRAME
RAD T1
LDN 4
SBD T1
UJN ITJ11 CONTINUE PROCESSING
* CHECK FOR 6700 OR CYBER 74-2X MAINFRAME TYPE.
ITJ9 LDD FG CHECK DUAL CPU BIT
LPN 2
NJN ITJ13 IF NOT DUAL CPU
LDN 1 SET TABLE 1
UJN ITJ1 PROCESS TABLE 1 JOBS
* CHECK FOR CMU.
ITJ10 LDD FG CHECK CMU BIT
SHN 21-3
MJN ITJ13 IF NO CMU
LDN 5 SET TABLE 5
ITJ11 UJN ITJ1 PROCESS TABLE
* CHECK IF ALL TABLES PROCESSED.
ITJ12 LDD TN CHECK CURRENT TABLE NUMBER
ZJN ITJ8 IF TABLE 0
LMN 2
ZJN ITJ9 IF TABLE 2
LMN 5&2
NJN ITJ10 IF NOT TABLE 5
ITJ13 RJM IAS INITIATE ALL ENABLED SUBSYSTEMS
ITJ ENTRY ENTRY/EXIT
LDD FG
SHN -6
LPN 71
ZJN ITJ0 IF CYBER 170-865/875
LMN 70
ZJN ITJ0.1 IF CYBER 176
SHN -5
ZJN ITJ1 IF NOT CYBER 170-815/825/835/855
LDN 0 SPIN UP ISMD DEVICES
RJM SUD
LDN 7&10 SET TABLE FOR CYBER 170-815/825/835/855
ITJ0 LMN 10&6 SET TABLE FOR CYBER 170-865/875
ITJ0.1 LMN 6 SET TABLE FOR CYBER 176
ITJ1 STD TN SET TABLE NUMBER
LDM ITJA,TN SET JOB TABLE ADDRESS
STD JC
LDN 0 CLEAR SECOND PASS FLAG
STM ITJD
ITJ2 LDN ZERL
CRD AB
LDI JC SET JOB NAME
NJN ITJ2.2 IF NOT END OF TABLE
LDC *
ITJC EQU *-1
ITJ2.1 NJP ITJ12 IF NOT A DUAL CPU MACHINE
LDC **
ITJD EQU *-1
NJN ITJ2.1 IF END OF SECOND PASS
AOM ITJD FLAG SECOND PASS
LDM ITJA,TN RESET TABLE POINTER
STD JC
LDI JC
ITJ2.2 STD AB
LDM 1,JC
STD AB+1
RJM SJF SET JOB FIELD LENGTH
LDN AB GENERATE JOB COMMAND
RJM GJC
LDC ICJF
RJM CCI CREATE COMMAND IMAGE
* ISSUE USECPU COMMAND IF ON 6700 OR CYBER 74-2X.
LDD FG CHECK DUAL AND STACK CPU BITS
LPC 4122
LMC 4100 PREVENT SELECTION FOR CYBER 170 AND 8X5
NJN ITJ2.4 IF NOT DUAL AND STACK CPU ON 6000 OR C70
LDD TN CHECK TABLE NUMBER
ZJN ITJ5 IF TABLE 0
LMN 1
ZJN ITJ3 IF TABLE 1
ITJ2.3 LDC =C*USECPU(1)* CPU0
UJN ITJ4 CREATE COMMAND IMAGE
ITJ2.4 LDD FG
LPN 2
STM ITJC
NJN ITJ5 IF NOT A DUAL CPU MACHINE
LDM ITJD
NJN ITJ3 IF PASS 2
UJN ITJ2.3 CREATE COMMAND IMAGE
ITJ3 LDC =C*USECPU(2)* CPU1
ITJ4 RJM CCI CREATE COMMAND IMAGE
ITJ5 LDD TN
LMN 6
NJN ITJ6 IF NOT CYBER 176 STACK
LDC TSBJA
LMD JC
NJN ITJ6 IF NOT JOB *LCM*
LDC =C*RFL,EC=10.*
RJM CCI CREATE COMMAND IMAGE
ITJ6 LDD CA
RJM CCI CREATE COMMAND IMAGE
LDC =C*EXIT.*
RJM CCI CREATE COMMAND IMAGE
LDC =C*DMP.*
RJM CCI CREATE COMMAND IMAGE
LDD JF CONVERT FIELD LENGTH
SHN -6
RJM C2D
STM ITJB+2
LDD JF
RJM C2D
STM ITJB+3
LDC ITJB
RJM CCI CREATE COMMAND IMAGE
LDC =C*IFE(EF.EQ.ODE,NOLIST)*
RJM CCI CREATE COMMAND IMAGE
LDC =C*RETURN(OUTPUT)*
RJM CCI CREATE COMMAND IMAGE
LDC =C*ENDIF(NOLIST)*
RJM CCI CREATE COMMAND IMAGE
LDN MASC SET SERVICE CLASS
STD JS
RJM EJB ENTER JOB
PJN ITJ7 IF JOB QUEUED
LJM ITJ13 ENABLE JOB SCHEDULING
ITJ7 LDN 2 ADVANCE JOB COUNTER
RAD JC
LJM ITJ2 LOOP
ITJA BSS 0
LOC 0
CON TCMJ COMMON MAINTENANCE JOBS
CON TNSJ CYBER 70 NO STACK MAINTENANCE JOBS
CON TSSJ CYBER 70 WITH STACK MAINTENANCE JOBS
CON TNOJ CYBER 170 NO STACK MAINTENANCE JOBS
CON TSOJ CYBER 170 WITH STACK MAINTENANCE JOBS
CON TMUJ MAINFRAMES WITH CMU MAINTENANCE JOBS
CON TSBJ CYBER 176 MAINTENANCE JOBS
CON TSAJ CYBER 170-815/825/835/855 MAINTENANCE JOBS
CON TSCJ CYBER 170-865/875 MAINTENANCE JOBS
ITJAL BSS 0 LENGTH OF LIST
LOC *O
ITJB DATA C*DMP(XXXX00)*
TCMJ SPACE 4,10
** JOB TABLE 0.
* COMMON MAINTENANCE JOBS.
* JOBS RUN ON ALL MAINFRAME TYPES.
TCMJ BSS 0
VFD 24/0LALX
VFD 24/0LCU1
VFD 24/0LFST
DATA 0
TNSJ SPACE 4,10
** JOB TABLE 1.
*
* NO STACK CYBER 70 MAINTENANCE JOBS.
* JOBS RUN ON MAINFRAME TYPES 6400, 6500, CYBER 72, CYBER
* 73, CPU1 OF 6700 AND CPU1 OF CYBER 74-2X.
*
* NOTE JOB TABLE 1 STARTS IN THE
* MIDDLE OF JOB TABLE 2.
TSSJ SPACE 4,10
** JOB TABLE 2.
*
* WITH STACK CYBER 70 MAINTENANCE JOBS.
* JOBS RUN ON MAINFRAME TYPES 6600, CYBER 74-1X, CPU0 OF
* 6700 AND CPU0 OF CYBER 74-2X.
TSSJ BSS 0
VFD 24/0LFM2
VFD 24/0LIWS
TNSJ BSS 0 START OF JOB TABLE 1
VFD 24/0LCT3
VFD 24/0LMRG
VFD 24/0LMY1
VFD 24/0LRAN
DATA 0
TNOJ SPACE 4,10
** JOB TABLE 3.
*
* NO STACK CYBER 170 MAINTENANCE JOBS.
* JOBS RUN ON MAINFRAME TYPES CYBER 172, 173 AND 174.
TNOJ BSS 0
VFD 24/0LCSU
VFD 24/0LCT3
VFD 24/0LMRG
VFD 24/0LRAN
DATA 0
TSOJ SPACE 4,10
** JOB TABLE 4.
*
* WITH STACK CYBER 170 MAINTENANCE JOBS.
* JOBS RUN ON MAINFRAME TYPE CYBER 175.
TSOJ BSS 0
VFD 24/0LCSU
VFD 24/0LCT7
VFD 24/0LRAN
DATA 0
TMUJ SPACE 4,10
** JOB TABLE 5.
*
* JOBS RUN ON MAINFRAMES WITH CMU.
TMUJ BSS 0
VFD 24/0LCMU
DATA 0
TSBJ SPACE 4,10
** JOB TABLE 6.
*
* CYBER 176 MAINTENANCE JOBS.
TSBJ BSS 0
VFD 24/0LRAN
VFD 24/0LFST
VFD 24/0LCTB
TSBJA VFD 24/0LLCM
VFD 24/0LMEM
DATA 0
TSAJ SPACE 4,10
** JOB TABLE 7.
*
*
* CYBER 170 - 815/825/835/855 MAINTENANCE JOBS.
TSAJ VFD 24/0LALX
VFD 24/0LCSU
VFD 24/0LCT8
VFD 24/0LCU8
VFD 24/0LFS8
VFD 24/0LMRG
VFD 24/0LRA8
DATA 0
TSCJ SPACE 4,10
** JOB TABLE 8.
*
* CYBER 170 - 865/875 MAINTENANCE JOBS.
TSCJ VFD 24/0LALX
VFD 24/0LCSU
VFD 24/0LCT6
VFD 24/0LCU8
VFD 24/0LFS8
VFD 24/0LRA8
DATA 0
IJC SPACE 4,10
*** FUNCTION IJCF - INITIATE JOB CALL.
*
* ENTRY (IR+3) = FIELD LENGTH, IF SPECIFIED BY CALLER.
* = 0, OTHERWISE.
* (IR+4) = 6/ KEYBOARD BUFFER OFFSET, 6/.
IJC ENTRY ENTRY/EXIT
LDC BUFA SET JOB COMMAND ADDRESS
STM ICJB
LDD IR+3 SAVE FIELD LENGTH
STM IJCA
RJM ICJ
UJN IJCX RETURN
IJCA CON 0 FIELD LENGTH SPECIFIED BY CALLER
ILJ SPACE 4,10
*** FUNCTION ILJF - INITIATE *LBC* JOB.
*
* CALLED BY *6DI* AND *1DS* FUNCTIONS *UPCF* AND *OCMF* TO
* INITIATE SYSTEM JOB TO RELOAD CONTROLWARE.
*
* ENTRY (IR+4) = 1/,2/F,9/EQ.
* F 0 IF NO RECALL OF CALLER REQUIRED.
* 1 IF *UPCF* *1DS* FUNCTION TO BE
* RECALLED.
* 2 IF *OCMF* *1DS* FUNCTION TO BE
* RECALLED.
* EQ INDICATES CONTROL MODULE RELOAD IF VALUE
* IS EITHER 1 OR A CONTROL MODULE EST
* ORDINAL.
ILJ ENTRY ENTRY/EXIT
LDC =Z*LBC*
RJM GJC GENERATE JOB COMMAND
LDD IR+4
SHN 0-11
LPN 3
STD MS
SHN 14
NJN ILJ2 IF NOT *6DI* CALL
LDD IR+4
LPC 777
STD CM
SBN 1
MJN ILJ1 IF NOT CONTROL MODULE
ZJN ILJ2 IF CONTROL MODULE
SFA EST,CM
ADK EQDE
CRD CM
LDD CM+3
LMC 2RCM
ZJN ILJ2 IF CONTROL MODULE
ILJ1 LDC ILJA&ILJB
ILJ2 LMC ILJB
STD LA
ILJ3 LDD LA COMPLETE COMMAND IMAGE
RJM CCI
AOD LA ADVANCE COMMAND POINTER
LDI LA
NJN ILJ3 IF NOT END OF COMMAND STREAM
LDN SYSC SET SYSTEM SERVICE CLASS
STD JS
LCN TNDS-TSDS SELECT SYSTEM DEVICE FOR JOB FILE
RAM EJBF
RJM EJB ENTER JOB
LDD MS
ZJN ILJ4 IF NO *1DS* CALL REQUIRED
LDM IDSC SET FUNCTION CODE
SCN 77 PRESERVE BUFFER LOCK/LOGGING CONTROL BITS
LMM ILJC-1,MS
STD IR+2
LDN 0 DISABLE LOGGING/INTERLOCK CLEARING
STM IDSC
LDD IR+4
LPC -3000
STD IR+4
LDD IA REWRITE PP INPUT REGISTER
CWD IR
AOM IDSE SET *NO DROP* FLAG
EXECUTE 1DS,=
ILJ4 LJM ILJX RECALL *1DS* FUNCTION
ILJA DATA Z*LOADBC,D=DUMP.*
* THE FOLLOWING COMMANDS SHOULD BE ACTIVATED IF THE NEED EVER
* ARISES AGAIN TO DUMP THE MEMORY OF A FAILING CONTROLLER.
* THE DUMP CAPABILITY WAS ADDED TO DETERMINE WHY 7155
* CONTROLLERS WERE FAILING. SINCE THE CAUSE OF THIS PROBLEM
* IS NOW UNDERSTOOD, THERE IS NO LONGER A NEED TO DUMP
* CONTROLLERS DURING THE RELOAD PROCESS.
* DATA Z*DSDI,DMB,Z.+BCDUMP/V.*
* DATA Z*ATTACH,LBCDUMP/M=W,NA.*
* DATA Z*IF,.NOT.FILE(LBCDUMP,PM).DEFINE,LBCDUMP.*
* DATA Z*SKIPEI,LBCDUMP.*
* DATA Z*REWIND,DUMP.*
* DATA Z*COPY,DUMP,LBCDUMP.*
CON 0 END OF STATEMENTS
ILJB DATA Z*LOADBC.*
CON 0 END OF STATEMENTS
ILJC CON /1DS/UPCF
CON /1DS/OCMF
DSP SPACE 4,10
*** FUNCTION DSPF - INITIATE *L* DISPLAY JOB.
*
* ENTRY (IR+4) = 6/ KEYBOARD BUFFER OFFSET, 6/.
DSP ENTRY ENTRY/EXIT
LDC LDSP GET *L* DISPLAY CONTROL WORD
CRD CM+1
LDN 0
STD CM+2
LDN 2 SET WORD COUNT OF OPTIONS TO PROCESS
STD CM+1
LDD MA
CWM DSPA,CM+1
MONITOR UTEM INTERLOCK JSN FIELD IF .EQ. 0
LDD CM+1
NJP DSP2 IF VERIFICATION FALIED, RETURN ERROR
LDC NOQF*100+7 DO NOT GENERATE OUTPUT
STM ICJD
RJM ICJ INITIATE COMMAND JOB
SHN -21 SAVE REPLY
STD T1
ZJN DSP1 IF *L* DISPLAY JOB SUBMITTED
LDN 0 CLEAR JSN
STD FN
STD FN+1
DSP1 LDC LDSP *L* DISPLAY POINTER
CRD CM+1
LDN 0
STD CM+2
LDN 2
STD CM+1 STORE WORD COUNT OF OPTIONS
LDD FN SET JSN
STM DSPB+1*5+3
LDD FN+1
STM DSPB+1*5+4 STORE *JSN*
LDD MA
CWM DSPB,CM+1
MONITOR UTEM STORE *JSN* IN FWA *L* BUFFER ZERO FILLED
LDD T1 SET DSD RESPONSE
DSP2 RJM SRD
LJM DSPX EXIT
* *UTEM* MONITOR FUNCTION BUFFER.
DSPA VFD 1/1,5/0,6/24D,6/36D,42/0 VERIFY *JSN* .EQ. 0
VFD 1/0,5/0,6/24D,6/36D,42/-1 INTERLOCK JSN FIELD
DSPB VFD 1/0,5/0,6/36D,6/0,6/0 CLEAR CONTROL WORD STATUS BITS
CON 0,0,0
VFD 1/0,5/0,6/24D,6/36D,6/0 STORE *JSN*
CON 0,0,0
DSS SPACE 4,10
*** FUNCTION DSSF - INITIATE DEADSTART SEQUENCING JOB.
*
* ENTRY (IR+3 - IR+4) = 18/*CMS*, 6/0.
DSS ENTRY ENTRY/EXIT
LDN DSSC-SSSC CHANGE SERVICE CLASS
RAM ISJA
LDK DSSI CHANGE SUBSYSTEM ID
STM IAS.CMS+2
DSS1 RJM ISS INITIATE SUBSYSTEM
PJN DSSX IF JOB QUEUED SUCCESSFULLY
LDK ZERL
CRD CM
LDD QA SET QFT ORDINAL
ZJN DSS2 IF NO ENTRY WAS ASSIGNED
STD CM+1
LDN PQFT
STD CM+2
MONITOR MTRM RETURN QFT ENTRY
DSS2 SOM DSSA
NJN DSS1 IF RETRY COUNT NOT EXCEEDED
LDK NCPL GET SYSTEM CONTROL POINT
CRD CM
AOD CM+1 ISSUE MESSAGE TO SYSTEM CONTROL POINT
SHN 7
ADN MS2W
CWM DSSB,TR
LJM DSSX RETURN
DSSA CON 5 SUBSYSTEM INITIATION RETRY COUNT
DSSB DATA C*DEADSTART SEQUENCING FAILED.*
LOD SPACE 4,10
*** FUNCTION LODF - LOAD JOB.
*
* ENTRY (IR+3) = EST ORDINAL.
* (IR+4) = ID.
LOD ENTRY ENTRY/EXIT
LDC =C*LOAD*
RJM GJC GENERATE JOB COMMAND
LDD IR+3
ZJN LOD1 IF NO EST ORDINAL SPECIFIED
LDC =C*XXX,LOAD)*
RJM GAC
LOD1 LDD IR+4
ZJN LOD2 IF NO ID
RJM C2D ENTER ID
SHN 6
LMN 1R.
STM LODA+3
SHN -14
SBN 1R.
RAM LODA+2
LOD2 LDC LODA
RJM CCI
LDN SYSC SET SERVICE CLASS
STD JS
RJM EJB ENTER JOB
LJM LODX RETURN
LODA VFD 60/6LLDI,,.
IRM SPACE 4,10
** IRM - INITIATE REMOTE MAINTENANCE FACILITY.
*
* EXIT RDF INITIATED.
*
* USES TN, T6, AB - AB+4, CM - CM+4, CN - CN+4.
*
* CALLS AST, ISJ.
*
* MACROS DELAY, MONITOR, PAUSE.
IRM3 LDD MA MAKE *IAF*REQUEST*
CWM IRMB,ON
IRM4 LDK ZERL
CRD CM
MONITOR TSEM
LDD CM+1
ZJN IRMX IF *IAF* INACCESSIBLE OR ERROR
LMC 7777
NJN IRMX IF REQUEST COMPLETE
PAUSE ST
LDC 3600 *TSEM* QUEUE FULL - DELAY AND RETRY
STD T6
IRM5 DELAY
SOD T6
ZJN IRM4 IF TIME TO REISSUE REQUEST
UJN IRM5 CONTINUE TO DELAY
IRM SUBR ENTRY/EXIT
LDD TN SAVE CURRENT ID
STM IRMC
LDM IRMD
NJN IRMX IF AUTO SELECTED *IAF*
LDC IAS.IAF GET ADDRESS OF *IAF* SUBSYSTEM ENTRY
STD TN
LDM 2,TN CHECK SUBSYSTEM ACTIVE
LMC FEAF*10000 FETCH *SSAT* ENTRY
RJM AST
NJP IRM3 IF ACTIVE
LDK SSSL CHECK IF *IAF* IS ENABLED
CRD CN
LDM 3,TN
STM IRMA
LDM 1,TN
LPN 17
ADN CN
STD T6
LDI T6 CHECK SUBSYSTEM
LPC 0
IRMA EQU *-1
ZJN IRM1 IF *IAF* ENABLED
LDC IAS.RDF CHECK IF *RDF* IS ACTIVE
STD TN
LDM 2,TN
LMC FEAF*10000
RJM AST
NJN IRM2 IF *RDF* ACTIVE
IRM1 LDM 2,TN
RJM ISJ INITIATE *RDF* OR *IAF*
IRM2 LDM IRMC RESTORE CURRENT ID
STD TN
LJM IRMX RETURN
* BUFFER FOR *TSEM* MONITOR CALL TO LOAD *RDF* DRIVER.
IRMB CON /REM/VITP
CON 0
CON 0
CON 0
CON 0
IRMC CON 0 CURRENT ID
IRMD CON 0 IAF AUTO FLAG
ISS SPACE 4,10
*** FUNCTION ISSF - INITIATE SPECIFIED SUB-SYSTEM.
*
* ENTRY (IR+3 - IR+4) = 18/NAME, 6/0, IF NOT *DSD* CALL.
* (IR+3) = 0, IF *DSD* CALL.
* (KBCML) = 18/NAME, 6/0, 24/PFC, 12/0, IF *DSD* CALL.
* NAME = 3-CHARACTER SUBSYSTEM NAME.
* PFC = PROCEDURE FILE NAME.
*
* EXIT (A) = 0, IF SUBSYSTEM INITIATED.
ISS ENTRY ENTRY/EXIT
LDD IR+3
NJN ISS1 IF NOT *DSD* CALL
LDC /1DS/DSDL+/1DS/KBCML GET SPECIAL PARAMETER WORD
CRD AB
LDD AB+2 SET PROCEDURE FILE NAME
STM ISJB
LDD AB+3
STM ISJC
UJN ISS2 GET SUBSYSTEM ID
ISS1 STD AB SET SUBSYSTEM NAME
LDD IR+4
STD AB+1
ISS2 LDC IASB FIND SUBSYSTEM ID
STD TN
ISS3 LDI TN
LMD AB
NJN ISS4 IF NO MATCH
LDM 1,TN
SCN 77
LMD AB+1
ZJN ISS5 IF MATCH
ISS4 LDN IASBE GET NEXT TABLE ENTRY
RAD TN
LMC IASBL
NJN ISS3 IF NOT END OF TABLE
LDN 1 SET ERROR STATUS
LJM ISSX RETURN
ISS5 LDD TN
LMC IAS.RDF
NJN ISS6 IF NOT *RDF*
RJM IRM INITIATE *RDF*
UJN ISS7 RETURN
ISS6 LDM 2,TN
RJM ISJ
ISS7 LJM ISSX RETURN
IAS SPACE 4,10
*** FUNCTION IASD - INITIATE ALL ENABLED SUB-SYSTEMS.
IAS5 RJM CCF CLEAR CHECKPOINT FLAGS
LDN 1
STD CM+1 SET NUMBER OF OPTIONS
STD CM+2 DO NOT DROP PPU
LDD MA
CWM IASD,ON
MONITOR UADM ENABLE JOB SCHEDULING
IAS ENTRY ENTRY/EXIT
LDN 0 SPIN UP ISMD DEVICES
RJM SUD
LDD IR+2
LMN /1DS/SCHF
ZJN IAS5 IF ENABLE SCHEDULING CALL
LDC IASB-IASBE SET LIST ADDRESS
STD TN
LDK SSSL GET SUBSYSTEM STATUS WORD
CRD CN
IAS1 LDN IASBE ADVANCE LIST ADDRESS
RAD TN
LMC IASBL
ZJN IAS5 IF END OF LIST
LDM 1,TN
SHN 21-4
PJN IAS1 IF NOT *AUTO* INITIATED SUBSYSTEM
LDD TN
LMC IAS.IAF
NJN IAS2 IF NOT *IAF*
AOM IRMD SET *IAF* AUTO FLAG
IAS2 LDD TN
LMC IAS.RDF
NJN IAS3 IF NOT *RDF*
RJM IRM INITIATE *RDF*
UJN IAS1 NEXT SUBSYSTEM
IAS3 LDM 3,TN SET MASK
STM IASA
LDM 1,TN SET BYTE ADDRESS
LPN 17
ADN CN
STD T6
LDI T6 CHECK SUBSYSTEM
LPC 0
IASA EQU *-1
NJN IAS4 IF DISABLED
LDM 2,TN INITIATE SUBSYSTEM
RJM ISJ
IAS4 LJM IAS1 CHECK NEXT SUBSYSTEM
SPACE 4,15
** TABLE OF SUBSYSTEMS.
*
* ENTRY FORMAT.
*
*T 18/ NAME, 1/P, 1/A, 4/ BYTE, 12/ SSID, 12/ MASK, 12/ TYPE
*
* NAME = 3-CHARACTER SUBSYSTEM NAME.
* BYTE = BYTE POSITION IN *SSTL*.
* P = SET IF PP-INITIATED SUBSYSTEM.
* A = SET IF *AUTO* INITIATED SUBSYSTEM.
* SSID = SUBSYSTEM ID.
* MASK BIT MASK FOR SUBSYSTEM ENABLE/DISABLE BIT.
* TYPE FILE TYPE AND STATUS, IF FILE TYPE .NE. *INQF*.
SUB$ EQU 1 ASSEMBLE *SUBSYST* MACRO
*CALL COMSSSD
IASB BSS 0
LIST G
.SUB HERE
LIST *
IASBL BSS 0 END OF SUBSYSTEMS
IASD CON LDOS DECREMENT BY ONE
CON INWL WORD ADDRESS
CON 13D*100+1 BIT ADDRESS AND FIELD WIDTH
CON 0,0
SPACE 4,10
** COMMON DECKS.
QUAL$ EQU 1 DO NOT QUALIFY COMMON DECKS
*CALL COMPAST
*CALL COMPCTE
*CALL COMPRFI
*CALL COMPSUD
WEI$ EQU 1 DEFINE ALTERNATE EOI BUFFER
*CALL COMPWEI
SPACE 4,10
USE OVERLAY FORCE /LITERALS*/
MSG SPACE 4,10
*** FUNCTION MSGF - SEND DAYFILE MESSAGE.
*
* ENTRY (IR+4) = 6/KEYBOARD BUFFER OFFSET, 6/.
MSG ENTRY ENTRY/EXIT
LDC BUF GET MESSAGE
RJM RPK
LDN 0 CLEAR LAST BYTE
STM BUF+31
LDC BUF SEND MESSAGE TO DAYFILE
RJM DFM
UJN MSGX RETURN
DIS SPACE 4,10
*** FUNCTION DISF - CALL DIS TO JOB.
DIS ENTRY ENTRY/EXIT
RJM LKC LOG COMMAND
LDC 2RDI BUILD INPUT REGISTER
STD IR
LDD CP
SHN -7
LMC 2L S
STD IR+1
LDN 0
STD IR+2
STD IR+3
LDC 4000 SET DIRECT CALL
STD IR+4
LDD MA ENTER *DIS* IN RECALL STACK
CWD IR
LDN ZERL
CRD CM
MONITOR RECM
LJM PPR EXIT TO PP RESIDENT
ECB SPACE 4,10
*** FUNCTION ECBF - ENTER CENTRAL MEMORY BUFFER.
*
* ENTRY (IR+4) = 6/KEYBOARD BUFFER OFFSET, 6/.
ECB ENTRY ENTRY/EXIT
LDC BUF READ AND PACK MESSAGE
RJM RPK
LDD CP READ DISPLAY CONTROL WORD
ADC DBAW
CRD CM
LDD CM CHECK ADDRESS
LPN 37
SHN 14
LMD CM+1
ADN 5
SHN -6
SBD FL
PJN ECBX IF .GE. FL - 5
LDD CM STORE MESSAGE
LPN 37
SHN 6
ADD RA
SHN 6
ADD CM+1
CWM BUF,FV
UJN ECBX RETURN
BUF SPACE 4,10
BUFB DATA 6HACDT,
BUF DATA 2,0 COMMAND SECTOR BUFFER
BUFA BSS 0
OVL0 EQU BUFA+2 LOAD ADDRESS FOR *0SD*, *0QM*
ERRNG BFMS-BUF-510 CHECK FOR BUFFER OVERFLOW
ERRNG BFMS-OVL0-2-ZQML *0QM* OVERFLOW
ERRNG BFMS-OVL0-2-ZSDL *0SD* OVERFLOW
TITLE OVERLAYABLE REQUEST PROCESSORS.
SPACE 4,10
* THE FOLLOWING ROUTINES CANNOT USE BUFFER *BUF*.
QUAL OVLNB
ECP SPACE 4,10
*** FUNCTION ECPF - ENTER CPU PRIORITY.
*
* ENTRY (IR+3) = EJT ORDINAL.
* (IR+4) = CPU PRIORITY IF .NE. 0.
* (IR+4) = 0 IF SET PRIORITY TO SERVICE CLASS VALUE.
* (KBCML) = 36/, 24/ JSN.
ECP ENTRY ENTRY/EXIT
LDC /1DS/DSDL+/1DS/KBCML
CRD FN READ PARAMETER WORD
LDD FN+3 SET JSN IN *UTEM* PARAMETER BLOCK
STM ECPA+3
LDD FN+4
STM ECPA+4
LDD MA
CWM ECPA,ON
LDN 60 SET RETRY COUNT
STD T4
* INTERLOCK EJT.
ECP1 LDN VFIN SET INTERLOCK FLAG + WORD COUNT
STD T1
LDN 0 CLEAR UNUSED BYTE
STD CM+2
SFA EJT,IR+3
RJM SFI SET INTERLOCK
ZJN ECP4 IF ENTRY INTERLOCKED
SBN 2
PJN ECP3 IF VERIFICATION FAILED OR ENTRY NOT IN USE
LDD HN DELAY
STD T0
ECP2 DELAY
SOD T0
PJN ECP2 IF MORE DELAY
SOD T4
PJN ECP1 IF NOT TIMED OUT
ECP3 LDN 1 SET *EJT ENTRY BUSY*
RJM SRD RETURN STATUS TO *DSD*
LJM ECPX EXIT
* DETERMINE JOB STATE.
ECP4 SFA EJT,IR+3
ADK JSNE FETCH JOB STATUS FROM EJT
CRD FN
ADK SCHE-JSNE GET ROLLOUT INFORMATION
CRD T5
LDD FN+4 EXTRACT JOB STATUS
LPN 76
LMN EXJS*2
NJP ECP8 IF NOT EXECUTING JOB STATE
* PROCESS JOB AT CONTROL POINT.
LDD T5+3 SET CONTROL POINT NUMBER
STD T6
LDD NC SET SYSTEM CP ADDRESS
STD T7
RJM CCP CHANGE CONTROL POINT
NJN ECP5 IF UNABLE TO MOVE TO DESIRED CP
LDD CP CHECK CURRENT PRIORITY
ADN CWQW
CRD T1
LDD T1
SHN -3
ADC -200-LSCS
PJN ECP6 IF NOT .LT. SYSTEM PRIORITIES
LDD IR+4
LPC 177
STD CM+4 SET CPU PRIORITY IN REQUEST
LDN CPRS
STD CM+1 CHANGE CPU PRIORITY
MONITOR SJCM
ECP5 SOD FN+4
SFA EJT,IR+3 CLEAR EJT INTERLOCK
ADK JSNE
CWD FN
UJP ECPX RETURN
ECP6 LDN 3 SET *INCORRECT ENTRY*
ECP7 RJM SRD SET ERROR RESPONSE FOR *DSD*
UJN ECP5 CLEAR EJT INTERLOCK
* PROCESS JOB AT PSEUDO-CONTROL POINT.
ECP8 LMN PCJS*2&EXJS*2
NJP ECP10 IF JOB NOT AT PSEUDO CP
LDD T6
RJM SCP SET PSEUDO CP AREA ADDRESS
CRM BFMS+2,HN READ FIRST SECTOR OF CP AREA
RJM SPR SET PRIORITY
PJN ECP6 IF PRIORITY CHANGE NOT ALLOWED
LDD T6 RESET PCP AREA ADDRESS
RJM SCP
ADN CWQW UPDATE CPU SCHEDULING INFORMATION
CWM BFMS+2+5*CWQW,ON
CWM BFMS+2+5*CSAW,ON CLEAR CPU SLICE ACCUMULATORS
ERRNZ CSAW-CWQW-1
UJP ECP5 CLEAR EJT INTERLOCK
ECP9 LDN 2 SET *CANNOT ACCESS ROLLOUT DEVICE.*
UJP ECP7 SET ERROR STATUS
* PROCESS ROLLED-OUT JOB.
ECP10 LMN PRJS*2&PCJS*2
ZJN ECP9 IF PRE-INITIAL JOB STATE
LMN PWJS*2&PRJS*2
ZJN ECP9 IF PRE-INITIAL WAIT JOB STATE
SETMS IO,(NS,RW)
LDN FSMS SET FIRST SECTOR OF CP AREA
STD T7
LDC BFMS READ ROLLOUT FILE
RJM RDS
MJN ECP9 IF DISK ERROR
RJM SPR SET PRIORITY
MJN ECP11 IF PRIORITY CHANGE ALLOWED
ENDMS
LJM ECP6 SET *INCORRECT ENTRY*
ECP11 LDC BFMS+WLSF UPDATE ROLLOUT FILE
RJM WDS
ENDMS
UJP ECP5 CLEAR EJT INTERLOCK
ECPA VFD 1/1,5/JSNE,6/24D VERIFY THAT JSN-S MATCH
VFD 6/36D,6/0
VFD 36/0
SPR SPACE 4,10
** SPR - SET CPU PRIORITY OF ROLLED OUT JOB.
*
* ENTRY FIRST SECTOR OF CONTROL POINT AREA IN *BFMS*.
*
* EXIT (A) .LT. 0 IF NO ERROR.
SPR SUBR ENTRY/EXIT
LDM BFMS+2+5*CWQW+0
ERRPL CWQW-100 *CWQW* MUST BE IN FIRST SECTOR OF CPA
SHN -3
ADC -200-LSCS
PJN SPRX IF JOB AT SYSTEM PRIORITY
* IF SETTING THE PRIORITY TO THE SERVICE CLASS VALUE, THE
* SERVICE CLASS FLAG IN *CWQW* IS CLEARED SO THAT THE *JACM*
* FUNCTION WILL RESET THE PRIORITY ON ROLLIN.
LDM BFMS+2+5*CWQW+1
LPC 2777 CLEAR SLICE AND SERVICE CLASS FLAGS
LMC 4000 SET INCOMPLETE EXTENDED CPU SLICE
STM BFMS+2+5*CWQW+1
LDD IR+4 SET NEW PRIORITY
ZJN SPR1 IF SET PRIORITY TO SERVICE CLASS VALUE
SHN 3
ADC 2000
STM BFMS+2+5*CWQW+0
LDD TH SET PRIORITY NOT FROM SERVICE CLASS FLAG
RAM BFMS+2+5*CWQW+1
SPR1 LDN ZERL CLEAR CPU SLICE ACCUMULATORS
CRM BFMS+2+5*CSAW,ON
ERRPL CSAW-100 *CSAW* MUST BE IN FIRST SECTOR OF CPA
LCN 1 SET NO ERROR
UJN SPRX RETURN
SPACE 4,10
* THE FOLLOWING ROUTINES CANNOT USE BUFFERS *BUF* OR *BFMS*.
ERRNG BFMS-* OVERFLOW INTO BUFFER
AEJ SPACE 4,10
*** FUNCTION AEJF - ASSIGN EQUIPMENT TO JOB.
*
* ENTRY (IR+3) = EQUIPMENT.
AEJ ENTRY ENTRY/EXIT
LDD CP SET OPERATOR ASSIGNED EQUIPMENT
ADN OAEW
CRD CM
LDD IR+3
STD CM+4
LDD CP
ADN OAEW
CWD CM
UJN AEJX RETURN
CKP SPACE 4,10
*** FUNCTION CKPF - CALL CHECKPOINT TO JOB.
CKP ENTRY ENTRY/EXIT
LDN 0
STD CM+1
MONITOR DCPM GET RID OF CP ACTIVITY
LDD CM+1 SAVE STATUS
STD T1
CKP1 PAUSE
LDD CM+1
NJN CKPX IF ERROR
LDD CM+2
LPN 1
NJN CKP3 IF ROLLOUT REQUESTED
LDD CM CHECK PP ACTIVITY
LPN 36 IGNORE THIS PP
ZJN CKP2 IF NO PP ACTIVITY
LDN 77
SBN 1
NJN *-1 IF DELAY NOT FINISHED
UJN CKP1 LOOP
CKP2 LDD CM+4
SHN -4
NJN CKP3 IF PP RECALL REQUESTS
LDD CP
ADN JCIW
CRD CN
ADK TFSW-JCIW
CRD AB
ADK SPCW-TFSW
CRD CM
LDD CN+3
LPC 600
NJN CKP3 IF USER FILE PRIVACY
LDD CM
CKP3 NJN CKP4 IF *SPCW* BUSY
SFA EJT,AB CHECK FOR SCP CONNECTION
ADK JSNE
CRD AB
LDD AB+4
SHN 21-13
MJN CKP4 IF JOB IS CONNECTED TO A SCP
LDN ZERL
CRD CN
CRD CM
LDC 2RCK BUILD *SPCW* CALL
STD CN
LDC 2L P+20
STD CN+1
LDD CP STORE SPECIAL REQUEST
ADC SPCW
CWD CN
MONITOR ROCM SET ROLLOUT FLAG
CKP4 LDD T1
ZJN CKP6 IF NO ORIGINAL STATUS
LDD RA CHECK SYSTEM REQUEST
SHN 6
ADN 1
CRD CM
LDD CM
NJN CKP5 IF CALL
LDN ZERL CLEAR SYSTEM REQUEST
CRD CM
LDD RA
SHN 6
ADN 1
CWD CM
CKP5 LDD CP INDICATE CPU STATUS AT ROLLOUT
ADN STSW
CRD CM
LDN 2
RAD CM+2
LDD CP
ADN STSW
CWD CM
CKP6 LJM CKPX RETURN
CLR SPACE 4,10
*** FUNCTION CLRF - SET/CLEAR PAUSE BIT.
*
* ENTRY (IR+3) = 0 IF CLEARING PAUSE BIT.
* = 1 IF SETTING PAUSE BIT.
* (IR+4) = 6/ KEYBOARD BUFFER OFFSET, 6/.
*
* EXIT TO *ISC* IF JOB NOT AT CP.
CLR4 LDM CLR SET RETURN ADDRESS
STM ISC
LJM ISC+1 INITIATE JOB CALL AND EXIT
CLR ENTRY ENTRY/EXIT
LDC /1DS/DSDL+/1DS/KBCML FETCH PARAMETER WORD
CRD FN
LDN ERLN/10000 SET DEFAULT DAYFILE
STD T4
LDD FN+1
LPN 77
NJN CLR1 IF NOT JSN FOR SUBSYSTEM
LDN 1R
RAD FN+1
CLR1 LDD FN+2
NJN CLRX IF INCORRECT JSN
RJM SSJ SEARCH FOR SPECIFIED JOB
NJN CLR4 IF JOB NOT FOUND
CLR2 LDD CP
ADN SNSW
CRD CM
ADN MS2W-SNSW
CRD CN
LDN 0 CLEAR MESSAGE
STD CN
LDD CM+3 SET/CLEAR PAUSE BIT IN CPA
SCN 3
LMD IR+3
STD CM+3
LDD CP
ADN SNSW
CWD CM
ADN MS2W-SNSW
CWD CN
LDD FL
ZJN CLR3 IF NO FIELD LENGTH
LDD RA
SHN 6
CRD FS
LDD FS+3 SET/CLEAR PAUSE FLAGS IN (RA)
SCN 3
LMD IR+3
STD FS+3
LDD RA STORE (RA)
SHN 6
CWD FS
CLR3 LDD T4 ISSUE DAYFILE MESSAGE
SHN 14
ADM CLRA,IR+3
RJM DFM
LJM CLRX RETURN
CLRA CON MSGA
CON MSGB
TITLE OVERLAYABLE SUBROUTINES.
CCP SPACE 4,15
** CCP - CHANGE CONTROL POINT.
*
* ENTRY (T6) = CONTROL POINT NUMBER.
* (T7) = SYSTEM CONTROL POINT NUMBER.
*
* EXIT (A) = 0 IF CHANGE MADE.
*
* USES CM+1, T5.
*
* CALLS CSJ.
*
* MACROS DELAY, MONITOR.
CCP2 DELAY
SOD T5
PJN CCP1 IF RETRY COUNT NOT EXHAUSTED
CCP SUBR ENTRY/EXIT
LDN 10-1 SET RETRY COUNT
STD T5
CCP1 LDD T6 CHANGE TO REQUESTED CP
ADD TH SET REJECT ON STORAGE MOVE
ERRNZ RCMS-1000
STD CM+1
MONITOR CCAM
LDD CM+1
NJN CCP2 IF CHANGE REJECTED
RJM CSJ RECHECK JSN
ZJN CCPX IF JOB STILL AT CP
LDD T7
STD CM+1
MONITOR CCAM MOVE BACK TO SYSTEM CP
LDN 1
UJN CCPX RETURN
CSJ SPACE 4,10
** CSJ - CHECK CP FOR SPECIFIED JOB.
*
* ENTRY (T6) = CP NUMBER.
* (FN - FN+1) = JSN OF SPECIFIED JOB.
*
* EXIT (A) = 0 IF JOB EXECUTING AT CP.
*
* USES AB - AB+4, CM - CM+4.
*
* MACROS SFA.
CSJ SUBR ENTRY/EXIT
LDD T6 FETCH EJT ORDINAL
SHN 7
ADN TFSW
CRD CM
LDD CM
ZJN CSJ1 IF CP INACTIVE
SFA EJT
ADK JSNE READ EJT ENTRY
CRD AB
LDD AB+1 COMPARE JSN
LMD FN+1
NJN CSJX IF NO MATCH
LDD AB
CSJ1 LMD FN
NJN CSJX IF NO MATCH
LDD AB+4
LPN 76
LMN EXJS*2
UJN CSJX RETURN
SSJ SPACE 4,10
** SEJ - SEARCH CP-S FOR SPECIFIED JOB.
*
* ENTRY (FN - FN+1) = JSN OF SPECIFIED JOB.
*
* EXIT (A) = 0 IF SPECIFIED JOB ACTIVE AT CP.
* (T4) = MESSAGE OFFSET + DAYFILE OPTION.
*
* USES T6, T7.
*
* CALLS CCP, CSJ.
SSJ2 LDD FN
LMC 2RSY
NJN SSJX IF NOT SYSTEM JSN
LDD FN+1
LMC 2RS
SSJ SUBR ENTRY/EXIT
LDN 0
STD T6
LDD CP SET SYSTEM CP NUMBER
SHN -7
STD T7
SSJ1 AOD T6 ADVANCE CP
LMD T7
ZJN SSJ2 IF ALL CP-S CHECKED
RJM CSJ CHECK FOR SPECIFIED JOB
NJN SSJ1 IF JOB NOT ACTIVE AT THIS CP
LDC 2S6 CHANGE DAYFILE/MESSAGE OFFSET
STD T4
RJM CCP CHANGE TO CP
UJN SSJX RETURN
SPACE 4,10
** OVERLAID MESSAGES.
MSGA DATA C*DS, GO.*
MSGB DATA C*DS, PAUSE.*
TITLE PRESET.
QUAL PRESET
PRS SPACE 4,10
** PRS - PRESET.
*
* EXIT (IDSA) = FUNCTION PROCESSOR ADDRESS.
* (IDSC) = ORIGINAL (IR+2).
* (BA) = BUFFER ADDRESS.
* (CA) = COMMAND ADDRESS.
* (FG) = CPU FLAGS.
* (JF) = DEFAULT FIELD LENGTH.
* (CP) = CONTROL POINT ADDRESS.
* (QA) = 0.
* (IR+2) = REQ.
*
* CALLS IFP.
*
* MACROS DELAY, MONITOR, SFA.
PRS SUBR ENTRY/EXIT
LDN 0 PRESET DIRECT CELLS
STD QA
LDC /OVERLAY/BUF SET SECTOR BUFFER ADDRESS
STD BA
ADN 2 SET COMMAND ADDRESS
STD CA
LDN CPMR SET RETRY COUNT
STD S1
LDC DFFL/100 SET DEFAULT FIELD LENGTH
STD JF
LDN 5 SET CONSTANT FIVE
STD FV
LDN NCPL GET NUMBER OF CP-S
CRD CM
ADK MABL-NCPL FETCH HARDWARE OPTIONS
CRD CN
ADK PCPP-MABL GET FWA OF PCP AREA
CRD FS
AOD CM+1 SET SYSTEM CP NUMBER
STD NC
LDD FS+3
RAM SCPA-1
LDD FS+4 SET PCP AREA BASE ADDRESS
STM SCPA
LDD IR+2 SAVE PARAMETERS
STM IDSC
LPN 77 GET FUNCTION CODE
STD IR+2
SBN /1DS/MAXF
PJN PRS3 IF INCORRECT FUNCTION
RJM IFP INITIALIZE *SFA* MACRO
LDD CN+1
STD FG
SHN -11
LMN 7
NJN PRS1 IF NOT A CYBER 176
AOM /OVERLAY/ICJF+2
PRS1 LDM IDSC
SHN 21-12
MJN PRS2 IF CP CHANGE REQUIRED
LJM PRS7 PROCESS FUNCTION
PRS2 LDD IR+4 SET CP NUMBER
LPN 37
STD TN
NJN PRS4 IF ASSIGNED
PRS3 LJM IDS2 DROP PP
PRS4 ADD TH SET REJECT ON STORAGE MOVE
ERRNZ RCMS-1000
STD CM+1
LPN 77
SHN 7
ADN TFSW READ EJTO AND JSN
CRD CN
LDD CN
ZJN PRS3 IF NO EJTO
SFA EJT READ EJT ENTRY
CRD CN
LDD CN+4 CHECK JOB STATUS
LPN 76
LMN EXJS*2
NJN PRS5 IF JOB NOT AT CONTROL POINT
MONITOR CCAM MOVE TO USER-S CP
LDD CM+1
ZJN PRS6 IF MOVE SUCCESSFUL
DELAY 4*10 DELAY FOR 4 MILLISECONDS
SOD S1
ZJN PRS5 IF RETRY COMPLETE
LDD TN RESET CONTROL POINT NUMBER
UJN PRS4 RETRY CONTROL POINT MOVE
PRS5 LJM IDS2 DROP PP
PRS6 LDD IR+1
SCN 77
LMD TN
STD IR+1
LDD CP READ JSN FROM EJT ENTRY
ADN TFSW
CRD CM
SFA EJT,CM
CRD CM
LDD CN CHECK FOR SAME JOB
LMD CM
NJN PRS5 IF DIFFERENT JOB
LDD CN+1
LMD CM+1
NJN PRS5 IF DIFFERENT JOB
PRS7 LDD IR+2 GET FUNCTION CODE
SHN 1
STD CM
LDM TRQP,CM SET/GET PROCESSOR ADDRESS
ZJN PRS5 IF FUNCTION NOT DEFINED
STM IDSA
LJM PRSX EXIT
TRQP SPACE 4,10
** TRQP - TABLE OF REQUEST PROCESSORS.
* ENTRY = 2 WORDS.
* INDEXED BY REQUEST NUMBER * 2.
*
*T, 12/ ADDR, 12/ OVLN
* ADDR ADDRESS OF REQUEST PROCESSOR.
* OVLN OVERLAY NUMBER.
TRQP INDEX
* FUNCTION *FASF* MUST REMAIN FIRST.
FCN /1DS/FASF,0
FCN /1DS/AEJF,AEJ
FCN /1DS/CLRF,CLR
FCN /1DS/CKPF,CKP
FCN /1DS/DCMF,DCM
FCN /1DS/DIAF,DIA
FCN /1DS/DISF,DIS
FCN /1DS/DSPF,DSP
FCN /1DS/DSSF,DSS
FCN /1DS/DWNF,DWN
FCN /1DS/UPCF,DWN
FCN /1DS/EBRF,EBR
FCN /1DS/ECBF,ECB
FCN /1DS/ECPF,ECP
FCN /1DS/EUFF,EUF
FCN /1DS/IASF,IAS
FCN /1DS/ICJF,ICJ
FCN /1DS/IDLF,IDD
FCN /1DS/IJCF,IJC
FCN /1DS/ILJF,ILJ
FCN /1DS/ISCF,ISC
FCN /1DS/ISSF,ISS
FCN /1DS/ITJF,ITJ
FCN /1DS/KIJF,KIJ
FCN /1DS/LODF,LOD
FCN /1DS/MSGF,MSG
FCN /1DS/OCMF,OCM
FCN /1DS/RSTF,RST
FCN /1DS/SAMF,SAM
FCN /1DS/SCAF,SCA
FCN /1DS/SCDF,SCD
FCN /1DS/SCHF,IAS
FCN /1DS/SPNF,SPD
FCN /1DS/SERF,SER
FCN /1DS/TPSF,TPS
FCN /1DS/VMSF,VMS
FCN /1DS/VSAF,VSA
FCN /1DS/WARF,WAR
INDEX /1DS/MAXF*2
SPACE 4,10
IFP HERE REMOTE CODE FOR *SFA* MACRO
SPACE 4,10
OVERFLOW PPFW,EPFW
EJECT
OVERLAY (MASS STORAGE FUNCTIONS.)
2DA SPACE 4,10
** COMMON DECK EQUIVALENCES.
CKSS EQU /LSD/CKSS
DISS EQU /LSD/DISS
DKSS EQU /LSD/DKSS
MNEC EQU /LSD/MNEC
N4SS EQU /LSD/N4SS
STVE EQU /LSD/STVE
MISD EQU /MMF/MISD
MXMF EQU /MMF/MXMF
CIO SPACE 4,10
** CIO - CHECK INITIALIZE OPTIONS.
*
* ENTRY (MS) = MST POINTER.
*
* EXIT (IR+3) = INITIALIZE FLAG BIT NUMBER.
*
* USES CM - CM+4.
CIO SUBR ENTRY/EXIT
LDN LIAL
CIOA LMN 0
NJN CIOX IF NOT *AL* OPTION
LDD MS
SHN 3
ADN MDGL FETCH CURRENT RECORDING MODE FROM MST
CRD CM
LDD CM+1
SHN -13 FORM *HT* OR *FT* OPTION
ADN LIFD
ERRNZ LIFD+1-LIHD CODE DEPENDS ON VALUE
STD IR+3
UJN CIOX RETURN
CSD SPACE 4,15
** CSD - CHECK SHARED DEVICE.
*
* ENTRY (MS-4 - MS) = EST ENTRY OF DEVICE.
*
* EXIT (A) = 0 IF NOT SHARED DEVICE, OR IF INITIALIZE NOT
* SET ON SHARED DEVICE FOR ANY MAINFRAME.
* (A) .NE. 0 OTHERWISE, OR IF *EXTENDED MEMORY* ERROR.
*
* USES T3, CM - CM+4, CN - CN+4.
*
* CALLS DFM.
*
* MACROS MONITOR.
CSD6 LDN 0
CSD SUBR ENTRY/EXIT
LDD MS-4
SHN 21-11
PJN CSD6 IF NOT SHARED
SHN 21-4-21+11
MJN CSD6 IF INDEPENDENT SHARED DEVICE
LDK MMFL SET MACHINE ID OF THIS MACHINE
CRD CM
LDD CM
STM CSDA
LDD MS READ MST
SHN 3
ADN SDGL
CRD CN
LDN MXMF
STD T3
CSD1 LDD CN+1 SET EXTENDED MEMORY ADDRESS
ADN STLL
STD CM+4
SHN -14
ADD CN
LMC RECS*1000 SET UP MONITOR REQUEST
STD CM+3
LDD MA SET CM ADDRESS FOR READ
STD CM+2
LDN 1-1 SET WORD COUNT
* SHN 6
STD CM+1
MONITOR ECSM
LDD CM+1 CHECK RETURN STATUS
SHN 21-13
PJN CSD4 IF NO ERROR
LDD CM+3
SHN 14
LMD CM+4
ZJN CSD4 IF NO RETRY ERROR
LDC =C*EXTENDED MEMORY ERROR.*
CSD2 RJM DFM
LDN 77
CSD3 LJM CSDX EXIT
CSD4 LDD MA
CRD CM
LDD CM+2 CHECK MACHINE ID
LMC *
CSDA EQU *-1
ZJN CSD5 IF THIS MACHINE
LDD CM CHECK INITIALIZE BITS
SCN 77
* LPC MLFPR+MLIAL+MLIHD+MLIFD+MLIPF+MLIQF
ERRNZ MLFPR+MLIAL+MLIHD+MLIFD+MLIPF+MLIQF-7700
ZJN CSD5 IF NO INITIALIZE BIT SET
LDC =C*INITIALIZE PENDING ON THIS DEVICE.*
UJN CSD2 SEND ERROR MESSAGE TO DAYFILE
CSD5 LDN LLLL ADVANCE TO NEXT MAINFRAME
RAD CN+1
SHN -14
RAD CN
SOD T3
ZJN CSD3 IF ALL MAINFRAMES
LJM CSD1 PROCESS NEXT MAINFRAME
CSM SPACE 4,15
** CSM - CHECK SHARED RMS.
*
* ENTRY (T5) = EST ORDINAL.
* (MS) = MST POINTER.
* (IR+4) BIT 2**12 = PRESET FOR SHARED RMS, IF SET.
*
* EXIT (A) = 0, IF NOT INDEPENDENT SHARED DEVICE.
* (A) .GT. 0, IF INDEPENDENT SHARED DEVICE.
* (A) = NEGATIVE, IF INCORRECT CALL.
*
* USES T6, T7, CM - CM+4.
*
* CALLS CDC, RDS, SMI, WDS.
*
* MACROS ENDMS, SETMS, SFA, SMSTF.
CSM7 LDD IR+4
SHN 21-12
MJN CSMX IF INCORRECT PRESET
LDN 0
CSM SUBR ENTRY/EXIT
SFA EST,T5
ADK EQDE
CRD CM
LDD CM
SHN 21-4
PJN CSM7 IF NOT ISD
SHN 5+21-10
PJN CSM4 IF NON-REMOVABLE DEVICE
CSM1 LDD IR+4
SHN 21-12
PJN CSM2 IF MOUNT ON ISD WITHOUT PRESET
SMSTF GPRS SET ISD PRESET BIT FOR DEVICE
CSM2 LDN 1
CSM3 UJN CSMX RETURN
CSM4 SHN 10-3
PJN CSM1 IF DEVICE NOT PREVIOUSLY RECOVERED
SETMS IO,(DE,NR)
LDD MS FETCH LABEL TRACK FROM MST
SHN 3
ADN ALGL
CRD CM
LDD CM+1
ZJN CSM1 IF LABEL TRACK UNDEFINED
STD T6
LDN 0
STD T7
LDC BFMS READ LABEL SECTOR
RJM RDS
PJN CSM6 IF NO READ ERROR
ENDMS
LCN 1
CSM5 UJN CSM3 RETURN
CSM6 RJM SMI SET MACHINE INDEX
STD CM
SHN 2
RAD CM
LDM DISS-5+3,CM
SCN 2 CLEAR UNLOAD STATUS
STM DISS-5+3,CM
RJM CDC COMPUTE LABEL CHECKSUM
STM CKSS
LDC BFMS+WLSF REWRITE LABEL SECTOR
RJM WDS
ENDMS
LDN GLGL-ALGL
STD T7
LDD MS UPDATE GLOBAL MST
SHN 3
ADN ALGL
CWM N4SS+5*ALGL,T7
UJN CSM5 RETURN
C0S SPACE 4,10
** C0S - CALL *0SD*.
*
* ENTRY (A) = 0 IF SPIN UP ALL UNITS.
* = 20B IF SPIN DOWN ALL UNITS.
*
* EXIT (A) = *0SD* PROCESSOR ENTRY ADDRESS.
C0S SUBR ENTRY/EXIT
STM L0SD-2
EXECUTE 0SD,L0SD
UJN C0SX RETURN
SFA SPACE 4,15
** SFA - SEARCH FOR FAST ATTACH FILE.
*
* ENTRY (T5) = EST ORDINAL.
* SEARCHES THE FNT FOR ANY FILE OF TYPE
* *FAFT* ASSIGNED TO THIS EQUIPMENT.
*
* EXIT (A) = 0 IF NO FILE FOUND.
* (A) = 1 IF *FAFT* TYPE FILE FOUND ON EQUIPMENT.
*
* USES QA, FN - FN+4, FS - FS+4.
*
* MACROS SFA.
SFA SUBR ENTRY/EXIT
LDN 0
STD QA
LDN FNTP READ FNT POINTER
CRD FN
SFA1 AOD QA ADVANCE FNT ORDINAL
LMD FN+2
ZJN SFAX IF END OF FNT
SFA FNT,QA READ FNT ENTRY
CRD FS
LDD FS+4 CHECK FILE TYPE
SHN -6
LMN FAFT
NJN SFA1 IF NOT FAST ATTACH
SFA FNT,QA READ FST ENTRY
ADN FSTG
CRD FS
LDD FS CHECK EQUIPMENT ASSIGNMENT
LMD T5
NJN SFA1 IF NOT SAME EQUIPMENT
LDN 1
UJN SFAX EXIT WITH FAST ATTACH FOUND
SFD SPACE 4,10
** SFD - SEARCH FOR DAYFILES.
*
* ENTRY (IR+4) = EST ORDINAL.
*
* EXIT (A) = 0, IF SYSTEM DAYFILES ON DEVICE.
*
* USES CM - CM+4, T1 - T5.
SFD SUBR ENTRY/EXIT
LDK DFPP
CRD T1
LDN 3*3+2 SET DAYFILE EST OFFSET
STD T3
SFD1 LDD T1
SHN 14
LMD T2
ADD T3
CRD CM
LDD CM
LMD IR+4
ZJN SFDX IF DAYFILE ON EQUIPMENT
LCN 3
RAD T3
PJN SFD1 IF MORE DAYFILES TO CHECK
UJN SFDX RETURN
SUL SPACE 4,10
** SUL - SCAN UNIT LIST.
*
* ENTRY (T3) = CONTROL MODULE NUMBER * 10B.
* (AB+4) = ISMD DEVICE MST ADDRESS/10.
*
* EXIT (A) = 0 IF THE ISMD CONTAINS A UNIT ON THE *CM*.
*
* USES T4, T5, FN - FN+4.
SUL SUBR ENTRY/EXIT
LDD AB+4 READ MST WORD *DDLL*
SHN 3
ADN DDLL
CRD FN
LDD FN
SHN 21-12
MJN SULX IF NULL EQUIPMENT
LDD FN GET NUMBER OF UNITS - 1
LPN 7
STD T4
LDN FN+4 INITIALIZE UNIT LIST ADDRESS
STD T5
SUL1 LDI T5
LMD T3 COMPARE WITH CONTROL MODULE NUMBER
LPN 70
ZJN SULX IF NUMBER MATCHES
SOD T4
MJN SULX IF END OF UNITS
LDI T5
SHN 3-11
LMD T3 COMPARE WITH CONTROL MODULE NUMBER
LPN 70
ZJN SULX IF NUMBER MATCHES
SOD T4
MJN SULX IF END OF UNITS
SOD T5
UJN SUL1 CHECK NEXT UNIT
UDD SPACE 4,10
** UDD - UP *DD* DRIVE.
*
* ENTRY (AB - AB+4) = EST ENTRY.
*
* EXIT (A) .NE. 0 IF DRIVE SPUN UP.
* (A) = 0 IF CONTROL MODULE DOWN.
*
* USES T1, T3, CN - CN+4.
*
* CALLS COS, SUL.
UDD2 RJM C0S SPIN UP *DD* DRIVE
STM UDDA
RJM *
UDDA EQU *-1
LDN 1
UDD SUBR ENTRY/EXIT
LDN ESTP
CRD CN
LDD CN+2 SET LAST EST ORDINAL + 1
STD T1
UDD1 SOD T1
ZJN UDD2 IF END OF EST
SFA EST
CRD CN
LDD CN+3
LMC 2RCM
NJN UDD1 IF NOT *CM*
LDD CN
LPN 3 CHECK DEVICE STATE
LMN 3
NJN UDD1 IF NOT DOWN
LDD CN+4
SHN 3-11 SAVE EQUIPMENT NUMBER
STD T3
RJM SUL SCAN UNIT LIST
NJN UDD1 IF NO UNIT ON THIS *CM*
UJP UDDX RETURN
TITLE FUNCTION PROCESSORS.
DCM SPACE 4,10
*** FUNCTION DCMF - DOWN CONTROL MODULE.
*
* ENTRY (IR+4) = CONTROL MODULE EQUIPMENT NUMBER.
*
* NOTE IF ANY ISMD DEVICE WHICH IS NOT DOWN HAS A UNIT ON
* THE SPECIFIED CONTROL MODULE, A NEGATIVE REPLY IS
* RETURNED TO *DSD* AND THE CONTROL MODULE IS NOT
* DOWNED.
DCM3 LDN DWES *SEQM* SUBFUNCTION
STD CM+2
LDD IR+4 EST ORDINAL
STD CM+1
MONITOR SEQM SET EQUIPMENT DOWN
DCM ENTRY ENTRY/EXIT
LDN ESTP GET LAST MASS STORAGE ORDINAL + 1
CRD CN
SFA EST,IR+4 GET *CM* EST ENTRY
CRD CM
LDD CM+4 SAVE EQUIPMENT NUMBER
SHN 3-11
STD T3
DCM1 SOD CN+3
ZJN DCM3 IF END OF EST
SFA EST
ADK EQDE FETCH EST ENTRY
CRD AB
LDD AB+3 CHECK DEVICE TYPE
LMC 2RDD
ZJN DCM2 IF ISD (TYPE *DD*)
LMN 1RG&1RD
NJN DCM1 IF NOT TYPE *DG*
DCM2 LDD AB
LPN 3 CHECK DEVICE STATE
LMN 3
ZJN DCM1 IF DEVICE DOWN
RJM SUL SCAN UNIT LIST
NJN DCM1 IF NO UNIT ON THIS *CM*
LDN 1 INDICATE *CM* NOT DOWNED
RJM SRD SAVE REPONSE TO *DSD*
LJM DCMX RETURN
OCM SPACE 4,10
*** FUNCTION OCMF - ON CONTROL MODULE.
*
* ENTRY (IR+4) = CONTROL MODULE EST ORDINAL.
* CHECK FOR FIRMWARE RELOAD COMPLETION.
OCM1 LMN 1&3
NJN OCM2 IF CONTROL MODULE NOT IDLE
LDD FN+2
SHN 0-12
ZJN OCM2 IF FIRMWARE RELOAD COMPLETE
LDK ZERL SET 1 SECOND TIMED RECALL PARAMETERS
CRD CM
LDM IDSC RESTORE ORIGINAL CONTENTS
STD IR+2
LDD MA SET PP INPUT REGISTER IMAGE
CWD IR
MONITOR RECM ENTER RECALL AND DROP PP
LJM PPR EXIT TO PP RESIDENT
* SET CONTROL MODULE STATUS = ON.
OCM2 LDN ONES *SEQM* SUBFUNCTION
STD CM+2
MONITOR SEQM
OCM ENTRY ENTRY
LDD IR+4
STD CM+1
SFA EST READ CONTROL MODULE EST ENTRY
ADK EQDE
CRD CN
ADK EQAE-EQDE
CRD FN
STD CM+4 SAVE ADDRESS OF *EQAE* WORD
SHN -14
STD CM+3
LDD CN
LPN 3
LMN 3
NJP OCM1 IF CONTROL MODULE NOT DOWN
* IDLE CONTROL MODULE FOR FIRMWARE LOAD.
LDN IDES SET *SEQM* SUBFUNCTION
STD CM+2
MONITOR SEQM
* SET CONTROLWARE LOAD FLAG IN EST ENTRY.
LDN 1 SET REQUEST COUNT
STD CM+1
LDD MA PLACE *UTEM* PARAMETERS IN MB
CWM OCMA,ON
MONITOR UTEM
* USE THIS PP TO INITIATE CONTROLWARE LOAD.
LDM IDSC SET FUNCTION CODE
SCN 77 PRESERVE BUFFER LOCK/LOGGING CONTROL BITS
LMN /1DS/ILJF
STD IR+2
LDC 2000 SET *OCMF* CALL FLAG
RAD IR+4
LDD IA REWRITE PP INPUT REGISTER
CWD IR
EXECUTE 1DS,=
LJM PPR EXIT TO PP RESIDENT
OCMA VFD 1/0,5/0,6/1,6/43,42/1 *UTEM* REQUEST
RST SPACE 4,10
*** FUNCTION RSTF - RESTORE PARITY PROTECTION FOR DAS DEVICE.
*
* ENTRY (IR+4) = DEVICE EST ORDINAL.
RST ENTRY ENTRY/EXIT
LDD IR+4
STD T5
SFA EST GET EST ENTRY
ADK EQDE
CRD CM
* CHECK DEVICE TYPE.
LDN TRSTL CHECK DEVICE TYPE
STD T1
RST1 SOD T1
MJN RSTX IF DEVICE DOES NOT SUPPORT RESTORE
LDD CM+3
LMM TRST,T1
NJN RST1 IF DEVICE TYPE DOES NOT MATCH
* CALCULATE *PUT* ENTRY ADDRESS.
LDD CM+4 GET *PUT* ORDINAL
SHN 3
ADN DILL
CRD CM
LDD CM+2
SHN PUTLS
STM RSTA+1
SHN -14
RAM RSTA
LDC BIOL GET POINTER TO BUFFERED I/O TABLES
CRD CM
LDD CM+1 FETCH *PUT* TABLE POINTER WORD
SHN 14
LMD CM+2
ADN PUTP
CRD CM
LDD CM+3 FWA OF FIRST *PUT* ENTRY
LPN 77
SHN 14
ADD CM+4
RSTA ADC 0 (*PUT* ORDINAL SHIFTED BY *PUTLS*)
* SET *RSPF* SPECIAL REQUEST FLAG IN *PUT*.
STD CM+4 SET ADDRESS OF *PUT* ENTRY
SHN -14
STD CM+3
LDN 1 SET NUMBER OF REQUESTS
STD CM+1
LDD MA STORE *UTEM* REQUEST IN MESSAGE BUFFER
CWM RSTB,ON
MONITOR UTEM SET FLAG FOR BUFFERED DEVICE DRIVER
UJP RSTX RETURN
RSTB VFD 1/0,5/PILL,6/1,6/RSPF,42/1 *UTEM* REQUEST
PURGMAC TBLM
TBLM MACRO TY
TBLM IFEQ BF_TY,7,1
CON 2R_TY
TBLM ENDIF
TBLM ENDM
TRST BSS 0 DEVICES ALLOWED FOR RESTORE
LIST G
TBL "MSEQ"
LIST *
TRSTL EQU *-TRST LENGTH OF TABLE
PURGMAC TBLM
SCA SPACE 4,10
*** FUNCTION SCAF - SET/CLEAR BIT IN MST WORD ACGL.
*
* ENTRY (IR+3) = BIT NUMBER.
* (IR+4) = EST ORDINAL.
* BIT 2**11 OF (IR+3) SET IF BIT TO BE CLEARED.
SCA ENTRY ENTRY/EXIT
LDD IR+4 SET EST ORDINAL
STD T5
LDD IR+3 CHECK REQUEST
LPC 4000
ZJN SCA1 IF BIT TO BE SET
LMC -0
SCA1 LMD IR+3 SET/CLEAR GLOBAL BIT
RJM TGB
UJN SCAX RETURN
SCD SPACE 4,10
*** FUNCTION SCDF - SET/CLEAR FLAGS FOR RMS DEVICES.
*
* ENTRY (IR+3) = *ONES* TO SET DEVICE *ON*.
* *IDES* TO SET DEVICE *IDLE*.
* *OFES* TO SET DEVICE *OFF*.
* *DWES* TO SET DEVICE *DOWN*.
* (IR+4) = EST ORDINAL.
SCD14 LDN 1 RETURN NEGATIVE RESPONSE
RJM SRD
SCD ENTRY
LDD IR+4 SAVE EST ORDINAL
STM L0SD-1
STM SCDA+2
SFA EST FETCH EST ENTRY
ADK EQDE
CRD AB
LDD IR+3
LMN DWES
NJN SCD2 IF NOT SETTING DEVICE DOWN
RJM SFD SEARCH FOR DAYFILES ON DEVICE
SCD1 ZJN SCD14 IF DAYFILES PRESENT
UJN SCD5 CONTINUE DOWN PROCESSING
SCD2 LDN TSCDL CHECK DEVICE TYPE FOR NON-*LDAM* DEVICE
STD T1
SCD3 SOD T1
MJN SCD4 IF DRIVE SHOULD NOT BE SPUN UP
LDD AB+3
LMM TSCD,T1
NJN SCD3 IF DEVICE TYPE DOES NOT MATCH
RJM UDD SPIN UP DRIVE
ZJN SCD1 IF SPIN-UP ERROR
SCD4 LDD AB
SHN 21-6
MJN SCD9 IF DEVICE UNAVAILABLE
SCD5 LDD IR+3
SBN OFES
PJN SCD8 IF SETTING DEVICE *OFF* OR *DOWN*
ADN OFES-ONES
ZJN SCD6 IF SETTING DEVICE *ON*
LDN ONFC&IDFC
SCD6 LMN ONFC
SCD7 SHN 6
STM SCDA+3
RJM LKC LOG KEYBOARD COMMAND
LDD IR+1
LPN 77
RAM SCDA+1
LDD IA CALL *1MV* TO PROCESS REQUEST
CWM SCDA,ON
EXECUTE 1MV,=
LJM PPR EXIT TO PPR TO LOAD *1MV*
SCD8 ZJN SCD10 IF *OFF* REQUESTED
LDK OFES SET DEVICE *OFF* TO ELIMINATE ACTIVITY
STD CM+2
LDD IR+4
STD CM+1
MONITOR SEQM
SCD9 UJN SCD11 SET DEVICE *DOWN*
SCD10 LDD AB
LPN 3
LMN 3
NJN SCD11 IF NOT CURRENTLY DOWN
LDN OFFC
UJN SCD7 CALL *1MV* TO GO FROM DOWN TO OFF
SCD11 LDD IR+3 *SEQM* SUBFUNCTION
STD CM+2
LDD IR+4 EST ORDINAL
STD CM+1
MONITOR SEQM CHANGE EQUIPMENT STATE
LDD CM+1
NJN SCD12 IF DEVICE STATE WAS CHANGED
LDD AB RESTORE ORIGINAL DEVICE STATE
LPN 3
STD CM+2
ERRNZ ONES CODE DEPENDS ON VALUE
ERRNZ IDES-1 CODE DEPENDS ON VALUE
ERRNZ OFES-2 CODE DEPENDS ON VALUE
LDD IR+4 EST ORDINAL
STD CM+1
MONITOR SEQM
LJM SCD14 RETURN
SCD12 LDD IR+3
LMK ONES
NJN SCD13 IF NOT TURNING DEVICE ON
LPN 2
ERRNZ ONES CODE DEPENDS ON VALUE
ERRNZ IDES-1 CODE DEPENDS ON VALUE
NJN SCD10 IF NOT ATTEMPTING TO *ON* OR *IDLE* DEVICE
LDD AB
SHN -3 CHECK EQUIPMENT STATUS
LPN 41
NJN SCD13 IF NOT INACTIVE NON-REMOVABLE DEVICE
LDC 4000+LUNL
STD IR+3
RJM .TPS PROCESS MOUNT REQUEST
SCD13 LDN ZERL
CRD CM
ADN PFNL+1-ZERL CLEAR *CMS* TIMEOUT
CWD CM
LJM SCDX RETURN
SCDA VFD 18/3R1MV,42/0
TSCD BSS 0 DEVICES TO SPIN UP ON *ON*
CON 2RDD 834
CON 2RDG 836
CON 2RDF 887 (4KB SECTOR)
CON 2RDH 887 (16KB SECTOR)
TSCDL EQU *-TSCD LENGTH OF TABLE
SPD SPACE 4,10
*** FUNCTION SPNF - SPIN MASS STORAGE DRIVE.
*
* ENTRY (IR+3) = 0 IF SPIN UP.
* .GT. 0 IF SPIN DOWN.
* (IR+4) = DEVICE EST ORDINAL.
SPD ENTRY ENTRY/EXIT
LDD IR+3
ZJN SPD1 IF SPIN UP
LDN 20
SPD1 RJM C0S CALL *0SD*
STM SPDA SAVE *0SD* PROCESSOR ENTRY ADDRESS
LDD IR+4 SET EST ORDINAL
STM L0SD-1
RJM * SPIN UP/DOWN MASS STORAGE DEVICE
SPDA EQU *-1 (*0SD* PROCESSOR ENTRY ADDRESS)
UJN SPDX RETURN
TPS SPACE 4,20
*** FUNCTION TPSF - TOGGLE PF STATUS.
*
* PROCESS COMMAND FOR *DSD* -
* *INITIALIZE*, *MOUNT*, OR *UNLOAD*.
*
* ENTRY (IR+3) = 1/M, 11/TYPE.
* M = 1, IF *MOUNT* REQUEST.
* = 0, IF *UNLOAD* REQUEST.
* TYPE = LUNL, IF *MOUNT* OR *UNLOAD*.
* (IR+4) = 1/, 1/S, 10/EQ.
* S = 1, IF SHARED RMS IS PRESET.
* EQ = EST ORDINAL, IF NOT *INITIALIZE*.
* = UNUSED, IF *INITIALIZE*.
* (PARAMETER WORD) = 12/EQ1,12/EQ2,12/EQ3,12/EQ4,12/EQ5.
* (USED ONLY FOR *INITIALIZE*.)
* THE FIRST EQUIPMENT THAT EQUALS
* ZERO ENDS THE LIST OF EQUIPMENTS.
* PROCESS *MOUNT* OR *UNLOAD* OF ONE EQUIPMENT.
TPS14 LDD IR+4 GET EST ENTRY
LPC 777
STD T5
STM L0SD-1
SFA EST
ADK EQDE
CRD MS-4
*
* CHECK IF OPTICAL DISK DRIVE.
*
LDD MS-1
LMC 2ROD OPTICAL DISK
NJN TPS14.1 IF NOT OPTICAL DISK
RJM DOD DISMOUNT OPTICAL DISK
LJM TPSX RETURN TO CALLER
TPS14.1 LDD IR+3
SHN 0-13
ZJP TPS20 IF UNLOAD REQUEST
LDD MS-4
SHN 21-3
PJN TPS15 IF DEVICE INACTIVE
SHN 4+21-10
PJN TPS16 IF NON-REMOVABLE DEVICE
TPS15 LDD MS
SHN 3
ADN STLL
CRD CM
LDD CM CHECK LOCAL STATUS
LPN MLDUL
ZJN TPS19 IF DEVICE NOT UNLOADED
SMSTF LPTU PROHIBIT TRT UPDATE BY *1RU*
TPS16 RJM CSM
MJN TPS17 IF BAD CALL
NJN TPS18 IF INDEPENDENT SHARED DEVICE MOUNT
RJM CSD CHECK EXTENDED MEMORY MMF SHARED DEVICE
TPS17 NJN TPS21 IF DEVICE CANNOT BE RECOVERED
TPS18 CMSTF LDUL CLEAR DEVICE UNLOADED STATUS
CMSTF GUNL CLEAR GLOBAL UNLOAD
RJM C0S CALL 0SD
STM TPSB
RJM ** SPIN UP ISMD DEVICE
TPSB EQU *-1 (*0SD* PROCESSOR ENTRY ADDRESS)
TPS19 LCN 0
TPS20 LMN LUNL SET/CLEAR UNLOAD REQUESTED
RJM TLB
TPS21 LDK ZERL
CRD CM
ADN PFNL+1-ZERL CLEAR *CMS* TIMEOUT
CWD CM
TPS ENTRY ENTRY/EXIT
LDD IR+3 CHECK REQUEST
LPN 77
LMN LUNL
NJN TPS1 IF NOT MOUNT/UNLOAD
LJM TPS14 PROCESS MOUNT/UNLOAD
* PROCESS *INITIALIZE* OF MULTIPLE EQUIPMENTS.
TPS1 LDC /1DS/DSDL+/1DS/KBCML READ SPECIAL PARAMETER WORD
CRM TPSA,ON
LDD IR+3 SET REQUESTED INITIALIZE OPTION
RAM CIOA
LDC TPSA
STD T4
UJN TPS3 ENTER LOOP
TPS2 AOD T4
ADC -TPSA-4-1
ZJN TPSX IF END OF PARAMETER WORD
TPS3 LDI T4 GET NEXT EQUIPMENT
ZJN TPSX IF NO MORE EQUIPMENTS
STD T5
SFA EST GET EST ENTRY
ADK EQDE
CRD MS-4
LDD MS READ *STLL*
SHN 3
ADN STLL
CRD AB
RJM CIO CHECK INITIALIZE OPTIONS
LDD AB
LPC MLFPR+MLIAL+MLIHD+MLIFD
ZJN TPS7 IF FULL INITIALIZE NOT SET
LDD IR+3
SBN LIFD
MJN TPS2 IF REQUEST FOR PARTIAL INITIALIZE
ADN LIFD
RJM TLB SET INITIALIZE REQUEST
LDN LIAL
STD T2
LDD CM+1 CHECK REPLY
LPN 1
ZJN TPS4 IF INITIALIZE FLAG NOT ALREADY SET
LJM TPS9 CLEAR INITIALIZE FLAG
TPS4 LDD IR+3 CHECK FULL INITIALIZE FLAG
LMD T2
ZJN TPS5 IF FLAG JUST SET
LCN 0 CLEAR OTHER FULL INITIALIZE FLAGS
LMD T2
RJM TLB
TPS5 SOD T2 DECREMENT FLAG NUMBER
LMN LIFD-1
NJN TPS4 IF NOT END OF FULL INITIALIZE FLAG
TPS6 LJM TPS2 LOOP
TPS7 LDD IR+3
SBN LIQF
MJN TPS8 IF PRESERVED FILES NOT BEING INITIALIZED
RJM CSD CHECK SHARED DEVICE
NJN TPS6 IF NOT CLEAR FOR INITIALIZE
LDD IR+3
SBN LIPF
MJN TPS8 IF PERMANENT FILES NOT INVOLVED
RJM SFA
ZJN TPS8 IF NO FAST ATTACH FILES ON DEVICE
LDC =C*FAST ATTACH FILES ON DEVICE.*
RJM DFM
LJM TPSX RETURN
TPS8 LDD IR+3 SET INITIALIZE REQUEST
RJM TLB
LDD CM+1 CHECK REPLY
LPN 1
ZJN TPS10 IF INITIALIZE FLAG NOT ALREADY SET
TPS9 LCN 0 CLEAR INITIALIZE FLAG
LMD IR+3
RJM TLB
TPS10 LDD IR+3 CHECK REQUEST
SBN LIFD
MJN TPS12 IF NOT FULL INITIALIZE REQUEST
LDD AB
LPC MLIPF+MLIQF
ZJN TPS11 IF PARTIAL INITIALIZE NOT SET
CMSTF LIPF
CMSTF LIQF
TPS11 LDD AB+1
LPC MLIDF+MLIAF+MLIEF+MLIMF
ZJN TPS12 IF NO DAYFILE INITIALIZATION SET
CMSTF LIDF
CMSTF LIAF
CMSTF LIEF
CMSTF LIMF
TPS12 LDD MS REREAD INITIALIZE STATUS FROM MST
SHN 3
ADN STLL
CRD AB
LDD AB+1
SCN 77
SHN 6
LMD AB
SCN MLIRP+MLUNL+MLCKP+MLDUL+MRASD+MLPTU
ZJN TPS13 IF NO INITIALIZE FLAGS SET
LCN 0
TPS13 LMC -LIRP SET/CLEAR INITIALIZE PENDING
RJM TLB
LJM TPS2 LOOP
TPSA VFD 60/0 EQUIPMENT LIST
VMS SPACE 4,10
*** VMSF - VERIFY MASS STORAGE FUNCTION.
*
* ENTRY (IR+4) = EST ORDINAL.
VMS ENTRY ENTRY/EXIT
LDD IR+4 SET EST ORDINAL
STD T5
SFA EST
ADK EQDE
CRD CM
LDD CM+4 GET MST PARAMETERS
SHN 3
ADN SDGL
CRD CM
ADN STLL-SDGL
CRD AB
LDD AB+1 EXTRACT CURRENT ERROR STATUS
LPN 77
STD T7
LDD CM+4
LPN 1
ZJN VMS1 IF DEVICE NOT INTERLOCKED
LDD T7 CHECK CURRENT ERROR STATUS
LMN STVE
SHN 14
NJN VMS1 IF NOT INTERLOCKED WITH VALIDATION ERROR
SMSTF LPTU PROHIBIT TRT UPDATE BY *1RU*
LDN VEQS&VEIS
VMS1 LMK VEIS SET UP MONITOR CALL
STD CM+3
LDD T5
STD CM+1
MONITOR VMSM REQUEST MASS STORAGE VALIDATION
LDD CM+1
NJN VMS3 IF VALIDATION NOT SUCCESSFUL
CMSTF LPTU ALLOW TRT UPDATES BY *1RU*
LDD T7 CHECK PREVIOUS ERROR STATUS
LMN STVE
NJN VMS2 IF NOT VALIDATION ERROR
RJM SES CLEAR MST ERROR STATUS
LDN NCPL
CRD CN
AOD CN+1 CLEAR MESSAGE AT SYSTEM CONTROL POINT
SHN 7
ADN MS2W
CWD CM
CMSTF GDEI CLEAR ERROR IDLE FLAG
SMSTF LCKP SET CHECKPOINT REQUEST
VMS2 LJM VMSX RETURN
VMS3 STD IR+2 SET ERROR CODES
LDD T7 CHECK PREVIOUS ERROR STATUS
SBN MNEC
PJN VMS4 IF PREVIOUS ERROR NOT TO BE CHANGED
LDD TH
RAD T5
LDN STVE SET ERROR STATUS IN MST
RJM SES
VMS4 LDD T5 SET EST ORDINAL FOR *5ME*
STD IR+3
EXECUTE 5ME
UJN VMS2 RETURN
DOD SPACE 4,10
** DOD - DISMOUNT OPTICAL DRIVE.
*
* ENTRY (T5) = EST ORDINAL.
*
* USES CM+1.
*
* CALLS (1OS).
*
* MACROS DELAY, MONITOR.
DOD2 LDD CP CLEAR WAIT MESSAGE
ADK MS2W
CWD CM
DOD SUBR ENTRY/EXIT
LDM IDSC PASS RELEVANT CALL DATA ON TO *1OS*
STM DODA+2
LDD IR+3
STM DODA+3
LDD IR+4
STM DODA+4
DOD1 LDD MA PLACE REQUEST IN MESSAGE BUFFER
CWM DODA,ON
LDN 0
STD CM+1
MONITOR RPPM CALL *1OS*
LDD CM+1
NJP DOD2 IF PP ASSIGNED OR IN REQUEST QUEUE
LDD CP ISSUE WAIT MESSAGE
ADK MS2W
CWM DODB,TR
DELAY 100D DELAY BETWEEN *1OS* CALLS
UJN DOD1 RETRY *1OS* CALL
DODA VFD 18/3R1OS,6/0,12/0,12/0,12/0
DODB DATA C*WAITING FOR PP.*
SPACE 4,10
** COMMON DECKS.
QUAL$ EQU 0 DON-T QUALIFY COMMON DECKS
*CALL COMPCLC
*CALL COMPSES
*CALL COMPSMI
L0SD EQU *+2 *0SD* LOAD ADDRESS
ERRNG BFMS-L0SD-ZSDL *0SD* OVERFLOW
OVERFLOW OVLA,/OVERLAY/BUFB
OVERLAY (IAF/MAGNET FUNCTIONS.)
DIA SPACE 4,10
*** FUNCTION DIAF - SEND MESSAGE TO *IAF* USER.
*
* ENTRY (CP) = *IAF* CONTROL POINT ADDRESS.
* (IR+3) = USER TERMINAL NUMBER.
* = 7777 IF DIALING ALL TERMINALS.
* (IR+4) = 6/KEYBOARD BUFFER OFFSET, 6/.
DIA ENTRY ENTRY/EXIT
LDC IFSI FIND *IAF*
RJM CSS
CHKERR CHECK ERROR FLAG
NJN DIAX IF ERROR FLAG
LDN 1 INITIALIZE TERMINAL COUNT
STD SR+4
LDN 40 INITIALIZE NO POT CHAIN RETRY COUNT
STD AB
LDD IR+3 GET TERMINAL NUMBER
LMC 7777 CHECK FOR DIAL ALL REQUEST
NJP DIA2 IF DIALING A SPECIFIC JSN
LDK /REM/VPST INITIALIZE TERMINAL NUMBER
STD IR+3
LDD RA
SHN 6
ADK /REM/VTTP
CRD CN GET FWA OF TERMINAL TABLE
ADK /REM/VMNL-/REM/VTTP
CRD SR GET MAX NUMBER OF TERMINALS
LDN 2 SET WORD COUNT FOR CM READ
STD CN
LDK /REM/VPST*/REM/VTTL
DIA1 RAD CN+2
SHN -14
RAD CN+1
SHN 6 CALCULATE ADDRESS FOR THIS ENTRY
ADD RA
SHN 6
ADD CN+2
ADK /REM/VFST
CRD T1 READ JSN
ADK /REM/VDCT-/REM/VFST GET OUTPUT POT POINTERS
ERRNZ /REM/VSTT-/REM/VDCT-1 CODE REQUIRES CONTIGUOUS WORDS
CRM T3,CN
LDD T1
ZJN DIA3 IF ENTRY NOT IN USE
STM DIAA+7 PLACE JSN IN FAILURE MESSAGE
LDD T3+4
ADD T3+5+4
ZJN DIA2 IF OUTPUT NOT ALREADY QUEUED
LDD T2
STM DIAA+10
LDC DIAA
RJM DFM SEND FAILURE MESSAGE TO DAYFILE
UJN DIA3 CHECK FOR ERROR
DIA2 LDN 3 ONE HEADER AND TWO LINKAGE WORDS
RJM SBT FILL POTS WITH MESSAGE
ZJN DIA7 IF NO POT CHAIN AVAILABLE
LDN 40 RESET NO POT CHAIN RETRY COUNT
STD AB
LDD IR+3
STM WARA+4 ADD TERMINAL NUMBER TO REQUEST
RJM ITR ISSUE *TSEM* REQUEST
DIA3 CHKERR CHECK ERROR FLAG
NJN DIA6 IF ERROR FLAG SET
AOD IR+3 INCREMENT TERMINAL NUMBER
SOD SR+4 DECREMENT TERMINAL COUNT
ZJN DIA6 IF ALL TERMINALS DIALED
LDN /REM/VTTL ADVANCE TERMINAL TABLE POINTER
DIA4 UJP DIA1 READ TERMINAL TABLE ENTRY
DIA5 LDC DIAB *DIAL - NO POT CHAIN.*
RJM DFM SEND FAILURE MESSAGE
DIA6 LJM DIAX RETURN
DIA7 SOD AB DECREMENT NO POT CHAIN RETRY COUNT
MJN DIA5 IF THROUGH RETRYING
LDC 1400 DELAY 100 MILLISECONDS AND RETRY
STD T0
DIA8 DELAY
CHKERR CHECK ERROR FLAG
NJN DIA6 IF ERROR FLAG SET
SOD T0
NJN DIA8 IF NOT THROUGH DELAYING
UJN DIA4 RETRY DIAL
DIAA DATA C*OUTPUT BUSY - JSNX.*
DIAB DATA C*DIAL - NO POT CHAIN.*
KIJ SPACE 4,10
*** FUNCTION KIJF - KILL INTERACTIVE JOB.
*
* ENTRY (IR+3 - IR+4) = JSN.
KIJ ENTRY ENTRY/EXIT
LDD MA COPY JSN INTO (AB - AB+1)
CWD IR+3
CRD AB
LDN /REM/VCPT MOVE TO *IAF* CP
STD CM+1
MONITOR CCAM
LDD CM+1
NJP IDS2 IF UNABLE TO CHANGE CONTROL POINTS
LDC IFSI CHECK IF IAF PRESENT
RJM CSS
* LDN 0
STD AB+3 INITIALIZE TERMINAL NUMBER
LDD RA SET *IAF* RA
STD T7
RJM GTN GET TERMINAL NUMBER
MJN KIJX IF NOT FOUND
LDD AB+3 SET TERMINAL NUMBER
STM WARA+4
LDC /REM/VTLF
STM WARA
LDN 2 SET UNCONDITIONAL LOGOFF
STM WARA+2
RJM ITR ISSUE *TSEM* REQUEST
LJM KIJX RETURN
WAR SPACE 4,10
*** FUNCTION WARF - SEND *IAF* WARNING MESSAGE.
*
* ENTRY (CP) = *IAF* CONTROL POINT ADDRESS.
* (IR+4) = 6/KEYBOARD BUFFER OFFSET, 6/.
WAR ENTRY ENTRY/EXIT
LDC IFSI FIND *IAF*
RJM CSS
LDD IR+4
SHN -6
NJN WAR1 IF NOT CLEAR PREVIOUS MESSAGE
LDC 2R"NL" SET NEW LINE TO CLEAR BUFFER
STM BFMS+5*6+2
UJN WAR2 CLEAR OLD MESSAGE
WAR1 LDN TIML SET TIME
CRM BFMS+5*3,ON
LDD MA SET WARNING
CWM =C* WARNING*,ON
SBN 1
CRM BFMS+5*4,ON
LDN ZERL
CRM BFMS+5*5,ON
CHKERR
NJN WAR4 IF ERROR FLAG
LDN 6 FOUR HEADER AND TWO LINKAGE WORDS
RJM SBT FILL POTS WITH MESSAGE
ZJN WAR4 IF POT CHAIN NOT AVAILABLE
WAR2 LDC BFMS+5*6+2-1 FIND NEW LINE
STD T1
WAR3 AOD T1
LDI T1
LMC 2R"NL"
NJN WAR3 IF NOT FOUND
STI T1 SET MESSAGE TERMINATOR
RJM ITR ISSUE *TSEM* REQUEST
ZJN WAR4 IF IAF NOT AVAILABLE
LDD CP COPY MESSAGE TO B DISPLAY
ADN MS1W
CWM BFMS+5*6+2,FV
WAR4 LJM WARX EXIT
WARA CON /REM/VMSG
CON 0
CON 0 LAST POT FILLED
CON 0 FIRST POT FILLED
CON 0 TERMINAL NUMBER (DIAL)
EUF SPACE 4,10
*** FUNCTION EUFF - ENTER MAGNET UDT ENTRY.
*
* ENTRY (IR+3) = OFFSET INTO KEYBOARD BUFFER.
EUF ENTRY ENTRY/EXIT
* CHECK MAGNET STATUS AND FIND UDT ENTRY.
LDC MTSI
RJM CSS CHECK MAGNET STATUS
LDK /1DS/DSDL+/1DS/KBCML GET REQUEST
CRD AB
LDD RA
SHN 6
ADC /MTX/UBUF GET UDT POINTERS
CRD T1
LDD T1+3 SET UDT ADDRESS
LPN 77
RAM UADA
LDD T1+4
STM UADA+1
EUF1 RJM UAD SET UDT ADDRESS
CRD T1
ADK /MTX/UST1 GET EST ORDINAL
CRD CM
ADK /MTX/UVRI-/MTX/UST1 GET EJT ORDINAL
CRD CN
LDD T1
SHN -13
LMN 1
ZJN EUF3 IF END OF UDT
LDD AB+1
LMD CM+2
ZJN EUF2 IF UDT ENTRY FOUND
AOM IMRA ADVANCE UDT ORDINAL
LMK /MTX/MUNIT
ZJN EUF3 IF BEYOND MAXIMUM UDT
LDK /MTX/UNITL ADVANCE UDT ADDRESS
RAM UADA+1
SHN -14
RAM UADA
UJN EUF1 CHECK NEXT UNIT
* DETERMINE IF REQUEST ALLOWED ON UNIT.
EUF2 LDD CM
SHN -1
LPN 1 ACS UNIT FLAG
RAM EUFA
LDM TMRF,AB SET TABLE ADDRESS FOR REQUEST
EUFA LPN 1
* LPN 2 (ACS UNIT)
EUF3 ZJN EUF5 IF REQUEST NOT ALLOWED ON UNIT
LDM TMRF,AB
SHN 21-2
PJN EUF3.1 IF UNASSIGNED UNIT NOT REQUIRED
LDD CN
NJN EUF5 IF UNIT ASSIGNED TO JOB
UJN EUF4 SET PROCESSOR ADDRESS
EUF3.1 LDD CN
ZJN EUF5 IF UNIT NOT ASSIGNED
LDD CN+4
SHN 21-0
PJN EUF5 IF NO PREVIEW DISPLAY MESSAGE
EUF4 LDM TMRP,AB SET PROCESSOR ADDRESS
STD T1
RJM 0,T1 CALL PROCESSOR
NJN EUF6 IF ERROR
RJM IMR ISSUE MAGNET REQUEST
UJN EUF7 RETURN
EUF5 LDN 1 SET INCORRECT EQUIPMENT ERROR
EUF6 RJM SRD SET RETURN STATUS
EUF7 LJM EUFX RETURN
TMRF SPACE 4,15
** TMRF - TABLE OF MAGNET REQUEST FLAGS.
*
* ENTRY FORMAT -
*
*T 9/0,1/U,1/A,1/N
*
* U UNASSIGNED UNIT REQUIRED.
* A REQUEST ALLOWED ON ACS UNITS.
* N REQUEST ALLOWED ON NON-ACS UNITS.
TMRF INDEX
INDEX /MTX/XEV,5 ENTER VSN
INDEX /MTX/XUU,7 UNLOAD UNIT
INDEX /MTX/XSV,5 ENTER SCRATCH VSN
INDEX /MTX/XRT,3 SET *RETRY* FLAG
INDEX /MTX/XUG,3 UNIT GO
INDEX /MTX/XUS,3 UNIT STOP
INDEX /MTX/XTR,3 SET *TERMINATE* FLAG
INDEX /MTX/XMU,6 ACS UNIT MOUNT
INDEX /MTX/XNV,3 SPECIFY NEXT VSN
INDEX /MTX/XRMX
TMRP SPACE 4,15
** TMRP - TABLE OF MAGNET REQUEST PROCESSORS.
TMRP INDEX
INDEX /MTX/XEV,CVR ENTER VSN
INDEX /MTX/XUU,CLC UNLOAD UNIT
INDEX /MTX/XSV,CLC ENTER SCRATCH VSN
INDEX /MTX/XRT,CLE SET *RETRY* FLAG
INDEX /MTX/XUG,CUG UNIT GO
INDEX /MTX/XUS,CUG UNIT STOP
INDEX /MTX/XTR,CLE SET *TERMINATE* FLAG
INDEX /MTX/XMU,CAM ACS UNIT MOUNT
INDEX /MTX/XNV,CNV SPECIFY NEXT VSN
INDEX /MTX/XRMX
TITLE IAF FUNCTION SUBROUTINES.
ITR SPACE 4,10
** ITR - ISSUE *TSEM* REQUEST.
*
* ENTRY (WARA - WARA+4) = FORMATTED *TSEM* REQUEST.
*
* EXIT (A) .EQ. 0, IF IAF UNAVAILABLE.
* .NE. 0, IF REQUEST SENT.
*
* USES T2, CM - CM+4.
*
* MACROS DELAY, MONITOR, CHKERR.
ITR3 LDN 0
ITR SUBR ENTRY/EXIT
ITR1 LDD MA ISSUE *TSEM* REQUEST
CWM WARA,ON
LDK ZERL
CRD CM
MONITOR TSEM
LDD CM+1
ZJN ITRX IF IAF UNAVAILABLE
LMC 7777
NJN ITRX IF REQUEST COMPLETE
LDC 7313 REISSUE REQUEST AFTER ONE HALF SECOND
STD T2
ITR2 DELAY
CHKERR
NJN ITR3 IF ERROR FLAG
SOD T2
ZJN ITR1 IF TIME TO REISSUE REQUEST
UJN ITR2 CONTINUE TO DELAY
SBT SPACE 4,15
** SBT - SET BUFFER AND TRANSFER DATA TO POTS.
*
* ENTRY (A) = NUMBER OF WORDS IN HEADER, INCLUDING THE FIRST
* TWO WORDS USED FOR QUEUE LINKAGE BY IAF.
*
* EXIT (A) = 0, IF POTS NOT AVAILABLE.
* (WARA+2 - WARA+3) = SET UP FOR *TSEM* REQUEST.
*
* USES T1, T2, T3.
*
* CALLS RPK, SPA, UPP.
*
* MACROS MONITOR.
SBT SUBR ENTRY/EXIT
STD T3 COMPUTE ADDRESS OF FIRST WORD AFTER HEADER
SHN 2
ADC BFMS
RAD T3
LDK ZERL PUT AN EOL IN THE FIRST WORD OF MESSAGE
CRM BFMS+5*2,ON
LDK 2R"EM" SET EXTENDED MODE AS FIRST BYTE OF HEADER
STI T3
LDK 2R"NL" SET NEW LINE AS SECOND BYTE
STM 1,T3
LDD T3
ADN 2
RJM RPK PACK MESSAGE AFTER HEADER
LDN 0 ENSURE MESSAGE TERMINATOR AFTER FIVE WORDS
STM 1+5*5,T3
SBT1 AOD T3 NEXT BYTE
LDI T3
NJN SBT1 IF NOT END OF MESSAGE
LDM -1,T3 CHECK PREVIOUS BYTE
LPN 77
NJN SBT2 IF NOT ZERO CHARACTER IN LAST BYTE
LDN 1R INSERT BLANK
RAM -1,T3
SBT2 LDC 2R"NL" ISSUE NEW LINE
STI T3
AOD T3
LDK 2R"EB" SET STOP BYTE
STI T3
AOD T3
STM SBTA
LDN ZERL
CRM *,ON INSURE END OF LINE
SBTA EQU *-1
LDN 5 ADVANCE BEYOND EOL
RAD T3
LDN 0 SET CM WORD COUNT
STD T2
LDC -BFMS
RAD T3
SBT3 AOD T2
LCN 5
RAD T3
PJN SBT3 IF NOT START OF MESSAGE
LDN /REM/VCPC
STD T3
LDK ZERL CALCULATE HOW MANY POTS ARE NEEDED
CRD CM
LDD T2
ADK /REM/VCPC-1 ROUND UP TO THE NEAREST POT
SHN -3
STD CM+1
MONITOR TGPM
LDC BFMS INITIALIZE BUFFER ADDRESS
STM SBTB
LDD CM+1
ZJN SBT5 IF IAF UNAVAILABLE
LMC 7777
ZJN SBT5 IF POT QUEUE IN IAF CURRENTLY EMPTY
LMC 7777
STD PP
STM WARA+3
SBT4 STM WARA+2
RJM SPA SET POT ADDRESS
CWM *,T3
SBTB EQU *-1
LCN /REM/VCPC
RAD T2
SBN 1
MJN SBT5 IF TRANSFER COMPLETE
LDN /REM/VCPC*5
RAM SBTB
RJM UPP UPDATE TO NEXT POT
NJN SBT4 IF MORE POTS IN CHAIN
LDN 1
SBT5 LJM SBTX EXIT
TITLE MAGNET FUNCTION SUBROUTINES.
CAM SPACE 4,15
** CAM - CHECK ACS MOUNT REQUEST.
*
* EXIT (A) = 0 IF MOUNT CAN BE PROCESSED.
* (A) = 1 IF UNIT STATUS PROHIBITS MOUNT.
* (A) = 2 IF VSN ACTIVITY PROHIBITS MOUNT.
*
* USES CM - CM+4.
*
* CALLS FAV, UAD.
*
* MACROS SFA.
CAM2 LDN 1 SET EQUIPMENT ERROR
CAM SUBR ENTRY/EXIT
SFA EST,AB+1 GET EQUIPMENT STATUS
ADK EQDE
CRD CM
LDD CM
LPN 3
LMN DWES
ZJN CAM2 IF UNIT DOWN
LDD CM+1
SHN -11
LMN 4
ZJN CAM1 IF UNIT ACCESSIBLE ON PRIMARY CHANNEL
LDD CM+2
SHN -11
LMN 4
NJN CAM2 IF NO ACCESS ON SECONDARY CHANNEL
CAM1 RJM UAD SET UDT ADDRESS
ADK /MTX/UMST GET MOUNT STATUS
CRD CM
LDD CM+4
LPN 7
NJN CAMX IF NOT DISMOUNTED OR CONTROL PATH ERROR
RJM FAV FIND ACS VSN
UJN CAMX RETURN WITH STATUS
CLE SPACE 4,10
** CLE - CHECK LOAD POINT ERROR.
*
* EXIT (A) = 0 IF LOAD POINT ERROR OPERATOR PROMPT PRESENT.
* (A) = 1 IF NO LOAD POINT ERROR OPERATOR PROMPT.
*
* CALLS GMC.
CLE SUBR ENTRY/EXIT
RJM GMC GET MESSAGE CODE
LMN /RSX/TCF
ZJN CLEX IF LOAD POINT ERROR
LMN /RSX/BFR&/RSX/TCF
ZJN CLEX IF LOAD POINT ERROR
LMN /RSX/BFW&/RSX/BFR
ZJN CLEX IF LOAD POINT ERROR
LDN 1 SET EQUIPMENT ERROR
UJN CLEX RETURN
CLC SPACE 4,10
** CLC - CHECK INITIAL LABEL CHECK COMPLETE.
*
* EXIT (A) = 0 IF INITIAL LABEL CHECK COMPLETE.
* (A) = 1 IF INITIAL LABEL CHECK NOT COMPLETE.
* (CM - CM+4) = *UVSN*.
*
* USES CM - CM+4.
*
* CALLS UAD.
CLC1 LDN 1 SET EQUIPMENT ERROR
CLC SUBR ENTRY/EXIT
RJM UAD SET UDT ADDRESS
ADK /MTX/UVSN GET LABEL CHECK STATUS
CRD CM
LDD CM
ADD CM+1
ADD CM+2
ZJN CLC1 IF LABELS NOT CHECKED
LDD CM+3
SHN -13 CHECK FOR LABEL CHECK IN PROGRESS
UJN CLCX RETURN WITH STATUS
CNV SPACE 4,10
** CNV - CHECK *NEXTVSN* COMMAND REQUEST.
*
* EXIT (A) = 0 IF NO ERROR.
* (A) = 1 IF ERROR.
*
* CALLS GMC.
CNV SUBR ENTRY/EXIT
RJM GMC GET MESSAGE CODE
LMN /RSX/NTV
ZJN CNVX IF NEXT VSN PROMPT
LDN 1 SET EUIPMENT ERROR
UJN CNVX RETURN
CUG SPACE 4,10
** CUG - CHECK FOR TMS UNIT GO PROMPT.
*
* EXIT (A) = 0 IF UNIT GO PROMPT.
* (A) = 1 IF NO UNIT GO PROMPT.
*
* CALLS GMC.
CUG SUBR ENTRY EXIT
RJM GMC GET MESSAGE CODE
LMN /RSX/NLG
ZJN CUGX IF UNIT GO PROMPT
LMN /RSX/CAG&/RSX/NLG
ZJN CUGX IF UNIT GO PROMPT
LMN /RSX/WVG&/RSX/CAG
ZJN CUGX IF UNIT GO PROMPT
LDN 1 SET EQUIPMENT ERROR
UJN CUGX RETURN
CVR SPACE 4,10
** CVR - CHECK ENTER VSN REQUEST.
*
* EXIT (A) = 0 IF NO ERROR.
* (A) = 1 IF ERROR.
*
* CALLS CLC.
CVR SUBR ENTRY/EXIT
RJM CLC CHECK LABEL CHECK COMPLETE
NJN CVRX IF LABELS NOT CHECKED
LDD AB+2
ADD AB+3
ADD AB+4
ZJN CVRX IF CLEARING VSN
LDD CM+3
LPN 4
LMN 4
ZJN CVRX IF UNLABELED TAPE
LDN 1 SET EQUIPMENT ERROR
UJN CVRX RETURN
CVS SPACE 4,10
** CVS - COMPARE VSN-S.
*
* ENTRY (AB+2 - AB+4) = REQUESTED VSN.
* (CM - CM+2) = VSN TO COMPARE.
*
* EXIT (A) = 0 IF VSN-S MATCH.
* (A) .NE. 0 IF VSN-S DO NOT MATCH.
CVS SUBR ENTRY/EXIT
LDD CM
LMD AB+2
NJN CVSX IF NO MATCH
LDD CM+1
LMD AB+3
NJN CVSX IF NO MATCH
LDD CM+2
LMD AB+4
UJN CVSX RETURN WITH STATUS
FAV SPACE 4,10
** FAV - FIND ACS VSN.
*
* EXIT (A) = 0 IF VSN NOT FOUND IN UDT OR VSN ERROR TABLE.
* (A) = 2 IF VSN FOUND IN UDT OR VSN ERROR TABLE.
*
* USES CM - CM+4, CN - CN+4, T1 - T1+4.
*
* CALLS CVS.
FAV SUBR ENTRY/EXIT
* CHECK UDT.
LDD RA
SHN 6
ADK /MTX/UBUF GET UDT POINTERS
CRD T1
LDN 0 INITIALIZE UDT ORDINAL
STD T1
FAV1 LDD T4
SHN 6
ADD RA
SHN 6
ADD T5
CRD CN
ADK /MTX/UMST
CRD CM
LDD CN
SHN 21-13
MJN FAV2 IF END OF UDT
RJM CVS COMPARE VSN-S
ZJN FAV4 IF VSN FOUND
LDK /MTX/UNITL ADVANCE UDT ADDRESS
RAD T5
SHN -14
RAD T4
AOD T1
LMN /MTX/MUNIT
ZJN FAV4 IF BEYOND MAXIMUM UDT
UJN FAV1 CHECK NEXT UNIT
* CHECK VSN ERROR TABLE.
FAV2 LDN 0 INITIALIZE ERROR TABLE INDEX
STD T1
FAV3 LDD RA SET ERROR TABLE ADDRESS
SHN 6
ADK /MTX/VET
ADD T1
CRD CM GET ERROR TABLE ENTRY
LDD CM
ZJN FAV5 IF END OF ENTRIES
RJM CVS COMPARE VSN-S
ZJN FAV4 IF VSN FOUND
AOD T1 ADVANCE ENTRY INDEX
LMK /MTX/VETL
NJN FAV3 IF NOT BEYOND MAXIMUM ENTRY
* RETURN STATUS.
FAV4 LDN 2 SET VSN ERROR
FAV5 LJM FAVX RETURN
GMC SPACE 4,10
** GMC - GET PREVIEW DISPLAY MESSAGE CODE.
*
* EXIT (A) = PREVIEW DISPLAY MESSAGE CODE.
*
* USES CM - CM+4.
*
* CALLS UAD.
GMC SUBR ENTRY/EXIT
RJM UAD SET UDT ADDRESS
ADK /MTX/UISN GET PREVIEW DISPLAY MESSAGE CODE
CRD CM
LDD CM+3
LPN 77 SET MESSAGE CODE
UJN GMCX RETURN
IMR SPACE 4,10
** IMR - ISSUE MAGNET EXTERNAL REQUEST.
*
* USES AB+1, T1, CM+1 - CM+4.
*
* MACROS DELAY, MONITOR, PAUSE.
IMR SUBR ENTRY/EXIT
LDC 0 SET UDT ORDINAL
IMRA EQU *-1 (UDT ORDINAL)
STD AB+1
LDD MA SET REQUEST
CWD AB
LDC 250D SET 1 SECOND RETRY LIMIT
STD T1
IMR1 LDN 1 SET WRITE FLAG
STD CM+1
LCN 7777-MTSI SET SUBSYSTEM ID
STD CM+2
LDD HN SET WORD COUNT
STD CM+3
LDN /MTX/XREQ SET WRITE ADDRESS
STD CM+4
MONITOR TDAM
LDD CM+1
ZJN IMRX IF TRANSFER COMPLETE
SBN 4
ZJN IMRX IF *MAGNET* NOT ACTIVE
SOD T1
ZJN IMRX IF MAXIMUM RETRIES
PAUSE ST
DELAY 40 DELAY 4 MILLISECONDS
UJN IMR1 RETRY FUNCTION
UAD SPACE 4,10
** UAD - SET UDT ADDRESS.
*
* EXIT (A) = ABSOLUTE UDT ADDRESS.
UAD SUBR ENTRY/EXIT
LDD RA
SHN 6
UADA ADC 0 SET UDT ADDRESS
UJN UADX RETURN
SPACE 4,10
** COMMON DECKS.
*CALL COMPSPA
*CALL COMPUPP
*CALL COMPGTN
OVERFLOW OVLA,/OVERLAY/BUFB
OVERLAY (MULTILEVEL SECURITY FUNCTIONS.)
SAM SPACE 4,10
*** FUNCTION SAMF - SEND ACCOUNT FILE MESSAGE.
*
* ENTRY (IR+3) = 2/T, 4/, 3/LA, 3/UA.
* T = 0, IF *MSOT* MESSAGE.
* = 1, IF *MSLK* MESSAGE.
* = 2, IF *MSEQ* MESSAGE.
* = 3, IF *MSUL* MESSAGE.
* LA = NEW LOWER ACCESS LEVEL LIMIT.
* UA = NEW UPPER ACCESS LEVEL LIMIT.
* (IR+4) = 12/ORD.
* ORD = EST ORDINAL, IF *MSEQ* MESSAGE.
* = ORIGIN TYPE ORDINAL, IF *MSOT* MESSAGE.
SAM ENTRY ENTRY/EXIT
LDD IR+3
SHN 21-12
PJN SAM2 IF NOT *MSLK* OR *MSUL* MESSAGE
LPN 1
ZJN SAM1 IF *MSLK*
LDC 2RUL&2RLK
SAM1 LMC 2RLK
STM SAMA+1 CHANGE ACCOUNT FILE MESSAGE
LDC 2R. APPEND PERIOD
STM SAMA+2
LJM SAM6 ISSUE MESSAGE
SAM2 LPN 1
ZJN SAM3 IF *MSOT* MESSAGE
LDD IR+4 CONVERT EST ORDINAL TO DISPLAY CODE
SHN -3
RJM C2D
STM SAMA+3
LDD IR+4
LPN 7
ADN 1R0
SHN 6
STM SAMC TEMPORARILY SAVE DISPLAY-CODED ORDINAL
LDC SAMB FWA OF MESSAGE BUFFER
STD T1
LDC SAMC ADDRESS OF EST ORDINAL
RJM ACS
UJN SAM4 APPEND COMMA
SAM3 LDC 2ROT CHANGE ACCOUNT FILE MESSAGE
STM SAMA+1
LDM TJOT,IR+4 SAVE ORIGIN TYPE
STM SAMA+3
LDC SAMB FWA OF MESSAGE BUFFER
STD T1
SAM4 LDC =C*, *
RJM ACS APPEND COMMA
LDD IR+3 DETERMINE MNEMONIC OF LOWER ACCESS LEVEL
SHN -3
LPN 7
SHN 2
ADC TALV APPEND NEW LOWER ACCESS LEVEL LIMIT
RJM ACS
LDC =C*, * APPEND COMMA
RJM ACS
LDD IR+3 DETERMINE MNEMONIC OF UPPER ACCESS LEVEL
LPN 7
SHN 2
ADC TALV APPEND NEW UPPER ACCESS LEVEL LIMIT
RJM ACS
LDC =C*. * TERMINATE MESSAGE WITH A PERIOD
RJM ACS
SAM6 LDC ACFN+SAMA ISSUE ACCOUNT FILE MESSAGE
RJM DFM
LJM SAMX RETURN
SAMA DATA C*MSEQ, *
SAMB BSSZ 13
SAMC BSS 1 TEMPORARY STORAGE LOCATION
TJOT SPACE 4,10
* TJOT - TABLE OF JOB ORIGIN TYPES.
TJOT DATA H+"NMOT"+
VSA SPACE 4,10
*** FUNCTION VSAF - VALIDATE SECURITY-UNLOCK ACCESS.
*
* ENTRY (IR+4) = BUFFER OFFSET.
VSA ENTRY ENTRY/EXIT
LDN /1DS/KBCML READ KEYBOARD BUFFER
STD BA
LDC /1DS/DSDL
CRM VSAA,BA
LDD IR+4 SET POINTER TO BUFFER
ADC VSAA
STD BA
RJM ASN EXTRACT USERNAME
LDC VSAB+3 SET POINTER TO ACCOUNT FILE MESSAGE
STD T1
LDN AB APPEND USERNAME TO ACCOUNT FILE MESSAGE
RJM ACS
LDC =C*. * TERMINATE MESSAGE WITH A PERIOD
RJM ACS
AOD BA SKIP SEPARATOR
LDN ZERL FORCE SYSTEM DEFAULT FAMILY
CRD CN
LDC 1R0*100
STD CN
EXECUTE 0AV,L0AV GET USER VALIDATION INFORMATION
LDD T1 CHECK FOR USER INDEX
ADD T2
ZJN VSA2 IF USER NOT VALID
RJM ASN EXTRACT PASSWORD
LDD MA SET PARAMETER FOR *RDCM* CALL
CWD AB
LDN REPS ENCRYPT SUPPLIED PASSWORD
STD CM+1
MONITOR RDCM
LDD MA
CRD AB
LDD AB COMPARE ENCRYPTED PASSWORDS
LMM APSW*5,T3
NJN VSA2 IF NO MATCH
LDD AB+1
LMM APSW*5+1,T3
NJN VSA2 IF NO MATCH
LDD AB+2
LMM APSW*5+2,T3
NJN VSA2 IF NO MATCH
LDD AB+3
LMM APSW*5+3,T3
SCN 77
ZJN VSA3 IF MATCH
VSA2 LDC 2RSI CONVERT ACCOUNT FILE MESSAGE
STM VSAB+1
LDN 1 ERROR CONDITION
RJM SRD SAVE RESPONSE TO *DSD*
VSA2.1 LDC ACFN+VSAB ISSUE ACCOUNT FILE MESSAGE
RJM DFM
LJM VSAX RETURN ERROR
* CHECK FOR SECURITY ADMINISTRATOR PRIVILEGES.
VSA3 LDM ASVW*5,T3
SHN 21-13
PJN VSA2 IF NOT SECURITY ADMINISTRATOR
LDN SSTL SET SECURITY UNLOCK
CRD AB
LDD AB
LPC 6377
LMC 1400
STD AB
LDN SSTL
CWD AB
UJN VSA2.1 ISSUE ACCOUNT FILE MESSAGE
VSAA BSSZ /1DS/KBCML*5 KEYBOARD BUFFER
VSAB DATA C*MSSA, *
VSAC BSSZ 5
SPACE 4,10
** ASN - ASSEMBLE NAME.
*
* ENTRY (BA) = CHARACTER ADDRESS.
*
* EXIT (AB - AB+4) = ASSEMBLED NAME LEFT JUSTIFIED WITH
* ZERO FILL.
* (CA) ADVANCED TO SEPARATOR CHARACTER.
*
* USES T1, BA, AB - AB+4.
ASN SUBR ENTRY/EXIT
LDN ZERL CLEAR ASSEMBLY BUFFER
CRD AB
LDN AB SET BYTE ADDRESS
STD T1
ASN1 LDI BA CHECK CHARACTER
ZJN ASNX IF END OF STRING
SBN 1R9+1
PJN ASNX IF SEPARATOR
ADN 1R9+1 STORE UPPER
SHN 6
STI T1
AOD BA ADVANCE CHARACTER
LDI BA CHECK CHARACTER
ZJN ASNX IF END OF STRING
SBN 1R9+1
PJN ASNX IF SEPARATOR
ADN 1R9+1 STORE LOWER
RAI T1
AOD BA ADVANCE CHARACTER
AOD T1 ADVANCE BYTE
LMN AB+5
NJN ASN1 IF NOT 5 BYTES
UJN ASNX RETURN
SPACE 4,10
* COMMON DECKS.
QUAL
VAL$ EQU 1 DEFINE ACCESS LEVEL TABLE
*CALL COMPVLC
QUAL *
USE LITERALS
L0AV EQU *+5 LOAD ADDRESS FOR *0AV*
ERRNG BFMS-L0AV-ZAVL *0AV* OVERFLOW
OVERFLOW OVLA,/OVERLAY/BUFB
ERRNG L0AV-* CODE OVERFLOWS INTO *0AV*
OVERLAY (*SERVICE* COMMAND PROCESSOR.)
SER SPACE 4,10
*** FUNCTION SERF - PROCESS *SERVICE* COMMAND.
*
* ENTRY (IR+4) = OFFSET IN KEYBOARD BUFFER TO START OF
* COMMAND PARAMETERS.
* (IR+3) = SERVICE CLASS.
SER ENTRY ENTRY/EXIT
LDN CSAT-SVJT
STD SR+2 SET LENGTH OF SERVICE CONTROL BLOCK
SFA JCB,IR+3 GET JOB CONTROL BLOCK
ADN SVJT
CRM SERF,SR+2
SBD SR+2 SAVE FWA OF WORDS READ
STD T7
SHN -14
STD T6
LDN /1DS/KBCML GET CONTENTS OF KEYBOARD BUFFER
STD T1
LDC /1DS/DSDL
CRM CBUF,T1
LDD IR+4 GET ADDRESS OF COMMAND
ADK CBUF+2 SKIP SERVICE CLASS
STD CA
* PROCESS NEXT PARAMETER.
SER1 AOD CA SKIP SEPARATOR
LDC TSVP SEARCH PARAMETER TABLE
RJM SPT
MJN SER2 IF NOT FOUND
STD SR+1
SBN TSVPE-TSVP
NJN SER3 IF NOT *DT* PARAMETER
* PROCESS *DT* PARAMETER.
LDC TNSC SEARCH FOR VALID SERVICE CLASS
RJM SPT
MJN SER2 IF NOT FOUND
STD AB+4
LMN SSSC
ZJN SER2 IF SUBSYSTEM SERVICE CLASS
LMN DSSC&SSSC
NJN SER5 IF NOT DEADSTART SERVICE CLASS
SER2 LDN 1
LJM SER18 RETURN ERROR STATUS TO *DSD*
SER3 RJM ASD ASSEMBLE DIGITS
SER5 LDM SERE,SR+1 SET PROCESSOR ADDRESS
STD T5
LJM 0,T5 EXIT TO PROCESSOR
* PROCESS *PR* PARAMETER.
SER6 LDD AB+4
SBN 2
MJN SER2 IF PRIORITY .LT. 2
SBN 100-2
PJN SER2 IF PRIORITY .GE. 100B
AOM SERG SET TO ISSUE *SCTM* FUNCTION
LJM SER14 VALIDATE ASSEMBLY
* PROCESS INDEX ENTRY.
SER7 LDD SR+1 SET FIELD POSITION
SBN TSVPD-TSVP
STD T2 MULTIPLY BY 3
SHN 1
ADD T2 SET SHIFT INSTRUCTION
LMD TH
ERRNZ SHNI-1000 CODE DEPENDS ON VALUE
STM SERA
STM SERB
LCN 7 SET MASK FIELD
SERA SHN **
* SHN 11 (DS)
* SHN 6 (FC)
* SHN 3 (CS)
* SHN 0 (FS)
STM SERC
LDD AB+4 SET NEW INDEX VALUE
SBN 10
PJN SER9 IF INVALID INDEX
ADN 10
SERB SHN **
* SHN 11 (DS)
* SHN 6 (FC)
* SHN 3 (CS)
* SHN 0 (FS)
STD CM
LDN TSVPD-TSVP SET SERVICE BLOCK INDEX
STD SR+1
LDM SERF,SR+1 INSERT INDEX VALUE IN EXISTING BYTE
LPC **
SERC EQU *-1
* LPC 0777 (DS)
* LPC 7077 (FC)
* LPC 7707 (CS)
* LPC 7770 (FS)
LMD CM
STD AB+4
UJN SER14 CHECK VALUE RANGE
* PROCESS *RS* PARAMETER.
SER8 LDM SERF+CSJT*5-SVJT*5+4 EXISTING *US* VALUE
SBD AB+4 SPECIFIED *RS* VALUE
UJN SER8.2 ENSURE *RS* .LE. *US*
* PROCESS *US* PARAMETER.
SER8.1 LDD AB+4 SPECIFIED *US* VALUE
SBM SERF+CSJT*5-SVJT*5+3 EXISTING *RS* VALUE
SER8.2 MJN SER9 IF *RS* .GT. *US*
LDD AB+4
ZJN SER9 IF NOT VALID PARAMETER
* PROCESS *IT* AND *SE* PARAMETERS.
SER8.3 AOM SERG FORCE *SCTM*/*CCSS* MONITOR FUNCTION
UJN SER14 CHECK VALUE RANGE
* RETURN ERROR STATUS.
SER9 LDN 1
LJM SER18 RETURN ERROR STATUS TO *DSD*
SER10 LDD AB+3 ALLOW *AM* UP TO 77777
STM SERF-1,SR+1
SCN 7
UJN SER15 CHECK VALUE RANGE
SER13 AOM SERD FLAG *NJ* PARAMETER
* CHECK VALUE RANGE.
SER14 LDD AB+3 CHECK ASSEMBLY
SER15 ADD AB+2
ADD AB+1
ADD AB
NJN SER9 IF VALUE TOO LARGE
* STORE VALUE.
SER16 LDD AB+4 SET VALUE IN SERVICE CONTROL BLOCK
STM SERF,SR+1
LDI CA CHECK SEPARATOR
LMN 1R,
ZJP SER1 IF NOT END OF PARAMETERS
LMN 1R.&1R,
NJN SER9 IF INCORRECT TERMINATION
LDD T6
SHN 14
LMD T7 STORE SERVICE CONTROL BLOCK
CWM SERF,SR+2
SERD LDN 0
ZJN SER17 IF NO *NJ* PARAMETER
LDN ZERL
CRD CM
LDN /EVENT/SCFE ISSUE JOB LIMIT CHANGED EVENT
STD CM+4
MONITOR EATM
SER17 LDN 0
SERG EQU *-1
ZJN SER18 IF NO *SCTM* UPDATE REQUIRED
LDN ZERL
CRD CM
LDN CCSS CONVERT CPU SCHEDULING PARAMETERS
STD CM+1
LDD IR+3 SET SERVICE CLASS
STD CM+4
MONITOR SCTM SET SYSTEM CONTROL PARAMETERS
* LDN 0 RETURN NO ERROR TO *DSD*
SER18 RJM SRD
LJM SERX RETURN
SERE BSS 0 SERVICE COMMAND PROCESSORS
CON SER9 UNUSED
CON SER14 *CT* PARAMETER
CON SER14 *CM* PARAMETER
CON SER13 *NJ* PARAMETER
CON SER14 *TD* PARAMETER
CON SER14 *CP* PARAMETER
CON SER14 *TP* PARAMETER
CON SER14 *FL* PARAMETER
CON SER9 UNUSED
CON SER10 *AM* PARAMETER
CON SER9 UNUSED
CON SER9 UNUSED
CON SER14 *EC* PARAMETER
CON SER9 UNUSED
CON SER14 *EM* PARAMETER
CON SER7 *FS* PARAMETER
CON SER7 *CS* PARAMETER
CON SER7 *FC* PARAMETER
CON SER7 *DS* PARAMETER
CON SER16 *DT* PARAMETER
CON SER6 *PR* PARAMETER
CON SER8.3 *IT* PARAMETER
CON SER8.3 *SE* PARAMETER
CON SER8 *RS* PARAMETER
CON SER8.1 *US* PARAMETER
SERF VFD 60/0 *SVJT*
VFD 60/0 *MCMT*
VFD 60/0 *MECT*
VFD 60/0 *PFCT*
VFD 60/0 *CSJT*
TNSC SPACE 4,10
** TNSC - TABLE OF SERVICE CLASSES.
TNSC DATA H+"NMSC"+
CON 0 END OF TABLE
TSVP SPACE 4,10
** TSVP - TABLE OF SERVICE PARAMETERS.
*
*T 12/ NAME
*
* NAME = TWO-CHARACTER MNEMONIC.
*
* THE TABLE IS INDEXED BY BYTE NUMBER, RELATIVE TO
* JOB CONTROL BLOCK WORD *SVJT*. HOWEVER, THE
* TABLE ENTRIES FOR WORD *PFCT* ARE IN ORDER
* BY 3-BIT FIELD. SEE COMMENTS ON THE *PFCT*
* TABLE ENTRIES.
TSVP BSS 0
* *SVJT*.
CON 6060
CON 2RCT CONTROL POINT TIME SLICE
CON 2RCM CENTRAL MEMORY TIME SLICE
CON 2RNJ NUMBER OF JOBS
CON 2RTD TIME OUT DELAY (SUSPENDED JOBS)
* *MCMT*.
CON 2RCP CONTROL POINT SLICE PRIORITY
CON 2RTP BASE PRIORITY FOR INTERACTIVE JOBS
CON 2RFL MAXIMUM FIELD LENGTH PER JOB
CON 6060
CON 2RAM MAXIMUM MEMORY AVAILABLE FOR ALL JOBS
* *MECT*.
CON 6060
CON 6060
CON 2REC MAXIMUM EXTENDED MEMORY PER JOB
CON 6060
CON 2REM MAXIMUM EXTENDED MEMORY FOR ALL JOBS
* *PFCT*.
TSVPD CON 2RFS INDIVIDUAL INDIRECT ACCESS FILE SIZE
CON 2RCS CUMULATIVE INDIRECT ACCESS FILE SIZE
CON 2RFC NUMBER OF FILES IN CATALOG
CON 2RDS INDIVIDUAL DIRECT ACCESS FILE SIZE
TSVPE CON 2RDT SERVICE CLASS TO ASSIGN ON A DETACH
* *CSJT*.
CON 2RPR CPU PRIORITY
CON 2RIT SYSTEM I/O CPU THRESHOLD (MILLISECONDS)
CON 2RSE CPU SLICE EXTENSION (MILLISECONDS)
CON 2RRS CPU RECALL SLICE (MILLISECONDS)
CON 2RUS UNEXTENDED CPU SLICE (MILLISECONDS)
CON 0
ASD SPACE 4,15
** ASD - ASSEMBLE DIGITS.
*
* ENTRY (CA) = ADDRESS OF NEXT CHARACTER.
*
* EXIT (A) = NON OCTAL DIGIT IN STRING.
* (CA) UPDATED.
* (AB - AB+4) = DIGITS ASSEMBLED, RIGHT-JUSTIFIED.
*
* USES T1, T2, T3, AB - AB+4.
ASD SUBR ENTRY/EXIT
LDN ZERL CLEAR ASSEMBLY
CRD AB
ASD1 LDI CA CHECK CHARACTER
SBN 1R0
MJN ASD2 IF ALPHA
SBN 10
MJN ASD3 IF OCTAL DIGIT
SBN 1R -1R8
ZJN ASD5 IF * *
ASD2 LDI CA GET CHARACTER
UJN ASDX RETURN
ASD3 ADN 10 SET NEW DIGIT
STD T2
LDN AB+4 SET BYTE ADDRESS
STD T3
ASD4 LDI T3 BYTE * 10
SHN 3
ADD T2 ADD NEW DIGIT
STI T3
SHN -14 NEW DIGIT = OVERFLOW
STD T2
SOD T3 DECREMENT BYTE ADDRESS
LMN AB-1
NJN ASD4 IF NOT 5 BYTES
ASD5 AOD CA ADVANCE CHARACTER
UJN ASD1 LOOP
SPT SPACE 4,10
** SPT - SEARCH PARAMETER TABLE.
*
* ENTRY (A) = FWA OF PARAMETER TABLE.
* (CA) = CHARACTER ADDRESS.
*
* EXIT (A) = INDEX OF ENTRY FOUND.
* (A) .LT. 0, IF NOT FOUND.
* (T5) = ADDRESS OF TABLE ENTRY FOUND.
* (CA) = CHARACTER ADDRESS ADVANCED.
*
* USES T1, T3, T5.
SPT2 LDN 2 ADVANCE CHARACTER ADDRESS
RAD CA
LDD T5 SET INDEX OF ENTRY
SBD T3
SPT SUBR ENTRY/EXIT
STD T3
STD T5
LDI CA ASSEMBLE PARAMETER NAME
SHN 6
LMM 1,CA
STD T1
LDI T5
SPT1 LMD T1
ZJN SPT2 IF MATCH FOUND
AOD T5
LDI T5
NJN SPT1 IF NOT END OF TABLE
LCN 0 FLAG ENTRY NOT FOUND
UJP SPTX RETURN
SPACE 4,10
* BUFFERS.
CBUF BSS /1DS/KBCML*5 KEYBOARD BUFFER
SPACE 4,10
OVERFLOW OVLA,/OVERLAY/BUFB
OVERLAY (*BIO* FUNCTIONS.)
EBR SPACE 4,10
*** FUNCTION EBRF - ENTER *BIO* BUFFER POINT REQUEST.
*
* ENTRY (CP) = *BIO* CONTROL POINT ADDRESS.
* (IR+4) = 6/KEYBOARD BUFFER OFFSET, 6/.
* (PARAMETER) = 12/,12/PR,6/,6/PA,12/EST ORD,12/FUNC.
* PR = PRIORITY.
* PA = PARAMETER.
* FUNC = *BIO* REQUEST FUNCTION.
* IF REQUEST FUNCTION = *REPM* (*REPEAT* COMMAND)
* (PARAMETER) = 12/J1,12/PR,6/,6/PA,12/J2,12/FUNC.
* J1 = FIRST TWO CHARACTERS OF JSN.
* J2 = LAST TWO CHARACTERS OF JSN.
EBR ENTRY ENTRY/EXIT
LDC BISI CHECK IF *BIO* IS ACTIVE
RJM CSS
LDN TAEQL/5 READ AVAILABLE EQUIPMENT TABLE
STD T1
LDD RA
SHN 6
ADK /BIO/TEQR
CRM TAEQ,T1
LDC /1DS/DSDL+/1DS/KBCML READ SPECIAL PARAMETER WORD
CRD AB
LDD AB+4
LMN /BIO/REPM
NJN EBR0 IF NOT *REPEAT*
LCN 2
RAM EBRB
LDC NJNI+EBR2-EBRC
ERRNG EBRC-EBR2+37 INCORRECT JUMP INSTRUCTION
STM EBRC
EBR0 LDC /BIO/BFCW SET ADDRESS OF FIRST BUFFER POINT
STD T7
STD T1
SBN /BIO/BFCWL SET END OF BUFFER POINTS
STD T6
EBR1 NFA T7,R READ BUFFER POINT WORD
CRD CM
LDD CM
ZJN EBR2 IF BUFFER POINT INACTIVE
EBRB LDD CM+3 CHECK EST ORDINAL
* LDD CM+1 (*REPEAT*)
LMD AB+3
EBRC UJN EBR1.1 CHECK EST
* NJN EBR2 (IF *REPEAT* AND JSN DOES NOT MATCH)
LDD CM
LMD AB
EBR1.1 ZJN EBR5 IF SPECIFIED EQUIPMENT FOUND
EBR2 LCN 2 ADVANCE BUFFER POINT ADDRESS
RAD T7
LMD T6
NJN EBR1 IF NOT END OF BUFFER POINTS
EBR3 LDN 1 SET ERROR
EBR4 RJM SRD
UJP EBRX RETURN
EBR5 LDD CM+4
LPN 77
ZJN EBR6 IF LAST COMMAND PROCESSED
LDN 2 SET *BIO BUSY*
UJN EBR4 SAVE RESPONSE TO *DSD*
EBR6 LDD T1 SET EQUIPMENT INDEX
SBD T7
SHN -1
STD T1
LDM TAEQ+1,T1 SET DEVICE TYPE
LPN 7
LMC -0
RAM EBRA
LDM TBDF,AB+4 CHECK IF COMMAND ALLOWED FOR DEVICE
EBRA SHN 21-0
* SHN 21-XX
PJN EBR3 IF COMMAND NOT ALLOWED FOR THIS DEVICE
LDD AB+2 MERGE PARAMETER AND REQUEST
SHN 6
LMD AB+4
STD CM+4
LDD AB+1 SET PRIORITY VALUE
STD CM+2
NFA T7,R STORE BUFFER POINT REQUEST
CWD CM
LDN 0 SET NO ERROR
UJP EBR4 SAVE REPSONSE TO *DSD*
TBDF SPACE 4,10
** TBDF - TABLE OF *BIO* DEVICE FUNCTIONS.
*
* INDEXED BY *BIO* REQUEST FUNCTION.
TBDF BIODF
BIODF ENDM,(LPDT,NPDT,CPDT,CRDT) END
BIODF REPM,(LPDT,NPDT,CPDT) REPEAT
BIODF SUPM,(LPDT) SUPPRESS
BIODF RRNM,(LPDT,NPDT,CPDT) REPRINT/REPUNCH
BIODF HLDM,(LPDT,NPDT) STOP (HOLD)
BIODF CNTM,(LPDT,NPDT) CONTINUE
BIODF BKPO,(LPDT) BACKSPACE PRUS
BIODF BKRO,(LPDT) BACKSPACE RECORDS
BIODF BKFO,(LPDT) BACKSPACE FILES
BIODF SKPO,(LPDT) SKIP PRUS
BIODF SKRO,(LPDT) SKIP RECORDS
BIODF SKFO,(LPDT) SKIP FILES
BIODF FPRE
TAEQ SPACE 4,10
** TAEQ - TABLE OF AVAILABLE EQUIPMENTS.
TAEQ BSS 0
TAEQL EQU /BIO/CTIR*5-/BIO/TEQR*5
SPACE 4,10
OVERFLOW OVLA,/OVERLAY/BUFB-TAEQL
OVERLAY (IDLEDOWN PROCESSING.)
IDD SPACE 4,10
*** FUNCTION IDLF - IDLEDOWN SUBSYSTEMS.
*
* ENTRY (IR+4) = EJT ORDINAL.
IDD ENTRY ENTRY/EXIT
IDD1 SFA EJT,IR+4 INTERLOCK EJT ENTRY
STD CM+4
SHN -14
STD CM+3
LDN 41
STD CM+1
LDD MA
CWM IDDA,ON
MONITOR UTEM
LDD CM+1
ZJN IDD2 IF INTERLOCK SET
LMN 3
ZJN IDDX IF EJT NOT IN USE
DELAY
UJN IDD1 LOOP ON INTERLOCK
IDD2 SFA EJT,IR+4
ADK JSNE
CRD CM
ADK SCHE-JSNE
CRD CN
LDD CM+4
LMK EXJS*2
LPN 76
ZJN IDD4 IF JOB AT CONTROL POINT
LDD CM SET JSN
STD CM+3
LDD CM+1
STD CM+4
LDD IR+4 SET ERROR FLAG IN EJT
STD CM+2
LDK IDET+4000
STD CM+1
MONITOR CEFM
IDD3 SFA EJT,IR+4 CLEAR THE EJT INTERLOCK
STD CM+4
SHN -14
STD CM+3
LDN 40
STD CM+1
MONITOR UTEM
LJM IDDX RETURN
IDD4 LDD CN+3 MOVE TO JOB-S CONTROL POINT
STD CM+1
MONITOR CCAM
LDD CM+1
ZJN IDD5 IF CHANGE MADE
DELAY
UJN IDD4 RETRY CP CHANGE
IDD5 RJM IDL SET IDLEDOWN CONTROL FLAGS
LJM IDD3 CLEAR THE EJT INTERLOCK
IDDA VFD 6/40,6/1,6/6,42/0 VERIFY JOB ADVANCE NOT SET
IDL SPACE 4,15
** IDL - IDLEDOWN SUBSYSTEM.
*
* IF JOB IS A SPECIAL SUBSYSTEM (*BATCHIO*, *MAGNET*, *MSS*,
* *MAS*, *RHF*) THE SUBSYSTEM IDLEDOWN FLAG (BIT 2**15 OF RA+0
* AND BIT 2**15 OF CONTROL POINT AREA WORD *SNSW*) WILL BE SET.
* IF THE JOB IS NOT A SPECIAL SUBSYSTEM, IT WILL BE
* ABORTED WITH THE *IDET* ERROR FLAG.
*
* ENTRY EJT INTERLOCK SET.
*
* USES T1, CM - CM+4.
*
* MACROS MONITOR.
IDL2 LDN IDET SET *IDET* ERROR FLAG
STD CM+1
MONITOR CEFM
IDL SUBR ENTRY/EXIT
LDD CP
ADN JCIW
CRD CM
LDC IDLA-1 SET TABLE ADDRESS
STD T1
IDL1 AOD T1 CHECK NEXT TABLE ENTRY
LDI T1
ZJN IDL2 IF END OF TABLE
LMD CM+2
NJN IDL1 IF NOT A MATCH
LDD RA READ RA+0
SHN 6
CRD CM
LDD CM+3 SET IDLEDOWN FLAG IN (RA)
SCN 10
LMN 10
STD CM+3
LDD RA REWRITE RA+0
SHN 6
CWD CM
LDD CP READ CPA WORD *SNSW*
ADK SNSW
CRD CM
LDD CM+3 SET IDLEDOWN FLAG IN CPA
SCN 10
LMN 10
STD CM+3
LDD CP REWRITE CPA WORD *SNSW*
ADK SNSW
CWD CM
ADK CSSW-SNSW READ CPA WORD *CSSW*
CRD CM
LDD CM CLEAR *SKIP-TO-EXIT* FLAG
LPC 5777
STD CM
LDD CP WRITE CPA WORD *CSSW*
ADK CSSW
CWD CM
LJM IDLX RETURN
IDLA BSS 0 TABLE OF SPECIAL SUBSYSTEMS
CON BISI *BATCHIO*
CON MTSI *MAGNET*
CON MFSI *MSS*
CON ASSI *MAS*
CON RFSI *RHF*
CON 0 END OF TABLE
OVERFLOW OVLA,/OVERLAY/BUFB
OVERLAY (UP/DOWN CHANNEL.)
SPACE 4,10
** DIRECT CELL ASSIGNMENTS.
CB EQU PP CONTROLWARE TABLE BYTE ADDRESS
TA EQU PA CONTROLWARE TABLE WORD ADDRESS
CH EQU 60 CHANNEL NUMBER
MX EQU 61 MUX CHANNEL FLAG (100 IF MUX CHANNEL)
CS EQU 62 CHANNEL RESERVATION STATUS
MI EQU 63 NON-ZERO IF ERROR LOG MESSAGE ISSUED
S1 EQU 64 SCRATCH
TI EQU 65 DEVICE TABLE INDEX
FT EQU 66 FUNCTION TYPE
UPC SPACE 4,15
*** FUNCTION UPCF - UP CHANNEL.
*
* ENTRY (IR+3) = 5/MT, 1/M, 1/C, 5/CH.
* (IR+4) = 1/S, 2/0, 9/EQ.
*
* WHERE M = 1, IF MUX CHANNEL.
* C = 1, IF CONCURRENT CHANNEL.
* CH = CHANNEL NUMBER.
* S = 1, IF CALLED BY DRIVER OR *1MV*.
* EQ = EST ORDINAL (0 IF FUNCTION TO BE PERFORMED
* ON ALL EQUIPMENTS THAT THE CHANNEL
* ACCESSES).
*UPC ENTRY ENTRY/EXIT
*
* THIS FUNCTION USES THE *DWNF* PROCESSOR.
DWN SPACE 4,15
*** FUNCTION DWNF - DOWN CHANNEL.
*
* ENTRY (IR+3) = 5/0, 1/M, 1/C, 5/CH.
* (IR+4) = 3/0, 9/EQ.
*
* WHERE M = 1, IF MUX CHANNEL.
* C = 1, IF CONCURRENT CHANNEL.
* CH = CHANNEL NUMBER.
* EQ = EST ORDINAL (0 IF FUNCTION TO BE PERFORMED
* ON ALL EQUIPMENTS THAT THE CHANNEL
* ACCESSES).
DWN6 RJM DCH RELEASE CHANNEL, IF RESERVED
DWN7 LDD MI
ZJN DWN8 IF NO ERROR LOG MESSAGES ISSUED
LDK ZERL ISSUE *CHANNEL DOWNED BY SYSTEM* EVENT
CRD CM
LDN /EVENT/CDSE
STD CM+4
MONITOR EATM
DWN8 LDD IR+2
ZJN DWNX IF *DOWN* REQUEST
RJM CRC CLEAR CONTROLWARE RELOAD COUNT
DWN ENTRY ENTRY/EXIT
RJM PRS PRESET
LDD IR+4
LPC 777
NJN DWN1 IF EST ORDINAL SPECIFIED
LDK ESTP INITIALIZE CELLS FOR EST SCAN
CRD T5
LDK NOPE-1
STD T5
UJN DWN2 ENTER EST SCAN LOOP
DWN1 SBN 1
STD T5
ADN 2 SET SCAN TERMINATION CONDITION
STD T5+2
DWN2 AOD T5 INCREMENT EST ORDINAL
STM CMVA+2 STORE EST ORDINAL IN *1MV* CALL
LMD T5+2
ZJP DWN6 IF END OF EST SCAN
SFA EST,T5 READ EST ENTRY
ADK EQDE
CRD CN
RJM DDP DETERMINE IF DEVICE SHOULD BE PROCESSED
MJN DWN2 IF DEVICE NOT TO BE PROCESSED
DWN3 RJM RCH REQUEST CHANNEL, IF NECESSARY
MJP DWN7 IF CHANNEL CANNOT BE OBTAINED
RJM RCS REQUEST CHANNEL STATUS CHANGE ON DEVICE
PJN DWN5 IF CHANNEL STATUS HAS BEEN CHANGED
RJM DCH DROP CHANNEL
LDD IR+2
NJN DWN2 IF *UP* REQUEST
RJM DEQ DOWN EQUIPMENT
PJN DWN3 IF EQUIPMENT WAS DOWNED
DWN4 UJP DWN2 PROCESS NEXT EST ENTRY
DWN5 RJM CDS CHECK DRIVER STATUS
RJM CMV CALL *1MV*, IF NECESSARY
UJN DWN4 PROCESS NEXT EST ENTRY
CDS SPACE 4,20
** CDS - CHECK BUFFERED I/O DRIVER STATUS.
*
* IF CHANNEL UP FUNCTION
* AND BUFFERED I/O DRIVER IS NOT UP
* THEN
* CLEAR DRIVER DROPPED FLAG IN CHANNEL CONTROLWARE TABLE.
* ISSUE *RPPM* FUNCTION TO START APPROPRIATE DRIVER.
*
* ENTRY (CH) = CHANNEL NUMBER.
* (FT) = FUNCTION TYPE (1 IF *UP*, 0 IF *DOWN*).
* (MX) = MUX CHANNEL FLAG.
* (CB) = CONTROLWARE TABLE BYTE ADDRESS.
* (TA - TA+1) = CONTROLWARE TABLE WORD ADDRESS.
*
* USES CM - CM+4, FS - FS+4.
*
* MACROS DELAY, MONITOR.
CDS5 LDD CP ISSUE WAIT MESSAGE
ADK MS2W
CWM CMVB,TR
DELAY 10D*8D
CDS6 LDD MA
CWD FS STORE INPUT REGISTER FOR PP REQUEST
LDN 1
STD CM+1 SELECT NO QUEUEING OF PP REQUEST
LDD FS+4
LPN 40
NJN CDS7 IF CONCURRENT CHANNEL
MONITOR RPPM
UJN CDS8 CHECK MONITOR RESPONSE
CDS7 SBD FS+4 ISOLATE CHANNEL
ADN 4
SHN 0-21
ADN 2 DETERMINE BARREL SUBFUNCTION
STD CM+4
MONITOR CPRM REQUEST CONCURRENT PP
CDS8 LDD CM+1
ZJP CDS5 IF PP NOT ASSIGNED
LDD CP CLEAR WAIT MESSAGE
ADK MS2W
CWD CM
CDS SUBR ENTRY/EXIT
LDD FT
ZJN CDSX IF *DOWN* REQUEST
LDD MX
NJN CDSX IF MUX CHANNEL
RJM RCE READ CONTROLWARE TABLE
SHN 21-11
CDS1 PJN CDSX IF DRIVER IS UP
CDS1.1 DELAY
LDD TA
SHN 14
LMD TA+1
SBK CTALL*2
CRD CM
LDI CB
SHN 21-5
MJN CDS1.1 IF *MTR* HASN-T YET UPDATED CHANNEL TABLE
LDN 2 SET NUMBER OF REQUESTS
STD CM+1
LDD TA+1
STD CM+4
LDD TA
STD CM+3
LDD MA SET *UTEM* REQUEST IN MESSAGE BUFFER
CWM CDSD,CM+1
MONITOR UTEM
LDD CM+1
NJN CDS1 IF BUFFER DRIVER FLAG NOT CLEARED
LDC BIOL READ BUFFERED I/O TABLES POINTER
CRD CM
LDD CM+1 CHECK BUFFERED I/O PRESENT
SHN 14
ADD CM+2
CDS2 ZJP CDSX IF NO BUFFERED DEVICES PRESENT
ADN CCTP
CRD CM CHANNEL TABLE POINTER WORD
LDN CUN1
UJN CDS4 SCAN CHANNEL CONTROL TABLE
CDS3 SOD CM
ZJN CDS2 IF NO MORE CHANNELS
LDN CCTL
CDS4 RAD CM+4 ADVANCE CCT POINTER
SHN -14
RAD CM+3
SHN 14 READ PP DRIVER INPUT REGISTER
ADD CM+4
CRD FS
LDD FS
ZJN CDS3 IF 819 ENTRY
LDD FS+4
LMD CH
NJN CDS3 IF NOT SELECTED CHANNEL
LJM CDS6 LOAD DRIVER
CDSD VFD 1/1,5/,6/1,6/,42/1 VERIFY BUFFERED I/O DRIVER FLAG
CDSE VFD 1/0,5/,6/1,6/,42/0 UPDATE BUFFERED I/O DRIVER FLAG
CMV SPACE 4,10
** CMV - CALL *1MV* IF *UP* REQUEST FOR MASS STORAGE CHANNEL.
*
* ENTRY (FT) = FUNCTION TYPE (1 IF *UP*, 0 IF *DOWN*).
* (CN - CN+4) = WORD *EQDE* OF EST ENTRY.
*
* USES CM+1.
*
* MACROS DELAY, MONITOR, SMSTF.
CMV2 LDD CP CLEAR WAIT MESSAGE
ADK MS2W
CWD CM
SMSTF L1MV SET *1MV* ACTIVE
CMV SUBR ENTRY/EXIT
LDD CN
SHN 21-13
PJN CMVX IF NOT MASS STORAGE
LDD FT
ZJN CMVX IF *DOWN* REQUEST
CMV1 DELAY 100D*8D DELAY BETWEEN *1MV* CALLS
LDD MA PLACE REQUEST IN MESSAGE BUFFER
CWM CMVA,ON
LDN 0
STD CM+1
MONITOR RPPM CALL *1MV*
LDD CM+1
NJP CMV2 IF PP ASSIGNED OR IN REQUEST QUEUE
LDD CP ISSUE WAIT MESSAGE
ADK MS2W
CWM CMVB,TR
UJN CMV1 RETRY *1MV* CALL
CMVA VFD 18/3R1MV,6/0,12/0,6/UCFC,6/0,12/0
CMVB DATA C*WAITING FOR PP.*
CRC SPACE 4,10
** CRC - CLEAR RELOAD COUNT IN CONTROLWARE TABLE.
*
*
* USES CM+1 - CM+4.
*
* MACROS MONITOR.
CRC SUBR ENTRY/EXIT
LDN 1 NUMBER OF PARAMETER WORDS
STD CM+1
LDD TA+1
STD CM+4
LDD TA
STD CM+3
LDD MA STORE *UTEM* PARAMETERS
CWM CRCB,ON
MONITOR UTEM
UJN CRCX RETURN
CRCB VFD 1/0,5/0,6/3,6/,42/0 *UTEM* REQUEST
DCH SPACE 4,15
** DCH - DROP CHANNEL.
*
* THIS SUBROUTINE DROPS THE CHANNEL IF IT IS PRESENTLY ASSIGNED
* TO THIS PP.
*
* ENTRY (CH) = CHANNEL NUMBER.
* (CS) = 1 IF CHANNEL ASSIGNED.
*
* EXIT (CS) = 0.
*
* USES CM+1, CS.
*
* MACROS MONITOR.
DCH SUBR ENTRY/EXIT
LDD CS
ZJN DCHX IF CHANNEL NOT ASSIGNED
LDD CH DROP THE CHANNEL
STD CM+1
MONITOR DCHM
* LDN 0 CLEAR CHANNEL STATUS
STD CS
UJN DCHX RETURN
DDP SPACE 4,30
** DDP - DETERMINE IF DEVICE SHOULD BE PROCESSED.
*
* THIS SUBROUTINE DETERMINES IF A DEVICE IS ACCESSED BY A
* PARTICULAR CHANNEL AND IF THE STATE OF THE CHANNEL ON THE
* DEVICE IS SUCH THAT THE DEVICE SHOULD BE PROCESSED. ONLY
* MASS STORAGE, TAPE, *NIP*, AND OPTICAL DISK DEVICE TYPES
* WILL BE CONSIDERED FOR PROCESSING.
*
* ENTRY (CH) = CHANNEL NUMBER.
* (FT) = FUNCTION TYPE (1 IF *UP*, 0 IF *DOWN*).
* (MX) = 100 IF MUX CHANNEL.
* (CN - CN+4) = *EQDE* WORD OF EST ENTRY.
*
* EXIT (A) .GE. 0 IF THE DEVICE SHOULD BE PROCESSED.
* .LT. 0 IF AT LEAST ONE OF THE FOLLOWING CONDITIONS
* IS TRUE -
* A. THE DEVICE IS OF A TYPE NOT SUITABLE
* FOR PROCESSING.
* B. THE CHANNEL DOES NOT ACCESS THE
* DEVICE.
* C. THE CONCURRENCY OF THE CHANNEL DOES
* NOT MATCH THAT OF THE CHANNELS
* ACCESSING THE DEVICE.
* D. THE CHANNEL IS A MUX CHANNEL BUT THE
* DEVICE TYPE IS *LDAM*.
* E. THE *UP*/*DOWN* STATUS OF THE
* CHANNEL ON THE DEVICE MISMATCHES THE
* *1DS* FUNCTION TYPE.
* (TI) = TABLE INDEX IF TAPE, *NIP* OR OPTICAL DISK.
*
* USES TI, T1.
DDP SUBR ENTRY/EXIT
LDD CN VALIDATE DEVICE TYPE
SHN 21-13
MJN DDP2 IF MASS STORAGE
LDN TDVTL SET DEVICE TYPE TABLE LENGTH
STD TI
DDP1 SOD TI DECREMENT TABLE INDEX
MJN DDPX IF DEVICE TYPE NOT FOUND
LDM TDVT,TI
LMD CN+3
NJN DDP1 IF NOT DEVICE TYPE MATCH
DDP2 LDN 1
STD T1
DDP3 LDM CN+1,T1
LMD CH
LPN 77
NJN DDP4 IF WRONG CHANNEL
LDM CN+1,T1
SHN 0-11
SBN 4
MJN DDP4 IF CHANNEL NOT PRESENT OR DISABLED
LMN 1
ZJN DDP6 IF CHANNEL STATE = *IDLE*
LMD FT
LPN 1
NJN DDP6 IF RIGHT CHANNEL STATE
DDP4 SOD T1
PJN DDP3 IF CHANNEL 1 NOT YET CHECKED
DDP5 UJP DDPX RETURN
DDP6 LDD MX
ZJN DDP5 IF MUX CHANNEL NOT SPECIFIED
LDD CN
SHN 21-13
PJN DDP5 IF NOT MASS STORAGE DEVICE
SHN 13-7
UJN DDP5 RETURN WITH (A) .LT. 0 IF *LDAM* DEVICE
TDVT BSS 0 TABLE OF DEVICE TYPES TO BE PROCESSED
CON 2ROD
CON 2RLX
CON 2RLY
CON 2RCT
CON 2RMT
CON 2RNT
CON 2RAT
TDVTL EQU *-TDVT TABLE LENGTH
DEQ SPACE 4,20
** DEQ - DOWN EQUIPMENT.
*
* THIS SUBROUTINE REQUESTS *MTR* TO DOWN A MASS STORAGE
* DEVICE. IT ALSO ISSUES BML AND ERRLOG MESSAGES TO
* RECORD THE EVENT.
*
* ENTRY (T5) = EST ORDINAL.
*
* EXIT (A) .GE. 0 IF EQUIPMENT WAS DOWNED.
* .LT. 0 IF EQUIPMENT CANNOT BE DOWNED.
*
* USES CM+1, CM+2.
*
* CALLS IMS.
*
* MACROS MONITOR.
DEQ1 LCN 0 SET REJECT STATUS
DEQ SUBR ENTRY/EXIT
LDD T5 STORE EST ORDINAL IN REQUEST
STD CM+1
LDK DWES STORE SUBFUNCTION IN REQUEST
STD CM+2
MONITOR SEQM
LDD CM+1
ZJN DEQ1 IF FUNCTION REJECTED
LDN MSI1 MESSAGE INDEX
RJM IMS ISSUE MESSAGES (IF CALLED BY DRIVER)
UJN DEQX RETURN
IBM SPACE 4,15
** IBM - ISSUE BML MESSAGE.
*
* ENTRY (CH) = CHANNEL NUMBER, INCLUDING CONCURRENCY FLAG.
* (S1) = MESSAGE INDEX.
* (T5) = EST ORDINAL.
* (CN - CN+4) = *EQDE* WORD OF EST ENTRY.
*
* EXIT (A) = 0.
*
* USES T1, T2, CM - CM+4, FS - FS+4.
*
* CALLS DFM.
IBM SUBR ENTRY/EXIT
LDC TMID-2 SET TABLE ADDRESS
STD T1
LDD CN+3 SAVE DEVICE TYPE
STD T2
LMC 2RDP
NJN IBM1 IF NOT *DP* DEVICE TYPE
LDC TEMID-2 SET TABLE ADDRESS
STD T1
LDD CN+4
SHN 3
ADK DILL
CRD CM
LDD CM+3
LPC 707
STD T2
IBM1 LDN 2 CHECK NEXT TABLE ENTRY
RAD T1
LDI T1
ZJN IBM2 IF DEVICE TYPE NOT FOUND IN TABLE
LMD T2
NJN IBM1 IF NOT A MATCH
LDM 1,T1 MESSAGE ID
IBM2 STM BMLID
LDM IBMA,S1 SYMPTOM CODE
STM BMLSC
LDD CH CHANNEL NUMBER
STM BMLPP
LDK PPCP READ PP COMMUNICATIONS AREA POINTER
CRD CM
ADK MMFL-PPCP
CRD FS
LDD FS MAINFRAME ID
STM BMLMF
LDD IA COMPUTE PP NUMBER
SBD CM+4
SHN 6-3
RAM BMLPP
LDD CN+4 READ EQUIPMENT AND UNIT NUMBERS
SHN 3
ADK DDLL
CRD CM
LDD CM GET EQUIPMENT (CONTROLLER) NUMBER
LPC 700
LMD CM+4 MERGE WITH UNIT NUMBER
SCN 77
LMD CM+4
STM BMLUN
LDD T5 STORE EST ORDINAL
STM BMLEO
LDM IBMA,S1 SYMPTOM CODE
STM BMLSC
LDK BMLL SET MESSAGE LENGTH
STD CM+1
LDC BML+BMLN ISSUE MESSAGE
RJM DFM
* LDN 0
LJM IBMX RETURN
* MESSAGE INDICES.
BEGIN BSSN 0
MSI0 BSSN 1
MSI1 BSSN 1
MSIX BSSN 1 MAXIMUM INDEX + 1
END BSSN
* TABLE OF SYMPTOM CODES.
IBMA INDEX
INDEX MSI0,/COMSDFS/HS0015
INDEX MSI1,/COMSDFS/HS0034
INDEX MSIX
TMID SPACE 4,10
* TABLE OF MESSAGE ID-S.
TMID 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 2RDM,/COMSDFS/RM0007 (DM) 885-1X, HALF TRACK
CON 2RDQ,/COMSDFS/RM0017 (DQ) 885-1X, 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
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 2RDC,/COMSDFS/RM0115 (DC) 895
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)
CON 2REJ,/COMSDFS/RM0147 (EJ) 5838 (2XP ELITE)
CON 2REK,/COMSDFS/RM0145 (EK) 5838 (3XP ELITE)
CON 2REL,/COMSDFS/RM0146 (EL) 5838 (4X ELITE)
CON 2REM,/COMSDFS/RM0135 (EM) 5833 (3XP SABRE)
CON 2REN,/COMSDFS/RM0136 (EN) 5833 (4X SABRE)
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)
CON 2REU,/COMSDFS/RM0167 (EU) 47444 (2XP 3.5IN)
CON 2REV,/COMSDFS/RM0165 (EV) 47444 (3XP 3.5IN)
CON 2REW,/COMSDFS/RM0166 (EW) 47444 (4X 3.5IN)
CON 0
TEMID SPACE 4,10
* TABLE OF MESSAGE ID-S FOR EXTENDED MEMORY DEVICES.
TEMID BSS 0
CON 102,/COMSDFS/RM0070 (DP) ECS I - DC135 DDP
CON 202,/COMSDFS/RM0072 (DP) ECS II - DC135 DDP
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 501,/COMSDFS/RM0210 (DP) ESM - LOW SPEED PORT
CON 601,/COMSDFS/RM0172 (DP) STORNET
CON 0 END OF TABLE
BML 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
BMLL EQU *-BML MESSAGE LENGTH
IFL SPACE 4,15
** IFL - INITIATE FIRMWARE LOAD.
*
* ENTRY (FT) = FUNCTION TYPE (1 IF *UP*, 0 IF *DOWN*).
* (MX) = MUX CHANNEL FLAG.
* (CN - CN+4) = *EQDE* EST WORD.
*
* USES IR+2, IR+4, CM - CM+4.
*
* CALLS RCE.
*
* MACROS EXECUTE, MONITOR.
* CHECK FOR FIRMWARE LOAD COMPLETE.
IFL1 RJM RCE READ CONTROLWARE TABLE ENTRY
SHN 21-13
PJN IFLX IF LOAD IS COMPLETE
* ENTER PP RECALL QUEUE.
LDK ZERL SET 1 SECOND TIMED RECALL PARAMETERS
CRD CM
LDM IDSC RESTORE ORIGINAL CONTENTS
STD IR+2
LDD MA SET PP INPUT REGISTER IMAGE
CWD IR
MONITOR RECM ENTER RECALL AND DROP PP
LJM PPR EXIT TO PP RESIDENT
IFL SUBR ENTRY
LDD CN
SHN 21-13
PJN IFLX IF NOT MASS STORAGE
LDD MX
NJN IFLX IF MUX CHANNEL
LDD FT
ZJN IFLX IF *DOWN* REQUEST
RJM RCE READ CONTROLWARE TABLE
LPN 37
ZJN IFLX IF NO CONTROLWARE
LDN **
IFLA EQU *-1
ZJP IFL1 IF FIRMWARE RELOAD ALREADY STARTED
* SET RELOAD REQUEST FLAG IN CONTROLWARE TABLE.
LDD TA+1
STD CM+4
LDD TA
STD CM+3
LDN 1 SET REQUEST COUNT
STD CM+1
LDD MA PLACE PARAMETERS IN MESSAGE BUFFER
CWM IFLE,ON
MONITOR UTEM
* USE THIS PP TO INITIATE CONTROLWARE RELOAD.
LDM IDSC SET FUNCTION CODE
SCN 77 PRESERVE BUFFER LOCK/LOGGING CONTROL BITS
LMN /1DS/ILJF
STD IR+2
LDD TH SET *UPCF* CALL FLAG
RAD IR+4
LDD IA REWRITE PP INPUT REGISTER
CWD IR
EXECUTE 1DS,=
LJM PPR EXIT TO PP RESIDENT
IFLE VFD 1/0,5/,6/1,6/13,42/1 *UTEM* REQUEST
IMS SPACE 4,15
** IMS - ISSUE MESSAGES TO THE ERRLOG AND BML.
*
* ENTRY (A) = MESSAGE INDEX.
* (CH) = CHANNEL NUMBER.
* (IR+4) = DRIVER CALL FLAG.
* (MI) = INCREMENTED IF MESSAGES WERE ISSUED.
* (T5) = EST ORDINAL.
*
* EXIT (A) .GE. 0.
*
* USES S1, T1.
*
* CALLS C2D, DFM, IBM.
* *MSI0* PROCESSOR.
IMS1 LDD CH CONVERT CHANNEL NUMBER TO DISPLAY CODE
RJM C2D
STM MSG0+1
* *MSI1* PROCESSOR.
IMS2 LDD T5 CONVERT EST ORDINAL TO DISPLAY CODE
SHN -3
RJM C2D
STM MSG1+1
LDD T5
LPN 7
SHN 6
ADC 2R0
STM MSG1+2
LDM IMSB,S1 ISSUE ERRLOG MESSAGE
LMK ERLN
RJM DFM
RJM IBM ISSUE BML MESSAGE
* LDN 0
IMS SUBR ENTRY/EXIT
STD S1 SAVE MESSAGE INDEX
LDD IR+4
SHN 21-13
PJN IMSX IF NOT CALLED BY DRIVER
AOD MI SET *MESSAGE ISSUED* FLAG
LDM IMSA,S1 GET PROCESSOR ADDRESS
STD T1
LJM 0,T1 ENTER PROCESSOR
* MESSAGE INDICES.
BEGIN BSSN 0
MSI0 BSSN 1
MSI1 BSSN 1
MSIX BSSN 1 MAXIMUM INDEX + 1
END BSSN
* TABLE OF PROCESSOR ADDRESSES.
IMSA INDEX
INDEX MSI0,IMS1
INDEX MSI1,IMS2
INDEX MSIX
* TABLE OF MESSAGE ADDRESSES.
IMSB INDEX
INDEX MSI0,MSG0
INDEX MSI1,MSG1
INDEX MSIX
MSG0 DATA 6HCHXX,
MSG1 DATA C*EQXXX DOWNED BY SYSTEM.*
RCE SPACE 4,10
** RCE - READ CONTROLWARE TABLE ENTRY.
*
* ENTRY (CB) = CONTROLWARE TABLE BYTE ADDRESS.
* (TA - TA+1) = CONTROLWARE TABLE WORD ADDRESS.
*
* EXIT (A) = CONTROLWARE TABLE ENTRY.
*
* USES CM - CM+4.
RCE SUBR ENTRY/EXIT
LDD TA
SHN 14
LMD TA+1
CRD CM
LDI CB
UJN RCEX RETURN
RCH SPACE 4,30
** RCH - REQUEST CHANNEL ASSIGNMENT.
*
* THIS SUBROUTINE DETERMINES IF CHANNEL ASSIGNMENT TO THIS PP
* IS NECESSARY BEFORE PROCEDING WITH THE *UP*/*DOWN* FUNCTION.
* IF THE CHANNEL MUST BE ASSIGNED, THE *CCHM* MONITOR FUNCTION
* WILL BE REPEATEDLY ISSUED UNTIL EITHER THE ASSIGNMENT OCCURS
* OR CHANNEL ASSIGNMENT BECOMES IMPOSSIBLE DUE TO ASSIGNMENT OF
* THE CHANNEL TO A JOB.
*
* ENTRY (CH) = CHANNEL NUMBER (AND CONCURRENCY FLAG).
* (CS) = CHANNEL STATUS.
* (FT) = FUNCTION TYPE (1 IF *UP*, 0 IF *DOWN*).
* (MX) = 100 IF MUX CHANNEL.
* (CN - CN+4) = WORD *EQDE* OF EST ENTRY.
*
* EXIT (A) .GE. 0 IF ONE OF THE FOLLOWING IS TRUE -
* A. CHANNEL ASSIGNMENT IS NOT REQUIRED FOR
* PROCESSING THIS FUNCTION.
* B. CHANNEL ASSIGNMENT IS NOT REQUIRED FOR
* PROCESSING THIS DEVICE TYPE.
* C. THE CHANNEL WAS ALREADY ASSIGNED.
* D. THE CHANNEL IS A MUX CHANNEL.
* E. CHANNEL ASSIGNMENT WAS OBTAINED.
* .LT. 0 IF THE CHANNEL IS PRESENTLY ASSIGNED TO A
* JOB.
* (CS) = 1 IF CHANNEL ASSIGNED, ELSE 0.
*
* USES CM+1, CS.
*
* MACROS MONITOR, PAUSE.
RCH SUBR ENTRY/EXIT
LDD CN
SHN 0-13
ADD CS
ADD FT
ADD MX
NJN RCHX IF CHANNEL NOT TO BE ASSIGNED
RCH1 LDD CH REQUEST CHANNEL ASSIGNMENT
STD CM+1
MONITOR CCHM
LDD CM+1
SHN 21-5
MJN RCHX IF DOWN CHANNEL ASSIGNED TO JOB
LDD CM+2 SET CHANNEL STATUS
STD CS
NJN RCHX IF CHANNEL ASSIGNED
PAUSE ST
UJN RCH1 RETRY
RCS SPACE 4,30
** RCS - REQUEST CHANNEL STATUS CHANGE.
*
* THIS SUBROUTINE REQUESTS, VIA THE *SEQM* MONITOR FUNCTION,
* THAT THE CHANNEL STATE BE CHANGED TO *UP* OR *DOWN* ON THE
* CURRENT DEVICE ACCORDING TO THE *1DS* FUNCTION BEING
* PROCESSED.
*
* ENTRY (CH) = CHANNEL NUMBER.
* (FT) = FUNCTION TYPE (1 IF *UP*, 0 IF *DOWN*).
* (MX) = 100 IF MUX CHANNEL.
* (TI) = DEVICE TABLE INDEX.
* (T5) = EST ORDINAL.
* (CN - CN+4) = WORD *EQDE* OF EST ENTRY.
*
* EXIT (A) .GE. 0 IF CHANNEL STATUS HAS BEEN CHANGED.
* .LT. 0 IF THE *SEQM* REQUEST WAS REJECTED. THIS
* CAN OCCUR IN THE FOLLOWING CASES -
* A. THE REQUEST IS TO *UP* THE CHANNEL AND
* IT IS PRESENTLY ASSIGNED TO A
* DIAGNOSTIC JOB.
* B. THE REQUEST IS TO *DOWN* THE CHANNEL
* AND THE CHANNEL PROVIDES THE ONLY
* NON-DOWN ACCESS PATH TO THE SPECIFIED
* DEVICE AND THAT DEVICE IS NOT DOWN.
*
* USES T1, CM+1 - CM+4.
*
* CALLS IFL, IMS.
*
* MACROS MONITOR.
RCS6 LDD T1
SHN -1
STD T1
NJN RCS1 IF MORE RETRIES REQUIRED
LCN 0 SET REJECT STATUS
RCS SUBR ENTRY/EXIT
LDN 10 SET RETRY CONTROL
STD T1
RCS1 LDD T5 STORE EST ORDINAL IN REQUEST
STD CM+1
ERRNZ UPCS-DNCS-1 CODE DEPENDS ON VALUE
LDD FT SET *SEQM* SUBFUNCTION
ADK DNCS
STD CM+2
LDD CH STORE CHANNEL IN REQUEST
STD CM+3
LDD MX STORE MUX FLAG IN REQUEST
STD CM+4
MONITOR SEQM REQUEST CHANNEL STATUS CHANGE
LDD CM+1
ZJN RCS6 IF REQUEST WAS REJECTED
RJM IFL INITIATE FIRMWARE RELOAD IF NEEDED
LDD CN
SHN 0-13
NJN RCS4 IF MASS STORAGE DEVICE
LDD FT
ZJN RCS3 IF *DOWN* REQUEST
LDD T5 EST ORDINAL
STD CM+1
LDD CH CHANNEL NUMBER
STD CM+2
LDK SUCS *SCSM* SUBFUNCTION
STD CM+3
MONITOR SCSM SET CHANNEL STATE = *UP*
RCS3 LDD FT
ZJN RCS4.1 IF *DOWN* REQUEST
LDD T5 SET CONTROLWARE LOAD REQUIRED
STD CM+1
LDN SB0S SET SUBFUNCTION
STD CM+2
LCN 20 SET MASK
STD CM+3
LDN 20 SET VALUE
STD CM+4
MONITOR SEQM
RCS4 LDK MSI0 MESSAGE INDEX
RJM IMS ISSUE MESSAGES, IF NECESSARY
RCS4.1 LJM RCSX RETURN
PRS SPACE 4,10
** PRS - PRESET.
*
* EXIT (CB) = CONTROLWARE TABLE BYTE ADDRESS.
* (CH) = CHANNEL NUMBER (INCLUDING CONCURRENCY FLAG).
* (CS) = 0.
* (FG) = CME FLAG.
* (FT) = FUNCTION TYPE (1 IF *UP*, 0 IF *DOWN*).
* (MI) = 0.
* (MX) = MUX FLAG (100 IF MUX CHANNEL, ELSE 0).
* (TA - TA+1) = CONTROLWARE TABLE WORD ADDRESS.
*
* USES CH, CS, FT, MI, MX, T1 - T3, CM - CM+4.
PRS SUBR ENTRY/EXIT
LDN 0
STD CS
STD MI
STD T1
LDD IR+3 SET CHANNEL NUMBER
LPN 77
STD CH
STD T2
STM CMVA+4
LDD IR+2 SET FUNCTION TYPE
ERRNZ /1DS/UPCF-/1DS/DWNF-1 CODE DEPENDS ON VALUE
SBN /1DS/DWNF
STD FT
LDD IR+3 SET/CLEAR MUX FLAG
LPC 100
STD MX
LDN 60D
STD T3
PRS1 AOD T1 ADVANCE CM WORD INDEX
LCN 5
RAD T2
PJN PRS1 IF NOT AT PROPER WORD
ADN 5+CM SET CONTROLWARE TABLE BYTE ADDRESS
STD CB
SBN CM
LPN 7
STD T2
PRS2 LCN 12D DECREMENT POSITION
RAD T3
SOD T2 DECREMENT BYTE NUMBER
PJN PRS2 IF NOT TO PROPER POSITION
LDD T3 BIT POSITION
ADN 13 ADD OFFSET OF BIT WITHIN BYTE
SHN 6
STM IFLE+1
SBK 200
RAM CDSD+1
STM CDSE+1
SBK 300
RAM CRCB+1
LDK CHTP READ CHANNEL STATUS TABLE
CRD CM
LDD CM+2
SHN 14
LMD CM+3
ADD T1
SBN 1
CRD CM
ADN CTALL*2 CONTROLWARE TABLE ADDRESS
STD TA+1
SHN -14
STD TA
LDI CB SAVE GLOBAL DOWN STATUS
LPN 40
RAM IFLA
LJM PRSX RETURN
OVERFLOW OVLA,/OVERLAY/BUFB
TTL 1DS - DSD REQUEST PROCESSOR.
SPACE 4,10
END