mirror of
https://github.com/PDP-10/its.git
synced 2026-02-28 17:29:10 +00:00
Most of these are the same as before. For UUOH, I've taken the fixed ITS conditionals from uuoh.mid.181 (16th March 1981). For MAPPUR, I've put the Tenex conditional around the whole of the segment-switching code since none of it is needed on ITS. Note in particular that the BOT patch is no longer needed -- this version of Muddle works happily with the pure region at 700000.
348 lines
6.5 KiB
Plaintext
348 lines
6.5 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
|
|
|
|
.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
|
|
%XUNA: 0 ; HOLDS XUNAME
|
|
%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
|
|
|
|
;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
|