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