MAS
* /--- FILE TYPE = E
* /--- BLOCK IDENT 00 000 76/03/02 14.47
IDENT MAS,MAS
TITLE -MAS-
TITLE DEFINITIONS
COMMENT MASTOR REQUEST PROCESSOR
*
*
************************************************************
*
*
PERIPH
SST
*
*
LIST F
* QUAL UFP
**CALL COMSUFP CYBERNET EQUIVALENCES
* QUAL *
*CALL COMSACC
*CALL COMPMAC
*CALL COMSEJT
*CALL COMSPIM
*CALL COMSSSD
*CALL COMSSSJ
QUAL CPS
*CALL COMSCPS
QUAL *
*CALL PLAP501
*CALL COMSPRD
*CALL AIDTEXT
*CALL PTEXT
*CALL SYSCON
*CALL PLASMPC
*CALL PLASMRC
*
*
D.T0 EQU 20B DIRECT CELL WORK VARIABLES
D.T1 EQU 21B
D.T2 EQU 22B
D.T3 EQU 23B
D.T4 EQU 24B
*
D.PPWD EQU 25B (2 WORDS) ADDRESS OF CPU / PPU
* COMMUNICATION AREA
D.CPN EQU 27B CONTROL POINT NUMBER
*
CN EQU 30B - 34B USED BY COMMON DECK *COMPUFT*
EM EQU 35B ECS / ESM MODE
RI EQU 36B - 37B RANDOM INDEX (FOR CRA)
FN EQU 40B - 44B USED BY COMMON DECK *COMPUFT*
SC EQU 45B SCRATCH CELL -- USED BY *CDV*
D.COM EQU 46B COMSOURCE NOS FLAG (0 - NO)
D.A170 EQU 47B 170/800 FLAG (NONZERO=170/800)
D.RSAV EQU 60B - 61B SAVE (R) REGISTER
D.RSV EQU 62B FWA+1 OF ROUTINE *RSVDDP*
D.REL EQU 63B FWA+1 OF ROUTINE *RELDDP*
D.RE EQU 64B FWA+1 OF ROUTINE *READECS*
D.WE EQU 65B FWA+1 OF ROUTINE *WRITECS*
EX EQU 66B EXTENDED ADDRESSING MODE (=1)
*
************************************************************
* /--- BLOCK EM MACROS 00 000 85/05/02 10.45
TITLE EM MACROS
** EM TRANSFER MACROS
*
* THESE MACROS HANDLE THE SETUP FOR CALLS TO THE
* READ AND WRITE ROUTINES IN COMMON DECK *EMPROCS*
*
* 1ST TAG = PPADDR = ADDRESS IN PP MEMORY.
* 2ND TAG = EMADDR = FIRST BYTE OF TWO-BYTES CON-
* TAINING EM ADDRESS RELATIVE
* TO MASTOR(N)'7S RAX.
* 3RD TAG = OFFSET = CONSTANT OFFSET ADDED TO SUM
* OF (EMADDR) AND (MRAX)
* 4TH TAG = LTH = LENGTH OF TRANSFER IN CM WORDS.
*
* THIS MACRO INTERFACES WITH THE ROUTINES FROM
* *EMPROCS* D.RE/D.WE WHICH REQUIRE';
* (D.T0) = PPU MEMORY ADDRESS
* (D.T1) AND (D.T2) = EM ADDRESS (UPPER/LOWER)
* (D.T2) = TRANSFER LENGTH IN PP BYTES
*
MACREF EMXFER$
EMXFER MACRO RDWRT,PPADDR,EMADDR,OFFSET,LENGTH
MACREF EMXFER
.LTH SET LENGTH
LDK PPADDR
STD D.T0
LDM MRAX+1
.1 IFC NE,$EMADDR$$
ADM EMADDR+1
.1 ENDIF
.2 IFC NE,$OFFSET$$
ADK OFFSET
.2 ENDIF
STD D.T2
SHN -12D
ADM MRAX
.3 IFC NE,$EMADDR$$
ADM EMADDR
.3 ENDIF
STD D.T1
LDK .LTH*5
STD D.T3
RJM 0,D._RDWRT
NJP MASERR4
ENDM
MACREF READEM$
READEM MACRO PPADDR,EMADDR,OFFSET,XFERLTH
MACREF READEM
EMXFER RE,PPADDR,EMADDR,OFFSET,XFERLTH
ENDM
MACREF WRITEM$
WRITEM MACRO PPADDR,EMADDR,OFFSET,XFERLTH
MACREF WRITEM
EMXFER WE,PPADDR,EMADDR,OFFSET,XFERLTH
ENDM
*
*
* /--- BLOCK COMMENTS 00 000 82/10/18 10.47
TITLE COMMENTS
************************************************************
*
*
* PPU PROGRAM *MAS* PROVIDES THE COMMUNICATION LINK
* BETWEEN CENTRAL PROCESSOR JOBS AND *MASTOR*
* *MAS* ALSO PROCESSES PPU REQUESTS REQUIRED BY
* *MASTOR* IN PROCESSING THE REQUEST GENERATED BY
* A CENTRAL PROCESSOR JOB
*
* *** *** *** *** *** *** *** *** *** **
*
* INPUT REGISTER FORMAT
*
* 18/MAS, 6/CP, 11/, 1/NA, 24/RA
*
* NA - IF NON-ZERO DO NOT ABORT ON MASTOR
* NOT ACTIVE. RETURN ERROR CODE
*
* RA - REQUEST ADDRESS
*
*
*
* JOB TO *MAS* REQUEST FORMAT -
* 1ST WORD -
* 1ST 12 BITS = REQUEST TYPE
* NEXT 24 = UNUSED
* NEXT 12 = *MAS* TO JOB REPLY FIELD
* NEXT 11 = 0
* NEXT 1 = COMPLETION BIT
* 2ND - 7TH WORDS = REQUEST / REPLY PARAMETERS
*
*
* ECS *MAS* / *MASTOR* REQUEST AREA FORMAT -
* 1ST WORD - *MAS* TO *MASTOR* REQUEST AREA
* 1ST 42 BITS = JOB NAME. 'FOR NOS 562 AND
* LATER - 24 / JOB SEQUENCE NAME
* 12 / EJT ORD, 6/UNUSED
* NEXT 3 = ORIGIN MAIN-FRAME NUMBER
* NEXT 3 = 0 (DESTINATION MAIN-FRAME)
* NEXT 6 = *MASTOR* TO *MAS* REPLY FIELD
* NEXT 6 = REQUEST TYPE CODE
* 2ND WORD - *MASTOR* TO *MAS* REQUEST AREA
* 1ST 12 BITS = *MAS* TO *MASTOR* REPLY FIELD
* NEXT 36 = REQUEST PARAMETERS
* NEXT 12 = REQUEST TYPE CODE
* 3RD - 8TH WORDS = *MAS* TO *MASTOR* REQ PARAMS
*
* IF BIT 5 OF MASTOR REPLY STATUS IS SET,
* JOB WILL BE ABORTED WITH *SYET* ERROR FLAG.
*
*
************************************************************
*
*
* /--- BLOCK INITIAL 00 000 82/10/26 12.30
TITLE -MAS- INITIALIZE CONTROL POINT PARAMS
*
*
*
ORG PPFW
MAS BSS 0
* INITIALIZE TO SHOW EM ROUTINES HAVE NOT BEEN
* LOADED YET.
LDN 0 (A) = EM ROUTINES NOT LOADED
STD D.RE
*
* VERIFY CALLER IS EITHER SYSTEM ORIGIN
* OR PROGRAM HAS A *SSJ=* ENTRY POINT.
*
LDD CP (A) = CONTROL POINT AREA ADDR
*
.NOSV2 IFLT OSLEV,562D NOS V1
ADN JNMW
CRD CM
LDD CM+3
LPN 77B (A) = JOB ORIGIN TYPE
.NOSV2 ELSE NOS V2
ADN JOTW JOB ORIGIN TYPE WORD
CRD CM
LDD CM+3 (A) = JOB ORIGIN TYPE
.NOSV2 ENDIF
*
STM JOBORG SAVE JOB ORIGIN TYPE
LMN SYOT
ZJN MAS2 IF JOB OF SYSTEM ORIGIN
LDD CP CHECK FOR SYSTEM ORIGIN PRIV
ADK AACW
CRD CM
LDD CM+4
LPN 20B
ZJN MAS1 IF NO SYOT PRIVLEDGES
LDN SSTL CHECK IF IN DEBUG MODE
CRD CM
LDD CM+3
LPN 1
NJN MAS2 IF IN DEBUG MODE
MAS1 LDD CP
ADC SEPW
CRD CM
LDD CM
SHN 17-2
MJN MAS2 IF SSJ= PRESENT
LJM MASERR1
*
* INITIALIZE MACHINE TYPE (C170, 170/800, ETC.)
*
MAS2 BSS 0
.NOSV2 IFGE OSLEV,578D NOS V2
LDC MABL READ MAINFRAME ATTRIBUTE BLOCK
CRD CM
LDD CM+1
SHN -13B (A) = 0 IF 800 SERIES, ELSE 1
LMN 1 (A) = 1 IF 800 SERIES, ELSE 0
.NOSV2 ELSE NOS V1
LDN CPUL READ MACHINE TYPE
CRD CM
LDD CM+3 (A) = *CPUL* PART OF WORD
LPC 0400B MASK OFF 170/800 FLAG
.NOSV2 ENDIF
STD D.A170 (0=C170, NONZERO=170/800)
*
* INITIALIZE CONTROL POINT NUMBER
*
LDD CP
SHN -7 SET CONTROL POINT NUMBER
STD D.CPN
*
* SET UP ADDRESS OF JOB TO *MAS* REQUEST
*
LDD IR+3 FORM ADDRESS OF ARGUMENTS
LPN 37B
STD D.PPWD SAVE UPPER PART OF REL ADDRESS
LDD IR+4
STD D.PPWD+1 SAVE LOWER PART OF REL ADDRESS
* /--- BLOCK INITIAL 00 000 87/02/17 11.32
*
* INITIALIZE FOR *SFA* MACRO
*
.NOSV2 IFGE OSLEV,562D IF NOS V2
RJM IFP INITIALIZATION FOR SFA MACRO
.NOSV2 ENDIF
*
*
* FORM AND PLANT ADDRESS OF CPU STATUS WORD
*
LDD CP GET ADDRESS OF C.P. AREA
ADN STSW FORM ADDRESS OF STATUS WORD
PLANT CM,STATSW
*
* FORM AND PLANT ADDR OF CPU/PPU COMMUNICATION WORD
*
LDD D.PPWD UPPER PART OF RELATIVE ADDRESS
SHN 12 POSITION UPPER PART OF ADDRESS
ADD D.PPWD+1 ATTACH LOWER PART
RJM ABS CONVERT TO ABSOLUTE
ZJP MASERR1
PLANT CM,PPUWD PLANT REFERENCES
*
* OBTAIN DDP PORT CHANNEL NUMBER
*
LDC 2RD1 DDP EQUIPMENT NAME
RJM EQN
PJN MAS30 IF DDP FOUND
STM C=DDP1 SET DDP CHANNEL=-1 FOR NO DDP
UJN MAS50 NO DDP
MAS30 BSS 0
LDD CM LOAD DDP PORT CHANNEL NUMBER
STM C=DDP1 SAVE DDP CHANNEL
.NOS252 IFGE OSLEV,678D
LDD CM+2
STM C=DDP1+1
.NOS252 ENDIF
*
* INITIALIZE EM ACCESSING PROCEDURES
*
MAS50 BSS 0
* CALL EMPROC LOAD APPROPRIATE EM ROUTINES
RJM EMPROC LOAD APPROPRIATE EM ROUTINES
* /--- BLOCK ACCEPT 00 000 86/02/07 11.40
TITLE -MAS- ACCEPT REQUEST FROM CALLING JOB
*
*
*
* READ JOB TO *MAS* REQUEST FROM CM
*
LDK MS.MDIM SET UP LENGTH TO READ
STD D.T0
LOADCM PPUWD ADDRESS OF COMMUNICATION AREA
CRM JREQ,D.T0 READ REQUEST FROM CM
* CHECK IF INTERNAL REQUEST
LDM JREQ
NJP MAS99 IF A *MASTOR* REQUEST
LDM JREQ+1 GET *MAS* SUB-FUNCTION CODE
SBN REQL
PJP MASERR1 IF INVALID REQUEST
ADN REQL
STD T1
LDM REQT,T1
STD T2
LJM 0,T2 PROCESS REQUEST
* INTERNAL REQUEST TABLE
REQT BSS 0
CON MASERR1 0 = OBSOLETE
CON MAS99 1 = RETURN *MFORD* CONFIG VALUE
CON CDJ 2 = COUNT DEFERRED BATCH JOBS
CON VUN 3 = VALIDATE USER NUMBER
REQL EQU *-REQT
* /--- BLOCK MAS SEARCH 00 000 73/06/01 14.21
TITLE SEARCH FOR MASTOR(N) CONTROL POINT.
*
* SEARCH FOR MASTOR(N) CONTROL POINT
*
MAS99 LDN NCPL PTR TO WORD WITH NUM OF C.P.
CRD CM
.NOSV2 IFLT OSLEV,562D (NOS VERSION 1)
LDD CM+3
.NOSV2 ELSE (NOS VERSION 2)
LDD CM+1
.NOSV2 ENDIF
SHN 7 *200B = CP AREA ADDR (MAX)
STM MASCPA ALSO SERVES AS LOOP INDEX
LDN 0 FOR ENTRY INTO SEARCH ROUTINE
UJN MAS101 -- BEGIN SEARCH
* START OF SEARCH LOOP
MAS100 BSS 0 CHECK NEXT CONTROL POINT
LDK -200B LTH OF CP AREA (FOR DECREMENT)
MAS101 BSS 0 RECHECK SAME CONTROL POINT,
* *** ENTER WITH (A) = 0 ***
RAM MASCPA ADDR OF CONTROL POINT AREA
ZJP MASERR2 -- NO MORE CP'7S, NO MASTOR(N)
ADK JCIW PTR TO JOB CONTROL INFO
CRD T2
ADK TFSW-JCIW PTR TO EJT ORDINAL
CRD CM
LDD CM (A) = EJT ORDINAL
SFA EJT RETURNS (A) = ADDR IN EJT
ADK JSNE PLUS OFFSET TO JOB SEQ NAME
CRD CM
LDD CM+1 CHARS 3-4 OF JSN
LPN 77B MASK FOR 4TH CHAR
SBN 1R0 CHECK FOR NUMERIC
MJP MAS100 -- NOT SPECIAL JSN
LDD CM+1 CHARS 3-4 OF JSN
SCN 77B CLEAR 4TH CHAR
SHN 6 MOVE 3RD CHAR TO UPPER 6 BITS
LMD CM UNION CHARS 1-2 INTO LOWER 12
LMC 3RSMA COMPARE WITH MASTOR(N) NAME
NJP MAS100 -- NOT MASTOR(N)
LDD T2+2 SUBSYSTEM IDENTIFIER
SBK PLSI PLATO SUBSYSTEM IDENTIFIER
.NOS23 IFGE OSLEV,617D (NOS VERSION 2.3)
NJP MAS100 -- NOT PART OF PLATO SUBSYSTEM
.NOS23 ELSE (NOS VERSIONS 2.0 - 2.2)
ZJN MAS110 -- YES, PART OF PLATO
SBK 7754B-PLSI CHECK FOR SUBSYS ID OF PLATO
* JOBS W/O RESIDENT PP'7S.
NJP MAS100 -- NOT PART OF PLATO
MAS110 BSS 0
.NOS23 ENDIF
LDN CMCL PTR TO STORAGE MOVE CONTROL WD
CRD CM
LDM MASCPA CP AREA ADDR FOR CURRENT CP
.NOS27 IFGE OSLEV,716D NOS 2.7.1
SHN -7 /200B - CHANGE TO CP NUMBER
.NOS27 ENDIF
LMD CM CP AREA ADDR OF CP TO BE MOVED
NJN MAS120 -- NOT BEING MOVED
CALL PAUSE ELSE, WAIT A MOMENT THEN
LDN 0 MAKE SURE (A) = 0, THEN
UJP MAS101 -- RE-CHECK SAME CP
* /--- BLOCK READ EM PT 00 000 86/02/07 11.34
TITLE READ POINTERS FROM MASTOR(N) CM.
*
* MASTOR(N) LOCATED; READ EXTENDED MEMORY POINTERS.
*
MAS120 BSS 0
.NOSV2 IFGE OSLEV,562D (NOS VERSION 2)
LDD D.A170
ZJN MAS130 -- IF CME NOT PRESENT
LDN 1 CME PRESENT, 800 SERIES
MAS130 BSS 0 ENTER WITH (A) = 0 OR 1
ADK FLSW OFFSET TO FIELD LENGTH WORDS
ADM MASCPA PLUS CP AREA ADDR
CRD CM READ APPROPRIATE WORD
SRD D.RSAV SAVE *R* FROM CALLING CP
LRD CM+1 LOAD *R* WITH (RA-NFL)/100B
LDD CM+3 MASTOR(N) RA
.NOSV2 ELSE (NOS VERSION 1)
LDM MASCPA CP AREA ADDR
.NOS552 IFGE OSLEV,552D (NOS VERSION 1.4/552)
ADK FLSW
.NOS552 ELSE (PRE-NOS VERSION 1.4/552)
ADK STSW
.NOS552 ENDIF
CRD CM READ RA/FL INFORMATION
LDD D.A170
NJN MAS130 -- IF AN 800 SERIES MAINFRAME
LDD CM+3 12-BIT RA ON A NON-800
UJN MAS140 -- ALL THAT'7S NEEDED
MAS130 BSS 0 800-SERIES MAINFRAME
SRD D.RSAV SAVE CALLING CP'7S *R*
LRD CM+2 SET *R* TO MASTOR(N)'7S RA
LDD RA 4000B ON AN 800 SERIES
.NOSV2 ENDIF
* /--- BLOCK READ EM PT 00 000 87/02/24 14.01
MAS140 BSS 0 ENTER WITH (A) = RA/100B
SHN 6 *100B = MASTOR(N) RA
ADK MS.CHKS PLUS OFFSET TO EM POINTERS
CRM CHKS,TR READ 3 WORD BUFFER
LRD D.RSAV RESTORE CALLING CP'7S *R*
LDM ECSP (A) = 3/MF ORDINAL, 9/--
SHN -9
STM MFN SAVE MAINFRAME ORDINAL
RJM VEP VERIFY EXTENDED MEMORY POINTERS
LDM ECSP
LPN 1 0=ECS, 1=ESM MODE
STD EM SAVE ECS/ESM MODE
.NOS252 IFGE OSLEV,678D
MRQ150 LDK MEFL
CRD CM
LDD CM+2
SHN -7 EXTENDED ADDRESSING BIT
LPN 1
STD EX
.NOS252 ENDIF
*
* READ AND FORMAT JOB NAME AND MAINFRAME NUMBER.
*
.NOSV2 IFLT OSLEV,562D NOS V1
LDD CP LOAD ADDR OF CONTROL POINT AREA
ADN JNMW BIAS TO JOB NAME
CRM JOBNAM,ON
LDM JOBNAM+3
SCN 77B CLEAR OUT 8TH CHARACTER
STM JOBNAM+3
LDN 0 EXIT WITH (A) = 0
.NOSV2 ELSE (NOS VERSION 2)
LDD CP (A) = CONTROL POINT AREA ADDR
ADK TFSW GET EJT ORDINAL
CRD CM
SFA EJT,CM (A) = ABS ADDR OF EJT ENTRY
ADK JSNE ADD WORD OFFSET FOR JSN
CRM JOBNAM,ON READ JOB SEQUENCE NAME
LDD CM SAVE EJT ORDINAL WITH JSN
STM JOBNAM+2
LDN 0 CLEAR BYTE 3
STM JOBNAM+3
.NOSV2 ENDIF
STM JOBNAM+4 CLEAR 4TH BYTE OF JOB NAME
LDM MFN GET MAIN-FRAME NUMBER
SHN 3
RAM JOBNAM+3 ATTACH TO JOB NAME
*
* /--- BLOCK REFORMAT 00 000 86/02/07 11.45
TITLE REFORMAT REQUEST FOR MASTOR.
*
* RE-FORMAT REQUEST FOR TRANSMISSION TO *MASTOR*
*
LDM JREQ
ZJP MFORD IF INTERNAL REQUEST
LDN 3 INITIALIZE INDEX FOR JOB NAME
STD D.T0 TRANSFER
*
MAS210 LDM JOBNAM,D.T0 TRANSFER JOB NAME TO 1ST CM
STM MREQ,D.T0 WORD OF REQUEST
SOD D.T0
PJP MAS210
LDM JOBORG CHECK IF JOB IS SYSTEM ORIGIN
ADC -SYOT
NJP MAS212
LDN 4
RAM MREQ+3 SET SYSTEM ORIGIN BIT
*
MAS212 LDD CP CHECK IF JOB HAS SSJ= EP
ADC SEPW
CRD CM
LDD CM
SHN 17-2
PJN MAS214 IF NO SSJ= ENTRY POINT
LDN 2 SET SSJ= BIT
RAM MREQ+3
MAS214 LDM JREQ LOAD REQUEST TYPE
LPC 77B CLEAR REPLY BITS
ZJP MASERR1
STM MREQ+4
LDC 5*MS.MDIM-5
STD D.T0 INITIALIZE INDEX
*
MAS220 SOD D.T0 TRANSFER REQUEST PARAMETERS
MJP MAS230
LDM JREQ+5,D.T0 TRANSFER NEXT BYTE
STM MREQ+10,D.T0
UJP MAS220
*
MAS230 LDN 0
STM MREQ+5 CLEAR *MASTOR* TO *MAS* REQUEST
STM MREQ+9 AREA
*
* /--- BLOCK M PARAMS 00 000 78/01/30 12.58
TITLE READ POINTERS FROM MASTOR EM.
*
* READ EM POINTERS FROM START OF MASTOR(N) EM.
*
RJM 0,D.RSV RESERVE DDP (IF USING ONE)
READEM MASTAB,,,3 READ FIRST 3 WORDS OF EM
*
* COMPUTE PP REQUEST TABLE ENTRY FOR THIS PP';
* M.REQA _ M.REQA + MF ORDINAL + PP ORDINAL*4.
*
ERRNZ MS.NMF-4 NEED TO ADJUST PP REQUEST TABLE
*
LDK PPCP PTR TO PP COMM AREAS
CRD CM
LDD IA PP COMM AREA FOR THIS PP
SBD CM+4 MINUS FIRST PP COMM AREA
* DIVIDED BY 8 = PP ORDINAL
SHN -1 (A) = PP ORDINAL * 4
ADM MFN PLUS MAINFRAME ORDINAL
RAM M.REQA+1 PLUS PP REQ TABLE ADDR
SHN -12D DROP LOWER BYTE OF ADDR
RAM M.REQA PLUS UPPER BYTE OF ADDR
* CHECK FOR TABLE INITIALIZED BY MASTOR
LDN 2
STD T1
MAS320 LDM MASTAB,T1 READ FROM EM
SBM MASNAM,T1 CONSTANT 6LMASTOR
NJP MASERR2 -- ERROR, DOES NOT MATCH
SOD T1 DECREMENT BYTE INDEX
PJP MAS320 -- IF BYTES LEFT TO COMPARE
TITLE REQUEST A REQUEST AREA FROM MASTOR.
*
* REQUEST A REQUEST AREA FROM MASTOR
*
MAS350 BSS 0
RJM 0,D.REL RELEASE DDP (IF USING ONE)
CALL PAUSE TAKE A BREATH
RJM 0,D.RSV RESERVE DDP (IF USING ONE)
READEM PPREQ,M.REQA,,1
LDM PPREQ READ UPPER BYTE OF WORD
NJP MAS350 -- WAIT FOR PREV REQ TO END
LDM PPREQ+3 LOAD UPPER BYTE OF ADDR
ADM PPREQ+4 PLUS LOWER BYTE OF ADDR
NJP MAS380 -- ALREADY AN AREA ASSIGNED
LDK 4000B SIGN BIT, ALONE, INDICATES
* PP WANTS A REQUEST AREA
STM PPREQ
WRITEM PPREQ,M.REQA,,1 POST REQUEST TO MASTOR
* CLEAR LOW-ORDER BIT OF ',PPREQTAB', NAME TO
* FLAG NEW REQUEST TO MASTOR. TO AVOID PROBLEMS
* IN READING/WRITING THIS WORD FROM TWO PROCESSES,
* MASTOR SETS THE BIT BEFORE SCANNING, MAS CLEARS
* THE BIT AFTER POSTING THE REQUEST.
LDM MASTAB+9 READ LOWER BYTE OF TABLE NAME
SCN 1 CLEAR 2**0 BIT = REQ PENDING
STM MASTAB+9
WRITEM MASTAB+5,,1,1 FLAG REQUEST PENDING
TITLE WAIT FOR MASTOR TO ASSIGN REQUEST AREA.
MAS360 BSS 0
LDC 7777B INITIALIZE TIME-OUT COUNTER
STM MTIM
MAS370 BSS 0
RJM 0,D.REL RELEASE DDP (IF USING ONE)
CALL PAUSE TAKE A BREATH
* /--- BLOCK M PARAMS 00 000 78/01/30 12.58
SOM MTIM DECREMENT/TEST DEADMAN TIMER
MJP MASERR6 -- MASTOR SEEMS TO HAVE DIED
RJM 0,D.RSV RESERVE DDP (IF USING ONE)
READEM PPREQ,M.REQA,,1 RE-EXAMINE REQUEST WORD
LDM PPREQ+3 LOAD UPPER BYTE OF ADDR
ADM PPREQ+4 PLUS LOWER BYTE OF ADDR
NJP MAS380 -- MASTOR HAS REPLIED
LDM PPREQ CHECK REQUEST FLAG
ZJP MASERR7 -- MASTOR REJECTED THE REQ.
READEM NCLOCK,,MS.CLK,1 READ RUNNING CLOCK
LDM OCLOCK READ PREVIOUS VALUE OF CLOCK
SBM NCLOCK+4 READ LATEST VALUE OF CLOCK
ZJP MAS370 -- CLOCK HASN'7T TICKED
LDM NCLOCK+4 READ LATEST VALUE AND
STM OCLOCK STORE FOR NEXT PASS
UJP MAS360 -- RESTART TIME-OUT COUNTER
TITLE POST REQUEST THRU ASSIGNED REQ AREA.
*
* POSTED IN 2 PARTS'; THE PPU TRANSFER TO EM IS
* OFTEN INTERRUPTED BY THE CPU, CAUSING AN IN-
* COMPLETE REQUEST TO BE PROCESSED. TO AVOID
* THIS, WE WRITE THE FIRST WORD AFTER THE REST
* OF THE REQUEST IS SAFELY STORED.)
*
MAS380 BSS 0 POST REQUEST TO MASTOR
WRITEM MREQ+5,REQADD,1,MS.RDIM-1
WRITEM MREQ,REQADD,,1 INITIATE REQUEST PROCESSING
* CLEAR LOW-ORDER BIT OF ',PPREQTAB', NAME TO
* FLAG NEW REQUEST TO MASTOR. TO AVOID PROBLEMS
* IN READING/WRITING THIS WORD FROM TWO PROCESSES,
* MASTOR SETS THE BIT BEFORE SCANNING, MAS CLEARS
* THE BIT AFTER POSTING THE REQUEST. (THE BIT
* HAS BEEN CLEARED EARLIER IN THIS ROUTINE, JUST
* WRITE IT TO EM).
WRITEM MASTAB+5,,1,1 FLAG REQUEST PENDING
*
* WAIT FOR REPLY FROM MASTOR
*
MAS400 BSS 0
LDC 7777B INITIALIZE TIME-OUT COUNTER
STM MTIM
MAS420 BSS 0
RJM 0,D.REL RELEASE DDP (IF USING ONE)
CALL PAUSE TAKE A BREATH
SOM MTIM DECREMENT/TEST DEADMAN TIMER
MJP MASERR6 -- MASTOR SEEMS TO HAVE DIED
RJM 0,D.RSV RESERVE DDP (IF USING ONE)
READEM MREQ,REQADD,,MS.RDIM RE-EXAMINE REQUEST
LDM MREQ+4
ZJP MASERR7 -- MASTOR ZEROED THE REQUEST
SHN -11D CHECK FOR COMPLETED REQUEST
NJP MAS600
LDM MMREQ+4 CHECK FOR REQUEST FROM MASTOR
ZJN MAS440
LDM MMREQ CHECK IF REQUEST FROM MASTOR
ZJP MAS500 HAS ALREADY BEEN COMPLETED
MAS440 BSS 0
READEM NCLOCK,,MS.CLK,1 READ RUNNING CLOCK
LDM OCLOCK READ PREVIOUS VALUE OF CLOCK
SBM NCLOCK+4 READ LATEST VALUE OF CLOCK
ZJP MAS420 -- CLOCK HASN'7T TICKED
* /--- BLOCK M PARAMS 00 000 78/01/30 12.58
LDM NCLOCK+4 READ LATEST VALUE AND
STM OCLOCK STORE FOR NEXT PASS
UJP MAS400 -- RESTART TIME-OUT COUNTER
TITLE PROCESS MASTOR-TO-MAS REQUEST.
*
* PROCESS *MASTOR* TO *MAS* REQUEST
*
MAS500 BSS 0
LDM MMREQ+4 MASTOR-TO-MAS REQUEST CODE
STD T1 STORE FOR USE AS INDEX
SBK MREQL CHECK FOR VALIDITY
PJP MAS595 -- INVALID REQUEST CODE
LDM MREQT,T1 PROCESSING ROUTINE FOR CODE
STD T1 STORE FOR INDEXED JUMP
LJM 0,T1
*
*
MREQT CON MAS595 0 - ERROR
CON MAS510 1 - SET RAX/FLX
CON MAS520 2 - SET CPU/QUEUE PRIORITY
CON MAS530 3 - IDENTIFY LOGIC
CON MAS540 4 - SET MAINFRAME CLOCK
MREQL EQU *-MREQT
*
* RETURN REPLY CODE TO MASTOR TO SHOW COMPLETION
*
MAS590 LDC 4000B REQUEST COMPLETED OK
UJN MMRET -- RESPOND TO MASTOR'7S REQ
*
MAS599 LDK ZERL
CRD CM
LDK PPET
STD CM+1 SET ERROR FLAG = PP ABORT
MONITOR CEFM CHANGE ERROR FLAG
CALL DFM,(=10CMAS ABORT)
MAS595 LDC 4001B REPORT ERROR (FATAL OR NOT)
* BACK TO MASTOR
MMRET BSS 0
STM MMREQ ENTER WITH CODE IN (A)
WRITEM MMREQ,REQADD,1,1
UJP MAS400 -- WAIT FOR NEXT COMMAND
*
*
* /--- BLOCK REQUEST 1 00 000 87/02/24 14.08
TITLE -MAS- PROCESS RAX/FLX REQUEST
*
* PROCESS REQUEST TO SET RAX / FLX OF CALLING JOB
*
*
* WAIT TO INSURE CALLING JOB IN RECALL
*
MAS510 LDC 2000D TWO THOUSANDS LOOPS
STM II
*
MAS511 DELAY 1000D ONE MILLISECOND DELAY
SOM II END TEST
MJP MAS599
LOADCM STATSW READ CONTROL POINT STATUS WORD
CRD D.T0
LDD D.T0+C.CPSTAT LOAD CPU STATUS
*
.NOSV2 IFLT OSLEV,562D NOS V1
LPC 3000B MASK OFF AUTO-RECALL BIT
ZJN MAS511 IF NOT IN AUTO-RECALL
.NOSV2 ELSE NOS V2
SHN -11B CHECK CPU STATUS
LMN 6 6 = AUTO RECALL
NJN MAS511 IF NOT IN AUTO-RECALL
.NOSV2 ENDIF
*
* SET RAX AND FLX TO INDICATED VALUES
*
.NOS252 IFGE OSLEV,678D
LDD EX
NJN MAS513 IF EXTENDED ADDRESSING MODE
.NOS252 ELSE
LDD EM
NJN MAS513 IF ESM MODE
.NOS252 ENDIF
LDM MRAX+1
SHN 6
ADM MRAX
SHN 3
UJN MAS514
MAS513 LDM MRAX
MAS514 STD T1
LDN 2 SET NUMBER OF WDS TO READ/WRITE
STM D.T0
LDD CP ADDRESS OF CONTROL POINT AREA
ADN 4 BIAS TO RAX/FLX WORDS
CRM BUFF,D.T0
LDM MMREQ+3 CONVERT RAX
ADD T1
RJM CEP CONVERT TO EXCHANGE PACKAGE
LDD T1
STM BUFF SET UPPER RAX
LDD T2
STM BUFF+1 SET LOWER RAX
LDM MMREQ+2 CONVERT FLX
RJM CEP
LDD T1
STM BUFF+5 SET UPPER FLX
LDD T2
STM BUFF+6 SET LOWER FLX
* /--- BLOCK REQUEST 1 00 000 87/02/24 14.02
*
* CONTROL POINTS ARE VALIDATED TO USE FLAG REGISTER
* OPERATIONS IF THE HIGH-ORDER BIT OF *FLE* IS SET.
* (*FLE* IS THE 'E'M FIELD LENGTH HARDWARE REGISTER.)
* THIS BIT IS NOT INCLUDED IN 'E'M BOUNDS CHECKS, EVEN
* IN THE 800 SERIES MACHINES, WHICH DO NOT HAVE A
* FLAG REGISTER OR EXTERNAL EXTENDED MEMORY.
*
* UNFORTUNATELY, FOR REASONS UNKNOWN, THIS IS NOT
* THE CASE FOR THE 'S3 (845/855). THE BIT IS IN-
* CLUDED IN 'E'M BOUNDS CHECKS. THIS MEANS THAT FLAG-
* VALIDATED CONTROL POINTS HAVE VIRTUALLY LIMITLESS
* 'E'M FIELD LENGTHS. WHEN AN ACCESS EXCEEDS THE
* PHYSICAL BOUNDS, HOWEVER, IT IS TREATED AS A ',PAGE
* FAULT', ON THE 180 SIDE OF THE MICROCODE. THIS
* RESULTS IN A ',HARDWARE MALFUNCTION',, WHICH HANGS
* THE CONTROL POINT. SEE THE 'CYBER 800 'M'I'G'D'S FOR
* MORE INFO.
*
* WE AVOID THE PROBLEM BY NOT SETTING THE BIT ON
* 800 SERIES MAINFRAMES. WE CAN DO THIS BECAUSE
* THEY HAVE NO FLAG REGISTER OPERATIONS ANYWAY.
*
LDD D.A170 CHECK FOR 800 SERIES MAINFRAME
NJN MAS518 -- BRANCH IF 800 SERIES
LDM MMREQ+1
LPN 4 SET IF AUTHORIZED FOR FLAG OPS
SHN 9 MOVE TO HIGH-ORDER BIT
RAM BUFF+5 MERGE INTO UPPER HALF OF *FLE*
MAS518 BSS 0
LDD CP ADDRESS OF CONTROL POINT AREA
ADN 4 BIAS TO RAX/FLX WORDS
CWM BUFF,D.T0 REWRITE EXCHANGE PACKAGE
.NOS22 IFGE OSLEV,594D NOS 2.2
LDD CP SET PRESERVE FLX BIT IN JCIW
ADK JCIW
CRD CM READ WORD JCIW
* /--- BLOCK REQUEST 1 00 000 84/03/08 20.53
LDD CM+3 SET BIT 22
LPC 5777B
LMC 2000B
STD CM+3
LDD CP WRITE BACK TO JCIW
ADK JCIW
CWD CM
.NOS22 ENDIF
UJP MAS590 EXIT
*
*
* /--- BLOCK REQUEST 2 00 000 84/11/14 11.03
TITLE -MAS- PROCESS CPU/QUEUE PRIORITY REQ
*
*
*
* PROCESS REQUEST TO SET CPU PRIORITY AND SUBSYSTEM
* IDENTIFIER (QUEUE PRIORITY).
*
MAS520 LDN ZERL PRE-CLEAR ARGUMENT AREA
CRD CM
LDM MMREQ+3 LOAD REQUESTED CPU PRIORITY
LPC 77B
.NOSV2 IFLT OSLEV,562D NOS V1
STD CM+1
ZJP MAS595 ERROR IF ZERO PRIORITY
ADC -77B
PJP MAS595 ERROR IF PRIORITY TOO HIGH
MONITOR RPRM
LDM MMREQ+2 LOAD REQUESTED QUEUE PRIORITY
STD CM+1
ZJP MAS595 ERROR IF ZERO PRIORITY
ADC -LSSS
PJP MAS595 ERROR IF PRIORITY TOO HIGH
LDN 1 1 = SET QUEUE PRIORITY
STD CM+2
MONITOR RPRM
.NOSV2 ELSE NOS V2
STD CM+4
ZJP MAS595 IF ZERO PRIORITY
LDN /CPS/CPRS SET CPU PRIORITY FUNCTION CODE
STD CM+1
MONITOR SJCM
LDM MMREQ+2 LOAD REQUESTED SUBSYSTEM ID
STD CM+4
ZJP MAS595 IF ZERO PRIORITY
* ADC -LSSI
* PJP MAS595 IF PRIORITY TOO HIGH
LDN /CPS/SSIS SET SUBSYSTEM ID FUNCTION CODE
STD CM+1
MONITOR SJCM
.NOS27 IFGE OSLEV,716D NOS 2.7.1
* CLEAR THE SDM= ENTRY POINT. THIS IS NEEDED SO
* PLATO SUBSYSTEM CONTROL POINT MESSAGES CAN BE
* VIEWED IN LESSONS LIKE *CONSOLE*.
LDD CP GET ORIGINAL CONTENTS OF
ADK SEPW SPECIAL ENTRY POINT WORD
CRD CM
LDD CM PORTION WITH SDM= ENTRY POINT
SCN 10B CLEAR SDM=
STD CM
LDD CP WRITE NEW VALUE BACK TO SEPW
ADK SEPW
CWD CM
.NOS27 ENDIF
.NOSV2 ENDIF
UJP MAS590 EXIT
*
*
* /--- BLOCK REQUEST 3 00 000 84/11/14 11.03
TITLE -MAS- PROCESS IDENTIFY LOGIC REQUEST
*
*
*
* PROCESS IDENTIFY LOGIC REQUEST - SET FIRST FOUR
* CHARACTERS OF JOB NAME TO SPECIFIED VALUE
*
MAS530 BSS 0
LDC MMREQ+2 ADDR OF NEW JOB NAME
CALL MAS535 CHECK LEGALITY OF NEW NAME
LDC MMREQ+2 CHANGE JOB NAME
RJM CJN
* NEED FOLLOWING BECAUSE WE MAY HAVE PAUSED IN *CJN*
LDD D.PPWD RE-PLANT ABSOLUTE ADDRESSES
SHN 12
ADD D.PPWD+1
RJM ABS CONVERT TO ABSOLUTE
PLANT CM,PPUWD
LDD CP SET SSJ= TO USE ACCOUNT FILE
ADC SEPW
CRD D.T0
LDD D.T0
SCN 4 CLEAR BIT 50 (SSJ=) IF SET
LMN 4 SET BIT 50 (SSJ= FLAG)
STD D.T0
LDD CP
ADC SEPW
CWD D.T0
UJP MAS590
*
*
* -MAS535-
* CHECKS JOB NAME CHARACTERS LEGAL
MAS535.1 BSS 0
SBK (1R+-1R0) RANGE = NUMERIC
MJN MAS535X -- EXIT IF NUMERIC
SBK (1R -1R+) CHECK FOR SPACE
ZJN MAS535X -- YES, EXIT OK
TO595 UJP MAS595 -- ERROR IF NOT
MAS535 SUBR
STD T1 STORE ADDR OF JOB NAME
LDI T1 LOAD FIRST TWO CHARS
SHN -6 RETAIN ONLY FIRST CHAR
SBK 1R0 RANGE = ALPHA
PJP TO595 -- NO, ERROR
LDI T1 RELOAD FIRST TWO CHARS
LPN 77B RETAIN ONLY SECOND CHAR
SBK 1R0 RANGE = ALPHA
PJP TO595 -- NO, ERROR
AOD T1 INCR ADDR TO NEXT 2 CHARS
LDI T1 LOAD NEXT 2 CHARS
SHN -6 RETAIN ONLY THIRD CHAR
SBK 1R0 RANGE = ALPHA
PJP TO595 -- NO, ERROR
LDI T1 RELOAD CHARS 3-4
LPN 77B RETAIN ONLY FOURTH CHAR
SBK 1R0 RANGE = ALPHA INVALID
.NOSV2 IFGE OSLEV,562D (NOS VERSION 2)
PJP MAS535.1 -- OK IF NOT ALPHA
UJP TO595 -- ELSE, ERROR
.NOSV2 ELSE (NOS VERSION 1)
UJP MAS535.1 -- ALPHAS ARE OK TOO
.NOSV2 ENDIF
*CALL PLAPCJN
IRA$ SET 1 DEFINE INITIALIZATION
REL$ SET 1
BASE M
*CALL COMPCRA
BASE *
IFP$ EQU 1
EJT$ EQU 1 ASSEMBLE ROUTINE .CEA
*CALL COMPGFP
IFP HERE
*
*
* /--- BLOCK REQUEST 4 00 000 78/04/19 02.59
TITLE PROCESS SET CLOCKS REQUEST
*
* PROCESS REQUEST TO SET CLOCKS ON THIS MIAN-FRAME
* TO CLOCKS ON MAIN-FRAME = 0
*
MAS540 LDM MMREQ+5+5+2 GET YR/MONTH
STD T1
LPN 77B MASK MONTH
STD T2 AND SAVE
LDD T1
SHN -6 POSITION YEAR
LPN 3 CHECK FOR LEAP YEAR
NJN MAS542
AOM MNTHS+2 FIX FEBRUARY ENTRY
MAS542 LDN ZERL SET UP MTR FUNCTION
CRD CM
CRD D.T0 CLEAR FOR DAY LIMIT
AOM MNTHS,T2 GET LIMIT (= DAYS IN MONTH + 1)
STD D.T0
LDN 4
STD T3
LDD MA WRITE VALUES TO MESSAGE AREA
ADN 1
STD CM+2
CWM MMREQ+5,T3 WRITE CLOCKS
CWD D.T0 AND DAY LIMIT
LDN 2
STD CM+1 SET TIME/DATE
MONITOR DSRM
UJP MAS590
MNTHS EQU *-1
LOC 0
DATA 31
DATA 28
DATA 31
DATA 30
DATA 31
DATA 30
DATA 31
DATA 31
DATA 30
DATA 31
DATA 30
DATA 31
LOC *O
* /--- BLOCK END REQ 00 000 86/02/07 11.47
TITLE -MAS- END REQUEST - RETURN STATUS
*
*
*
* END OF REQUEST - RETURN STATUS TO CALLING JOB
*
MAS600 LDM MREQ+4 LOAD REPLY CODE
SHN -6
LPC 37B MASK OFF 5 BIT REPLY CODE
ADC 4000B SET UPPER BIT OF REPLY BYTE
STM JREQ+3
LDN 0
STM JREQ+4 INSURE COMPLETION BIT CLEAR
*
* WRITE REPLY STATUS TO CALLING JOB
*
LDN MS.MDIM-1
STD D.T0 SET NUMBER OF WORDS TO WRITE
LOADCM PPUWD COMPUTE CM ADDRESS
ADN 1
CWM MREQ+10,D.T0 WRITE REPLY PARAMETERS
LOADCM PPUWD
CWM JREQ,ON WRITE REPLY STATUS
LDM MREQ+4 CHECK FOR JOB ABORT RETURN
SHN -6
SBN 77B
ZJN MAS610 IF *MASTOR NOT ACTIVE* ERROR
ADN 77B
SHN 17-4
PJN MAS610 IF SYSTEM ABORT NOT SELECTED
LDN SYET
STD CM+1
MONITOR CEFM
MAS610 LJM DROP
* /--- BLOCK MFORD 00 000 86/02/07 11.47
MFORD TITLE -MAS- RETURN *MFORD*
*** MFORD - RETURN VALUE OF *MFORD* CONFIG PARAMETER
*
* ENTRY (MFN) = VALUE OF *MFORD* CONFIG SYMBOL.
*
* EXIT (MREQ+4) = REPLY CODE = 0 = ALL OK.
* (MREQ+9) = VALUE OF *MFORD* CONFIG SYMBOL.
*
* MACROS PLANT.
*
* CALLS ABS.
*
MFORD BSS 0
LDN ZERL (A) = LOCATION OF ZERO WORD
CRM MREQ+5,ON CLEAR RETURN WORD
LDM MFN (A) = MAINFRAME ORDINAL
STM MREQ+9
LDN 0 (A) = REQUEST COMPLETED OKAY
STM MREQ+4 SET REPLY CODE
UJP MAS600 EXIT
*
*
* /--- BLOCK CDJ 00 000 86/02/07 11.48
CDJ TITLE -MAS- CHECK DEFERRED BATCH JOBS.
*** CDJ - CHECK DEFERRED BATCH JOBS.
*
* ENTRY (JREQ - JREQ+4) = 12/0, 12/MA.CDJ, 36/0
* (JREQ+5 - JREQ+9) = 60/FAMILY NAME
* (JREQ+10 - JREQ+14) = 60/USER INDEX
* (JREQ+15 - JREQ+19) = 60/AHMT
*
* EXIT REPLY CODE = 0 = ALL OK
* = 1 = TOO MANY DEFERRED JOBS
*
.V2 IFGE OSLEV,562D
CDJ LDD MA (A) = MESSAGE BUFFER ADDRESS
CWM JREQ+5,ON (MB) = FAMILY NAME
SBN 1 RESET ADDR TO (MA)
CRD FN (FN - FN+4) = FAMILY NAME
RJM GFO GET FAMILY ORDINAL
ZJN CDJ1 --- IF FAMILY NAME FOUND
LDN 0 RETURN ERROR CONDITION
UJN CDJ2 --- SET ERROR FLAG AND LEAVE
.V2 ELSE
CDJ BSS 0
.V2 ENDIF
CDJ1 RJM CDV CHECK DEFERRED BATCH VALIDATION
CDJ2 ADN 1 OFFSET REPLY BY 1
SHN 6
STM MREQ+4 SET REPLY CODE
LDD D.PPWD RELATIVE ADDR UPPER
SHN 12
ADD D.PPWD+1 ADD LOWER
RJM ABS CONVERT TO ABSOLUTE
ZJP MASERR1 IF BAD ADDRESS
PLANT CM,PPUWD
LJM MAS600 EXIT
* /--- BLOCK CDV 00 000 86/02/07 11.49
CDV TITLE -MAS- CHECK DEFERRED BATCH VALIDATION.
*** CDV - CHECK DEFERRED BATCH VALIDATION.
*
* ENTRY (FN+4) = FAMILY ORDINAL
* (JREQ+10 - JREQ+14) = 42/, 18/UI
* (JREQ+15 - JREQ+19) = AHMT
*
* EXIT (A) = -1 VALIDATION IS OK
* = 0 IF LIMIT EXCEEDED
*
* USES T1 - T5, T6 - T6+4, CM - CM+4, SC.
*
* CALLS CDB, DBI, GBN.
*
CDVR LDN 0 DEFERRED BATCH LIMIT EXCEEDED.
CDV SUBR ENTRY/EXIT
* GET DEFERRED BATCH JOB LIMIT.
LDM JREQ+15+1 (A) = (5*AHMT+1)
RJM DBI PASS IT THE WHOLE 12 BITS
MJP CDV8 IF UNLIMITED
ZJN CDVX IF DEFERRED BATCH NOT ALLOWED
STD SC SAVE JOB COUNT
SOD SC DECREMENT JOB COUNT
.NOSV2 IFGE OSLEV,562D NOS V2
LDD FN+4 (A) = FAMILY ORDINAL
LPN 77B LIMIT TO 6 BITS
SHN 6
STD T2 (T2) = 6/FO, 6/0
LDM JREQ+13 (A) = UPPER HALF OF UI
LPN 37B
RAD T2 (T2) = 6/FO, 6/TOP OF UI
LDM JREQ+14 (A) = BOTTOM OF UI
STD T3 (T2 - T3) = 6/FO, 18/UI
RJM CDB (T4) = NO. DEFERRED BATCH JOBS
LDD T6 RESTORE (T3)
STD T3
LDD SC (A) = DEFERRED BATCH LIMIT
SBD T4 SUBTRACT NUMBER FOUND
PJN CDV8 IF LIMIT NOT REACHED
LJM CDVR LIMIT REACHED
.NOSV2 ELSE NOS V1
LDM JREQ+13 (A) = TOP OF UI
STD T1
LDM JREQ+14 (A) = BOTTOM OF UI
STD T2
RJM GBN GENERATE BANNER NAME
* SCAN CONTROL POINT AREA FOR JOBS WITH SAME HASH NAME.
LDN NCPL GET NUMBER OF CONTROL POINTS
CRD CM
AOD CM+3
STD T7
CDV4 SOD T7 COUNT JOBS IN CONTROL POINTS
* /--- BLOCK CDV 00 000 86/02/07 11.50
ZJN CDV5 IF END OF CONTROL POINTS
LDD T7
SHN 7
ADN JNMW READ JOB NAME
CRD CM
LDD CM+3
LPN 77B
STD T4
LDM TOT,T4
ZJN CDV4 IF NOT VALID ORIGIN TYPE
LDD CM
LMD T1
NJN CDV4 IF NOT THIS USER
LDD CM+1
LMD T2
NJN CDV4 IF NOT THIS USER
SOD SC DECREMENT JOB COUNT
PJN CDV4 IF LIMIT NOT REACHED
LJM CDVR ERROR
* SCAN FNT FOR JOBS WITH SAME HASH NAME.
CDV5 LDN FNTP NUMBER OF ENTRIES IN FNT
CRD T6
CDV6 LCN 2
RAD T7
CALL AQA ADD QFNT FWA IF INITIALIZED
CRD CM
LDD T7
LMD T6
ZJN CDV7 IF END OF FNT
LDD CM
ZJN CDV6 IF EMPTY ENTRY
LMD T1
NJN CDV6 IF NOT THIS USER
LDD CM+1
LMD T2
NJN CDV6 IF NOT THIS USER
LDD CM+4
ADC -QUFT*100
PJN CDV6 IF NOT QUEUED FILE
LDD CM+3
LPN 77B
STD T4
LDM TOT,T4
ZJN CDV6 IF NOT LEGAL ORIGIN TYPE
SOD SC DECREMENT JOB COUNT
PJN CDV6 IF LIMIT NOT REACHED
LJM CDVR ERROR
CDV7 BSS 0
LDD D.COM
ZJN CDV8 IF NOT A COMSOURCE NOS SYSTEM
LDN 0
CALL AQA ADD QFNT FWA IF INITIALIZED
NJN CDV8 IF QFNT ALREADY SEARCHED
CALL IQA INITIALIZE QFNT ADDRESSES
LDD CM+2 SET QFNT LENGTH
STD T7
LDN 0 SET RELATIVE FWA OF QFNT
STD T6
LJM CDV6
.NOSV2 ENDIF
CDV8 LCN 1 DEFERRED BATCH JOB COUNT IS OK
LJM CDVX
* /--- BLOCK TOT 00 000 82/10/26 12.40
SPACE 5,11
* TOT - TABLE OF ORIGIN TYPES.
.NOSV2 IFLT OSLEV,562D
TOT INDEX
INDEX SYOT,1
INDEX BCOT,1
INDEX EIOT,1
INDEX MXOT
.NOSV2 ENDIF
SPACE 4
* COMMON DECKS
DBI$ EQU 1
BASE M
*CALL COMPCDB
*CALL COMPCVI
*CALL COMPGBN
AQA$ EQU 1 ASSEMBLE ADD QFNT ADDRESS
QUAL$ SET 1 NO AUTO-QUALIFY FOR COMMON DECKS
*CALL COMPQFP
GFO$ EQU 1 ASSEMBLE GET FAMILY ORDINAL
DFF$ EQU 1 DO NOT ADD FAMILY IF NOT FOUND
*CALL COMPUFT UPDATE FAMILY ORDINAL TABLE
BASE *
* /--- BLOCK VUN 00 000 86/02/07 11.50
VUN TITLE VALIDATE USER NUMBER
*** VUN - VALIDATE USER NUMBER
*
* ENTRY (JREQ+5 - JREQ+9) = 42/USER 18/INDEX
*
* EXIT USER NUMBER/INDEX IS SET IN NEGATIVE FL
*
* CALLS NONE.
* MACROS NFA.
*
VUN LDD CP CHECK VAL= VALIDATION
ADC SEPW
CRD CM
LDD CM CHECK VAL=
SHN 17-1
MJN VUN1
LDD CM CHECK SSJ=
SHN 17-2
MJN VUN1
LJM MASERR1 NOT VAL= OR SSJ=
VUN1 NFA SSJN+UIDS SET VALIDATION WORD
CWM JREQ+5,ON
* SET UP *MREQ* TO RESTORE PARAMETERS IN
* THE CALLING JOB.
LDK MS.MDIM-1
STD D.T0
LOADCM PPUWD
ADN 1
CRM MREQ+10,D.T0
LJM MAS600
* /--- BLOCK ERR EXITS 00 000 78/03/02 16.57
TITLE ERROR EXIT ROUTINES
*
*
*
* FATAL ERROR EXIT ROUTINES
*
MASERR1 CALL DFM,ERRMSG1
UJP MASERRX
ERRMSG1 DATA C*("PPU.MAS") IMPROPER REQUEST*
*
MASERR2 LDD IR+2
LPN 1
ZJN MASER2A IF NOT *NO ABORT*
CALL MESSAG,ERRMSG2
LJM MASER99
MASER2A CALL DFM,ERRMSG2
UJP MASER99
ERRMSG2 DATA C*("PPU.MAS") MASTOR NOT ACTIVE*
*
MASERR3 CALL DFM,ERRMSG3
UJP MASERRX
ERRMSG3 DATA C*("PPU.MAS") DDP NOT AVAILABLE*
*
MASERR4 UJP MASERRX MESSAGE ALREADY WRITTEN
*
MASERR6 CALL DFM,ERRMSG6
UJP MASERRX
ERRMSG6 DATA C*("PPU.MAS") MASTOR TIMEOUT*
*
MASERR7 CALL DFM,ERRMSG7
UJP MASER99
ERRMSG7 DATA C*("PPU.MAS") MASTOR REQUEST = 0*
* SET *MAS ERROR IN REQUEST.
MASER99 LDC 7700B
STM MREQ+4
* TEST IF NO ABORT SPECIFIED IN THE REQUEST.
LDD IR+2
LPN 1
NJP MAS600 IF NO ABORT SPECIFIED
*
*
* SET CONTROL POINT ERROR FLAG
*
MASERRX LDC 4001B MARK ERROR OCCURRED
STD D.T0+3
LDN 1
STD D.T0+4 SET COMPLETION BIT
LOADCM PPUWD
ZJP MX100 CHECK IF ADDRESS PLANTED
CWD D.T0 WRITE COMPLETION BIT
*
MX100 LDC ZERL PRE-CLEAR ARGUMENTS
CRD CM
LDN PPET
STD CM+1 SET ERROR FLAG = PPU ABORT
MONITOR CEFM
UJP DROP
*
*
* /--- BLOCK DROP PPU 00 000 84/11/14 10.58
TITLE -MAS- DROP PPU
*
*
* SET COMPLETION BIT IN PPU STATUS WORD
*
DROP LOADCM PPUWD ADDRESS OF STATUS WORD
ZJN DROP110 IF STATUS WORD ILLEGAL
CRD CM READ STATUS WORD
LDN 1
STD CM+4 SET COMPLETION BIT
LOADCM PPUWD
CWD CM RE-WRITE STATUS WORD
*
* RELEASE TABLE/EQUIPMENT RESERVATIONS AND DROP PPU
*
*
* RELEASE REQUEST AREA
*
DROP110 BSS 0
LDD D.RE CHECK IF EM ROUTINES LOADED
ZJP DROP300 -- SIMPLY EXIT IF NOT LOADED
LDM M.REQA
ADM M.REQA+1 CHECK IF REQUEST ADDRESS SET
ZJP DROP200 -- DROP RESERVATIONS AND EXIT
READEM PPREQ,M.REQA,,1 EXAMINE PP REQUEST WORD
LDM REQADD LOAD UPPER BYTE OF ADDR
ADM REQADD+1 PLUS LOWER BYTE OF ADDR
ZJP DROP200 -- NO REQUEST AREA ASSIGNED
LDM PPREQ READ PP REQUEST FLAG
NJP DROP200 -- ALREADY FLAGGED FOR RELEASE
LDC 4000B SET FLAG FOR DELETION
STM PPREQ
WRITEM PPREQ,M.REQA,,1 POST RELEASE REQUEST
WRITEM MASTAB+5,,1,1 GET MASTOR'7S ATTENTION
DROP200 BSS 0
RJM 0,D.REL RELEASE DDP/INTERLOCK
DROP300 BSS 0
MONITOR DPPM DROP PPU
UJP PPR
*
*
* /--- BLOCK -PAUSE- 00 000 73/06/01 14.24
TITLE -PAUSE- CHECK FOR STORAGE MOVE
*
*
*
* -PAUSE-
* CHECK FOR STORAGE MOVE OR CONTROL POINT ERROR
*
*
PAUSE SUBR
LOADCM STATSW GET ADDRESS OF CP STATUS WORD
CRD D.T0
LDD D.T0+C.CPEF ERROR FLAG
NJP DROP110 CPU IS DEAD, GO DROP PPU
CALL PAUS1 CHECK FOR STORAGE MOVE
UJN PAUSEX
*
*
*
* -PAUS1-
* CHECK FOR IMPENDING STORAGE MOVE
*
*
PAUS1 SUBR
LDC CMCL
CRD CM READ MEMORY CONTROL WORD
LDD CP
.NOS27 IFGE OSLEV,716D NOS 2.7.1
SHN -7
.NOS27 ENDIF
LMD CM CHECK IF THIS CONTROL POINT
NJN PAUS1X
PAUSE ST
LDD D.PPWD UPPER PART OF RELATIVE ADDRESS
SHN 12
ADD D.PPWD+1 ATTACH LOWER PART
RJM ABS CONVERT TO ABSOLUTE
ZJP MASERR1
PLANT CM,PPUWD
LJM PAUS1X
*
*
TITLE -MESSAG- OUTPUT B-DISPLAY MESSAGE
*
*
*
* -MESSAG- OUTPUTS B-DISPLAY MESSAGE
* ON ENTRY - A = ADDRESS OF MESSAGE
*
* DESTROYS NO VARIABLES
*
*
MESSAG SUBR
STM MSG10+1 PLANT PPU ADDRESS OF MESSAGE
LDD D.T0
STM MSG20 PRESERVE *D.T0*
LDN 5
STD D.T0 SET LENGTH OF MESSAGE
LDD CP LOAD CONTROL POINT AREA ADDRESS
ADC MS1W ADD BIAS TO MESSAGE AREA
*
MSG10 CWM **,D.T0 WRITE MESSAGE TO CP AREA
LDM MSG20
STD D.T0 RESTORE *D.T0*
UJN MESSAGX
*
MSG20 BSS 1
*
*
* /--- BLOCK CEP 00 000 87/02/24 14.10
CEP TITLE CONVERT RAX/FLX
** CEP - CONVERT RAX/FLX TO EXCHANGE PACKAGE VALUE
*
* ENTRY - (A) - RAX/FLX IN ALLOCATABLE UNIT
*
* EXIT - (T1 - T2) - EXCHANGE PACKAGE VALUE
CEP SUBR
STD T1
.NOS252 IFGE OSLEV,678D
LDD EX
NJN CEP1 IF EXTENDED ADDRESSING MODE
.NOS252 ELSE
LDD EM
NJN CEP1 IF ESM MODE
.NOS252 ENDIF
* PROCESS STANDARD ADDRESSING
LDD T1
LPN 7
SHN 9
STD T2
LDD T1
SHN -3
STD T1
UJN CEPX
* PROCESS EXTENDED ADDRESSING
CEP1 LDD T1
SHN 6
STD T2
SHN -12
STD T1
UJN CEPX
* /--- BLOCK STORAGE 00 000 87/02/17 11.32
TITLE STORAGE DEFINITIONS
*CALL COMPDV5
*
*CALL PLAPABS
*CALL PLAPDNM
*CALL PLAPEQN
*CALL PLAPPLN
*CALL PLAPVEP
*
*
* (C=DDP) = CHANNEL OF DDP.
* = -1 IF NO DDP.
*
C=DDP1 DATA -1 NO DDP INITIALLY
.NOS252 IFGE OSLEV,678D
BSS 1 SECONDARY ACCESS CHANNEL
.NOS252 ENDIF
*
*
JOBNAM BSS 5 CALLING JOB NAME
MASNAM DIS ,*MASTOR* *MASTOR* NAME
MFN DATA 0
JOBORG BSS 1 JOB ORIGIN CODE
MASCPA BSS 1 FWA OF MASTOR-S CP AREA
*
PPUWD TABLE CM CPU/PPU COMMUNICATION ADDRESS
STATSW TABLE CM CPU STATUS WORD
*
JREQ BSSZ 5*MS.MDIM JOB TO *MAS* REQUEST
MREQ BSSZ 5*MS.RDIM *MAS* TO *MASTOR* REQUEST
MMREQ EQU MREQ+5 *MASTOR* TO *MAS* REQUEST
*
MASTAB BSSZ 3*5 *MASTOR* POINTER TABLE
M.REQA EQU MASTAB+11 POINTER TO REQUEST AREA TABLE
*
PPREQ BSSZ 5 PP REQUEST WORD
REQADD EQU PPREQ+3 ADDR OF REQUEST AREA ASSIGNED
*
* THE FOLLOWING 15 WORDS ARE READ FROM CM AND
* MUST BE CONTIGUOUS.
CHKS BSS 5 CHECKSUM OF PARAMETERS
ECSP BSS 1 START OF ECS POINTERS
MRAX BSS 2 *MASTOR* RAX
MFLX BSS 2 *MASTOR* FLX
PNW BSS 5 PROGRAM NAME WORD
*
RDDP BSSZ 1 DDP RESERVED FLAG
RREQ BSSZ 1 REQUEST TABLE RESERVED FLAG
*
MTIM DATA 0 TIMER
NCLOCK BSSZ 5 NEW COPY OF MASTOR CLOCK
OCLOCK BSSZ 5 PREVIOUS COPY OF MASTOR CLOCK
*
II BSS 1
*
KZERO BSSZ 5
*
* /--- BLOCK EM PROCS 00 000 86/02/07 13.02
TITLE EM PROCS
EMSTRT EQU * START OF EM HANDLING PROCEDURES
PPNAM MICRO 1,3,*MAS* PPU NAME FOR DAYFILE MESSAGES
LIST X
*CALL EMPROCS
LIST *
BUFF EQU EMSTRT+EMPRLNG START OF EXTRA BUFFER
ERRNG 7776B-BUFF - 0AV BUFFER LENGTH OVERFLOW
* DEFINITIONS FOR *CPW* (COMMON DECK PLAPCPW).
PWRD EQU JREQ+15 START OF PASSWORD (5 WORDS)
AVLA EQU BUFF *0AV* LOAD ADDRESS
END