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