TITLE COMMON - MONITOR COMMON DATA AREA AND CONFIGURATION DEFINITION -V2420 SUBTTL PART 6 COMMON.MAC - T. HASTINGS/PH/TWE/DAL/EVS/JBS/EGF 7-NOV-90 SEARCH F,S,DEVPRM IFN FTNET, $RELOC $ABS ;COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION ; 1973,1974,1975,1976,1977,1978,1979,1980,1982,1984,1986,1988,1990. ;ALL RIGHTS RESERVED. ; ; ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ;ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE ;INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER ;COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY ;OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY ;TRANSFERRED. ; ;THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE ;AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT ;CORPORATION. ; ;DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS ;SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL. XP VCOMMN,2420 ;PUT VERSION NUMBER IN GLOB AND LOADER STORAGE MAP SUBTTL SET PSECT ORIGINS ;MONITOR PSECT ORIGINS MAY BE CHANGED BY EDITTING THE FOLLOWING DEFINITIONS. ;THE DEFINITIONS OF THE ORIGINS MAY APPEAR IN THE HARDWARE CONFIGURATION FILE ;SYSCNF.MAC TO OVER-RIDE THE DEFAULT ORIGINS DEFINED BELOW. IFN FTXMON,< ND CSBORG,330000 ;ORIGIN OF COMMON SUBROUTINES >; END IFN FTXMON IFN M.KL10,< ND MONORG,340000 ;ORIGIN OF HIGH SEGMENT ON KL >; END IFN M.KL10 IFN M.KS10,< ND MONORG,340000 ;ORIGIN OF HIGH SEGMENT ON KS >; END IFN M.KS10 IFE FTXMON,< XP CSBORG,MONORG ;JUST FOR THOSE WHO CARE >; END IFE FTXMON IFN FTXMON,< ND XHIORG, ;ORIGIN OF EXTENDED HIGH SEGMENT >; END IFN FTXMON ;NOW SET THE PSECT ORIGINS BEFORE ANY CODE IS GENERATED. ;*** .HIGH. MUST BE FIRST DUE TO A LINK BUG *** .PSECT .HIGH.,MONORG ;HIGH SEGMENT .ENDPS IFN FTXMON,< .PSECT .CSUB.,CSBORG ;COMMON SUBROUTINES .ENDPS >; END IFN FTXMON .PSECT .INIT.,FYSORG ;INITIALIZATION CODE OVERLAYS FUNNY SPACE .ENDPS .PSECT .TWIC.,.UPMAP ;USER MODE DISK ONCE-ONLY .ENDPS IFN FTXMON,< ;IF EXTENDED MONITOR .PSECT .XHGH.,XHIORG ;EXTENDED HIGH SEGMENT .ENDPS .PSECT .SYMS.,MS.HGH ;EXTENDED SYMBOL TABLE .ENDPS >; END IFN FTXMON ;TELL LINK WHERE TO PUT SYMBOL TABLE. FOR SINGLE SECTION MONITOR SYMBOLS ;GO IN PSECT .LOW., FOR MULTI SECTION MONITOR SYMBOLS GO IN EXTENDED HIGH ;SEGMENT (AT BEGINNING OF THAT SECTION). IFE FTXMON,< .TEXT "/SYMSEG:PSECT:.LOW." >; END IFE FTXMON IFN FTXMON,< .TEXT "/SYMSEG:PSECT:.SYMS." >; END IFN FTXMON ;*** CODE TO SET PSECT LIMITS IS AT THE END OF COMMON.MAC *** SUBTTL HISTORICAL NOTES REPEAT 0, < ;THE COMMON SUBPROGRAM CONSISTS OF 6 FILES ASSEMBLED TOGETHER AS ONE SUBPROGRAM 1. F.MAC -- FEATURE TESTS (OUTPUT OF MONGEN). 2. S.MAC -- THE USUAL SYSTEM SYMBOL DEFINITIONS ASSEMBLED WITH EVERY MONITOR SUBPROGRAM 3. SYSCNF.MAC -- SYSTEM CONFIGURATION 4. COMMON.MAC - THE REST OF THIS PROGRAM WHICH IS THE SAME SOURCE FOR ALL CONFIGURATIONS. HOWEVER, THE ASSEMBLIES ARE CONDITIONED BY SYMBOLS AND MACROS DEFINED IN 2. THE FOLLOWING SYMBOLS AND TABLES ARE GENERATED BELOW: A. MONITOR STARTUP LOCATIONS (400-407), HENCE LOAD THIS FIRST. B. JOB TABLES - LENGTH DEPENDENT ON MAXIMUM NUMBER OF JOBS ALLOWED C. ALL VARIABLE STORAGE NOT ASSOCIATED WITH A PARTICULAR DEVICE D. COMMON SUBROUTETURNS E. COMMON BYTE POINTERS F. TABLE OF SERVICE ROUTINE INTERRUPT LOCS TO BE LINKED BY ONCE ONLY CODE G. TABLE OF DEVICE DATA BLOCK ADDRESSES AND NUMBER TO BE USED BY ONCE TO LINK THEM TOGETHER AND GENERATE MULTIPLE COPIES. H. ASSIGNMENT OF PI CHANNELS I. PI CHANNEL SAVE AND RESTORE ROUTINES J. UUO TRAP LOCATIONS 40/41, 60/61 K. APR INTERRUPT LOCATIONS CPU0,1, KA10/KI10 L. SYSTEM CRASH STOP CONI'S. NOTE: SEE COMDEV FOR DEVICE DEPENDENT CODE, DATA, AND SYMBOLS LEVEL D DISK SERVICE PARAMETERS: ALL SYMBOLS ANAS ONATIONS ARE IN A SEPARATE FILE CALLED COMMOD.MAC WHICH IS ALSO ASSEMBLED WITH S AND CONFIG (BUT NOT WITH FEATURS FILES). THE SEPARATE FILE IS FOR TWO REASONS: 1. ANTICIPATING MULTIPROCESSING SYSTEMS WHICH SHARE DISKS AND 1 16K MEMORY (THE DATA MUST BE IN THE COMMON MEMORY) 2. ELIMINATE THE NEED TO ASSEMBLE COMMOD IF NOT A DISK SYSTEM (COMMOD.MAC TAKES LOTS OF CORE FOR ITS COMPLICATED MACROS) > IFE FTNET,> ;Verify that the correct version of MONGEN was used in making the SYSCNF ;files. ; ;Every time that MONGEN is edited, the following check "M.GEN-nnn" should ;also be updated to reflect the new MONGEN edit level (symbol 'EDITNO' in ;MONGEN.MAC). IFN M.GEN-331,< PRINTX ? Wrong version of MONGEN was used in SYS dialog PASS2 END > IFN FTEMRT,> IFN FTCIDSK!FTCITAP,> IFN M.ENET,> IFE M.NET,)> IFE M.ANF,)> SUBTTL CONVERT MONGEN SYMBOLS ;THIS SECTION CONVERTS NEW MONGEN SYMBOLS TO OLD MONGEN SYMBOLS ;SO THAT THE REST OF COMMON AND MONITOR CAN STILL USE THE OLD ;SYMBOLS. THIS WAS DONE RATHER THAN CONVERTING ALL OF THE ;MONITOR TO NEW SYMBOLS FOR TWO REASONS: ; 1. IT IS EASIER AND FASTER AND LESS LIKELY TO INTRODUCE BUGS, AND ; 2. IT ALLOWS CUSTOMERS TO USE OLD MONGEN WITH A MINIMUM ;OF TROUBLE: ONLY A FEW EXTRA SYMBOLS MUST BE DEFINED. ;THE MONITOR WILL PROBABLY BE CONVERTED TO THE NEW MONGEN SYMBOLS ;AFTER THE 5.04 RELEASE. THE ORDER HERE PARALLELS THE OLD ;MONGEN ORDER. XP JOBN,M.JOB+1 IFG JOBN-^D512, XP PDP10N,1 XP SEGN,MD.SEG XP VBCN,M.VBXC XP XTCN,M.XTC IFE M.XTC,< XP M.XTL,0 XP XTTDSP,CPOPJ XP XTKLDB,CPOPJ XP XTUUO,CPOPJ XP XTCTTY,CPOPJ2 XP XTCIOS,CPOPJ XP XTCSEC,CPOPJ XP XTCLNK,CPOPJ > IFE M.DAS78,< ;IF NO DAS78 SUPPORT CALL78==:CPOPJ ;CAL78. UUO IS A NOOP D78SEC==:CPOPJ ;NO ONCE-A-SECOND CODE D78MIN==:CPOPJ ;NO ONCE-A-MINUTE CODE CWHD78==:CWHNCN## ;NOT CONNECTED IF NO DRIVER > ;END IFE M.DAS78 IFN M.DAS78,< ;IF DAS78 SUPPORT M.D78L==:M0D78L ;HACK FOR D78INT > ;END IFN M.DAS78 XP DISN,M.DIS XP PENN,M.DIS XP T340N,M.340 XP TVP10N,M.VP10 XP T30N,0 ;NO TYPE 30 ;DEFINE ALL DL10 SYMBOLS DLX.CK(1) ;MACRO DEFINED IN S.MAC INTERN DL10XI ;FOR UUOCON IFN M.KL10!DLX.78,< IFE M.KL10,< PRINTX ?DEFINING A DAS78 REQUIRES FTKL10 TO BE ON PDP11N==PDP11N-DLX.78 DLX.78=0 ;ACTUAL NUMBER > ;END IFE M.KL10 > ;END IFN M.KL10!DLX.78 IFN DLX.76, IFE PDP11N,< XP D76MIN,CPOPJ XP D76SIL,CPOPJ > IFE PDP11N!M.KL10!M.DN60!M.KDUP!M.DMRN,< XP CALL11,CPOPJ XP DLXSEC,CPOPJ XP DLXWIN,0 > ; END IFE PDP11N!M.DN60!M.KDUP!M.DMRN IFE DL10XI,< XP DLXBAT,0 IFN PDP11N,< XP DLXDWN,0 ;;IF NO PDP-11S ON DL10'S >>; END OF IFE DL10XI AND IFN PDP11N DEFINE TDMAC(X),< XP DT'X'N,M.DT'X M.DTXN==M.DTXN+M.DT'X > ZZ=="A" M.DTXN==0 REPEAT M.TD10,< TDMAC(\"ZZ) ZZ==ZZ+1 > IFN FTKS10,< DEFINE RX2MAC(X),< XP RX'X'N,M.RX'X M.RXXN==M.RXXN+M.RX'X > ZZ=="A" M.RXXN==0 REPEAT M.RX20,< RX2MAC(\"ZZ) ZZ==ZZ+1 > >;End FTKS10 ND M.TTDN,0 XP TTD28N,M.XTL IFN M.KS10,< XP KLILIN,M.TLTL+M.RTTY ;LINE NO. FOR KS10 KLINIK > DEFINE OPRL(LINE),< IFIDN , IFDIF ,< SIXBIT /TTY'LINE/ IFG LINE-M.TLTL, >;END IFDIF > SUBTTL DEFAULT SYMBOLS ;THE FOLLOWING STANDARD SYMBOLS CAN BE SUPERSEDED BY A CUSTOMER HAVING ; PREVIOUSLY DEFINED THEM ON THE HDWGEN.MAC FILE USING THE MONGEN PROGRAM.... ;********************************************************************** ;ADD NEW SYMBOLS AT END SO EASY TO UPDATE MONGEN APPENDIX * ;SYMBOLS SHOULD APPEAR HERE IN COMMON (AND NOT IN COMDEV, OR COMMOD) * ; UNLESS THEY REFER TO NON-DISK DEVICES OR DISKS RESPECTIVELY. * ; IF A SYMBOL IS IN COMDEV OR COMMOD, IT SHOULD NOT APPEAR HERE. * ;********************************************************************** ND XPANDN,0 ;FORCE NO EXPANSION OF MACROS ; UNLESS XPANDN IS DEFINED NON-ZERO WITH MONGEN ND M.C0SN,0 ;SERIAL NUMBER OF ARITHMETIC PROCESSOR ;STANDARD MAG TAPE DENSITY IN BITS PER INCH ND STDENS,5 ;STANDARD = 6250 BPI ;1=200, 2=556, 3=800, 4=1600, 5=6250 ;NUMBER OF TIMES TO TRY ON DECTAPE ERRORS ND DTTRY,4 ;STANDARD == 4 TRIES ;NUMBER OF NANO-SECONDS PER MEMORY CYCLE ND NSPMEM,^D1000 ;STANDARD == 1000 NANO-SECONDS PER MEMORY CYCLE ND M.LPOK,1 ;DEFAULT IS TO LOG POKE UUOS VIA DAEMON ND M.EDIT,0 ;TTY EDITOR EXCLUSION ND TTXTRA,0 ;NUMBER OF EXTRA TTY DDBS FOR SLAVE LINES ; AND THE LIKE ND M.CRSH, ;NAME OF PROGRAM TO COPY CRASHES EXTERN MONBTS ND M.MAIL, ;NAME OF MAIL PROGRAM ND M.DTCK,0 ;OPR MUST VERIFY DATE/TIME IF NON-ZERO ;FREE CORE ALLOCATION REQUIREMENTS FOR SCA'S RANDOM SIZED POOL. IFE M.SCA,< ;IF NO SCA SUPPORT XP SCASIZ,0 ;NO SCA FREE POOL >; END IFE M.SCA IFN M.SCA,< ;IF SCA SUPPORT ND M.SCSZ,4000 ;CAN BE REDEFINED AT MONGEN TIME XP SCASIZ,<^D144*</^D144>> >; END IFN M.SCA ;FREE CORE ALLOCATION REQUIREMENTS FOR DISK ; DEVICE DATA BLOCKS AND ACCESS TABLE ENTRIES. XP CORSIZ,4 ;NO. OF WORDS IN MONITOR FREE CORE BLOCKS ND LOGSIZ,^D41 ;STANDARD == 20K (CURRENT SIZE OF LOGIN CUSP) ;MINIMUM AMOUNT OF VIRTUAL CORE WHICH CAN REMAIN ; AND STILL LET THE SYSTEM PERMIT LOG-INS. MUST ; BE AT LEAST AS BIG AS LOGIN CUSP IN K. XP MAXLVL,5 ;ABSOLUTE MAX LEVEL OF NESTED SFD'S ND INDPPN,0 ;NON-ZERO IF CUSTOMER WANTS PROGRAMMER NOS ; IN PROJECT X TO BE INDEPENDENT OF THOSE IN ; PROJECT Y IF1,< IFNDEF SYSSEG, ;MINUS ONE FOR FAST GETSEG FROM SYS ; WITH SOMEWHAT DIFFERENT BEHAVIOR ; WHEN SHR FILES ARE SUPERCEDED IFDEF SYSSEG,,> XP SYSSEG,SS.SYS&SYSSEG ;SYSSEG=:0 OR SS.SYS > ND CTYDCR,0 ;DELAY FOR CR ON LA36 CTY DURING ONCE ND CTYDLF,0 ;DELAY FOR LF ON LA36 CTY DURING ONCE ND RLDTIM,^D112 ;TIME TO AUTO-RELOAD ND M.STOF,0 ;FREQUENCY TO CALL START TERMINAL OUTPUT ; (SHOULD BE 2**N-1) ND M.RCMP,0 ;DEFAULT TO PERMISSIVE ACCESS ;SET TO 1 FOR MORE SECURE ACCESS ND M.NPPC,0 ;DEFAULT TO PRIMARY PROTOCOL ON DTE'S ;SET TO 1 TO DISABLE PRIMARY PROTOCOL ND M.NRQT,0 ;NUMBER OF TICKS BETWEEN CALLS TO CALCULATE ; WANT-TO-RUN TIME FOR ALL JOBS. ZERO IMPLIES ; NO (EXPENSIVE) CALCULATION. ND MINMAX,^D1024*^D12 ;SMALLEST LEGAL CORMAX ;NOTE--IN ORDER TO RESERVE PI-CHANNELS FOR ;NON-STANDARD USAGE, FOR EACH CHANNEL (SAY N) ;DEFINE SYMBOL UNIQN==1 VIA MONGEN. FOR ;EXAMPLE, TO RESERVE CHANNEL 4, DEFINE ;UNIQ4==1. ;MOST OF THE SLAVE PROCESSOR CHANNELS ARE BUSIED OUT TO PREVENT CORE ;FROM BEING WASTED FOR CHANNEL SAVE ROUTINES IFNDEF CPTOS, ;CPTOS EQUAL TO ZERO MAKES CPU0 TRAP TO 40-61, CPU1 TO 140-161 ;CPTOS NON-ZERO MAKES CPU0 TRAP TO 140-161, CPU1 TO 40-61 IFNDEF SFC0, ;CPU0 SCHEDULER FAIRNESS COUNT. PICK A JOB OUT OF ;PQ2 INSTEAD OF PQ1 IF 'SFC0' PICKS IN A ROW HAVE COME FROM PQ1 AND NULL JOB DID NOT RUN. IFNDEF SFC1, ;CPU1 SCHEDULER FAIRNESS COUNT ;PICK THIS MANY JOBS TO RUN ON CPU0. WHICH ; CAME FROM CPU1 UUOS BEFORE PICKING OTHER JOBS IFNDEF IFC0, ;SWAPPER FAIRNESS COUNT MAXIMUM IFNDEF UFC0, ;UUO FAIRNESS COUNTER MAXIMUM IFNDEF UFC1, ;UUO FAIRNESS COUNTER FOR SLAVE ;PICK UFC1 JOBS TO RUN ON CPU1 ;WHICH CAME FROM CPU0 AND JUST FINISHED ;A UUO IFNDEF MEMITL, ;NUMBER OF WAYS MEMORY CAN BE INTERLEAVED IFNDEF MLACTS, ;MAXIMUM LENGTH OF THE ACCOUNT STRING ; IF NOT DEFINED, 39 CHARACTERS IFNDEF SCHEDN, ;SCHEDULE VALUE SCHEDN==SCHEDN&777777 ;ONLY A RIGHT HALF NUMBER IFNDEF PAVJSP, ;PREDICTED AVERAGE JOB SIZE IFG MLACTS-^D39, ;MAXIMUM LENGTH IS 39 CHARACTERS IFL MLACTS, IFG MLACTS, ;LENGTH OF ACCOUNT STRING IN WORDS IFE MLACTS, XP MACTSL,-ACTSTL XP MAXACS,^D8 ;MAX LENGTH OF ACCOUNT STRING IFNDEF M.CBAT, ;NO. OF BAD ADDRESSES IN PER CPU BAD ; ADDRESS TABLE FOR MEMORY PARITY RECORDING IFNDEF M.BMAX, ;MAX. NO. OF SIMULTANEOUS BATCH JOB STREAM'S ; INITIATES LOC BATMAX, CHECKED BY BATCON IFNDEF M.BMIN, ;MIN. NO. OF GUARRANTEED BATCH JOBS IFNDEF M.EXE, ;SYMBOL WHICH DETERMINES TYPE OF FILE ; CREATED ON "SAVE". IF OFF, NORMAL (SAV,HGH, ; LOW,..), IF ON AN EXE FILE IS CREATED IFNDEF M.JMAX, ;MAX. NO. OF SIMULTANEOUS INTERACTIVE JOBS IFNDEF M.WCH, ;WATCH BITS USED TO SET INITIAL ; WATCHING. SINCE LOGIN SETS JBTWCH ; THIS IS USEFUL ONLY FOR LINES WHICH ; DON'T NEED LOGIN - INITIA. ;200000 = TIME OF DAY STARTED TO WAIT ;100000 = RUN TIME ;40000 = WAIT TIME ;20000 = BLOCKS READ ;10000 = BLOCKS WRITTEN ;4000 = VERSION NOS. ;2000 = MTA STATISTICS IFNDEF M.CMCT, ;NO. OF CALLS TO CHKTAL ROUTINE ; BEFORE DOING 5 M.S. OF OVERHEAD ; CHECKING CORE TABLES. I.E. ONLY ; EVERY 32 TIME IS OVERHEAD PERFORMED ;THIS REDUCES CPU TIME FOR ; CORE, GETSEG, RUN UUOS ; SYMBOL CANNOT EXCEED 262,000. IFNDEF M.EBPS, ;DEFAULT # EBOX TICKS PER SECOND ; (ACCT METER COUNTS AT 1/2 SYSTEM CLOCK RATE) ; SYSTEM CLOCK RATE IS 25MHZ IFNDEF M.MBPS, ;DEFAULT MBOX REFS/SECOND ; THIS NUMBER WAS EXPERIMENTALLY ; DETERMINED AT A CPU CLOCK RATE ; OF 25MHZ SUCH THAT THE CPU TIME ; OF A JRST . MATCHED ELAPSED TIME. ; JRST . WAS ASSUMED TO BE A BEST CASE CONDITION. ; THIS TERM MAKES EBOX/MBOX RUNTIME ; PER REAL TIME UNIT DEPENDENT ON ; CACHE HIT RATE, ALTHOUGH INSTRUCTIONS ; PER E/MBOX RUNTIME UNIT SHOULD REMAIN CONSTANT. IFNDEF M.EMRT, ;DEFAULT IS REGULAR RUNTIME IFNDEF M.XPI, ;AND INCLUDE PI TIME IN USER RUNTIME IFNDEF M.ITA, ;DEFAULT IS TO USE INTERVAL TIMER IFNDEF M.XFFA, ;DO FILE ACCESS PROTACTION CHECKING ON [1,2] AND JACCT IFN FTNSCHED,< ND M.CLSN,^D16 ;DEFAULT NUMBER OF CPU CLASSES FOR SCHEDULER ND M.CLSS,1 ;DEFAULT SCHEDULER IS CLASS SYSTEM SCHEDULER. ; IF THIS MONGEN SYMBOL IS DEFINED ; TO BE ZERO, THEN THE SCHEDULER WILL ; RUN IN WMU MODE. ND M.DCLS,0 ;DEFAULT SCHEDULER CLASS FOR NEW JOBS. ; CAN OBTAIN THIS FROM GETTAB OR SCHED UUO IFG M.DCLS-M.CLSN, >;END IFN FTNSCHED IFE FTNSCHED,< ND M.CLSN,1 ND M.CLSS,0 ND M.DCLS,0 XP SCHED.,CPOPJ ;NO SCHED. UUO >;END IFE FTNSCHED IFN FTKL10,< ND TTDMOS,^D16 ;MAXIMUM OUTPUT STRING ; DEFINES THE NUMBER OF CHARACTERS THAT CAN ; BE SENT TO -20F IN A SINGLE BUFFER > ;END OF FTKL10 ND HIGHXC,^D80 ;HIGHEST EXTENDED CHANNEL IFG HIGHXC-^D512, ND MAXNBP,^D64 ;MAXIMUM NUMBER OF SNOOP UUO ; BREAK POINTS ALLOWED ND M.OMSM,^D60 ;NUMBER OF MINUTES BETWEEN CALLS ; TO BIGBEN TO TYPEOUT MONITOR NAME, ; UPTIME, AND DATE/TIME ;SET TO <-1>_-1 TO NEVER PRINT ND M.DTLS,^D90 ;CPU TIME LIMIT (SECONDS) TO SET ; ON A FORCED DETACH (.BYE) COMMAND ND LIM1MS,4 ;LIMIT OF STOPCD'S IN ANY 1 MINUTE PERIOD ND LIM8MS,7 ;LIMIT OF STOPCD'S IN ANY 8 MINUTE PERIOD ND LIM1HS,^D30 ;LIMIT OF STOPCD'S IN ANY 1 HOUR PERIOD ND SEBAGE,^D10 ;MAXIMUM AGE IN MINUTES FOR A SYSTEM ERROR BLOCK ; BEFORE WE DELETE EVEN IF DAEMON HASN'T SEEN IT ;THESE SYMBOLS DEFINE THE VALUES OF VERSION FROM MONGEN AXXWHO==2 IFNDEF A00CVN,> ND A00CVN,0 ;CUSTOMER VERSION NUMBER (36-BITS) ND A00MVN,705 ;MAJOR VERSION OF MONITOR--UPDATED AT ; START OF DEVELOPMENT CYCLE (9-BITS) ND A00SVN,0 ;SOUP NUMBER--UPDATED AT START ; OF EACH SOUP DEVELOPMENT CYCLE (6-BITS) ND A00MCO,^D14328 ;HIGHEST MCO IN THIS LOAD (26-BITS) ND A00CLH,0 ;CUSTOMER LH (%CNVER) (18-BITS) ND A00DLN,0 ;DEC LOAD NUMBER (6-BITS) ; SET TO ZERO FOR ANY RELEASE, ELSE ; 1-7 IF SOUP, 10-77 IF DEVELOPMENT ND A00WHO,AXXWHO ;DEC LAST EDITED (3-BITS) AXXVER==< BYTE (18) A00CLH (12) A00MVN-IFE A00SVN,> (6) IFGE A00DLN*,> ND A00VER,AXXVER ;DEFINES %CNVER AXXDVN== BYTE (3) A00WHO (9) A00MVN (6) A00SVN (18) A00MCO ;DEFINE DAEVER TO BE THE SIXBIT NAME OF THE MONITOR VERSION IN THE ;LEFT HALF, AND THE BINARY MONITOR VERISON IN THE RIGHT HALF. THE ;SYMBOL BECOMES THE VALUE OF THE %CNDAE GETTAB WHICH DAEMON USES TO ;DETERMINE IF IT IS COMPATIBLE WITH THIS MONITOR. IF THE PROGRAM ;DECIDES IT ISN'T COMPATIBLE BY RANGE CHECKING THE RIGHT HALF, IT ;WILL USE THE LEFT HALF TO DETERMINE THE NAME OF THE PROGRAM TO RUN. DEFINE ..CNFD(VERSION), DAEVER==..CNFD(705) ;DEFINE CTHR TO BE THE CTERM HOST REVISION STRING FOR NRTSER (AND GETTABS). ;THIS STRING IS ALWAYS EIGHT (8-BIT) BYTES IN LENGTH, AND IS OF THE FOLLOWING ;FORM: ; ; 7.03BK42 ; ;WHERE THE "7.03" BYTES ARE TAKEN FROM A00MVN, THE "BK" BYTES ARE THE TRANSLATED ;FORM OF A00SVN, AND THE "42" BYTES ARE FROM A00DLN. THE A00SVN AND A00DLN ;FIELDS WILL BE BLANKS IF THEIR VALUES ARE ZERO. IFN M.DECN,< CCLEAR (CTHR) ;CLEAR OUT THE STRING ACCUMULATION CONCAT (CTHR,) ;START OFF THE STRING CONCAT (CTHR,\) ;GET FIRST DIGIT CONCAT (CTHR,<",".",">) ;ADD THE DOT FILLER CONCAT (CTHR,\<&7>) ;GET THE SECOND DIGIT CONCAT (CTHR,<",">) ;MOVE TO NEXT BYTE FIELD CONCAT (CTHR,\) ;GET THE THIRD DIGIT CONCAT (CTHR,<",">) ;MOVE TO NEXT BYTE IFN A00SVN,< IFG A00SVN-^D26,< CONCAT (CTHR,\"<+"A">) ;ADD IN FIRST OF 2-CHAR MINOR VERSION CONCAT (CTHR,<",">) ;MOVE TO NEXT BYTE > CONCAT (CTHR,\"/^D26>*^D26+"A">) ;ADD MINOR VERSION IFLE A00SVN,)> ;PAD IF SHORT MINOR VERSION CONCAT (CTHR,<",">) ;MOVE TO NEXT BYTE > ;END OF IFN A00SVN IFE A00SVN,)> ;PAD WITH SPACES IF NO MINOR VERSION IFN A00DLN,< CONCAT (CTHR,\) ;ADD FIRST DIGIT OF LOAD NUMBER CONCAT (CTHR,<",">) ;MOVE TO NEXT BYTE CONCAT (CTHR,\) ;ADD LAST DIGIT OF LOAD NUMBER CONCAT (CTHR,<">) ;CLOSE THE STRING > IFE A00DLN,< CONCAT (CTHR,< "," ">) ;PAD WITH SPACES IF NO LOAD NUMBER > ;"CTHR" STRING COMPLETE ;DEFINE THE VALUE OF THE HIGH-AVAILABILITY OPTION FOR CTERM AS WELL IFG M.CPU-1, ;ON IF MULTI-CPU IFLE M.CPU-1, ;OFF IF SINGLE > ;END OF IFN M.DECN ;DEFINE THE PFH TIMER TRAP INTERVAL IN TICKS IFNDEF M.PFHT, ;DEFINE DEFAULT VALUE OF DEBUGF TO STOP ON STOPCD'S DURING FIELD-TEST, ; BUT NOT TO STOP IN RELEASED VERSIONS OF MONITOR. IFNDEF DEFDEB, ; DEFINE DEFAULT CPU MASK FOR EDDT. THIS MASK INDICATES WHICH CPUS ; MAY ENTER EDDT VIA THE UNSOLICITED BREAKPOINT FACILITY. ZZ==<1+> REPEAT M.CPU,>>> IFNDEF DEFBPT, IFNDEF BPTBIT, ;VALUE OF JS.BPT FOR NEW JOBS ;PRIV BITS TO ALLOW CHGPPN TO WORK IF ALREADY LOGGED IN IFNDEF CHGPPP, ;DEFAULT TO ILLEGAL UNLESS LOGGED OUT ;FLAG TO INDICATE OF DUMPING IS DESIRED WHEN SYSTEM UPTIME IS .LT. 5 MINUTES IFNDEF ATODMP, ;DEFAULT TO DUMP ;ADD NEW MONGEN SYMBOLS HERE (SEE ALSO COMDEV FOR MONGEN SYMBOLS) SUBTTL AUTOCONFIGURATION DEFINITIONS EXTERN AUTCON ;FORCE LOADING AUTOCONFIGURATION CODE IFNDEF M.GENL, ;NUMBER OF FREE GENTAB ENTRIES FOR ; USE BY AUTCON IFN M.KL10,< IFNDEF M.FDVC, ;FIRST DEVICE CODE TO SCAN IFNDEF M.LDVC, ;LAST DEVICE CODE TO SCAN > ;END IFN M.KL10 IFN M.KS10,< IFNDEF M.FDVC, ;FIRST UNIBUS ADDRESS TO SCAN IFNDEF M.LDVC, ;LAST UNIBUS ADDRESS TO SCAN > ;END IFN M.KS10 ; CONTEXT SYMBOLS IFNDEF M.CTX, ;LOAD CONTEXT SERVICE BY DEFAULT ; CONSTANTS USED TO MANIPULATE CONTEXT AND JOB NUMBERS IN A JOB/CONTEXT ; HANDLE (JCH). THE CONTEXT AND JOB MASKS MUST BE ADJACENT BYTES. CTXMAX==:777 ;ABSOLUTE MAXIMUM CONTEXTS PER JOB CTXMSK==:B26 ;MASK OF CTX # JOBMSK==:777B35 ;MASK OF JOB # JCHMSK==:CTXMSK!JOBMSK ;MASK OF JCH # CTXWID==<^L<-<_<^L>>-1>> ;WIDTH OF CTX # MASK JOBWID==<^L<-<_<^L>>-1>> ;WIDTH OF JOB # MASK JCHWID==<^L<-<_<^L>>-1>> ;WIDTH OF JCH # MASK CTXPOS==<^L<&<->>> ;RIGHT MOST BIT IN CTX # MASK JOBPOS==<^L<&<->>> ;RIGHT MOST BIT IN JOB # MASK JCHPOS==<^L<&<->>> ;RIGHT MOST BIT IN JCH # MASK CTXLSH==:^D36-CTXPOS-1 ;BITS TO SHIFT CTX # INTO POSITION JOBLSH==:^D36-JOBPOS-1 ;BITS TO SHIFT JOB # INTO POSITION JCHLSH==:^D36-JCHPOS-1 ;BITS TO SHIFT JCH # INTO POSITION CTXPTR==:POINT CTXWID,,CTXPOS ;BYTE POINTER TO CTX # (OR WITH ADDR) JOBPTR==:POINT JOBWID,,JOBPOS ;BYTE POINTER TO JOB # (OR WITH ADDR) JCHPTR==:POINT JCHWID,,JCHPOS ;BYTE POINTER TO JCH # (OR WITH ADDR) CTXCBP==:POINT CTXWID,,35 ;BYTE POINTER TO A CONTEXT QUOTA CTXPBP==:POINT <^D36-CTXWID>,,<^D35-CTXWID> ;BYTE POINTER TO PAGE QUOTA CTXBPW==:^D36/CTXWID ;BYTE PER WORD IN DIRECTORY MAP CTXMAP==:+1 ;SIZE OF A DIRECTORY MAP + TERMINATING NULL CTXDIR==:POINT CTXWID,,<^D36-<^L>-1> ;BYTE POINTER TO A DIRECTORY MAP IFN M.CTX,< IFNDEF M.CTXC, ;DEFAULT CONTEXT QUOTA IFNDEF M.CTXP,;DEFAULT SAVED PAGE QUOTA IFNDEF M.CTXR, ;DEFAULT RESERVED CONTEXT BLOCK COUNT EXTERN CTXSER ;FORCE LOADING OF CONTEXT SERVICE > ;END IFN M.CTX IFE M.CTX,< ;DEFINE DUMMY GLOBALS IF NOT LOADING CTXSER CTXTAB==:NULGTB## ;GETTAB TABLE CTXMXL==:0 ;GETTAB TABLE LENGTH CTXINI==:CPOPJ ;INITIALIZATION AT SYSINI TIME CTXBLK==:CPOPJ1 ;CONTEXT BLOCK CREATION CTXPRT==:CPOPJ ;CONTROL-T DISPLAY CTXLGO==:CPOPJ ;DELETE CONTEXT BLOCKS ON LOGOUT CTXATO==:CPOPJ ;AUTO-SAVE CTXSCD==:KCORE1## ;SCHEDULER CALL ON SWAP OUT CTXPOP==:CPOPJ ;AUTO-RESTORE CTXRUE==:CPOPJ ;RUN UUO ERROR RECOVERY CTXUUO==:CPOPJ ;CTX. UUO CTXMIG==:CPOPJ ;NO IDLE CONTEXTS TO MIGRATE CTXMGN==:CPOPJ ;NO MORE CONTEXTS TO MIGRATE CTXWKJ==:WAKEJ## ;LET CLOCK1 EXPIRE SLEEP REQUESTS $HIGH CTXJCJ::SKIPA T1,J ;SET TO CONTEXT 0 FOR THIS JOB CTXNUM::TDZA T1,T1 ;CURRENT CTX IS ZERO CTXJCH::JUMPLE T1,CPOPJ ;NO SUCH JOB CAMG T1,HIGHJB ;IN RANGE? AOS (P) ;YES, RETURN GOODNESS POPJ P, ;RETURN CTXPSI::PUSHJ P,CTXVAL ;VALIDITY CHECK POPJ P, ;NO SUCH JCH MOVE T1,J ;SET TO CONTEXT 0 FOR THIS JOB MOVE T2,JBTPIA(J) ;GET PIT FOR JOB JRST CPOPJ1 ;RETURN CTXVAL::JUMPLE J,CPOPJ ;NO SUCH JOB CAMG J,HIGHJB ;IN RANGE? AOS (P) ;YES, RETURN CURRENT POPJ P, ;NO, RETURN NONESUCH CTXIPC::MOVE J,T1 ;SET TO CONTEXT 0 FOR THIS JOB PUSHJ P,FNDPDB## ;FIND THE PDB POPJ P, ;NO SUCH JOB XMOVEI W,.PDIPC(W) ;POINT TO IPCF DATA BLOCK JRST CPOPJ1 ;RETURN CTXENQ::MOVE J,T1 ;SET TO CONTEXT 0 FOR THIS JOB PUSHJ P,FNDPDB## ;FIND THE PDB POPJ P, ;NO SUCH JOB MOVE T2,.PDEQJ(W) ;GET ADDR OF QUEUE CHAIN JRST CPOPJ1 ;RETURN CTXJPK::PUSHJ P,CTXVAL ;VALIDITY CHECK POPJ P, ;NO SUCH JCH MOVE T1,J ;SET TO CONTEXT 0 FOR THIS JOB MOVE T2,JBTSWP(J) ;GET DISK ADDRESS JRST CPOPJ1 ;RETURN CTXSGN::PUSHJ P,CTXJCH ;VALIDITY CHECK POPJ P, ;NO SUCH JCH HRRZ T1,JBTSGN(T1) ;GET JBTSGN JRST CPOPJ1 ;RETURN CTXWAK::PUSHJ P,WAKJOB## ;WAKE JOB UP JRST CPOPJ1 ;RETURN CTXCMD:: PSHCMD:: POPCMD::JSP T1,ERRMES## ;CAN'T DO THESE IF CONTEXT SERVICE NOT LOADED ASCIZ /Job contexts not supported/ $ABS > ;END IFE M.CTX SUBTTL COMPUTE SPECIAL SYMBOLS SEGN=JOBN+SEGN IFN M.KL10,< XP EBCPT,10000 ;KL10 EBOX CLOCK DOES THIS MANY COUNTS PER EBOX TICK XP MBCPT,10000 ; MBOX CLOCK DOES THIS MANY COUNTS PER MBOX TICK >;END IFN M.KL10 SUBTTL ABSOLUTE LOCATIONS IN LOWER MEMORY ;DATA STARTING AT 140: LOC 41 JSR LUUOPC LOC ARSLOC HALT . LOC KAFLOC HALT . IFN M.KL10,< LOC WRSINS HALT . > ;SET JOBVER TO SYSTEM VERSION LOC 136 A00CVN ;(136) CUSTOMER AXXDVN ;(137) DEC COMORG=140 ;ORIGIN OF COMMON IS 140 LOC COMORG ;MAKE LISTING BE SAME AS LOADING SO IT WILL BE EASY ; TO EXAMINE SYSTEM LOCATIONS WITH CONSOLE SWITCHES ; WITHOUT NEEDING A STORAGE MAP SYSDSP=:400 ;FIRST STARTING LOCATION OF MONITOR ;LOWER CORE FROM 140 UP THRU 410 (START LOCATIONS): ASCIZ / THIS SOFTWARE IS FURNISHED UNDER LICENSE AND MAY BE USED OR COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1969,1990. ALL RIGHTS RESERVED. / SUBTTL EXECUTIVE PROCESS TABLE(S) DEFINE EPT(N)< .E'N'EPT:: ;ADDRESS OF EXECUTIVE PROCESS TABLE FOR CPU'N' .E'N'MP==:.E'N'EPT ;FOR THOSE WHO CAN'T REMEMBER THE NEW NAME IFN M.KL10,< LOC .E'N'EPT+.EPLGO BLOCK 40 ;LOGOUT AREAS FOR INTERNAL CHANNELS >;END IFN M.KL10 LOC .E'N'EPT+.EPUUO IOP ;CAUSE AN IOP STOPCD IF A DEVICE INTERRUPTS ; TO 40 JSR LUUOPC ;LUUO HANDLER LOC .E'N'EPT+.EPPII ;STANDARD PRIORITY INTERRUPT INSTRUCTIONS ZZ==10*N REPEAT 7,< ZZ==ZZ+1 INTINS \ZZ ;NON-VECTORED INTERRUPT LOCATIONS ; (INTINS GENERATES TWO WORDS PER PI CHANNEL) >; END REPEAT 7 IFN M.KL10,< LOC .E'N'EPT+.EPCFW ;LOCS USED BY RH20 FOR ZERO-FILL 0 0 0 0 >;END IFN M.KL10 IFN M.KS10,< LOC .E'N'EPT+.EPVIT ;POINTERS TO UBA INTERRUPT VECTOR TABLES VC'N'TB1 ;UBA 1 0 ;UBA 2 VC'N'TB3 ;UBA 3 0 ;UBA 4 >;END IFN M.KS10 IFN M.KL10,< LOC .E'N'EPT+.EPDTM ;SCRATCH BUFFER FOR GET DATE/TIME .E'N'DTM::BLOCK 3 ;CAN BE ANYWHERE IN EPT LOC .E'N'EPT+.EPDCB ;START OF DTE0 HARDWARE LOCATIONS .E'N'DCB::BLOCK ^D8*4 ;8 WORDS FOR EACH OF 4 DTE20S >;END IFN M.KL10 LOC .E'N'EPT+.EPETL ;EXEC TRAPS JFCL ;ARITHMETIC TRAP EXP SEPDLO## ;PUSH DOWN OVERFLOW TRAP JSR TRP3PC ;TRAP 3 TRAP IFN M.KS10,< LOC .E'N'EPT+.EPHSB .E'N'HSB::BLOCK ^D18 ;HALT STATUS BLOCK AREA >; END IFN M.KS10 IFN M.KL10,< LOC .E'N'EPT+.EPDDG ;DTE AREA .E'N'STD:JRST DEBUG## ;DIAGNOSTIC START .E'N'DDT:XCT SYSDDT ;DDT START .E'N'STL:XCT SYSCRH ;LOADER START ADDRESS (BOOTS) .E'N'STM:XCT SYSDSP ;START MONITOR LOC .E'N'EPT+.EPDSC ;SECONDARY PROTOCOL DTE CONTROL BLOCK AREA .E'N'DSC::BLOCK ^D11 ;(MASTER FRONT-END ONLY) LOC .E'N'EPT+.EPTMB .E'N'TMB::BLOCK 2 ;TIME BASE WORD .E'N'PAC::BLOCK 2 ;PERFORMANCE COUNTER WORD LOC .E'N'EPT+.EPTII .E'N'TII::XPCW TM'N'INT >;END IFN M.KL10 LOC .E'N'EPT+.EPSTB .E'N'STB:: EXP B2+PM.WRT+PM.CSH+.E'N'MAP/PAGSIZ IFN FTXMON,< EXP B2+PM.WRT+PM.CSH+.E'N'MAP/PAGSIZ EXP B2+PM.WRT+PM.SWB+PM.CSH+<.E'N'MP1/PAGSIZ> BLOCK ^D31-<.-.E'N'STB> EXP B2+PM.WRT+PM.CSH+<.C'N'MMA/PAGSIZ> >; END IFN FTXMON IFN M.KL10,< ;GENERATE TABLE OF CONSTANTS USED BY KL10 MICROCODE FOR OWGBP LOC .E'N'EPT+.EPOWG .E'N'OWGP: EXP 440606360607 EXP 300610220611 EXP 140612060613 EXP 000646441015 EXP 341016241017 EXP 141020041055 EXP 440722350723 EXP 260724170725 EXP 100726010762 EXP 441130331131 EXP 221132111133 EXP 001170442235 EXP 222236002275 EXP 000000000000 EXP 464750515253 EXP 626364656600 EXP 555657600000 EXP 707172730000 EXP 757600000000 >;END IFN M.KL10 ;SECTION 0/1 MAP LOC .E'N'EPT+PAGSIZ .E'N'MAP:: ;LOW SEGMENT MAPPING DEFINE ONE41,< EXP B2+PM.WRT+PM.PUB+,>+ZZ ZZCSH==PM.CSH ZZ==ZZ+1 > ZZ==0 IFN M.KS10, ;ON KS10, DON'T CACHE PAGE 0 IFE M.KS10, ;OTHERWISE, DO XLIST REPEAT CSBORG/PAGSIZ, ;TRADITION HASN'T IT LIST ;COMMON SUBROUTINES/HIGH SEGMENT MAPPING DEFINE ONE41,< EXP B2+PM.WRT+PM.PUB+PM.CSH+ZZ ZZ==ZZ+1 > LOC .E'N'MAP+CSBORG/PAGSIZ ZZ==CSBORG/PAGSIZ XLIST REPEAT /PAGSIZ, LIST ;FUNNY SPACE MAPPING DEFINE ONE41,< EXP B2+PM.WRT+PM.PUB+PM.CSH+B17+N ZZ==ZZ+1 > LOC .E'N'MAP+FYSORG/PAGSIZ ZZ==0 XLIST REPEAT PAGSIZ-, LIST LOC .E'N'MAP+PAGSIZ ;GET TO END OF THE MAP ;SECTION 2 MAP IFN FTXMON,< LOC .E'N'EPT+<2*PAGSIZ> .E'N'MP1:: DEFINE ONE41,< EXP B2+PM.WRT+,>+ZZ ZZ==ZZ+1 > ZZ==MS.HGH/PAGSIZ ;BOOT READ THIS IN 1:1 XLIST REPEAT CSBORG/PAGSIZ, ;MAKE SECTION MAP 1:1 LIST DEFINE ONE41,< EXP B2+PM.WRT+PM.PUB+PM.CSH+PM.SWB+B17+N ZZ==ZZ+1 > LOC .E'N'MP1+FYSORG/PAGSIZ ZZ==0 XLIST REPEAT PAGSIZ-, LIST LOC .E'N'MP1+PAGSIZ >; END IFN FTXMON >;END DEFINE EPT DEFINE INTINS(X)< XPCW CH'X ;DISPATCH TO START OF CONSO SKIP CHAIN IFN M.KL10, ;CAUSE AN IOP STOPCODE IF BLKO INTERRUPT IFN M.KS10, ;SHOULDN'T GET A BLKO ON THE KS >; END DEFINE INTINS ;NOW GENERATE EPT'S IFN M.KL10,< LOC 1000 ;START AT PAGE 1 (RESERVE PAGE 0 FOR IOWD SPACE) > IFN M.KS10,< LOC 2000 ;START AT PAGE 2 (FE USES PAGE 1 FOR SOFT CRAM ; PARITY ERROR RECOVERY) > IFN XPANDN, ZZ1==0 REPEAT M.CPU,< EPT(\ZZ1) ZZ1==ZZ1+1 >; END REPEAT M.CPU IFE M.CPU-1,< EPTDIF==:0 > IFG M.CPU-1,< EPTDIF==:.E1MAP-.E0MAP > LOC 777000&<.+PG.BDY> ;ROUND UP TO NEXT PAGE BOUNDARY NLUPMP:: ;NULL JOB USER PROCESS TABLE/PAGE MAP GOES HERE SUBTTL INITIALIZATION DISPATCH TABLE, STARTING AT LOCATION 400 LOC SYSDSP ;ORIGIN START LOCATIONS TO 400 SYSDSP::XJRST [MCSEC0+SYSTRT] ;(400) INITIALIZE SYSTEM VARIABLES IF CPU0 SYSDDT::XJRST [MCSEC0+ENTDDT] ;(401) ENTER EXEC DDT HALT . ;(402) HALT . ;(403) XJRST [MCSEC0+STPALL] ;(404) SET CRSHWD TO -1 AND DO A 406 ; START TO STOP ALL OTHER CPU'S AND ; GET TO BOOTS. MOSTLY FOR DEBUGGING. XJRST [MCSEC0+STPCPU] ;(405) STARTING THE BOOT CPU AT 405 IS THE SAME ; AS A 407 START. ON ALL OTHER CPUS, A 405 ; START WILL CAUSE THE CPU TO SAVE THE ; MACHINE STATE AND JUMP INTO THE AC'S UNTIL ; MANUALLY RESTARTED THROUGH 400. XJRST [MCSEC0+STPLDB] ;(406) SET SR.LBH IN .CPSBR AND DO A 407 ; START TO FORCE BOOTS TO BE LOADED ON ; THIS CPU REGARDLESS OF WHO IS THE BOOT ; CPU NOW SYSCRH::XJRST [MCSEC0+SYSTOP] ;(407) MONITOR CRASH AND RELOAD LOCATION ;START ABSOLUTE LOCATIONS HER TO BE PUBLISHED FOR USERS( UP TO 417) ABSTAB::EXP NUMTAB## ;(410) ABSOLUTE LOCATION OF GETAB TABLE TABLE. ; USED TO BE LOC 151. NEEDED TO DO GETTAB UUO ; SIMULATION ON A CRASHED MONITOR. MBTCOM::EXP 0 ;(411) ABSOLUTE LOCATION USED FOR MONBTS COMMUNICATION ;(417) CUSTOMER WORD LOC 420 ;SKIP RESERVED SPACE SUBTTL (NULL JOB AND) USER PROCESS TABLE(S) ;REDEFINE ONE41 FOR GENERATION OF THE NULL JOB'S MAP DEFINE ONE41,< EXP B2+PM.WRT+PM.PUB+ZZ ZZ==ZZ+1 > NUPMPP==:NLUPMP/PAGSIZ ;NULL JOB'S UPT PAGE NUMBER LOC NLUPMP+0 LOC NLUPMP+.UMORG NUPPPM:: ;PER-PROCESS MAPPING ZZ==FYSORG/PAGSIZ XLIST REPEAT <.UPMAP/PAGSIZ>-, LIST LOC NLUPMP+.UPTVC NUPPMT:: ;USER TRAPS EXP 0 ;(420) PAGE FAIL WORD (USER OR EXEC) JFCL SAROVF## ;(421) ARITHMETIC TRAP EXP SEPDLO## ;(422) PUSH DOWN LIST OVERFLOW TRAP JFCL ;(423) TRAP 3 TRAP EXP 0 ;(424) MUUO STORED HERE EXP 0 ;(425) MUUO PC STORED HERE EXP 0 ;(426) PROCESS CONTEXT WORD IFE FTXMON,< EXP 0 ;(427) UNUSED >; END IFE FTXMON IFN FTXMON,< EXP LG.LAB+LG.LPC+1B8+1B11 ;(427) LOAD AC BLOCKS AND SET PCS ; TO DO A USERAC AND LOAD PCS=0 FOR NULL JOB >; END IFN FTXMON EXP MUUO ;(430) KERNEL NO TRAP MUUO NEW PC EXP KTUUO ;(431) KERNEL TRAP MUUO NEW PC EXP SNTUUO ;(432) SUPERVISOR NO TRAP MUUO NEW PC EXP STUUO ;(433) SUPERVISOR TRAP MUUO NEW PC EXP MUUO ;(434) CONCEALED NO TRAP MUUO NEW PC EXP CTUUO ;(435) CONCEALED TRAP MUUO NEW PC EXP MUUO ;(436) PUBLIC NO TRAP MUUO NEW PC EXP PTUUO ;(437) PUBLIC TRAP MUUO NEW PC LOC NLUPMP+.UPPFW ;GET TO PAGE FAIL WORD EXP 0 ;(500) PAGE FAIL WORD EXP 0 ;(501) PAGE FAIL OLD FLAGS/PC DOUBLEWORD EXP 0 ;(502) ... EXP SEILM## ;(503) PAGE FAIL NEW PC NUPMPL==:.-NLUPMP ;HARDWARE LOCATIONS ;504 - 507 EBOX/MBOX METERS ;510 - 537 RESERVED LOC NLUPMP+SECTAB NULSTB:: ;SECTION TABLE ORIGIN EXP B2+PM.PUB+PM.WRT+NLUPMP/PAGSIZ BLOCK ^D31 ;RESERVE THE REST ;SOFTWARE LOCATIONS .USPAT=:.USPAT ;FORCE DEFINITION FROM S NULASW==:NLUPMP+PAGSIZ ;FIRST LOC AVAIL TO SOFTWARE LOC NULASW SUBTTL EXECUTIVE UUO DISPATCHERS $HIGH KTUUO: JRST @.USMUE ;E FIELD OF THE MUUO IS TRAP HANDLER ADDRESS ; N.B., USRIOT ISN'T ON SNTUUO: HALT . ;NOT IMPLEMENTED STUUO: HALT . ;NOT IMPLEMENTED CTUUO: PTUUO: EXECAC HRLZ T1,.USMUO IOR T1,.USMUE JUMPL T1,ILLTIN## CAILE T1,UP.MLT JRST ILLTIN## JRSTF @UUTDSP(T1) UUTDSP: IC.UOU+SEILM## ;PAGE FAULT IC.UOU+ILLTIN## ;NOT IMPLEMENTED IC.UOU+SEPDLO## ;PUSH DOWN LIST OVERFLOW IC.UOU+ILLTIN## ;TRAP 3 IC.UOU+SUILMX## ;USER ENABLED PAGE FAULT IC.UOU+SAROVF## ;USER ENABLED ARITHMETIC OVERFLOW IC.UOU+SUPDLO## ;USER ENABLED PDL OVERFLOW IC.UOU+ILLTIN## ;NOT IMPLEMENTED IC.UOU+ILLTIN## ;NOT IMPLEMENTED IC.UOU+PSIAPR ;PSI ENABLED ARITHMETIC OVERFLOW $ABS LUUOPC::0 ;JSR HERE ON A LUUO IN EXEC MODE EXCH T1,LUUOPC MOVEM T1,.USMUP JRST UUOERR## TRP3PC: 0 ;JSR HERE ON A TRAP 3 IN EXEC MODE HALT . SUBTTL SOME DEFINITIONS FOR KL10'S IFN M.KL10,< KLRELC==. LOC 420 IFN ./2*2-.,<0> ;MAKE SURE THEY START ON EVEN LOCATION FREORG: BLOCK 1000-. ;ICCW BLOCKS FRE4LN==<.-FREORG>/4 ;NUMBER OF 4-WORD BLOCKS LOC KLRELC >;END IFN M.KL10 SUBTTL KS10 UBA INTERRUPT VECTOR TABLES IFN M.KS10,< ;TABLES FOR DISPATCHING 11-STYLE VECTORED INTERRUPTS FROM THE ;KS10'S UNIBUS ADAPTORS. INITIALLY SET TO ZEROS. ;APPROPRIATE LOCATIONS WILL BE SET UP BY THE DEVICE SERVICE ROUTINES. ;MACRO TO GENERATE THE INTERRUPT VECTOR TABLES DEFINE GENVCT(N),< VC'N'TB1:: ;UBA 1 VECTOR TABLE XLIST REPEAT ^D128,<0> LIST VC'N'TB3:: ;UBA 3 VECTOR TABLE XLIST REPEAT ^D128,<0> LIST >; END DEFINE GENVCT ;NOW GENERATE THE TABLES (ONE PER CPU (HA!)) N==0 ;START WITH CPU0 REPEAT M.CPU,< ;ONCE PER CPU GENVCT (\N) N==N+1 ;NEXT CPU >; END REPEAT M.CPU >;END IFN M.KS10 SUBTTL VIRTUAL MEMORY DATA EVTABL==^D512/^D36+1 EVBMAX::0 ;FILLED IN BY SYSINI EVBTAB::BLOCK EVTABL ALPHA==1 ;FRACTIONAL PART OF TIME CONSTANT EXPON==^D10 ;NEGATIVE EXPONENT OF TIME CONSTANT .GTVM:: SWPCNT::0 ;(0) SCNCNT::-1 ;(1) SPRCNT::0 ;(2) COUNT OF SWAPS + PAGE OPERATIONS IN PROGRESS ; (SQREQ IS ONLY SWAPS) SLECNT::0 ;(3) TOTAL NUMBER OF SWPLST ENTRIES VMTOTL::0 ;(4) TOTAL AMOUNT OF VM CURRENTLY IN USE VMCMAX::0 ;(5) MAX ALLOWABLE VALUE OF VMTOTL VMRMAX::1 ;(6) OBSOLETE VMCNST::ALPHA ;(7) CONSTANT USED TO COMPUTE SWAPPING RATE VMQJOB::0 ;(10) OBSOLETE JBRMAX::RTUPS/^D10 ;(11) OBSOLETE LSFTIM::0 ;(12) TIME OF LAST FAULT SYSVCT::0 ;(13) TOTAL NUMBER OF PAGE FAULTS (OBSOLETE) EXP SWPLST ;(14) LCTN OF SWAP TABLE #1 EXP SW2LST ;(15) LCTN OF SWAP TABLE #2 EXP SW3LST ;(16) LCTN OF SWAP TABLE #3 VMCEXP::EXPON ;(17) TIME CONSTANT EXPONENT VMCDIF::EXPON-ALPHA ;(20) MAXINT::777777 ;(21) MAX INTERVAL FOR FAULT-RATE CALCULATION (ABOUT 8 SEC. BETWEEN FAULTS) IPCCNT::0 ;(22) COUNT OF IPCF PAGES BEING SWAPPED OUT EXP .UPJOB ;(23) OFFSET OF JOB NUMBER IN UPMP EXP .UPREL ;(24) OFFSET OF END OF LOW SEG IN UPMP EXP .UPLST ;(25) OFFSET OF POINTER TO SWAPABLE EXP .UPMP ;(26) VIRTUAL ADDRESS OF PAGE MAP EXP .UPLNM ;(27) OFFSET OF POINTER TO LOGICAL NAMES SINCNT::0 ;(30) NUMBER OF SWAP INPUT REQUESTS IN SWPLST EXP CSBORG-1 ;(31) HIGHEST "UNMAPPED" EXEC ADDRESS EXP .FPPP ;(32) START OF "PER PROCESS" ADDRESS SPACE EXP .LPPP ;(33) END (+1) OF "PER PROCESS" ADDRESS SPACE EXP .JDAT ;(34) "PER PROCESS" ADDRESS OF USER JOBDAT EXP .UPFCC ;(35) OFFSET IN UPMP FOR TMPCOR POINTERS EXP .UPCTA ;(36) OFFSET IN UPMP FOR EXTENDED CHANNEL TABLE POINTER EXP USRJDA ;(37) OFFSET IN UPMP FOR USRJDA RMCMAX::0 ;(40) "REAL" MAXIMUM VALUE OF CORMAX ;(ADJUSTED FOR FUNNY SPACE) SYSWLF::0 ;(41) SYSTEM WIDE COUNT OF PAGE FAULTS DUE TO ; WRITES INTO WRITE LOCKED PAGES (TO KEEP TRACK ; OF MODIFIED PAGES - NOT UWPOFF PAGES) SYSIWS::0 ;(42) SYSTEM "IN WORKING SET" FAULTS SYSNIW::0 ;(43) SYSTEM "NOT IN WORKING SET" FAULTS EXP MS.MEM+PAGTAB ;(44) ADDRESS OF PAGTAB EXP MS.MEM+PT2TAB ;(45) ADDRESS OF PT2TAB EXP MS.MEM+MEMTAB ;(46) ADDRESS OF MEMTAB EVMPTR::XWD -EVTABL,EVBTAB ;(47) AOBJN POINTER TO EVM TABLE PAGPTR::0 ;(50) HEAD OF FREE QUEUE PAGINQ::0 ;(51) HEAD OF THE "IN" PAGE QUEUE PAGINC::0 ;(52) COUNT OF PAGES IN THE "IN" QUEUE PAGSNQ::0 ;(53) HEAD OF THE SLOW SWAPPING "IN" PAGE QUEUE PAGSNC::0 ;(54) COUNT OF PAGES IN THE SLOW "IN" QUEUE PAGIPQ::0 ;(55) HEAD OF THE "IN PROGRESS" PAGING QUEUE PAGIPC::0 ;(56) COUNT OF PAGES IN "IP" QUEUE PAGOUQ::0 ;(57) HEAD OF THE "OUT" PAGE QUEUE PAGOUC::0 ;(60) COUNT OF PAGES IN THE "OUT" QUEUE LOKPTR::0 ;(61) HEAD OF LOKCON'S QUEUE LOKHOL::0 ;(62) COUNT OF PAGES IN LOKCON'S QUEUE LOKTAL::0 ;(63) LOKCON'S VERSION OF CORTAL GTVMXL==:<.-.GTVM-1>B26 ;MAXIMUM ENTRY IN GETTAB SUBTTL IOWD SPACE ALLOCATION IFN M.KL10,< NPAGUC==^D512 IFL <2*M.NKC-^D512>, IFNDEF XTR4WD,/4->> LTINIT:: IFG FRE4LN, IFG XTR4WD, 0 ;END OF LTINIT XWD'S XP X4WORG,<<.-1>/4*4+4> LOC X4WORG IFG XTR4WD, IOWNUM==.-FREORG NOIOWD::EXP FRE4LN+XTR4WD ;NUMBER OF FREE IOWD BLOCKS DF10ZR::EXP 0 ;GUARANTEED ZERO FOR TERMINATING DF10C CCLS >;END IFN M.KL10 XP CHKSHF,CPOPJ XP UPMPSZ,1 XP UPMSZW,PAGSIZ*UPMPSZ SUBTTL COMMON MEMORY FOR KDP (KMC-11/COM-IOP/DUP-11) & DMR11 ;NOTE: TO AVOID WASTING SPACE THE VALUE OF "XTR4WD" ON ; THE LAST PAGE CAN BE ADJUSTED. ;NOTE: KDL PAGES ARE BOTH AS BUFFERS AND COMM REGIONS. SINCE THEY ; ARE MAPPED BY THE UBA, IT IS ASSUMED THAT THEY CAN BE TRASHED ; BY AN ERRANT UNIBUS DEVICE. FOR THIS REASON, THEY ARE NOT STATICALY ; INITIALIZED. INSTEAD, THERE IS CODE IN THE KDP UUO SERVICE ; TO CLEAR OUT AND INITIALIZE A KDL PAGE. IFNDEF M.KDUP, ;MAKE SURE M.KDUP IS DEFINED IFNDEF M.DMRN, ;Do the same for DMRs IFE M.KDUP+M.DMRN,< ;IF NO KMC/DUP-11S THEN KDLFST==:0 ; DEFINE THESE TWO SYMBOLS KDLLST==:0 ; TO KEEP SYSINI HAPPY > IFN M.KDUP+M.DMRN,< ;ONLY ALLOCATE PAGES IF WE HAVE KDP'S or DMRs BLOCK > ;GO TO A PAGE BOUNDARY KDLFST=:. ;DEFINE SYMBOL = TO FIRST LOC OF FIRST PAGE BLOCK KDLLEN * M.KDUP ;ALLOCATE SPACE FOR THE I/O BUFFERS BLOCK PAGSIZ * M.DMRN * DMRPPL ;Allocate space for DMR11 comm region KDLLST=:.-1 ;REMEMBER LAST ADDRESS USED. > ;END M.KDUP DEFINE KDLDEF(N,V),< ;;MACRO TO DEFINE KDL'N'PG SYMBOLS KDL'N'PG=:KDLFST+V ZZZ==. LOC KDL'N'PG+KDLUSR EXP M.'N'KDP LOC ZZZ > ZZ=0 Z=0 REPEAT M.KDUP,< KDLDEF(\Z,\ZZ) ;DEFINE THE NEXT SYMBOL Z=Z+1 ;STEP THE KDL INDEX ZZ=ZZ+KDLLEN ;STEP THE PAGE ADDRESS >;END REPEAT ;Do DMRs too DEFINE DMRDEF(N,V),< ;;MACRO TO DEFINE DMR'N'PG SYMBOLS DMR'N'PG=:KDLFST+V> Z=0 REPEAT M.DMRN,< DMRDEF(\Z,\ZZ) Z=Z+1 ZZ=ZZ+ >;End REPEAT (Note the DMRs start after KDPs) SUBTTL COMMON MEMORY FOR PDP10/PDP11 ;NOTE: TO AVOID WASTING SPACE BEFORE THE FIRST DL10 WINDOW ; THE VALUE OF "XTR4WD" ON THE LAST PAGE CAN BE ADJUSTED. IFN PDP11N,< ;;THIS MACRO BUILDS THE DL10 MAP FOR A GIVEN PORT. DEFINE BLDM76(CPU,PORT),< ;;COMPUTE THE SIZE OF THE MAP DEFINE WORD(A,B), DEFINE DATA(A,B), DEFINE PNTR(A,B), DEFINE BLK(A,B),< XP DLX'A,ZZ ;DEFINE GLOBAL SYMBOL ZZ==ZZ+B> ;;SIZE OF TO -10 AND TO -11 QUEUES TTBS'PORT==:<+1>*2 TEBS'PORT==:<!17>+21 ;;EXPAND MAP76 TO SEE HOW BIG IT IS ZZ==0 MAP76(CPU,PORT) REPEAT ^D18,>> ZZ==ZZ!<!77> ;MUST BE BIG ENOUGH IFN M.DC75, ;MIN OF 128 WORDS IF MAY BE DC75 LOC <<.-1>!ZZ>+1 ;LOC TO BEGINNING OF WINDOW ZZ==ZZ_<-<6+<3*DLX8K>>> ;SIZE OF BLOCK M7'PORT'END==<<<_>*^D64>+.-1> IFN ZZ&777760 XP M7'PORT'BAM,ZZ ;DL10 WINDOW MASK ZZ=ZZ*4 ;SHIFT TO PROPER PLACE ZZ=ZZ+ ;MASK OUT OVEERFLOW IN PORT ;;NOW LAY OUT THE MAP FOR REAL DEFINE WORD(SYM),< M7'PORT''SYM:: 0 > DEFINE DATA(SYM,THING),< IF2,< IFNDEF THING,> M7'PORT''SYM:: THING > DEFINE PNTR(SYM,PLACE),< IF2,< IFNDEF PLACE,> M7'PORT''SYM:: <61B5>+PLACE > DEFINE BLK(SYM,SIZE),< M7'PORT''SYM:: BLOCK SIZE > IFNDEF DLXFST, ;START OF DL10 UNCACHED SPACE .DL'CPU'PORT'B:: ;;FIRST ADDRESS IN COMMON MEMORY MAP76(CPU,PORT) > ;END DEFINITION OF BLDM76 IFN XPANDN, ;EXPAND LISTING IF WANTED FROM MONGEN ZZD78L==0 ;LINE NUMBER CONCATENATOR ;THIS MACRO USES THE "MAP78" MACRO TO ACTUALLY BUILD THE ;THE WINDOW. IT CALLS "MAP78" TO FIRST CALCULATE THE WINDOW ;SIZE AND THEN IT CALLS "MAP78" AGAIN TO ACTUALLY BUILD THE ;THE DAS78 WINDOW. ; DEFINE BLD78 (CPU,PORT),< IFN ,< ;ONLY BUILD IF THERE IS LINES ON PORT ;THESE MACRO'S ARE USED FOR COMPUTING THE SIZE OF THE MAP ; DEFINE Q78BLK(A),< ZZD78A==ZZD78A+A> ; DEFINE Q78WRD(A),< ZZD78A==ZZD78A+1> ; DEFINE Q78DAT(A,B),< ZZD78A==ZZD78A+1> ; DEFINE Q78SYM(A,B),< ;A> DEFINE Q78INC(A,B),< ;A==A+B> ;END OF MACRO'S THAT DETERMINE MAP SIZE ZZD78A==0 ;START WITH 0 IFNDEF M78FPO, ;FIRST PORT INUSE BY DAS78. M78HPO==:PORT ;FIGURE HIGHEST DAS78 PORT. ;CALL MAP78 TO CALCULATE WINDOW SIZE ; MAP78 (CPU,PORT) ZZD78A== ;ADJUST TO LAST USED LOCATION REPEAT ^D18,>> ZZD78A==!77>> ;MAKE BIGGER IF 8K DL10 IFN <.&ZZD78A>,< LOC <.!ZZD78A>+1 >;END IFN <.&ZZD78A> ZZD78A==>>> ;SIZE OF BLOCK M8'PORT'END==<<<_>*^D64>+.-1> IFN , M8'PORT'BAM== ;SHIFT TO CORRECT PLACE FOR BASE ADR MASK DEFINE Q78BLK(A),< BLOCK A> DEFINE Q78WRD(A),< A::!Z> DEFINE Q78DAT(A,B),< A::!B> DEFINE Q78SYM(A,B),< A'B::> DEFINE Q78INC(A,B),< A==A+B> ;CALL MAP78 NOW TO ACTUALLY BUILD THE WINDOW ; .DL'CPU'PORT'B:: MAP78 (CPU,PORT) M78NUM==:<-> ;MINUS NUMBER OF POSSIBLE PDP11'S LOC +1 >;END OF IFN M'CPU'PORT'D78 >;END OF DEFINITION OF BLD78 ; CALCULATE WINDOW SIZE AND BUILD THE PDP11 WINDOW ; DEFINE MAPIT (P),< IFN TP.DL'P,< IFE M0'P'D78, IFN M0'P'D78, > ;;END IFN TP.DL'P > ;END MAPIT ZZZ=0 ;FIRST PORT REPEAT 10,< IFLE ,< IFNDEF DLX08K, IFN DLX08K, DLX8K==DLX08K ;;USED BY BLDM76 M78M8K==DLX08K ;;USED BY BLD78 > IFG ,< IFNDEF DLX18K, IFN DLX18K, DLX8K==DLX18K ;;USED BY BLDM76 M78M8K==DLX18K ;;USED BY BLD78 > MAPIT(\ZZZ) ;GET THE RIGHT MAP OR NOTHING ZZZ=ZZZ+1 > SUBTTL DL10 INTERRUPT HANDLING ;INTERRUPT ROUTINE FOR EACH DL10 BASED DAS78 DEFINE EACH78(PORTN),< IFN M0'PORTN'D78,< IFLE PORTN-3, ;FIRST DL10 IFG PORTN-3, ;SECOND DL10 $ABS D80'PORTN'KI: ;DL10 FORCES JSR HERE EXP 0,0,IC.UOU, $HIGH DEFINE D8.CH(A,B),> IFNDEF DLXSCC, D80'PORTN'KA: CONSO DLCD78,1B<32-<3*>> ;IS THIS PDP11 INTERRUPTING? JRST DLX'PORTN'NX ;TRY THE NEXT ONE CONSO DLCD78,1B31_<*3> ;PORT PORTN ENABLED? JRST .-2 ;NO, IGNORE. JRST D80'PORTN'CM ;ENTER COMMON CODE D80'PORTN'IN: CONO DLCD78,1B19+1B<32-<3*>>+XXICHN ;TURN OFF INTERRUPT DMOVEM 0,D8.CH(SVAC,\XXICHN) ;SAVE ACS 0 AND 1 DMOVE 0,D80'PORTN'KI ;GET INPTERRUPT PC DOUBLE WORD DMOVEM 0,D8.CH(CH,\XXICHN) ;STORE SO WE CAN USE CHN SAVE ROUTINES DMOVE 0,D8.CH(SVAC,\XXICHN) ;RESTORE ACS 0 AND 1 D80'PORTN'CM: CONO DLCD78,1B19+1B<32-<3*>>+XXICHN ;TURN OFF INTERRUPT JSR D8.CH(SAV,\XXICHN) ;SAVE THE ACS AND SET UP P SKIPE J,M78BT+PORTN ;J TO POINT TO WINDOW FOR PORT PORTN PUSHJ P,D78KII## ;GO TO DAS78 INTERRUPT SERVICE ROUTINE POPJ P, ;DISMISS INTERRUPT ;BASE TABLE FOR DAS78 DL10 ; M80'PORTN'BT: PHASE 0 M78CPE::!CONO DLCD78,XXICHN+<1B31_<*3>> ;CLEAR PORT ENABLE FOR PORT PORTN M78I10::!CONSO DLCD78,1B32_<*3> ;SEE IF PDP11 PORTN SET 10 INT M78I11::!CONO DLCD78,1B19+1B20+XXICHN+<1B30_<*3>> ;SET PDP11 INTERRUPT ON PORTN M78SWA::!CONO DLBD78,M8'PORTN'KII!M8'PORTN'BAM! ;LOAD ADDRESS FOR PORT PORTN M78ENP::!CONO DLCD78,1B20+XXICHN+<1B31_<*3>> ;ENABLE PORT PORTN M78CPI::!CONSO DLCD78,7 ;SEE IF PIA ASSIGNED M78SPI::!CONO DLCD78,XXICHN ;GIVE PI CHN ASSIGNMENT M78PNO::!PORTN,,.DL0'PORTN'B ;;PORT##,,WINDOW IFN M.PSI,< M78PSI::!DATAO DLCD78,[200001,,0] ;KA STYLE INTERRUPTS > ; SO PSISER CAN FIND THE PC IFE M.PSI,< M78PSI::!JFCL > M78SER::!DATAO DLBD78,[_^D<35-5>] ;PUT PORT NUMBER IN THE "R" REGISTER M78GWA::!CONI DLBD78,T1 ;GET BASE ADDRESS DEPHASE DLX'PORTN'NX:: $ABS >;END IFN M0'PORTN'D78 >;END DEFINE EACH78 ;INTERRUPT ROUTINE FOR EACH DL10 BASED ANF10 PDP11 DEFINE EACH76(N)< IFN TP.DL'N,< ;IF PORT DEFINED IFE M0'N'D78,< ;AND NOT A DAS78 IFLE N-3, ;FIRST DL10 IFG N-3, ;SECOND DL10 $ABS D70'N'KI:Z ;DL10 FORCES JSR TO HERE Z IC.UOU D70'N'IN $HIGH DEFINE D7.CH(A,B),> IFNDEF DLXSCC, ;DEFINE START OF KA SYTLE DL10 CONSO CHAIN D70'N'KA:CONSZ DLX,1B32_<*3> ;IS THIS -11 INTERRUPTING CONSO DLX,1B31_<*3> ;YES, PORT ENABLED ? JRST DLX'N'NX ;NO, TRY THE NEXT -11 JRST D70'N'CM ;JOIN COMMON CODE WITH VECTORED STYLE D70'N'IN: DMOVEM 0,D7.CH(SVAC,\SCNCHN) DMOVE 0,D70'N'KI DMOVEM 0,D7.CH(CH,\SCNCHN) DMOVE 0,D7.CH(SVAC,\SCNCHN) D70'N'CM:CONO DLX,1B19+<1B32_<*3>>+SCNCHN ;TURN OFF INTERRUPT JSR D7.CH(SAV,\SCNCHN) ;SAVE AC'S AND STUFF SKIPE W,DLXBAT+N ;SET UP BASE ADDRESS XCT DLXINI(W) ;TAKE ACTION FOR THIS INTERRUPT POPJ P, ;DISMISS INTERRUPT IFE TP.DL'N-TP.D76,< ;THIS IS A DC76 PORT DC76'N'D::JRST [PUSHJ P,SETJ'N ;SET UP J AS BASE ADDRESS PJRST D76TYP##];CALL TYPEOUT ROUTINE JRST [PUSHJ P,SETJ'N PJRST D76DSC##];MODEM CONTROL POPJ P, ;NO PI CHANNEL TO CHECK ON POPJ P,0 ;NO INIT JRST [PUSHJ P,SETJ'N PJRST D76CHP##];CHANGE HARDWARE PARAMETERS JRST [PUSHJ P,SETJ'N PJRST D76LPC##];LINE PARAMETER CONTROL JFCL JFCL JRST [PUSHJ P,SETJ'N PJRST D76OFL##] SETJ'N: EXCH J,(P) ;SAVE J MOVEM J,1(P) ;SAVE RETURN ADDRESS MOVE J,DLXBAT+N ;POINT TO BASE OF MAP MOVE J,DLXWIN(J) ; .. PUSHJ P,@1(P) ;DO FUNCTION PJRST IPOPJ ;RETURN PJRST IPOPJ1 ;ALLOW CPOPJ1 > ;END OF IFE TP.DL'N-TP.D76 DLX'N'NX: > ;END IFE M0'N'D78 > ;IFN TP.DL'N > ;END OF DEFINITION OF EACH76 > ;END IFN PDP11N ; PDP11 BASE TABLE OFFSETS PHASE 0 ;START BASE TABLE DLXWIN::! BLOCK 1 ;STANDARD XWD CPU#,DTE# DLXNMT::! BLOCK 1 ;FRONT END NAME DLXSTA::! BLOCK 1 ;DTE KNOW'S WHEN THE -10'S ALIVE DLXINI::! BLOCK 1 ;DO THIS ON INTERRUPT DLXCAL::! BLOCK 1 ;POINTER TO CAL11. UUO TABLE DLXCEU::! BLOCK 1 ;CAL11. USER'S JOB NUMBER DLXPRG::! BLOCK 1 ;DO THIS WHEN PDP11 GOES DOWN DLXTYP::! BLOCK 1 ;TYPE OF PDP11 (FOR CALL11) DLXTIM::! BLOCK 1 ;CONTAINS UPTIME OF TIMEOUT, OR 0 DLXPRE::! BLOCK 1 ; DLXCEV::! BLOCK 1 ;CAL11. UUO ENTRY VECTOR DLXFEK::! BLOCK 1 ;ADDRESS OF ASSOCIATED FEK DLXLEN::! ;LENGTH OF COMMON BASE TABLE AREA DEPHASE IFN FTKL10,< ;DL10 SPECIFIC BASE TABLE OFFSETS PHASE DLXLEN DLXMSK::! BLOCK 1 ;MASK OF FRONT END BITS DLXKAX::! BLOCK 1 ;INSTRUCTION FOR NON-KA10 STYLE INTERRUPTS DLXSWA::! BLOCK 1 ;WINDOW ADDRESS DLXENB::! BLOCK 1 ;INSTRUCTION TO ENABLE WINDOW AND INTERRUPTS DLXCLR::! BLOCK 1 ;INSTRUCTION TO CLEAR PORT ENABLE DLXCNI::! BLOCK 1 ;INSTRUCTION TO READ DL10 CONDITIONS DLXI11::! BLOCK 1 ; DLXDBL::! ;LENGTH OF DL10 BASE TABLE DEPHASE > ;END IFN FTKL10 IFN FTKL10,< ;DTE SPECIFIC BASE TABLE OFFSETS PHASE DLXLEN DLXEVM::! BLOCK 1 ;REMEMBER NUMBER OF PAGES OF EVM AND THE EXEC ; VIRTUAL ADDR FOR RETURNING EVM DLXOCN::! BLOCK 1 ;COUNT OF BYTES IN DIRECT OUT MSG DLXODA::! BLOCK 2 ;BYTES TO BE PUT IN THE DIRECT MSG DLXICI::! BLOCK 1 ;# BYTES EXPECTING IN THE INDIRECT INPUT MSG DLXIBP::! BLOCK 1 ;BYTE PTR TO USER BUFFER PASSED TO DTESER DLXICN::! BLOCK 1 ;COUNT OF BYTES RECEIVED IN INPUT DIRECT MSG DLXIDA::! BLOCK 2 ;BYTES FROM THE INPUT DIRECT MSG DLXETD::! BLOCK 1 ;POINTER TO CORRESONDING ETD DLXSBL::! ;DTE BASE TABLE LENGTH DEPHASE > ;END IFN FTKL10 IFN FTKS10,< ;KMC/DUP SPECIFIC BASE TABLE OFFSETS ;D6RINT USES THE SAME OFFSETS... PHASE DLXLEN DLXFLG::! BLOCK 1 ;GENERAL PURPOSE FLAGS WORD (SEE D6KINT) DLXICI::! BLOCK 1 ;# BYTES EXPECTING IN THE INDIRECT INPUT MSG DLXIBP::! BLOCK 1 ;BYTE POINTER TO USER BUFFER PASSED TO KDPINT DLXIMQ::! BLOCK 1 ;INPUT MESSAGE QUEUE (0 OR 1 LONG) DLXKBL::! ;KMC/DUP (AND DMR) BASE TABLE LENGTH DEPHASE > ;END IFN FTKS10 SUBTTL BASE TABLE GENERATION -- DL10 DEFINE BASE11 (CPX,N),< ;;CPX = CPU NUMBER, N = PORT NUMBER IFN TP.DL'N,< ;;IF A PDP11 IFE M'CPX'N'D78,< ;; BUT NOT A DAS78 DL'CPX'N'BS: BLOCK DLXDBL ;;RESERVE SPACE FOR ONE DL10 BASE TABLE IFLE N-3,< ;;DL10 #0 DLX=DLC ;;CONTROL REGISTER DLBX=DLB ;;BASE ADDRESS REGISTER > IFG N-3,< ;;DL10 #1 DLX=DLC2 ;;CONTROL REGISTER DLBX=DLB2 ;;BASE ADDRESS REGISTER > ;; MACRO TO LOAD UP TABLE LOCATIONS DEFINE X (OFS,DAT),< LOC DL'CPX'N'BS+OFS DAT > ;; DATA COMMON TO ALL DL10 BASE TABLES X DLXWIN,<.DL'CPX'N'B> ;;WINDOW ADDRESS X DLXINI, ;;DO THIS ON INTERRUPT X DLXPRG, ;;DO THIS WHEN THE -11 GOES DOWN X DLXMSK,<777777700007!<70_<*3>>> ;;"AND" OUT OTHER PDP11 BITS X DLXKAX, ;;NON-KA10 STYLE INTERRUPTS X DLXSWA,_2+> ;;WINDOW ADDRESS X DLXENB,*3>>+SCNCHN> ;;ENABLE WINDOW AND INTERRUPTS. X DLXCLR,*3>>+SCNCHN> ;;CLEAR PORT ENABLE X DLXCNI, ;;READ DL10 CONDITIONS X DLXI11,*3>>+SCNCHN> ;;INTERRUPT THE PDP11 IFN M'CPX'N'D85,< ;;ANF10 DC75/DN87 FRONT ENDS X DLXSTA,;;MARK -10 AS BEING ALIVE X DLXTYP,.C1D75 ;;TYPE OF PDP11 X DLXPRE,;; X DLXCEV,0 ;;CAL11. UUO ENTRY VECTOR X DLXFEK, ;;ADDRESS OF ASSOCIATED FEK > IFN M'CPX'N'D60,< ;;DN60 FRONT ENDS X DLXSTA,;;MARK -10 AS BEING ALIVE X DLXTYP,.C1D60 ;;TYPE OF PDP11 X DLXPRE, ;; X DLXCEV, ;;CAL11. UUO ENTRY VECTOR X DLXFEK, ;;ADDRESS OF ASSOCIATED FEK > LOC DL'CPX'N'BS+DLXDBL > ;END IFE M'CPX'N'D78 > ;END IFN TP.DL'N > ;END BASE11 MACRO SUBTTL BASE TABLE GENERATION -- DTE DEFINE BASDTE (CPX,DTX),< DS'CPX'DTX'BS:: BLOCK DLXSBL ;;RESERVE SPACE FOR ONE DTE BASE TABLE ; MACRO TO LOAD UP TABLE LOCATIONS DEFINE X (OFS,DAT),< LOC DS'CPX'DTX'BS+OFS DAT > ;; DATA COMMON TO ALL DTE BASE TABLES X DLXWIN, ;;CPU#,,DTE# X DLXSTA, ;;DTE KNOWS WHEN THE -10'S ALIVE X DLXINI, ;;DO THIS ON INTERRUPT X DLXPRG, ;;DO THIS WHEN THE -11 GOES DOWN X DLXPRE, ;; X DLXNMT,;;NAME X DLXTYP,.C1CFE ;;FRONT END TYPE X DLXFEK, ;;ADDRESS OF ASSOCIATED FEK X DLXETD,,B##)> ;;ADDRESS OF ASSOCIATED ETD LOC DS'CPX'DTX'BS+DLXSBL > ;END BASDTE MACRO SUBTTL BASE TABLE GENERATION -- KMC/DUP DEFINE BASKDP (KMX,KLX),< ;;KMX = KMC #, KLX = DUP # (KMX == 0) DK'KMX'KLX'BS: BLOCK DLXKBL ;;RESERVE SPACE FOR ONE KMC/DUP BASE TABLE ; MACRO TO LOAD UP TABLE LOCATIONS DEFINE X (OFS,DAT),< LOC DK'KMX'KLX'BS+OFS DAT > ;; DATA COMMON TO ALL KMC/DUP BASE TABLES X DLXWIN, ;;KDL BASE TABLE X DLXSTA, ;;KDP KNOWS WHEN THE -10 IS ALIVE X DLXINI, ;;DO THIS ON INTERRUPT X DLXPRG, ;;DO THIS WHEN THE -11 GOES DOWN X DLXPRE, ;; IFE ,< ;;ANF10 FRONT ENDS X DLXNMT, ;;NAME X DLXTYP,.C1D22 ;;TYPE OF PDP11 X DLXCEV,0 ;;CAL11. UUO ENTRY VECTOR X DLXFEK,DK'KLX'FEK ;;ADDRESS OF ASSOCIATED FEK > IFE ,< ;;DECNET FRONT ENDS X DLXNMT,;;NAME X DLXTYP,.C1D22 ;;TYPE OF PDP11 X DLXCEV,0 ;;CAL11. UUO ENTRY VECTOR X DLXFEK,0 ;;ADDRESS OF ASSOCIATED FEK > IFE ,< ;;USER FRONT ENDS X DLXNMT, ;;NAME X DLXTYP,.C1D22 ;;TYPE OF PDP11 X DLXCEV,0 ;;CAL11. UUO ENTRY VECTOR X DLXFEK,0 ;;ADDRESS OF ASSOCIATED FEK > IFE ,< ;;DN60 FRONT ENDS X DLXNMT, ;;NAME X DLXTYP,.C1D60 ;;TYPE X DLXCEV, ;;CAL11. UUO ENTRY VECTOR X DLXFEK,0 ;;ADDRESS OF ASSOCIATED FEK > LOC DK'KMX'KLX'BS+DLXKBL > ;END BASKDP MACRO SUBTTL BASE TABLE GENERATION -- DMR DEFINE BASDMR (DRX),< ;;DRX = DMR # DMR'DRX'BS: BLOCK DLXKBL ;;RESERVE SPACE FOR ONE DMR BASE TABLE ; MACRO TO LOAD UP TABLE LOCATIONS DEFINE X (OFS,DAT),< LOC DMR'DRX'BS+OFS DAT > ;; DATA COMMON TO ALL DMR BASE TABLES X DLXWIN, ;;DMR BASE TABLE X DLXSTA, ;;DMR KNOWS WHEN THE -10 IS ALIVE X DLXINI, ;;DO THIS ON INTERRUPT X DLXPRG, ;;DO THIS WHEN THE -11 GOES DOWN X DLXPRE, ;; IFE ,< ;;ANF10 FRONT ENDS X DLXNMT, ;;NAME X DLXTYP,.C1D22 ;;TYPE OF PDP11 X DLXCEV,0 ;;CAL11. UUO ENTRY VECTOR X DLXFEK,DR'DRX'FEK ;;ADDRESS OF ASSOCIATED FEK > IFE ,< ;;DECNET FRONT ENDS X DLXNMT,;;NAME X DLXTYP,.C1D22 ;;TYPE OF PDP11 X DLXCEV,0 ;;CAL11. UUO ENTRY VECTOR X DLXFEK,0 ;;ADDRESS OF ASSOCIATED FEK > IFE ,< ;;USER FRONT ENDS X DLXNMT, ;;NAME X DLXTYP,.C1D22 ;;TYPE OF PDP11 X DLXCEV,0 ;;CAL11. UUO ENTRY VECTOR X DLXFEK,0 ;;ADDRESS OF ASSOCIATED FEK > IFE ,< ;;DN60 FRONT ENDS X DLXNMT, ;;NAME X DLXTYP,.C1D60 ;;TYPE X DLXCEV, ;;CAL11. UUO ENTRY VECTOR X DLXFEK,0 ;;ADDRESS OF ASSOCIATED FEK > LOC DMR'DRX'BS+DLXKBL > ;END BASDMR MACRO IFN PDP11N,< ;IF DL10 BASED PDP11S $HIGH IFN M.DAS78, ;DAS78 XXI INTERRUPTS HERE DLXINT: JRST DLXSCC ;START OF KA STYLE INTERRUPT CHAIN JRST .-1 ;MAKE SYSINI HAPPY IFN M.DAS78,< DEFINE B78BT (CPU,PORT),< IFNDEF M8'CPU'PORT'BT, IFDEF M8'CPU'PORT'BT,> $HIGH M78BT:: ZZZ=0 REPEAT 10,< B78BT (0,\ZZZ) ZZZ=ZZZ+1> >;END IFN M.DAS78 $ABS ZZZ==0 ;GENEATE INTERRUPT ROUTINE FOR EACH REPEAT 10,< ; DL10 BASED DAS78 EACH78 (\ZZZ) ZZZ==ZZZ+1 > ZZZ=0 ;GENERATE INTERRUPT ROUTINE FOR EACH REPEAT 10,< ; DL10 BASED ANF10 PDP11 EACH76(\ZZZ) ZZZ==ZZZ+1 > $HIGH JRST DLXINT+1 ;CONSO CHAIN FALLS OUT HERE $ABS ; ; GENERATE THE BASE TABLES. ONE FOR EACH DL10 PDP11 AND ONE ; FOR EACH PDP11 ON A DTE20 (EXCEPT FOR THE CONSOLE AND ; DN87S'S) ;FIRST THE DL-10 BASED FRONT ENDS ZZZ==0 ;START WITH #0 REPEAT 8,< BASE11(0,\ZZZ) ;BUILD THE NEXT BASE TABLE ZZZ==ZZZ+1> ;STEP TO THE NEXT DL-10 PORT > ;END OF IFN PDP11N ;NOW THE DTE-20 BASED FRONT ENDS IFN FTKL10,< ZZ==0 ;CPU # REPEAT M.CPU,< ;FOR ALL CPU'S ZZZ==0 ;DTE NUMBER REPEAT 4,< ;FOR ALL DTE'S ON THIS CPU BASDTE(\ZZ,\ZZZ) ;BUILD A BASE TABLE ZZZ==ZZZ+1> ;STEP TO THE NEXT DTE ZZ==ZZ+1> ;STEP TO THE NEXT CPU > ;END FTKL10 $ABS ;BASE TABLES FOR KDP'S (IF USING IBM COMM) IFN FTKS10,< ZZ==0 ;START OUT ON LINE ZERO REPEAT M.KDUP,< ;FOR ALL LINES BASKDP(0,\ZZ) ;BUILD A BASE TABLE ZZ==ZZ+1> ; AND STEP TO THE NEXT ZZ==0 ;START OUT ON LINE ZERO REPEAT M.DMRN,< ;FOR THE DMRS TOO BASDMR(\ZZ) ;BUILD A BASE TABLE ZZ=ZZ+1> ;AND STEP TO THE NEXT >; END FTKS10 IFN PDP11N,< $HIGH ; BUILD THE BASE TABLES FOR ANF10 AND DAS78 FRONT ENDS DEFINE B78BAT (CPU,PORT),< IFE TP.DL'PORT, IFN TP.DL'PORT,< IFE M'CPU'PORT'D78, IFN M'CPU'PORT'D78, > ;;END IFN TP.DL'PORT > ;END B78BAT DEFINE BLXBAT (CPU,PORT),< IFE TP.DL'PORT, IFN TP.DL'PORT,< IFE M'CPU'PORT'D78, IFN M'CPU'PORT'D78, > ;;END IFN TP.DL'PORT > ;END BLXBAT DLXBAT:: ;START OF THE ANF10 MAPPING TABLE ZZZ==0 ;PORT COUNTER REPEAT 8,< ;FOR ALL POSSIBLE PORTS BLXBAT (0,\ZZZ) ;EXPAND THE MACRO ZZZ==ZZZ+1> ;AND STEP TO THE NEXT PORT IFN M.DAS78,< M78BAT:: ;START OF THE DAS78 MAPPING TABLE ZZZ==0 ;PORT COUNTER REPEAT 8,< ;FOR ALL POSSIBLE PORTS B78BAT (0,\ZZZ) ;EXPAND THE MACRO ZZZ==ZZZ+1> ;AND STEP TO THE NEXT PORT $ABS ; MACRO TO BUILD A TABLE CONTAINING DDB ADDRESSES FOR EACH DAS78 DEFINE B78DDB (CPU,PORT),< IFDEF M8'PORT'KII, > ;END B78DDB M78DDB:: ZZZ==0 REPEAT 8,< ;FOR ALL POSSIBLE PORTS B78DDB (0,\ZZZ) ;EXPAND THE MACRO ZZZ==ZZZ+1> ;AND STEP TO THE NEXT PORT $HIGH ; MACRO TO BUILD A TABLE WHICH CONTAINS THE LAST USED LOCATION IN ; THE DAS78 WINDOW FOR EACH PORT. DEFINE B78END (CPU,PORT),< IFNDEF M'CPU'PORT'END, IFDEF M'CPU'PORT'END, > ;END B78END M78END:: ZZZ==0 REPEAT 8,< B78END (0,\ZZZ) ZZZ==ZZZ+1> ; MACRO TO BUILD A TABLE WHICH CONTAINS THE NUMBER OF LINES ; ON EACH DAS78 DEFINE B78LIN (CPU,PORT), M78LIN:: ZZZ==0 REPEAT 8,< ;FOR ALL POSSIBLE PORTS B78LIN (0,\ZZZ) ;EXPAND THE MACRO ZZZ==ZZZ+1> ;AND STEP TO THE NEXT PORT $ABS D78NAM::BLOCK 10 ;TABLE OF NAMES FILLED IN BY THE PDP11 ; THROUGH A POINTER IN THE DAS78 WINDOW > ;END IFN M.DAS78 > ;END OF IFN PDP11N $HIGH ;HELPER MACRO FOR SETTING UP THE DTE -- BASE TABLE CORRESPONDENCE MAP DEFINE BLXBAT (CPX,DTX), DTEBAS:: ;START OF THE DTE TO BASE TABLE MAPPING IFN FTKL10,< ZZ==0 ;CPU COUNTER REPEAT M.CPU,< ;FOR ALL CPU'S ZZZ==0 ;ZERO THE DTE COUNTER REPEAT 4,< ;FOR ALL DTE-20S BLXBAT(\ZZ,\ZZZ) ;MAKE THE MAP ENTRY ZZZ==ZZZ+1> ; STEP TO THE NEXT DTE ZZ==ZZ+1> ; STEP TO THE NEXT CPU > DEFINE BLXBAT(KMX,KLX), ;BASE TABLE ADDRESS KDPBAS:: ;START OF THE KDP BASE TABLES IFN M.DN60&M.DN6K,< ;IF WE HAVE IBM ZZ==0 ;START AT THE FIRST LINE REPEAT M.KDUP,< ;FOR ALL LINES BLXBAT(0,\ZZ) ;EXPAND A POINTER TO THEM ZZ==ZZ+1> ;STEP TO THE NEXT >; END IFN M.DN60&M.DN6K DEFINE BLXBAT(DRX), ;BASE TABLE ADDRESS DMRBAS:: ;START OF THE DMR BASE TABLES IFN M.DN60&M.DN6R,< ;IF WE HAVE IBM ZZ==0 ;START AT THE FIRST LINE REPEAT M.DMR,< ;FOR ALL LINES BLXBAT(\ZZ) ;EXPAND A POINTER TO THEM ZZ==ZZ+1> ;STEP TO THE NEXT >; END M.DN60&M.DN6R $ABS IFNDEF DLXFST, ;START OF DL10 UNCACHED SPACE DLXLST:: ;END OF UN-CACHED AREA LIT ;FORCE ANY INITIALIZATION LITERALS INTO LOW SEGMENT SUBTTL BACKGROUND PERFORMANCE ANALYSIS SELECTION TABLE IFN M.KL10&FTRSP,< $HIGH ;THE TABLE IS "PURE" ;BPATAB -- TABLE OF BACKGROUND PERFORMANCE ANALYSIS CONDITIONS ; ;THIS TABLE CONTAINS THE ORDERED LIST OF "ASPECTS" OF THE SYSTEM ;TO WATCH VIA THE PERFORMANCE ANALYSIS METER OF THE KL-10 CPU. ; ;EACH ITEM IN THE BPATAB TABLE HAS A CORRESPONDING 4-WORD BLOCK IN ;THE CDB VARIABLES AREA (SUBTABLE .CPBPV). THE FIRST TWO WORDS ARE ;THE RDTIME TOTAL FOR WHICH THE CONDITION(S) WAS(WERE) WATCHED, AND ;THE SECOND TWO WORDS ARE THE PERFORMANCE METER COUNT FOR THE ENABLED ;CONDITION(S) - EITHER AN INTEGER COUNT IF IN EVENT MODE OR ELAPSED ;TIME IF IN DURATION MODE. THE ORDER OF THE TABLE IS IMPORTANT SINCE ;THE NUMBERS ARE GETTAB'ED OUT OF THE .CPBPV SUBTABLE. ; ;ALTHOUGH THIS TABLE REALLY BELONGS IN APRSER IT MUST APPEAR IN COMMON ;BEFORE THE CDB DEFINITIONS AS THE LENGTH OF THE TABLE IS NEEDED TO ;DEFINE THE CDB VARIABLES SUBTABLE. BPATAB::PE.CP0!PE.UCI!PE.PRI!PE.CCI!PE.PPI!PE.PCI!PE.CLR ;CH 0 PE.CP1!PE.UCI!PE.PRI!PE.CCI!PE.PPI!PE.PCI!PE.CLR ;CH 1 PE.CP2!PE.UCI!PE.PRI!PE.CCI!PE.PPI!PE.PCI!PE.CLR ;CH 2 PE.CP3!PE.UCI!PE.PRI!PE.CCI!PE.PPI!PE.PCI!PE.CLR ;CH 3 PE.CP4!PE.UCI!PE.PRI!PE.CCI!PE.PPI!PE.PCI!PE.CLR ;CH 4 PE.CP5!PE.UCI!PE.PRI!PE.CCI!PE.PPI!PE.PCI!PE.CLR ;CH 5 PE.CP6!PE.UCI!PE.PRI!PE.CCI!PE.PPI!PE.PCI!PE.CLR ;CH 6 PE.CP7!PE.UCI!PE.PRI!PE.CCI!PE.PPI!PE.PCI!PE.CLR ;CH 7 PE.CPI!PE.UCI!PE.PRI!PE.CCI!PE.PP0!PE.PCI!PE.CLR ;PI 0 PE.CPI!PE.UCI!PE.PRI!PE.CCI!PE.PP1!PE.PCI!PE.CLR ;PI 1 PE.CPI!PE.UCI!PE.PRI!PE.CCI!PE.PP2!PE.PCI!PE.CLR ;PI 2 PE.CPI!PE.UCI!PE.PRI!PE.CCI!PE.PP3!PE.PCI!PE.CLR ;PI 3 PE.CPI!PE.UCI!PE.PRI!PE.CCI!PE.PP4!PE.PCI!PE.CLR ;PI 4 PE.CPI!PE.UCI!PE.PRI!PE.CCI!PE.PP5!PE.PCI!PE.CLR ;PI 5 PE.CPI!PE.UCI!PE.PRI!PE.CCI!PE.PP6!PE.PCI!PE.CLR ;PI 6 PE.CPI!PE.UCI!PE.PRI!PE.CCI!PE.PP7!PE.PCI!PE.CLR ;PI 7 BPATLN==:.-BPATAB $ABS ;BACK TO "IMPURE" > ;END OF IFN M.KL10&FTRSP SUBTTL CPU DATA BLOCK(S): REPEAT 0,< EACH CPU HAS ITS OWN DATA BLOCK, KNOWN AS A CDB. ALL .CP??? SYMBOLS ARE DEFINED RELATIVE TO THE (MAPPED) CDB, .CN??? SYMBOLS ARE ABSOLUTE LOCATIONS. A FEW LOCATIONS ARE REALLY SYSTEM PARAMETERS (EG. CORTAL), RATHER THAN CPU PARAMETERS. HOWEVER, THEY WERE IN THE MIDDLE OF A GETTAB (NSWTBL) AND SO COULD NOT BE SEPARATED OUT WITHOUT INVALIDATING SOME PROGRAMS. WHEN ADDING CONSTANTS OR VARIABLES TO COMMON, GREAT CARE MUST BE EXERCISED IN DECIDING WHETHER TO PUT IT IN THE CDB OR IN A SYSTEM DEPENDENT TABLE (.SYTBL). IF THE CONTENTS COULD EVER BECOME CPU DEPENDENT IN THE FUTURE, BE SURE TO PUT IT IN THE CDB INSTEAD OF .SYTBL. IF A MISTAKE IS MADE, THE LOCATION WILL HAVE TO APPEAR IN THE CDBS AS WELL AS .SYTBL IN ORDER TO INSURE COMPATIBLITY. > ;END REPEAT 0 DEFINE CDB (N),< ;;MACRO TO GENERATE CPU DATA BLOCK LOCATIONS ;;ARGUMENTS: ;; NAM THREE LETTER SUFFIX FOR SYMBOL ;; VAL OPTIONAL VALUE TO STORE IN LOCATION (DEFAULT = ZERO) ;; LEN OPTIONAL LENGTH OF STORAGE AREA (DEFAULT = ONE WORD) ;; LBL OPTIONAL ALTERNATE LABEL FOR OLD-STYLE CPU0 REFERENCES DEFINE CWRD (NAM,VAL,LEN,LBL,%X),< IFE %X,,,>> IFNB ,< .C'%X'NAM:: ;;CREATE CPU-SPECIFIC SYMBOL .CP'NAM=:.-.C'%X'CDB+.EVCDB ;;CREATE GENERIC CDB SYMBOL > ;;END IFNB IFE %X,,> ;;GENERATE ALTERNATE LABEL IFB , ;;STORE POSSIBLE VALUE IFNB ,> ;;CREATE STORAGE BLOCK IFB ,,> ;;IF VALUE AND LENGTH BLANK, STORE A ZERO > ;;END DEFINE CWRD ;;MACRO TO DEFINE A CONSTANT IF THIS IS THE CPU0 CDB DEFINE CCON (A,B),> ;;MACRO TO DEFINE JSR ENTRY POINT DEFINE CJSR (NAM,ADR),< CWRD (NAM) EXP > ;;END DEFINE CJSR ;;MACRO TO DEFINE AN XPCW ENTRY POINT DEFINE CXPC (NAM,FLG,ADR),< CWRD (NAM,,2) EXP FLG,ADR > ;;END DEFINE CXPC ;;MACRO TO DETDEFINE A PARAMETER BASED ON THE CPU TYPE DEFINE KILS,< IFN M.KL10, IFN M.KS10, > ;;END DEFINE KILS CPU'N:: ;CONSTANTS IN GETTAB UUO.(NOT CLEARED AT STARTUP OR 143 RESTART) IFE ,<.XX==0> IFG ,<.XX==<.C'N'CDB+.CPLEN,,0>> CWRD (CDB,.XX) ;;(000) LH = ADR OF NEXT CDB ;; RH = 0 CWRD (ASN,M.C'N'SN) ;;(001) APR SERIAL NUMBER CWRD (OK,1) ;;(002) THIS CPU RUNNING OK. ;; IF GREATER THAN 0, THIS CPU HAS STOPPED ;; RUNNING CORRECTLY. CONTENTS ARE NO. OF ;; JIFFIES CPU HAS BEEN STOPPED. CWRD (EPT,.E'N'EPT) ;;(003) CONTAINS EPT ADDRESS CWRD (LOG,) ;;(004) LOGICAL CPU NAME (CPUN) DEFINE KL, DEFINE KS, CWRD (PHY,) ;;(005) PHYSICAL CPU NAME (CPXN) DEFINE KL, DEFINE KS, CWRD (TYP,) ;;(006) TYPE OF PROCESSOR ;; LH = CUSTOMER DEFINED ;; RH = DEC DEFINED CWRD (MPT,<B8+.C'N'BAT-.C'N'VBG>) ;;(007) BAD ADDRESS SUBTABLE CWRD (RTC,0) ;;(010) REAL TIME CLOCK (DK10) DDB CWRD (RTD,0) ;;(011) DK10 DDB IF HI PREC TIME ACCOUNTING CWRD (PAR,<<.CPPRL-1>B8+.C'N'LPA-.C'N'VBG>) ;;(012) PARITY SUBTABLE IFE FTRSP,<.CPAOR==:.CPVBG> ;;NO SUBTABLE IF NO RESPONSE STUFF IFE FTRSP,<.CPRSL==:1> ;;MAX IS 0 CWRD (RSP,<<.CPRSL-1>B8+.C'N'AOR-.C'N'VBG>) ;;(013) RESPONSE SUBTABLE CWRD (DKX,0) ;;(014) NUMBER OF DK10S ON THIS CPU DEFINE KL, DEFINE KS,<0> CWRD (EBS,) ;;(015) EBOX TICKS PER SECOND DEFINE KL, DEFINE KS,<0> CWRD (MBS,) ;;(016) MBOX TICKS PER SECOND CWRD (NMT,<<.CPNML-1>B8+.C'N'LNA-.C'N'VBG>) ;;(017) NXM SUBTABLE CWRD (CSB,<<.CPCSL-1>B8+.C'N'APD-.C'N'VBG>) ;;(020) CPU STATUS SUBTABLE CWRD (DSB,<<.CPDVL-1>B8+.C'N'DVS-.C'N'VBG>) ;;(021) DEVICE STATUS SUBTABLE DEFINE KL,<<.CPSDL-1>B8+.C'N'SBD-.C'N'VBG> DEFINE KS,<0> CWRD (SDP,) ;;(022) SBDIAG SUBTABLE IFE M.KL10&FTRSP,<.XX==0> IFN M.KL10&FTRSP,<.XX==B8+.C'N'BPV-.C'N'VBG> CWRD (BPA,<.XX>) ;;(023) PERORMANCE SUBTABLE CWRD (PCB,0) ;;(024) ADDRESS OF CI PORT CONTROL BLOCK CWRD (NPB,0) ;;(025) ADDRESS OF NI PORT CONTROL BLOCK DEFINE KL,<0> DEFINE KS,<<.CPSML-1>B8+.C'N'SME-.C'N'VBG> CWRD (MSS,) ;(026) SOFT MEMORY ERROR SUBTABLE ;;ADD CONSTANTS TO BE PUBLISHED ABOVE HERE: CCON (.CPPCL,<<.-.C0CDB>B26>) ;;PUBLISHED CPU DEPENDANT CONSTANTS LENGTH ;UNPUBLISHED CONSTANTS: CWRD (MAP,.E'N'MAP) ;;ADDRESS OF THIS CPU'S EXEC MAP CWRD (SPT,) ;;SPECIAL PAGES TABLE IFN FTMP,< CWRD (CHX,0) ;;CACHE SWEEP FLAG FOR MAGTAPES AND DISKS > ;END IFN FTMP CWRD (CPN,) ;;CPU NUMBER DEFINE CPUDEF(M)< IFE N,< IFE M, IFN M,> IFN N,< IFN M, IFE M,> > ;;END DEFINE CPUDEF CWRD (SK0,) ;;GENERATE SKIP FOR "SKPCPU(0)" CWRD (SK1,) ;;AND FOR "SKPCPU(1)" **MAINTAIN ORDER** CWRD (OK1,.C0OK) ;;CONTAINS ADR OF OTHER CPU CWRD (SLF,.C'N'CDB) ;;POINTER TO START OF CDB DEFINE SCNLOC,< IFE N, IFN N, > CWRD (SCN,) ;;ADDRESS OF SCHEDULER RUN QUEUE SCAN LIST IFN FTNSCHED,< DEFINE SCN,< IFE N, IFN N, > CWRD (SST,); > ;END IFN M.CPU-1 CWRD (NPD,) ;;NULL PDL POINTER CWRD (EPD,) ;;ERROR PDL POINTER CWRD (NJD,NU'N'DAT) ;;ADDRESS OF NULL JOB DATA AREA OFFSET BY 20 ;; USED TO SAVE ACS IN 20-37. CWRD (STO,SC'N'TIC##) ;;SCANNER ONCE A TICK ROUTINE FOR THIS CPU CWRD (ISR,SC'N'SEC##) ;;SCANNER ONCE A SECOND IFN FTMP,< CWRD (DLK,-1) ;;DISK INTERLOCK NESTING FLAG CWRD (SCD,-1) ;;PER CPU SCHEDULER INTERLOCK FLAG CWRD (DIE,-1) ;;PER CPU DIE INTERLOCK FLAG CWRD (RES,) ;;RESTORE AFTER POWER FAIL CWRD (NBI,0) ;;NUMBER OF INTERLOCKS THAT WERE OWNED ;; BY THIS CPU AND BROKEN BY BRKLOK > ;END IFN FTMP PWFLEN==:3 ;;NUMBER OF POWER FAIL DATA WORDS CWRD (PFD,,PWFLEN) ;;POWER FAIL/RESTART DATA CWRD (KAF,AP'N'KAF) ;;KEEP-ALIVE FAILURE TRAP ADDRESS CWRD (SVP,0) ;;SAVED AC P ON KAF CWRD (KFP,0) ;;KAF PDL CWRD (EPL,EP'N'PDL) ;;PDL FOR PROCESSING PDL OVF ;;APR DEPENDENT CONSO AND CONO BITS CWRD (CHL,) ;;ADDRESS OF INTERRUPT PC FOR APR CWRD (CKL,) ;;ADDRESS OF INTERRUPT PC FOR CLOCK CWRD (APP,<-PDL+1,,AP'N'PD1>) ;;PDP FOR APR CHANNEL CWRD (CON,AP.CSO) ;;APR CONSO MASK CWRD (EEB,AP.EEB) ;;EXEC ENABLED BITS CWRD (IEF,AP.CAE) ;;MASK TO CLEAR APR ERROR BITS CWRD (MPS,) ;;LH=BITS TO REQUEST SCAN ;;DOORBELL WORDS ;CWRD (BIT,<1_M.CPU-1>) ;;CPU'S BIT DEFINE EVENTM(LIST),< NARGS==0 IRP LIST, IFG NARGS*M.CPU-^D36, ZZ==0 XX2==0 IRP LIST,< XX1==1_<+N> XX2==XX2+XX1 CWRD (LIST'S,<<<<1_M.CPU>-1>_>-XX1>) CWRD (LIST'C,) ZZ==ZZ+1 > CWRD (DBM,XX2) .C'N'BIT==:.C'N'SCC .CPBIT=:.C0BIT-.C0CDB+.EVCDB > EVENTM () DEFINE KL, DEFINE KS, CWRD (EBR,) ;;EXEC BASE REGISTER ON THIS CPU IFN M.KS10,< CWRD (FEF,0) ;;FLAG SET NON-ZERO WHEN FE INTERRUPTS > ;END IFN M.KS10 CWRD (CTN,CT'N'LIN##) ;;RH = CTY NUMBER FOR THIS CPU ;;LH = DLS LINE NUMBER ON DTE IFN M.KL10,< CWRD (TTD,M'N'TTDN) ;TTYS ON THIS CFE CWRD (ETD,) ;;ETD TABLE FOR THIS CPU CWRD (SPF,0) ;;CFE SECONDARY PROTOCOL FLAGS (^-FEATURES) CWRD (SCA,-1) ;;SCA INTERLOCK NESTING IFN M.SCA,< CWRD (SCP,0) ;;SCA CHANNEL ENABLE STATES >; END IFN M.SCA >; END IFN M.KL10 CWRD (SIN,-1) ;;SCNSER INTERLOCK NESTING IFN M.TAPE,< CWRD (TPN,-1) ;;MAGTAPE INTERLOCK NESTING CWRD (TPP,0) ;;MAGTAPE CHANNEL ENABLE STATES > ;END IFN M.TAPE IFN FTENET,< CWRD (ETH,-1) ;;ETHERNET INTERLOCK NESTING >; END IFN FTENET CWRD (CA0,,20,CRSHAC) ;AC BLOCK 0 ON A CRASH .C'N'CAC==.C'N'CA0 ;;YET ANOTHER NAME .CPCAC==:.C'N'CA0-.C'N'CDB+.EVCDB ;;... CWRD (STT,0) ;;TEMP USED BY APRSER FOR TRAP PROCESSING ;;THE FOLLOWING TWO ENTRIES MUST BE CONTIGUOUS CWRD (ST1,0) ;;PLACE TO SAVE T1 ON PAGE TRAPS CWRD (ST2,0) ;;PLACE TO SAVE T2 ON PAGE TRAPS ;;THE FOLLOWING TWO ENTRIES MUST BE CONTIGUOUS CWRD (TPC,0) ;;TEMP USED BY APRSER FOR IME PROCESSING CWRD (TP1,0) ;;TEMP USED BY APRSER FOR IME PROCESSING CWRD (TPF,0) ;;TEMP USED BY APRSER FOR IME PROCESSING CWRD (EJT,0) ;;TEMP USED BY APRSER FOR IME PROCESSING IFN FTRTTRP,< IF1,< CWRD (RCT,,6) ;;REAL TIME PI CHANNEL TABLE CWRD (RDT,,6) ;;REAL TIME DISMISS TABLE > IF2,< ZZ==10*N+1 DEFINE BLDTB1(ZZ) IFDEF UNIQ'ZZ, IFN UNIQ'ZZ,>> DEFINE BLDTB2(ZZ) IFE CUSD'ZZ,> DEFINE BLDTB3(ZZ) IFNDEF CHND'ZZ,> CWRD (RCT,,0) REPEAT 6,< BLDTB1(\ZZ) ZZ==ZZ+1> ZZ==10*N+1 CWRD (RDT,,0) REPEAT 6,< BLDTB3(\ZZ) ZZ==ZZ+1> > ;;END IF2 > ;;END IFN FTRTTRP CWRD (CPI,0) ;;PI STATUS ;;THE FOLLOWING TWO ENTRIES MUST BE CONTIGUOUS CJSR (SVA,) ;;JSR HERE TO SAVE ALL AC SETS CWRD (TRP,0) ;;MUUO DURING CRASH CWRD (RTS,0) ;;TEMP USED DURING RTTRP ERROR PROCESSING CWRD (RTT,0) ;;RTTRP IN PROGRESS FLAG (DEFINED ;; HERE BECAUSE IT MUST BE 0 DURING ONCE-ONLY) CWRD (TML,0) ;;VALUE OF "TIME" AT LAST CLOCK TIC ;; USED FOR MAINTAINING CLOCK QUEUE AND ;; SMITHSONIAN DATE CWRD (OCB,0) ;;0 IF THIS CDB ISN'T OWNED BY ANY CPU CWRD (DWD,-1) ;;RECURSION INTERLOCK FOR DIE ;;PI SAVE ROUTINES .C'N'SAV==:. .CPSAV=:.-.C'N'CDB+.EVCDB IFE N,< SAV1,,SAV1 SAV2,,SAV2 SAV3,,SAV3 SAV4,,SAV4 SAV5,,SAV5 SAV6,,SAV6 > ;;END IFE N IFN N,< SAVB'N'1,,SAV'N'1 SAVB'N'2,,SAV'N'2 SAVB'N'3,,SAV'N'3 SAVB'N'4,,SAV'N'4 SAVB'N'5,,SAV'N'5 SAVB'N'6,,SAV'N'6 > ;;END IFN N ;;START OF AUTOCONFIGURE DATA CWRD (ATR,<-1>) ;;DATA BASE INTERLOCK REQUEST COUNT CWRD (ATO,<-1>) ;;DATA BASE INTERLOCK OWNER ID CWRD (ATP,0) ;;SAVED PI SYSTEMS STATE CWRD (ASC,<-1>) ;;NUMBER OF AUTO-CONFIGURED SOFTWARE CHANNELS CWRD (DVC,0) ;;DEVICE CODE CWRD (DRV,0) ;;DRIVER DISPATCH CWRD (CHA,0) ;;CHANNEL DATA BLOCK ADDRESS CWRD (TSN,,2) ;;TEMPORARY DRIVE SERIAL NUMBER STORAGE IFN M.KL10,< CWRD (CNI,) ;;CONI CWRD (CNO,) ;;CONO CWRD (DTI,) ;;DATAI CWRD (DTO,) ;;DATAO CWRD (BKI,) ;;BLKI CWRD (BKO,) ;;BLKO >; END IFN M.KL10 IFN M.KS10,< CWRD (UMR,,MAXUBA) ;;HIGHEST MAPPING REGISTER ASSIGNED ON UBA >; END IFN M.KS10 ;;END OF AUTOCONFIGURE DATA CWRD (CML,0) ;;LDB ADDRESS OF LINE ON WHICH COMMAND IS BEING ;; PROCESSED ON THIS CPU ;;KL10 ERROR REPORTING/RECOVERY IFN M.KL10,< CWRD (SB0,<100000,,0>) ;;DO SBDIAG 0 HERE ON ERRORS CWRD (S0A,<0>) ;;ANSWER RETURNED HERE CWRD (SB1,<100000,,1>) ;;SBDIAG FN 1 DONE HERE CWRD (S1A,<0>) ;;ANSWER RETURNED HERE >;END IFN M.KL10 CWRD (TOA,CCTYO##) ;;TYPE OUT ADDRESS FOR THIS CPU (OLD COMTOA) CWRD (TIV,0) ;;ADDRESS OF VECTOR OF INPUT ROUTINES CWRD (LFC,0) ;;LAST FORCED COMMAND INDEX FOR JOB IN COMCON ;EXEC DDT WORDS CWRD (DDT,) ;;NOOP OR INSTRUCTION TO ENTER EDDT ;; THIS WORD MAY BE EXECUTED ANYTIME ANY ;; ROUTINE WANTS TO ENTER EDDT VIA THE ;; THE UNSOLICITED BREAKPOINT FACILITY. ;; SETUP BY CPUDDT. ;;EXEC DATA VECTOR FOR EDDT SYMBOL TABLE HIDING CWRD (EDV,) ;;CODE,,LENGTH OF EXEC DATA VECTOR DEFINE HSBDEF< IFE FTXMON,<.C'N'SYB> IFN FTXMON,<0> > CWRD (ED1,) ;;ADDRESS OF THE ADDRESS SWAPPING BLOCK CWRD (ED2,0) ;;RELOCATED CONTENTS OF .JBSYM CWRD (ED3,0) ;;RELOCATED CONTENTS OF .JBUSY CWRD (ED4,<.C'N'HSF>) ;;ADDRESS OF A WORD FOR DDT TO PLAY WITH DEFINE KL, DEFINE KS, CWRD (ED5,) ;;CPU/PAGING/HARDWARE DATA CWRD (ED6,<.E'N'EPT>) ;;PHYSICAL ADDRESS OF THE EPT CWRD (ED7,) ;;PHYSICAL ADDRESS OF THE SPT CWRD (ED8,0) ;;PHYSICAL ADDRESS OF THE CST CWRD (ED9,) ;;PHYSICAL ADDRESS OF CPNDDT CWRD (EDA,<-M.CPU,,ASNTAB>) ;;AOBJN TO CPU SERIAL NUMBERS CWRD (EDB,.C'N'ACA) ;;PHYSICAL ADDR. OF VIRTUAL ADDR. OF CRASH ACS IFE ,<.XX==.C0EDV> IFG ,<.XX==.C'N'CDB+.CPLEN+<.C'N'EDV-.C'N'CDB>> CWRD (EDC,.XX) ;;VIRTUAL ADDR OF NEXT EDV IN RING CWRD (HSF,0) ;;DDT SCRATCH PAD IFE FTXMON,< CWRD (SYB,<1+4>) ;;# WORDS (INC THIS) IN HIDDEN SYMBOL BLOCK ;;FIRST SUB-BLOCK CWRD (SY1,) ;;(0) NUMBER OF WORDS TO SWAP CWRD (SY2,<.E'N'MAP+>) ;;(1) FIRST WORD TO SWAP CWRD (SY3,SYMBK1) ;;(2) PLACE WHERE NEW MAP MAY BE FOUND CWRD (SY4,SYMBK2) ;;(3) PLACE TO SAVE OLD CONTENTS ;;END OF FIRST SUB BLOCK >;; END IFE FTXMON CXPC (SPC,,PERISH##) ;;XPCW ENTRY TO DIE ;;STOPCODE OLD FLAGS & PC, NEW FLAGS & PC IFN M.KL10,< CWRD (TMI,TM'N'INT) ;;ADDRESS OF TIMER INTERRUPT ROUTINE >;; END IFN M.KL10 .CPCLN==.-.C0CDB ;;LENGTH OF CONSTANTS AREA ;;VARIABLES AREA FOR CPU0 (ALSO DEFINED SYMBOLS FOR CPU 1) ;;OLD NSWTBL GETTAB HAS SOME VARIABLES WHICH ARE SYSTEM RATHER THAN CPU ;;DEPENDENT. HOWEVER FOR COMPATIBILITY, THEY ARE KEPT TOGETHER. .SYTBL ;;HAS NEW SYSTEM VARIABLES DEFINED AFTER 5.03 RELEASE IFE N,< NSWTBL==:.-10 ;;GETTAB TABLE NO 12. VARIABLES PERTAINING ;; TO SWAPPING AND NON-SWAPPING SYSTEMS. ;; FIRST 10 LOCATION NO LONGER USED. ;;THE NUMBERS IN () ARE FOR NEW CPU DEPENDENT ;; GETTAB TABLE .GTC0V. > ;;END IFE N LOC==. ;;START LOC AT ABS. BEG OF VARIABLE AREA ;; LOC USED IN V MACRO AS A LOCATION COUNTER CWRD (VBG,,0) ;;BEGINING OF VARIABLE AREA ;;START OF SYSTEM VARIABLES CWRD (,,1,CORMAX) ;;(000) MAXIMUM CORE REQUEST+1 (IE LARGEST ;; RELATIVE ADDRESS + 1) ;; CAN BE RESTRICTED TO LESS THAN ALL ;; OF USER CORE BY BUILD AND/OR ONCE CWRD (,,1,CORLST) ;;(001) 1 BIT BYTE POINTER TO LAST FREE ;; BLOCK POSSIBLE CWRD (,,1,CORTAL) ;;(002) TOTAL NUMBER OF FREE+DORMANT+IDLE ;; CORE BLKS LEFT CWRD (,,1,SHFWAT) ;;(003) JOB NUMBER SHUFFLER HAS TEMPORARILY ;; STOPPED FOR ITS I/O DEVICES TO BECOME ;; INACTIVE BEFORE SHUFFLING CWRD (,0) ;;(004) OBSOLETE CWRD (UPT) ;;(005) UPTIME FOR THIS CPU CWRD (,,1,SHFWRD) ;;(006) TOTAL NUMBER OF WORDS SHUFFLED CWRD (,,1,STUSER) ;;(007) JOB CURRENTLY USING THE SYSTEM TAPE ;; NEEDED SO CONTROL C WILL NOT TIE UP ;; SYSTEM TAPE CWRD (,,1,HIGHJB) ;;(010) HIGHEST JOB NUMBER CURRENTLY ASSIGNED CWRD (,,1,CLRWRD) ;;(011) TOTAL NUMBER OF WORDS CLEARED BY ;; 'CLRCOR' ROUTINE CWRD (LST,,1,LSTWRD) ;;(012) LOST TIME ON THIS CPU. TOTAL NUMBER ;; OF CLOCK TICKS WHEN NULL JOB RAN BUT ;; OTHER JOBS WANTED TO RUN AND COULD NOT ;; DO SO BECAUSE: -- ;; 1. SWAPPED OUT OR ON WAY IN OR OUT ;; 2. MONITOR WAITING FOR I/O TO STOP SO ;; IT CAN SHUFFLE OR SWAP ;; 3. JOB BEING SWAPPED OUT BECAUSE IT IS ;; EXPANDING CORE CWRD (,,1,MEMSIZ) ;;(013) SIZE OF PHYSICAL MEMORY IN WORDS CWRD (TPE) ;;(014) TOTAL PARITY ERROR WORDS IN MEMORY ;; DETECTED ON DURING ALL CPU SWEEP WHILE ;; PROCESSOR WAS IN EXEC OR USER MODE. CWRD (SPE) ;;(015) TOTAL NON-REPRODUCING PARITY ERRORS ;; IN MEMORY. IE ONES WHICH DID NOT ;; REOCCUR WHEN SAME CPU SWEPT THRU CORE. CWRD (MPC) ;;(016) MEMORY PARITY CONTINUES ;; COUNT OF NUMBER OF TIMES OPERATOR ;; PUSHED CONTINUE AFTER SERIOUS MEMORY ;; PARITY HALT. LH = -1 IF SERIOUS ERROR ;; ON THIS BAD PARITY (MUST HALT) CWRD (MPA) ;;(017) FIRST BAD PHYSICAL MEMORY ADDRESS ;; FOUND WHEN MONITOR SWEPT THRU CORE ;; AFTER PROCESSOR DETECTED BAD PARITY CWRD (MPW) ;;(020) MEMORY PARITY WORD. CONTENTS OF FIRST ;; BAD WORD FOUND BY MONITOR WHEN MONITOR ;; SWEPT THRU CORE AFTER FIRST PARITY CWRD (MPP) ;;(021) PC OF LAST MEMORY PARITY NOT COUNTING ;; SWEEP THRU CORE CWRD (,,1,EPOCNT) ;;(022) NUMBER OF PDL OVERFLOWS AT UUO LEVEL ;; IN EXEC MODE NOT RECOVERED CWRD (,,1,EPOREC) ;;(023) NUMBER OF PDL OVERFLOWS AT UUO LEVEL ;; IN EXEC MODE RECOVERED CWRD (,,1,MAXMAX) ;;(024) HIGHEST LEGAL VALUE OF CORMAX CWRD (,,1,SYSKTM) ;;(025) KSYS COUNT-DOWN TIMER CWRD (,,1,CORMIN) ;;(026) LOWER BOUND ON CORMAX. LOKCON WILL ;; NEVER ALLOW CORMAX TO BECOME SMALLER ;; THAN THE CONTENTS OF THIS LOCATION CWRD (ABC) ;;(027) ADDRESS BREAK COUNT CWRD (ABA) ;;(030) ADDRESS BREAK ADDRESS CWRD (LJR) ;;(031) LAST JOB RUN ON THIS CPU. .CPJOB IS ;; COPIED TO .CPLJR WHENEVER JOB IS ;; CHANGED (INCLUDING TO NULL JOB) CWRD (ODA,,3) ;;(032) OBSOLETE CCON (NSWMXL,<<.-NSWTBL-1>B26>) ;;MAXIMUM NSWTBL ENTRY ;;NOTE: NO NEW ENTRIES MAY BE ADDED TO NSWTBL CWRD (STS) ;;(035) STOP TIME SHARING ON THIS CPU. ;; CONTAINS JOB NO. WHICH DID TRPSET UUO. CWRD (RUN) ;;(036) CPU SCHEDULING BITS (SEE .STRUN) CWRD (NUL) ;;(037) NULL TIME IN JIFFIES CWRD (EDI) ;;(040) NUMBER OF EXEC DON'T CARE INTERRUPTS. ;; IE USER ENABLED APR INTERRUPTS WHICH ;; MONITORS CAUSES (AOV,N,FOV). ;; LH = EXEC PC SO WE CAN FIX INEFFICIENT ;; CODE CWRD (JOB) ;;(041) CURRENT JOB ON THIS CPU. REFERENCED CWRD (OHT) ;;(042) OVERHEAD TIME IN JIFFIES CWRD (EVM) ;;(043) MAXIMUM AMOUNT OF EXEC VIRTUAL ;; ADDRESS SPACE ALLOWED TO BE USED FOR ;; MAPPING USER SEGMENTS IN EXEC MODE BY ;; THE LOCK UUO. CWRD (EVU) ;;(044) TOTAL AMOUNT OF EXEC VIRTUAL ADDRESS ;; SPACE CURRENTLY BEING USED TO MAP ;; USER SEGMENTS. CWRD (LLC) ;;(045) LOCK LOOP COUNT. NUMBER OF TIMES THE ;; CPU HAS LOOPED WAITING FOR OTHER CPUS CWRD (TUC) ;;(046) NUMBER. OF UUOS FROM EXEC AND USER ;; MODE SINCE SYSTEM WAS STARTED CWRD (TJC) ;;(047) NUMBER OF JOB CONTEXT-SWITCHES ;; COUNT FOR THIS CPU INCLUDING NULL JOB ;; NULL JOB SINCE SYSTEM WAS STARTED CWRD (TNE) ;;(050) TOTAL NXM'S THIS CPU CWRD (SNE) ;;(051) TOTAL NON-REPRODUCIBLE NXM'S THIS CPU CWRD (NJA) ;;(052) TOTAL JOBS CRASHED THIS NXM CWRD (MNA) ;;(053) FIRST ADDRESS FOUND WITH NXM CWRD (EBJ) ;;(054) EBOX TICKS/JIFFY (ONCE COMPUTED) CWRD (MBJ) ;;(055) MBOX TICK/JIFFY CWRD (PBA) ;;(056) PHYSICAL ADDR WITH BAD PARITY ON LAST ;; AR/ARX PARITY TRAP CWRD (TBD) ;;(057) CONTENTS OF BAD WORD ON LAST AR/ARX ;; PARITY TRAP CWRD (TGD) ;;(060) GOOD CONTENTS OF WORD AFTER RECOVERED ;; AR/ARX PARITY TRAP CWRD (NPT) ;;(061) TOTAL NUMBER OF AR/ARX PARITY TRAPS CWRD (AER) ;;(062) RDERA ON PARITY/NXM INTERRUPT CWRD (PEF) ;;(063) CONI APR, ON PARITY/NXM INTERRUPT CWRD (PSB,,4) ;;(064-067) OBSOLETE CWRD (PPC) ;;(070) PC ON LAST AR/ARX PARITY TRAP CWRD (PFW) ;;(071) PAGE FAIL WD ON LAST AR/ARX PARITY TRAP CWRD (HPT) ;;(072) NUMBER OF HARD AR/ARX PARITY TRAPS CWRD (SAR) ;;(073) NUMBER OF SOFT AR/ARX TRAPS CWRD (PTP) ;;(074) NUMBER OF PAGE TABLE PARITY TRAPS CWRD (CSN) ;;(075) NUMBER OF CACHE SWEEPS STARTED (CACHE ;; SWEEP SERIAL NUMBER) CWRD (CLN) ;;(076) NUMBER OF TIMES SCHEDULER SKIPPED OVER ;; A JOB BECAUSE CACHE SWEEP HAD TO BE ;; DONE FIRST CWRD (CLT) ;;(077) AMOUNT OF TIME IN JIFFIES THAT CPU RAN ;; NULL JOB BECAUSE OF STATE OF CACHE CWRD (CSD) ;;(100) CACHE - SWAPPER DELAY COUNT-INCREMENT ;; ON 1088 SYSTEMS IF SWAPPER HAS TO WAIT ;; FOR ANOTHER CPU TO SWEEP ITS CACHE ;; BEFORE IT CAN START I/O CWRD (CRN) ;;(101) CACHE SWEEP REQUEST SWEEP COUNT (SIC) ;; COMMANDING THIS VALUE TO .CPCSD+.CPCLN ;; (NUMBER OF SWEEP REQUESTS MADE) WILL ;; INDICATE TO WHAT EXTENT THE REQUEST ;; SCHEME IS A BOTTLENECK CWRD (CEC) ;;(102) COUNT OF NON-RECOVERABLE AR/ARX ;; PARITY ERRORS WHICH INVOLVED CACHE. ;; AFTER 3 SUCH FAILURES CACHE IS TURNED ;; OFF IN TRAP ROUTINE WITH APPROPRIATE ;; MESSAGE TO OPERATOR. CWRD (PTR) ;;(103) RETRY WORD FOR AR/ARX PARITY TRAP ;; ROUTINE. INCLUDES STATUS FLAGS IN LH ;; AND RETRY COUNT IN RH. CWRD (TSD) ;;(104) AR/ARX TRAP ROUTINE HAS ALREADY ;; SAVED APR/ERA/SB DIAGS ETC FOR ERROR ;; REPORTING. WON'T BE DONE AGAIN AT ;; APR INTERRUPT. CWRD (REP) ;;(105) USED BY PARITY/NXM RECOVERY ROUTINES ;; TO DETERMINE WHICH TYPE ERRORS SHOULD ;; BE LISTED. CWRD (NDB) ;;(106) NUMBER OF TIMES CPU'S DOORBELL WAS RUNG CWRD (SBR) ;;(107) CPU/DEVICE STATUS BLOCKS READ ;; LH = UNUSED ;; RH = BITS TELLING WHICH STATUS BLOCKS ;; HAVE BEENREAD ON THIS CPU. CWRD (BPF) ;;(110) BACKGROUND PERFORMANCE ANALYSIS FLAG ;; .LT. 0 IF METER ENABLED (SINCE COUNTED ;; UP AT CLOCK LEVEL ON EACH CPU. ;; PROGRAMS SHOULD CHECK FOR .LE. 0) CWRD (FBI) ;;(111) FILE BLOCKS INPUT (READ) CWRD (FBO) ;;(112) FILE BLOCKS OUTPUT (WRITTEN) CWRD (SBI) ;;(113) SWAPPING BLOCKS INPUT (READ) CWRD (SBO) ;;(114) SWAPPING BLOCKS OUTPUT (WRITTEN) CWRD (SNC) ;;(115) NUMBER OF CPU STOPCDS CWRD (SND) ;;(116) NUMBER OF DEBUG STOPCDS CWRD (SNJ) ;;(117) NUMBER OF JOB STOPCDS CWRD (SJN) ;;(120) JOB NUMBER OF LAST STOPCD CWRD (SNM) ;;(121) NAME OF LAST STOPCD CWRD (SPN) ;;(122) PROGRAM RUNNING AT LAST STOPCD CWRD (SPP) ;;(123) PPN RUNNING AT LAST STOPCD CWRD (STN) ;;(124) TTY NAME AT LAST STOPCD CWRD (SUP) ;;(125) USER PC AT TIME OF LAST STOPCD CWRD (SUU) ;;(126) UUO AT TIME OF LAST STOPCD CWRD (EJN) ;;(127) JOB NUMBER AT LAST PARITY/NXM ERROR CWRD (EPN) ;;(130) PROGRAM NAME AT LAST PARITY/NXM ERROR CWRD (PPI) ;;(131) CONI PI, ON PARITY/NXM INTERRUPT CWRD (TPI) ;;(132) CONI PI, ON PARITY/NXM TRAP CWRD (RSI) ;;(133) NUMBER OF TIMES SCHEDULER INTERLOCK WAS ;; REQUESTED WHEN NOT OWNED CWRD (TFI) ;;(134) NUMBER OF TAPE FRAMES READ CWRD (TFO) ;;(135) NUMBER OF TAPE FRAMES WRITTEN CWRD (SNI) ;;(136) NUMBER OF NODUMP STOPCDS CWRD (STY) ;;(137) TYPE OF LAST STOPCODE CWRD (SDT) ;;(140) UDT OF LAST STOPCODE ON THIS CPU CWRD (ITP) ;;INTERVAL TIMER PATCH INSTRUCTION CWRD (ITJ) ;;JOB WHICH PATCHED INTERVAL TIMER ;;********************************************************************** ;;PUT NEW PUBLISHED VARIABLES ABOVE HERE ;;********************************************************************** ;;PUT NEW PUBLISHED SUBTABLES BELOW HERE (SO LAST BUT STILL ;;********************************************************************** ;; INSIDE LEGAL RANGE OF VARIABLE GETTAB FOR THIS CDB ;;********************************************************************** ;;RESPONSE SUBTABLE, POINTED TO BY .CPRSP IFN FTRSP,< ;;INDICIES INTO 3 WORD BLOCKS: RSPAXR==:0 ;;ACCUMULATE SUM OF RESPONSE RSPNXR==:1 ;;NO. OF RESPONSES RSPHXR==:2 ;;SUM OF SQUARES OF RESPONSE(HIGH ORDER HALF) RSPLXR==:3 ;;SUM OF SQUARES OF RESPONSE(LOW ORDER HALF) CWRD (AOR) ;;(R00) ACCUMULATED TTY OUTPUT UUO RESPONSE. ;; NUMBER. OF JIFFIES USERS HAVE SPENT ;; FOR THEIR JOBS TO DO A TTY OUTPUT UUO ;; AFTER TYPING INPUT (COMMAND OR USER ;; TTY) CWRD (NOR) ;;(R01) NUMBER OF TTY OUTPUT UUO RESPONSES CWRD (HOR) ;;(R02) SUM OF SQUARES OF TTY OUTPUT UUO ;; RESPONSES - HIGH ORDER WORD CWRD (LOR) ;;(R03) SUM OF SQUARES OF TTY OUTPUT UUO ;; RESPONSES - LOW ORDER WORD CWRD (AIR) ;;(R04) ACCUMULATED TTY INPUT UUO RESPONSES. ;; NUMBER OF JIFFIES USERS SPENT WAITING ;; FOR THEIR JOBS TO DO A TTY INPUT UUO ;; AFTER TYPING INPUT (COMMAND OR USER ;; TTY) CWRD (NIR) ;;(R05) NUMBER OF TTY INPUT UUO RESPONSES CWRD (HIR) ;;(R06) SUM OF SQUARES OF TTY INPUT UUO ;; RESPONSES - HIGH ORDER WORD CWRD (LIR) ;;(R07) SUM OF SQUARES OF TTY INPUT UUO ;; RESPONSES - LOW ORDER WORD CWRD (ARR) ;;(R10) ACCUMULATED CPU QUANTUM REQUE RESPONSES ;; NUMBER OF JIFFIES USERS SPENT WAITING ;; FOR THEIR JOBS TO EXCEED CPU QUANTUM ;; AFTER TYPING INPUT (COMMAND OR USER ;; TTY) CWRD (NRR) ;;(R11) NUMBER OF CPU QUANTUM REQUEUE RESPONSES CWRD (HRR) ;;(R12) SUM OF SQUARES OF CPU QUANT. REQUEUE ;; RESPONSES - HIGH ORDER WORD CWRD (LRR) ;;(R13) SUM OF SQUARES OF CPU QUANT. REQUEUE ; RESPONSES - LOW ORDER WORD CWRD (AXR) ;;(R14) ACCUMULATED RESPONSE TERMINATED BY ;; FIRST OF ABOVE 3 EVENTS (TTY OUTPUT ;; UUO,N, TTY INPUT UUO, OR CPU QUANTUM ;; REQUE) CWRD (NXR) ;;(R15) NUMBER OF SUCH RESPONSES CWRD (HXR) ;;(R16) SUM OF SQUARES OF ANY OF ABOVE - HIGH ;; ORDER WORD CWRD (LXR) ;;(R17) SUM OF SQUARES OF ANY OF ABOVE - LOW ;; ORDER WORD CWRD (ACR) ;;(R20) ACCUMULATED CPU RESPONSE. NUMBER OF ;; JIFFIES USERS HAVE SPENT WAITING FOR ;; THIS CPU CWRD (NCR) ;;(R21) NUMBER OF CPU RESPONSES ON THIS CPU CWRD (SCR) ;;(R22) HIGH ORDER WORD OF SQUARE OF CPU ;; RESPONSES CWRD (SCL) ;;(R23) LOW ORDER WORD CWRD (FADL) ;;(R24) NUMBER OF FADL INSTRUCTIONS SIMULATED CWRD (FSBL) ;;(R25) NUMBER OF FSBL INSTRUCTIONS SIMULATED CWRD (FMPL) ;;(R26) NUMBER OF FMPL INSTRUCTIONS SIMULATED CWRD (FDVL) ;;(R27) NUMBER OF FDVL INSTRUCTIONS SIMULATED CWRD (UFA) ;;(R30) NUMBER OF UFA INSTRUCTIONS SIMULATED CWRD (DFN) ;;(R31) NUMBER OF DFN INSTRUCTIONS SIMULATED CWRD (NRI) ;;(R32) NUMBER OF CHARS (EXCLUDING MIC)RECEIVED CWRD (NXI) ;;(R33) NUMBER OF CHARS(INCLUDING FILL)XMITTED CWRD (NEI) ;;(R34) NUMBER OF CHARS ECHOED CCON (.CPRSL,<.-.C0AOR>) ;;SUBTABLE LENGTH > ;;END FTRSP ;;MORE MEMORY PARITY ANALYSIS SUBTABLE, POINTED TO BY .CPPAR CWRD (LPA) ;;(R00) LAST (HIGHEST) BAD MEM PARITY ADDRESS ;; ON LAST SWEEP OF MEMORY. USED TO TELL ;; OPERATOR RANGE OF BAD MEMORY CWRD (MPR) ;;(R01) RELATVE. ADDRESS (NOT VIRTUAL) IN HIGH ;; OR LOW SEG OF LAST MEMORY PARITY ERROR CWRD (PTS) ;;(R02) NUMBER OF PARITY ERROR THIS (LAST) ;; SWEEP OF CORE SET TO ZERO AT BEGNING ;; OF SWEEP CWRD (PSC) ;;(R03) NUMBER OF PARITY SWEEPS BY MONITOR CWRD (UEP) ;;(R04) NUMBER OF USER ENABLED PARITY ERRORS CWRD (PAA) ;;(R05) AND OF BAD ADDRESSES THIS (LAST) ;; MEMORY PARITY SWEEP CWRD (PAC) ;;(R06) AND OF BAD CONTENTS THIS (LAST) ;; MEMORY PARITY SWEEP CWRD (POA) ;;(R07) OR OF BAD ADDRESSES THIS (LAST) ;; MEMORY PARITY SWEEP CWRD (POC) ;;(R10) OR OF BAD CONTENTS THIS (LAST) ;; MEMORY PARITY SWEEP CWRD (PCS) ;;(R11) NUMBER OF SPURIOUS PARITY ERRORS (APR ;; SWEEP FOUND NO BAD PARITY BUT CHANNEL ;; HAD REQUESTED SWEEP RATHER THAN ;; PROCESSOR. THIS INDICATES A CHANNEL ;; MEMORY PORT PROBLEM. CWRD (MET) ;;(R12) MOS ERROR TIMER CWRD (MEC) ;;(R13) MOS ERROR COUNTER CWRD (TME) ;;(R14) TOTAL MOS ERRORS CCON (.CPPRL,<.-.C0LPA>) ;;SUBTABLE LENGTH ;;BAD ADDRESS SUBTABLE, POINTED TO BY .CPPAR CWRD (BAT,,M.CBAT) ;;(R00) TABLE OF BAD ADDRESSES ON LAST ;; MEMORY PARITY SWEEP. NOT CLEARED SO ;; NUMBER OF VALID ENTRIES KEPT IN .CPPTS ;;MEMORY NXM SUBTABLE, POINTED TO BY .CPNMT CWRD (LNA) ;;(R00) LAST NXM ADDRESS CWRD (MNR) ;;(R01) LAST NXM RELATIVE ADDRESS CWRD (NTS) ;;(R02) NUMBER OF NXM'S FOUND THIS SWEEP CWRD (NSC) ;;(R03) NUMBER OF NXM SWEEPS DONE CWRD (UEN) ;;(R04) NUMBER OF USER ENABLED NXM'S CWRD (NAA) ;;(R05) LOGICAL AND OF BAD ADDRESSES CWRD (NOA) ;;(R06) INCLOSIVE OR OF BAD ADDRESSES CWRD (NCS) ;;(R07) NUMBER OF SPURIOUS CHANNEL NXM'S CCON (.CPNML,<.-.C0LNA>) ;;SUBTABLE LENGTH ;KS10 SOFT MEMORY ERROR TABLE POINTED TO BY .CPMSS IFN M.KS10,< CWRD (SME) ;;(R00) NUMBER OF SOFT MEMORY ERRORS CWRD (SMS) ;;(R01) MEM STATUS REGISTER AT LAST SOFT ERROR CWRD (HME) ;;(R02) NUMBER OF HARD MEMORY ERRORS CWRD (HMS) ;;(R03) MEM STATUS REGISTER AT LAST HARD ERROR CWRD (SMC) ;;(R04) NUMBER OF SOFT ERRORS IN LAST MINUTE CWRD (MFL) ;;(R05) LAST MEMORY ERROR FLAG (0=SOFT, 1=HARD) CCON (.CPSML,<.-.C0SME>) ;;SUBTABLE LENGTH >;; END IFN M.KS10 ;APR STATUS SUBTABLE CWRD (APD,,1,VERSTS) ;;(R000) APRID CWRD (ACN,,1,APRSTS) ;;(R001) CONI APR, CWRD (PIC,,1,PISTS) ;;(R002) CONI PI, CWRD (PGD,,1,UPTSTS) ;;(R003) DATAI PAG, CCON (LENSTS,) ;;SUBTABLE LENGTH CWRD (PGC,,1,EPTSTS) ;;(R004) CONI PAG, CWRD (UP0,,4) ;;(R005-R010) UPT LOCS 424-427 CWRD (ERA,,1,ERASTS) ;;(R011) RDERA CWRD (RHC,,8) ;;(R012-R021) CONI RH20, FOR ALL RH20'S CWRD (DTC,,4) ;;(R022-R025) CONI DTEN, CWRD (EP0,,40) ;;(R026-R065) EPT LOCATIONS 0-37 CWRD (EP1,,40) ;;(R066-R125) EPT LOCATIONS 140-177 CWRD (UP1,,4) ;;(R126-R131) UPT LOCS 500-503 CWRD (6,,5) ;;(R132-R136) AC BLOCK 6 REGS 0-3 AND 12 CWRD (7,,3) ;;(R137-R141) AC BLOCK 7 REGS 0 THROUGH 2 IFN M.KL10,< ;;IN ADDITION TO BEING A PART OF THE CPU STATUS BLOCK SUBTABLE, THE ;;SBDIAG BLOCK IS A CDB SUBTABLE IN ITS OWN RIGHT. POINTER IS .CPSDP. CWRD (SBD,,50) ;;(R142-R211) SBDIAG DATA CCON (.CPSDL,<.-.C0SBD>) ;;SUBTABLE LENGTH > ;END IFN M.KL10 CCON (.CPCSL,<.-.C0APD>) ;;SUBTABLE LENGTH ;;DEVICE STATUS BLOCK ENTRY FOR DEVICES ON THIS CPU. THE ORDER OF THESE ;;ENTRIES MUST EXACTLY MATCH THE ORDER OF THE INSTRUCTIONS IN DVSXCT THAT ;;FILL THE ENTRIES. CWRD (DVS,,0) ;;START OF DEVICE STATUS SUBTABLE IFN M.KL10,< CWRD (TMR) CWRD (MTR) CWRD (TTY) CWRD (PRA) CWRD (PPA) CWRD (DLS) CWRD (DAC) CWRD (DAS) CWRD (CRA) CWRD (LPT) CWRD (PLA) CWRD (TMS) CWRD (TMC) CWRD (DX1) CWRD (DSK) CWRD (FH2) CWRD (FSD) CWRD (FS2) CWRD (FS3) CWRD (DPC) CWRD (DP2) CWRD (DP3) CWRD (DP4) CWRD (2DS) CWRD (2DC) CWRD (DLC) CWRD (DLB) CWRD (DC2) CWRD (DB2) CWRD (CDP) CWRD (CRB) CWRD (LPB) CWRD (LPC) CWRD (PLB) CWRD (DAK) CWRD (DDK) CWRD (DH2) CWRD (DFS) CWRD (DS2) CWRD (DS3) CWRD (DDP) CWRD (DD2) CWRD (DD3) CWRD (DD4) CWRD (DDC) CWRD (DDB) CWRD (D2C) CWRD (D2B) CWRD (IVI,,10) > ;;END IFN M.KL10 IFN M.KS10,< CWRD (TMR) CWRD (TMB,,2) CWRD (UB1) CWRD (UB3) CWRD (RH1,,2) CWRD (RH3,,2) CWRD (LPT,,2) CWRD (CDR) CWRD (PRA) CWRD (PPA) CWRD (RXA) > ;;END IFN M.KS10 CCON (.CPDVL,<.-.C0DVS>) ;;SUBTABLE LENGTH IFN M.KL10&FTRSP,< CWRD (BPV,,<>) ;;KL10 BACKGROUND PERFORMANCE NUMBERS ;; EACH ENTRY IS 4 WORDS LONG ;; 0'1 := RDTIME TOTAL ELAPSED TIME ;; 2'3 := TOTAL PERF METER COUNT > ;;END IFN M.KL10&FTRSP ;;*********************************************************************** ;;INSERT NEW SUB TABLES JUST ABOVE HERE - SO AT END OF VARIABLE TABLE ;;INSERT NEW VARIABLES A FEW PAGES BACK - SO NEXT TO OTHER VARIABLES ;;*********************************************************************** CCON (.CPPVL,<<.-.C0VBG>B26>) ;;PUBLISHED CPU DEPENDANT VARIABLE LENGTH ;;UNPUBLISHED CPU DEPENDENT VARIABLES: CWRD (ADR,,1,JOBADR) ;;XWD PROTECTION, RELOCATION FOR CURRENT ;; JOB SAME AS JBTADR(JOB) AND AC R CWRD (REL) ;;LH==0, RH CONTAINS CONTENTS OF PROTECTION ;; REGISTER LOW ORDER BITS==1777 (HIGHEST ;; RELATIVE LOC IN CURRENT USER AREA) CWRD (PC,,2) ;;JOB PC WHEN SCHEDULER IS CALLED XP USRPRT,JOBPRO XP USRPR1,,USRPRT+1 XP USRHCU,USRPRT XP USRPC,USRHCU+1 IFN FTMP,> XP USRDDT,USRPC+2 ;THIS DEPENDS ON JOBDDT-JOBPC=1 XP USRJDA,USRDDT+1 XP USRLO,USRJDA ;FIRST LOC CLEARED BY SETUSR ROUTINE ; ON A CALL RESET. - ALSO CLEARS USRHCU XP USRLO1,USRLO+1 ;FIRST LOC+1 XP USRHI,USRJDA+17 ;LAST LOC CLEARED BY SETUSR ROUTINE CWRD (XTM) ;;TIME OF LAST SWITCH FROM MONITOR CYCLE TO ;; OR VICE VERSA IN (SECONDS*RTCSEC) CWRD (QNT) ;;CURRENT QUANTUM RUN TIME. FORCE CPUTIM TO ;; WHEN NEGATIVE TO RECOMPUTE ACTUAL QUANTUM ;; RUN TIME LEFT CWRD (LS2) ;;ADDITIONAL LOST TIME, IN JIFFIES*RTCSEC ;; BEYOND LAST JIFFY CWRD (NL2) ;;ADDITIONAL NULL TIME, IN JIFFIES*RTCSEC ;; BEYOND LAST JIFFY CWRD (OH2) ;;ADDITIONAL OVERHEAD TIME, IN JIFFIES*RTCSEC ;; BEYOND LAST JIFFY CWRD (TNT) ;;TIME INTERVAL (TICKS)SINCE LAST @ CLOCK LEVEL CWRD (HTM) ;;HUNG DEVICE TIME CHECK FOR HUNG IO CWRD (SEC) ;;NUMBER OF SECONDS LEFT BEFORE DOING ONCE A ;; MINUTE CODE IFN FTRTTRP,< CWRD (RCU,,6) ;;COUNT OF REAL TIME CONSO'S ON SKIP CHAIN CWRD (RIT,,6) ;;REAL TIME INITIALIZATION TABLE CWRD (DMI) ;;REAL TIME DISMISS INSTRUCTION FOR CURRENT ;; INTERRUPT > ;;END IFN FTRTTRP ;SCHEDULER FLAGS: CWRD (CKF,,1,CLKFLG) ;;;NON-ZERO WHEN CLK INTERRUPT (PI7) REQUESTED ;; FOR ANY REASON CWRD (TMF,,1,TIMEF) ;;NON-ZERO WHEN APR CLOCK TICKED ON THIS CPU. ;; SET SO CLOCK INTERRUPT ROUTINES WILL KNOW ;; ANOTHER JIFFY HAS PASTED. SET BY APRINT, ;; TESTED AND CLEARED BY CLKINT MODULE. CWRD (SCF) ;;NON-ZERO AS A FLAG TO CLK ROUTINE TO FORCE ;; RESCHEDULING, ON THIS CPU, EVEN THOUGH ;; ITS CURRENT JOB IS IN EXEC MODE. CAN HAPPEN ;; ON MONITOR DETECTED ERRORS. CWRD (CHT) ;;CLOCK HAS TICKED, START QUEUED I/O. CWRD (RTF,,1,SCDRTF) ;;NON-ZERO ON REAL TIME RESCHEDULE REQUIRED ;; REALLY A SYSTEM VARIABLE CWRD (ISF) ;;NON-ZERO IF IN THE SCHEDULAR OR WHEN IN ;; COMCON CONTAINS THE STACK POINTER JUST ;; BEFORE COMMAND DISPATCH CWRD (SUD) ;;SCAN USED FOR THIS SCHEDULING SCAN IFN FTHPQ!FTNSCHED,< CWRD (HQU) ;;NON-ZERO IF CURRENT JOB ON THIS CPU DID A ;; HPQ UUO TO FORCE RESCHEDULING TO THE NEW HPQ > ;;END IFN FTHPQ!FTNSCHED CWRD (PLT) ;;POTENTIALLY LOST (WASTED) CLOCK TICK ON ;; THIS CPU IF NON-ZERO. NON-ZERO WHEN ;; SCHEDULER SEES THAT THERE ARE JOBS WHICH ARE ;; POTENTIALLY RUNABLE ON THIS CPU BUT HAS TO ;; RUN NULL JOB. ZERO WHEN IT FINDS A REAL ;; JOB TO RUN OR NULL JOB IS ONLY JOB WHICH ;; WANTS TO RUN ON THIS CPU. IFN FTKL10,< IFN FTMP,< CWRD (CLF) ;;POTENTIAL CACHE LOST TIME FLAG (SEE .CPCLN) CWRD (CL2) ;;LOW ORDER CACHE LOST TIME IN RTUPS UNITS CWRD (SDA) ;;NUMBER OF TIMES CACHE WAS SWEPT BECAUSE OF ;; CORE DEALLOCATION > ;;END IFN FTMP CWRD (CSR) ;;CACHE SWEEP REQUEST FLAG IF .GE. CURRENT ;; SWEEP SERIAL NUMBER, MUST SWEEP AT CH7 ;; LEVEL FOR ANOTHER CPU CWRD (CSW) ;;SWEEP SERIAL NUMBER TO WAIT FOR > ;;END IFN FTKL10 CWRD (AEF) ;;APR ERROR FLAG ON THIS CPU. CONTAINS APR ;; CONI IF NULL JOB WAS CURRENT JOB ON THIS ;; CPU WHEN APR ERROR OCCURRED SO COULD NOT ;; STORE IN JOB DATA AREA. ;; LEFT HALF USED FOR MEMORY PARITY CONTROL ;; TO REQUEST PARITY SWEEPS AND PRINTING. CWRD (SAC) ;;SAVED COPY OF .CPAEF CWRD (APC,,2) ;;APR ERROR PC ON THIS CPU WHEN ERROR WHILE ;; NULL JOB WAS CURRENT JOB ON THIS CPU. CWRD (MDP,,2) ;;MEMORY PARITY ERROR DOUBLE WORD PC CWRD (PPD,,2) ;;AR/ARX TRAP DOUBLE WORD PC CWRD (NJE) ;;ERROR IN NULL JOB HAS OCCURRED IF NON-ZERO CWRD (SFC) ;;SCHEDULER FAIRNESS COUNT. COUNT OF THE NUMBER ;; OF SCANS OF THE PRIMARY SCAN TABLE WITHOUT ;; GETTING TO THE LOWER QUEUES IN THE TABLE. CWRD (SQF) ;;NON-ZERO IF CURRENT JOB WAS TAKEN FROM ;; SUBQUEUES CWRD (APR) ;;CONI APR INTO THIS LOCATION TO READ THE ;; STATE OF MI PROG DIS SWITCH IFN M.KL10,< CWRD (IPI) ;;INTERVAL TIMER PI ASSIGNMENT CWRD (DTT) ;;MINUTES TILL NEXT SEND DATE/TIME TO -20F CWRD (EPW,,4) ;;SAVED DTE EXAMINE/PROTECTION WORD ;;EXEC MODE ADDRESS BREAK SCRATCH PATCH STORAGE CWRD (ABF) ;;FLAGS (STOPCODE TYPE + CPU MASK) CWRD (ABI) ;;INSTRUCTION TO XCT CWRD (ABW) ;;ADDRESS BREAK WORD (CONDITIONS + ADDRESS) CWRD (ABS,,S$MAXL) ;;STOPCODE > ;;END IFN M.KL10 ;PROCESSOR DEPENDENT VARIABLES FOR APR INTERRUPTS CWRD (CN1) ;;CONTAINS CONSO MASK FOR APR INTERRUPTS, CWRD (HRP) ;;LAST DATAO OUT TO SET HARDWARE RELOCATION ;; AND PROTECTION FOR THIS CPU. CWRD (SP,,2) ;;PLACE TO SAVE P ON APR INTERRUPT CWRD (S17,,2) ;;PLACE TO SAVE AC 17 ON CLK INTERRUPT ;MEMORY PARITY ANALYSIS VARIABLES CWRD (A00,,17) ;;FIRST WORD TO STORE AC0 ON PARITY SWEEP ON ;; APR PI CWRD (A17) ;;LAST WORD TO STORE AC17 ON PARITY SWEEP AT ;; APR PI CWRD (LPP) ;;LAST MEM PARITY PC USED TO DETECT PI DISMISS ;; LOOPS CWRD (LSB) ;;LAST SEG (HI OR LOW) WHICH IS (WAS) BLTED ;; USED TO DETECT BAD PARITY DURING BLT CWRD (LCI) ;;TIME OF LAST PAR/NXM INTERRUPT CAUSED BY A ;; CHANNEL REFERENCE CWRD (PIP) ;;POINTER TO REAL INTERRUPT PC CWRD (PSP) ;;PARITY/NXM SWEEP IN PROGRESS CWRD (CHE) ;;CHANNEL ERROR REPORTING IN PROGRESS CWRD (TCX) ;;DATAI PAG, ON ERROR TRAP CWRD (PFT) ;;PRE-EMPTIVE PAGE FAULT HANDLER (SEE SEILM) IFN M.KL10,< CWRD (TCT) ;;TRIAD COUNTER FOR 60HZ LEAP JIFFIES CWRD (PJB) ;;JOB WHO OWNS PERFORMANCE METER (ZERO IF FREE) CWRD (MJB) ;;MEASURED JOB (JOB ENABLE OF PERF. UUO) ;; -2 = NULL JOB, 0 = DON'T CARE CWRD (MJ1) ;;JOB ENABLE CONDITION SET ONLY WHEN METER ;; IS RUNNING. (SEE APRSER) CWRD (PMR) ;;NONZERO MEANS PERFORMANCE METER IS RUNNING CWRD (PAE) ;;USED TO STORE PERFORMANCE ANALYSIS ENABLES CWRD (PRQ) ;;SEMAPHORE USED TO TEST/GIVE METER AWAY CWRD (APS) ;;NON ZERO MEANS ACCOUNTING AND PERFORMANCE ;; METERS SHOULD BE KEPT IN SYNC CWRD (MM0) ;;"VIRTUAL PERFORMANCE METER" HIGH ORDER ;; MEMORY REFERENCE COUNT CWRD (MM1) ;;"VIRTUAL PERFORMACE METER" LOW ORDER ;; MEMORY REFERENCE COUNT CWRD (BPC) ;;BACKGROUND PERF ANAL SAMPLE INTERVAL (TICKS) CWRD (BPI) ;;B.P.A. SAVED PACTAB INDEX CWRD (BPT,,2) ;;B.P.A. SAVED RDTIME AT START OF SAMPLE CWRD (TIM) ;;CLOCK INTERRUPT FLAG CWRD (KPB,,</4>) ;;KLINIK PARAMETER BUFFER CWRD (20F) ;;LH = FLAGS ABOUT RSX-20F FRONT END ;;RH = COUNT OF CHARACTERS CURRENTLY BEING ;; OUTPUT CWRD (20S,,2) ;;SPACE FOR INCOMING LINE SPEEDS CWRD (20B,,</4>) ;;BUFFER FOR 16BIT DATA TO 20F CWRD (20D) ;;CHAIN OF DEVICE STATUS MESSAGES ;;LOCATIONS USED BY CPU HARDWARE ERROR RECOVERY CWRD (PTH) ;;AR/ARX TRAP HAPPENED DURING PARITY SWEEP CWRD (STE) ;;ERA CONTENTS ON SWEEP TRAP CWRD (PTF) ;;COUNT OF PAGE TABLE PARITY TRAPS BETWEEN ;; CLOCK TICKS USED TO CRASH SYSTEM IF TOO HIGH CWRD (IOP) ;;API FUNCTION WORD ON I/O PAGE FAIL INTERRUPT CWRD (IPG) ;;DATAI PAG, ON I/O PAGE FAIL INTERRUPT CWRD (73) ;;CONTENTS OF AC BLOCK 7, AC 3 (IOP FNC WORD) CWRD (CA1,,20) ;;POWER FAIL AC BLOCK SAVE AREA, ALSO AC BLOCK ;; 1 ON A CRASH CWRD (CA2,,20) ;;AC BLOCK 2 CWRD (CA3,,20) ;;AC BLOCK 3 CWRD (CA4,,20) ;;AC BLOCK 4 > ;;END IFN M.KL10 CWRD (RTM,,2) ;;RDTIME VALUE AT LAST TIMER INTERRUPT IFN M.KS10,< CWRD (TCT) ;;TRIAD COUNTER FOR 60HZ LEAP JIFFIES CWRD (TIM) ;;CLOCK INTERRUPT FLAG FOR KS10S CWRD (PTH) ;;HARD PARITY TRAP HAPPENED DURING PARITY SWEEP CWRD (PTF) ;;COUNT OF PAGE TABLE PARITY TRAPS BETWEEN ;; CLOCK TICKS USED TO CRASH SYSTEM IF TOO HIGH CWRD (LMC) ;;LEAP MILLISECOND COUNT FOR 4.1 MHZ CLOCK RATE CWRD (CA1,,20) ;;POWER FAIL AC BLOCK SAVE AREA, ALSO AC BLOCK ; 1 ON A CRASH CWRD (CA2,,20) ;;AC BLOCK 2 CWRD (CA3,,20) ;;AC BLOCK 3 CWRD (CA4,,20) ;;AC BLOCK 4 > ;;END IFN M.KS10 CWRD (CTQ,,2) ;;SCNSER OUTPUT QUEUE HEADER FOR CTY AND ;; RSX-20F LINES CWRD (SWP) ;;NON-0 IF SWAP REQUEST TO BE CHECKED FOR AT ;; CLOCK LEVEL IFN FTMP,< CWRD (QUE) ;;QUEUE FOR IO REGS ON OTHER CPUS EMPTIED INTO ;; CPUDSQ ONCE A TICK CWRD (QND) ;;END OF QUEUE ABOVE CWRD (SWD) ;;FLAG FOR FILIO CACHE SWEEPS CWRD (DRQ) ;;DISKS ON CPU NEED RECUING CWRD (TAP) ;;0 IF NO TAPE IO WAITING FOR SWEEP ;;-1 IF TAPE IO WAITING, NEEDS SWEEP ;;0,,-1 IF TAPE WAITING, DSKTIC DID SWEEP > ;;END IFN FTMP IFN M.KL10,< CWRD (PIB) ;;SAVE PI STATE FOR NBFOFF > ;;END IFN M.KL10 CWRD (PIS) ;;SAVE PI STATE FOR SYSPIN CWRD (DPI) ;;SAVE PI STATE FOR DEVPIN CWRD (BTI) ;;SAVE PI STATE FOR BTSOFF CWRD (SCI) ;;SAVE PI STATE FOR SCNOFF CWRD (NTI) ;;SAVE PI STATE FOR NETOFF CWRD (DBI) ;;SAVE PI STATE FOR DDBSRL CWRD (IUT) ;;UPTIME A SECOND AGO IFN FTNET,< CWRD (NTF) ;;DEFINE THE ONE SOFTWARE INTERRUPT FLAG > ;;END IFN FTNET IFN M.EQDQ,< QDBLEN==:23 ;;LENGTH OF QUESER DATABASE CWRD (QTS,,QDBLEN) ;;QUESER VARIABLES > ;;END IFN M.EQDQ CWRD (CPG) ;;DATAI PAG, DONE BY SVSETS WITH BITS ;;SET SO THAT DATAO WILL RESTORE CURRENT AC CWRD (ACA) ;; SET ADDRESS OF 20 WORD BLOCK IN WHICH ;; SVSETS SAVED THE CURRENT AC SET CWRD (KPM) ;;CONTAINS PM.KPM IF CPU HAS AN MCA25 INSTALLED CWRD (PMV) ;;NON-ZERO IF MICROCODE SUPPORTS PHYSICAL ;; MOVE/MOVEM INSTRUCTIONS CWRD (JCH) ;;JOB/CONTEXT HANDLE FOR JOB ON THIS CPU CWRD (CXJ) ;;JOB OWNING CX ON THIS CPU IFN M.KL10,< CWRD (DSN,,<<^D<8*2>+4>/4>) ;;;CONSOLE FRONT-END DISK DRIVE SERIAL NUMBERS > ;;END IFN M.KL10 CWRD (EMU,,2) ;;+0 = PDL FOR CALLING DIE ;;+1 = SAVED P BEFORE CALLING DIE IFN FTPATT,< CWRD (PAT,,10) ;;PATCH SPACE > ;;END IFN FTPATT ;;********************************************************************** ;;PUT NEW UNPUBLISHED VARIABLES ABOVE HERE ;;********************************************************************** .C'N'END==:. ;;BEGINNING OF SPECIAL PER-CPU MAPPINGS. THESE VIRTUAL ADDRESSES APPEAR IN ;; SECTION 37 AND MUST BE LOCATED CORRESPONDING TO THEIR VIRTUAL ADDRESSES. ;; ADD NEW MAPPINGS ABOVE THIS ADJUSTING THE LOC STATEMENTS APPROPRIATELY. IFN FTXMON,< IFG <<.&PG.BDY> - MMAPS/PAGSIZ>,&777000> LOC .&777000 + MMAPS/PAGSIZ CWRD (MMA,,) ;;MAP SLOTS FOR ALL MONITOR SECTION MAPS > ;;END IFN FTXMON IFG <<.&PG.BDY> - UMAPS/PAGSIZ>,&777000> LOC .&777000 + UMAPS/PAGSIZ CWRD (UMA,,) ;;MAP SLOTS FOR ALL USER SECTION MAPS > ;END OF CDB MACRO IFN XPANDN, ZZZ==0 LOC <.+PG.BDY>&777000 REPEAT M.CPU,< CDB(\ZZZ) LOC <.+PG.BDY>&777000 IFE ZZZ,<.CPLEN==:.-.C0CDB> ;LENGTH OF CDB ZZZ==ZZZ+1 >; END REPEAT M.CPU .C0EVA==:.C0CDB+.CPLEN ;END OF CPU 0 VARIABLE AREA CDBPGS==:.CPLEN/PAGSIZ ;LENGTH OF CDB IN PAGES .EVCDB==:>-.CPLEN ;EXEC VIRTUAL ADDRESS OF CDB HLCSAD==:.EVCDB ;HIGHEST LEGAL CODE SECTION ADDRESS +1 $LIT ;ANY LITERALS IN CDB CAN GET CACHED IN HIGH SEG $ABS ;BACK TO ABS CODE LOC <.+PG.BDY>&777000 ;NOW GENERATE REFERENCES FOR GETTAB TABLES 55 THRU 70 ;WILL GENERATE A ZERO WORD FOR INDIRECT REFERENCES TO NON EXISTANT CDB'S DEFINE CPUGTB(A,B)< IFG , IFLE ,> ZZ==0 REPEAT 6,< CPUGTB(ZZ,\ZZ) ZZ==ZZ+1 > IFN FTNSCHED,< ;TABLES INDEXED BY CLASS NUMBER CLSSTS::BLOCK M.CLSN ;BITS IN LH, QUOTA (NUMBER FROM 0 TO 100) IN RH CLSQTA::BLOCK M.CLSN ;COMPUTED QUOTA IN JIFFIES, FIGURED OUT ;FROM CLSSTS, RECOMPUTED AT THE ;BEGINNING OF EVERY SCHEDULING INTERVAL. ;DECREMENTED WHENEVER A CLASS USES A JIFFY ;OF RUNTIME. CLSRTM::BLOCK M.CLSN ;RUNTIME FOR CLASSES SINCE ANY CHANGE IN CLSSTS ;MINUS ANY TIME LEFT OVER AFTER ALL QUOTAS ;WERE SATISFIED WITHIN AN INTERVAL CLSMXL==:B26 ;MAXIMUM LENGTH OF PER CLASS TABLES FOR GETTAB >;END IFN FTNSCHED SUBTTL MONITOR TABLES WITH ONE ENTRY PER JOB JOBMAX==:JOBN-1 ;MAXIMUM LEGAL JOB NUMBER JOBMXL==:B26 ;HIGHEST JOB NUMBERSHIFTED LEFT 9 (FOR GETTAB UUO) MJOBN==:-JOBN ;NEGATIVE NUMBERS OF JOBS (COUNTING NULL JOB) JBTMAX==:JOBN+SEGN-1 ;HIGHEST INDEX IN JBT TABLES MJBTMX==:-JBTMAX ;MINUS JBTMAX FOR AOBJN POINTER JBTMXL==:B26 ;HIGHEST JBT ENTRY SHIFTED LEFT 9 (FOR GETTAB UUO) JBTSTS::BLOCK JOBN+SEGN ;JOB AND HIGH SEG STATUS WORD ;THIS IS DOCEMENTED AS GETTAB TABLE NUMBER 0 ;LH==STATUS BITS (SEE S.MAC FOR DESCRIPTION) ;BITS 18-23=EXTENDED JOB STATUS BITS JBSSPR==^D9 ;SIZE OF ACCES PRIV FOR HIGH SEG JBNSPR==^D17 ;BYTE PTR. POS. ;RH=IN CORE COUNT FOR HIGH SEGS JBTVAD:: ;VIRTUAL ADDRESS FOR HIGH SEG TABLE JBTST2::BLOCK JOBN+SEGN ;SECOND WORD OF JOB STATUS. USED BY SCHEDULER ; AND EVENT WAIT INFO IFN M.KL10*,<;IF KL10 SYSTEM WITH MORE THAN ONE CPU JBTST3::BLOCK JOBN ;18-35 = CPU DATA BLOCK ADDR OF LAST ; CPU JOB RAN ON. CLEARED WHEN ; JOB GIVES UP ALL PHYSICAL CORE, OR ; DOES RUN, GET, ETC. JBTCSN::BLOCK JOBN ;36 BIT SWEEP SERIAL NUMBER, TAKEN FROM ; CPU WHOSE CDB ADDRESS IS IN JBTST3 >;END IFN M.KL10* IFN FTNSCHED,< JBTSCD::BLOCK JOBN ;SCHEDULER WORD CONTAINING EACH JOB'S ;CLASS AND TYPE. >;END IFN FTNSCHED JBTSPS::IFG ,< ;MULTI-PROCESSING SYSTEM? BLOCK JOBN ;SECOND PROCESSOR STATUS BITS BOTH HALVES (PREFIX=.SP) ;RH=GETTAB BITS FOR 6 CPU'S. ;LH=UNPUBLISHED BITS ;SEE S.MAC FOR DEFINITIONS. XP ITMSPS,JOBMXL ;LH SYMBOL FOR GETTAB UUO > IFLE ,< ;SINGLE-PROCESSOR SYSTEM? 0 ;DUMMY ENTRY XP ITMSPS,0 ;DON'T ALLOW ANY REFERENCE IF NOT 2 CPU SYSTEM > JBTADR::BLOCK JOBN+SEGN ;JOB AND HIGH SEG CORE ASSIGNMENT ; LH==PROTECTION (LENGTH-1) ; RH==RELOCATION (ABSOLUTE LOCATION IN CORE) ; DURING BLT OF LOW OR HIGH SEG, THIS WORD ; CONTAINS THE SOURCE RELOCATION ;THIS IS DOCUMENTED AS GETTAB TABLE NUMBER 1 JBTCCC::BLOCK JOBN ;NON-CONTROL-C COUNT (NEGATIVECOUNT OF USERS ;WHO DON'T WANT USER TO GET OUT) (LH) JBTSWI:: JBTSGN::IFG SEGN, < BLOCK JOBN+SEGN ;RH=SEGMENT NUMBER OF HIGH SEGMENT THIS JOB ; IS USING IN CORE OR ON DISK ; 0 MEANS JOB DOES NOT HAVE HIGH SEG ;LH=USER DEPENDENT HIGH SEG STATUS BITS (SEE S.MAC) ;THIS IS DOCUMENTED AS GETTAB TABLE NUMBER 14 ;INDEXED BY HIGH SEGMENT NUMBER THE TABLE (JBTSWI) ; CONTAINS THE LOW SEGMENT NUMBER OF THE SEGMENT ; WHICH THIS HIGH SEGMENT IS BEING SWAPPED IN FOR > IFE SEGN, < 0 ;SINGLE-ENTRY NULL JBTSGN TABLE.... XP ITMSGN,JOBMXL ;LH SYMBOL FOR GETTAB UUO SO THAT JBTSGN IS ; UNDEFINED, I.E., MAKE INDEXING BY J BE 0, BUT ; ALLOW REFERENCES UP TO JOBMXL. > JBTPPN:: ;HIGH SEGMENT DIRECTORY NAME IF , 0 IF DTA,MTA JBTPPN::BLOCK JOBN+SEGN ;XWD PROJECT NUMBER, PROGRAMMER NUMBER ;THIS IS DOCUMENTED AT GETTAB TABLE NUMBER 2 IFG SEGN, < ;REENTRANT MONITOR CAPABILITY? JBTDEV==:.-JOBN ;JUST HIGH HALF (NO ENTRIES FOR LOW SEGS) BLOCK SEGN ;HIGH SEGMENT PHYSICAL DEVICE NAME ; OR FILE STRUCTURE NUMBER(DSKA,DSKB,DTAN,MTAN) > IFE SEGN,< JBTDEV==:JBTSGN-JOBN ;USE THE DUMMY ENTRY IN JBTSGN XP ITMDEV,JBTMXL ;LH SYMBOL FOR GETTAB UUO SO THAT JBTDEV IS ;UNDEFINED, IE. MAKE INDEXING BYITEM BE 0 > IFN SEGN,< ; JBTIDT==:.-JOBN ;MAKE FIRST HIGHSEG NUMBER POINT TO TABLE BLOCK SEGN ;STORAGE FOR TIME SEGMENT LAST WENT DORMANT/IDLE > ; JBTVIR::BLOCK JOBN ;JOB'S VIRTUAL SIZE (SEE LOVSIZ/HIVSIZ) SWPLST::BLOCK JOBN+SEGN SW2LST::BLOCK JOBN+SEGN ;PARALLEL SWPLST TABLE FOR USE BY FILSER SW3LST::BLOCK JOBN+SEGN ;PARALLEL SWPLST TABLE FOR ADDITIONAL INFO ; LH=C(SWPOUT) FOR SCHED1, RH=JOB NUMBER JBTSWP::BLOCK JOBN+SEGN ; DISK ADDRESS WHILE SWAPPED OUT ;BIT 0=1 IF SEGMENT IS FRAGMENTED ;BITS 1-35 DISK ADDRESS IF NOT FRAGMENTED ;FOR LEVEL D, ; BITS 2-4=INDEX OF UNIT IN SWPTAB (JBYSUN) ; BITS 5-17=1ST LOGICAL K ON UNIT (JBYLKN) ; BITS 18-35 CORE ADR OF FRAGMENT TABLE IF FRAGMENTED JBTIMI::BLOCK JOBN+SEGN ;IMAGE-IN SIZE (SEE IMGIN; SEE ALSO NZS?CN) JBTIMO::BLOCK JOBN+SEGN ;IMAGE-OUT SIZE (SEE IMGOUT) JBTCHK::BLOCK JOBN+SEGN ;CHECK SUM FOR SWAPPED OUT JOB DATA AREA OR ; SAME AREA FOR HIGH SEG JBTNAM:: ;NAME OF HIGH SEGMENT (FILE IT WAS INITIALIZED FROM) JBTPRG::BLOCK JOBN+SEGN ;NAME OF FILE USED IN LAST R,RUN,GET, ETC ; USED BY SYSTAT PROGRAM, AND AS DEFAULT FOR ; THESE COMMANDS JBTWCH::BLOCK JOBN ;BITS 1-5 = ENABLE BITS - SEE S.MAC ;BITS 13-35 = TIME OF DAY IN JIFFIES USER ;STARTED TO WAIT FOR RESPONSE FROM SYSTEM ;REST UNUSED IFN FTRSP,< ;USER TTY INPUT RESPONSE TIMES JBTRSP::BLOCK JOBN ;UP TIME AT WHICH USER BEGAN TO WAIT ; FOR SYSTEM RESPONSE. ; SET WHEN USER JOB COMES OUT OF TTY INPUT WAIT ; OR TYPES A COMMAND WHICH RUNS A JOB. ;HIGH ORDER BITS SET TO 0 WHEN USER STARTS TO WAIT ; SET TO ONE AS EACH OF SEVERAL TYPES OF RESPONSE ; TERMINATION CONDITIONS OCCUR. ; SEE S.MAC FOR BITS OF FORM JR.R?? ; SEE CPU DATA BLOCK (ACR, ADR, AIR, ARR, AXR) ; FOR DESCRIPTION OF TYPES OF RESPONSES GATHERED JBTRQT::BLOCK JOBN ;'RUN QUEUE TIME' ACCUM. TIME (JIFFIES) THAT JOB ; HAS SPENT IN ONE OF THE RUN QUEUES (INCLUDING SWAPPED) > JBTSPL::BLOCK JOBN ;LH=INPUT FILE NAME COUNTER ;BITS 27-35 - WHAT DEVICES BEING SPOOLED ; (SEE S.MAC FOR DEF'NS) ;BITS 24-26 = DSK PRIORITY FOR JOB ; (SEE JBXPRI IN COMMOD) JBTLIM::BLOCK JOBN ;TIME LIMIT, ETC. FOR JOB ; (SEE S.MAC FOR LAYOUT) JBTPDB::BLOCK JOBN ;ADDRESS OF PDB JBTPC:: BLOCK JOBN ;USER MODE PC JBTCLM:: ;LH=CORE LIMIT (FORMERLY IN JBTLIM) JBTDDB::BLOCK JOBN ;RH=DDB JOB IS IN I/O WAIT FOR JBTDAU::BLOCK JOBN ;LH=UDB FOR WHICH JOB OWNS DA ;RH=PPB FOR WHICH JOB OWNS AU IFG SEGN,< ;REENTRANT MONITOR CAPABILITY? JBTSHR==:.-JOBN ;JUST HIGH HALF (NO ENTRIES FOR LOW SEGS) BLOCK SEGN ;HIGH SEGMENT TOTAL SHARER COUNT > IFE SEGN,< JBTSHR==:JBTSGN-JOBN ;USE THE DUMMY ENTRY IN JBTSGN XP ITMSHR,JBTMXL ;LH SYMBOL FOR GETTAB UUO SO THAT JBTSHR IS ;UNDEFINED, IE. MAKE INDEXING BYITEM BE 0 > JBTIPC:: ;RH=JCH WHOM WE WANT IPCF INTERLOCK FOR JBTDTC::BLOCK JOBN ;LH=MASTER DECTAPE DDB JOB WANTS IFN M.CTX,< JBTCX::BLOCK JOBN ;LH=JOB # WHOSE CX RESOURCE OWNED BY INDEX ;RH=JOB # WHO OWNS CX RESOURCE OF INDEX > ;END IFN M.CTX JBTLOC::BLOCK JOBN ;JOB LOCATION TABLE ;JBTLOC+0 IS CENTRAL SITE STATION NUMBER IFN M.PSI,< JBTPIA::BLOCK JOBN ;LH HOLDS FLAGS (BITS 13-17 =0) ;RH IS POINTER TO PROGRAM INTERRUPT ; TABLE. > IFE M.PSI,< XP JBTPIA,777000 ;CAUSE NXM IF REFERENCED > JBTJLT::BLOCK JOBN ;JOB "LOGIN" TIME IN INTERNAL FORMAT JBTHSA:: ;FOR HIGH SEGS, PTR TO FIRST PAGE JBTAD2::BLOCK JOBN+SEGN ;BIT 0 FREE ;BITS 1-21 DISK ADDR OF S0 MAP FOR JOB ;BITS 22-35 PHYSICAL PAGE ZERO OF JOBS LOW SEG JBTJRQ::BLOCK JOBN ;LINKED LIST OF JOBS WAITING FOR REQUEUE JBTPRV::BLOCK JOBN ;PRIVILEGE BITS FOR JOB SET BY LOGIN ;THE FOLLOWING ARE USED TO CREATE MXQUE ;THE MAXIMUM QUEUE SIZE, USED BY SWAPPING SCHEDULER (SCHED) XP MXQUE,0 DEFINE X QUEUES RWAITS DEFINE X (A) CODES MXQUE==MXQUE+3 ;LEAVE SPACE FOR PQ1,PQ2, AND CMMQ IFG M.HPQ, ;LEAVE SPACE FOR HIGH PRIORITY QUEUES XP MXQUE2,<2*MXQUE> BLOCK MXQUE2 ;NUMBER OF QUEUES FOR SWAPPING SCHEDULER QQQMXL==:B26 ;NUMBER QUEUES FOR GETTAB JBTCQ:: BLOCK JOBN ;ONE ENTRY PER JOB, ; LH=PREVIOUS JOB, RH=NEXT JOB IN QUEUE ; NEGATIVE MEANS THIS IS FIRST (LH) OR LAST (RH) ; JOB IN QUEUE JBCQM1==:JBTCQ-1 ; JBCQP1==:JBTCQ+1 NCNULQ==:NULZ+MXQUE ;NUMBER OF NULQ IN NO-CORE HEADER JBCQMN==:JBTCQ-NCNULQ ;NUL QUEUE HEADER JBCQOH==:JBTCQ-MXQUE ;WHAT TO INDEX TO GET SWAPPED OUT QUEUE HEADER IFN FTNSCHED,< BLOCK 2*M.CLSN ;HEADER FOR PQ2 SUBQUEUES JBTCSQ::BLOCK JOBN ;SAME AS JBTCQ FOR SUBQUEUES JBCSOH==:JBTCSQ-M.CLSN ;SWAPPED OUT SUB-QUE HEADER >;END OF IFN FTNSCHED JBTHSQ::BLOCK 1 ;HEADER FOR JOBS WAITING FOR A HIGH SEG JBTBBQ::BLOCK 1 ;HEADER FOR BB JUST INPUT QUEUE JBTJIQ::BLOCK 1 ;HEADER FOR PQ2 JUST INPUT QUEUE JBTJIL::BLOCK JOBN ;LIST OF PQ2 JOBS JUST INPUT HSQ==:JBTJIL-JBTHSQ BBQ==:JBTJIL-JBTBBQ ;OFFSET FOR JBTBBQ MBBQ==:-BBQ ;NEGATIVE OFFSET JIQ==:JBTJIL-JBTJIQ ;OFFSET FOR JBTJIQ JBTDIH::BLOCK 1 ;HEADER FOR QUEUE OF DORMANT/IDLE HISEGS JBTOBQ::BLOCK 1 ;HEADER FOR BB OUTPUT SCAN LIST JBTOLQ::BLOCK 1 ;HEADER FOR PQ2 OUTPUT SCAN LIST JBTOLS::BLOCK JOBN ;LIST OF PQ2 IN ORDER TO BE SCANNED FOR OUTPUT BLOCK SEGN ;ALSO, PUT QUEUE OF IDLE/DORMANT SEGMENTS HERE JBTDIQ==:JBTOLS ;GIVE IT A DIFFERENT NAME DISQ==:JBTDIQ-JBTDIH ;DORMANT/IDLE QUEUE HEAD OBQ==:JBTOLS-JBTOBQ ;OFFSET FOR JBTOBQ MOBQ==:-OBQ OLQ==:JBTOLS-JBTOLQ ;OFFSET FOR JBTOLQ ;DATA STRUCTURE CLEARED ON SYSTEM STARTUP AND ON 143 RESTART ;TTYTAB IS A TABLE OF CONTROLLING (ATTACHED) TTY'S FOR EACH JOB, ;INDEXED BY JOB NUMBER. IF C(TTYTAB)=0 THEN THERE IS NO SUCH JOB. ;OTHERWISE, RH(TTYTAB(N)) IS CONTROLLING DDB FOR JOB N. ;THERE IS ALWAYS A TTY DDB FOR EVERY JOB, EVEN THOUGH NO TTY ; NEED BE ATTACHED. THUS UUOS LOOK THROUGH TTYTAB(N) FOR A DDB, ; SINCE UUO'S COME FROM JOBS. COMMANDS LOOK THROUGH LINTAB(LINENUMBER) ; TO THE LDB, SINCE COMMANDS COME FROM TTY'S (LINES). ; IF THE JOB IS DETACHED, THE LINKS FROM LDB TO DDB AND VICE VERSA ; ARE ZEROED (RH OF DDBLDB AND LDBDDB). TTYTAB::BLOCK JOBN TTYDDL::BLOCK 1 ;DIALLER INTERLOCK TTYDDA::BLOCK 1 ;TTY DIALLER DATA ADDRESS, 4 WORD BLOCK DSDUNI::BLOCK 1 ;TTY NUMBER USING DIALLER CODE XPNMSZ==+1 ;SIZE OF BIT MAP XPNMAP::BLOCK XPNMSZ ;BIT MAP OF EXPANDING JOBS XP XPNMPT,-XPNMSZ ;FOR MAKING AOBJN POINTER SPTTAB:: ;SPECIAL PAGES TABLE ;SPT ENTRIES FOR CURRENT CONTEXT MUST IMMEDIATELY PRECEDE JBTUPM ;(FUNNY SPACE MAPPED IN THROUGH THESE SPT ENTRIES) REPEAT M.CPU,< EXP NUPMPP >; END REPEAT M.CPU JBTUPM::BLOCK JOBN+SEGN ;ADDRESS OF THE UPMP ;SPT SLOTS FOR SPYING ON SECTION 0/1 ;(INDIRECT POINTERS TO SECTION 0/1 LOW SEGMENT PAGES AND COMMON ;SUBROUTINE PAGES MAPPED IN THROUGH THESE SPT ENTRIES) SPTLOW:: DEFINE SPTENT(N),< EXP .E'N'MAP/PAGSIZ >; END DEFINE SPTENT ZZ==0 REPEAT M.CPU,< SPTENT (\ZZ) ;GENERATE THEM ZZ==ZZ+1 >; END REPEAT M.CPU ;SPT SLOTS FOR SPYING ON SECTION 2 SPTHGH:: DEFINE SPTENT(N),< IFE FTXMON,<0> IFN FTXMON,< EXP .E'N'MP1/PAGSIZ >; END IFN FTXMON >; END DEFINE SPTENT ZZ==0 REPEAT M.CPU,< SPTENT (\ZZ) ;GENERATE THEM ZZ==ZZ+1 >; END REPEAT M.CPU ;SPT SLOTS FOR SPYING ON COMMON DATA SECTIONS IFN FTXMON,< SPTCOM:: REPEAT >,< XWD 1,0 ;GENERATE THEM (INVALID UNTIL SYSINI FILLS IN) >; END REPEAT >; END OF IFN FTXMON SUBTTL SYSTEM WIDE VARIABLES ;SYSTEM WIDE VARIABLES: ; CLEARED AT SYSTEM STARTUP ;GETTAB FOR SYSTEM WIDE VARIABLES (AS OPPOSED TO PER CPU DATA) ; GETTAB TABLE NO(RH) IS .GTSYS=51 SYSTBL:: ;GETTAB TABLE NO. 51. ( .GTSYS = 51 SYSERR::0 ;(0) TOTAL NUMBER OF HARDWARE AND SOFTWARE ERRORS ; DETECTED BY THE MONITOR AND ENTERED IN DAEMON ; ERROR LOG FILE INCLUDING DAEMON ERRORS. ; INCLUDES HARD AND SOFT ERRORS ; HARD ERROR WITH 80 RETRIES ONLY COUNTS AS 1 ERROR IN SYSERR. CMNOTF::0 ;(1) NUMBER OF TIMES SCNSER WAS CALLED TO ; FIND A COMMAND BECAUSE COMCNT WAS ; NON-ZERO AND NO COMMAND WAS FOUND DELCNT::0 ; (2) DISABLED ERROR LOGGING COUNT ; INCREMENT INSTEAD OF SYSERR IF USER HAS DISABLED ; ERROR LOGGING IN OPEN UUO %SYSPC::0 ;(3) FULLWORD PC OF LAST STOPCODE %SYNDS::0 ;(4) NUMBER OF DEBUG STOPCD'S. %SYNJS::0 ;(5) NUMBER OF STOPCD'S WHICH CAUSED A JOB TO BE ; STOPED. COMTOT::0 ;(6) NUMBER OF COMMANDS PROCESSED ; (DELAYED COMMANDS ARE COUNTED ONCE WHEN PROCESSED) %SYSJN::0 ;(7)JOB# OF JOB ON LAST STOPCD %SYSTN::0 ;(10)TTY NAME FOR LAST STOPCD %SYSPN::0 ;(11)PROGRAM NAME FOR LAST STOPCD %SYSUU::0 ;(12)UUO ON LAST STOPCD %SYSUP::0 ;(13)USER'S PC ON LAST STOPCD %SYSPP::0 ;(14)USER'S PPN ON LAST STOPCD %SYSCD::0 ;(15)NAME OF LAST STOPCODE %SYNCS::0 ;(16)TOTAL NUMBER OF CPU STOPCODES %SYNIS::0 ;(17)NUMBER OF NODUMP STOPCDS (BUGINFS) %SYSTY::0 ;(20)TYPE OF LAST STOPCODE %SYSDT::0 ;(21)UDT OF LAST STOPCODE %SYSCP::-1 ;(22)CPU NUMBER OF LAST STOPCD XP SYSMXL,<<.-SYSTBL-1>B26> ;MAX. ENTRY ;UNPUBLISHED SYSTEM VARIABLES: ;OTHER SYSTEM DATA STORAGE COMCNT::0 ;NUMBER OF COMMANDS TYPED-IN BUT NOT DECODED ;SET BY SCNSER, DECREMENTED BY COMCON IFN FTMP,< COMJOB::0 ;JOB NUMBER OF JOB CURRENTLY EXECUTING ; A COMMAND USED TO AVOID JOBSTS UUO RACE > NFCNT:: 0 ;COUNT OF TIMES COMCNT NON-ZERO, ;BUT NO WAITING COMMANDS HNGMIN::0 ;DO ONCE PER MINUTE FUNCTIONS WHEN THIS ;FLAG COUNTS NEGATIVE ; SCHEDULER SCANS ALL JOBS EVERY ; MINUTE TO SEE IF QJOB HAS BEEN COUNTED ; DOWN TOO FAR. MORE LIKELY IN DUAL CPU SYS. CHKCNT::0 ;NO. OF CALLS TO CHKTAL TO CHECK CORE ; BEFORE ACTUALLY DOING THE OVERHEAD. ; RESET TO M.CMCT WHEN COUNTS TO 0. DATREM::0 ;LAST REMAINDER IN UPDATING "DATE" (SMITHSONIAN DATE) SCDTIM::0 ;DECREMENTED EVERY JIFFY, END OF MEDIUM ;TERM SCHED INTERVAL WHEN THIS REACHES ZERO. ;STORAGE FOR VARIOUS CORE ALLOCATION FUNCTIONS AND OTHER NON-SWAPPING DATA XP CRSIZ,9 XP CRPOS,8 XP PP256K,^D512/<_-^D9> ;MAXIMUM NUMBER OF PAGES OF PHYSICAL MEMORY POSSIBLE IFN M.KL10,< XP CORBLK,<1_<^D22-^D9>> ;22 BIT PHYSICAL ADDRESSES (4 MEGAWORD) > IFN M.KS10,< XP CORBLK,<1_<^D20-^D9>> ;20 BIT PHYSICAL ADDRESSES (1 MEGAWORD) > IFN FTLOCK,< LOCK:: 0 ;JOB#,,HIGH SEGMENT# OR ;0,,JOB# IF NO HIGH SEGMENT ;OF JOB CURRENTLY BEING LOCKED IN CORE LOKREL::0 ;DESIRED PROTECTION,,RELOCATION ;FOR JOB CURRENTLY BEING LOCKED PAGLOK==:1B18 ;FLAG THAT WE'RE LOCKING SPECIFIC PAGES LASLOK::0 ;JOB # OF LAST JOB LOCKED >;END IFN FTLOCK MOFLPG::0 ;FLAG FOR SETTING MEMORY ON OR OFF LINE LMPAG::0 ;LAST PAGE IN MONITOR'S PAGTAB CHAIN DOORBL::0 ;SYSTEM DOORBELL IFN FTKL10&FTMP,< SAVCTL::0 ;VALUE OF CORTAL WHEN MM RESOURCE WAS OBTAINED > ;GFWN?? ALLOCATION CONTROL STUFF NZSFCA: BLOCK 1+MXSECN ;HEAD OF SECTION FREE CORE LISTS $HIGH DEFINE NZSMAC (SECT),<400000,,NZSFCA+SECT> ZZ==0 NZSFCH:: ;POINTERS TO SECTION FREE CORE HEADERS REPEAT 1+MXSECN,< NZSMAC (\ZZ) ZZ==ZZ+1 > NZSFCL==:.-NZSFCH ;LENGTH OF TABLE $ABS NZSFCE:: ;TAIL POINTERS FOR NZS FREE CORE BLOCK NZSFCL ;ACTUALLY FILLED IN BY SYSINI ;DATA LOCATIONS PRESENT ONLY IN SWAPPING SYSTEMS SWPTBL::! ;FIRST LOCATION OF MONITOR DATA STORAGE ; RETURNED BY GETTAB UUO (THESE LOCATIONS ; PRESENT ONLY IN SWAP SYSTEMS) ; OCTAL NUMBERS IN () CORRESPOND TO GETTAB ARG ;THIS IS DOCUMENTED AS GETTAB TABLE NUMBER 13 BIGHOL::0 ;(0) CURRENT BIGGEST HOLE IN CORE (1K BLOCKS) FINISH::0 ;(1) IF +, THEN JOB NUMBER OF JOB BEING SWAPPED IN, ;IF -, THEN JOB NUMBER OF JOB BEING SWAPPED OUT FORCE:: 0 ;(2) JOB NUMBER BEING FORCED TO SWAP OUT FIT:: 0 ;(3) JOB NUMBER WAITING TO BE FITTED INTO CORE VIRTAL::0 ;(4) NUMBER OF FREE 1K BLOCKS OF SWAPPING SPACE LEFT ; (COUNTING DORMANT SEGMENTS AS IF FREE). ; PRINTED WITH CORE COMMAND (NO ARG) OR ERROR ; USUALLY THE SAME AS THE AMOUNT OF VIRTUAL CORE ; LEFT IN SYSTEM, EXCEPT WHILE R,RUN,KJOB,GET ; COMMAND ARE WAITING TO BE SWAPPED IN, BECAUSE ; THE OLD DISK SPACE HAS NOT BEEN RETURNED YET, ; BUT VIRTUAL CORE IS ONLY 140 WORDS FOR SWAPIN SWPERC::0 ;(5) LH= NUMBER OF SWAPPER READ OR WRITE FAILURES ; RH= ERROR BITS (BITS 18-23) + NUMBER OF K OF ; IOCHNX=IO CHANNEL SWAP NON-EX MEM - BIT 23 ; IOCHMP=IO CHANNEL SWAP OUT MEMORY PARITY - BIT 22 ; BITS 18-22 = IOIMPM (SOFTWARE CHECKSUM), ; IODERR, IODTER, IOBKTL ; DISCARDED SWAPPING SPACE SWAPIN::0 ;(6) IF THE SYSTEM HAS FTPDBS TURNED ON, ; THIS WORD IS -1 WHEN A SWAPIN IS ; IN PROGRESS AND ZERO WHEN A SWAP OUT ; IS IN PROGRESS. IF FINISH IS ZERO ; THEN NO SWAP IS IN PROGRESS. IF FTPDBS ; IS OFF THIS WORD IS ALWAYS ZERO. ;INSERT NEW LOCATIONS HERE WHICH ARE OF INTEREST ; TO USER PROGS IN SWAPPING SYSTEMS SWPEUJ::0 ;(7)LH=J FOR JOB OR SEGMENT WHICH GOT A SWAP ; READ/WRITE ERROR, RH=UNIT THAT THE ; SWAPPING I/O WHICH RESULTED IN THE ERROR ; WAS DONE TO SWPMXL==:<.-SWPTBL-1>B26 ;MAXIMUM ENTRY FOR GETTAB SHIFTED LEFT 9 ;MORE SWAPPING SYSTEM LOCATIONS (NOT RETURNED BY GETTAB) MAXJBN::0 ;NUMBER OF JOB TO SWAP OUT SUMCOR::0 ;TEMPORARY STORAGE CELL USED BY SWAPPER FOR SUM OF ; CORE NEEDED FOR SWAP IN FITLOW::0 ;NUMBER OF JOB BEING FIT (NEVER HI-SEG) SWPIN:: 0 ;JOB NUMBER BEING SWAPPED IN IF IT HAS A HIGH SEG SWPOUT::0 ;JOB NUMBER BEING SWAPPED OUT IF IT HAS A HIGH SEG ; (USED TO REMEMBER THE JOB NUMBER DURING HIGH SEG SWAP) IFN FTRSP,< SWPNU2::0 ;JIFFY REMAINDER FOR SWAP NULL TIME SWPLS2::0 ;JIFFY REMAINDER FOR SWAP LOST TIME SWPPLT::0 ;POTENTIAL LOST TIME FLAG FOR SWAPPER ;TO TELL CLOCK1 TO COUNT SOME LOST TIME ;(HAVE JOB TO SWAP IN BUT SWAPPER IDLE) SWPNUF::0 ;NULL CYCLE FOR SWAPPER (AGAIN, SO CLOCK1 ;CAN COUNT NULL TIME FOR SWAPPER) >;END IFN FTRSP IFN FTNSCHED,< SCDSTS::0 ;TIME OF LAST SETTING OF PRIMARY PERCENTAGES CNTSTS::0 ;COUNT OF CPU CLASSES WITH NON-ZERO QUOTA TOTSTS::0 ;TOTAL OF ALL SUBCLASS PERCENTAGES ; (MUST BE 100 OR ZERO) MAXQTA::0 ;NUMBER OF HIGHEST CLASS WITH SECONDARY QUOTA CNTQTA::0 ;COUNT OF CLASSES WITH NON-ZERO SECONDARY QUOTA TOTQTA::0 ;TOTAL OF ALL SECONDARY SUBCLASS PERCENTAGES ; NORMALLY 100%, BUT CAN BE ANY NON-NEGATIVE >;END OF IFN FTNSCHED $ABS IFN M.FPS,< EXTERN KASER ;CAUSE KA10 FP SIMULATION MODULE TO BE LOADED > IFE M.FPS,< XP KALFPS,CPOPJ XP SETFPS,CPOPJ XP SETFPC,COMERA## > SUBTTL MACROS TO DEFINE PI CHANNELS ;MACROS TO DEFINE PI CHANNEL NUMBER AND GENERATE INTERRUPT CHAINING ; INFORMATION FOR AUTCON SO IT CAN LINK THE DEVICE INTERRUPT SERVICE ; ROUTINES AND THE DEVICE DATA BLOCKS ;TABLE INTTAB IS GENERATED WITH PAIRS OF ENTRIES FOR EACH DEVICE ;BYTE POINTERS TO INTTAB LOCATIONS USED BY AUTCON PINTNO::POINT 11,INTTAB+0(P1),11 ;NUMBER OF DDBS TO CREATE PINTCP::POINT 3,INTTAB+0(P1),14 ;CPU NUMBER PINTCH::POINT 3,INTTAB+0(P1),17 ;PI CHANNEL PINTIN::POINT 18,INTTAB+0(P1),35 ;INTERUPT ROUTINE ADDRESS PINTSZ::POINT 9,INTTAB+1(P1),17 ;SIZE OF DDB TO CREATE PINTDB::POINT 18,INTTAB+1(P1),35 ;ADDRESS OF PROTOTYPE DDB ;MACRO TO GENERATE SYMBOLS FOR AUTOCONFIGURED DEVICES ;ARGUMENTS: ; GEN MONGEN SYMBOL (M.XXXX) ; DEV 3 CHARACTER DEVICE PREFIX (I.E. 'TAP' FOR TAPE SERVICE) ; PI PI CHANNEL (USUALLY SPECIFIED AS "\.CH") ; BITS EXTRA PI CHANNEL BITS TO BE TURNED OFF OR ON (I.E. PI.SC7) DEFINE ASGDEV (GEN,DEV,PI,BITS),< IFN GEN,< ;;IF ANY OF THIS DEVICE USED'PI==:1 ;;GENERATE CHANNEL SAVE ROUTINE .CHAS==1 ;;CHANNEL HAS BEEN ASSIGNED DEV'CHN==:PI ;;PI CHANNEL DEV'CHL==:CH'PI ;;LOCATION WHERE INTERRUPT PC IS STORED DEV'SAV==:SAV'PI ;;CHANNEL AC SAVE ROUTINE LOCATION DEV'SAC==:SVAC'PI ;;STARTING CHANNEL SAVE LOCATION FOR ACS DEV'PDP==:C'PI'PDP ;;LOCATION WHERE P STORED DEV'PD1==:C'PI'PD1 ;;PUSHDOWN LIST DEV'BIT==:PI.SC7_<7-'PI> ;;PI CHANNEL BIT DEV'PIF==:PI.TFP!!'BITS ;;MASK TO TURN PI CHANNEL(S) OFF DEV'PIN==:PI.TNP!!'BITS ;;MASK TO TURN PI CHANNEL(S) ON > ;;END IFN GEN > ;END DEFINE ASGDEV ;MACRO TO LINK A DDB WITHOUT A CORRESPONDING DEVICE DRIVER ONTO ;THE INTTAB CHAIN. ;ARGUMENTS: ; GEN MONGEN SYMBOL (M.XXXX) ; DEV 3 CHARACTER DEVICE PREFIX (I.E. 'PTY' FOR PTY) DEFINE ASGDDB (GEN,DEV),< IFN GEN,< ;;IF ANY OF THIS DEVICE IF2,< IFNDEF DEV'DDB, IFNDEF DEV'SER, >;; END IF2 .IFN DEV'N,EXTERNAL,< ;;IF NOT EXTERNAL IFNDEF DEV'N, ;;IF DEV'N NOT DEFINED, DEFAULT TO 1 IFE ,< ;;IF ONLY A SINGLE DEVICE XWD 0,0 ;;NO DUPLICATES NEEDED, NO PI CHANNEL STUFF XWD 0,DEV'DDB ;;ADDRESS OF PROTOTYPE DDB >;; END IFE IFG ,< IF2,> XWD DEV'N*100,0 ;;NUMBER OF DDBS TO CREATE XWD DEV'DDS,DEV'DDB ;;SIZE,,ADDRESS OF PROTOTYPE DDB >;; END IFG DEV'N-1 >;; END .IFN .IF DEV'N,EXTERNAL,< ;;IF EXTERNAL IF2,> XWD DEV'N*100,0 ;;NUMBER OF DDBS TO CREATE XWD DEV'DDS,DEV'DDB ;;SIZE,,ADDRESS OF PROTOTYPE DDB >;; END .IF > ;;END IFN GEN > ;END DEFINE ASGDDB ;;MACRO FOR DEVICES WHICH ARE ALWAYS PRESENT (AND WHICH DO NOT USE A ;; CHANNEL SAVE ROUTINE AND HAVE NO DDB) EXAMPLES ARE APR, CTY, PEN, CLK... DEFINE SPAXGINT (DEV,PI) < DEV'N==1 ASGINT DEV,PI > DEFINE ASGIN1 (DEV,PI) < DEV'CHL==:CH'PI > DEFINE SPASGINT (DEV,PI) < DEV'N==1 ASGINT DEV,PI > DEFINE ASGINT (DEV,PI) < IFG DEV'N, , <.CHAS==1 ;;CHANNEL PI IN USE. > IF2,> DEV'CHN==:PI&7 DEV'CH1==PI ;DEFINE THIS FOR USE AFTER CHAN DEFINITIONS XWD PI,DEV'INT ;;GENERATE INTERRUPT ENTRY POINT FOR ONCE XWD 0,0 ASGIN1 DEV,\PI >> > ;;MACRO FOR OPTIONAL DEVICES WHICH ALWAYS USE A CHANNEL SAVE ROUTINE ;; (EXAMPLES: CDR, DSK, PTR, ETC. ALSO PTY WITH 0 PI) DEFINE SPASGDDB (DEV,PI,NUM) < DEV'N==NUM NOSAV==1 ASGSAV DEV,PI > ;MACRO TO GENERATE INTTAB ENTRY FOR SAVE ROUTINE BUT NO DDB ; ASGSVE & ASGSVI DEFINE ASGSVE (DEV,PI) < .CHAS==1 DEV'CHN==:PI&7 DEV'CH1==PI DEV'HAC==:13 ASGSV2 DEV,\PI; IFDIF ,< IF2 < IFNDEF DEV'INT,> ;DEFINE AS EXTERN IF NOT IN COMMON XWD PI,DEV'INT XWD 0,0 > > DEFINE ASGSAV (DEV,PI) < IFG DEV'N, < ASGSV1 DEV,\PI >> ;;MACRO FOR: 1. COMPLETION OF THE DEFINITION REQUIRED FOR THOSE ;; DEVICES INVOKING THE ASGSAV MACRO ;; 2. DEFINE SYMBOLS FOR DISK (DEV'N=0) DEFINE ASGSV1 (DEV,PI) < IF2, < IFNDEF DEV'DDB, > ;;DEVICE DATA BLOCK ADDRESS IFG PI, < IFE , <.CHAS==1 ;;CHANNEL PI IN USE. > DEV'CHN==:PI&7 ;;DEFINE DEVICE CHANNEL NUMBER DEV'CH1==PI ;;USED AFTER CH'PI DEFINITIONS IFE NOSAV,< ASGSV2 DEV,PI > > IFG PI, < IF2, < IFNDEF DEV'INT, > ;;INTERRUPT SERVICE CONSO INSTRUCTION > IFE PI, < XWD DEV'N*100+0,0 ;;NO PI CHANNEL FOR THIS DEVICE > IFG PI, < XWD DEV'N*100+PI,DEV'INT ;;FIRST WORD OF INTTAB ENTRY IFE DEV'N, ;;LEVEL D DISK IN COMMOD > IFG DEV'N-1,< XWD DEV'DDS##,DEV'DDB ;;MULTIPLE DEVICE SECOND WORD OF INTTAB ENTRY > IFE DEV'N-1, < XWD 0,DEV'DDB ;;SINGLE DEVICE SECOND WORD OF INTTAB ENTRY > > ;;END ASGSV1 DEFINITION DEFINE ASGSVN (DEV,X,PI) < IFG PI, < IFE , <.CHAS==1> ;;CHANNEL PI IN USE. DEV'X'CHN==:PI&7 ;;DEFINE DEVICE CHANNEL NUMBER DEV'X'CH1==PI ;;USED AFTER CH'PI DEFINITIONS ASGSV2 DEV'X,\PI IF2, < IFNDEF DEV'X'INT, > ;;INTERRUPT SERVICE CONSO INSTRUCTION >;END IFG PI IFNDEF DEV'X'N, EXP B11!B17!DEV'X'INT IF2,> IFE DEV'X'N-1,< EXP DEV'X'DDB >;;END IFE DEV'X'N-1 IFN DEV'X'N-1,< IF2,> EXP B17!DEV'X'DDB >;;END IFN DEV'X'N-1 >;;END ASGSVN DEFINITION ;;MACRO'S TO ALLOW GENERATION OF MULTIPLE INTTAB ENTRIES FOR MULTIPLE ;; DEVICES SUCH AS LINE-PRINTERS DEFINE MULASG (DEV,DE,PI,DSKFL) < IFG DEV'N, < ZZ==0 REPEAT DEV'N, < DEVASG DE,\ZZ,PI,DSKFL ZZ==ZZ+1 > > > DEFINE DEVASG (DE,X,PI,DSKFL) < IFE DSKFL, ;;DSKFL=1 IF NOT LEVEL D DISK IFN DSKFL, ;;DSKFL=ZERO IF LEVEL D DISK ASGSV1 DE'X,\PI > ;;MACROS TO CONTROL ASSIGNMENT OF PI CHANNELS TO DEVICES DEFINE NEXTCH < .CH==.CH+1 ;;START ASSIGNING TO NEXT LOWER CHANNEL .CHAS==0 NEXTCU \.CH > DEFINE NEXTCQ < IFN .CHAS, > ;;START ASSIGNING TO NEXT LOWER CHANNEL IF ;; CURRENT CHANNEL HAS BEEN USED. DEFINE NEXTCU (N) < IFDEF UNIQ'N, < IFN UNIQ'N, > ;;TO SKIP OVER ANY