X-Git-Url: https://jxself.org/git/?p=pdp10-muddle.git;a=blobdiff_plain;f=%3Cmdl.int%3E%2Fspecs.mid.110;fp=%3Cmdl.int%3E%2Fspecs.mid.110;h=9e0d177b3459cdd13117e6823cf8ac14c5dfab80;hp=0000000000000000000000000000000000000000;hb=bab072f950a643ac109660a223b57e635492ac25;hpb=233a3c5245f8274882cc9d27a3c20e9b3678000c diff --git a//specs.mid.110 b//specs.mid.110 new file mode 100644 index 0000000..9e0d177 --- /dev/null +++ b//specs.mid.110 @@ -0,0 +1,345 @@ +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