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