IDENT CPD,CPD COLLECT PERFORMANCE DATA
PERIPH
BASE MIXED
SST SSCP
*COMMENT CPD - COLLECT PERFORMANCE DATA.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TITLE CPD - COLLECT PERFORMANCE DATA.
CPD SPACE 4,10
*** CPD - COLLECT PERFORMANCE DATA.
*
* S. L. KSANDER. 78/12/13.
* R. M. DESSEL. 81/07/27.
* J. L. LARSON. 83/04/11.
SPACE 4,10
*** CPD GENERATES A FILE FROM WHICH SYSTEM USAGE CAN BE
* DETERMINED. COUNTS OF VARIOUS FORMS OF ACTIVITY ARE
* MAINTAINED AND PERIODICALLY WRITTEN TO THIS FILE.
SPACE 4,10
*** CALL.
*
*
*T 18/ *CPD*,6/ CP,12/ SO,6/,18/ FET ADDR
*
*T FET 42/ FILE NAME,18/
*T FET+1 42/ ,18/ FIRST
*T FET+2 42/ ,18/ IN
*T FET+3 42/ ,18/ OUT
*T FET+4 12/ FO,30/,18/ LIMIT
*T FET+5 12/ ,12/ FW,12/ SL,12/ ML,12/ FL
*T, FET+8 42/ PF NAME,12/,6/ MODE
*
*
* SO - ORDINAL OF RESERVED SYSTEM FNT ENTRY.
* FO - RELATIVE SAMPLE FILE ADDRESS IN NFL.
* FW - FILE WRITE TIME IN SECONDS.
* SL - SLOW LOOP TIME IN MILLISECONDS.
* ML - MEDIUM LOOP TIME IN MILLISECONDS.
* FL - FAST LOOP TIME IN MILLISECONDS.
*
* IF A LOOP TIME IS SET TO ZERO, NO SAMPLES FOR THAT
* LOOP WILL BE TAKEN.
SPACE 4,10
*** *CPD* TERMINATION.
*
* TO TERMINATE *CPD*, THE *CPD* DROP FLAG MUST BE SET.
* REFER TO *SFM* DOCUMENTATION FOR FURTHER INFORMATION
* CONCERNING THIS.
SPACE 4,10
*** DATA FILE FORMAT.
*
* RECORD 1 = HEADER DATA.
* THIS RECORD CONTAINS STATIC INFORMATION REGARDING
* THE SYSTEM CONFIGURATION AVAILABLE. THIS RECORD
* CONTAINS A FIXED DATA BLOCK, A MASS STORAGE BLOCK,
* A JOB CONTROL DATA BLOCK, AND AN EST DATA BLOCK.
* THE SPECIFIC FORMAT OF THIS RECORD IS DESCRIBED
* IN *COMSCPD*.
*
* RECORD 2 - N = DATA RECORDS.
* THESE RECORDS CONTAIN THE ACCUMULATED DATA FOR
* EACH FILE WRITE INTERVAL. EACH RECORD CONTAINS
* A FIXED BASE BLOCK AND A MASS STORAGE DATA BLOCK.
* THE SPECIFIC FORMAT OF THIS RECORD IS DESCRIBED
* IN *COMSCPD*.
SPACE 4,10
*** DAYFILE MESSAGES.
*
*
* * CPD - FILE NOT FOUND.*
* THE SPECIFIED DATA FILE WAS NOT FOUND.
*
* * CPD - ALREADY ACTIVE.*
* *CPD* IS ALREADY RUNNING IN THE SYSTEM.
*
* * CPD - FILE STATUS ERROR.*
* ONE OF THE FOLLOWING CONDITIONS EXISTED REGARDING
* THE SPECIFIED DATA FILE.
* 1. UNABLE TO FIND FAST ATTACH FILE CALLED SAMPLE ON
* CALLERS FAMILY.
* 2. UNABLE TO ATTACH FAST ATTACH FILE IN REQUESTED
* MODE.
*
* * CPD - USER ACCESS NOT VALID.*
* CALLING PROGRAM DOES NOT HAVE SYSTEM ORIGIN
* PRIVILEGES.
*
* * CPD - OVERLAY NOT IN RPL.*
* *CPD* OVERLAY *3CR* OR *3CS* WAS NOT IN THE RPL.
*
* * CPD - PARAMETER ERROR.*
* THE SPECIFIED PARAMETER ADDRESS IS INCORRECT.
*
* * CPD - INITIATED.*
* *CPD* MAIN LOOP INITIATED.
*
* * CPD - TERMINATED.*
* *CPD* MAIN LOOP TERMINATED.
TITLE DIRECT CELL DEFINITIONS.
* DIRECT LOCATION ASSIGNMENTS.
T8 EQU 16 TEMPORARY STORAGE (USED BY MACROS)
T9 EQU 17 TEMPORARY STORAGE (USED BY MACROS)
FS EQU 20 - 24 FST ENTRY
VB EQU 25 FWA VARIABLE DATA BUFFER
LE EQU 26 LAST ORDINAL + 1 OF DEFINED EST ENTRIES
ME EQU 27 NUMBER OF MASS STORAGE ENTRIES
NP EQU 30 NUMBER OF PPUS
NC EQU 31 NUMBER OF CONTROL POINTS
SC EQU 32 CURRENT TIME IN SECONDS
MS EQU 33 CURRENT TIME IN MILLISECONDS
LI EQU 34 OPERATION LOOP INDEX
LO EQU 35 LOOP OPERATION ADDRESS
BA EQU 36 BUFFER POINTER
PC EQU 37 PPU COMMUNICATION AREA ADDRESS
CN EQU 40 - 44 WORKING STORAGE
TA EQU 40 IAF RA/100B (FOR ROUTINE *AIA* ONLY)
WC EQU 45 BUFFER WORD COUNT
NM EQU 46 NUMBER OF MCT ENTRIES - 1
EC EQU 47 PROCESSOR CONNECT CODE
FO EQU 57 FNT ORDINAL FOR *SAMPLE* FILE
AB EQU 60 - 64 WORKING STORAGE
RC EQU 65 RECORD COUNT IN BUFFER
RX EQU 66 MAXIMUM RECORDS IN BUFFER
RN EQU HN P REGISTER MAINTENANCE REGISTER NUMBER
TITLE MACRO DEFINITIONS.
* MACRO DEFINITIONS.
ADO SPACE 4,15
** ADO - ADD ONE.
*
* ADO M,D
*
* ENTRY *M* = BUFFER OFFSET TO BE INCREMENTED.
* *D* = INDEX OFFSET.
* (BA) = BUFFER BASE ADDRESS OF CURRENT RECORD.
*
* USES T8.
*
* REQUIRES BUFFER OFFSET TO BE DEFINED VIA *MPAR* MACRO
* IN ORDER TO SET FIELD PRECISION.
PURGMAC ADO
ADO MACRO M,D
MACREF ADO
.1 SET P.M-1
.2 IFC NE,$D$$
LDD D
IFNE .1,0,1
SHN .1
ADD BA
STD T8
AOM M+.1,T8
DUP .1
.1 SET .1-1
SHN -14
RAM M+.1,T8
ENDD
.2 ELSE
AOM M+.1,BA
DUP .1
.1 SET .1-1
SHN -14
RAM M+.1,BA
ENDD
.2 ENDIF
ENDM
ADA SPACE 4,20
** ADA - ADD ACCUMULATOR.
*
* ADA M,D
*
* ENTRY *M* = BUFFER OFFSET TO BE INCREMENTED.
* *D* = INDEX OFFSET.
* (BA) = BUFFER BASE ADDRESS OF CURRENT RECORD.
*
* USES T8, T9.
*
* CALLS ADA.
*
* REQUIRES BUFFER OFFSET TO BE DEFINED VIA *MPAR* MACRO
* IN ORDER TO SET FIELD PRECISION.
*
* WARNING - IF THE *D* PARAMETER IS PRESENT, ONLY
* THE LOWER 12 BITS OF *A* ARE USED, AND THE
* ELEMENT PRECISION MUST NOT BE GREATER THAN TWO.
PURGMAC ADA
ADA MACRO M,D
MACREF ADA
.1 SET P.M-1
.2 IFC NE,$D$$
STD T8
LDD D
ERRPL .1-2 PRECISION ERROR
.3 IFNE .1,0
SHN 1
ADK M
RJM ADA
.3 ELSE
ADD BA
STD T9
LDD T8
RAM M,T9
.3 ENDIF
.2 ELSE
RAM M+.1,BA
DUP .1
.1 SET .1-1
SHN -14
RAM M+.1,BA
ENDD
.2 ENDIF
ENDM
RDM SPACE 4,15
** RDM - READ MEMORY.
*
* RDM M
*
* ENTRY (A) = CM ADDRESS TO READ.
* *M* = BUFFER OFFSET TO READ INTO.
* (BA) = BUFFER BASE ADDRESS OF CURRENT RECORD.
*
* EXIT (A) = INITIAL CM ADDRESS + CM WORDS READ.
*
* USES T8, T9.
*
* CALLS RDM.
*
* REQUIRES BUFFER OFFSET TO BE DEFINED VIA *MPAR* MACRO
* TO SET FIELD PRECISION.
PURGMAC RDM
RDM MACRO M
MACREF RDM
STD T9
SHN -14
STD T8
LDC P.M/5*10000+M
ERRNZ P.M/5*5-P.M LENGTH ERROR
RJM RDM READ MEMORY
ENDM
MPAR SPACE 4,15
** MPAR - MULTIPLE PRECISION ARRAY.
*
* NAME MPAR L,P
*
* ENTRY *NAME* = ARRAY NAME.
* *L* = ARRAY LENGTH IN ELEMENTS.
* *P* = ELEMENT PRECISION IN PPU WORDS.
*
* EXIT *P.NAME* = PRECISION OF ELEMENTS.
* *L.NAME* = ARRAY LENGTH.
*
* WARNING - IF ARRAY LENGTH IS NOT EQUAL TO ONE, THE ELEMENT
* PRECISION MUST NOT BE GREATER THAN TWO.
PURGMAC MPAR
MACRO MPAR,NAME,LEN,PREC
MACREF MPAR
.1 IFC NE,$NAME$$
.2 IFC EQ,$PREC$$
ERR PRECISION NOT SPECIFIED
.2 ELSE
P.NAME EQU PREC
.2 ENDIF
.3 IFNE LEN,1
ERRNG 2-P.NAME OFFSET CALCULATION ERROR
.3 ENDIF
L.NAME EQU LEN
NAME BSS L.NAME*P.NAME
BL SET BL+L.NAME*P.NAME
.1 ENDIF
ENDM
STA SPACE 4,10
** STA - STORE ACCUMULATOR.
*
* STA M
*
* ENTRY *M* = DATA OFFSET IN BUFFER.
* (BA) = BUFFER BASE ADDRESS OF CURRENT RECORD.
PURGMAC STA
STA MACRO M
.1 SET P.M-1
ERRPL .1-2 PRECISION ERROR
.2 IFNE .1,0
STM M+1,BA
SHN -14
.2 ENDIF
STM M,BA
ENDM
TITLE COMMON DECKS.
* COMMON DECKS.
*CALL COMPMAC
*CALL COMPMRM
*CALL COMSCPS
*CALL COMSEJT
QUAL EVENT
*CALL COMSEVT
QUAL *
*CALL COMSHIO
*CALL COMSIOU
*CALL COMSJIO
*CALL COMSMSP
*CALL COMSMTR
*CALL COMSPFM
*CALL COMSPIM
QUAL IAF
*CALL COMSREM
QUAL *
*CALL COMSSCD
QUAL SCR
*CALL COMSSCR
QUAL *
*CALL COMSSSD
*CALL COMSSSJ
*CALL COMSWEI
LIST F,X
*CALL COMSCPD
LIST *
SPACE 4,10
**** ASSEMBLY CONSTANTS.
SSJ$ EQU 1 ASSEMBLE *SSJ=* PROCESSING IN *COMPCUA*
SBUFL MAX 48D,CTALL*5 SCRATCH BUFFER LENGTH
****
TITLE MAIN PROGRAM.
CPD SPACE 4,10
** CPD - MAIN PROGRAM.
ORG PPFW
CPD LJM /PRS/PRS PRESET
FITS EQU CPD FILE INTERLOCK STATUS
CPD1 LDN 1 INDICATE NOT TRACK LIMIT
RJM CDS CHECK DROP STATUS
* LDN 0
STD LI SET LOOP INDEX
LDC RTCL SET REAL TIME
CRD CM
LDD CM+1 SET SECONDS
STD SC
LDD CM+4 SET MILLISECONDS
STD MS
* CHECK LOOP OPERATIONS TIMES.
CPD2 LDD MS SET ELAPSED TIME
SBM CPDA,LI
PJN CPD3 IF NO UNDERFLOW
ADC 10000
CPD3 STD T1
SBM CPDC,LI
MJN CPD4 IF NOT GTREATER THAN MAXIMUM CYCLE TIME
RAM CPDC,LI UPDATE MAXIMUM CYCLE TIME
CPD4 LDM CPDB,LI
ZJN CPD7 IF NO OPERATION TO BE PERFORMED
SBD T1 CHECK OPERATION INTERVAL
SBN 1
PJN CPD7 IF TIME NOT EXPIRED
LDD MS SET NEW BASE TIME
STM CPDA,LI
LDM TLOT,LI SET OPERATION TABLE ADDRESS
STD LO
LDI LO INCREMENT SAMPLE COUNT
ADD BA
STD T1
AOM 1,T1
SHN -14
RAI T1
AOD LO ADVANCE TO PROCESS OPERATIONS
CPD5 LDI LO
STD T1
ZJN CPD6 IF ROUTINE NOT TO BE PERFORMED
RJM 0,T1 PERFORM OPERATION ROUTINE
CPD6 AOD LO ADVANCE TO PROCESS NEXT OPERATION
LMM TLOTL,LI
NJN CPD5 IF MORE OPERATIONS TO PROCESS
CPD7 AOD LI INCREMENT LOOP INDEX
LMN MSLC
NJP CPD2 IF ALL MILLISECOND LOOPS NOT PROCESSED
LDM CPDB,LI
ZJN CPD9 IF NO SNAPSHOT OPERATION TO BE PERFORMED
LDD SC SET ELAPSED TIME
SBM CPDA,LI
PJN CPD8 IF NO UNDERFLOW
ADC 10000
CPD8 SBM CPDB,LI CHECK SNAPSHOT LOOP INTERVAL TIME
MJN CPD9 IF TIME NOT EXPIRED
LDD SC SET NEW BASE TIME
STM CPDA,LI
RJM /3CR/SNO PERFORM SNAPSHOT OPERATION
AOD RC ADVANCE RECORD COUNT
SBD RX
ZJN CPD10 IF END OF BUFFER
LDD WC ADVANCE BUFFER ADDRESS FOR NEXT RECORD
SHN 2
ADD WC
RAD BA
CPD9 LJM CPD1 LOOP
CPD10 EXECUTE 3CS WRITE FILE
CPD11 RJM /3CS/ZFB ZERO FILL BUFFER
EXECUTE 3CR LOAD OVERLAID LOOP OPERATION ROUTINES
LDC RTCL SET INITIAL OPERATION TIMES
CRD CM
LDD CM+4
STM CPDA FAST LOOP
STM CPDA+1 MEDIUM LOOP
STM CPDA+2 SLOW LOOP
LDD CM+1
STM CPDA+3 SNAPSHOT LOOP
UJN CPD9 LOOP
CPDA BSS 0 LOOP OPERATION BASE TIMES
CON 0 FAST LOOP
CON 0 MEDIUM LOOP
CON 0 SLOW LOOP
MSLC EQU *-CPDA MILLISECOND LOOP COUNT
CON 0 SNAPSHOT LOOP
SCLC EQU *-CPDA-MSLC SECOND LOOP COUNT
CPDB BSS 0 LOOP OPERATION INTERVAL TIMES
CON 0 FAST LOOP
CON 0 MEDIUM LOOP
CON 0 SLOW LOOP
CON 0 SNAPSHOT LOOP
CPDC BSS 0 MAXIMUM CYCLE TIMES
CON 0 FAST LOOP
CON 0 MEDIUM LOOP
CON 0 SLOW LOOP
TLOT BSS 0 TABLE OF LOOP OPERATION TABLE ADDRESSES
CON TFLO FAST LOOP OPERATIONS
CON TMLO MEDIUM LOOP OPERATIONS
CON TSLO SLOW LOOP OPERATIONS
TLOTL BSS 0 TABLE OF LOOP OPERATION TABLES LWA + 1
CON TFLOL FAST LOOP OPERATIONS
CON TMLOL MEDIUM LOOP OPERATIONS
CON TSLOL SLOW LOOP OPERATIONS
TFLO BSS 0 TABLE OF FAST LOOP OPERATIONS
CON CNIL INCREMENT FAST LOOP SAMPLE COUNT
CON CDA CHECK DEVICE ACTIVITY
DCBP CON 0 DISABLE BUFFERED I/O
* CON CBP (CHECK BUFFERED I/O PARAMETERS)
DCBC CON 0 DISABLE BUFFERED I/O
* CON CBC (CHECK BUFFERED I/O CHANNEL USAGE)
CON CHU CHECK CHANNEL USAGE
CON /3CR/CMR CHECK MOVE REQUEST
CON CPU CHECK CPU USAGE
CON /3CR/PPU COUNT PP USAGE
TFLOL EQU * TABLE OF FAST LOOP OPERATIONS LWA + 1
TMLO BSS 0 TABLE OF MEDIUM LOOP OPERATIONS
CON CTML INCREMENT MEDIUM LOOP SAMPLE COUNT
CON /3CR/ACA ACCUMULATE CONTROL POINT ACTIVITY
CON /3CR/CMR CHECK MOVE REQUEST
CON /3CR/UEA UPDATE EJT ACTIVITY
TMLOL EQU * TABLE OF MEDIUM LOOP OPERATIONS LWA + 1
TSLO BSS 0 TABLE OF SLOW LOOP OPERATIONS
CON CTOL INCREMENT SLOW LOOP SAMPLE COUNT
CON /3CR/ACP ACCUMULATE CONCURRENT PP ACTIVITY
CON /3CR/AEA ACCUMULATE EST ACTIVITY
CON /3CR/AIA ACCUMULATE IAF ACTIVITY
CON /3CR/UQA UPDATE QFT ACTIVITY
TSLOL EQU * TABLE OF SLOW LOOP OPERATIONS LWA + 1
TITLE LOOP OPERATION ROUTINES.
CBC SPACE 4,10
** CBC - CHECK BUFFERED I/O CHANNEL USAGE.
*
* ENTRY (CBCA) = CHANNEL TABLE ADDRESS.
* (CBCB) = NUMBER OF CHANNEL TABLE ENTRIES.
*
* EXIT BUFFERED I/O CHANNEL USAGE UPDATED.
*
* USES T1, T2, T3, AB - AB+4, CM - CM+4.
*
* MACROS ADO.
CBC SUBR ENTRY/EXIT
LDN 0
STD T3
LDC 0
CBCA EQU *-2 (CHANNEL TABLE ADDRESS)
STD T2 SET CHANNEL TABLE ADDRESS
SHN -14
STD T1
CBC1 SHN 14
ADD T2
ADK CREQ
CRD CM READ CHANNEL TABLE WORD *CREQ*
ADN CCNT-CREQ READ CHANNEL NUMBER
CRD AB
LDD CM
ZJN CBC2 IF NOT BUSY
LDD AB+1 SET CHANNEL NUMBER
LPN 77
STD CM
ADO BICA,CM COUNT CHANNEL ACTIVITY
CBC2 AOD T3 ADVANCE CHANNEL TABLE INDEX
SBN 0
CBCB EQU *-1 (NUMBER OF CHANNEL TABLE ENTRIES)
PJN CBCX IF END OF CHANNELS
LDN CCTL
RAD T2 ADVANCE TABLE ADDRESS
SHN -14
RAD T1
UJN CBC1 CHECK NEXT CHANNEL
CBP SPACE 4,10
** CBP - CHECK BUFFERED I/O PARAMETERS.
*
* ENTRY (CBPA) = FWA BUFFERED I/O TABLES.
*
* EXIT BUFFERED I/O PARAMETERS UPDATED.
*
* USES T2, CM - CM+4.
*
* MACROS ADA.
CBP SUBR ENTRY/EXIT
LDN WRTP-EMTP+1 INITIALIZE CONTROL WORD INDEX
STD T2
CBP1 SOD T2
MJN CBPX IF END OF CONTROL WORDS
CBPA ADC EMTP (FWA CONTROL WORDS + *EMPT*)
CRD CM
LDD CM+1 ADD COUNT OF BUFFERS IN LIST
ADA BILA,T2
UJN CBP1 LOOP
ERRNZ DWTP-EMTP-1 OFFSET ERROR IN *MPAR* TABLE
ERRNZ DRDP-DWTP-1 OFFSET ERROR IN *MPAR* TABLE
ERRNZ WRTP-DRDP-1 OFFSET ERROR IN *MPAR* TABLE
CDA SPACE 4,10
** CDA - CHECK DEVICE ACTIVITY.
*
* ENTRY (BA) = BUFFER BASE ADDRESS OF CURRENT RECORD.
* (ME) = NUMBER OF MS ENTRIES.
* (CDAA) = PP SPEED MASK.
* (CDAB) = FWA MST-S.
*
* EXIT DEVICE ACTIVITY USAGE UPDATED.
*
* USES T1, T2, VB, CM - CM+4.
CDA SUBR ENTRY/EXIT
LDM CDAC COMPUTE RANDOM DELAY
ADC 273D
LPC 0
* LPC 777 (1XPP)
* LPC 1777 (2XPP)
* LPC 3777 (4XPP)
CDAA EQU *-1
STM CDAC
CDA1 SBN 1 NOW COUNT OUT THE DELAY
NJN CDA1 IF NOT END OF DELAY
LDD ME NUMBER OF MS ENTRIES
STD T1
LDD BA SET MASS STORAGE REQUEST ENTRY FWA
ADK DFBL+NMSA
STD VB
LDC ** FWA MST-S
CDAB EQU *-1
STD T2
CDA2 SOD T1
MJN CDAX IF END OF MS ENTRIES
LDD T2
SHN 3
ADN DALL
CRD CM
LDD CM UPDATE ACTIVITY USAGE
LPN 77
RAM 1,VB
SHN -14
RAI VB
ERRNZ P.NMSA-2 CODE DEPENDS ON SIZE
LDN DMBL ADVANCE TO NEXT MS REQUEST ENTRY
RAD VB
LDN MSTXL/10
RAD T2
UJN CDA2 PROCESS NEXT DEVICE
CDAC CON 0 DELAY
CHU SPACE 4,20
** CHU - CHECK CHANNEL USAGE.
*
* ACTIVITY ON CHANNELS ASSIGNED TO BUFFERED I/O DRIVERS
* IS IGNORED HERE AND PROCESSED SEPARATELY IN ROUTINE *CBC*.
* FOR CONCURRENT CHANNELS, ONLY CHANNEL REQUESTED/RESERVED IS
* RECORDED, SINCE DETERMINING CHANNEL ACTIVITY IS IMPRACTICAL.
*
* ENTRY (NP) = NUMBER OF PP-S.
* (PC) = FWA OF PP COMMUNICATIONS AREA.
* (CHUA) = NUMBER OF CHANNELS ON MAINFRAME.
* (CHUB) = FWA CHANNEL TABLE.
*
* EXIT CHANNEL USAGE UPDATED.
*
* USES T1, CM - CM+4.
*
* MACROS ADO.
CHU SUBR ENTRY/EXIT
LDN CTALL CHANNEL STATUS TABLE LENGTH
STD T1
CHUA LDC ** (FWA OF CHANNEL TABLE)
CRM SBUF,T1
LCN 0 INITIALIZE CHANNEL NUMBER
STD T1
CHU1 AOD T1
CHUB LMN 40+** (MAXIMUM CONCURRENT CHANNEL + 1)
ZJN CHUX IF ALL CHANNELS PROCESSED
LDD T1
CHUC SBN ** (MAXIMUM NON-CONCURRENT CHANNEL + 1)
PJN CHU2 IF CONCURRENT CHANNEL
* CHECK FOR BUFFERED I/O USAGE.
LDM SBUF,T1 GET ASSIGNED PP NUMBER
LPN 37
SHN 3 GET PP INPUT REGISTER
ADD PC
CRD CM
LDD CM+1
SCN 77
SHN 6
LMD CM
LMC 3RP1H
ZJN CHU1 IF *1HP*
LMC 3RM1X&3RP1H
ZJN CHU1 IF *1XM*
* SAMPLE CHANNEL DATA.
LDC IJMI GENERATE CHANNEL INSTRUCTION
ADD T1
STM CHUD
CHUD IJM CHU2,** IF CHANNEL INACTIVE
ADO ACCH,T1 INCREMENT CHANNEL ACTIVE COUNT
* THE FOLLOWING CODE IS PERFORMED FOR ALL CHANNELS.
CHU2 LDM SBUF,T1 SET CHANNEL STATUS
SHN 21-13
PJN CHU3 IF NOT REQUESTED
ADO RQCH,T1 INCREMENT CHANNEL REQUESTED COUNT
CHU3 LDM SBUF,T1 SET CHANNEL STATUS
LPN 37
ZJN CHU4 IF NOT RESERVED
ADO RSCH,T1 INCREMENT CHANNEL RESERVED COUNT
CHU4 LJM CHU1 LOOP
CPU SPACE 4,15
** CPU - CPU USAGE.
*
* ENTRY (NC) = NUMBER OF THE SYSTEM CONTROL POINT.
* (CPUA) = MODIFIED IF NO SCR ON MAINFRAME.
* (TCPS) = CPU STATUSES.
* (RN) = P REGISTER MAINTENANCE REGISTER NUMBER.
*
* EXIT CPU ACTIVITY UPDATED.
*
* USES EC, AB - AB+4, CM - CM+4, CN - CN+4, T1 - T3.
*
* MACROS ADO, READMR.
CPU7 LDN /SCR/FCRD+20 READ STATUS/CONTROL REGISTER
OAN CHSC
IAN CHSC
STD T1
SHN -3 CHECK MONITOR MODE
LPN 3
ZJN CPU8 IF NOT MONITOR MODE
SBN 1 SET CPU OFFSET
STD T2
ADO MNMD,T2 INCREMENT MONITOR MODE COUNT
CPU8 LDD T1 CHECK EXTENDED MEMORY TRANSFER
LPN 4
ZJN CPUX IF NO EXTENDED MEMORY TRANSFER ACTIVE
ADO ECST INCREMENT EXTENDED MEMORY TRANS
CPU SUBR ENTRY/EXIT
LDN 0 INITIALIZE CPU COUNT
STD T2
UJN CPU2 CHECK CPU 0 STATUS
CPU1 AOD T2
LMN TCPSL
CPUA ZJN CPU7 IF ALL CPUS PROCESSED
* ZJN CPUX (NO SCR ON MAINFRAME)
LDN CTCUL
CPU2 STD T1 SET CPU USAGE INDEX
LDM TCPS,T2
NJN CPU1 IF CPU OFF
CPUB LJM CPU2.3 DETERMINE NOS CPU USAGE
* UJN CPU2.1 (180 TYPE CPU)
* DETERMINE CODE SEGMENT FOR 180 TYPE CPU.
CPU2.1 LDM PCCC,T2 SET PROCESSOR CONNECT CODE
STD EC
READMR PREG READ P REGISTER
LDM PREG+2 GET PROCESSOR CODE SEGMENT
LPN 17
SHN 10
ADM PREG+3
SBN CSNS
ZJN CPU2.3 IF NOS SEGMENT
SBN CSEI-CSNS
ZJN CPU2.2 IF EI SEGMENT
SBN CSVU-CSEI DETERMINE NOS/VE SYSTEM OR USER SEGMENT
SHN 0-21
LMN 1
ADN 1
CPU2.2 ADN CI18 SET 180 USAGE CATEGORY
STD T1
LJM CPU6 INCREMENT CPU COUNT
* DETERMINE NOS CPU USAGE.
CPU2.3 LDD T2 GET CPU CPA ADDRESS
ADC CPAL
CRD CM
LDD CM+2
ADN TFSW
CRD CN
SBN TFSW-JCIW
CRD AB
LDD CM+2
SHN -7
LMD NC
NJN CPU2.4 IF CPU NOT ACTIVE AT SYSTEM CONTROL POINT
LDD CM+1 GET EXCHANGE PACKAGE TYPE
SHN -6
SBN IDXT
PJN CPU6 IF IDLE PACKAGE
ADN IDXT+1
RAD T1 SET INDEX FOR EXCHANGE PACKAGE
UJN CPU6 INCREMENT CPU USAGE COUNT
CPU2.4 LDN CISU INCREMENT CPU USAGE INDEX TO SUBSYSTEM
RAD T1
LDD AB+2
LMN IRSI
ZJN CPU3 IF ROLLOUT INHIBITED
LMN IRSI
ADC -LSSI
MJN CPU4 IF NOT SUBSYSTEM
CPU3 STD T3 INCREMENT SUBSYSTEM CPU USAGE
ADO SSCU,T3
UJN CPU6 INCREMENT USAGE COUNT
CPU4 AOD T1 INCREMENT CPU USAGE INDEX
SFA EJT,CN
ADN SCLE-JSNE SET JOB ORIGIN TYPE
CRD CN
LDD CN
LPN 17
LMK SYOT
ZJN CPU6 IF SYSTEM ORIGIN
AOD T1 INCREMENT CPU USAGE INDEX
CPU6 ADO CTCU,T1 INCREMENT CPU USAGE COUNT
LJM CPU1 PROCESS NEXT CPU
MRER EQU CPUX ERROR PROCESSOR ADDRESS FOR *COMPMRM*
PCCC BSS 1 PROCESSOR A CONNECT CODE
BSS 1 PROCESSOR B CONNECT CODE
TCPS BSS 0 TABLE OF CPU STATUS (0=ON, 1=OFF)
CON 0 CPU 0 ON/OFF FLAG
CON 0 CPU 1 OF/OFF FLAG
TCPSL EQU *-TCPS TABLE LENGTH
PREG BSS 10 P REGISTER FROM MAINTENANCE UNIT
TITLE RESIDENT SUBROUTINES.
ADA SPACE 4,10
** ADA - ADD VALUE TO BUFFER.
*
* ENTRY (A) = OFFSET INTO BUFFER FOR DOUBLE PRECISION WORD.
* (BA) = BUFFER BASE ADDRESS.
* (T8) = VALUE TO ADD TO DOUBLE PRECISION WORD.
*
* USES T9.
ADA SUBR ENTRY/EXIT
ADD BA
STD T9
LDD T8 ADD VALUE TO BUFFER
RAM 1,T9
SHN -14
RAI T9
UJN ADAX RETURN
CCA SPACE 4,10
** CCA - COMPUTE CPA/PCPA ADDRESS.
*
* ENTRY (A) = CP/PCP NUMBER.
* (NC) = NUMBER OF CONTROL POINTS.
*
* EXIT (A) = CPA/PCPA ADDRESS.
CCA1 ADD NC
SHN 7
CCA SUBR ENTRY/EXIT
SBD NC
MJN CCA1 IF CONTROL POINT
ZJN CCA1 IF SYSTEM CONTROL POINT
SHN 7
CCAA ADC ** (PCP AREAS BASE ADDRESS)
UJN CCAX RETURN
CDS SPACE 4,10
** CDS - CHECK DROP STATUS.
*
* ENTRY (A) = 0 IF TRACK LIMIT.
* (RC) = NUMBER OF RECORDS IN BUFFER.
*
* EXIT (A) = 0.
* TO */3CS/DPP* IF PP TO BE DROPPED.
*
* USES CN, CM - CM+4.
*
* CALLS /3CR/SNO.
*
* MACROS EXECUTE.
CDS SUBR ENTRY/EXIT
STD CN
LDC INWL CHECK *CPD* DROP FLAG
CRD CM
LDD CM+4
LPN 4
ZJN CDSX IF NO DROP OUT
LDD CN
ZJN CDS2 IF TRACK LIMIT
RJM /3CR/SNO PERFORM SNAPSHOT OPERATION
AOD RC ADVANCE RECORD COUNT
EXECUTE 3CS LOAD FILE WRITE ROUTINES
CDS1 LJM /3CS/DPP DROP PP
CDS2 RJM /3CS/CIS CLEAR INTERLOCK STATUS
UJN CDS1 DROP PP
RDM SPACE 4,10
** RDM - READ MEMORY TO BUFFER.
*
* ENTRY (A) = 6/ WORD COUNT, 12/ BUFFER OFFSET.
* (T8 - T9) = CM ADDRESS TO READ FROM.
*
* EXIT (A) = CM LWA+1 OF DATA READ.
*
* USES LA.
RDM SUBR ENTRY/EXIT
ADD BA CALCULATE BUFFER ADDRESS
STM RDMA
SHN -14
STD LA SAVE WORD COUNT
LDD T8
SHN 14
ADD T9
CRM **,LA
RDMA EQU *-1
UJN RDMX RETURN
SPACE 4,10
* COMMON DECKS.
EJT$ EQU 1 INITIALIZE EJT PROCESSING
IFP$ EQU 1 ASSEMBLE REMOTE INITIALIZATION CODE
QFT$ EQU 1 INITIALIZE QFT PROCESSING
*CALL COMPGFP
*CALL COMPMRA
SPACE 4,10
USE LITS FLUSH LITERALS
USE *
SPACE 4,10
* CPD OVERLAY LOAD ADDRESS.
COVL EQU *+5 CPD OVERLAY LOAD ADDRESS
TITLE PRESET.
QUAL PRS
* OVERLAID PRESET COMMON DECKS AND PRESET CODE.
*CALL COMPCUA
QUAL
IFP HERE
QUAL *
PRS SPACE 4,30
** PRS - PRESET.
*
* ENTRY (IR+3 - IR+4) = FET ADDRESS.
*
* EXIT (FO) = 0.
* (FITS) = 0 IF FILE INTERLOCK NOT REQUIRED.
* (FS - FS+4) = DATA FILE FST.
* (LE) = LAST ORDINAL + 1 OF DEFINED EST ENTRIES.
* (LO) .NE. 0.
* (ME) = NUMBER OF MASS STORAGE ENTRIES.
* (NC) = NUMBER OF CONTROL POINTS.
* (NP) = NUMBER OF PPUS.
* (PC) = PPU COMMUNICATION AREA ADDRESS.
* (NM) = NUMBER OF MCT ENTRIES - 1.
* (RX) = MAXIMUM RECORD COUNT IN BUFFER.
* (WC) = DATA RECORD WORD COUNT.
* MAIN CODE/TABLES MODIFIED AS NEEDED.
* TO *CPD11* TO ENTER MAIN LOOP.
*
* ERROR TO *ERR* IF ERROR ENCOUNTERED.
*
* USES BA, FO, LI, LO, MD, MS, NC, NP, PC, SC, RC, RX, WC,
* AB - AB+4, CM - CM+4, CN - CN+4, FS - FS+4, IR - IR+4,
* T1 - T6.
*
* CALLS CPT, CRS, CUA, DFM, FAT, IFP, RCS, RDB, RJC, SAF,
* SEI, SFB, *3CS*, /3CS/CIS, /3CS/DPB, /3CS/RNT,
* /3CS/SIS, /3CS/WES.
*
* MACROS CFI, EXECUTE, MONITOR, SETMS, SFA, STA.
PRS BSS 0 ENTRY
LDK PCPP SET FWA OF PCPA-S
CRD CM
LDD CM+3
SHN 14
LMD CM+4
SBK 200B
STM CCAA+1
SHN -14
LMC ADCI
STM CCAA
RJM IFP
LDN 0 CLEAR FNT ORDINAL POINTER
STD FO
RJM CUA CHECK USER ACCESS
ZJN PRS2 IF ACCESS ALLOWED
LDC ERRA&ERRF * CPD - USER ACCESS NOT VALID.*
PRS1 LMC ERRF * CPD - OVERLAY NOT IN RPL.*
LJM ERR ISSUE ERROR MESSAGE
PRS2 LDC 3R3CR CHECK *3CR* IN RPL
* LDC 3R3CS (CHECK *3CS* IN RPL)
PRSA EQU *-1
STD CM+3
SHN -14
STD CM+2
MONITOR SPLM SEARCH LIBRARY DIRECTORY
LDD CM+1
SCN 77
ZJN PRS1 IF OVERLAY NOT IN RPL
AOM PRSA
LPN 77
SBN 1RS+1
MJN PRS2 IF MORE OVERLAYS TO CHECK
LDN 1 CLEAR *CPD* DROP FLAG
STD CM+1
STD CM+2
LDD MA
CWM PRSC,ON
MONITOR UADM
* CHECK PARAMETER BLOCK ADDRESS.
LDD IR+3 CHECK PARAMETER ADDRESS
LPN 37
STD IR+3
SHN 14
LMD IR+4
SBN 2
MJN PRS3 IF ADDRESS .LT. 2
ADN 2+FETL-1
SHN -6
SBD FL
MJN PRS4 IF PARAMETER BLOCK WITHIN FL
PRS3 LDC ERRB * CPD - PARAMETER ERROR.*
LJM ERR ISSUE ERROR MESSAGE
* GET LOOP PARAMETERS.
PRS4 LDD IR+3 SET ARGUMENTS
SHN 6
ADD RA
SHN 6
ADD IR+4
ADN 4 GET SAMPLE FILE OFFSET IN NFL
CRD AB-1
ERRNZ FO+1-AB CODE DEPENDS ON VALUE
ADN 5-4
CRD CM
ADN 3
CRD CN SET MODE
LDD CN+4
LMN PTAP
ZJN PRS5 IF APPEND MODE REQUEST
LMN PTMD&PTAP
ZJN PRS5 IF MODIFY MODE
LMN PTWR&PTMD
NJN PRS3 IF NOT WRITE MODE
STM FITS CLEAR INTERLOCK NEEDED
PRS5 LDC HBUF SET HEADER BUFFER ADDRESS
STD BA
.1 MICRO 1,2, "VERS" SET CPD VERSION
.2 MICRO 3,2, "VERS"
LDC 2R".1"
STM CPDV,BA
LDC 2R".2"
STM CPDV+1,BA
LDD CM+4
STA DLIL SET FAST LOOP TIME
STM CPDB+0
LDD CM+3
STA DLML SET MEDIUM LOOP TIME
STM CPDB+1
LDD CM+2
STA DLOL SET SLOW LOOP TIME
STM CPDB+2
LDD CM+1
STA DLFW SET SAMPLING/FILE WRITE LOOP TIME
STM CPDB+3
LDD FO
NJN PRS7 IF FILE FOUND
LDC ERRD * CPD - FILE NOT FOUND.*
UJN PRS8 ISSUE ERROR MESSAGE
PRS7 NFA FO,R READ FST INFORMATION
ADN FSTL
CRD T5 SET DIRECT CELLS
CRD FS
LDD IR+2
NJN PRS9 IF FNT SLOT RESERVED
LDC ERRE * CPD - FILE STATUS ERROR.*
PRS8 LJM ERR ISSUE ERROR MESSAGE
PRS9 RJM SEI SEARCH FOR EOI
LDD T6
STD FS+2 SET CURRENT TRACK
LDD T7
STD FS+3
* DETERMINE NUMBER OF CONTROL POINTS, NUMBER OF PPUS,
* AND FWA OF CHANNEL TABLE.
PRS10 LDN PPCP SET PPU COMMUNICATION AREA ADDRESS
CRD CM
LDD CM+4
STD PC
LDD CM+2 SET CURRENT USER EM SHIFT COUNT
ERRNZ MEFL-PPCP
SHN -11
STA UESC
LDC CHTP SET FWA OF CHANNEL TABLE
CRD CM
LDD CM+2
RAM CHUA
LDD CM+3
STM CHUA+1
LDN PPUL READ PP AND CHANNEL COUNT
CRD CM
ERRNZ PPUL-CPPL CODE ASSUMES NPP/CPP DATA IN SAME WORD
ADK MCTP-CPPL GET NUMBER OF MCT ENTRIES
CRD AB
LDD CM+3 SET NUMBER OF PHYSICALLY PRESENT CPP-S
LPN 77
STD T0
STA NCPP
LDD T0 SET MAXIMUM CHANNEL FOR REQUEST/RESERVE
RAM CHUB
LDD CM+1 SET NUMBER OF CONTROL POINTS
STA NCPT
ADN 1
STD NC
SOD AB+2 SET NUMBER OF MCT ENTRIES - 1
STD NM
SBD NC SET NUMBER OF PCP-S
STA NPCP
LDD CM SET CHANNEL COUNT
ADN 1
RAM CHUC
LDD CM+2 SET PP COUNT
STD NP
STD T1 CHECK INACTIVE PPS
STD T2
PRS11 SOD T2
MJN PRS12 IF NO MORE PPS TO CHECK
SHN 3
ADD PC
CRD AB
LDD AB
LMC 2R**
NJN PRS11 IF NOT INACTIVE PP
SOD T1 DECREMENT ACTIVE PP COUNT
UJN PRS11 LOOP FOR NEXT PP
PRS12 LDD T1 SET ACTIVE PP COUNT
STA NNPP
* SET CPU INFORMATION, MEMORY SIZES IN HEADER RECORD.
LDC MABL READ MAINFRAME ATTRIBUTES
CRD CM
ADN EABL-MABL
CRD CN
LDD CM+4 ADJUST RANDOM DELAY FOR PP SPEED
LPN 7
STD T1
SBN PRSDL
PJN PRS13 IF INCORRECT VALUE
LDM PRSD,T1
STM CDAA
PRS13 LDD CM+1 GET CPU 0 ON/OFF STATUS
LPN 1
STM TCPS BIT 0 SET IF CPU 0 OFF
LDD CM+1 GET CPU 1 ON/OFF STATUS
SHN -1
LPN 1
STM TCPS+1 BIT 0 SET IF CPU 1 OFF
LMN 1
ADN 1 SET NUMBER OF CPUS
STA NCPU
LDD CM+1 CHECK MAINFRAME TYPE
STD T1
SHN -6
LPN 31
ZJN PRS14 IF CYBER 170 AND NOT CYBER 176
LDN CPUX-CPU7 DISABLE SCR PROCESSING
RAM CPUA
LDD CM+1
SHN 21-13
MJN PRS14 IF NOT CYBER 180
LDC UJNI+CPU2.1 SET MAINTENANCE REGISTER PROCESSING
STM CPUB
LDD CN+3 SET PROCESSOR A CONNECT CODE
STM PCCC
LDD CN+4 SET PROCESSOR B CONNECT CODE
STM PCCC+1
PRS14 LDD CM+2 SET MACHINE MEMORY SIZE/100B
LPN 77
SHN 14
ADD CM+3
STA MEMS
LDN CMRL SET CMR SIZE/100
CRD CM
LDD CM+4
STA CMRS
LDN ECRL SET USER EXTENDED MEMORY SIZE
CRD CM
LDD CM+1
STA UECS
LDC EPBP READ NUMBER OF EXTENDED MEMORY/PP BUFFERS
CRD CM
LDD CM+3
SHN -6
STA ECPB STORE IN HEADER
LDC BIOL CHECK FOR BUFFERED I/O CHANNELS
CRD CM
LDD CM+2 SET BUFFERED I/O CONTROL TABLE ADDRESS
RAM CBPA+1
SHN -14
ADD CM+1
RAM CBPA
LDD CM+1
SHN 14
LMD CM+2
ZJN PRS15 IF NO BUFFERED I/O
ADN CCTP READ CHANNEL TABLE POINTER WORD
CRD CM
ADN CBTP-CCTP READ CONTROL BUFFER POINTER WORD
CRD AB
LDD CM
RAM CBCB SET NUMBER OF CHANNEL TABLES
LDD CM+4 PRESET CHANNEL TABLE ADDRESS
STM CBCA+1
LDD CM+3
RAM CBCA
LDC CBC ENABLE BUFFERED I/O PROCESSING
STM DCBC
LDC CBP
STM DCBP
LDD AB SET BUFFER COUNT IN HEADER
PRS15 STA TIOB
* SET IAF/TELEX INFORMATION IN HEADER RECORD.
LDN TTEQ FETCH *TT* EST ENTRY
SFA EST
ADK EQDE
CRD CM
LDD CM+4
LPC 777
STA TRMS
* SET MASS STORAGE AND TAPE INFORMATION IN HEADER RECORD.
LDN ESTP SET EST POINTER
CRD T1
LDN NOPE INITIALIZE EST ORDINAL FOR SEARCH
STD T1
LDN 0 INITIALIZE TAPE EQUIPMENT COUNTER
STD T2
STD T5
STD ME INITIALIZE MS ENTRY COUNTER
PRS16 SFA EST,T1 READ EST ENTRY
ADK EQDE
CRD CM
LDD CM+3 SET EQUIPMENT STATUS
LMC 2RMT
ZJN PRS17 IF *MT*
LMC 2RNT&2RMT
ZJN PRS17 IF *NT*
LMC 2RCT&2RNT
ZJN PRS17 IF *CT*
LMC 2RAT&2RCT
NJN PRS18 IF NOT *AT*
PRS17 AOD T2 INCREMENT TAPE EQUIPMENT COUNTER
PRS18 LDD CM
SHN 21-13
PJN PRS19 IF NOT MASS STORAGE
AOD ME COUNT MS ENTRY
LDD T5
NJN PRS19 IF MST FWA ALREADY SET
LDD CM+4 SAVE MST FWA
STD T5
PRS19 AOD T1 ADVANCE EST ORDINAL
LMD T3
NJN PRS16 IF NOT END OF EST
STD LO INDICATE PRESET PROCESSING
LDD T2
STA MTXS
LDD T3 SET LAST ORDINAL + 1 OF EST
STD LE
STA ESTL
LDD ME SET NUMBER OF MASS STORAGE EST ENTRIES
STD T1
STA MXMS
LDD T5 SET FWA MST-S
STM CDAB
LDK HBUF+HFBL+MSUN SET MS DATA BUFFER ADDRESS
STD VB
LDK DFBL SET DATA RECORD LENGTH
STD RX
PRS20 LDD T5 GET MS DATA FROM MST
SHN 3
ADK TDGL
CRD CM
ADK DDLL-TDGL
CRD AB
LDD AB+4 SET UNIT NUMBER
LPN 77
STI VB
LDD CM SET MS TRACK CAPACITY
STM TRKC-MSUN,VB
LDN HMBL ADVANCE TO NEXT MS DATA BLOCK
RAD VB
LDN MSTXL/10 ADVANCE TO NEXT MST
RAD T5
LDN DMBL CALCULATE DATA BLOCK LENGTH
RAD RX
SOD T1
NJN PRS20 IF MORE MST-S TO SCAN
LDN DSSL SET LIBDECK NUMBER
CRD CM
LDD CM+4
STA LIBD
LDC MMFL SET MACHINE ID
CRD CM
LDD CM
STA MCID
LDC MSAP SET MASS STORAGE ALLOCATION AREA
CRD CM
LDN P.MSAA/5
ERRNZ P.MSAA/5*5-P.MSAA CODE DEPENDS ON SIZE
STD T1
LDD CM
LPN 77
SHN 14
ADD CM+1
CRM HBUF+MSAA,T1 READ DEVICE SELECTION INFORMATION
LDN IPRL SET SECONDARY ROLLOUT THRESHOLD
CRD CM
LDD CM+1
STA SROT
* SET FNT, EJT, QFT, FOT, AND SERVICE CLASS FIXED BLOCK
* INFORMATION IN HEADER RECORD.
LDN FNTP READ FNT POINTER
CRD CM
LDD CM+2 SET NUMBER OF FNT ENTRIES
STA MFNT
LDN EJTP READ EJT POINTER
CRD CM
LDD CM+2 STORE NUMBER OF EJT ENTRIES
STA MEJT
LDN QFTP READ QFT POINTER
CRD CM
LDD CM+2 STORE NUMBER OF QFT ENTRIES
STA MQFT
LDC FOTP READ FOT POINTER
CRD CM
LDD CM+2 SET NUMBER OF FOT ENTRIES
STA MFOT
LDN ESTE SET LENGTH OF EST ENTRY
STA ESTS
LDN FNTE SET SIZE OF FNT ENTRY
STA FNTS
LDN EJTE SET LENGTH OF AN EJT ENTRY
STA EJTS
LDN QFTE SET LENGTH OF A QFT ENTRY
STA QFTS
LDN MXSC SET MAXIMUM NUMBER OF SERVICE CLASSES
STA MXNS
LDN MXJS SET MAXIMUM NUMBER OF JOB STATUSES
STA MNJS
LDN MXCS SET MAXIMUM NUMBER OF CONNECTION STATUSES
STA MNCS
* SET SYSTEM DELAY PARAMETERS IN HEADER RECORD.
LDN MSCL SET RECALL AND SWITCH DELAYS
CRD CM
LDD CM+1 SET CPU RECALL DELAY
STA CPUD
LDD CM+2 SET PP AUTO RECALL DELAY
STA PPRD
LDD CM+4 SET MEMORY PAD SIZE
STA MPSZ
LDN JSCL SET JOB SCHEDULER CONTROL WORDS
CRD CM
LDD CM+1 SET INPUT FILE SCHEDULING INTERVAL
STA ISCI
LDD CM+2 SET SCHEDULER CYCLE INTERVAL
STA SCIN
* SET SYSTEM CONSTANTS IN HEADER RECORD.
PRS22 LDN CTCUL SET SYSTEM CONSTANTS
STA CON1
LDN 5*CTALL
STA CON2
LDN MXOT
STA CON3
LDN MXFT
STA CON7
LDN MXRS
STA CON8
LDN 10
STD T1
LDN TIML READ SYSTEM TIME/DATE/VERSION
CRM HBUF+TIME,T1
ERRNZ DTEL-TIML-1 CODE DEPENDS ON LOCATION
ERRNZ SYTL-DTEL-1 CODE DEPENDS ON LOCATION
ERRNZ SVNL-SYTL-4 CODE DEPENDS ON LOCATION
ERRNZ DATE-TIME-5 CODE DEPENDS ON LOCATION
ERRNZ SYSV-DATE-5 CODE DEPENDS ON LOCATION
ERRNZ P.SYSV-6*5 CODE DEPENDS ON SIZE
* CALCULATE SIZE OF HEADER RECORD.
LDN 0
STD AB+4
STD MS
LDD VB CALCULATE LENGTH OF DATA IN BUFFER
ADC -HBUF
STD SC
PRS23 AOD MS CALCULATE WORDS OF DATA IN BUFFER
LCN 5
RAD SC
SBN 5
PJN PRS23 IF MORE WORDS IN BUFFER
LDN P.ESTB/5 CALCULATE WORDS IN EST BLOCK
ERRNZ P.ESTB/5*5-P.ESTB BLOCK LENGTH ERROR
STD T1
PRS24 LDD LE CALCULATE NUMBER OF EST WORDS
RAD AB+4
SOD T1
NJN PRS24 IF MORE WORDS IN EST ENTRY
LDK P.JCBA/5 NUMBER OF JOB CONTROL BLOCK WORDS
ERRNZ P.JCBA/5*5-P.JCBA BLOCK LENGTH ERROR
STD LI
ADD AB+4
ADD MS
STD WC SET HEADER RECORD WORD COUNT
LDN 1 SET RECORD COUNT
STD RC
LDD SC
ZJN PRS25 IF NO LEFT OVER BYTES
AOD WC ADJUST FOR PARTIAL WORD
PRS25 NFA FO,R
CRD CN RETRIEVE SAMPLE FILE NAME
LDD FO
STD CM+4
LDN DLFS CLEAR LOCAL FNT ENTRY
STD CM+1
MONITOR PLFM
SFA FNT,IR+2 ENTER DATA IN SYSTEM FNT
CWD CN
ADN FSTG
CWD FS
* SET JOB CONTROL BLOCK AND EST INFORMATION IN HEADER
* RECORD AND PROCESS HEADER SECTOR WRITES AS NEEDED.
P3CS EQU * *3CR* LWA+1 LIMIT
EXECUTE 3CS LOAD WRITE ROUTINES
RJM /3CS/SIS SET FILE INTERLOCK
SETMS IO,(NS),HBUF-4
RJM /3CS/RNT REQUEST TRACKS FOR HEADER RECORD
LDN 1
RJM RJC GET FWA JOB CONTROL BLOCKS
RJM RDB READ DATA INTO HEADER BUFFER
LDD AB+4 SET EST BLOCK LENGTH
STD LI
LDN 0
SFA EST GET FWA EST
RJM RDB READ EST DATA INTO HEADER BUFFER
LDD WC DUMP REMAINING WORDS TO FILE
RJM /3CS/DPB
LDC HBUF+FSEI FORCE *WES* TO USE HEADER BUFFER
STM /3CS/WESA
LDC HBUF
STM /3CS/WESB
RJM /3CS/WES WRITE EOI SECTOR
RJM /3CS/CIS CLEAR FILE INTERLOCK
* MOVE PPU TO SYSTEM CONTROL POINT.
RJM CRS CHECK RECALL STATUS
ZJN PRS26 IF AUTO RECALL NOT SET
LDN ZERL CLEAR (SYSTEM REQUEST)
CRD CM
LDD RA
SHN 6
ADN 1
CWD CM
MONITOR RCPM RESTART CPU
PRS26 LDD NC
STD CM+1
MONITOR CCAM CHANGE TO SYSTEM CONTROL POINT
LDD IA RESET INPUT REGISTER
CRD IR
LDC PRSB * CPD - INITIATED.*
RJM DFM
LDN 0 ENTER INITIATION EVENT
STD CM+1
LDC /EVENT/CPIE
STD CM+4
SHN -14
STD CM+3
MONITOR EATM
* LDN 0
STD WC
PRS27 AOD WC SET DATA RECORD ROUNDED WORD COUNT
LCN 5
RAD RX
SBN 1
PJN PRS27 IF MORE BYTES IN RECORD
LDN 0 CALCULATE MAXIMUM DATA RECORDS IN BUFFER
STD RX
LDK BUFFLW
SBD WC
PRS28 STD T1
AOD RX INCREMENT RECORD COUNT
LDD T1
SBD WC
PJN PRS28 IF MORE ROOM IN BUFFER
LJM CPD11 ENTER CPD MAIN LOOP
PRSB DATA C* CPD - INITIATED.*
PRSC CON LDOS DECREMENT LOW CORE FIELD BY ONE
CON INWL WORD ADDRESS
CON 2*100+1 BIT ADDRESS/FIELD WIDTH
CON 0,0
PRSD BSS 0 TABLE OF FAST LOOP DELAY RANGES
CON 777 1X PP SPEED
CON 1777 2X PP SPEED
CON 3777 4X PP SPEED
PRSDL EQU *-PRSD
ERR SPACE 4,10
** ERR - PROCESS PRESET ERROR.
*
* ENTRY (A) = ERROR MESSAGE ADDRESS.
*
* EXIT TO *PPR*.
*
* CALLS DFM.
*
* MACROS MONITOR.
ERR BSS 0 ENTRY
RJM DFM ISSUE ERROR MESSAGE
LDD IR+2
ZJN ERR1 IF NO RESERVED SLOT IN SYSTEM FNT
STD CM+1
LDN PFNT RELEASE RESERVED ENTRY
STD CM+2
MONITOR MTRM
ERR1 MONITOR ABTM
LJM PPR RETURN TO PP RESIDENT
ERRA DATA C* CPD - USER ACCESS NOT VALID.*
ERRB DATA C* CPD - PARAMETER ERROR.*
ERRC DATA C* CPD - ALREADY ACTIVE.*
ERRD DATA C* CPD - FILE NOT FOUND.*
ERRE DATA C* CPD - FILE STATUS ERROR.*
ERRF DATA C* CPD - OVERLAY NOT IN RPL.*
RDB SPACE 4,20
** RDB - READ DATA INTO BUFFER.
*
* ENTRY (A) = CM ADDRESS TO READ DATA FROM.
* (BA) = HEADER BUFFER BASE ADDRESS.
* (LI) = WORD COUNT TO READ FROM CM.
* (MS) = NUMBER OF DATA WORDS IN BUFFER.
* (SC) = NUMBER OF EXCESS DATA BYTES IN BUFFER.
* (VB) = FWA TO READ DATA TO IN PP.
* (WC) = REMAINING WORD COUNT OF HEADER RECORD.
*
* EXIT (BA) = HEADER BUFFER BASE ADDRESS.
* (MS) = UPDATED NUMBER OF DATA WORDS IN BUFFER.
* (VB) = LWA+1 OF DATA IN BUFFER.
* (WC) = REMAINING WORD COUNT OF HEADER RECORD.
*
* USES LI, T1, AB - AB+2.
*
* CALLS RWB, /3CS/DPB.
RDB3 LDD LI READ WORDS TO BUFFER
RJM RWB
RDB SUBR ENTRY/EXIT
STD AB+1 SAVE CM ADDRESS TO READ FROM
SHN -14
STD AB
RDB1 LDK NWHB CALCULATE WORDS REMAINING IN BUFFER
SBD MS
STD AB+2
SBD LI WORD COUNT TO READ FROM CM
PJN RDB3 IF SUFFICIENT ROOM IN BUFFER
LDD AB+2 FILL HEADER BUFFER
RJM RWB
LDD LI CALCULATE WORDS LEFT TO READ
SBD AB+2
STD LI
LDC NWHB+10000 DUMP HEADER BUFFER
RJM /3CS/DPB
LDK HBUF RESET HEADER BUFFER BASE ADDRESS
STD BA
STD VB
LDD WC DECREMENT WORDS REMAINING IN RECORD
SBD MS
STD WC
LDN 0 INITIALIZE BUFFER WORD COUNT
STD MS
LDD SC MOVE EXCESS BYTES TO START OF BUFFER
STD T1
RAD VB
RDB2 SOD T1
MJN RDB1 IF END OF EXCESS BYTES
LDM HBUF+HBUFL,T1
STM HBUF,T1
UJN RDB2 LOOP FOR NEXT BYTE
RWB SPACE 4,15
** RWB - READ WORDS TO BUFFER.
*
* ENTRY (A) = NUMBER OF WORDS TO READ.
* (AB - AB+1) = CM ADDRESS OF DATA.
* (MS) = NUMBER OF DATA WORDS IN BUFFER.
* (VB) = FWA TO READ DATA TO IN PP.
*
* EXIT (AB - AB+1) = LWA+1 DATA IN CM.
* (MS) = UPDATED NUMBER OF DATA WORDS IN BUFFER.
* (VB) = LWA+1 DATA IN BUFFER.
*
* USES T1.
RWB SUBR ENTRY/EXIT
ZJN RWBX IF NO WORDS TO READ
STD T1
RAD MS UPDATE NUMBER OF DATA WORDS IN BUFFER
LDD VB SET PP BUFFER ADDRESS FOR READ
STM RWBA
LDD AB GET CM ADDRESS OF DATA
SHN 14
ADD AB+1
CRM **,T1
RWBA EQU *-1
STD AB+1 SAVE UPDATED CM ADDRESS
SHN -14
STD AB
LDD T1 ADVANCE PP BUFFER LWA+1
SHN 2
ADD T1
RAD VB
UJN RWBX RETURN
SPACE 4,10
CFNT
SPACE 4,10
* COMMON DECKS.
*CALL COMPCRS
*CALL COMPRJC
*CALL COMPSEI
SPACE 4,10
USE LITS FLUSH LITERALS
USE *
TITLE HEADER RECORD BUFFER ALLOCATION.
HBUF SPACE 4,10
** HEADER RECORD BUFFER ALLOCATION.
BSS 4 HEADER BYTES FOR SECTOR AND FOR READ-BACK
HBUF EQU * HEADER RECORD BUFFER
RHBS EQU EPFW-4-HBUF REMAINING HEADER BUFFER SPACE
NHSC EQU RHBS/500B NUMBER OF SECTORS IN HEADER BUFFER
NWHB EQU NHSC*100B NUMBER OF WORDS IN HEADER BUFFER
HBUFL EQU NHSC*500B LENGTH OF HEADER BUFFER IN BYTES
HMNL EQU HFBL+MSMX*HMBL MINIMUM HEADER LENGTH
ERRNG HBUFL-HMNL SECTOR SPACE OVERFLOWED
QUAL *
TTL 3CR - CPD OVERLAID LOOP OPERATIONS.
TITLE
QUAL 3CR
IDENT 3CR,PLOX CPD OVERLAID LOOP OPERATIONS
ORG COVL
*COMMENT 3CR - CPD OVERLAID LOOP OPERATIONS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
PMR SPACE 4,10
** PLO - PRESET *CPD* OVERLAID LOOP OPERATIONS.
PLO SUBR ENTRY/EXIT
UJN PLOX RETURN
TITLE LOOP OPERATION ROUTINES.
ACA SPACE 4,10
** ACA - ACCUMULATE CP AND PCP ACTIVITY.
*
* ENTRY (NC) = NUMBER OF CONTROL POINTS.
* (NM) = NUMBER OF MCT ENTRIES - 1.
*
* EXIT CONTROL POINT ACTIVITY UPDATED.
*
* USES AB - AB+4, CM - CM+4, CN - CN+4, T1 - T7.
*
* CALLS CCA.
*
* MACROS ADA, SFA.
ACA6 LDN ACML+AECL*0 SET AVAILABLE CENTRAL MEMORY
CRD CM
LDD CM ACCUMULATE AVAILABLE CM
SHN 14
LMD CM+1
ADA MMAV
LDD CM+3 ACCUMULATE AVAILABLE USER EM
ADA ECAV
ACA SUBR ENTRY/EXIT
LDD NM SET NUMBER OF MCT ENTRIES - 1
STD T1
* SAMPLE CONTROL POINT ACTIVITY.
ACA1 SOD T1
ZJN ACA6 IF ALL CONTROL POINTS PROCESSED
RJM CCA SET CP/PCP ADDRESS
ADK TFSW CHECK FOR JOB ASSIGNMENT TO CP/PCP
CRD CM
LDD CM
ZJN ACA1 IF JOB NOT ASSIGNED
SFA EJT
ADN SCLE-JSNE GET SERVICE CLASS
CRD CN
LDD CN
SHN -6
STD T2
LDD T1 SET CP/PCP ADDRESS
RJM CCA
ADK STSW GET JOB STATUS WORD
CRD CN
ADN FLSW-STSW SET FIELD LENGTH
CRD T3
ADN ECSW-FLSW SET EXTENDED MEMORY WORD
CRD AB
ADN JCIW-ECSW SET JOB CONTROL WORD
CRD CM
SOD T2
MJN ACA1.1 IF RESERVED SERVICE CLASS
SBN MXJC-1
PJN ACA1.1 IF NO JOB CONTROL BLOCK
LDD NC
SBD T1
PJN ACA1.2 IF CONTROL POINT
LDD T3+4 ACCUMULATE CM FL BY SERVICE CLASS
ADD T3 ADD NFL SPACE
ADA MPCP,T2
LDD AB+4 ACCUMULATE EM FL BY SERVICE CLASS
ADA ECPC,T2
ACA1.1 UJN ACA2 CONTINUE
ACA1.2 LDD T3+4 ACCUMULATE CM FL BY SERVICE CLASS
ADD T3 ADD NFL SPACE
ADA MMCP,T2
LDD AB+4 ACCUMULATE ECS FL BY SERVICE CLASS
ADA ECCP,T2
ACA2 LDD CM+2 CHECK SUBSYSTEM ID
SBN IRSI
ZJN ACA3 IF ROLLOUT INHIBITED
ADC -LSSI+IRSI
MJN ACA4 IF NOT SUBSYSTEM
ACA3 STD T2
LDD T3+4 ACCUMULATE MEMORY FOR SUBSYSTEMS
ADD T3 ADD NFL SPACE
ADA SMCP,T2
ACA4 LDD CN CHECK CONTROL POINT STATUS
SHN -11
SBN WCPS
MJN ACA5 IF NOT *W*, *X*, OR *I* STATUS
ADD BA
STD T2
AOM WSCP,T2 INCREMENT CONTROL POINT STATUS COUNT
ACA5 LJM ACA1 PROCESS NEXT CONTROL POINT
ERRNZ ACML-AECL PARAMETER CALCULATION ERROR
ERRNZ XSCP-WSCP-1 OFFSET ERROR
ERRNZ ARCP-WSCP-2 OFFSET ERROR
ERRNZ XCPS-WCPS-1 OFFSET ERROR
ERRNZ ICPS-WCPS-2 OFFSET ERROR
ERRNZ P.ARCP-1 OFFSET ERROR
ACP SPACE 4,10
** ACP - ACCUMULATE CONCURRENT PP ACTIVITY.
*
* EXIT *CTCP* AND *NCPA* FIELDS INCREMENTED IF NECESSARY.
*
* USES T0, CM - CM+4.
*
* NOTE CODE ASSUMES ACTIVE = PHYSICAL - AVAILABLE.
ACP SUBR ENTRY/EXIT
LDN CPPL CHECK CPP CONFIGURATION
CRD CM
LDD CM+3
LPN 77
ZJN ACPX IF NO CONCURRENT PP-S ON SYSTEM
STD T0
LDN PPAL CHECK NUMBER OF AVAILABLE CPP-S
CRD CM
LDD CM+3
LPN 77
STD CM+3
NJN ACP1 IF CPP(S) AVAILABLE
ADO NCPA INCREMENT *NO CPP AVAILABLE* COUNTER
ACP1 LDD T0
SBD CM+3
ADA CTCP INCREMENT *ACTIVE CPP-S* COUNTER
UJN ACPX RETURN
AEA SPACE 4,10
** AEA - ACCUMULATE EST ACTIVITY.
*
* ENTRY (BA) = BUFFER BASE ADDRESS OF CURRENT RECORD.
* (LE) = LAST ORDINAL + 1 OF DEFINED EST ENTRIES.
*
* EXIT EST ACTIVITY UPDATED.
*
* USES T1, T2, VB, CM - CM+4, CN - CN+4.
*
* MACROS ADO, SFA.
AEA SUBR ENTRY/EXIT
LDD BA SET MASS STORAGE TRACK ENTRY FWA
ADK DFBL+TRES
STD VB
LDN NOPE SET FIRST EST ORDINAL
STD T1
* SAMPLE EQUIPMENT STATUS.
AEA1 SFA EST,T1 READ MST ENTRY
ADK EQDE
CRD CM
ADK EQAE-EQDE
CRD CN
LDD CM CHECK MASS STORAGE
SHN 21-13
PJN AEA3 IF NOT MASS STORAGE
LDD CM+4
SHN 3
ADK TDGL
CRD CM
LDD CM+4 ACCUMULATE AVAILABLE TRACKS
RAM 1,VB
SHN -14
RAI VB
ERRNZ P.TRES-2 CODE DEPENDS ON SIZE
LDN DMBL
RAD VB ADVANCE TO NEXT MS TRACK ENTRY
AEA2 AOD T1 INCREMENT EST ORDINAL
LMD LE CHECK END OF DEFINED EST ENTRIES
NJN AEA1 IF EST NOT COMPLETE
UJN AEAX RETURN
AEA3 LDD CN+4
ZJN AEA2 IF NOT ASSIGNED
LDD CM
LPN 2
NJN AEA2 IF DEVICE IS DOWN OR OFF
LDD CM+3 GET DEVICE TYPE
LMC 2RMT
ZJN AEA4 IF *MT*
LMC 2RCT&2RMT
ZJN AEA3.2 IF *CT*
LMC 2RNT&2RCT
ZJN AEA3.1 IF *NT*
LMC 2RAT&2RNT
NJN AEA2 IF NOT *AT*
LDN 1
AEA3.1 ADN 1
AEA3.2 ADN 1
AEA4 STD T2 SET TAPE DEVICE TYPE
ADO DRES,T2 INCREMENT TAPE DRIVES IN USE
UJN AEA2 LOOP
AIA SPACE 4,10
** AIA - ACCUMULATE IAF ACTIVITY.
*
* EXIT IAF ACTIVITY UPDATED.
*
* USES T1, AB - AB+4, CM - CM+4, CN - CN+4.
*
* CALLS PIR, RRR, SRR.
*
* MACROS ADA.
AIA SUBR ENTRY/EXIT
LDC /IAF/VCPT*1S7 CHECK IAF CONTROL POINT
ADN JCIW
CRD CM
LDD CM+2
LMC IFSI
NJN AIAX IF IAF NOT PRESENT
RJM PIR PRESET WITH IAF R-REGISTER
RJM SRR SET IAF R-REGISTER
LDD TA SET IAF RA
SHN 6
ADN /IAF/VANL SET NUMBER OF ACTIVE USERS
CRD AB
ADN /IAF/VPAL-/IAF/VANL SET POT CONTROL WORDS
CRD CN
ADN /IAF/VPUL-/IAF/VPAL
CRD CM
RJM RRR RESTORE R-REGISTER
LDD AB+4 ACCUMULATE ACTIVE USER COUNT
ADA ANTX
LDD CN+4 ACCUMULATE POTS ALLOCATED
ADA PATX
LDD CM+4 ACCUMULATE POTS IN USE
ADA PUTX
LJM AIAX RETURN
CMR SPACE 4,10
** CMR - CHECK STORAGE MOVE REQUEST.
*
* ENTRY (LI) = OPERATION LOOP INDEX.
*
* EXIT STORAGE MOVE REQUEST ACTIVITY UPDATED.
*
* USES T1, CM - CM+4.
*
* MACROS ADO.
CMR3 ADO SMRP INCREMENT STORAGE MOVE REQUEST PENDING
CMR SUBR ENTRY/EXIT
LDN CMCL CHECK STORAGE MOVE REQUEST
CRD CM
LDD CM
LMC 7777
ZJN CMR2 IF NO STORAGE MOVE REQUEST PENDING
LDD LI CHECK OPERATION LOOP INDEX
ZJN CMR3 IF FAST LOOP OPERATION
LDN 0 SET INITIAL OFFSET
STD T1
CMR1 LDM LSMR,T1 COMPARE MOVE REQUESTS
LMM CM,T1
NJN CMR2 IF NOT EQUAL
AOD T1 INCREMENT OFFSET
LMN 5
NJN CMR1 IF COMPARE NOT COMPLETE
ADO SSMP INCREMENT SAME STORAGE MOVE PENDING
CMR2 LDD LI CHECK OPERATION LOOP INDEX
ZJN CMRX IF FAST LOOP OPERATION
LDD MA SET LAST MOVE REQUEST
CWD CM
CRM LSMR,ON
UJN CMRX RETURN
LSMR BSSZ 5 LAST STORAGE MOVE REQUEST BUFFER
PPU SPACE 4,10
** PPU - PP USAGE.
*
* ENTRY (NP) = NUMBER OF PP-S AVAILABLE.
*
* EXIT PP USAGE UPDATED.
*
* USES CM - CM+4.
*
* MACROS ADA, ADO.
PPU SUBR ENTRY/EXIT
LDN PPAL READ AVAILABLE PP-S
CRD CM
LDD NP ACCUMULATE PP USAGE
SBD CM+4
ADA CTPP
LDC PQRL READ PP QUEUE POINTER
CRD CM
LDD CM+4
ZJN PPU3 IF NO PP-S QUEUED
ADO NPAV INCREMENT NO PP AVAILABLE COUNT
PPU3 LDN JSCL
CRD CM
LDD CM
SHN 21-13
PJN PPU4 IF JOB SCHEDULER NOT ACTIVE
ADO NSJA INCREMENT JOB SCHEDULER ACTIVE COUNT
PPU4 LDC SDAP READ *MTR* DATA
CRD CM
LDD CM
SHN 14
ADD CM+1
ADN MTRS
CRD CM
LDD CM+4 ACCUMULATE *MTR* CYCLE TIME
ADA MTCT
LJM PPUX RETURN
SAA SPACE 4,10
** SAA - SET EXCHANGE PACKAGE CPU ACCUMULATOR ADDRESS.
*
* ENTRY (A) = SYSTEM CONTROL POINT EXCHANGE PACKAGE TYPE.
* (AB+3 - AB+4) = *CPUMTR* SYSTEM CONTROL POINT EXCHANGE
* PACKAGE TABLE POINTER.
*
* EXIT (A) = ADDRESS OF EXCHANGE PACKAGE CPU ACCUMULATOR.
* (A) = 0 IF EXCHANGE PACKAGE NOT IN USE.
*
* USES (CN - CN+4).
SAA SUBR ENTRY/EXIT
STD CN SAVE INDEX
LDD AB+3 SET EXCHANGE PACKAGE TABLE ADDRESS
SHN 14
ADD AB+4
ADD CN SET ENTRY ADDRESS
CRD CN READ TABLE ENTRY
LDD CN+3 SET EXCHANGE PACKAGE ADDRESS
LPN 77
SHN 14
ADD CN+4
ADN CTMW SET ACCUMULATOR ADDRESS
UJN SAAX RETURN
SNO SPACE 4,10
** SNO - SNAPSHOT LOOP OPERATIONS
*
* EXIT SNAPSHOT LOOP VARIABLES UPDATED.
*
* USES AB - AB+4, CM - CM+4.
*
* CALLS SAA.
*
* MACROS RDM.
SNO SUBR ENTRY/EXIT
LDN INSL SAMPLE INSTALLATION AREA
RDM INSA
LDN PDTL GET PACKED DATE AND TIME
RDM PDTM
ADN RTCL-PDTL-P.PDTM/5 SAMPLE REAL TIME CLOCK
RDM RLTM
LDC SDAP SAMPLE STATISTICAL DATA AREA
CRD CM
LDD CM
SHN 14
ADD CM+1
RDM SDAA
LDD NC SAMPLE PROGRAM MODE CPUMTR TIME
SHN 7
ADN CPTW
RDM PGTM
LDC CMTP GET *CPUMTR* FWA
CRD AB
LDD AB+3
SHN 14
ADD AB+4
ADN CSXP EXCHANGE PACKAGE TABLE POINTER
CRD AB
LDN SMXT SET STORAGE MOVE ACCUMULATOR ADDRESS
RJM SAA
RDM SMTM SET STORAGE MOVE TIME
LDM DCBP
ZJN SNO1 IF BUFFERED I/O NOT CONFIGURED
LDN PSXT SET PSEUDO-PP ACCUMULATOR ADDRESS
RJM SAA
RDM PSTM SET PSEUDO-PP TIME
SNO1 LDM TCPS
ZJN SNO2 IF CPU 0 *ON*
LDN MIXT SET MAIN IDLE PACKAGE ACCUMULATOR ADDRESS
UJN SNO3 READ CPU 1 IDLE TIME
SNO2 LDN MIXT SET MAIN IDLE PACKAGE ACCUMULATOR ADDRESS
RJM SAA
RDM I0TM SET CPU 0 IDLE TIME
LDM TCPS+1
NJN SNO4 IF CPU 1 *OFF*
LDN DIXT SET CPU 1 IDLE PACKAGE ACCUMULATOR ADDRESS
SNO3 RJM SAA
RDM I1TM SET CPU 1 IDLE TIME
SNO4 LJM SNOX RETURN
UEA SPACE 4,10
** UEA - UPDATE EJT ENTRY.
*
* ENTRY (BA) = BUFFER BASE ADDRESS OF CURRENT RECORD.
*
* EXIT EJT ACTIVITY UPDATED.
*
* USES CM+2, AB - AB+4, CN - CN+4, T1 - T5.
*
* MACROS ADA, ADO, SFA.
UEA SUBR ENTRY EXIT
LDN EJTP READ EJT POINTER
CRD CM
UJN UEA2 ACCESS EJT
* SEARCH EJT TO DETERMINE JOB STATUS BY SERVICE CLASS.
UEA1 SOD CM+2 DECREMENT EJT ORDINAL
ZJN UEAX IF NO MORE ENTRIES
UEA2 SFA EJT,CM+2 ACCESS EJT ENTRY
CRD CN GET JOB STATUS
ADN SCHE-JSNE GET SCHEDULER FIELD
CRD AB
ADN SCLE-SCHE GET SERVICE CLASS
CRD T1
LDD CN
ZJN UEA1 IF FREE ENTRY
LDD T1
SHN -6
SBN 1
STD T1
MJN UEA1 IF RESERVED SERVICE CLASS
SBN MXJC-1
PJN UEA1 IF NO JOB CONTROL BLOCK
ADO EJTU INCREMENT ENTRIES IN USE
LDD CN+4 GET JOB STATUS
SHN -1
LPN 37
STD T2 (T2) = JOB STATUS
LMN EXJS
ZJN UEA3 IF JOB EXECUTING
LMK PCJS&EXJS
ZJN UEA3 IF JOB AT PCP
* DETERMINE MEMORY IN ROLLOUT QUEUE.
LDD T5 INCREMENT FL ASSIGNED TO JOB
ADA MMRQ,T1
LDD T4 INCREMENT EXTENDED MEMORY ROLLOUT QUEUE
ADA ECRQ,T1
* INCREMENT JOB STATUS ACTIVITY BY SERVICE CLASS.
UEA3 LDN MXJC-1 CALCULATE JOB STATUS*(MXJC-1)
STD T3
LDN 0
STD T4
UEA4 LDD T2
RAD T4
SOD T3
NJN UEA4 IF NOT COMPLETE
LDD T4
ADD T1 ADD JOB CLASS OFFSET
ADD BA ADD BUFFER BASE ADDRESS
STD T2
AOM JSSC,T2 INCREMENT JOB STATUS BY SERVICE CLASS
ERRNZ P.JSSC-1 CODE DEPENDS ON SIZE
* DETERMINE NUMBER OF NON-INTERACTIVE, ON-LINE, OR
* DETACHED INTERACTIVE JOBS.
LDD CN+4 GET CONNECTION STATUS
SHN -7
LPN 17
STD T1 (T1) = CONNECTION STATUS
ADO JBCS,T1 INCREMENT CONNECTION STATUS
LJM UEA1 PROCESS NEXT EJT ENTRY
UQA SPACE 4,10
** UQA - UPDATE QFT ACTIVITY.
*
* ENTRY (BA) = BUFFER BASE ADDRESS OF CURRENT RECORD.
*
* EXIT QFT ACTIVITY UPDATED.
*
* USES CM+2, CN - CN+4, T1 - T5.
*
* MACROS ADO, SFA.
UQA SUBR ENTRY/EXIT
LDN QFTP READ QFT POINTER
CRD CM
UJN UQA3 ACCESS QFT
* SEARCH QFT TO DETERMINE QUEUE TYPES.
UQA1 ADO QACP INCREMENT FILES ASSIGNED TO CP
UQA2 SOD CM+2 DECREMENT QFT ORDINAL
ZJN UQAX IF NO MORE ENTRIES
UQA3 SFA QFT,CM+2 ACCESS QFT ENTRY
CRD CN
ADN SCLQ-JSNQ GET SERVICE CLASS
CRD T1
LDD CN
ZJN UQA2 IF FREE ENTRY
LDD T1
SHN -6
STD T1
ZJN UQA2 IF RESERVED SERVICE CLASS
SBN MXJC
PJN UQA2 IF NO JOB CONTROL BLOCK
ADO QFTU INCREMENT ENTRIES IN USE
SOD T1
LDD CN+4
LPN 2
NJN UQA1 IF JOB ASSIGNED TO CP
LDD CN+4
SHN -11
LMK INQT
ZJN UQA6 IF INPUT QUEUE FILE TYPE
LMN PRQT&INQT
ZJN UQA5 IF PRINT QUEUE FILE TYPE
LMN PHQT&PRQT
ZJN UQA4 IF PUNCH QUEUE FILE TYPE
LDN QNCP-PFSC
UQA4 ADN PFSC-LPSC
UQA5 ADN LPSC-IFSC
UQA6 ADD BA CALCULATE ADDRESS OF QUEUE ENTRY
RAD T1
AOM IFSC,T1 INCREMENT QUEUE COUNT FOR SERVICE CLASS
LJM UQA2 LOOP
SPACE 4,10
** COMMON DECKS.
QUAL
PIR$ EQU 1 SELECT ASSEMBLY OF *PIR* FOR IAF R-REG
VCPT EQU /IAF/VCPT DEFINE CONTROL POINT FOR *COMPSRR*
QUAL *
*CALL COMPSRR
ERRNZ P.IFSC-1 CODE DEPENDS ON SIZE
ERRNZ P.LPSC-1 CODE DEPENDS ON SIZE
ERRNZ P.PFSC-1 CODE DEPENDS ON SIZE
ERRNZ P.QNCP-1 CODE DEPENDS ON SIZE
SPACE 4,10
USE LITS FLUSH LITERALS
USE *
QUAL *
R3CR EQU *+4-COVL ROUND LENGTH OF *3CR*
L3CR EQU R3CR/5*5 LENGTH OF *3CR*
TTL 3CS - CPD FILE WRITE OPERATIONS.
TITLE
QUAL 3CS
IDENT 3CS,PFWX CPD FILE WRITE OPERATIONS
ORG COVL
*COMMENT 3CS - CPD FILE WRITE OPERATIONS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
PFW SPACE 4,10
** PFW - PRESET CPD FILE WRITE OPERATIONS.
*
* ENTRY (LO) = 0 IF CALLED FROM PRESET.
*
* CALLS FWO.
PFW SUBR ENTRY/EXIT
LDD LO
ZJN PFWX IF OVERLAY LOAD BY PRESET
RJM FWO PERFORM FILE WRITE OPERATION
UJN PFWX RETURN
TITLE FILE WRITE ROUTINES.
CIS SPACE 4,10
** CIS - CLEAR INTERLOCK STATUS.
*
* ENTRY (FITS) = 0 IF FILE INTERLOCK NOT REQUIRED.
* (FS - FS+4) = DATA FILE FST.
*
* USES T6.
*
* CALLS CTI.
CIS SUBR ENTRY/EXIT
LDM FITS CHECK FILE INTERLOCK STATUS
ZJN CISX IF FILE INTERLOCK NOT REQUIRED
LDD FS+1
STD T6
RJM CTI CLEAR TRACK INTERLOCK
UJN CISX RETURN
DPB SPACE 4,20
** DPB - DUMP BUFFER TO FILE.
*
* ENTRY (A) = 6/EOR FLAG, 12/WORD COUNT.
* (BA) = BUFFER ADDRESS.
* (FS - FS+4) = DATA FILE FST.
* (T5) = EQUIPMENT.
* (T6) = TRACK.
* (T7) = SECTOR.
*
* EXIT (BA) = LWA+1 WORDS IN BUFFER WRITTEN TO FILE.
* (T6) = UPDATED CURRENT TRACK.
* (T7) = UPDATED CURRENT SECTOR.
*
* ERROR TO *DPP* IF NEXT TRACK NOT RESERVED AND
* SYSTEM DEBUG DISABLED.
*
* USES BA, CN, T3, T6, T7.
*
* CALLS CIS, SNT, WDS, WES.
*
* MACROS MONITOR.
DPB SUBR ENTRY/EXIT
STD T3 SET WORD COUNT
SHN 6
STD CN SAVE EOR FLAG
DPB1 LDD T3
NJN DPB2 IF MORE WORDS TO WRITE
LDD CN
NJN DPBX IF NO EXTRA EOR TO WRITE
AOD CN
DPB2 SOD BA
LDD HN
STI BA
LDD T3
SBD HN
PJN DPB3 IF FULL SECTOR
LDD T3 SET SHORT SECTOR
STI BA
LDN 0
DPB3 STD T3
SOD BA
LDD T7
ADN 1
STI BA
LMM SLM
NJN DPB4 IF NOT AT END OF TRACK
RJM SNT GET NEXT TRACK
STI BA
SHN 6
PJP DPB6 IF NEXT TRACK NOT ALLOCATED
DPB4 LDD BA WRITE SECTOR
LMC WCSF
RJM WDS
PJN DPB4.2 IF NO ERROR
SHN 21-11
PJN DPB4.1 IF NOT PREVIOUS SECTOR ERROR
LDM WDSE REWRITE PREVIOUS SECTOR
* LMC WLSF
ERRNZ WLSF CODE DEPENDS ON VALUE
RJM WDS
PJN DPB4 IF NO ERROR
DPB4.1 RJM WES ATTEMPT TO WRITE EOI SECTOR
RJM CIS CLEAR FILE INTERLOCK
LJM DPP DROP PP
DPB4.2 LDI BA SET NEXT SECTOR
STD T7
SHN 6
PJN DPB5 IF NOT NEW TRACK
SHN -6 SET TRACK
STD T6
LDN 0 CLEAR SECTOR
STD T7
DPB5 AOD BA GET SECTOR WORD COUNT
LDI BA ADVANCE BUFFER ADDRESS TO NEXT SECTOR
SHN 2
ADI BA
ADN 1
RAD BA ADVANCE BUFFER ADDRESS
LJM DPB1 LOOP TO WRITE NEXT SECTOR
DPB6 RJM WES WRITE EOI
RJM CIS CLEAR FILE INTERLOCK
LDN 0 SET NO ERROR FLAG
STD CM+2
LDC * SET ADDRESS WHERE ERROR DETECTED
STD CM+1
MONITOR CHGM CONDITIONAL HANG
* LJM DPP DROP PP
DPP SPACE 4,10
** DPP - DROP PP.
*
* ENTRY (FO) = FNT ORDINAL.
* (MD) = MODE.
*
* USES CM - CM+4.
*
* CALLS DFM, *0DF*.
*
* MACROS MONITOR.
DPP BSS 0 ENTRY
LDC DPPA
RJM DFM ISSUE TERMINATION MESSAGE
* LDN 0
STD CM+1
LDN /EVENT/CPTE ISSUE TERMINATION EVENT
STD CM+4
SHN -14
STD CM+3
MONITOR EATM
MONITOR DPPM DROP PPU
LJM PPR RETURN TO PP RESIDENT
DPPA DATA C* CPD - TERMINATED.*
FWO SPACE 4,10
** FWO - FILE WRITE OPERATIONS.
*
* ENTRY (FS - FS+4) = DATA FILE FST.
* (RC) = RECORD COUNT IN BUFFER.
* (WC) = WORD COUNT OF RECORD.
*
* USES BA, RC.
*
* CALLS CIS, DPB, RNT, SIS, WES.
*
* MACROS SETMS.
FWO SUBR ENTRY/EXIT
RJM SIS SET INTERLOCK STATUS
SETMS IO,(NS),BUFF-4
RJM RNT REQUEST TRACKS
LDK BUFF SET BUFFER BASE ADDRESS
STD BA
FWO1 LDD WC WRITE ENTIRE RECORD
RJM DPB DUMP BUFFER TO FILE
SOD RC
NJN FWO1 IF MORE RECORDS TO WRITE
RJM WES WRITE EOI SECTOR
RJM CIS CLEAR INTERLOCK STATUS
UJN FWOX RETURN
RNT SPACE 4,15
** RNT - REQUEST TRACKS.
*
* ENTRY (FS - FS+4) = FST ENTRY.
* (RC) = NUMBER OF RECORDS TO WRITE.
* (T5) = EQUIPMENT.
* (T6) = TRACK.
* (T7) = SECTOR.
* (WC) = WORD COUNT OF RECORD.
*
* USES T2, T3, CM - CM+4.
*
* CALLS CDS, SNT.
*
* MACROS DELAY, MONITOR.
RNT SUBR ENTRY/EXIT
LDN 0
STD T3
LDD RC
STD T2
RNT1 LDD WC CALCULATE SECTORS TO WRITE
ADN 77
SHN -6
RAD T3
LDD WC
LPN 77
NJN RNT2 IF EOR COUNTED
AOD T3
RNT2 SOD T2
NJN RNT1 IF MORE RECORDS TO WRITE
AOD T3 ALLOW FOR EOI
ADD T7 CHECK SECTORS LEFT ON CURRENT TRACK
RNT3 SBM SLM
STD T3
SBN 1
PJN RNT5 IF NOT ENOUGH SECTORS ON CURRENT TRACK
RNT4 LDD FS+2 RESET CURRENT TRACK
STD T6
UJN RNTX RETURN
RNT5 RJM SNT SET NEXT TRACK
SHN 6
PJN RNT6 IF NEXT TRACK NOT ASSIGNED
SHN -6
STD T6
LDD T3
UJN RNT3 CHECK SECTORS ON NEXT TRACK
RNT6 LDD T5 SET EQUIPMENT EST ORDINAL
STD CM+1
LDD T6 SET CURRENT TRACK
STD CM+2
LDN 0
STD CM+3
LDD T3 REQUEST REMAINING SECTORS
STD CM+4
MONITOR RTCM REQUEST TRACK TRAIN
LDD CM+4
NJN RNT4 IF TRACKS ASSIGNED
RJM CDS CHECK DROP STATUS
RNT7 DELAY
LDD T2
NJN RNT6 IF EVENT ALREADY ISSUED
AOD T2 SET FLAG
LDD CP SET TRACK LIMIT MESSAGE
ADN MS2W
CWM RNTA,TR *CPD - TRACK LIMIT.*
LDN ZERL ISSUE TRACK LIMIT EVENT
CRD CM
LDN /EVENT/TKLE
STD CM+4
MONITOR EATM
UJN RNT7 RETRY REQUEST
RNTA DATA C*CPD - TRACK LIMIT.*
SIS SPACE 4,15
** SIS - SET INTERLOCK STATUS.
*
* ENTRY (FITS) = 0 IF FILE INTERLOCK NOT REQUIRED.
* (FS - FS+4) = DATA FILE FST.
*
* EXIT INTERLOCK SET IF REQUIRED.
* (T5) = EQUIPMENT EST ORDINAL.
* (T6) = CURRENT TRACK.
* (T7) = CURRENT SECTOR.
*
* CALLS IRA, STI.
SIS SUBR ENTRY/EXIT
LDD FS SET EQUIPMENT
STD T5
RJM IRA INITIALIZE RANDOM ACCESS PROCESSORS
LDM FITS CHECK FILE INTERLOCK STATUS
ZJN SIS1 IF FILE INTERLOCK NOT REQUIRED
LDD FS+1 SET FIRST TRACK
STD T6
RJM STI SET TRACK INTERLOCK
SIS1 LDD FS+3 SET CURRENT SECTOR
STD T7
LDD FS+2 SET CURRENT TRACK
STD T6
UJN SISX RETURN
WES SPACE 4,15
** WES - WRITE EOI SECTOR.
*
* ENTRY (T5) = EQUIPMENT.
* (T6) = TRACK.
* (T7) = SECTOR.
*
* EXIT (FS - FS+4) = UPDATED FST ENTRY.
* ENHANCED EOI SECTOR WRITTEN.
* ENDMS ISSUED.
* TRT UPDATED TO REFLECT NEW EOI.
*
* CALLS WEI.
*
* MACROS ENDMS, MONITOR.
WES SUBR ENTRY/EXIT
LDD T6 SET CURRENT TRACK
STD FS+2
LDD T7 SET CURRENT SECTOR
STD FS+3
LDD MA WRITE DATA FILE POINTERS
CWD FS
CRM BUFF+FSEI,ON COPY FST TO EOI BUFFER
* CRM HBUF+FSEI,ON (PRESET DIRECT CALL)
WESA EQU *-1
LDC BUFF WRITE ENHANCED EOI
* LDC HBUF (PRESET DIRECT CALL)
WESB EQU *-1
RJM WEI
ENDMS
LDD T5 SET EQUIPMENT
LMC 4000
STD CM+1
LDD T6 SET CURRENT TRACK
LPC 3777
STD CM+2
LDD T7 SET CURRENT SECTOR
STD CM+3
MONITOR DTKM
UJN WESX RETURN
ZFB SPACE 4,10
** ZFB - ZERO FILL BUFFER.
*
* ENTRY (WC) = WORD COUNT OF RECORD.
* (RX) = MAXIMUM NUMBER OF RECORDS IN BUFFER.
*
* EXIT (BA) = BUFFER BASE ADDRESS.
* (RC) = 0.
*
* USES T1, T2, BA.
ZFB SUBR ENTRY/EXIT
LDN 0 CLEAR RECORD COUNT
STD RC
LDC BUFF SET BUFFER BASE ADDRESS
STD BA
STD T1
LDD RX GET MAXIMUM RECORD COUNT
STD T2
ZFB1 LDD WC
SHN 2
ADD WC
RAD T1
SOD T2
NJN ZFB1 IF MORE RECORDS TO COUNT
ZFB2 SOD T1
SBD BA
MJN ZFBX IF BUFFER CLEARED
LDN 0
STI T1
UJN ZFB2 LOOP
SPACE 4,10
* COMMON DECKS.
QUAL$ EQU 0 DO NOT QUALIFY COMMON DECKS
*CALL COMPCTI
IRA$ EQU 1 SET PRESET PRESENT
*CALL COMPSNT
*CALL COMPIRA
*CALL COMPSTI
WEI$ EQU 0 SET EOI BUFFER SUPPLIED BY CALLER
*CALL COMPWEI
SPACE 4,10
USE LITS FLUSH LITERALS
USE *
QUAL *
R3CS EQU *+4-COVL ROUND LENGTH OF *3CS*
L3CS EQU R3CS/5*5 LENGTH OF *3CS*
ERRNG /PRS/P3CS-COVL-L3CS CHECK OVERFLOW INTO PRESET CODE
MLOV MAX L3CR,L3CS MAXIMUM LENGTH OF OVERLAYS
SBUF EQU EPFW-SBUFL SCRATCH BUFFER
BUFF EQU COVL+MLOV+4 DATA BUFFER FWA
BUFFL EQU SBUF-BUFF MAXIMUM BUFFER LENGTH IN BYTES
BUFFLW EQU BUFFL/5 MAXIMUM BUFFER LENGTH IN WORDS
ERRNG BUFFLW*5-DFBL-MSMX*DMBL INSUFFICIENT BUFFER SPACE
TTL CPD - COLLECT PERFORMANCE DATA.
SPACE 4,10
END