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