mirror of
https://github.com/PDP-10/its.git
synced 2026-01-19 09:29:15 +00:00
350 lines
6.7 KiB
Plaintext
350 lines
6.7 KiB
Plaintext
TITLE SPECS FOR MUDDLE
|
|
|
|
RELOCA
|
|
|
|
MAIN==1
|
|
.GLOBAL TYPVLC,PBASE,TYPBOT,MAINPR,PTIME,IDPROC,ROOT,TTICHN,TTOCHN,TYPVEC
|
|
.GLOBAL %UNAM,%JNAM,%XUNA,%XJNA,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,NOATMS,NOSETG,NOSET
|
|
|
|
.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
|
|
%XUNA: 0 ; HOLDS XUNAME
|
|
%JNAM: 0 ; HOLDS JNAME
|
|
%XJNA: 0 ; HOLDS XJNAME
|
|
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
|
|
NOATMS: 0 ; FLAG DISALLOWING CREATION OF NEW ATOMS
|
|
NOSETG: 0 ; FLAG DISALLOWING AUTO-CREATE OF GBINDS
|
|
NOSET: 0 ; FLAG DISALLOWING AUTO-CREATE OF BINDINGS
|
|
;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
|