IDENT 1RO,ROJ
PERIPH
BASE MIXED
SST
SYSCOM
*COMMENT 1RO - ROLLOUT JOB.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TITLE 1RO - ROLLOUT JOB.
SPACE 4,10
*** 1RO - ROLLOUT JOB.
* G. R. MANSFIELD. 70/10/24.
* R. E. TATE. 71/01/11.
* L. C. HAAS. 75/03/25. RESEQUENCE.
* C. A. LACEY. 77/04/21.
SPACE 4,10
*** *1RO* PERFORMS JOB ROLLOUT AND DM* FILE CREATION. IT
* IS CALLED BY *1AJ* FOR FUNCTIONS 0 AND 1. FUNCTION 2 IS
* CALLED DIRECTLY BY *CPUMTR*.
SPACE 4,10
*** CALL.
*
*T 18/ *1RO*,1/,5/ CP,12/ FN,24/ N
* CP CONTROL POINT NUMBER
* FN = 0 ROLLOUT OF A CONTROL POINT JOB.
* = 1 SELECTIVE ROLLOUT TO FILE DM* ACCORDING TO *DMP=*
* PARAMETER.
* = 2 PSEUDO-ROLLOUT.
* = 3 ROLLOUT OF A PSEUDO-CONTROL POINT JOB. THIS MAY BE A
* COMPOUND ROLLOUT.
* N = ERROR FLAG FOR INTERACTIVE JOB (FUNCTION 0).
* = PARAMETERS FROM DMP= PROGRAM *PST* ENTRY (FUNCTION 1).
* 9/,1/ C,1/,1/ U,12/ FL
* C = CREATE DM* FILE ONLY.
* U = CREATE DM* AS AN UNLOCKED FILE.
* FL = 0, DUMP CPA, ENTIRE CM FL AND ECS FL.
* .NE. 0, DUMP CPA AND FL*100B OF CM FL.
* = 12/ TN,12/ PN (FUNCTIONS 2 AND 3)
* TN TERMINAL NUMBER IF *1TO* MUST BE CALLED
* FOLLOWING COMPOUND ROLLOUT COMPLETION.
* PN PCP NUMBER.
SPACE 4,10
** ROUTINES USED.
*
* *0AU* - PROCESS ACCUMULATOR OVERFLOW FLAGS.
* *0BF* - BEGIN FILE.
* *0DF* - DROP FILE.
SPACE 4,10
** PROGRAMS CALLED.
*
* *1AJ* - CONTINUE *DMP=* PROCESSING.
SPACE 4,10
*** ACCOUNT DAYFILE MESSAGES.
*
*
* *AUSR, SRUUNITS.* = NUMBER OF SRU-S WHICH COULD NOT BE
* RECORDED IN THE PROJECT PROFILE FILE AT OVERFLOW OR END
* OF ACCOUNT BLOCK.
SPACE 4,10
** COMMON DECKS.
*CALL COMPMAC
*CALL COMSACC
QUAL CPS
*CALL COMSCPS
QUAL *
*CALL COMSEJT
*CALL COMSEVT
QUAL COMSHIO
*CALL COMSHIO
QUAL *
LIST X
*CALL COMSJRO
LIST *
*CALL COMSLFD
*CALL COMSMSP
*CALL COMSPIM
QUAL REM
*CALL COMSREM
QUAL
*CALL COMSSCD
*CALL COMSSSD
*CALL COMSSSE
*CALL COMSSSJ
*CALL COMSTCM
*CALL COMSWEI
*CALL COMSZOL
1RO SPACE 4
**** ASSEMBLY CONSTANTS.
IFLS EQU /CPS/IFLS *PIOM* REPLY STATUS
RDDS EQU /CPS/RDDS *PIOM* DIRECT READ
WDDS EQU /CPS/WDDS *PIOM* DIRECT WRITE
SPACE 4,10
** DIRECT CELL ASSIGNMENTS.
T8 EQU 16 SCRATCH
T9 EQU 17 SCRATCH
FS EQU 20 - 24 SCRATCH (5 CELLS)
NT EQU 25 NEXT TRACK POINTER
EO EQU 26 EJT ORDINAL
SC EQU 27 TERMINAL OUTPUT SECTOR COUNT
CN EQU 30 - 34 SCRATCH (5 CELLS)
OP EQU 35 - 36 OUTPUT POINTER (2 CELLS)
DI EQU 37 *UJNI*+2 (USED TO DISABLE PROCESSING)
FN EQU 40 - 44 SCRATCH (5 CELLS)
TN EQU 45 TERMINAL NUMBER
TT EQU 46 - 47 TERMINAL TABLE ADDRESS (2 CELLS)
FA EQU 57 DM* FNT ADDRESS
ZR EQU 60 - 64 ZERO WORD (5 CELLS)
TA EQU 65 *IAF* RA
NF EQU 67 NFL/100B
****
TITLE MAIN PROGRAM.
ROJ SPACE 4,10
** ROJ - MAIN PROGRAM.
ORG PPFW
ROJ BSS 0
RJM PRS PRESET (RETURN TO *ROJ1* ON PSEUDO ROLL)
* PERFORM INITIAL ROLLOUT OPERATIONS.
ROJA RJM /3RS/CDM CREATE DM* FILE FNT ENTRY
* UJN *+2 (NON-*DMP=* CALL)
ROJB RJM /3RP/CKO CHECK FOR TERMINAL I/O
* UJN *+2 (NON-INTERACTIVE JOB)
RJM RMS REQUEST MASS STORAGE SPACE
ROJC RJM /3RP/RFO READ FIRST SECTOR OF TERMINAL OUTPUT
* UJN *+2 (NOT ON-LINE INTERACTIVE JOB)
ROJ1 BSS 0 ENTRY FROM *PRS* IF PSEUDO ROLLOUT
ROJD RJM CJS CHANGE JOB STATUS
* UJN *+2 (*DMP=* CALL)
ROJH RJM ISS INITIALIZE SYSTEM SECTOR
* UJN ROJ2 (PSEUDO-ROLLOUT)
ROJE RJM SRA SET RA TO FWA OF NFL
* UJN *+2 (*DMP=* CALL)
* WRITE THE ROLLOUT FILE.
SETMS IO,(NS),WDSB
ROJI LDC 0
* LDC EPNF (BUFFERED DEVICE AND ECS PRESENT)
RAM UERR
RJM WSS WRITE SYSTEM SECTOR
MJN ROJ3 IF MASS STORAGE ERROR
LDD HN SET SECTOR WORD COUNT
STM BFMS+1
SEQ EQU *-2
ROJ2 SEQUENCE CPAI,CPA WRITE CONTROL POINT AREA
* RJM TCP (PSEUDO-ROLLOUT)
* UJN *+2 (NO CONTROL POINT)
SEQUENCE TOPI,/3RP/WTO WRITE TERMINAL OUTPUT
* UJN *+2 (NOT ON-LINE INTERACTIVE JOB)
* UJN ROJ5 (PSEUDO-ROLLOUT)
SEQUENCE JFLI,JFL WRITE JOB FIELD LENGTH
* UJN *+2 (NO FL)
SEQUENCE JECI,JEC WRITE JOB ECS FIELD LENGTH
* UJN *+2 (NO ECS)
ROJJ RJM WEI WRITE EOI SECTOR
* UJN ROJ4 (BUFFERED DEVICE)
PJN ROJ4 IF NO MASS STORAGE ERROR
ROJ3 LJM MSR PROCESS MASS STORAGE ERROR
ROJ4 ENDMS
* PERFORM FINAL ROLLOUT OPERATIONS.
ROJ5 RJM CRO COMPLETE ROLLOUT (ON-LINE MAY NOT RETURN)
* RJM CDR (*DMP=* CALL)
ROJF EQU *-1
LDD IR+2
SBN 2
NJN ROJ5.1 IF NOT PSEUDO-ROLLOUT
STD CM+2
MONITOR RSJM CALL SCHEDULER
ROJ5.1 LDC ** (ERROR FLAG)
ROJK EQU *-1
RJM SEF SET ERROR FLAG, IF PRESENT
RJM CPC CHECK PCP ROLLOUT COMPLETION
ZJN ROJ7.1 IF SIMPLE PCP ROLLOUT
PJN ROJ8 IF COMPOUND ROLLUT
ROJG LDC /CPS/CCPS+/CPS/DPPS RELEASE CP AND DROP PP
* LDC /CPS/CCPS (*1TO* TO BE CALLED)
* UJN ROJ8 (*DMP=* CALL)
ROJ7 STD CM+1
MONITOR JACM
* ON A COMPOUND ROLLOUT, IF THE FIRST *1RO* FINDS THAT THERE
* IS TERMINAL OUTPUT AVAILABLE FOR THE JOB BEING ROLLED TO
* DISK, THE FIRST SECTOR OF OUTPUT IS SAVED IN THE PP UNTIL
* AFTER THE SECOND *1RO* IS COMPLETE. *1TO* IS THEN CALLED
* INTO THE SAME PP TO PROCESS THE OUTPUT.
LDN **
ROJM EQU *-1
* LDN 1 (*1TO* CALL REQUIRED)
ZJN ROJ8 IF *1TO* CALL NOT REQUIRED
LDN /REM/VCPT MOVE TO *IAF* CP
STD CM+1
MONITOR CCAM
LDD IA WRITE *1TO* CALL TO INPUT REGISTER
CWM ROJN,ON
LDD CM+1
LMN /REM/VCPT
NJN ROJ8 IF CHANGE MADE
ROJ7.1 MONITOR DPPM
ROJ8 LJM PPR EXIT
ROJN VFD 18/3L1TO,6//REM/VCPT,36/0
SPACE 4
** GLOBAL DATA.
CPAD BSSZ 2 CP/PCP ADDRESS
TITLE ROLLOUT FILE WRITE ROUTINES.
CPA SPACE 4,10
** CPA - WRITE CONTROL POINT AREA.
*
* CALLS WNS.
CPA SUBR ENTRY/EXIT
TLDC 0,CPAD READ FIRST HALF OF CPA/PCPA
CRM BFMS+2,HN
* CLEAR *MS1W* AND *MS2W* IF NO JOB ACTIVITY.
LDC 1 CONTROL POINT ACTIVE FLAG
* LDC 100 (EM PROTECT AND END OF JOB STEP)
CPAB EQU *-1
LPN 1
NJN CPA1 IF JOB ACTIVITY
STM BFMS+2+MS1W*5
STM BFMS+2+MS2W*5
LDM CPAB SET CORRECT FL FOR ROLLOUT
ERRNZ MCMX/100-100 CHECK FOR CORRECT VALUE OF *MCMX*
STM BFMS+2+FLSW*5+4
NJN CPA1 IF ECS PROTECTED
STM BFMS+2+ECSW*5+4
CPA1 LDD NF SET NFL SIZE IN ROLLOUT FILE
STM BFMS+2+FLSW*5
RJM WNS WRITE CPA
TLDC 100,CPAD READ SECOND HALF OF CPA/PCPA
CRM BFMS+2,HN
RJM WNS WRITE NEXT SECTOR
UJP CPAX RETURN
JFL SPACE 4,10
** JFL - WRITE JOB CM FIELD LENGTH.
*
* USES T3.
*
* CALLS ROD, ROM.
*
* MACROS ENDMS.
JFL SUBR ENTRY/EXIT
JFLA UJN *+2
CON .EMS
* ENDMS (ROLLOUT DEVICE IS ECS)
LDN 0 SET FWA TO ROLLOUT
STD T3
LDC 0 LOAD LWA OF FL TO ROLL
JFLB EQU *-1
ZJN JFLX IF NO FL TO BE ROLLED
RJM ROM ROLLOUT MEMORY
* RJM ROD (DEVICE BUFFERED IN ECS)
JFLC EQU *-1
UJN JFLX RETURN
JEC SPACE 4,10
** JEC - WRITE JOB ECS FIELD LENGTH.
*
* ENTRY (CN - CN+4) = *FLSW*.
*
* USES T3, T8, CM - CM+4, CN - CN+4.
*
* CALLS AEA, ROD, ROM, WNS.
*
* MACROS ENDMS.
JEC SUBR ENTRY/EXIT
* ROLLOUT BUFFER SPACE.
JECG LDD FL
* LDD HN (NO ACTIVITY AND ECS PROTECTED)
ADC -MCMX/100
STD T3
ADN MCMX/100/2
RJM ROM ROLLOUT MEMORY
* RJM ROD (DEVICE BUFFERED IN ECS)
JECA EQU *-1
* ROLLOUT ECS.
LDN ZERL SET UP *MTR* CALL
CRD CN
LDC MCMX/4 SET WORD COUNT
STD CN
LDN 0 CHECK BUFFER SIZE
RJM AEA
TLDC 0,CPAD INITIALIZE RESPONSE ADDRESS
CWD CN
LDD FL SET BUFFER ADDRESS
ADC -MCMX/100
STD CN+2
ADN MCMX/100/4 SET TOGGLE CONSTANT
LMD CN+2
STM JECB
LDD MA WRITE REQUEST TO *OR*
CWD CN
SBN 1
CWM JECF,ON
LDN MCMX/4/1000 ADVANCE ECS ADDRESS
RJM AEA
JEC1 LDD OA WAIT *OR* CLEAR
CRD CM
LDD CM
NJN JEC1 LOOP TILL CLEAR
JEC2 TLDC 0,CPAD CHECK *RCXM/ECXM* RESPONSE WORD
CRD CM
LDD CM
NJN JEC2 IF *RCXM/ECXM* INCOMPLETE
LDD CM+1
ZJN JEC3 IF NO ECS ERROR
LDK JSET SET ERROR FLAG TO ABORT JOB STEP
SBM ROJK
MJN JEC3 IF HIGHER ERROR FLAG ALREADY SET
RAM ROJK
JEC3 LDD CN+2 TOGGLE BUFFER POINTER
STD T3
LMC *
JECB EQU *-1
* LMC N (TOGGLE CONSTANT)
* LJM JEC5 (IF LAST BUFFER FULL)
STD CN+2
TLDC 0,CPAD SET COMPLETION STATUS
CWD CN
LDD MA WRITE REQUEST
CWD CN
SBN 1
CWM JECF,ON
LDN MCMX/4/1000 ADVANCE ECS ADDRESS
RJM AEA
LDD T3
ADN MCMX/100/4
STD T8
* ROLLOUT ECS BUFFER.
JEC4 LDD RA
ADD T3
SHN 6
CRM BFMS+2,HN
LDC BFMS
RJM WNS
AOD T3
LMD T8
NJN JEC4 IF NOT END OF ECS BLOCK
LJM JEC1 GET NEXT BLOCK OF ECS
JEC5 UJN *+2
JECC EQU *-1
CON .EMS
* ENDMS (ROLLOUT DEVICE IS ECS)
LDD T3
SHN 6
ADD CN
SHN -6
RJM ROM ROLLOUT MEMORY
* RJM ROD (DEVICE BUFFERED IN ECS)
JECD EQU *-1
* ROLLOUT LAST PART OF CM.
LDM UERR CLEAR NO FLUSH FLAG
LPC -EPNF
STM UERR
JECH LDD FL
* LDD HN (NO ACTIVITY AND ECS PROTECTED)
SBN MCMX/100/2 SET FWA FOR ROLLOUT
STD T3
ADN MCMX/100/2
RJM ROM ROLLOUT MEMORY
* RJM ROD (DEVICE BUFFERED IN ECS)
JECE EQU *-1
LJM JECX RETURN
JECF VFD 12/RCXM EM TRANSFER FUNCTION PROCESSED BY *MTR*
VFD 29/0
VFD 1/0 FUNCTION TYPE = READ
VFD 18/0 ALTERNATE RESPONSE ADDRESS
TITLE SUBROUTINES.
AEA SPACE 4,10
** AEA - ADVANCE EM ADDRESS FOR *RCXM/ECXM* FUNCTION.
*
* ENTRY (A) = INCREMENT.
* (AEAA) = FLE.
* (CN - CN+4) = *RCXM*/*ECXM* PARAMETER WORD.
*
* EXIT WORD COUNT ADJUSTED IF LESS THAN MCMX/4 WORDS TO GO.
* *JECB* SET TO BYPASS NEXT READ IF FLE REACHED.
*
* USES CN, CN+4.
* LDD *LJMI*
AEA1 LDD HN SET *LJMI* TO BYPASS NEXT READ
STM JECB-1
LDC JEC5
STM JECB
AEA SUBR ENTRY/EXIT
RAD CN+4
SHN -14
RAD CN+3
SHN 14
ADD CN+4
AEAA ADC **
* ADC -FLE
PJN AEA1 IF FLE REACHED
SHN 11
ADD CN
SHN 11
MJN AEAX IF FULL BUFFER REMAINS
ZJN AEAX IF FULL BUFFER REMAINS
SHN 11
STD CN
UJN AEAX RETURN
CJS SPACE 4,20
** CJS - CHANGE JOB STATUS.
*
* DETERMINE NEW JOB STATUS AND PLACE IT IN THE SYSTEM SECTOR
* EJT IMAGE AND THE *UTEM* PARAMETER BLOCK TO BE USED TO UPDATE
* THE EJT ENTRY IN CM. THE *UTEM* FUNCTION WILL BE ISSUED
* AFTER WRITING THE ROLLOUT FILE.
*
* ENTRY (EO) = EJT ORDINAL.
* (EJSS - EJSS+19) = EJT ENTRY.
* (NF) = NFL.
*
* USES T1, T2, CM - CM+4, CN - CN+4, FS - FS+4.
*
* CALLS CET, RJC.
*
* MACROS MONITOR, NFA.
CJS SUBR ENTRY/EXIT
* CHECK FOR CORRECT JOB STATUS AND CLEAR THE FOLLOWING FIELDS
* IN THE EJT ENTRY - JOB ADVANCE FLAG, JOB STATUS, INHIBIT JOB
* ADVANCE FLAG.
LDM EJSS+5*JSNE+4
SHN -1
LPN 37
LMK EXJS
STD T2
ZJN CJS1 IF JOB STATUS IS CORRECT
LMK PCJS&EXJS
ZJN CJS1 IF JOB STATUS CORRECT
LDN 0 INDICATE NO ERROR FLAG TO SET
STD CM+2
LDC * SET ERROR DETECTION ADDRESS
STD CM+1
MONITOR CHGM CONDITIONALLY HANG PP
CJS1 LDM EJSS+5*JSNE+4
LPC 7600
STM EJSS+5*JSNE+4
RAM CROF
* CHECK FOR PRE-DETERMINED JOB STATUS. IF THE JOB STATUS HAS
* ALREADY BEEN SELECTED, IGNORE THE ROLLOUT CONTROL FLAGS IN
* *STSW*.
LDC **
CJSA EQU *-1 (SELECTED JOB STATUS)
NJN CJS6 IF JOB STATUS ALEADY DETERMINED
* USE THE ROLLOUT CONTROL FLAGS TO DETERMINE WHAT JOB STATUS TO
* ASSIGN THE JOB.
ERRNZ /CPS/ROSU/2-/CPS/ROSC CHECK ROLLOUT FLAG POSITIONS
ERRNZ /CPS/ROSC/2-/CPS/RODS
ERRNZ /CPS/RODS/2-/CPS/ROTE
ERRNZ /CPS/ROTE/2-/CPS/ROSR
LDM ERSA
SHN -3
LPN 17
ZJN CJS5 IF JOB SCHEDULER ROLLOUT
SHN -1
ZJN CJS4 IF TIMED/EVENT ROLLOUT
SHN -1
ZJN CJS3 IF DISABLED JOB STATE REQUESTED
SHN -1
ZJN CJS2 IF SCP ROLLOUT
LDN SUJS&SOJS SET JOB STATUS = *SUJS*
CJS2 LMN SOJS&DOJS SET JOB STATUS = *SOJS*
CJS3 LMN DOJS&TOJS SET JOB STATUS = *DOJS*
CJS4 LMN TOJS&ROJS SET JOB STATUS = *TOJS*
CJS5 LMN ROJS SET JOB STATUS = *ROJS*
CJS6 STD T1 SAVE JOB STATUS AS INDEX
SHN 1 STORE JOB STATUS IN SYSTEM SECTOR EJT
RAM EJSS+5*JSNE+4
LPN 76
RAM CROF
* GO TO JOB STATUS PROCESSOR.
LDM TJSP,T1 GET PROCESSOR ADDRESS
STD T1
LJM 0,T1 GO TO PROCESSOR
* PROCESS *ROJS* JOB STATUS.
CJS7 LDD T2
ZJN CJS8 IF NOT ROLLING FROM A PCP
LDM EJSS+5*SCHE+3
STD T1
LDM EJSS+5*SCHE+4
STD T2
UJN CJS8.1 SET ENTRY TIME INTO EJT DATA BLOCK
* CALCULATE ENTRY TIME INTO QUEUE.
CJS8 LDM EJSS+5*SCHE+4 GET SCHEDULING PRIORITY FOR *CET*
STD T1
LDM EJSS+5*SCLE GET SERVICE CLASS FOR *CET*
SCN 77
SHN 6
LMK EXQT
RJM CET CALCULATE ENTRY TIME
* PLACE ENTRY TIME IN SYSTEM SECTOR EJT ENTRY AND IN EJT DATA
* BLOCK.
CJS8.1 LDD T1
STM EJSS+5*SCHE+3
STM CROH+1
* UJN *+2 (*SUJS* JOB STATUS)
CJSB EQU *-2
LDD T2
STM EJSS+5*SCHE+4
STM CROH+2
* UJN *+2 (*SUJS* JOB STATUS)
CJSC EQU *-2
LJM CJSX RETURN
* PROCESS *TOJS* JOB STATUS.
CJS9 TLDC TERW,CPAD MOVE TIMED/EVENT ROLLOUT DESCRIPTOR
CRD CM
LDM EJSS+5*SCHE+2
LMD CM+2
LPN 77
LMM EJSS+5*SCHE+2
STM EJSS+5*SCHE+2
LPN 77
STM CROH
LDD CM+3
STM EJSS+5*SCHE+3
STM CROH+1
LDD CM+4
STM EJSS+5*SCHE+4
STM CROH+2
LDD CM+2
SCN 77
STD CM+2
LDN 0
STD CM+3
STD CM+4
TLDC TERW,CPAD
CWD CM
CJS10 LJM CJSX RETURN
* PROCESS *IOJS* JOB STATUS.
CJS11 LDM CROG+1 SAVE TERMINAL OUTPUT TRACK
STM CROH+1
LDN 3 SET SECTOR
STM CROH+2
UJN CJS10 CLEAR ROLLOUT CONTROL FLAGS
* PROCESS *SUJS* JOB STATUS.
CJS12 LDM CROF SET *DTCS* CONNECTION STATUS
LPC 4177
LMK DTCS*200
STM CROF
LDD DI
STM CJSB
STM CJSC
STM CROE AVOID TERMINAL TABLE UPDATE / *1TO* CALL
LDM EJSS+5*SCLE GET SERVICE CLASS
SHN -6
STD T1 SAVE PRE-DETACH SERVICE CLASS
RJM RJC CALCULATE JCB ADDRESS
ADN SVJT
CRD CM
LDC RTCL
CRD FS
LDD CM+4 CALCULATE SUSPENSION TIME-OUT VALUE
SHN 3
ADD FS+1
STM CROH+2 STORE TIMEOUT VALUE IN EJT DATA BLOCK
SHN -14
ADD FS
STM CROH+1
LDM EJSS+5*JSNE+4 CHECK CONNECTION STATUS
SHN -7
LPN 17
LMK DTCS
ZJN CJS13 IF JOB ALREADY DETACHED
NFA RC1N SET PRE-DETACH SERVICE CLASS
CRD CN
LDD CN+2
SCN 77
LMD T1
STD CN+2
NFA RC1N REWRITE RECOVERY WORD
CWD CN
CJS13 LJM CJS8 SET ENTRY TIME INTO QUEUE
* PROCESS *PCJS* JOB STATUS.
CJS14 LDD DI DISABLE */3RP/TER* CALL
STM CROE
UJN CJS13 SET ENTRY TIME INTO QUEUE
SPACE 4,10
** TJSP - TABLE OF JOB STATUS PROCESSORS.
*
* EACH TABLE ENTRY CONTAINS THE PROCESSOR ADDRESS CORRESPONDING
* TO THE JOB STATUS.
TJSP INDEX
INDEX ROJS,CJS7
INDEX SOJS,CJSX
INDEX TOJS,CJS9
INDEX IOJS,CJS11
INDEX DOJS,CJSX
INDEX SUJS,CJS12
INDEX ERJS,CJSX
INDEX PCJS,CJS14
INDEX MXJS
CPC SPACE 4,15
** CPC - CHECK PCP ROLLOUT COMPLETION.
*
* EXIT (A) .LT. 0 IF NOT PCP ROLLOUT.
* (A) = 0 IF SIMPLE PCP ROLLOUT.
* (A) .GT. 0 IF COMPOUND ROLLOUT.
* PCP ASSIGNMENT CLEARED IF SIMPLE PCP ROLLOUT.
* PCP ASSIGNMENT TRANSFERRED TO CP JOB IF COMPOUND
* ROLLOUT.
* JOB INTERLOCK CLEARED IF PCP ROLLOUT.
*
* USES CM - CM+4, CN - CN+4.
*
* MACROS MONITOR, SFA.
CPC1 LCN 0 FLAG NOT PCP ROLLOUT
CPC SUBR ENTRY/EXIT
LDD IR+2
LMN 3
NJN CPC1 IF NOT PCP ROLLOUT
LDC /CPS/ALCS+0 SET ALTERNATE CP/PCP FLAG
STD CM+1
MONITOR CCAM CLEAR ALTERNATE PCP ASSIGNMENT
TLDC TFSW,CPAD
CRD CN
LDC 0
CPCA EQU *-1 (CP JOB EJT ORDINAL IF COMPOUND ROLLOUT)
STD CN
TLDC TFSW,CPAD CLEAR OR TRANSFER PCP ASSIGNMENT
CWD CN
SFA EJT,EO
ADK JSNE
CRD CM
SOD CM+4 CLEAR JOB INTERLOCK
SFA EJT,EO
ADK JSNE
CWD CM
LDD CN SET SIMPLE/COMPOUND ROLLOUT STATUS
UJN CPCX RETURN
CRO SPACE 4,10
** CRO - COMPLETE ROLLOUT.
*
* ENTRY (EO) = EJT ORDINAL.
* (NF) = NFL ASSIGNED.
* (AEAA) = ECS FL ASSIGNED.
*
* USES CM - CM+4, CN - CN+4, FS - FS+4, T1 - T5.
*
* CALLS ISR, /3RP/TER.
CRO SUBR ENTRY/EXIT
LDD IR+2
SBN 2
ZJP CRO4 IF PSEUDO-ROLLOUT
TLDC FLIW,CPAD
CRD CM
* DETERMINE IF CM/ECS FL FIELDS OF *UTEM* PARAMETER BLOCK HAVE
* ALREADY BEEN SET.
LDC **
CROB EQU *-1
NJN CRO3 IF CM/ECS FL FIELDS ALREADY SET
* CALCULATE ROLLIN CM/ECS FL AND SAVE AMOUNTS IN *UTEM*
* PARAMETER BLOCK.
LDD CM+4 CALCULATE ROLLIN CM FL
NJN CRO1 IF CM FL/NFL INCREASE PENDING
LDC **
CROC EQU *-1 (CM FL)
ADD NF
CRO1 STM CROJ+1 STORE ROLLIN CM FL IN EJT DATA BLOCK
LDC **
CROD EQU *-1 (EM FL - ZERO ON *DMP=* PARTIAL DUMP)
STM CROJ STORE ROLLIN EM FL IN EJT DATA BLOCK
SBD CM+3
PJN CRO3 IF PENDING ECS FL LESS THAN CURRENT ECS FL
LDD CM+3
STM CROJ STORE NEW ROLLIN EM FL IN EJT DATA BLOCK
CRO3 LDN 0 CLEAR CM/ECS INCREASE REQUESTS
STD CM+3
STD CM+4
TLDC FLSW,CPAD
CRD CN
ADK FLIW-FLSW
CWD CM
LDN 0
STD CN+1
TLDC FLSW,CPAD
CWD CN
* UPDATE THE EJT ENTRY AS FOLLOWS -
* UPDATE CONNECTION STATUS.
* CHANGE JOB STATUS.
* STORE ROLLOUT FILE ADDRESS.
* SET SCHEDULE FIELD.
* SAVE ERROR FLAG (IF ANY).
* CLEAR FORCED ROLLIN.
* SET ROLLIN CM/ECS FL.
CRO4 SFA EJT,EO
ADK JSNE
CRD T1
ADK SCHE-JSNE
CRD CM
ADK PRFE-SCHE
CRD CN
ADK SCLE-PRFE
CRD FS
LDM CROF
STD T1+4
LDD CM+2 STORE SCHEDULING FIELD DATA
SCN 77
LMM CROH
STM CROH
LDM CROI STORE ERROR FLAG
STD CN+1
LDD FS CLEAR FORCED ROLLIN FLAG
SCN 20
STD FS
LDM CROJ STORE EM FL
STD FS+3
LDM CROJ+1 STORE CM FL
STD FS+4
SFA EJT,EO
ADK JSNE
CWD T1
ADK SCHE-JSNE
CWM CROG,ON
ADK PRFE-SCHE-1
CWD CN
ADK SCLE-PRFE
CWD FS
* RELEASE STORAGE.
LDN 0 RELEASE CM AND EM FL
RJM ISR
* TERMINATE ROLLOUT.
RJM /3RP/TER TERMINATE ON-LINE INTERACTIVE JOB
* UJN *+2 (SUSPENDED, NOT ON-LINE OR PSEUDO-ROLL)
CROE EQU *-2
LJM CROX RETURN
* EJT ENTRY DATA BLOCK.
CROF VFD 1/0 SCP/UCP CONNECTION STATUS
VFD 4/0 INTERACTIVE CONNECTION STATUS
VFD 1/1 JOB ADVANCE FLAG
VFD 5/0 JOB STATUS
VFD 1/1 JOB INTERLOCK FLAG
CROG CON 0 ROLLOUT FILE EST ORDINAL
CON 0 ROLLOUT FILE FIRST TRACK
CROH CON 0,0,0 SCHEDULING DATA
ERRNZ CROH-CROG-2 CELLS MUST BE CONTIGUOUS
CROI CON 0 ERROR FLAG
CROJ CON 0 ROLLIN EM FL
CON 0 ROLLIN CM FL
ERS SPACE 4,10
** ERS - ENTER ROLLOUT STATUS.
*
* ENTRY (A) = 0, IF TO CLEAR ROLLOUT REQUESTED STATUS.
* (A) = 1, IF TO SET ROLLOUT REQUESTED STATUS.
*
* EXIT (A) .GE. 0.
*
* USES T1, CM - CM+4.
ERS SUBR ENTRY/EXIT
STD T1 SAVE ROLLOUT REQUEST STATUS
TLDC STSW,CPAD READ ROLLOUT CONTROL FLAGS
CRD CM
LDC **
ERSA EQU *-1 (ROLLOUT CONTROL FLAGS AT TIME OF ROLLOUT)
SCN 3 CLEAR CPU STATUS FLAG AND ROLLOUT FLAG
LMD T1 SET/CLEAR ROLLOUT REQUESTED FLAG
STD CM+2
TLDC STSW,CPAD
CWD CM
UJN ERSX RETURN
FTB SPACE 4,10
** FTB - FILL TRACK BUFFER.
*
* ENTRY (FTBA - FTBA+1) = TRT POINTER.
* (T6) = LAST TRACK USED.
*
* EXIT (A) .NE. 0.
* (NT) = TBUF.
* TRACK BUFFER REFILLED.
*
* USES T0, T1, CM - CM+4, NT.
FTB SUBR ENTRY/EXIT
LDC TBUF SET FWA OF TRACK BUFFER
STD NT
STD T0
LDD T6
SHN 6
FTB1 SHN -6
STI T0
FTB2 SHN -2
FTBA ADC TRTS
CRD CM
LDI T0 SET BYTE INDEX
LPN 3
STD T1
AOD T0 BUMP INDEX
LMC TBUFL-1 CHECK FOR END OF BUFFER
ZJN FTB3 IF TRACK BUFFER FULL
LDM CM,T1
SHN 6
MJN FTB1 IF NOT EOI TRACK
LCN 0 INHIBIT REFILLING TRACK BUFFER
FTB3 STI T0 SET END OF BUFFER
AOD NT
UJN FTBX RETURN
ISR SPACE 4,15
** ISR - ISSUE STORAGE REQUEST.
*
* ENTRY (A) = 5/0, 1/F, 12/K
* F = 0 IF CM REQUEST.
* = 1 IF EM REQUEST.
* K = AMOUNT OF STORAGE REQUESTED. IF BOTH *F*
* AND *K* ARE ZERO, ALL CM AND EM WILL BE
* RELEASED.
* (IR+4) = PCP NUMBER IF PSEUDO-ROLLOUT.
*
* USES T1, CM+1 - CM+3, FN - FN+4.
*
* MACROS MONITOR.
ISR SUBR ENTRY/EXIT
STD T1 SET STORAGE AMOUNT
ISR1 STD CM+1
SHN -14
STD CM+2 SET STORAGE TYPE
RAD T1
LDD IR+4 SET PCP NUMBER (IN CASE OF PSEUDO-ROLLOUT)
STD CM+3
LDN **
* LDN 1 (PSEUDO-ROLLOUT)
ISRA EQU *-1
SHN 12
RAD CM+2
LPN 1
ZJN ISR3 IF CM REQUEST
TLDC ECSW,CPAD READ EM CONTROL WORD
CRD FN
LDD FN+4
ISR2 ZJN ISRX IF NO EM ASSIGNED
ISR3 MONITOR RSTM
LDD T1
NJN ISRX IF PREVIOUS REQUEST EM OR CM REMAINS
LDC 1S12
UJN ISR1 RELEASE EM FL
ISS SPACE 4,10
** ISS - INITIALIZE SYSTEM SECTOR.
*
* USES CM - CM+4, CN - CN+4.
*
* MACROS NFA.
ISS SUBR ENTRY/EXIT
TLDC JCIW,CPAD
CRD CN
ADN TFSW-JCIW
CRD CM
ADK RFCW-TFSW READ DM* FILE POINTERS
CRM DFSS,ON
ADK SSCW-RFCW-1 READ SCP CONNECTION INDICATORS
CRM COSS,ON
ERRNZ RC1N-RC2N-1 ENSURE *RC1N*/*RC2N* CONTIGIOUS
ERRNZ R2SS-R1SS-5 ENSURE *R1SS*/*R2SS* CONTIGUOUS
NFA RC1N OBTAIN ADDRESS OF FIRST RECOVERY WORD
CRM R1SS,ON
CRM R1SS+5,ON
LDD CM+1
ZJN ISS1 IF NO PRIMARY FILE
NFA CM+1,R
CRM PFSS,ON STORE PRIMARY FILE FNT IN SYSTEM SECTOR
* STORE INPUT FILE DISK ADDRESS IN SYSTEM SECTOR.
ISS1 NFA FNTN
ADN FSTL
CRM IFSS,ON
* STORE SERVICE CLASS VALIDATION MASK.
NFA SCVN
CRM VMSS-2,ON
* SET *SISS* FIELD.
LDD CN+2
ADC -LSSI-1
MJN ISS4 IF JOB IS NOT A SUBSYSTEM
LMN DSSI-LSSI-1
NJN ISS2 IF NOT DEADSTART SEQUENCING JOB
LCN 7777-MSSI
ERRPL 7677-MSSI ENSURE *LCN* MAY BE USED
UJN ISS3 STORE SSID IN SYSTEM SECTOR
ISS2 LDD CN+2 SAVE SSID
ISS3 STM SISS
* PLACE DAYFILE BUFFER POINTERS IN SYSTEM SECTOR
ISS4 NFA DAPN+2
CRM DBSS,ON
* SET FILE NAME AND TYPE FOR JOB ROLLOUT. *WSS* RESETS *FNSS*
* FROM THE LOCAL FNT ENTRY FOR *DMP=* ROLLOUT.
LDM EJSS+5*JSNE+0 SET JSN AS FILE NAME
STM FNSS+0
LDM EJSS+5*JSNE+1
STM FNSS+1
LDC ROFT*100 SET FILE TYPE
STM FNSS+4
LJM ISSX RETURN
ITF SPACE 4,10
** ITF - ISSUE *TSEM* FUNCTION.
*
* ENTRY *TSEM* PARAMETERS WRITTEN TO MESSAGE BUFFER.
*
* EXIT (A) = 0, IF IAF INACCESSIBLE OR ERROR.
* (A) .NE. 0, IF REQUEST COMPLETE.
*
* USES T1.
*
* MACROS DELAY, MONITOR, PAUSE.
ITF SUBR ENTRY/EXIT
ITF1 MONITOR TSEM
LDD CM+1
ZJN ITFX IF IAF INACCESSIBLE OR ERROR
LMC 7777
NJN ITFX IF REQUEST COMPLETE
PAUSE ST *TSEM* QUEUE FULL - DELAY AND RETRY
LDC 3600
STD T1
ITF2 DELAY
SOD T1
ZJN ITF1 IF TIME TO REISSUE REQUEST
UJN ITF2 CONTINUE TO DELAY
MSR SPACE 4,20
** MSR - PROCESS MASS STORAGE ERROR OR INSUFFICIENT SPACE.
*
* ENTRY (A) .GE. 0 IF INSUFFICIENT SPACE FOR ROLLOUT.
* .LT. 0 IF MASS STORAGE ERROR.
*
* EXIT TO */3RQ/MSE* TO PROCESS MASS STORAGE ERROR.
*
* MACROS EXECUTE.
MSR BSS 0 ENTRY
SHN 0-21 SAVE MASS STORAGE ERROR FLAG
RAM MSRA
EXECUTE 3RQ PROCESS MASS STORAGE ERROR
LDN ** RETURN ERROR STATUS
MSRA EQU *-1
LJM /3RQ/MSE PROCESS MASS STORAGE ERROR
MSRE CON 0,0 TERMINAL OUTPUT POINTER ADDRESS
MSRF BSS 5 TERMINAL OUTPUT POINTER
MSRG CON 0 ORIGINAL ROLLOUT CONTROL FLAGS
MSRH BSS 5 ORIGINAL *TERW* IMAGE
RMS SPACE 4,20
** RMS - REQUEST MASS STORAGE SPACE.
*
* ENTRY (NF) = NUMBER OF NFL SECTORS.
* (SC) = OUTPUT BUFFER SECTOR COUNT (EXCLUDING EOR
* SECTOR) FOR INTERACTIVE JOBS.
* = 0 FOR NON-INTERACTIVE JOBS.
* (FL) = JOB CM FIELD LENGTH (NFL NOT INCLUDED).
*
* EXIT (NT) = *TBUF*.
* (TBUF) = TRACKS ASSIGNED.
*
* USES T5, T6, CM - CM+4, CN - CN+4, FS - FS+2.
*
* CALLS ERS, FTB, /3RS/UFS.
*
* MACROS ISTORE, MONITOR, SFA.
*
* NOTE - EXIT TO *MSR* IF INSUFFICIENT MASS STORAGE SPACE FOR
* ROLLOUT FILE.
RMS SUBR ENTRY/EXIT
* COMPUTE SECTOR COUNT FOR ROLLOUT.
LDM CROD EM FL / *UEBS* (ZERO ON *DMP=* PARTIAL)
RMSN SHN 3
* SHN 3+UESC
ADC 0 NFL SECTOR COUNT (ZERO IF *DMP=* ROLLOUT)
RMSH EQU *-1
RMSA ADN 4 CPA SECTORS, SYSTEM SECTOR, EOI SECTOR
* ADN 5 (IF INTERACTIVE JOB + EMPTY OUTPUT BUFFER)
* ADN 5 (INTERACTIVE JOB + SECTOR OVERFLOW)
ADD SC TERMINAL OUTPUT SECTOR COUNT
ADC FL
* ADC 0 (NO ACTIVITY)
* ADC MCMX/100 (NO ACTIVITY AND ECS PROTECTED)
RMSB EQU *-1
STD CM+4 SET SECTOR COUNT
STM RMSL+1
SHN -14
STD CM+3
RAM RMSL
LDM ERSA CHECK FOR TIMED EVENT ROLLOUT
LPC 110
ZJN RMS0 IF NOT SUSPENDED OR TIMED EVENT
LDN 0
UJN RMS1 SKIP SECONDARY ROLLOUT SELECTION
RMS0 LDN IPRL READ SECONDARY ROLLOUT SECTOR THRESHOLD
CRD CN
LDD CM+3
SHN 14
LMD CM+4
SBD CN+1
SHN -21
ZJN RMS1 IF .GT. THRESHOLD
LDN /CPS/SROS&/CPS/ROLS
RMS1 LMN /CPS/ROLS
STD CM+2
LDN **
* LDN /CPS/ROLS (JOB CONNECTED TO *SMF*)
RMSK EQU *-1 (SET BY *PRESET*)
ZJN RMS2 IF NOT *IAOT* JOB CONNECTED TO *SMF*
STD CM+2
* RESERVE ROLLOUT FILE SPACE.
RMS2 LDM CROD
ZJN RMS5 IF NO ROLLOUT OF EM
LDD FL
ERRNZ MCMX/100-100 ENSURE DIRECT CELL *HN* MAY BE USED
SBD HN
PJN RMS5 IF ENOUGH CM TO ROLL ECS
LDK SWET SET SYSTEM SOFTWARE ERROR FLAG
STD CM+2
LDC * SET DETECTION ADDRESS
STD CM+1
MONITOR CHGM CONDITIONALLY HANG PP
* LDN 0 CLEAR ROLLOUT REQUESTED FLAG
RJM ERS
RMS3 LJM MSR PROCESS ERROR CONDITION
RMS5 LDN 0 CLEAR EQUIPMENT
STD CM+1
RMSL LDC 0 SECTOR COUNT
STD CM+4
SHN -14
STD CM+3
LDC **
RMSG EQU *-1 (JOB ACCESS LEVEL)
ADN 40
SHN 6
RAD CM+3
MONITOR RTCM ASSIGN MASS STORAGE SPACE
LDD CM+4
NJN RMS6 IF SUFFICIENT MASS STORAGE SPACE
LDC **
RMSM EQU *-1
NJN RMS3 IF SECOND ATTEMPT MADE
STD CM+2 CLEAR *MSAL* DEVICE SELECTION
AOM RMSM FLAG SECOND ATTEMPT
UJN RMS5 RETRY *RTCM* REQUEST
RMS6 STD T6 SET TRACK
STM EJSS+5*SCHE+1 STORE TRACK IN EJT
* STM FS+1 (*DMP=* CALL)
RMSC EQU *-1
STM CROG+1 STORE FIRST TRACK IN EJT DATA BLOCK
* STM FS+2 (*DMP=* CALL)
RMSD EQU *-1
LDD CM+1 SET EST ORDINAL
STD T5
STM EJSS+5*SCHE STORE EQUIPMENT IN EJT
* STM FS (*DMP=* CALL)
RMSE EQU *-1
STM CROG STORE EST ORDINAL IN EJT DATA BLOCK
RMSF RJM /3RS/UFS UPDATE DM* FILE STATUS
* UJN *+2 (NON-DMP= CALL)
* READ TRACK CHAIN.
SFA EST,T5 READ MST POINTER
ADK EQDE
CRD CM
LDD CM+4 SET FWA OF TRT - TRACK BIT
SHN 3
ADN DILL
CRD CM
ADN TRLL-DILL
CRD CN
LDD CN+3
LPN 77
SHN 14
LMD CN+4
SBD TH 4000S-2
STM FTBA+1
SHN -14
RAM FTBA
LDD CM+3 CHECK FOR DEVICE BUFFERED IN ECS
SHN 21-13
PJP RMS10 IF ROLLOUT FILE NOT ON ECS BUFFERED DEVICE
SHN 13-21-6
LPN 7
LMN 4
ZJN RMS8 IF UEM
LDD CM+3
LPN 7
ZJN RMS9 IF NO DDP PATH PRESENT
RMS8 LDK SSTL
CRD CN
LDD CN+3
SHN 21-11
PJN RMS10 IF DDP ROLLOUT PATH ENABLED
RMS9 LDC ROD SET UP DIRECT ROLLOUT
STM JFLC
STM JECA
STM JECD
STM JECE
LDD CM+3
SHN 21-12
PJN RMS11 IF ECS
ISTORE ROJJ,(UJN ROJ4)
LDM CROD
ZJN RMS12 IF NO ROLLOUT OF EM
LDC EPNF SET NO FLUSH FOR CM ROLL
STM ROJI+1
RMS10 UJN RMS12 CONTINUE
RMS11 LDC RJMI
STM JFLA
STM JECC
RMS12 RJM FTB FILL TRACK BUFFER
LJM RMSX RETURN
ROD SPACE 4,15
** ROD - ROLLOUT USING DIRECT TRANSFER TO MASS STORAGE.
*
* ENTRY (A) = SECTOR COUNT.
* (T3) = SECTOR OFFSET FROM RA.
*
* EXIT TO *MSR* IF MASS STORAGE ERROR.
*
* USES T8, CM+3 - CM+4.
*
* CALLS DDT, RTL.
ROD SUBR ENTRY/EXIT
STD T8 SAVE SECTOR COUNT
LDD T3 SET FWA OF ROLLOUT
SHN 6
STD CM+4
SHN -14
STD CM+3
LDD T8 SET SECTOR COUNT
SBD T3
LMC /CPS/WDDS*10000 SET WRITE FUNCTION
RJM DDT WRITE DIRECT TO MASS STORAGE
MJP MSR IF MASS STORAGE ERROR
RJM RTL RESYNC TRACK LIST
UJP RODX RETURN
ROM SPACE 4,10
** ROM - ROLLOUT MEMORY.
*
* ENTRY (A) = SECTOR COUNT.
* (T3) = SECTOR OFFSET FROM RA.
*
* USES T3, T8.
*
* CALLS WNS.
ROM SUBR ENTRY/EXIT
STD T8 SAVE NUMBER OF SECTORS TO ROLL
ROM1 LDD RA
ADD T3
SHN 6
CRM BFMS+2,HN
RJM WNS WRITE NEXT SECTOR TO ROLLOUT FILE
AOD T3 INCREMENT COUNT OF SECTORS ROLLED
LMD T8
NJN ROM1 IF MORE SECTORS TO WRITE
UJP ROMX RETURN
RTL SPACE 4,15
** RTL - RESYNC TRACK LIST.
*
* ENTRY (T6) = CURRENT TRACK.
* (NT) = TRACK LIST INDEX.
*
* EXIT (A) = 0.
* (T6) = CURRENT TRACK.
* (NT) = CURRENT TRACK LIST INDEX.
*
* USES NT, T6, T8.
*
* CALLS FTB.
RTL1 LDI NT
STD T6
AOD NT
LDI NT
NJN RTL2 IF NEXT TRACK AVAILABLE
RJM FTB FILL TRACK BUFFER
RTL2 LDD T8
RTL3 LMM -1,NT
NJN RTL1 IF NOT CURRENT TRACK
RTL SUBR ENTRY/EXIT
LDD T6 SET CURRENT TRACK
STD T8
UJN RTL3 RESYNC TRACK LIST INDEX
SEF SPACE 4,15
** SEF - SET ERROR FLAG.
*
* ENTRY (A) = 1/ F,11/ ERROR FLAG.
* (EO) = EJT ORDINAL (IF F=0 SPECIFIED).
*
* EXIT (A) = 0.
*
* USES CM+1 - CM+7.
*
* MACROS MONITOR, SFA.
SEF SUBR ENTRY/EXIT
ZJN SEFX IF NO ERROR FLAG
LMC 4000 SET/CLEAR *EJT ORDINAL PRESENT* FLAG
STD CM+1 SET ERROR FLAG
LDD EO STORE EJT ORDINAL
STD CM+2
SFA EJT GET JSN
ADK JSNE
CRD CM+3
MONITOR CEFM
UJN SEFX RETURN
SRA SPACE 4,10
** SRA - SET RA TO THE BEGINNING OF NFL.
*
* EXIT FLSW, FLSW+1 AND EXCHANGE PACKAGE ALTERED
* TO REFLECT THE NEW RA AND FL.
*
* NOTES AFTER THIS ROUTINE IS EXECUTED ANY ACCESS TO THE
* JOB-S CM FL MUST BE BIASED BY CELL *NF*.
*
* USES CM - CM+4, CN - CN+4, FS - FS+4, FN - FN+4.
SRA SUBR ENTRY/EXIT
TLDC 1,CPAD READ EXCHANGE PACKAGE RA
CRD FS
ADN 1 READ EXCHANGE PACKAGE FL
CRD FN
ADN FLSW-2 READ FIELD LENGTH CONTROL WORDS
CRD CM
ADN FLSW+1-FLSW
CRD CN
LDD CM ADD NFL TO FL
RAD CM+4
STD CN+4
SHN 6
STD FN+1
SHN -14
STD FN
LDC 4000 SET NFL+4000
STD CN+3
LDD CM+2 FORM NEW RA
SHN 14
ADD CM+3
SBD CM RA-NFL
STD CM+3
STD CN+2
SHN 14
STD FS
SHN -6
LPN 77
STD CM+2
STD CN+1
LDD CM+3
SHN 6
STD FS+1
LDD CM SAVE NFL SIZE FOR LEVEL 3 D/S
STD CM+1
RAM JFLB ADJUST NUMBER OF SECTORS TO ROLL
LDN 0 CLEAR NFL FIELD
STD CM
TLDC 1,CPAD UPDATE EXCHANGE PACKAGE DATA
CWD FS
ADN 1
CWD FN
ADN FLSW-2
CWD CM
ADN FLSW+1-FLSW
CWD CN
LJM SRAX RETURN
TCP SPACE 4,10
** TCP - TRANSFER CPA TO PCPA.
*
* ENTRY (IR+4) = PCP NUMBER.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
TCP SUBR ENTRY/EXIT
LDD CP READ CPA INTO PP
CRM BUF,HN
CRM BUF+100*5,HN
* SET ALTERNATE PCP ASSIGNMENT WHEN UPDATING THE PCP FIELD
* LENGTH CONTROL WORDS TO PREVENT A SIMULTANEOUS UPDATE OF
* THESE WORDS BY A STORAGE MOVE.
LDD IR+4 SET PCP NUMBER
ADC /CPS/ALCS SET ALTERNATE PCP FLAG
STD CM+1
MONITOR CCAM SET ALTERNATE PCP ASSIGNMENT
TLDC FLSW,PCAD PRESERVE PCPA FL CONTROL WORDS
CRM BUF+FLSW*5,TR
ADK TFSW-FLSW-3 PRESERVE EJT ORDINAL FROM PCPA
CRD CM
LDD CM
STM BUF+TFSW*5+0
LDM BUF+STSW*5+2 CLEAR ROLLOUT CONTROL FLAGS
LPN 2 PRESERVE CPU STATUS FLAG
STM BUF+STSW*5+2
TLDC 0,PCAD MOVE CPA TO PCPA
CWM BUF,HN
CWM BUF+100*5,HN
LDC /CPS/ALCS SET ALTERNATE CP FLAG
STD CM+1
MONITOR CCAM CLEAR ALTERNATE PCP ASSIGNMENT
UJP TCPX RETURN
WNS SPACE 4,20
** WNS - WRITE NEXT SECTOR.
*
* ENTRY (BFMS+1 - BFMS+501) = SECTOR FORMATTED. ANOTHER
* BUFFER ADDRESS MAY BE USED IF CALLER PRESETS (WNSA),
* (WNSB), AND (WNSC) AND RESTORES THEM.
* (NT) = NEXT TRACK BUFFER POINTER.
* (T6) = TRACK.
* (T7) = SECTOR.
*
* EXIT (T6) AND (T7) UPDATED.
* TO *MSR* IF MASS STORAGE ERROR OCCURRED.
*
* USES T2, T6, T7, NT.
*
* CALLS FTB, WDS.
*
* MACROS ENDMS.
WNS SUBR ENTRY/EXIT
LDD T7 SET NEXT SECTOR
ADN 1
WNS1 STM BFMS
WNSA EQU *-1
* STM OBUF (TERMINAL OUTPUT SECTOR)
LMM SLM
NJN WNS2 IF NOT END OF TRACK
LDI NT SET NEXT TRACK
UJN WNS1 SET TRACK INTO SECTOR LINKAGE BYTE
WNS2 LDC BFMS+WCSF WRITE CONSECUTIVE SECTORS
WNSB EQU *-1
* LDC OBUF+WCSF (TERMINAL OUTPUT SECTOR)
RJM WDS WRITE SECTOR
MJP MSR IF MASS STORAGE ERROR
LDM BFMS
WNSC EQU *-1
* LDM OBUF (TERMINAL OUTPUT SECTOR)
STD T7
SHN 21-13
PJN WNSX IF NOT NEW TRACK
SHN -6
STD T6
LDN 0 RESET SECTOR
STD T7
AOD NT
LDI NT
WNS2.1 NJN WNSX IF NEXT TRACK AVAILABLE
WNS3 LDD OA WAIT OUTPUT REGISTER CLEAR
CRD CM
LDD CM
NJN WNS3 IF *RCXM*/*ECXM* IN PROGRESS
ENDMS
RJM FTB FILL TRACK BUFFER
UJN WNS2.1 RETURN
SPACE 4,10
* COMMON DECKS.
CET$ EQU 1 ASSEMBLE ROUTINE *CET* (COMPCPE)
*CALL COMPCPE
PIR$ EQU 1 SELECT ASSEMBLY OF *PIR* FOR IAF R-REG
*CALL COMPSRR
LIST X
*CALL COMPDDT
LIST *
IFP$ EQU 1 ASSEMBLE REMOTE INITIALIZATION (COMPGFP)
EJT$ EQU 1 ASSEMBLE EJT ADDRESSING (COMPGFP)
*CALL COMPGFP
*CALL COMPRJC
*CALL COMPSIC
*CALL COMPWEI
WCS$ EQU 1 WRITE CONSECUTIVE SECTORS (COMPWSS)
*CALL COMPWSS
SPACE 4,10
USE BUFFERS
BUF EQU *
ERRPL BUF+502-OBUF CPA OVERLAYS TERMINAL OUTPUT BUFFER
* COMMON DECKS.
*CALL COMPAST
TITLE INITIALIZATION.
PRS SPACE 4,25
** PRS - PRESET.
*
* EXIT TO *ROJ1* IF PSEUDO ROLLOUT.
* (DI) = *UJNI*+2.
* (EO) = EJT ORDINAL.
* (NF) = NFL SIZE.
* (SC) = 0.
* (TA) = SET PER *COMPSRR* ROUTINE *PIR*.
* (TN) = TERMINAL NUMBER IF ON-LINE INTERACTIVE JOB.
* (TT - TT+1) = TERMINAL TABLE ADDRESS IF ON-LINE
* INTERACTIVE JOB.
* (ZR - ZR+4) = 0.
* (AEAA+1) = -FLE.
* (CDRC) = ASSIGNED EM FL IN *UEBS* WORD BLOCKS.
* (EJSS - EJSS+5*EJTE-1) = EJT ENTRY.
* (CPAD) = CP OR PCP ADDRESS.
*
* USES DI, EO, FA, IR+2, IR+4, NF, SC, TN, CM - CM+4,
* CN - CN+4, FN - FN+4, FS - FS+4, T1 - T9,
* ZR - ZR+4.
*
* CALLS AST, CAU, ERS, FLF, IFP, ISU, ITF, /3RS/PDM, PIR,
* /3RP/PRP, RRR, SIC, /3RP/SIO, SRR, /3RP/STA.
*
* MACROS EXECUTE, ISTORE, MONITOR, NFA, SFA.
PRSE CON /REM/VCDT CLEAR TERMINAL INTERRUPT FLAG
CON 0
CON /REM/VSTT
CON 59D
CON 0 TERMINAL NUMBER
* PROCESS NON-*DMP=* ROLLOUT OF INTERACTIVE JOB.
PRS25 EXECUTE 3RP LOAD INTERACTIVE JOB PROCESSING OVERLAY
LDC **
PRSG EQU *-1 (CONNECTION STATUS)
LMN OLCS
ZJN PRS27 IF ON-LINE INTERACTIVE JOB
* CHECK FOR RESOURCE LIMIT ON DETACHED INTERACTIVE JOB. SUCH
* JOBS WILL BE SUSPENDED.
LDD CN
LPC 2400
ZJN PRS26 IF NOT RESOURCE LIMIT
PRS25.1 LDM ERSA SET SUSPEND ON ROLLOUT FLAG
LPC 7677
ERRNZ /CPS/ROSU*10-100 ERROR IF VALUE CHANGES
LMD HN
STM ERSA
PRS26 LDN 0 CLEAR WORD COUNT IN OUTPUT SECTOR BUFFER
STM OBUF+1
AOM RMSA INCLUDE NULL OUTPUT SECTOR IN SECTOR COUNT
LJM PRS35 DISABLE ON-LINE INTERACTIVE PROCESSING
* PROCESS ROLLOUT OF ON-LINE INTERACTIVE JOB.
PRS27 RJM /3RP/PRP PRESET ON-LINE INTERACTIVE ROUTINES
LDC FECF*10000+IFSI CHECK *IAF* ACCESSIBILITY
RJM AST
SHN 0-13
ERRNZ /REM/VCPT-1 CODE ASSUMES *IAF* CP = 1
NJN PRS27.2 IF *IAF* ACCESSIBLE
TLDC TINW,CPAD
CRD CN
ADK TIOW-TINW
CRD T8-3
LDD CN+3
SCN 77
ADD CN+2
NJN PRS27.1 IF TERMINAL INPUT
LDD T8
LPN 37
ADD T9
NJN PRS27.1 IF EXPLICIT OUTPUT REQUEST
RJM /3RP/SIO SEARCH FOR IMPLICIT OUTPUT
ZJN PRS27.2 IF NO OUTPUT FOUND
PRS27.1 LDN 0 CLEAR INTERACTIVE ERROR FLAG
STM /3RP/INEF
UJP PRS25.1 SUSPEND JOB
PRS27.2 TLDC TTNW,CPAD SET TERMINAL NUMBER
CRD CM
LDD CM+1
NJN PRS29 IF TERMINAL NUMBER PRESENT
PRS28 LDK SWET SET SYSTEM SOFTWARE ERROR
STD CM+2
LDC * ADDRESS WHERE ERROR DETECTED
STD CM+1
MONITOR CHGM CONDITIONALLY HANG PP
SFA EJT,EO
ADK JSNE
CRD CM
LDD CM+4
LPC 4177
LMK NICS*200 MAKE JOB NON-INTERACTIVE
STD CM+4
SFA EJT,EO
ADK JSNE
CWD CM
LDN 0
RJM ERS CLEAR ROLLOUT REQUESTED
LDN /CPS/DPPS
LJM ROJ7 CLEAR JOB ADVANCE AND DROP PP
PRS29 STD TN SAVE TERMINAL NUMBER
STM PRSE+4
RJM PIR PRESET WITH IAF R-REGISTER
RJM SRR SET R-REGISTER TO IAF RA
RJM /3RP/STA SET TERMINAL TABLE ADDRESS
ADK /REM/VFNT
CRD CN
* AT ROLLOUT, *VROT* SHOULD BE BUSY.
ADK /REM/VFST-/REM/VFNT
CRD CM
ADK /REM/VROT-/REM/VFST
CRD FS
RJM RRR RESTORE R-REGISTER
LDD FS+4 *VROT* STATUS
LPN 1
NJP PRS28 IF INCORRECT STATUS
LDD CM+3 CHECK FOR *IAOT* JOB CONNECTED TO *SMF*
SHN -6
ZJN PRS30 IF NOT CONNECTED TO *SMF*
LDN /CPS/ROLS SET ROLLOUT FILE DEVICE
ERRPL /CPS/ROLS-100 CODE REQUIRES 6 BIT VALUE
RAM RMSK
PRS30 TLDC TFSW,CPAD
CRD CM
LDD CM+1
ZJN PRS33 IF NO PRIMARY FILE
NFA CM+1,R READ PRIMARY FILE DATA
CRM /3RP/TERD,ON
PRS33 LDD CN+4 PRESERVE BYTE 4 OF *VFNT*
STM /3RP/TERD+4
LDM CPAB
LPN 1
NJN PRS34 IF END OF JOB STEP
RJM SRR SET R-REGISTER TO IAF RA
RJM /3RP/STA READ TERMINAL TABLE
ADK /REM/VSTT
CRD CM
RJM RRR RESTORE R-REGISTER
LDD CM
SHN 21-13
PJN PRS34 IF NOT TERMINAL INTERRUPT CONTROL
* CLEAR TERMINAL INTERRUPT CONTROL AT THIS POINT SO THAT
* *IAF* SEES THE CORRECT STATUS WHEN IT RECOGNIZES
* END OF JOB STEP.
LDD MA CLEAR TERMINAL INTERRUPT CONTROL
CWM PRSE,ON
RJM ITF ISSUE *TSEM* FUNCTION
PRS34 UJN PRS38 READ EJT ENTRY INTO SYSTEM SECTOR BUFFER
* DISABLE ON-LINE INTERACTIVE PROCESSING AND CHECK DMP= CALL.
PRS35 LDD DI DISABLE ON-LINE INTERACTIVE JOB PROCESSING
STM ROJB
STM ROJC
STM CROE
LDD IR+2
LMN 1
NJN PRS38 IF NOT *DMP=* CALL
EXECUTE 3RS LOAD *DMP=* PROCESSING OVERLAY
* CLEAR SYSTEM SECTOR AND READ EJT ENTRY TO SYSTEM SECTOR.
PRS38 LDC BFMS+2
STD T1
PRS39 LDN 0
STI T1
AOD T1
LMC BFMS+2+500
NJN PRS39 IF MORE WORDS TO CLEAR
LDN EJTE SET EJT ENTRY LENGTH
STD T1
SFA EJT,EO READ EJT ENTRY TO SYSTEM SECTOR
CRM EJSS,T1
LDD IR+2
LMN 1
NJN PRSX IF NOT *DMP=* CALL
RJM /3RS/PDM PRESET *DMP=* CALL
PRS SUBR ENTRY/EXIT
LDD CP PRESET *CPAD* FOR CP ACCESS
STM CPAD+1
LDD IR+2
SBN 2
MJP PRS4 IF NO PCP INVOLVEMENT
LDK NCPL GET NUMBER OF CONTROL POINTS
CRD T1
ADK PCPP-NCPL GET PCP AREA POINTER
CRD CM
LDD IR+4
SBD T1+1
SBN 2 PCP AREA INDEX
PJN PRS0.1 IF VALID PCP NUMBER
MONITOR HNGM HANG
PRS0.1 SHN 7 PCP AREA OFFSET
RAD CM+4 SET PCP ADDRESS
SHN -14
RAD CM+3
LDD IR+2
SBN 2
ZJP PRS2 IF PSEUDO-ROLLOUT
* PROCESS PCP ROLLOUT.
LDD CM+3 SET PCP ADDRESS
STM CPAD
LDD CM+4
STM CPAD+1
LDN 1 SET *CROF* WITHOUT JOB ADVANCE FLAG
STM CROF
LDD IR+4 SET PCP NUMBER AND ALTERNATE CP FLAG
ADC /CPS/ALCS
STD CM+1
MONITOR CCAM SET ALTERNATE PCP ASSIGNMENT
AOD T1+1
SHN 7 SYSTEM CP ADDRESS
LMD CP
ZJN PRS1 IF SIMPLE PCP ROLLOUT
LDD CP GET CP JOB EJT ORDINAL
ADK TFSW
CRD CM
LDD CM SET EJT ORDINAL TO FLAG COMPOUND ROLLOUT
STM CPCA
SOD IR+2 SET FUNCTION 2 FOR RECALL OF *1RO*
LDD IA UPDATE PP INPUT REGISTER
CWD IR
AOD IR+2 RESET ORIGINAL FUNCTION CODE
PRS1 LJM PRS4 CONTINUE
* PROCESS PSEUDO ROLLOUT.
PRS2 LDD CM+3 SET PCP ADDRESS
STM PCAD
LDD CM+4
STM PCAD+1
AOM ISRA SET PSEUDO ROLLOUT REQUEST FLAG
LDD IR+4 STORE PCP NUMBER IN EJT DATA BLOCK
STM CROG+1
LDD IR+3 STORE TERMINAL NUMBER IN *1TO* CALL
STM ROJN+4
ZJN PRS2.1 IF NO TERMINAL OUTPUT PENDING
LDK /CPS/CCPS CLEAR *JACM* PP DROP OPTION
STM ROJG+1
AOM ROJM INDICATE *1TO* CALL REQUIRED
PRS2.1 LDK PCJS FORCE *PCJS* JOB STATUS
STM CJSA
ISTORE ROJH,(UJN ROJ2)
LDC TCP SET PSEUDO-ROLLOUT PROCESSOR ADDRESS
STM CPAI*2+SEQ+1
ISTORE TOPI*2+SEQ,(UJN ROJ5)
LDC ROJ1 SET *PRS* EXIT
STM PRS
* PROCESS ALL ROLLOUT TYPES.
PRS4 RJM IFP INITIALIZE *COMPGFP*
LDC TSIC SET INSTRUCTION RELOCATION TABLE ADDRESS
RJM SIC RELOCATE INSTRUCTIONS
TLDC FLSW,CPAD GET NFL SIZE
CRD CM
SBN FLSW
STM JECF+4 SET *RCXM* RESPONSE ADDRESS
SHN -14
RAM JECF+3
LDD CM SET NFL SIZE
STD NF
STM RMSH
SHN 6
RJM FLF FLUSH BUFFERED I/O BUFFERS
RJM ISU ISSUE ACCUMULATED SRU MESSAGES
* LDN 0 CLEAR TERMINAL OUTPUT SECTOR COUNT
STD SC
STD FA INITIALIZE DM* FILE FNT ADDRESS
LDN ZERL
CRD ZR
LDD FL SET ROLLOUT CM FL
STM CROC
STM RMSB
ADC -MCMX/100
STM JFLB
TLDC STSW,CPAD READ CONTROL POINT STATUS WORD
CRD FN
ADN FLSW-STSW READ NFL WORD
CRD T3
ADN TFSW-FLSW READ EJT ORDINAL WORD
CRD FS
ADK TERW-TFSW SAVE TIMED/EVENT ROLLOUT DESCRIPTOR
CRM MSRH,ON
ERRNZ CSPW-TERW-1 CODE DEPENDS ON *CSPW* = *TERW* + 1
CRD CN READ CONTROL STATEMENT POINTER WORD
ADK JSCW-CSPW READ SECURITY WORD
CRD CM
LDD CM+1 SET JOB ACCESS LEVEL
SHN -9D
STM RMSG
LDD FN+2 SAVE ROLLOUT CONTROL FLAGS
STM ERSA
STM MSRG
LDD FS SAVE EJT ORDINAL
STD EO
SFA EJT
ADK JSNE READ EJT ENTRY
CRD FS
LDC UJNI+2
STD DI
LDD FN+1 SAVE ERROR FLAG IN EJT DATA BLOCK
STM CROI
* DETERMINE CONTROL POINT ACTIVITY.
LDD FS+4 SAVE CONNECTION STATUS
SHN 0-7
LPN 17
STM PRSG
LDD FN+4
NFA SHCN CHECK *SHELL* CONTROLS
CRD CM
LDD CM
ZJN PRS6 IF NO SHELL CONTROLS
LDD CM+4
SHN 21-2
MJP PRS13 IF INTERACTIVE *SHELL*
PRS6 LDD FN+4
SCN 17
NJN PRS6.1 IF PP RECALL OR TAPE ACTIVITY
LDD FN+2 GET CPU STATUS FLAG
LPN 2
ADD FN+1 GET ERROR FLAG
NJN PRS6.1 IF CPU ACTIVITY OR ERROR FLAG SET
LDD CN+3
LMD CN+4
PRS6.1 NJN PRS7 IF COMMAND BUFFER NOT EMPTY
LDD CN+1
SHN 6
PRS6.2 PJP PRS13 IF NOT AT EOR OF CONTROL STATEMENT RECORD
LDC **
LDD IR+2
LMN 1
ZJN PRS6.2 IF *DMP=* CALL
TLDC EOJW,CPAD
CRD CN
ADK RFCW-EOJW
CRD CM
ADK SSCW-RFCW
CRD FS
LDD CN+2
LPC 777
NJN PRS8 IF PROLOGUE OR EPILOGUE ACTIVITY
LDD CM+3
SCN 77
ADD CM+2
ADD FS
ADD FS+1
ADD FS+2
ADD FS+3
ADD FS+4
PRS7 NJN PRS8 IF *TCS* COMMAND OR SCP CONNECTIONS
TLDC JCIW,CPAD READ JOB CONTROL WORD
CRD CM
ADN TINW-JCIW READ TERMINAL INPUT WORD
CRD CN
ADK SPCW-TINW READ SPECIAL CALL WORD
CRD FS
LDD CM+3
SHN 21-10
MJN PRS8 IF JOB STEP FILES TO RETURN
LDD FS
NJN PRS8 IF *DMP=* IN PROGRESS
LDD CN+3
SCN 77
ADD CN+2
NJN PRS8 IF TERMINAL INPUT PENDING
LDD CN+1
LPC 100
ZJN PRS9 IF NOT REPRIEVE ON NORMAL TERMINATION
PRS8 LJM PRS13 BYPASS EM CHECK
PRS9 LDD IR+2
LMN 2
NJN PRS9.1 IF NOT PSEUDO-ROLLOUT
* AVOID PSEUDO-ROLLOUT AT END OF JOB STEP. *1RO* WILL BE
* RECALLED TO PERFORM A MASS STORAGE ROLLOUT OF THE JOB.
TLDC TFSW,PCAD READ *TFSW* FROM PCPA
CRD CM
LDN 0 CLEAR EJT ORDINAL
STD CM
STD IR+2 SET NEW *1RO* FUNCTION CODE
TLDC TFSW,PCAD REWRITE *TFSW* TO RELEASE PCP
CWD CM
LDN 0 CLEAR PCP NUMBER
STD IR+4
LDD IA REWRITE PP INPUT REGISTER
CWD IR
LJM PPR RECALL *1RO* FOR MASS STORAGE ROLLOUT
PRS9.1 TLDC JCIW,CPAD
CRD FS
SBN JCIW-ECSW
CRD CN
LDD CN+4
ZJN PRS10 IF EM NOT ASSIGNED
LDD FS+3
LPC 100
ERRNZ MCMX/100-100 CHECK FOR CORRECT VALUE OF *MCMX*
PRS10 STM CPAB
LDN 0 CLEAR CM TO ROLL
STM JFLB
LDM PRSG
LMN OLCS
NJN PRS11 IF NOT ON-LINE CONNECTION STATUS
LDM ERSA SET DISABLE FLAG IN ROLLOUT CONTROL BYTE
SCN 20
LMN 20
STM ERSA
PRS11 LDM CPAB
NJN PRS12 IF ECS PROTECTED
LDD DI DISABLE ECS ROLLOUT
STM JECI*2+SEQ
LDC UJNI+PRS14-PRSB DISABLE USER EM CHECK
ERRPL PRS14-PRSB-40 RANGE ERROR ON JUMP
STM PRSB
PRS12 LDD NF SAVE NFL SIZE AS CM FL IN EJT DATA BLOCK
ADM CPAB ADD FL FOR EM ROLLOUT
ERRNZ MCMX/100-100 CHECK FOR CORRECT VALUE OF *MCMX*
STM CROJ+1
STM CROB INDICATE CM/EM FL ALREADY SET
LDD CN+4 SAVE ASSIGNED ECS AMOUNT
STM CROJ
LDM CPAB SET FL FOR ROLLOUT
STM RMSB
LDC LDDI+HN
STM JECG
STM JECH
ERRNZ MCMX/100-100 CHECK FOR CORRECT VALUE OF *MCMX*
PRS13 LDD IR+2
LMN 2
NJN PRS13.1 IF NOT PSEUDO-ROLLOUT
LDD NF STORE CM FL IN EJT DATA BLOCK
ADD T3+4
STM CROJ+1
LDD CP GET EM FL
ADK ECSW
CRD CM
LDD CM+4 STORE EM FL IN EJT DATA BLOCK
STM CROJ
LJM PRS38 READ EJT ENTRY AND EXIT
PRS13.1 LDK MEFL GET USER EM SHIFT COUNT (*UESC*)
CRD CM
LDD CM+2
SHN -11
RAM PRSC
ADN 3
STM RMSN
PRSB TLDC ECSW,CPAD
* UJN PRS14 (NO CP ACTIVITY)
CRD CN
LDD CN+4 SAVE ASSIGNED ECS AMOUNT
STM CROD
PRSC SHN 0
* SHN UESC
LMC -0
STM AEAA+1
SHN -14
RAM AEAA
LDD CN+4
NJN PRS14 IF JOB HAS EM ASSIGNED
LDD FL SET *FL*
STM JFLB
LDD DI
STM JECI*2+SEQ
PRS14 LDD IR+2
LMN 1
ZJN PRS19 IF *DMP=* CALL
LDD DI DISABLE DM* FILE CREATION
STM ROJA
STM RMSF DISABLE DM* FILE FST UPDATE
* CHECK FOR ACCUMULATOR OVERFLOW.
TLDC SRUW,CPAD
CRD CN
LDD CN+1
SHN 21-5
PJN PRS17 IF NO ACCUMULATOR OVERFLOW
RJM CAU CALL *0AU* TO PROCESS ACCUMULATOR OVERFLOW
PRS17 LDM PRSG
LMN OLCS
ZJN PRS18 IF ON-LINE INTERACTIVE JOB
LMN OLCS&DTCS
NJN PRS19 IF NOT DETACHED INTERACTIVE JOB
PRS18 LJM PRS25 PROCESS INTERACTIVE JOB
PRS19 LDD DI DISABLE TERMINAL OUTPUT PROCESSING
STM TOPI*2+SEQ
LJM PRS35 DISABLE INTERACTIVE JOB PROCESSING
CAU SPACE 4,15
** CAU - CALL *0AU*.
*
* CALL *0AU* TO PROCESS ACCUMULATOR OVERFLOW.
*
* ENTRY (EO) = EJT ORDINAL.
*
* USES T1, CM - CM+4.
*
* CALLS CEA, DFM, 0AU.
*
* MACROS CFI, DELAY, EXECUTE, MONITOR, PAUSE.
CAU4 LDN 0 INDICATE NO ERROR FLAG
STD CM+2
LDC * SET PROGRAM ADDRESS
STD CM+1
MONITOR CHGM CONDITIONALLY HANG PP
CAU SUBR ENTRY/EXIT
LDD IR+2
SBN 2
PJN CAU4 IF PCP ROLLOUT OR PSEUDO-ROLLOUT
* SET *0AU* CALL PARAMETERS.
LDD CP SET UP CALL BLOCK
ADN SRUW
CRM OAUA+5,ON
ADN FPFW-SRUW-1
CRM OAUL-5,ON
SFA EJT,EO CALCULATE EJT ENTRY ADDRESS
ADK JSNE
CRM OAUA,ON READ JSN INTO *0AU* PARAMETER BLOCK
ADK SCLE-JSNE-1 READ SERVICE CLASS
CRD CM
LDD CM SET SERVICE CLASS FOR *0AU*
SCN 77
STM OAUA+4
LDM OAUL-5 SET *0AU* OVERFLOW PROCESSING
SCN 77
LMN 1
STM OAUL-5
LDC OAUA PARAMETER BLOCK FWA
STM OAUL-4
* CALL *0AU*.
CAU1 EXECUTE 0AU,OAUL CALL *0AU*
SBN 2 CHECK FOR SUCCESSFUL UPDATE/FILE ERROR
MJN CAU2 IF SUCCESSFUL UPDATE OR FILE ERROR
SOM CAUA
STD T1 SET DELAY COUNT
PJN CAU3 IF RETRY COUNT NOT EXHAUSTED
LDN /CPS/RLCO CLEAR OVERFLOW FLAGS
STD CM+1
MONITOR RLMM
LDC CAUB+ACFN OVERFLOW QUANTITY
RJM DFM ISSUE MESSAGE
CAU2 LJM CAUX EXIT
* PROCESS *0AU* REJECT.
CAU3 SOD T1
MJN CAU1 IF END OF DELAY
DELAY
PAUSE NE
UJN CAU3 CONTINUE DELAY
CAUA CON 10 RETRY COUNT
CAUB DATA C*AUSR, 219902.325UNTS.*
SPACE 4,10
** BUFFER ASSIGNMENTS.
OAUA EQU * *0AU* PARAMETER BLOCK
OAUL EQU OAUA+2*5+5 *0AU* LOAD ADDRESS
OVL0 EQU BUF+1 *0BF*/*0DF* LOAD ADDRESS
TBUF EQU BUF NEXT TRACK BUFFER
TBUFL EQU TBUF+10
WDSB EQU TBUFL WRITE ERROR PROCESSING BUFFER
.1 MAX WDSB+502,PRS+1+5
E1RO EQU .1 OVERLAY ORIGIN
OBUF EQU IROB FIRST SECTOR OUTPUT BUFFER
ISU SPACE 4,10
** ISU - ISSUE ACCUMULATED SRU MESSAGE.
*
* EXIT (A) = 0.
*
* USES CM - CM+4, CN - CN+4.
*
* CALLS DFM.
*
* MACROS MONITOR.
ISU SUBR ENTRY/EXIT
TLDC SRUW,CPAD
CRD CN
ADN SRJW-SRUW
CRD CM
* AN UPDATE MESSAGE IS ISSUED EVERY 107.374 SRU-S.
LDD CN+2
SBD CM
SHN -6
ZJN ISUX IF SRU PERIOD NOT ELAPSED
LDD CN+2 UPDATE LAST SRU MESSAGE VALUE
STD CM
TLDC SRJW,CPAD
CWD CM
LDD CN+1
ADD CN+2
ADD CN+3
ADD CN+4
ZJP ISUX IF ZERO SRU-S TO DISPLAY
LDD MA CONVERT SRU-S TO DISPLAY CODE
CWD CN
LDN 1
STD CM+1
STD CM+2
MONITOR RDCM
LDD MA
CRM ISUB,ON READ CONVERTED DATA
LDC ISUA+ACFN
RJM DFM
* LDN 0
UJP ISUX RETURN
ISUA DATA H*AASR, *
ISUB BSS 5
DATA C*UNTS.*
SPACE 4,10
** COMMON DECKS.
FLBS EQU /CPS/FLBS FLUSH BUFFER SUBFUNCTION
IFP HERE
*CALL COMPFLF
TSIC SPACE 4,10
** INSTRUCTION RELOCATION TABLE AND ASSOCIATED DATA.
PCAD BSSZ 2 PCP ADDRESS
TSIC BSS 0 INSTRUCTION RELOCATION TABLE
LIST D
SIC HERE
LIST *
CON 0 TERMINATE ENTRIES
SPACE 4,10
** OVERFLOW CHECKS.
ERRNG EPFW-OAUL-ZAUL CHECK LENGTH OF *0AU*
ERRNG BFMS-OVL0-ZDFL CHECK LENGTH OF *0DF*
SPACE 4,10
USE OVERFLOW
* NOTE - THE FOLLOWING CHECK DEPENDS ON THE FACT THAT *1RO*
* IS CM-RESIDENT. *SLL* CONTAINS CODE TO ENSURE THIS.
ERRNG OBUF-*-10 OVERFLOW INTO OUTPUT BUFFER
SPACE 4,10
OVERFLOW PPFW,EPFW
TITLE
TTL 1RO/3RP - PROCESS ON-LINE INTERACTIVE JOBS.
TITLE MAIN ROUTINES.
QUAL 3RP
IDENT 3RP,TRPX
*COMMENT 1RO - PROCESS TXOT JOBS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SPACE 4,10
** 3RP - PROCESS ON-LINE INTERACTIVE JOBS.
ORG E1RO
TRP SUBR ENTRY/EXIT
UJN TRPX RETURN
TFET SPACE 4,10
* TFET - OUTPUT FET+0.
TFET BSS 5
RFO SPACE 4,10
** RFO - READ FIRST SECTOR OF OUTPUT.
*
* ENTRY (OP - OP+1) = OUT POINTER.
* (SC) = TERMINAL OUTPUT SECTOR COUNT.
*
* EXIT (OP - OP+1) UPDATED.
*
* USES CN.
*
* CALLS RDA, RLS, RMA.
RFO SUBR ENTRY/EXIT
LDD SC
STD CN
ZJN RFO1 IF NO OUTPUT IN BUFFER
RJM RDA READ FIRST SECTOR
LDC ADDI+NF ACCOUNT FOR RA ADJUSTMENT BY *SRA*
STM RDAB
STM RDAE
STM RDAH
LDD CN
LMD HN
ZJN RFO2 IF FULL SECTOR READ
RFO1 RJM RMA READ ERROR MESSAGE
LDD CN
LMD HN
ZJN RFO2 IF NOW FULL SECTOR
LDM CPAB
ZJN RFO3 IF NO JOB ACTIVITY, NO EM PROTECT
LMD HN
ZJN RFO3 IF NO ACTIVITY
RFO2 LDN PSNI SET JOB FL PRESENT
STM WTOA
RFO3 LDC BFMS+2 RESET ADDRESSES
STM RDAC
STM RDAF
STM RDAI
STM RMAB
LDD CN SET SECTOR WORD COUNT
STM OBUF+1
ZJN RFO4 IF NO OUTPUT DATA
LDN /REM/VOPR SET OUTPUT DATA AVAILABLE
RAM TERA
LDN 40 SET OUTPUT FROM ROLLOUT FILE SUB STATUS
RAM TERB
RFO4 LDM TERA
LPN /REM/VIPR+/REM/VOPR
ZJN RFO5 IF NO I/O REQUEST PENDING
LDN IOJS SET JOB STATUS = *IOJS*
STM CJSA
RFO5 LJM RFOX RETURN
TER SPACE 4,15
** TER - TERMINATE ROLLOUT.
*
* ENTRY (TERA) = *VROT* STATUS.
* (TERB) = *VROT* SUB STATUS.
* (TERC) = SUBSYSTEM.
* (TERD) = PRIMARY FILE NAME.
*
* EXIT TO *1TO*.
*
* USES CM - CM+1, CM+3 - CM+4, CN - CN+4, T2 - T6.
*
* CALLS CIT, CPC, ITF, RRR, SRR.
*
* MACROS MONITOR.
TER6 LDD TT UPDATE TERMINAL TABLE
SHN 14
ADD TT+1
ADN /REM/VFNT
CWM TERD,ON
ADN /REM/VROT-/REM/VFNT-1
CWD CN
RJM RRR RESTORE R-REGISTER
TER SUBR
RJM SRR SET R-REGISTER TO IAF RA
LDD TT UPDATE TERMINAL TABLE
SHN 14
ADD TT+1
ADN /REM/VROT
CRD CN
ADN /REM/VSTT-/REM/VROT
CRD T2
LDM CPAB SET CONTINUATION STATUS
SHN 2
LMD CN+4
LPN 4
LMD CN+4
STD CN+4
LDM CROF CHECK ROLLOUT JOB STATUS
SHN -1
LPN 37
LMN IOJS
ZJN TER2.0 IF *IOJS* JOB STATUS
LMN DOJS&IOJS
NJP TER6 IF NOT *DOJS* JOB STATUS
TER2.0 LDD CN+4
SCN 32
ADC **
TERA EQU *-1 (RFO, CFI, TER)
STD CN+4
LDD CN+3 SET SUBSTATUS
LPC 7437 CLEAR SRU LIMIT, TIME LIMIT, AND FILE TYPE
LMC 0 SUBSTATUS
TERB EQU *-1
STD CN+3
LDD TT
SHN 14
ADD TT+1
ADN /REM/VFNT
CWM TERD,ON
ADN /REM/VROT-/REM/VFNT-1
CWD CN
RJM RRR RESTORE R-REGISTER
LDN 0 CHECK SUBSYSTEM
* LDN XX (SET TO SUB SYSTEM CODE BY /3RP/PRP)
TERC EQU *-1
STD CM+3
LMD T2+3
LPN 77
ZJN TER3 IF NO CHANGE
LDD TN SET TERMINAL NUMBER
STD CM+4
LDC /REM/VSBS HAVE *IAF* UPDATE SUBSYSTEM
STD CM
LDD MA
CWD CM
RJM ITF
TER3 RJM CPC CHECK PCP ROLLOUT COMPLETION
PJN TER4 IF PCP ROLLOUT
LDC /CPS/CCPS RELEASE CP FROM JOB
STD CM+1
MONITOR JACM
TER4 RJM CIT CALL *1TO* IF OUTPUT AVAILABLE
NJN TER5 IF *1TO* OR *1RO* TO BE CALLED IN THIS PP
* DROP PPU.
MONITOR DPPM DROP PP
TER5 LJM PPR EXIT TO PP RESIDENT
TERD BSSZ 5 PRIMARY FILE NAME
TERE VFD 18/3L1TO,6//REM/VCPT,12/0,9/0,3/0,12/0
WTO SPACE 4,10
** WTO - WRITE TERMINAL OUTPUT TO DISK.
*
* ENTRY (OP - OP+1) = OUT POINTER.
* (SC) = SECTOR COUNT OF BUFFER.
*
* USES CN - CN+4.
*
* CALLS WNS, RDA, RMA, RMB.
WTO SUBR ENTRY/EXIT
LDC OBUF WRITE FIRST SECTOR OF OUTPUT
STM WNSA SET BUFFER ADDRESSES
STM WNSB
STM WNSC
RJM WNS
LDC BFMS RESET BUFFER ADDRESSES
STM WNSA
STM WNSB
STM WNSC
LDD SC
ZJN WTO3 IF ALL OF TERMINAL OUTUT READ
WTO1 RJM RDA READ DATA FROM OUTUT BUFFER
LDD SC
ZJN WTO2 IF LAST SECTOR OF OUTPUT
RJM WNS WRITE BUFFER
UJN WTO1 LOOP FOR REST OF OUTPUT
WTO2 RJM RMA READ FIRST PART OF ERROR MESSAGE
LDD CN SET LAST SECTOR WORD COUNT
STM BFMS+1
RJM WNS WRITE BUFFER
WTO3 RJM RMB READ SECOND PART OF ERROR MESSAGE
LDD HN RESET SECTOR WORD COUNT
STM BFMS+1
WTOA UJN WTO4 RETURN
* PSN (JOB FL PRESENT)
LDN ZERL BUILD OUT POINTER
CRD CN
WTOB LDC ** FET ADDRESS
ZJN WTO4 IF NO FET ADDRESS
ADD RA WRITE FET+0
ADD NF ADD NFL SINCE RA HAS BEEN ADJUSTED
SHN 6
ADN 3 WRITE *OUT*
CWD OP-3
WTO4 LJM WTOX RETURN
TITLE SUBROUTINES.
CIT SPACE 4,30
** CIT - CALL *1TO* TO PROCESS OUTPUT.
*
* IF OUTPUT IS AVAILABLE FOR THE TERMINAL, *1TO* WILL BE CALLED
* INTO THIS PP. IF A *1TO* CALL IS NOT REQUIRED, A NULL OUTPUT
* REQUEST WILL BE ISSUED FOR THE TERMINAL AS A SIGNAL TO *IAF*
* THAT THE ROLLOUT IS COMPLETE.
*
* IF THIS IS A COMPOUND ROLLOUT AND TERMINAL OUTPUT IS
* AVAILABLE, THE TERMINAL NUMBER WILL BE STORED INTO THE
* *1RO* INPUT REGISTER IMAGE IN CM. WHEN THE PSEUDO-ROLLOUT
* COMPLETES, *1RO* WILL CALL *1TO* TO PROCESS THE TERMINAL
* OUTPUT FOR THE PCP JOB.
*
* ENTRY (TERA) = OUTPUT STATUS.
* (TERE - TERE+4) = FORMATTED *1TO* CALL
* (TN) = TERMINAL NUMBER.
*
* EXIT *TSEM/VASO* MONITOR REQUEST ISSUED TO SIGNAL
* ROLLOUT COMPLETION IF *1TO* IS NOT REQUIRED.
* (A) = 0 IF PP MAY BE DROPPED.
* (A) .NE. 0 IF EITHER *1TO* IS TO BE CALLED INTO THIS
* PP TO PROCESS TERMINAL OUTPUT OR *1RO* IS
* TO BE CALLED INTO THIS PP TO COMPLETE A
* COMPOUND ROLLOUT.
*
* USES CM+1, IR+2, IR+3.
*
* CALLS ITF.
*
* MACROS MONITOR.
CIT1 LDM CPCA
ZJN CIT2 IF NOT COMPOUND ROLLOUT
SOD IR+2 SET FUNCTION CODE 2
LDD TN SAVE TERMINAL NUMBER
STD IR+3
LDD IA UPDATE PP INPUT REGISTER
CWD IR
AOD IR+2 RESET ORIGINAL FUNCTION CODE
UJN CITX EXIT WITH (A) .NE. 0
CIT2 LDN /REM/VCPT MOVE TO *IAF* CP
STD CM+1
MONITOR CCAM
LDD CM+1
LMN /REM/VCPT (A) = 0 IF CHANGE NOT MADE
ZJN CITX IF CHANGE NOT MADE
LDD IA PLACE *1TO* CALL IN INPUT REGISTER
CWM TERE,ON
CIT SUBR ENTRY/EXIT
LDD TN SET TERMINAL NUMBER IN CALLS
STM TERE+4
STM CITA+4
LDM TERA CHECK FOR OUTPUT AVAILABLE
SHN 21-4
MJP CIT1 IF OUTPUT AVAILABLE
* ISSUE NULL OUTPUT TO SIGNAL ROLLOUT COMPLETION.
LDD MA WRITE FUNCTION TO MESSAGE BUFFER
CWM CITA,ON
RJM ITF ISSUE *TSEM* FUNCTION
LDM CPCA
UJP CITX EXIT WITH (A) NONZERO IF COMPOUND ROLLOUT
CITA CON /REM/VASO OUTPUT FUNCTION
CON 0,0,0 NULL PARAMETERS
CON 0 TERMINAL NUMBER
RDA SPACE 4,10
** RDA - READ DATA FOR TERMINAL OUTPUT.
*
* ENTRY (SC) = SECTOR COUNT.
* (SLIM) = SECTOR COUNT TO LIMIT.
* (OP - OP+1) = OUT POINTER.
*
* EXIT (SC), (SLIM), (OP - OP+1) UPDATED.
*
* USES CN - CN+2, SC, OP - OP+1.
RDA SUBR
LDD HN PRESET SECTOR WORD COUNT
STD CN
SOD SC DECREMENT SECTOR COUNT
NJN RDA1 IF NOT LAST SECTOR
LDC 0 SET LAST SECTOR WORD COUNT (CKO)
RDAA EQU *-1
STD CN
ZJN RDAX IF LAST SECTOR EMPTY
RDA1 SOM SLIM DECREASE SECTORS TO LIMIT COUNT
MJN RDA3 IF LIMIT REACHED
LDD OP READ BUFFER
SHN 6
ADD RA
PSN
* ADD NF (*RDA* CALLED BY *WTO*)
RDAB EQU *-1
SHN 6
ADD OP+1
CRM OBUF+2,CN
RDAC EQU *-1 (RFO)
RDA2 LDD CN ADVANCE OUT
RAD OP+1
SHN -14
RAD OP
UJN RDAX RETURN
RDA3 LDC 100 SET WRAP AROUND WORD COUNTS
RDAD EQU *-1
STD CN+1
LDD OP READ FIRST PART
SHN 6
ADD RA
PSN
* ADD NF (*RDA* CALLED BY *WTO*)
RDAE EQU *-1
SHN 6
ADD OP+1
CRM OBUF+2,CN+1
RDAF EQU *-1 (RFO)
LDD CN
SBD CN+1
MJN RDA2 IF NOT WRAP AROUND
STD CN+2 SET SECOND PART WORD COUNT
ZJN RDA4 IF SECOND PART ZERO
LDD CN+1 SET WRAP AROUND BUFFER POSITION
SHN 2
ADD CN+1
RAM RDAI
RDAG LDC * READ SECOND PART (CKO)
SHN 14
ADD RA
PSN
* ADD NF (*RDA* CALLED BY *WTO*)
RDAH EQU *-1
SHN 6
CRM OBUF+2,CN+2
RDAI EQU *-1 (RFO, RDA)
RDA4 LDC * RESET OUT
RDAJ EQU *-2
ADD CN+2
STD OP+1
SHN -14
STD OP
LJM RDAX RETURN
SLIM CON 0 SECTORS TO LIMIT
RMA SPACE 4,10
** RMA - READ ERROR MESSAGE.
*
* ENTRY (CN) = SECTOR COUNT.
*
* EXIT (CN) UPDATED.
*
* USES T0, T1, CN.
RMA SUBR ENTRY/EXIT
RMAA LDN 0 (CEM)
ZJN RMAX IF NO MESSAGE
STD T1
RAD CN INCREMENT SECTOR WORD COUNT
SBD T1 SET BUFFER POSITION
STD T0
SHN 2
ADD T0
RAM RMAB
TLDC MS1W,CPAD
CRM OBUF+2,T1
RMAB EQU *-1 (CKO, RFO)
UJN RMAX
RMB SPACE 4,10
** RMB - READ SECOND PART OF ERROR MESSAGE
*
* USES T1, T2.
*
* CALLS WNS.
RMB SUBR ENTRY/EXIT
RMBA LDC 0 (CEM)
ZJN RMBX IF NO ERROR MESSAGE
STD T1
STM BFMS+1 SET SECTOR WORD COUNT
SHN -14
STD T2
LDD T1
ZJN RMB1 IF NO SECOND PART OF MESSAGE
TLDC MS1W,CPAD
ADD T2
CRM BFMS+2,T1
RMB1 LDC BFMS WRITE SHORT SECTOR
RJM WNS
UJN RMBX RETURN
SPACE 4,10
USE BUFFER
ERRNG OBUF-*
TITLE ROUTINES OVERLAYED BY *OBUF*.
CKO SPACE 4,10
** CKO - CHECK TERMINAL INPUT AND OUTPUT.
*
* EXIT (OP - OP+1) = OUTPUT DATA POINTER.
* (SC) = SECTOR COUNT OF OUTPUT BUFFER.
*
* USES T1, T8, T9, SC, CM - CM+4.
*
* CALLS ANR, CBP, CEM, SIO, VAD.
CKO SUBR ENTRY/EXIT
TLDC TINW,CPAD CHECK FOR INPUT FET POINTER SET
CRD CM
LDD CM+3
SCN 77
SHN 6
ADD CM+2
SHN 6
ZJN CKO1 IF NO INPUT REQUEST
LDC 0
INEF EQU *-1 (INTERACTIVE ERROR FLAG)
NJN CKO1 IF ERROR FLAG
LDN /REM/VIPR SET INPUT REQUESTED
RAM TERA
CKO1 TLDC TIOW,CPAD CHECK IF OUTPUT FET POINTER SET
CRD T8-3
LDD T8
LPN 37
STD T8
SHN 14
ADD T9
NJN CKO6 IF EXPLICIT OUTPUT REQUEST
LDN PSNI
STM ANRA OUTPUT ONLY COMPLETE LINES
RJM SIO SEARCH FOR IMPLICIT OUTPUT
NJN CKO7 IF OUTPUT FOUND
CKO2 LDN 0 CLEAR SECTOR COUNT
STD SC
AOM RMSA ALLOW FOR ZERO LENGTH OUTPUT SECTOR
CKO3 LDM INEF
NJN CKO4 IF ERROR FLAG
LDM CPAB
LPN 1
NJN CKO5 IF JOB ACTIVITY
CKO4 RJM CEM CHECK FOR ERROR MESSAGES
CKO5 LJM CKOX RETURN
* PROCESS OUTPUT.
CKO6 RJM VAD READ FET+0
CRM TFET,ON
CKO7 RJM CBP CHECK BUFFER PARAMETERS
NJP CKO2 IF INVALID FET
LDD T8 SET UP TO UPDATE FET
LPN 37
SHN 14
LMD T9
SHN 14
STM MSRE+1
STM WTOB+1
SHN -14
STM MSRE
RAM WTOB
RJM ANR ASSURE NETWORK REQUIREMENTS
LDD CN+3 LENGTH = IN - OUT
SBD OP
SHN 14
ADD CN+4
SBD OP+1
PJN CKO8 IF IN .GE. OUT
SHN 6 LENGTH = (LIMIT - OUT) + (IN - FIRST)
ADD CM+1
SBD T7
SHN 14
ADD CM+2
SBD CM
CKO8 STD T1 SAVE LENGTH
SHN -6
ADN 1 ALLOW FOR EOR SECTOR
STD SC
LDD T1 SET LAST SECTOR WORD COUNT
LPN 77
STM RDAA
LDD CM+1 WORD COUNT TO LIMIT = LIMIT - OUT
SBD OP
SHN 14
ADD CM+2
SBD OP+1
STD T1 SAVE WORDS TO LIMIT
SBN 1
SHN -6 STORE SECTORS TO LIMIT
STM SLIM
LDD T1 CHECK WORD COUNT TO LIMIT
LPN 77
ZJN CKO9 IF FULL SECTOR
STM RDAD SET WORD COUNT OF FIRST PART
CKO9 LDD CM SET FIRST
STM RDAG+1
STM RDAJ+1
LDD T7
RAM RDAG
STM RDAJ
LJM CKO3 CHECK ERROR
ANR SPACE 4,25
** ANR - ASSURE NETWORK REQUIREMENTS.
*
* ENTRY (TERA) = BIT *VIPR* SET IF INPUT REQUEST.
* (TFET+4) = FET REQUEST CODE.
* (JFLC) = JOB ACTIVITY (ZERO IF END OF JOB)
* (T7 - CM) = FIRST.
* (CN+3 - CN+4) = IN.
* (OP - OP+1) = OUT.
* (CM+1 - CM+2) = LIMIT.
*
* EXIT BUFFER ACCEPTED AS-IS IF ANY OF- INPUT REQUEST, BUFFER
* FULL AND NO END-OF-LINE, WRITE EOR/EOF, OR END OF JOB.
* IF NOT ONE OF THE ABOVE SPECIAL CASES,
* (CN+3 - CN+4) IS ALTERED TO ENCOMPASS ALL TERMINATED
* DATA LINES IN THE BUFFER. A LINE FRAGMENT WILL NOT BE
* SENT TO THE TERMINAL IN THIS CASE.
*
* USES CN+3 - CN+4, T1 - T4, ZR - ZR+4.
*
* CALLS GMX, RRR, SRR.
*
* MACROS ISTORE.
ANR SUBR ENTRY/EXIT
LDM TERA CHECK INPUT REQUESTED
LPN /REM/VIPR
NJN ANRX IF INPUT REQUESTED, RETURN
LDM CPAB
LPN 1
ZJN ANRX IF END OF JOB STEP
LDM TFET+4
LPC 774
LMN 14
ANRA NJN ANRX IF NOT BUFFERED WRITE
* PSN (IMPLICIT OUTPUT)
LDD CN+3 IN
STD T1
STD T3
LDD CN+4
STD T2
STD T4
UJP ANR4 CHECK IF EMPTY BUFFER
ANR1 SOD T2 IN-1
PJN ANR2 IF NO BORROW FROM BITS 14 - 21
AOD T2
SOD T1
ANR2 LDD T1 CHECK IN-1 .GE. FIRST
SBD T7
SHN 14
ADD T2
SBD T7+1
PJN ANR3 IF IN-1 .GE. FIRST
LDD CM+1 SET WORKING IN = LIMIT
STD T1
LDD CM+2
STD T2
UJN ANR1 REPEAT FOR BUFFER POINTER WRAP-AROUND
ANR3 LDD T1
SHN 6
ADD RA
SHN 6
ADD T2
CRD ZR
LDD ZR+4 CHECK FOR END-OF-LINE
ZJP ANR5.1 IF END OF LINE FOUND IN BUFFER
LDD T1 DECREMENT IN FOR EXIT CONDITION
STD CN+3
LDD T2
STD CN+4
PSN
* UJN ANR4 (ALLOW ONLY ONE PASS THROUGH THIS CODE)
ANRB EQU *-1
ISTORE ANRB,(UJN ANR4)
LDD T1
RAM ANRC-1
LDD T2
STM ANRC
ANR4 SBD OP+1 CHECK FOR IN .NE. OUT
SHN 6
ADD CN+3
SBD OP
NJP ANR1 IF IN .NE. OUT, CONTINUE SEARCH
* CHECK INITIAL BUFFER CONDITIONS BY COMPUTING LENGTH AVAILABLE
* FOR A WRITE INTO THE BUFFER.
LDD OP LENGTH = OUT - IN
SBD T3
SHN 14
ADD OP+1
SBD T4
PJN ANR5 IF OUT .GE. IN
SHN 6 LENGTH = (LIMIT-FIRST)-(IN-OUT)
ADD CM+1
SBD T7
SHN 14
ADD CM+2
SBD T7+1
ANR5 SBN 1
ZJN ANR5.2 IF BUFFER WAS FULL INITIALLY
* CHECK THE TERMINAL CLASS TO SEE WHETHER OR NOT THE TERMINAL
* IS SYNCHRONOUS, ASYNCHRONOUS, OR A MUX TERMINAL.
ANR5.1 RJM SRR SET R-REGISTER TO IAF RA
RJM GMX CHECK MULTIPLEXOR STATUS
PJN ANR6 IF MUX TERMINAL
LDD TA GET ADDRESS OF *VMST* TABLE
SHN 6
ADN /REM/VMST
CRD ZR
LDD ZR+1 READ TERMINAL *VMST* WORD
SHN 6
ADD TA
SHN 6
ADD ZR+2
ADD TN
CRD ZR
LDD ZR+1 CHECK FOR SYNC OR ASYNC TERMINAL
LPC 377
SBN 10+1 TERMINAL CLASS .LE. 8 = ASYNC LINE
PJN ANR6 IF SYNCHRONOUS TERMINAL
LDC 0
ANRC EQU *-1
ZJN ANR6 IF BUFFER ENDED WITH AN EOL
STD T4
SHN -14
STD T3
ANR5.2 LDD T3
STD CN+3
LDD T4
STD CN+4
ANR6 RJM RRR RESTORE R-REGISTER
LDN ZERL RESET (ZR - ZR+4)
CRD ZR
LJM ANRX RETURN
CBP SPACE 4,15
** CBP - CHECK BUFFER PARAMETERS.
*
* ENTRY (T8 - T9) = FET ADDRESS.
*
* EXIT (A) = 0, IF FET VALID.
* (T7 - CM) = FIRST.
* (CN+3 - CN+4) = IN.
* (OP - OP+1) = OUT.
* (CM+1 - CM+2) = LIMIT.
*
* USES CM - CM+4, CN+2 - CN+6, T6 - T7.
*
* MACROS MONITOR.
CBP SUBR ENTRY/EXIT
LDD T8
STD CM+3
LDD T9
STD CM+4
LDC 3 VALIDATE ALL FET PARAMETERS
STD CM+1
MONITOR VFPM VERIFY FET PARAMTERS
LDD CM+1
NJN CBPX IF BAD FET
LDD T8 SAVE *OUT* POINTER
SHN 6
ADD RA
SHN 6
ADD T9
ADN 3
CRM MSRF,ON
ERRNZ CN+5-OP DIRECT CELLS MUST BE CONTIGOUS
LDD MA READ IN AND OUT
ADN 2
CRD CN+2
ADN 1
CRD T6
LDN 0 INDICATE NO ERROR
UJP CBPX RETURN
CEM SPACE 4,10
** CEM - CHECK ERROR MESSAGE.
*
* ENTRY (TT - TT+1) = TERMINAL TABLE ADDRESS.
* (INEF) = INTERACTIVE ERROR FLAG.
*
* USES CM - CM+4, CN - CN+4, T1 - T2.
*
* CALLS RRR, SRR, TSM.
*
* MACROS MONITOR.
CEM SUBR ENTRY/EXIT
RJM SRR SET R-REGISTER TO IAF RA
LDN 0 INITIALIZE MESSAGE WORD COUNT
STD T2
LDD TT GET SYSTEM
SHN 14
ADD TT+1
ADN /REM/VSTT
CRD CM
RJM RRR RESTORE R-REGISTER
LDD CM+3
LPN 77
STD CM
* DETERMINE IF STATUS MESSAGE TO BE ISSUED TO TERMINAL.
TLDC CSPW,CPAD CHECK *SUPPRESS ERROR MESSAGE* FLAG
CRD CN
LDD CN
SHN 21-5
MJN CEM6 IF ERROR MESSAGES SUPPRESSED
LDD CM CHECK IF BATCH SUBSYSTEM
LMN /REM/BATS
ZJN CEM1 IF BATCH SUBSYSTEM
LDM INEF
ZJN CEM6 IF NO ERROR MESSAGE
CEM1 RJM TSM TERMINATE STATUS MESSAGE
* CHECK CPU TIME MESSAGE REQUIRED.
CEM6 LDD CM CHECK SYSTEM
SBN /REM/BASS
MJP CEM7 IF BELOW *BASIC*
SBN /REM/BATS-/REM/BASS
PJN CEM7 IF *BATCH* OR ABOVE
TLDC SRUW,CPAD READ SRU ACCUMULATORS
CRD CM
ADN SRJW-SRUW
CRD CN
LDD MA WRITE TO MESSAGE BUFFER
CWD CN
ADN 1
CWD CM
LDN /CPS/ABEF
STD CM+1
MONITOR ACTM
LDD MA
CRM CEMB+4,ON
LDM CEMB+4
ZJN CEM7 IF NO CPU TIME
TLDC MS1W,CPAD WRITE TIME TO MESSAGE BUFFER
ADD T2
CWM CEMB,TR
LDN 3
RAD T2
CEM7 LDD T2
ZJN CEM10 IF NO MESSAGE(S)
LDM RDAA GET LAST SECTOR WORD COUNT
ADD T2
STD T1
SHN -6
NJN CEM8 IF SECTOR OVERLAP
LDD T2 SET WORD COUNT
UJN CEM9 STORE WORD COUNT AND RETURN
CEM8 LDD T1 SET SECOND PART WORD COUNT
LPN 77
STM RMBA+1
AOM RMSA INCREMENT SECTOR COUNT
LDD HN SET FIRST PART
SBM RDAA
RAM RMBA
LPN 77
CEM9 RAM RMAA
CEM10 LJM CEMX RETURN
CEMB DATA 28H"EM""NL"SRU 000000.000 UNTS.
CON 0
DFS SPACE 4,20
** DFS - DETERMINE FLUSH STATUS.
*
* THE REQUIREMENTS FOR A FILE TO BE FLUSHED ARE:
* FET MUST BE WITHIN FL.
* BUFFER MUST HAVE DATA IN IT.
* FET MUST NOT BE BUSY.
* *CIO* CODE IN FET MUST BE IN THE LIST.
* FILE MUST BE *OUTPUT* AND UNASSIGNED OR IT MUST BE
* ASSIGNED TO TERMINAL EQUIPMENT.
*
* ENTRY (T8 - T9) = FET ADDRESS.
*
* EXIT (A) = 0, IF NO FLUSH CANDIDATE.
* (TFET - TFET+4) = FIRST WORD OF FET.
*
* USES T1 - T5, CM - CM+4, CN - CN+4.
*
* CALLS VAD.
*
* MACROS NFA.
DFS SUBR ENTRY/EXIT
LDD T8 READ FET PARAMETERS
LPN 37
SHN 14
LMD T9
ADN 3
RJM VAD
ZJN DFSX IF FET OUTSIDE FL
CRD T3 READ OUT
SBN 1
CRD T1 READ IN
SBN 2
CRM TFET,ON READ FET+0
LDM TFET+4
LPN 1
ZJN DFSX IF FET BUSY
LDD T6
SBD T4
SHN 14
ADD T7
SBD T5
ZJN DFSX IF BUFFER EMPTY
LDN DFSAL CHECK ACCEPTABLE *CIO* CALLS
STD T1
LDM TFET+3
LPN 77
ZJN DFS2 IF NO FET ERRORS
DFS1 LDN 0
LJM DFSX RETURN
DFS2 SOD T1
MJN DFS1 IF FET CODE NOT IN LIST
LDM DFSA,T1
LMM TFET+4
SCN 2 IGNORE BINARY BIT
NJN DFS2 IF NOT VALID FET CODE
LDD NF SET NFL SIZE + 1
SHN 6
ADN 1
STD T7
* SEARCH FNT ENTRIES FOR ASSIGNED FILE.
LDC FNTN+LENF
STD T6
DFS3 NFA T6,R READ FNT ENTRY
CRD CM
LDD CM COMPARE FILE NAMES
ZJN DFS4 IF NO ENTRY
LMM TFET
NJN DFS4 IF NO MATCH
LDD CM+1
LMM TFET+1
NJN DFS4 IF NO MATCH
LDD CM+2
LMM TFET+2
NJN DFS4 IF NO MATCH
LDD CM+3
LMM TFET+3
SCN 77
ZJN DFS6 IF MATCH
DFS4 LDN LENF INCREMENT TO NEXT ENTRY
RAD T6
SBD T7
MJN DFS3 IF NOT END OF FNT
LDM TFET CHECK FOR *OUTPUT*
LMC 2ROU
NJN DFS5 IF NOT *OUTPUT*
LDM TFET+1
LMC 2RTP
NJN DFS5 IF NOT *OUTPUT*
LDM TFET+2
LMC 2RUT
NJN DFS5 IF NOT *OUTPUT*
LDM TFET+3
SCN 77
ZJN DFS7 IF *OUTPUT*
DFS5 LDN 0 FILE NOT TO BE FLUSHED
UJN DFS8 RETURN
DFS6 NFA T6,R CHECK EQUIPMENT ASSIGNMENT
ADN FSTL
CRD CM
LDD CM
LPC 777
LMN TTEQ
NJN DFS5 IF NOT ASSIGNED TO *TT*
DFS7 LDN 1 INDICATE OUTPUT AVAILABLE
DFS8 LJM DFSX RETURN
* TABLE OF CIO CODES TO FLUSH ON.
DFSA BSS 0
CON 1 FET NOT USED
CON 5 WRITE PRU
CON 15 BUFFERED WRITE
CON 25 WRITE EOR
CON 35 WRITE EOF
CON 105 OPEN WRITE
CON 121 OPEN ALTER
CON 145 OPEN WRITE REWIND
CON 161 OPEN ALTER REWIND
DFSAL EQU *-DFSA
GMX SPACE 4,10
** GMX - GET MULTIPLEXOR STATUS.
*
* ENTRY (TA) = SET PER *COMPSRR* ROUTINE *PIR*.
* (TN) = TERMINAL CONNECTION NUMBER.
* (R) = IAF RA IF R-REGISTERS PRESENT ON MACHINE.
*
* EXIT (A) = POSITIVE IF MULTIPLEXOR TERMINAL TYPE.
*
* USES ZR - ZR+4.
GMX SUBR ENTRY/EXIT
LDD TA TIMESHARING REFERENCE ADDRESS
SHN 6
ADN /REM/VNTP TERMINAL TABLE POINTER
CRD ZR
LDD ZR+2
ZJN GMXX IF NO NETWORK TERMINALS DEFINED
SBN 1 (A) = HIGHEST MUX TERMINAL NUMBER
SBD TN
UJN GMXX RETURN
SIO SPACE 4,15
** SIO - SEARCH FOR IMPLICIT OUTPUT.
*
* CHECKS LIST OF FILES ENTRY. IF NO LIST OF FILES ENTRY, IT
* CHECKS THE RA+2 LIST FOR FET OR FIT POINTERS.
*
* EXIT (A) = 0, IF NO DATA TO OUTPUT.
* (T8 - T9) = FET ADDRESS, IF DATA TO OUTPUT.
*
* USES CM - CM+4, CN - CN+4, T1 - T5, T8 - T9.
*
* CALLS DFS, VAD.
SIO SUBR ENTRY/EXIT
LDD FL
ZJN SIOX IF NO FL
TLDC LOFW,CPAD READ LIST OF FILES POINTER
CRD CM
LDD CM+1
LPN 37
SHN 14
LMD CM+2
ZJN SIO2 IF LIST OF FILES NOT SPECIFIED
ADN 1
RJM VAD VALIDATE ADDRESS
ZJN SIOX IF ADDRESS BAD
CRD T8-3 READ FIRST ENTRY
RJM DFS DETERMINE FLUSH STATUS
SIO1 UJN SIOX RETURN
* PROCESS RA+2 LIST.
SIO2 AOM SIOA
LPN 77
LMN PGNR
ZJN SIOX IF END OF LIST
LDD RA
SHN 6
SIOA ADN 1 POINTER TO LIST ENTRY
CRD T8-3
LDD T8-3
ZJN SIO1 IF END OF LIST
LDD T8 VALIDATE FET/FIT ADDRESS
LPN 37
SHN 14
LMD T8+1
SBN PGNR
MJN SIO2 IF FET ADDRESS LESS THAN *PGNR*
ADK PGNR+5
RJM VAD
SIO3 ZJN SIO2 IF FET/FIT OUTSIDE FL
SBN 5 DETERMINE IF FET/FIT
CRD CN
ADN 1
CRD T1
LDD CN+3
LPN 77
ADD CN+4
NJN SIO4 IF NOT POSSIBLE FIT
LDD T1+3 SET FIT/FET ADDRESS
STD T8
LDD T1+4
STD T9
SIO4 RJM DFS DETERMINE FLUSH STATUS
ZJN SIO3 IF FILE NOT TO BE FLUSHED
LJM SIOX RETURN
TSM SPACE 4,10
** TSM - TERMINATE STATUS MESSAGE.
*
* EXIT (T2) = MESSAGE WORD COUNT IF MESSAGE PRESENT.
* (T2) = 0 IF NO MESSAGE.
* END OF MESSAGE ZERO FILLED.
*
* USES T2, CN - CN+4.
TSM3 STD CN+1
TSM4 STD CN+2
TSM5 STD CN+3
TSM6 STD CN+4
TSM7 LDD T2
NJN TSM8 IF NOT FIRST MESSAGE WORD
LDD CN
ZJN TSMX IF NO MESSAGE
TSM8 TLDC MS1W,CPAD
ADD T2
CWD CN WRITE LAST WORD OF MESSAGE
AOD T2 SET MESSSAGE LENGTH
TSM SUBR ENTRY/EXIT
LDN 0
STD T2
TSM1 TLDC MS1W,CPAD READ MESSAGE WORD
ADD T2
CRD CN
LDD CN
ZJN TSM3 IF END OF MESSAGE
LDD CN+1
ZJN TSM4 IF END OF MESSAGE
LDD CN+2
ZJN TSM5 IF END OF MESSAGE
LDD CN+3
TSM2 ZJN TSM6 IF END OF MESSAGE
LDD CN+4
ZJN TSM7 IF END OF MESSAGE
LDD T2
LMN MS2W-MS1W-1
ZJN TSM2 IF LAST WORD OF MESSAGE BUFFER
AOD T2 ADVANCE WORD INDEX
UJN TSM1 CHECK NEXT WORD
VAD SPACE 4,10
** VAD - VALIDATE ADDRESS WITHIN FL.
*
* ENTRY (A) = ADDRESS.
*
* EXIT (A) = 0, IF ADDRESS BEYOND FL.
* (A) = ABSOLUTE ADDRESS OTHERWISE.
VAD1 LDN 0 INDICATE ADDRESS BEYOND FL
VAD SUBR ENTRY/EXIT
SHN 14
SBD FL
SHN 6
PJN VAD1 IF ADDRESS BEYOND FL
SHN 14
ADD FL
ADD RA
SHN 6
UJN VADX RETURN
SPACE 4,10
ERRNG BFMS-* SYSTEM SECTOR BUFFER OVERLAYS *3RP* CODE
PRP TITLE INITIALIZATION.
** PRP - PRESET PROGRAM.
*
* ENTRY (CN - CN+4) = WORD *SRUW* OF CPA.
*
* USES CM - CM+4.
*
* CALLS SIC.
*
* MACROS MONITOR.
PRP SUBR ENTRY/EXIT
LDC PRPA SET RELOCATION TABLE ADDRESS
RJM SIC RELOCATE INSTRUCTIONS
TLDC TXSW,CPAD
CRD CM
LDD CM SET SYSTEM CODE
SHN -6
RAM TERC
LPN 77
SBN /REM/MSYS
MJN PRP1 IF VALID SUBSYSTEM CODE
LDN 0 INDICATE NO ERROR FLAG
STD CM+2
LDC * SET DETECTION ADDRESS
STD CM+1
MONITOR CHGM CONDITIONALLY HANG PP
LDM TERC CLEAR SUBSYSTEM CODE
SCN 77
STM TERC
PRP1 LDD IR+2
NJN PRP1.1 IF NOT ROLLOUT FROM A CONTROL POINT
LDD IR+4 SET INTERACTIVE ERROR FLAG
STM INEF
NJN PRP2 IF ERROR FLAG SET
PRP1.1 LDD CN
LPC 2400 MASK TIME AND SRU LIMIT FLAGS
NJN PRP3 IF RESOURCE LIMITS EXCEEDED
PRP2 LJM PRPX RETURN
PRP3 SHN -12
ZJN PRP4 IF SRU LIMIT
LDN 1&2 SET TIME LIMIT
PRP4 LMN 2
SHN 6
RAM TERB
LDN DOJS FORCE *DOJS* ON RESOURCE LIMIT
STM CJSA
UJN PRP2 RETURN
PRPA BSS 0 INSTRUCTION RELOCATION TABLE
LIST D
SIC HERE
LIST *
CON 0 TERMINATE ENTRIES
* PRESET COMMON DECKS.
*CALL COMPSTA
SPACE 4,10
* CHECK FOR OVERFLOW.
OVERFLOW E1RO,EPFW
TITLE
TTL 1RO/3RQ - PROCESS MASS STORAGE ERRORS.
TITLE MAIN ROUTINES.
QUAL 3RQ
IDENT 3RQ,PRSX
*COMMENT 1RO - PROCESS MASS STORAGE ERRORS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SPACE 4,10
** 3RQ - PROCESS MASS STORAGE ERRORS.
ORG BFMS+5
PRS SUBR ENTRY/EXIT
LDC TSIC SET INSTRUCTION RELOCATION TABLE ADDRESS
RJM SIC RELOCATE INSTRUCTIONS
UJP PRSX RETURN
MSE SPACE 4,13
** MSE - PROCESS MASS STORAGE ERROR OR INSUFFICIENT SPACE.
*
* ENTRY (A) .EQ. 0 IF INSUFFICIENT SPACE FOR ROLLOUT.
* .NE. 0 IF MASS STORAGE ERROR.
*
* EXIT TO *PPR* IF PCP ROLLOUT.
* TO *ROJ7* IF NOT PCP ROLLOUT.
*
* USES CM - CM+4.
*
* CALLS CDF, ERS, RSJ, *0DF*.
*
* MACROS EXECUTE, MONITOR.
MSE BSS 0 ENTRY
ZJN MSE1 IF NOT MASS STORAGE ERROR
* PROCESS ROLLOUT FILE WRITE ERROR.
LDD IR+2
LMN 1
ZJN MSE3 IF *DMP=* CALL
RJM RSJ RESTORE JOB TO ITS PRE-ROLLOUT STATE
LDM CROG RELEASE TRACK CHAIN
STD CM+1
LDM CROG+1
STD CM+2
MONITOR DTKM
UJN MSE2 CHECK ROLLOUT TYPE
* PROCESS NO ROLLOUT FILE SPACE AVAILABLE.
MSE1 LDK NCPL ISSUE SYSTEM CP MESSAGE
CRD CM
AOD CM+1
SHN 7
ADK MS2W
CWM MSEA,TR
MSE2 LDD IR+2
LMN 3
ZJN MSE5 IF PCP ROLLOUT
LMN 1&3
NJN MSE4 IF NOT *DMP=* ROLLOUT
* RETURN DM* FILE.
MSE3 LDN 1 SET ROLLOUT FLAG
RJM ERS
RJM CDF CLEAR *DMP=* FLAGS
LDN 2 SET RETURN ROLLOUT FILE FLAG
STM OVL0-1
EXECUTE 0DF,OVL0 RETURN DM* FILE
* EXIT TO CLEAR JOB ADVANCE AND DROP PP.
MSE4 LDK /CPS/DPPS
LJM ROJ7 CLEAR JOB ADVANCE AND DROP
* RESTART PCP ROLLOUT.
MSE5 LDD IA REWRITE ORIGINAL PP INPUT REGISTER
CWD IR
LJM PPR RESTART PCP ROLLOUT
MSEA DATA C* NO ROLLOUT SPACE AVAILABLE.*
CDF SPACE 4,10
** CDF - CLEAR *DMP=* FLAGS.
*
* *CDF* WILL CLEAR *DMP=* PARAMETERS SET BY *1AJ* PRIOR TO
* CALLING *1RO*. THIS WILL RESULT IN THE REQUEST BEING
* REINITIATED BY *1AJ* AT A LATER TIME.
*
* EXIT *SPCW* *DMP=* INITIATED FLAGS CLEARED.
* (PPDW+2) = 0.
*
* USES CM - CM+4, CN - CN+4.
CDF SUBR ENTRY/EXIT
LDD CP
ADK SPCW
CRD CN
ADN PPDW-SPCW
CRD CM
LDD CN+1 CLEAR *DMP=* INITIATED FLAGS
SCN 43
STD CN+1
LDN 0 CLEAR PPDW+2
STD CM+2
LDD CP REWRITE *SPCW*
ADC SPCW
CWD CN
ADN PPDW-SPCW REWRITE *PPDW*
CWD CM
UJN CDFX RETURN
RSJ SPACE 4,10
** RSJ - RESET JOB TO ITS STATE AT THE START OF ROLLOUT.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
RSJ SUBR ENTRY/EXIT
* RESTORE *OUT* POINTER IN TERMINAL OUTPUT FET.
LDM MSRE
SHN 14
LMM MSRE+1
ZJN RSJ1 IF NO TERMINAL OUTPUT AVAILABLE
ADD RA
SHN 6
ADN 3
CWM MSRF,ON
* RESTORE ROLLOUT CONTROL FLAGS AND TIMED/EVENT ROLLOUT
* DESCRIPTOR.
RSJ1 TLDC STSW,CPAD RESTORE ROLLOUT CONTROL FLAGS
CRD CM
LDM MSRG GET ORIGINAL ROLLOUT CONTROL FLAGS
STD CM+2
LDD IR+2
LMN 3
NJN RSJ2 IF NOT PCP ROLLOUT
LDC /CPS/ALCS SET ALTERNATE CP FLAG
STD CM+1
MONITOR CCAM CLEAR ALTERNATE PCP ASSIGNMENT
RSJ2 TLDC STSW,CPAD
CWD CM
ADN TERW-STSW RESTORE ORIGINAL *TERW* IMAGE
CWM MSRH,ON
UJP RSJX RETURN
TSIC SPACE 4,10
** TSIC - INSTRUCTION RELOCATION TABLE.
TSIC BSS 0 INSTRUCTION RELOCATION TABLE
LIST D
SIC HERE
LIST *
CON 0 TERMINATE ENTRIES
SPACE 4,10
* OVERFLOW CHECKS.
OVERFLOW BFMS+5,EPFW
TITLE
TTL 1RO/3RS - PROCESS *DMP=* CALL
QUAL 3RS
IDENT 3RS,DMPX
*COMMENT 1RO - PROCESS *DMP=* CALL.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
3RS SPACE 4,10
** 3RS - PROCESS *DMP=* CALL.
ORG E1RO
DMP SUBR ENTRY/EXIT
UJN DMPX RETURN
CDM SPACE 4,15
** CDM - CREATE DM* FNT ENTRY.
*
* EXIT (FA) = NFL ADDRESS OF DM* FILE FNT ENTRY.
*
* USES FN - FN+4, FS.
*
* CALLS *0BF*.
*
* MACROS EXECUTE, MONITOR.
CDM SUBR ENTRY/EXIT
LDN ZERL CLEAR FNT IMAGE
CRD FN
LDC 3R*DM CREATE LFN
STD FN
SHN -6
SCN 77
STD FN+1
* CALL *0BF* TO CREATE FNT/FST ENTRY.
LDN NEEQ ASSIGN NULL EQUIPMENT
STD FS
LDN 40 SELECT SPECIAL FILE OPTION
STM OVL0-1
EXECUTE 0BF,OVL0 BUILD FILE USING RESERVED FNT ENTRY
ZJN CDMX IF FNT/FST ENTRY CREATED
* IF THE FNT/FST ENTRY WAS NOT CREATED, HANG THE PP
* SINCE THE RESERVED ENTRIES SHOULD ENSURE SUCCESSFUL
* CREATION.
* IF THE FILE ALREADY EXISTS BUT IS NOT ASSIGNED TO THE
* NULL EQUIPMENT HANG THE PP SINCE THIS INDICATES A SYSTEM
* LOGIC ERROR.
SBD HN
MJN CDM1 IF FILE NOT ALREADY PRESENT
LDD FS
LMN NEEQ
NJN CDM1 IF NOT ASSIGNED TO NULL EQUIPMENT
SOD FS+4 SET FILE BUSY
NFA FA,R
ADN FSTL
CWD FS
LJM CDMX RETURN
CDM1 LDK SWET SET SYSTEM SOFTWARE ERROR
STD CM+2
LDC * ADDRESS WHERE ERROR DETECTED
STD CM+1
MONITOR CHGM CONDITIONALLY HANG PP
EXECUTE 1AJ,=
LDD IR+1 PLACE *1AJ* CALL IN PP INPUT REGISTER
LPN 37
RAM CDMA+1
LDD IA
CWM CDMA,ON
LJM ROJ8 CALL *1AJ*
CDMA VFD 18/0L1AJ,6/,36/0
CDR SPACE 4,10
** CDR - COMPLETE *DMP=* ROLLOUT.
*
* ENTRY (CROF) = ASSIGNED EM FL IN *UEBS* WORD BLOCKS.
*
* USES CM - CM+5, FN - FN+4, FS - FS+4.
*
* CALLS CRS, ERS, ISR.
*
* MACROS EXECUTE, NFA, SFA.
CDR SUBR ENTRY/EXIT
RJM CRS CLEAR RECALL STACK
* RELEASE ECS FL IF FULL CM FL ROLLOUT.
LDD IR+4
NJN CDR1 IF NOT FULL CM FL ROLLOUT
LDC 1S12 RELEASE ASSIGNED EM
RJM ISR
* CLEAR ROLLOUT REQUESTED FLAG AND CPU STATUS FLAG IN *STSW*.
CDR1 LDN 0
CDR2 RJM ERS ENTER ROLLOUT STATUS
* FINISH BUILDING DM* FILE FNT ENTRY.
NFA FA,R
ADK FNTL READ FNT ENTRY
CRD FN
ADN FSTL-FNTL READ FST ENTRY
CRD FS
LDD IR+3 SET/CLEAR WRITE LOCKOUT FLAG
LPN 1
LMN 1
RAD FN+3
LDC 505 SET WRITE COMPLETE STATUS
STD FS+4
NFA FA,R
ADK FNTL WRITE FNT ENTRY
CWD FN
ADN FSTL-FNTL WRITE FST ENTRY
CWD FS
* CLEAR K-DISPLAY CONTROL, *CMM* CONTROL, AND SCP CONNECTIONS.
LDD CP
ADC DBAW
CRD CM
LDD CM SAVE FLAGS
SCN 77
STD CM
LDD IR+4
NJN CDR4 IF NOT FULL CM FL ROLLOUT
LDD IR+3
SHN 21-2
MJN CDR4 IF NOT CPA DUMP
LDD CM
LPC 7677 CLEAR *CMM* ACTIVE FLAG
STD CM
CDR4 LDN ZERL CLEAR K-DISPLAY ADDRESSES
CRD CM+1
LDD CP
ADC DBAW
CWD CM
ADK SSCW-DBAW CLEAR SCP CONNECTION INDICATORS
CWD ZR
* SET DM* FILE ADDRESS AND ROLLOUT COMPLETE FLAG.
ADK RFCW-SSCW
CRD CM
LDD FS
STD CM
LDD FS+1
STD CM+1
LDD CP
ADK RFCW
CWD CM
SFA EJT,EO
ADK SCHE
CRD CM
LDD CM+2
LPC 7377
LMC 400 SET *DMP=* ROLLOUT COMPLETE FLAG
STD CM+2
SFA EJT,EO
ADK SCHE
CWD CM
* SET *1AJ* CALL TO INITIATE *DMP=* PROGRAM.
EXECUTE 1AJ,=
LDD IR+1 PLACE *1AJ* CALL IN PP INPUT REGISTER
LPN 37
RAM CDMA+1
AOM CDMA+4
LDD IA
CWM CDMA,ON
LJM CDRX RETURN
CRS SPACE 4,10
** CRS - CLEAR RECALL STACK.
*
* USES T1, CM - CM+4.
CRS SUBR ENTRY/EXIT
LDN LREC-1 INITIALIZE INDEX
STD T1
CRS1 LDD CP CLEAR STACK ENTRY
ADK RECW
ADD T1
CWD ZR
SOD T1 DECREMENT INDEX
PJN CRS1 IF NOT COMPLETE
LDD CP RESET RECALL STACK POINTER
ADK STSW
CRD CM
LDN 1 CLEAR RECALL COUNT AND INITIALIZE POINTER
STD CM+4
LDD CP
ADN STSW
CWD CM
UJN CRSX RETURN
UFS SPACE 4,15
** UFS - UPDATE DM* FILE STATUS.
*
* ENTRY (FS) = ROLLOUT FILE EST ORDINAL.
* (FS+1) = ROLLOUT FILE FIRST TRACK.
* (FS+2) = ROLLOUT FILE CURRENT TRACK.
*
* EXIT DM* FILE FST ENTRY SET WITH ROLLOUT FILE POINTERS AND
* STATUS.
* (FA) = 0 FOR *WSS* SYSTEM SECTOR WRITE.
*
* USES FN - FN+4, FS+3, FS+4.
*
* MACROS NFA.
UFS SUBR ENTRY/EXIT
NFA FA,R
ADK FNTL READ FNT ENTRY
CRD FN
LDC ROFT*100+SSST SET FILE TYPE AND STATUS
STD FN+4
LDN FSMS SET FIRST SECTOR
STD FS+3
LDN 0 SET FILE STATUS
STD FS+4
NFA FA,R
ADN FNTL WRITE FNT ENTRY
CWD FN
ADN FSTL-FNTL WRITE FST ENTRY
CWD FS
UJN UFSX RETURN
SPACE 4,10
OVL1 BSS 0 *0BF* LOAD ADDRESS
PDM SPACE 4,10
** PDM - PRESET *DMP=* PROCESSING.
*
* ENTRY SYSTEM SECTOR CLEARED EXCEPT FOR *EJSS*.
* EJT ENTRY IN SYSTEM SECTOR *EJSS*.
*
* EXIT DMP= PRESET COMPLETE.
*
* USES T1, CM - CM+4, FS - FS+4,
*
* MACROS ISTORE, NFA.
PDM SUBR ENTRY/EXIT
LDD CP
ADK SEPW
CRD CM
ADK SPCW-SEPW
CRD FS
LDD FS+1
SHN 21-3
MJN PDM1 IF *DMP=* PARAMETER LIST IS IN *SPCW*
* MOVE *DMP=* PARAMETER BLOCK TO NFL.
LDN DMPL-1 SET BLOCK SIZE
STD T1
LDD FS+3
LPN 37
SHN 14
LMD FS+4
ZJN PDM1 IF NO PARAMETER BLOCK EXISTS
SHN 14
ADD RA
SHN 6
CRM DBUF,T1
NFA DMPN
CWM DBUF,T1
* CLEAR RA+1 IF NECESSARY.
PDM1 LDD FS+1
SHN 21-4
MJN PDM2 IF RA+1 SHOULD NOT BE CLEARED
LDD RA CLEAR RA+1
SHN 6
ADN 1
CWD ZR
PDM2 LDN 0 PRESET *DMP=* FOR FULL FL DUMP
STM DPSS
LDD IR+4
ZJN PDM4 IF FULL DUMP
STM JFLB
STM RMSB
SBD FL
MJN PDM3 IF *DMP=* CM FL .LT. ASSIGNED CM FL
LDD FL SET *DMP=* CM FL TO ASSIGNED CM FL
STM JFLB
STM RMSB
PDM3 LDD DI DISABLE EM ROLLOUT
STM JECI*2+SEQ
LDN 0 CLEAR EM FL
STM CROD
LDM JFLB STORE *DMP=* CM FL IN SYSTEM SECTOR
STM DPSS
PDM4 LDC /3RS/CDR MODIFY COMPLETION ROUTINE CALL
STM ROJF
LDD DI DISABLE JOB STATUS CHANGE
STM ROJD
STM JFLA
STM ROJE DISABLE NFL ROLLOUT
LDN 0 DO NOT ALLOCATE SPACE FOR NFL
STM RMSH
ISTORE ROJG,(UJN ROJ8)
LDN FS+1 SET TO UPDATE DM* FILE FST ENTRY
STM RMSC
LDN FS+2
STM RMSD
LDN FS
STM RMSE
LJM PDMX RETURN
DBUF BSS 0 *DMP=* PARAMETER BLOCK BUFFER
3RS SPACE 4,10
* OVERFLOW CHECKS.
ERRNG EPFW-OVL1-ZBFL *0BF* OVERFLOW
ERRNG EPFW-DBUF-DMPL*5+5 *DBUF* OVERFLOW
OVERFLOW E1RO,EPFW
TITLE
TTL 1RJ - RECALL PP AND ROLLOUT JOB.
TITLE 1RJ - RECALL PP AND ROLLOUT JOB.
QUAL 1RJ
IDENT 1RJ,RRJ RECALL PP AND ROLLOUT JOB.
*COMMENT 1RO - RECALL PP AND ROLLOUT JOB.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
SPACE 4,10
*** 1RJ - RECALL PP AND ROLLOUT JOB.
*
* W. E. GOEBEL. 84/10/23.
SPACE 4,10
*** *1RJ* CALL PARAMETERS.
*
* *1RJ* IS CALLED FROM A PP VIA THE *EXECUTE* MACRO.
*
* THE FOLLOWING FIELDS MUST BE SET UPON ENTRY TO *1RJ*.
*
* (IR) = PP INPUT REGISTER TO RECALL. THIS IS THE CM COPY
* OF THE INPUT REGISTER. TYPICALLY IT WILL BE THE
* SAME AS UPON INITIAL ENTRY TO THE PP.
* (IR+4) = THE EST ORDINAL TO TIMED EVENT ROLL FOR.
* THIS PARAMETER RESIDES IN THE DIRECT CELL *IR*+4,
* NOT IN THE CM COPY OF THE PP INPUT REGISTER.
* (MP - MP+4) = MESSAGE BUFFER PARAMETERS.
SPACE 4,10
*** MS2W MESSAGES.
*
* *WAITING - INACCESSIBLE DEVICE.*
TITLE LOCAL DEFINITIONS.
**** COMMON DIRECT LOCATION ASSIGNMENTS.
T8 EQU 16 SCRATCH
T9 EQU 17 SCRATCH
MP EQU 20 - 24 ASSEMBLY BUFFER
CN EQU 25 - 31 CM WORD BUFFER
****
TITLE MAIN PROGRAM.
RRJ SPACE 4,10
** RRJ - MAIN PROGRAM.
*
* ENTRY (IR+4) = EQUIPMENT NUMBER WAITING FOR.
*
* EXIT TO PPR, PP IS DROPPED.
ORG PPFW
RRJ UJN RJS1 ENTRY WHEN CALLED FROM CPU PROGRAM
CON 0 ALLOW ROOM FOR RJM ENTRY
RJS1 LDD CP WRITE MESSAGE TO CONTROL POINT
ADN MS2W
CWM RJSA,TR
* SET JOB STEP PRIVATE FILE RETURN FLAG TO FORCE *1AJ* TO CHECK
* FOR PARTIALLY RETURNED FILES BEFORE ADVANCING TO THE NEXT JOB
* STEP. SUCH *1AJ* PROCESSING WOULD BE REQUIRED IF AN
* INACCESSIBLE DEVICE ERROR PREVENTED THE COMPLETE RETURN OF A
* FILE BUT THE RECALLED PP DROPPED BECAUSE OF AN ERROR FLAG
* BEFORE THE DEVICE BECAME ACCESSIBLE.
LDN /CPS/RPMS SET RETURN JOB STEP PRIVATE FILES
STD CM+4
LDN /CPS/SCTS SET JOB CONTROL FLAG
STD CM+1
MONITOR SJCM
* ROLL OUT JOB ON EVENT IF POSSIBLE.
LDD CP CHECK SUBSYSTEM ID
ADK JCIW
CRD CM
LDD CM+2
ADC -LSSI-1
PJN RJS2 IF NOT TO ROLL OUT JOB
LDN 77 SET ROLLOUT TIME
STD CM+2
LDD IR+4 SET EST ORDINAL
STD CM+3
LDN WISE SET WAIT INACCESSIBLE DEVICE EVENT
STD CM+4
LDD MA WRITE TIMED/EVENT ROLLOUT PARAMETERS
CWD CM
LDN /CPS/ROTE SET *ROCM* OPTION
STD CM+1
MONITOR ROCM ROLLOUT CONTROL POINT
* RECALL PP.
RJS2 LDN ZERL SET *RECM* SUBFUNCTION
CRD CM
LDD IA SET INPUT REGISTER TO RECALL
CRD CN
LDD MA
CWD CN
ADN 1
CWD MP
MONITOR RECM RECALL AND DROP PP
LJM PPR ENTER PP RESIDENT
RJSA DATA C*WAITING - INACCESSIBLE DEVICE.*
SPACE 4,10
* OVERFLOW CHECKS.
OVERFLOW PPFW,EPFW
TITLE
TTL 1RO - ROLLOUT JOB.
SPACE 4,10
END