CONDI
* /--- FILE TYPE = E
* /--- BLOCK OVERLAY 00 000 81/08/05 21.30
IDENT OVERLAY
* EVERYTHING AFTER THIS POINT IS TOSSED AFTER
* INITIALIZATION
ENTRY OVERLAY
OVERLAY BSS 0
END
* /--- BLOCK CONDI 00 000 81/07/18 02.00
IDENT CONDI
TITLE CONDENSOR INITIALIZATIONS.
SYSCOM
CST
EXT RUNCFL RUNNING CM FIELD LENGTH
EXT ECSPRTY
EXT NOVRLYS
EXT OVRLTAB
* /--- BLOCK INIT 00 000 78/11/08 10.56
INIT EJECT
** INIT - INITIALIZATIONS.
*
* ADJUST CM FIELD LENGTH, GET EM, AFFILIATE
* WITH MASTOR TO MAKE JOB A CONDENSOR.
ENTRY INIT
* CHECK *ARGR* (RA+2) TO SEE IF CPU PRIORITY SETTING PASSED
*
INIT CALL GETPR SEE IF PRIORITY SPECIFIED
CALL S=READY,KPRI SET JSN/CPU PRIORITY
*
SX0 COINITP POINTER TO TABLES
SA0 PTRS
+ RE 1 READ ADDRESS OF TABLES
RJ ECSPRTY
SA1 A0 LOAD ECS ADDRESS
BX0 X1
SA0 LOWLOCS
+ RE NPTRS READ POINTER TABLE
RJ ECSPRTY
*
SX6 NPTRS
IX6 X6+X1
SA6 A1 STORE POINTER TO OVERLAY TABLE
*
* SET LENGTH OF SOURCE BUFFERS
*
SA1 SBUFL
SX6 BLKLTH CONVERT TO ABSOLUTE LENGTH
IX1 X1*X6
BX6 X1
LX1 1 TOTAL EXTRA ECS NEEDED
SA6 AFILEBF LENGTH OF SOURCE BUFFER
SA6 AUSEBUF LENGTH OF USE BUFFER
SA2 COBUFL TOTAL AMOUNT OF ECS NEEDED
SA3 A2+1 LENGTH OF ROLLOUT BUFFER
IX6 X2+X1
IX7 X3+X1
SA6 A2
SA7 A3
* CHANGE -CDISK- PARAMETER TO 0 OR 1 FROM
* (36/0, 24/7777 7777) OR 1.
SA1 CDISK
SX6 X1
SA6 A1
* IF CDISK = 1, ALLOW A MAXIMUM OF 1 CONDENSOR.
ZR X6,INIT1
SA6 NCOND
* FIND AVAILABLE CONDENSOR ORDINAL
INIT1 SA1 ACONDC READ STROAGE ADDRESSES
BX0 X1
SA0 CBUF
SA2 NCOND
SB2 X2-1
RE B2+1
RJ ECSPRTY
INIT2 SA1 A0+B2
CX1 X1
ZR X1,INIT3 IF THIS CONDEN ORDINAL FREE
SB2 B2-1
GE B2,INIT2
CALL S=MSG,NOFREE
CALL S=KILL
* /--- BLOCK INIT 00 000 78/11/08 10.54
INIT3 SX6 B2
IX0 X0+X6
SA6 CONDN SET CONDENSOR ORDINAL
SA0 MIZERO WRITE -0
WE 1
RJ ECSPRTY
CALL S=WAIT,1000 WAIT FOR OTHER CONDENSORS
SA2 A0 (X2) = ORIGINAL WORD
SA0 CBUF
RE 1
RJ ECSPRTY
SA1 A0
BX1 X1-X2
CX1 X1
NZ X1,INIT1 IF WORD CHANGED
* GET ECS STORAGE FOR BUFFERS.
SA0 COBUFL
SA1 CONDN
SX0 COECRQ+X1 BIAS TO THIS CONDENSORS WORD
WE 1
RJ ECSPRTY
INIT4 SA0 SWK1
RE 1
RJ ECSPRTY
SA1 A0
NG X1,INIT5 IF REQUEST COMPLETE
CALL S=WAIT,20 WAIT A BIT
EQ INIT4 CHECK AGAIN
INIT5 SB2 AECSBUF (B2) = FWA OF ECS RELOCATION
SB3 COBUFL (B3) = LWA+1 OF ECS RELOCATION
MX2 -24
BX7 -X2*X1 (X7) = CURRENT ECS ADDRESS
INIT6 SA1 B2
SA7 A1 SET ECS ADDRESS
SB2 B2+1
IX7 X1+X7 BUMP ECS ADDRESS
LT B2,B3,INIT6 IF MORE RELOCATION
SA1 AECSBUF SET ADDRESS OF COMMUNICATION
SA2 APLACOM
BX6 X1+X2
SA6 A2
* SET UP MASTOR REQUEST BUFFER FREE CHAIN
SA1 ACMASRQ FWA OF BUFFER AREA
SX0 NMREQ
IX0 X0+X1 FWA OF FIRST REQUEST
BX6 X0
SA0 =XMASFREE
SX3 MS.RDIM LENGTH OF INDIVIDUAL REQUEST
SB7 NMREQ-2 COUNTER
INIT10 NG B7,INIT12 IF DONE
IX7 X0+X3 POINT TO NEXT BUFFER
SA7 A0
WE 1 WRITE POINTER
RJ ECSPRTY
BX0 X7 MOVE TO NEXT BUFFER
SB7 B7-1
EQ INIT10
INIT12 SA6 A0 FIRST BUFFER IS FIRST FREE
* INFORM MASTOR OF THE REQUEST AREA.
CALL S=SETR,ACMASRQ,NMREQ
SA2 AFILEBF SET ADDRESS OF ROLL BUFFER
SA1 COBUFL+1 LENGTH OF ROLL BUFFER
SX6 BLKLTH
IX6 X2+X6
SA6 ROLLBUF
BX6 X1
SA6 ROLBUFL SET LENGTH OF ROLLOUT BUFFER
* /--- BLOCK INIT 00 000 82/09/27 14.26
* ALTERNATE CONDENSORS WAIT UNTIL OVERLAYS ARE
* LOADED AND THEN PROCEED TO READ THE COMMAND
* NAME TABLES AND THE OVERLAY TABLE.
* ALWAYS RELOAD THE OVERLAYS WHEN CDISK = ON.
SA1 CDISK
NZ X1,INIT17
* IF NECESSARY, THE FIRST CONDENSOR LOADS THE
* OVERLAYS AND INITIALIZES THE COMMAND TABLES.
INIT14 SA1 PTRS SEE IF OVERLAYS ALREADY LOADED
RX2 X1
NZ X2,INIT15 IF OVERLAYS LOADED
SA1 CONDN CHECK TO SEE IF FIRST CONDENSOR
SA2 NCOND
SX1 X1+1
IX1 X1-X2
ZR X1,INIT17 IF FIRST CONDENSOR
CALL S=WAIT,1000
EQ INIT14 CHECK AGAIN
INIT15 BX6 X1
SA6 OVLADDR SAVE EM ADDR OF OVERLAY TABLE
* SET THE FIRST WORD TO BE USED FOR THE CIO BUFFER.
SA1 LWPR
SX6 X1
SA6 =XFIRST
SB1 1
RJ =XIOL GET DATE AND TIME OF NOGO
SA3 LDATE (X3) = DATE FOR OVERLAYS IN EM
SA4 LTIME (X4) = TIME FOR OVERLAYS IN EM
BX3 X1-X3
BX4 X2-X4
BX3 X3+X4
NZ X3,NOMATCH IF CONDENSOR DOES NOT MATCH
SA1 OVLADDR (X1) = EM ADDR OF OVERLAY TABLE
BX0 X1
SA0 OVRLTAB (A0) = CM ADDR OF OVERLAY TABLE
+ RE NOVRLYS
RJ ECSPRTY
* /--- BLOCK INIT 00 000 81/07/21 04.40
INIT16 SA1 A0 FOR ROLL-IN/OUT IN CONDEN
BX6 X1
SA6 RUNCFL STORE DOWN LOW
LX6 30
SA6 CMFL
CALL S=CM,CMFL
RJ CFL CHECK CM FIELD LENGTH LIMITS
* ADJUST ADDRESS OF COMMAND CONDENSE STATS BUFFER.
SA1 CONDN (X1) = CONDENSOR ORDINAL
SA2 ACDSTAT (X2) = ADDR OF 1ST STATS BUFFER
SX3 SCOMNDH+CMNDMAX (X3) = LENGTH OF BUFFER
IX6 X1*X3 (X6) = OFFSET FOR THIS COND.
IX6 X2+X6 (X6) = ADDR FOR THIS COND.
SA6 A2 RESET ADDRESS TO RIGHT BUFFER
* ADJUST CMP SAVED FILE DIRECTORY BUFFER.
SA1 CONDN (X1) = CONDENSOR ORDINAL
SA2 ACMPDIR (X2) = FWA OF 1ST BUFFER
SX3 64 LENGTH OF BUFFER
IX6 X1*X3 (X6) = OFFSET FOR THIS COND.
IX6 X6+X2 (X6) = FWA FOR THIS CONDENSOR
SA6 A2 (ACMPDIR) = BUFFER FWA
* SET ADDRESS OF COMMUNICATION AREA
SA1 CONDN BIAS TO THIS CONDENSORS WORD
SA2 ACONDC
IX0 X1+X2
SA0 APLACOM
WE 1
RJ ECSPRTY
LX0 -24
BX6 X1+X0
SA6 A1 SET ADDRESS/ORDINAL
MX6 0
SA6 ROLLF MARK CONDENSOR ROLLED IN
SB1 1
DATE STRTMSG+1
CALL S=LOG,STRTMSG,5 START MESSAGE TO LOG
EQ =XCONDEN
* /--- BLOCK OVERLAYS 00 000 81/07/18 08.53
INIT17 SA0 ENGLISH SET UP COMMAND LAGUAGE TABLE
SA1 CMNDLGS
BX0 X1
+ WE CLANGS+1
RJ ECSPRTY
* SET THE CMP (1,0) OVERLAY LOAD FLAG.
SA1 CMP
SX1 X1+
ZR X1,INIT18 IF CMP OFF
SA1 =XCMPOV10
MX0 -18
BX6 X0*X1
SA6 A1+
*
*
* LOAD OVERLAYS AND WRITE OUT TO ECS
*
* SET THE CM FIELD LENGTH.
INIT18 SA1 LWPR
SA2 HHA
SX6 =XOVERLAY-200B
IX1 X1-X6
IX6 X1+X2
SA6 =XLOADFL
* SET THE CIO BUFFER FWA.
SA1 LWPR
SX6 X1
SA6 =XFIRST
* LOAD THE OVERLAYS.
SB1 1
RJ =XIOL
* SAVE THE DATE / TIME OF -NOGO-.
BX6 X1
BX7 X2
SA6 LDATE
SA7 LTIME
SX1 B0 (X1) = CURRENT RANDOM ADDRESS
RJ =XRMS
* SAVE THE MAX CM FL REQUIRED IN THE FIRST WORD
* OF THE OVERLAY TABLE SO OTHER CONDENSORS CAN
* PICK IT UP FROM EM. ADD A KLUDGE FACTOR SO
* THERE IS ENOUGH CM TO READ THE OVERLAYS FROM DISK.
SA1 =XMAXCM
SX6 X1+100B
SA6 OVRLTAB
* SET THE NEW CIO BUFFER FWA.
SX6 =XOVERLAY
SA6 =XFIRST
SX1 COINITP
RX1 X1 (X1) = EM ADDR OF PARAMETERS
SX0 LDATE-LOWLOCS
IX0 X0+X1 (X0) = EM ADDR OF DATE AND TIME
SA0 LDATE
WE 2
RJ ECSPRTY
SA0 OVRLTAB
SA1 PTRS
BX0 X1
+ WE NOVRLYS WRITE OVERLAY ADDRESSES OUT
RJ ECSPRTY
EQ INIT16 FINISH UP INITIALIZATIONS
NOMATCH CALL S=MSG,NOMATCHM
SA1 ACONDC (X1) = EM ADDR OF COND ORDINALS
SA2 CONDN (X2) = THIS CONDENSOR ORDINAL
IX0 X1+X2 (X0) = EM ADDR OF THIS ORDINAL
SA0 ZILCH (A0) = ADDR OF +0
WE 1 MARK CONDENSOR ORDINAL UNUSED
RJ ECSPRTY
EQ =XBYE
NOMATCHM DIS ,* CONDENSOR/OVERLAY MISMATCH.*
ZILCH DATA 0
OVLADDR BSS 1 EM ADDRESS OF OVERLAY TABLE
* /--- BLOCK CCC 00 000 82/09/27 18.35
TITLE OVERLAY LOADING SUBROUTINES.
CCC SPACE 4,10
** CCC - COMPUTE CMP SUBOVERLAY CM.
*
* COMPUTE CM FL TO BE THE MAXIMUM OF THE CURRENT
* CM FL AND THE AMOUNT OF CM REQUIRED FOR THE
* CMP SUBOVERLAY.
*
* ENTRY (B1) = 1.
* (B3) = SUBOVERLAY LENGTH.
* (B5) = FWAS.
*
* EXIT (B1) = SAME AS ENTRY.
* (B2) = SAME AS ENTRY.
* (B5) = SAME AS ENTRY.
*
* USES X - 1, 6.
* A - 1.
* B - NONE.
*
* CALLS NONE.
*
* MACROS NONE.
ENTRY CCC
CCC PS ENTRY / EXIT
SA1 =XMAXCM (X1) = MAX CM SO FAR
SX6 B3+B5 (X6) = CM NEEDED FOR THIS OV
IX1 X1-X6
PL X1,CCC IF NOT LARGER
SA6 A1
EQ CCC RETURN
* /--- BLOCK CSC 00 000 82/09/27 18.35
CSC SPACE 4,10
** CSC - COMPUTE SUBOVERLAY CM.
*
* COMPUTE CM FL TO THE MAXIMUM OF THE CURRENT CM FL
* AND THE AMOUNT OF CM REQUIRED FOR EACH SUBOVERLAY.
*
* ENTRY (B1) = 1.
* (B2) = FWA OF OVERLAY FILE.
* (B3) = LENGTH OF OVERLAY FILE.
* (B4) = POINTER TO NEXT SUBOV.
*
* EXIT (B1) = SAME AS ENTRY.
* (B2) = SAME AS ENTRY.
*
* USES X - 1, 2, 6.
* A - 1, 2, 6.
* B - 3, 4, 7.
*
* CALLS NONE.
*
* MACROS NONE.
ENTRY CSC
CSC PS ENTRY / EXIT
* SEE IF THERE ARE ANY MORE SUBOVERLAYS TO LOOK AT.
CSC1 ZR B3,CSC IF NO MORE SUBOVERLAYS
* GET SUBOVERLAY LENGTH, AND UPDATE OVERLAY FILE
* LENGTH.
SA1 B4 (X1) = SUBOVERLAY LENGTH
SB7 X1 (B7) = SUBOVERLAY LENGTH
SB3 B3-B7 (B3) = NEW LENGTH OF OVFILE
SB4 B4+B1
SB4 B4+B7 (B4) = POINTER TO NEXT SUBOV
LX1 30
SX1 X1+B2 (X1) = LWA + 1
* GET MAX CM FL FOUND SO FAR.
SA2 =XMAXCM
IX2 X2-X1
PL X2,CSC1 IF NOT LARGER
* UPDATE CM FL REQUIRED.
BX6 X1
SA6 A2
EQ CSC1 LOOP
* /--- BLOCK CSE 00 000 82/09/27 18.35
CSE SPACE 4,10
** CSE - COMPUTE SUBOVERLAY EM.
*
* ADD THE LENGTH OF THE CURRENT OVERLAY FILE TO THE
* AMOUNT OF EM REQUIRED.
*
* ENTRY (B1) = 1.
* (B3) = LENGTH OF OVERLAY FILE.
* (OVEM) = EM REQUIRED SO FAR.
*
* EXIT (B1) = SAME AS ENTRY.
* (B3) = SAME AS ENTRY.
* (OVEM) = SAME AS ENTRY.
*
* USES X - 1, 6.
* A - 1, 6.
* B - NONE.
*
* CALLS NONE.
*
* MACROS NONE.
ENTRY CSE
CSE PS ENTRY / EXIT
* ADD THE LENGTH OF THE OVERLAY FILE TO THE
* AMOUNT OF EM REQUIRED.
SA1 =XOVEM
SX6 B3
IX6 X1+X6
SA6 A1
EQ CSE RETURN
* /--- BLOCK REM 00 000 82/09/27 18.35
REM SPACE 4,10
** REM - REQUEST EXTENDED MEMORY.
*
* ENTRY (B1) = 1.
* (B3) = EM REQUIRED.
*
* EXIT (B1) = SAME AS ENTRY.
* (OVLECS) = EM FWA.
*
* USES X - 0, 1, 6.
* A - 0, 1, 6.
* B - NONE.
*
* CALLS S=RCL.
*
* MACROS NONE.
ENTRY REM
REM PS ENTRY / EXIT
* REQUEST EM.
SX6 B3 (X6) = EM REQUIRED
SA6 =XOVLECS
SA1 CONDN
SX0 X1+COECRQ
SA0 A6
+ WE B1
RJ =XECSPRTY
* WAIT FOR REPLY.
REM1 RJ S=RCL
SA0 =XOVLECS
+ RE B1
RJ =XECSPRTY
SA1 A0
PL X1,REM1 IF REQUEST NOT FILLED
* SAVE EM FWA.
MX6 -24
BX6 -X6*X1
SA6 A0
EQ REM RETURN
* /--- BLOCK GETPR 00 000 78/11/08 10.57
GETPR SPACE 4,10
** GETPR - GET CPU PRIORITY PASSED ON '7CONDEN'7
* CONTROL CARD (IF PASSED)
*
* PRIORITY *MUST* BE IN OCTAL (1B-72B)
*
* USES X - 0, 1, 2, 6.
* A - 1
* B - NONE.
*
ENTRY GETPR
GETPR PS ENTRY / EXIT
SA1 ARGR GET 1ST ARGUMENT
ZR X1,GETPR NO ARGUMENT PASSED, USE DEFAULT
MX0 42 SET MASK FOR CPU PRIORITY
BX1 X0*X1 MASK OFF MISC PARAM CHARS
LX1 12 SHIFT PARAM RIGHT JUST
MX0 48 SEE IF PARAM > 2 CHARS
BX6 X0*X1 MASK
NZ X6,GETPR IF SO, USE DEFAULT
MX0 -6
BX6 -X0*X1 MASK FIRST DIGIT
SX2 X6-33B SEE IF < 0
NG X2,GETPR IF SO, USE DEFAULT
SX6 X6-42B-1 SEE IF > 7
ZR X6,GETPR IF NEXT CHAR = 8, DEFAULT
PL X6,GETPR IF > 7, USE DEFAULT
LX1 60-6 RIGHT SHIFT *ARGR* 1 CHAR
BX6 -X0*X1 GET NEXT CHARACTER
ZR X6,SAVEPR IF ONLY 1 DIGIT, SAVE IT
SX1 X6-55B IF A SPACE, SAVE IT
ZR X1,SAVEPR
SX1 X6-33B SEE IF DIGIT < 0
NG X1,GETPR IF < 0, USE DEFAULT PR
SX6 X6-42B-1 SEE IF DIGIT > 7
ZR X6,GETPR IF NEXT CHAR = 8, DEFAULT
PL X6,GETPR IF > 7, USE DEFAULT
LX1 3 MULTIPLY BY 10B
IX2 X2+X1 ADD TO FIRST DIGIT
SAVEPR ZR X2,GETPR IF PR < 1, USE DEFAULT
SA1 KPRI GET DEFAULT PR
IX0 X2-X1 COMPARE
PL X0,GETPR IF PR > DEFAULT, USE DEFAULT
BX6 X2 SAVE NEW PRIORITY
SA6 KPRI
EQ GETPR
* /--- BLOCK END 00 000 78/11/08 10.21
*
KCONDEN DATA 6LCONDEN
KPRI DATA 72B DEFAULT CPU PRIORITY
IZER BSSZ 2
MIZERO DATA -0
PTRS DATA 0 CONDENSOR ECS POINTERS ADDRESS
ENGLISH DATA 8LENGLISH
BSSZ CLANGS MUST IMMEDIATELY FOLLOW ENGLISH
STRTMSG DATA 10HCS
BSSZ 2
OVLFLAG DATA 0
*
SWK1 BSSZ MS.RDIM
*
NOFREE DIS 0,* NO FREE COMMUNICATION AREA.*
ZERO DATA 0 ZERO WORD TO WRITE TO ECS
CFL$ EQU 0 *MASRQ* MUST BE DEFINED
*CALL PLACCFL
* SETUP SYSTEM INTERFACES TO USE INTERFACE IN
* IDENT *CSYS* ONLY.
EXT S=SYS
SYS= EQU S=SYS
EXT S=WNB
WNB= EQU S=WNB
EXT S=RCL
RCL= EQU S=RCL
EXT S=MSGX
MSG= EQU S=MSGX
*
END