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,GLOTOP,RSTACK,RCYCHN,START,TVSTRT,REALTV .GLOBAL IJFNS,IJFNS1,SJFNS,OPSYS,HASHTB,MULTSG,PURBTB,NSEGS .INSRT MUDDLE > SYSQ CONSTANTS IFN ITS,[ N.CHNS==16. FATINS==.VALUE ] IFE ITS,[ N.CHNS==102 ] IMPURE LOC100: JRST START IFN ITS,[ %UNAM: 0 ; HOLDS UNAME %JNAM: 0 ; HOLDS JNAME OPSYS: -1 ; MINUS ONE (-1) IF ITS RLTSAV: -1 ; SAVED ARG TO REALTIMER ] IFE ITS,[ IJFNS: 0 ; AGCS JFN,,MUDDLE'S JFN IJFNS1: 0 ; SGCS JFN SJFNS: 0 ; SQUOZE JFN,,SAVE JFN OPSYS: 0 ; ZERO IF TOPS20, ONE IF TENEX MULTSG: 0 ; NON-ZERO MEANS TRYING TO USE MULTI SEG STUFF NSEGS: MAXSEG PURBTB: REPEAT MAXSEG,HIBOT ] IDPROC: 0 ; ENVIRONMENT NUMBER GENERATOR PTIME: 0 ; UNIQUE NUMBER FOR PROCID AND ENVIRONMENTS OBLNT": 13. ; LENGTH OF DEFAULT OBLISTS (SMALL) PARTOP": GCSTOP": VECTOP": VECLOC ; TOP OF CURRENT GARBAGE COLLECTED SPACE GCSBOT": PARBOT": VECBOT": PARBASE ; BOTTOM OF GARBAGE COLLECTED SPACE FRETOP": 120000 CODBOT: 0 ; ABSOLUTE BOTTOM OF CODE CODTOP": PARBASE ; TOP OF IMPURE CODE (INCLUDING "STORAGE") HITOP: 0 ; TOP OF INTERPRETER PURE CORE GCSNEW": PARNEW": 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. PMAPB": 525252,,525252 ;SECTION 0 -- BELONGS TO AGC 525252,,525252 525252,,525252 ;SECTION 1 -- BELONGS TO AGC 525252,,525252 525252,,525252 ;SECTION 2 -- BELONGS TO AGC 525252,,525252 525252,,525252 ;SECTION 3 -- BELONGS TO AGC 525252,,525252 525252,,525252 ;SECTION 4 -- BELONGS TO AGC 525252,,525252 525252,,525252 ;SECTION 5 -- BELONGS TO AGC (DEPENDS ON HIBOT) 525252,,525252 525252,,525252 ;SECTION 6 -- START OF PURE CORE (FILLED IN BY INITM) 525252,,525252 525252,,525252 525252,,525252 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 GCSBOT,GCSTOP,FRETOP,GCSNEW,TD.AGC,SPSTOR,PVSTOR .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 TVSTRT==1400 ; THIS SHOULD BE LARGE ENOUGH SO THAT WE HAVE ENOUGH ; ROOM FOR INITAL FREE STORAGE 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+TVSTRT-1 ADDTV TVEC,[-2*NUMPRI-2,,TYPVLC] TYPBOT==TVOFF+TVSTRT-1 ; POINT TO CURRENT TOP OF TYPE VECTORS ;ENTRY FOR ROOT,TTICHN,TTOCHN ADDTV TCHAN,0 TTICHN==TVOFF+TVSTRT-1 ADDTV TCHAN,0 TTOCHN==TVOFF+TVSTRT-1 ADDTV TOBLS,0 ROOT==TVOFF+TVSTRT-1 ADDTV TOBLS,0 INITIA==TVOFF+TVSTRT-1 ADDTV TOBLS,0 INTOBL==TVOFF+TVSTRT-1 ADDTV TOBLS,0 ERROBL==TVOFF+TVSTRT-1 ADDTV TOBLS,0 MUDOBL==TVOFF+TVSTRT-1 ADDTV TVEC,0 GRAPHS==TVOFF+TVSTRT-1 ADDTV TFIX,0 INTNUM==TVOFF+TVSTRT-1 ADDTV TVEC,[-2*NINT,,INTVCL] INTVEC==TVOFF+TVSTRT-1 ADDTV TUVEC,[-NASOCS,,ASOVCL] ASOVEC==TVOFF+TVSTRT-1 ADDTV TSP,0 SPSTOR==TVOFF+TVSTRT-1 ADDTV TPVP,0 PVSTOR==TVOFF+TVSTRT-1 ADDTV TUVEC,0 HASHTB==TVOFF+TVSTRT-1 ADDTV TLIST,0 CHNL0"==TVOFF+TVSTRT-1 ;LIST FOR CURRENTLY OPEN PSUEDO CHANNELS IFN ITS,[ DEFINE ADDCHN N ADDTV TCHAN,0 CHNL!N==TVOFF+TVSTRT-1 .GLOBAL CHNL!N TERMIN REPEAT 15.,ADDCHN \.RPCNT+1 DEFINE ADDIPC N ADDTV TLIST,0 IPCS!N==TVOFF+TVSTRT-1 .GLOBAL IPCS!N TERMIN REPEAT 15.,ADDIPC \.RPCNT+1 ] IFE ITS,[ ADDTV TCHAN,0 CHNL1==TVOFF+TVSTRT-1 .GLOBAL CHNL1 REPEAT N.CHNS-1,[ADDTV TCHAN,0 ] ] ADDTV TASOC,[-ASOLNT,,NODLST] NODES==TVOFF+TVSTRT-1 ADDTV TASOC,[-ASOLNT,,NODDUM] DUMNOD==TVOFF+TVSTRT-1 ADDTV TVEC,0 EVATYP==TVOFF+TVSTRT-1 ADDTV TVEC,0 APLTYP==TVOFF+TVSTRT-1 ADDTV TVEC,0 PRNTYP==TVOFF+TVSTRT-1 ; SLOTS ASSOCIATED WITH TEMPLATE DATA STRUCTURES ADDTV TUVEC,0 TD.GET==TVOFF+TVSTRT-1 ADDTV TUVEC,0 TD.PUT==TVOFF+TVSTRT-1 ADDTV TUVEC,0 TD.AGC==TVOFF+TVSTRT-1 ADDTV TUVEC,0 TD.LNT==TVOFF+TVSTRT-1 ADDTV TUVEC,0 TD.PTY==TVOFF+TVSTRT-1 ADDTV TCHAN,0 RCYCHN==TVOFF+TVSTRT-1 ;GLOBAL SPECIAL PDL GSP: BLOCK GSPLNT GENERAL GSPLNT+2,,0 ADDTV TVEC,[-GSPLNT,,GSP] GLOBASE==TVOFF+TVSTRT-1 GLOB==.-2 ADDTV TVEC,GLOB GLOBSP==TVOFF+TVSTRT-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+TVSTRT-1 ADDTV TLIST,0 STOLST==TVOFF+TVSTRT-1 ADDTV TVEC,GLOB GLOTOP==TVOFF+TVSTRT-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,FRM,AB,TB,TP,SP,M,R,P]B,,[0 0,0,0,0,0,0,0,TTP,TAB,TTB,TTP,0,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 ADDPV TTVP,0,REALTV IMPURE END