CSYS * /--- FILE TYPE = E * /--- BLOCK CSYS 00 000 79/02/14 15.07 IDENT CSYS TITLE CONDENSOR SYSTEM INTERFACE TITLE SYMBOL DEFFINITIONS * SST SYSCOM DEFINE INSTALATION PARAMS * * * *CALL AIDTEXT *CALL COMSPRD *CALL COMSSSD * * * * *CALL COMCSYS ENTRY S=SYS S=SYS EQU SYS= ENTRY S=WNB S=WNB EQU WNB= ENTRY S=RCL S=RCL EQU RCL= ENTRY S=MSGX S=MSGX EQU MSG= *CALL COMCCPM *CALL COMCWOD * * * *CALL SYSCON *CALL PLASMRC * * *CALL PCFTEXT *CALL PARAMC *CALL PCTEXT *CALL LOWTXT SPACE 3 *** MASTOR MAKE MASTOR REQUEST * * MAKE REQUESTS TO MASTOR * PURGMAC MASTOR MACREF MASTOR$ MASTOR MACRO BUF,REQ,P1,P2 MACREF MASTOR SX6 REQ LX6 60-12 SA6 BUF IFC NE,*P1**,2 SX6 P1 SA6 BUF+1 IFC NE,*P2**,2 SX6 P2 SA6 BUF+2 SYSTEM "PPU.MAS",R,BUF RECALL BUF ENDM * * * * /--- BLOCK ROUTINES 00 000 81/06/25 04.17 TITLE SYSTEM INTERFACE ROUTINES * * * * S=RCL GO INTO RECALL * * ENTRY S=RCL * * * S=BMSG OUTPUT B-DISPLAY MESSAGE * * ON ENTRY - B1 = ADDRESS OF MESSAGE * * ENTRY S=BMSG S=BMSG EQ * SB2 1 RJ S=LOG EQ S=BMSG * * * * * S=MSG OUTPUT DAYFILE MESSAGE * * ON ENTRY - B1 = ADDRESS OF MESSAGE * * ENTRY S=MSG S=MSG EQ * SB2 B0 RJ S=LOG EQ S=MSG * * * * * S=LOG OUTPUT DAYFILE MESSAGES * * ON ENTRY - B1 = ADDRESS OF MESSAGE * B2 = TYPE OF MESSAGE * * * MESSAGE TYPES - * * 0 = SYSTEM DAYFILE, USER DAYFILE, LINE 1 * 1 = LINE 1 OF CONTROL POINT * 2 = LINE 2 OF CONTROL POINT * 3 = USER DAYFILE, LINE 1 * 4 = ERROR LOG * 5 = ACCOUNT FILE * ENTRY S=LOG S=LOG EQ * SX1 B1 MESSAGE X1,B2,R OUTPUT MESSAGE EQ S=LOG * /--- BLOCK ROUTINES 00 000 76/08/01 06.30 * * * * S=WAIT RECALL FOR INDICATED TIME * * ON ENTRY - B1 = MILLISECOND TIME TO PAUSE * * NOTE - IF THE CPU RECALL PARAMETER (CR) IS LESS * THAN THE MINIMUM CLOCK *TICK* IN THE *CLOCKER* * ROUTINE OF PP/MRQ, WE WILL RECALL BEFORE THE CLOCK * CAN TICK, WHICH LOOKS LIKE THE CLOCKER HAS DIED. * * ENTRY S=WAIT S=WAIT EQ * SX6 B1 PICK UP TIME TO PAUSE NG X6,S=WAIT ZR X6,S=WAIT SA1 SYSCLOK *** DEBUG CODE * BX6 X1 (X6) = *SYSCLOK* SA6 OSYSCLK SX6 B1 RESTORE X6 * *** DEBUG CODE IX6 X1+X6 COMPUTE END WAIT TIME SA6 ENDTIME SX6 10D WAIT AT LEAST 10 RECALLS SA6 DEADCLK BEFORE DECIDING CLOCK IS DEAD * SW10 RECALL *** DEBUG CODE * SA1 SYSCLOK CURRENT MSEC CLOCK BX6 X1 SA1 OSYSCLK MSEC CLOCK BEFORE RECALL IX1 X1-X6 COMPARE NG X1,SW20 -- CURRENT .GT. PREVIOUS, OK MX6 -1 DECREMENT DEADMAN COUNTER SA1 DEADCLK IX6 X1+X6 SA6 A1 PL X6,SW30 -- NOT DEAD FOR 'N RECALLS * START CLOCK UP MX6 -1 SA1 MSCKCNT (X1) = NUMBER OF TIMES STARTED IX6 X1-X6 (X6) = (X1) + 1 SA6 A1 STORE *MSCKCNT* MASTOR SWK1,MS.SCK,B0 START MILLISECOND CLOCK SW20 BSS 0 SX6 10D RESET CLOCK DEADMAN SA6 DEADCLK SA1 SYSCLOK STORE CURRENT MSEC CLOCK BX6 X1 SA6 OSYSCLK SW30 BSS 0 * *** DEBUG CODE SA1 SYSCLOK BX6 X1 SA1 ENDTIME IX6 X6-X1 NG X6,SW10 IF TIME IS NOT UP EQ S=WAIT * DEADCLK BSS 1 DEADMAN COUNTER FOR CLOCK * * * * * S=CTIME RETURN CPU TIME USED * * ON ENTRY - B1 - ADDRESS TO RETURN CLOCK * * ENTRY S=CTIME S=CTIME EQ * TIME B1 * CONVERT TIME TO MILLISECONDS SA1 B1 MX6 -12 BX2 -X6*X1 (X2) = MILLISECONDS AX1 12 MX6 -36 BX1 -X6*X1 (X1) = SECONDS SX6 1000 IX6 X6*X1 * /--- BLOCK ROUTINES 00 000 76/08/01 06.30 IX6 X6+X2 SA6 A1 EQ S=CTIME * * * /--- BLOCK ROUTINES 00 000 76/10/31 12.08 * * * * S=CM OBTAIN CENTRAL MEMORY * * ON ENTRY - B1 = ADDRESS OF MEMORY REQUEST WORD * * ENTRY S=CM S=CM EQ * MX0 30 SA1 B1 BX6 X0*X1 SET UP ARGUMENT SA6 SWK1 SX6 B1 SA6 SWK2 SAVE ADDRESS OF ARGUMENT SB1 1 MEMORY CM,SWK1,R RECALL SWK1 MX0 30 SA1 SWK1 BX6 X0*X1 SA2 SWK2 SA6 X2 MESSAGE =0,2,R CLEAR 2ND LINE MESSAGE SA1 SYSCLOK SAVE CLOCK BX6 X1 SA6 SWK1 RECALL IDLE SA1 SWK1 COMPARE CLOCKS SA2 SYSCLOK IX1 X1-X2 NZ X1,S=CM IF STILL RUNNING MASTOR SWK1,MS.SCK,B0 START MILLISECOND CLOCK EQ S=CM * /--- BLOCK ROUTINES 00 000 79/02/14 15.11 * * * S=READY LOGIC READY * AFFILIATES WITH PLATO AND SETS CPU PRIORITY * * ON ENTRY - B1 = ADDRESS OF CPU PRIORITY * * ENTRY S=READY S=READY EQ * SA1 B1 PICK UP CPU PRIORITY .NOS23 IFGE OSLEV,617D (NOS VERSION 2.3) BX6 X1 .NOS23 ELSE .NOSV2 IFGE OSLEV,562D (NOS VERSION 2) SX2 PLSI INITIAL PLATO ID .NOSV2 ELSE (NOS VERSION 1) SX2 LSSS-1 PICK UP QUEUE PRIORITY .NOSV2 ENDIF LX2 30 BX6 X1+X2 SET UP PRIORITY REQUEST .NOS23 ENDIF SA6 SWK1+1 MASTOR SWK1,MS.PRI MODE 1 SET ERROR EXIT TYPE * SRDY1 BSS 0 SA1 =4L"LGC.PLAT" PLATO LOGIC IDENTIFIER BX6 X1 SA6 SWK1+1 MX6 0 MARK FLAG REGISTER NOT REQUIRED SA6 SWK1+2 MASTOR SWK1,MS.AFF AFFILIATE MX0 -11 SA1 SWK1 CHECK REPLY CODE AX1 12 BX1 -X0*X1 MASK OFF ERROR CODE ZR X1,SRDY2 RECALL IDLE FOR A WHILE EQ SRDY1 * * IDENTIFY THIS CONDENSOR AS A LOGIC. CONDENSOR * LOGIC NAMES CONSIST OF THE FOLLOWING -- * * 12/*CO* * 6/MAINFRAME ORDINAL (CONFIG SYMBOL *MFORD*) * 6/NUMBER FROM 1 TO 9 * SRDY2 BSS 0 SX6 MS.MAS*10000B+MA.MFO LX6 60D-24D SA6 SWK1 SYSTEM "PPU.MAS",R,SWK1 RECALL SWK1 * /--- BLOCK ROUTINES 00 000 79/02/14 15.23 SA1 SWK1+1 (X1) = MF ORDINAL (INTEGER) SX2 1RA (X2) = FIRST MFORD (CHAR) IX6 X1+X2 (X6) = MF ORDINAL (CHAR) LX6 42 (X6) = 12/0,6/MIDCHAR,42/0 * SX1 2RCO (X1) = 48/0,12/*CO* SA1 CONDNAM (X1) = 36/0,24/*COA1* AX1 12 (X1) = 48/0,12/*CO* LX1 48 (X1) = 12/*CO*,48/0 BX6 X1+X6 (X6) = 12/*CO*,6/MIDCHAR,42/0 SX1 1R1 (X1) = FIRST ORDINAL TO TRY SRDY2.1 BSS 0 LX1 60-24 SHIFT ORDINAL TO 4TH CHAR BX6 X1+X6 FORM LOGIC NAME SA6 APLACOM SA6 SWK1+1 ALSO STORE IN MASTOR REQ BUFFER MASTOR SWK1,MS.ILOG IDENTIFY CONDENSOR AS LOGIC MX0 -11 SA1 SWK1 CHECK MASTOR REPLY CODE AX1 12 BX1 -X0*X1 (X1) = MASTOR REPLY CODE ZR X1,SRDY3 IF LOGIC NAME ACCEPTED SA1 APLACOM (X1) = LAST LOGIC NAME TRIED MX0 18 BX6 X0*X1 (X6) = 12/*CO,6/MIDCHAR,42/0 AX1 36 SHIFT LETTER TO BOTTOM MX0 -6 BX1 -X0*X1 (X1) = LAST LETTER TRIED SX2 X1-1R9 TEST FOR ORDINAL OUT OF RANGE SX1 X1+1 INCREMENT ORDINAL NZ X2,SRDY2.1 TRY NEW LOGIC NAME SB1 =15CDUPLICATE LOGIC RJ S=MSG * /--- BLOCK ROUTINES 00 000 84/12/07 08.30 RJ S=ABORT * SRDY3 MASTOR SWK1,MS.SCK,B0 START MILLISECOND CLOCK EQ S=READY * * /--- BLOCK ROUTINES 00 000 79/09/22 20.21 * * * * S=KILL TERMINATE THIS JOB * ENTRY S=KILL S=KILL EQ * ENDRUN EQ S=KILL * * * * S=ABORT ABORT CONTROL POINT * * ENTRY S=ABORT S=ABORT EQ * ABORT + EQ * * * /--- BLOCK ROUTINES 00 000 79/07/05 03.28 SETR SPACE 5,11 ** S=SETR - SET ADDRESS OF MASTOR REQUEST BUFFER * * INFORMS MASTOR OF REQUEST BUFFER ADDRESS * * ENTRY - ((B1)) = REQUEST BUFFER ADDRESS * (B2) = LENGTH OF REQUEST BUFFER ENTRY S=SETR S=SETR PS SA1 B1 BX6 X1 SA6 SWK1+1 SX6 B2 LENGTH OF REQUEST BUFFER MX1 1 BX6 X1+X6 SET *NO REPLY AREA* FLAG SA6 A6+1 SX6 3RNEW MARK AS NEW STYLE AREA SA6 A6+1 MASTOR SWK1,MS.SETR SA1 SWK1 MX0 -11 AX1 12 BX1 -X0*X1 ZR X1,S=SETR IF NO ERROR SB1 =C/ MASTOR SETR REJECT./ RJ S=MSG RJ S=ABORT * /--- BLOCK ECSPRTY 00 000 81/06/25 04.18 * ENTRY ECSPRTY * * * * LIST X * *CALL ECSPRTY * * * /--- BLOCK END 00 000 79/02/14 15.22 * CONDNAM DATA 4R"LGC.COND" (COA1) MSCKCNT BSSZ 1 COUNT WHEN S=WAIT STARTS CLOCK OSYSCLK BSS 1 PREVIOUS VALUE OF *SYSCLOK* ENDTIME BSS 1 TIME TO LEAVE RECALL (S=WAIT) * * SWK1 BSS 1 SWK2 BSS 1 SWK3 BSS 1 * * END