Split up files.
[pdp10-muddle.git] / sumex / specs.mcr062
diff --git a/sumex/specs.mcr062 b/sumex/specs.mcr062
new file mode 100644 (file)
index 0000000..f0c7401
--- /dev/null
@@ -0,0 +1,302 @@
+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