TITLE SPECS FOR MUDDLE RELOCA MAIN==1 .GLOBAL TYPVLC,PBASE,TYPBOT,MAINPR,PTIME,IDPROC,ROOT,TTICHN,TTOCHN,TYPVEC .GLOBAL %UNAM,%JNAM,NOTTY,GCHAPN,INTHLD,PURBOT,PURTOP,N.CHNS,SPCCHK,CURFCN .GLOBAL TD.GET,TD.PUT,TD.LNT,NOSHUF .INSRT MUDDLE > SYSQ CONSTANTS IFN ITS,[ N.CHNS==16. FATINS==.VALUE ] IFE ITS,[ N.CHNS==102 ] IMPURE CRADIX: 10. %UNAM: 0 ; HOLDS UNAME %JNAM: 0 ; HOLDS JNAME IDPROC: 0 ; ENVIRONMENT NUMBER GENERATOR PTIME: 0 ; UNIQUE NUMBER FOR PROCID AND ENVIRONMENTS OBLNT": 13. ; LENGTH OF DEFAULT OBLISTS (SMALL) VECTOP": VECLOC ; TOP OF CURRENT GARBAGE COLLECTED SPACE VECBOT": VECBASE ; BOTTOM OF GARBAGE COLLECTED SPACE CODBOT: 0 ; ABSOLUTE BOTTOM OF CODE CODTOP": PARBASE ; TOP OF IMPURE CODE (INCLUDING "STORAGE") HITOP: 0 ; TOP OF INTERPRETER PURE CORE PARNEW": 0 PARBOT": PARBASE PARTOP": PARLOC VECNEW": 0 ; LOCATION FOR OFFSET BETWWEN OLD GCSTOP AND NEW GCSTOP INTFLG: 0 ; INTERRUPT PENDING FLAG MAINPR: 0 ; HOLDS POINTER TO THE MAIN PROCESS NOTTY: 0 ; NON-ZERO==> THIS MUDDLE HAS NO TTY GCHAPN: 0 ; NON-ZERO A GC HAS HAPPENED RECENTLY INTHLD: 0 ; NON-ZERO INTERRUPTS CANT HAPPEN PURBOT: HIBOT ; BOTTOM OF DYNAMICALLY ALLOCATED PURE PURTOP: HIBOT ; TOP OF DYNAMICALLY ALLOCATED PURE SPCCHK: SETZ ; SPECIAL/UNSPECIAL CHECKING? NOSHUF: 0 ; FLAG TO BUILD A NON MOVING HI SEG ;PAGE MAP USAGE TABLE FOR MUDDLE ;EACH PAGE IS REPRESENTED BY ONE BIT IN THE TABLE ;IF BIT = 0 THEN PAGE IS FREE OTHERWISE BUSY ;FOR PAGE n USE BIT (n MOD 32.) IN WORD PMAP+n/32. PMAP": -1 ;SECTION 0 -- BELONGS TO AGC -1 ;SECTION 1 -- BELONGS TO AGC -1 ;SECTION 2 -- BELONGS TO AGC -1 ;SECTION 3 -- BELONGS TO AGC -1 ;SECTION 4 -- BELONGS TO AGC -1 ;SECTION 5 -- BELONGS TO AGC (DEPENDS ON HIBOT) -1 ;SECTION 6 -- START OF PURE CORE (FILLED IN BY INITM) -1 ;SECTION 7 -- LAST TWO PAGES BELONG TO AGC'S PAGE MAPPER NINT==72. ; NUMBER OF POSSIBLE ITS INTERRUPTS NASOCS==159. ; LENGTH OF ASSOCIATION VECTOR PDLBUF==100 ; EXTRA INSURENCE PDL ASOLNT==10 ; LENGTH OF ASSOCIATION BLOCKS .GLOBAL PATCH,TBINIT,LERR,LPROG,PIDSTO,PROCID,PTIME,GCPDL,INTFLG,WTYP1,WTYP2 .GLOBAL PAT,PDLBUF,INTINT,PARNEW,GCPVP,START,SWAP,ICR,SPBASE,TPBASE,GLOBAS,GLOBSP,TPBAS .GLOBAL TOPLEVEL,INTNUM,INTVEC,INTOBL,ASOVEC,ERROBL,MAINPR,RESFUN,.BLOCK,ASOLNT,NODES .GLOBAL WRONGT,TTYOPE,OPEN,CLOSE,IOT,ILVAL,MESS,FACTI,REFVEC,MUDOBL,INITIA .GLOBAL LSTRES,BINDID,DUMNOD,PSTAT,1STEPR,IDPROC,EVATYP,APLTYP,PRNTYP,PURVEC,STOLST VECTGO TVBASE": BLOCK TVLNT GENERAL TVLNT+2,,0 TVLOC==TVBASE ;INITIAL TYPE TABLE TYPVLC": BLOCK 2*NUMPRI+2 GENERAL 2*NUMPRI+2+2,,0 TYPTP==.-2 ; POINT TO TOP OF TYPES ; INITIAL SYMBOL TABEL FOR RSUBRS SQULOC==. SQUTBL: BLOCK 2*NSUBRS TWORD,,0 2*NSUBRS+2,,0 INTVCL: BLOCK 2*NINT TLIST,,0 2*NINT+2,,0 NODLST: TTP,,0 0 TASOC,,0 BLOCK ASOLNT-3 GENERAL+ ASOLNT+2,,0 NODDUM: BLOCK ASOLNT GENERAL+ ASOLNT+2,,0 ASOVCL: BLOCK NASOCS TASOC,,0 NASOCS+2,,0 ;THESE ENTRIES MUST NOT MOVE DURING INITILAIZATION ADDTV TVEC,[-2*NUMPRI-2,,TYPVLC] TYPVEC==TVOFF-1 ADDTV TVEC,[-2*NUMPRI-2,,TYPVLC] TYPBOT==TVOFF-1 ; POINT TO CURRENT TOP OF TYPE VECTORS ;ENTRY FOR ROOT,TTICHN,TTOCHN ADDTV TCHAN,0 TTICHN==TVOFF-1 ADDTV TCHAN,0 TTOCHN==TVOFF-1 ADDTV TOBLS,0 ROOT==TVOFF-1 ADDTV TOBLS,0 INITIA==TVOFF-1 ADDTV TOBLS,0 INTOBL==TVOFF-1 ADDTV TOBLS,0 ERROBL==TVOFF-1 ADDTV TOBLS,0 MUDOBL==TVOFF-1 ADDTV TVEC,0 GRAPHS==TVOFF-1 ADDTV TFIX,0 INTNUM==TVOFF-1 ADDTV TVEC,[-2*NINT,,INTVCL] INTVEC==TVOFF-1 ADDTV TUVEC,[-NASOCS,,ASOVCL] ASOVEC==TVOFF-1 ADDTV TLIST,0 CHNL0"==TVOFF-1 ;LIST FOR CURRENTLY OPEN PSUEDO CHANNELS IFN ITS,[ DEFINE ADDCHN N ADDTV TCHAN,0 CHNL!N==TVOFF-1 .GLOBAL CHNL!N TERMIN REPEAT 15.,ADDCHN \.RPCNT+1 DEFINE ADDIPC N ADDTV TLIST,0 IPCS!N==TVOFF-1 .GLOBAL IPCS!N TERMIN REPEAT 15.,ADDIPC \.RPCNT+1 ] IFE ITS,[ ADDTV TCHAN,0 CHNL1==TVOFF-1 .GLOBAL CHNL1 REPEAT N.CHNS-1,[ADDTV TCHAN,0 ] ] ADDTV TASOC,[-ASOLNT,,NODLST] NODES==TVOFF-1 ADDTV TASOC,[-ASOLNT,,NODDUM] DUMNOD==TVOFF-1 ADDTV TVEC,0 EVATYP==TVOFF-1 ADDTV TVEC,0 APLTYP==TVOFF-1 ADDTV TVEC,0 PRNTYP==TVOFF-1 ; SLOTS ASSOCIATED WITH TEMPLATE DATA STRUCTURES ADDTV TUVEC,0 TD.GET==TVOFF-1 ADDTV TUVEC,0 TD.PUT==TVOFF-1 ADDTV TUVEC,0 TD.LNT==TVOFF-1 ADDTV TUVEC,0 TD.PTY==TVOFF-1 ;GLOBAL SPECIAL PDL GSP: BLOCK GSPLNT GENERAL GSPLNT+2,,0 ADDTV TVEC,[-GSPLNT,,GSP] GLOBASE==TVOFF-1 GLOB==.-2 ADDTV TVEC,GLOB GLOBSP==TVOFF-1 ;ENTRY FOR CURRENT POINTER TO GLOBAL SP ; POINTER VECTOR TO PURE SHARED RSUBRS PURV: BLOCK 3*20. ; ENOUGH FOR 20 SUCH (INITIALLY) 0 3*20.+2,,0 ADDTV TUVEC,[-3*20.,,PURV] PURVEC==TVOFF-1 ADDTV TLIST,0 STOLST==TVOFF-1 ;PROCESS VECTOR FOR GARBAGE COLLECTOR PROCESS GCPVP: BLOCK PVLNT*2 GENERAL PVLNT*2+2,,0 VECRET PURE ;INITIAL PROCESS VECTOR PVBASE": BLOCK PVLNT*2 GENERAL PVLNT*2+2,,0 PVLOC==PVBASE ;ENTRY FOR PROCESS I.D. ADDPV TFIX,1,PROCID ;THE FOLLOWING IRP MAKES SPACE FO9 SAVED ACS ZZZ==. IRP A,,[0,A,B,C,D,E,PVP,TVP,AB,TB,TP,SP,M,R,P]B,,[0 0,0,0,0,0,TPVP,TTVP,TAB,TTB,TTP,TSP,TCODE,TRSUBR,TPDL] LOC PVLOC+2*A A!STO==.-PVBASE B,,0 0 TERMIN PVLOC==PVLOC+16.*2 LOC ZZZ ADDPV TTB,0,TBINIT ADDPV TTP,0,TPBASE ADDPV TSP,0,SPBASE ADDPV TPDL,0,PBASE ADDPV 0,0,RESFUN ADDPV TLIST,0,.BLOCK ADDPV TLIST,0,MESS ADDPV TACT,0,FACTI ADDPV TPVP,0,LSTRES ADDPV TFIX,0,BINDID ADDPV TFIX,1,PSTAT ADDPV TPVP,0,1STEPR ADDPV TSP,0,CURFCN IMPURE END