plato:source:plaopl:condi
Table of Contents
CONDI
Table Of Contents
- [00014] CONDENSOR INITIALIZATIONS.
- [00025] INIT - INITIALIZATIONS.
- [00362] OVERLAY LOADING SUBROUTINES.
- [00364] CCC - COMPUTE CMP SUBOVERLAY CM.
- [00401] CSC - COMPUTE SUBOVERLAY CM.
- [00458] CSE - COMPUTE SUBOVERLAY EM.
- [00496] REM - REQUEST EXTENDED MEMORY.
- [00547] GETPR - GET CPU PRIORITY PASSED ON '7CONDEN'7
Source Code
- CONDI.txt
- 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
plato/source/plaopl/condi.txt ยท Last modified: 2023/08/05 18:54 by Site Administrator