Twenex Muddle.
[pdp10-muddle.git] / <mdl.int> / specs.mid.110
diff --git a/<mdl.int>/specs.mid.110 b/<mdl.int>/specs.mid.110
new file mode 100644 (file)
index 0000000..9e0d177
--- /dev/null
@@ -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+<SASOC,,0>
+       ASOLNT+2,,0
+
+NODDUM:        BLOCK   ASOLNT
+       GENERAL+<SASOC,,0>
+       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