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