Disable the "purify high core" CORBLK (dubious).
[pdp10-muddle.git] / <mdl.int> / specs.111
1 TITLE SPECS FOR MUDDLE
2
3 RELOCA
4
5 MAIN==1
6 .GLOBAL TYPVLC,PBASE,TYPBOT,MAINPR,PTIME,IDPROC,ROOT,TTICHN,TTOCHN,TYPVEC
7 .GLOBAL %UNAM,%JNAM,%XUNA,%XJNA,NOTTY,GCHAPN,INTHLD,PURBOT,PURTOP,N.CHNS,SPCCHK,CURFCN
8 .GLOBAL TD.GET,TD.PUT,TD.LNT,NOSHUF,GLOTOP,RSTACK,RCYCHN,START,TVSTRT,REALTV
9 .GLOBAL IJFNS,IJFNS1,SJFNS,OPSYS,HASHTB,MULTSG,PURBTB,NSEGS,NOATMS,NOSETG,NOSET
10
11 .INSRT MUDDLE >
12
13 SYSQ
14
15 CONSTANTS
16
17 IFN ITS,[
18         N.CHNS==16.
19         FATINS==.VALUE
20 ]
21 IFE ITS,[
22         N.CHNS==102
23 ]
24
25 IMPURE
26
27 LOC100:         JRST START
28 IFN ITS,[
29 %UNAM:          0               ; HOLDS UNAME
30 %XUNA:          0               ; HOLDS XUNAME
31 %JNAM:          0               ; HOLDS JNAME
32 %XJNA:          0               ; HOLDS XJNAME
33 OPSYS:          -1              ; MINUS ONE (-1) IF ITS
34 RLTSAV:         -1              ; SAVED ARG TO REALTIMER
35 ]
36 IFE ITS,[
37 IJFNS:          0               ; AGCS JFN,,MUDDLE'S JFN
38 IJFNS1:         0               ; SGCS JFN
39 SJFNS:          0               ; SQUOZE JFN,,SAVE JFN
40 OPSYS:          0               ; ZERO IF TOPS20, ONE IF TENEX
41 MULTSG:         0               ; NON-ZERO MEANS TRYING TO USE MULTI SEG STUFF
42 NSEGS:          MAXSEG
43 PURBTB:         REPEAT MAXSEG,HIBOT
44 ]
45 IDPROC:         0               ; ENVIRONMENT NUMBER GENERATOR
46 PTIME:          0               ; UNIQUE NUMBER FOR PROCID AND ENVIRONMENTS
47 OBLNT":         13.             ; LENGTH OF DEFAULT OBLISTS (SMALL)
48 PARTOP":
49 GCSTOP":
50 VECTOP":        VECLOC          ; TOP OF CURRENT GARBAGE COLLECTED SPACE
51 GCSBOT":
52 PARBOT":
53 VECBOT":        PARBASE         ; BOTTOM OF GARBAGE COLLECTED SPACE
54 FRETOP":        120000
55 CODBOT:         0               ; ABSOLUTE BOTTOM OF CODE
56 CODTOP":        PARBASE         ; TOP OF IMPURE CODE (INCLUDING "STORAGE")
57 HITOP:          0               ; TOP OF INTERPRETER PURE CORE
58 GCSNEW":
59 PARNEW":
60 VECNEW":        0               ; LOCATION FOR OFFSET BETWWEN OLD GCSTOP AND NEW GCSTOP
61 INTFLG:         0               ; INTERRUPT PENDING FLAG
62 MAINPR:         0               ; HOLDS POINTER TO THE MAIN PROCESS
63 NOTTY:          0               ; NON-ZERO==> THIS MUDDLE HAS NO TTY
64 GCHAPN:         0               ; NON-ZERO A GC HAS HAPPENED RECENTLY
65 INTHLD:         0               ; NON-ZERO INTERRUPTS CANT HAPPEN
66 PURBOT:         HIBOT           ; BOTTOM OF DYNAMICALLY ALLOCATED PURE
67 PURTOP:         HIBOT           ; TOP OF DYNAMICALLY ALLOCATED PURE
68 SPCCHK:         SETZ            ; SPECIAL/UNSPECIAL CHECKING?
69 NOSHUF:         0               ; FLAG TO BUILD A NON MOVING HI SEG
70 NOATMS:         0               ; FLAG DISALLOWING CREATION OF NEW ATOMS
71 NOSETG:         0               ; FLAG DISALLOWING AUTO-CREATE OF GBINDS
72 NOSET:          0               ; FLAG DISALLOWING AUTO-CREATE OF BINDINGS
73 ;PAGE MAP USAGE TABLE FOR MUDDLE
74 ;EACH PAGE IS REPRESENTED BY ONE BIT IN THE TABLE
75 ;IF BIT = 0 THEN PAGE IS FREE OTHERWISE BUSY
76 ;FOR PAGE n USE BIT (n MOD 32.) IN WORD PMAP+n/32.
77 PMAPB": 525252,,525252  ;SECTION 0 -- BELONGS TO AGC
78         525252,,525252
79         525252,,525252  ;SECTION 1 -- BELONGS TO AGC
80         525252,,525252
81         525252,,525252  ;SECTION 2 -- BELONGS TO AGC
82         525252,,525252
83         525252,,525252  ;SECTION 3 -- BELONGS TO AGC
84         525252,,525252
85         525252,,525252  ;SECTION 4 -- BELONGS TO AGC
86         525252,,525252
87         525252,,525252  ;SECTION 5 -- BELONGS TO AGC (DEPENDS ON HIBOT)
88         525252,,525252
89         525252,,525252  ;SECTION 6 -- START OF PURE CORE (FILLED IN BY INITM)
90         525252,,525252
91         525252,,525252  
92         525252,,525252
93
94 NINT==72.       ; NUMBER OF POSSIBLE ITS INTERRUPTS
95 NASOCS==159.    ; LENGTH OF ASSOCIATION VECTOR
96 PDLBUF==100     ; EXTRA INSURENCE PDL
97 ASOLNT==10      ; LENGTH OF ASSOCIATION BLOCKS
98
99
100 .GLOBAL PATCH,TBINIT,LERR,LPROG,PIDSTO,PROCID,PTIME,GCPDL,INTFLG,WTYP1,WTYP2
101 .GLOBAL PAT,PDLBUF,INTINT,PARNEW,GCPVP,START,SWAP,ICR,SPBASE,TPBASE,GLOBAS,GLOBSP,TPBAS
102 .GLOBAL GCSBOT,GCSTOP,FRETOP,GCSNEW,TD.AGC,SPSTOR,PVSTOR
103 .GLOBAL TOPLEVEL,INTNUM,INTVEC,INTOBL,ASOVEC,ERROBL,MAINPR,RESFUN,.BLOCK,ASOLNT,NODES
104 .GLOBAL WRONGT,TTYOPE,OPEN,CLOSE,IOT,ILVAL,MESS,FACTI,REFVEC,MUDOBL,INITIA
105 .GLOBAL LSTRES,BINDID,DUMNOD,PSTAT,1STEPR,IDPROC,EVATYP,APLTYP,PRNTYP,PURVEC,STOLST
106
107 TVSTRT==1400                    ; THIS SHOULD BE LARGE ENOUGH SO THAT WE HAVE ENOUGH
108                                 ; ROOM FOR INITAL FREE STORAGE
109         
110
111 VECTGO
112 TVBASE":        BLOCK   TVLNT
113         GENERAL
114         TVLNT+2,,0
115 TVLOC==TVBASE
116
117
118
119 ;INITIAL TYPE TABLE
120
121 TYPVLC":
122         BLOCK   2*NUMPRI+2
123         GENERAL
124         2*NUMPRI+2+2,,0
125
126 TYPTP==.-2                      ; POINT TO TOP OF TYPES
127
128 ; INITIAL SYMBOL TABEL FOR RSUBRS
129
130 SQULOC==.
131 SQUTBL: BLOCK   2*NSUBRS
132         TWORD,,0
133         2*NSUBRS+2,,0
134
135 INTVCL: BLOCK   2*NINT
136         TLIST,,0
137         2*NINT+2,,0
138
139 NODLST: TTP,,0
140         0
141         TASOC,,0
142         BLOCK   ASOLNT-3
143         GENERAL+<SASOC,,0>
144         ASOLNT+2,,0
145
146 NODDUM: BLOCK   ASOLNT
147         GENERAL+<SASOC,,0>
148         ASOLNT+2,,0
149
150
151
152 ASOVCL: BLOCK   NASOCS
153         TASOC,,0
154         NASOCS+2,,0
155
156
157
158 ;THESE ENTRIES MUST NOT MOVE DURING INITILAIZATION
159
160 ADDTV TVEC,[-2*NUMPRI-2,,TYPVLC]
161 TYPVEC==TVOFF+TVSTRT-1
162
163 ADDTV TVEC,[-2*NUMPRI-2,,TYPVLC]
164 TYPBOT==TVOFF+TVSTRT-1                  ; POINT TO CURRENT TOP OF TYPE VECTORS
165
166 ;ENTRY FOR ROOT,TTICHN,TTOCHN
167
168 ADDTV TCHAN,0
169 TTICHN==TVOFF+TVSTRT-1
170
171 ADDTV TCHAN,0
172 TTOCHN==TVOFF+TVSTRT-1
173
174 ADDTV TOBLS,0
175 ROOT==TVOFF+TVSTRT-1
176 ADDTV TOBLS,0
177 INITIA==TVOFF+TVSTRT-1
178 ADDTV TOBLS,0
179 INTOBL==TVOFF+TVSTRT-1
180 ADDTV TOBLS,0
181 ERROBL==TVOFF+TVSTRT-1
182 ADDTV TOBLS,0
183 MUDOBL==TVOFF+TVSTRT-1
184 ADDTV TVEC,0
185 GRAPHS==TVOFF+TVSTRT-1
186 ADDTV TFIX,0
187 INTNUM==TVOFF+TVSTRT-1
188 ADDTV TVEC,[-2*NINT,,INTVCL]
189 INTVEC==TVOFF+TVSTRT-1
190 ADDTV TUVEC,[-NASOCS,,ASOVCL]
191 ASOVEC==TVOFF+TVSTRT-1
192 ADDTV TSP,0
193 SPSTOR==TVOFF+TVSTRT-1
194 ADDTV TPVP,0
195 PVSTOR==TVOFF+TVSTRT-1
196 ADDTV TUVEC,0
197 HASHTB==TVOFF+TVSTRT-1
198 ADDTV TLIST,0
199 CHNL0"==TVOFF+TVSTRT-1          ;LIST FOR CURRENTLY OPEN PSUEDO CHANNELS
200
201
202 IFN ITS,[
203 DEFINE ADDCHN N
204         ADDTV TCHAN,0
205         CHNL!N==TVOFF+TVSTRT-1
206         .GLOBAL CHNL!N
207         TERMIN
208
209 REPEAT 15.,ADDCHN \.RPCNT+1
210         
211 DEFINE ADDIPC N
212         ADDTV TLIST,0
213         IPCS!N==TVOFF+TVSTRT-1
214         .GLOBAL IPCS!N
215         TERMIN
216
217 REPEAT 15.,ADDIPC \.RPCNT+1
218 ]
219
220 IFE ITS,[
221 ADDTV TCHAN,0
222 CHNL1==TVOFF+TVSTRT-1
223 .GLOBAL CHNL1
224 REPEAT N.CHNS-1,[ADDTV TCHAN,0
225 ]
226 ]
227
228 ADDTV TASOC,[-ASOLNT,,NODLST]
229 NODES==TVOFF+TVSTRT-1
230
231 ADDTV TASOC,[-ASOLNT,,NODDUM]
232 DUMNOD==TVOFF+TVSTRT-1
233
234 ADDTV TVEC,0
235 EVATYP==TVOFF+TVSTRT-1
236
237 ADDTV TVEC,0
238 APLTYP==TVOFF+TVSTRT-1
239
240 ADDTV TVEC,0
241 PRNTYP==TVOFF+TVSTRT-1
242
243 ; SLOTS ASSOCIATED WITH TEMPLATE DATA STRUCTURES
244
245 ADDTV TUVEC,0
246 TD.GET==TVOFF+TVSTRT-1
247
248 ADDTV TUVEC,0
249 TD.PUT==TVOFF+TVSTRT-1
250
251 ADDTV TUVEC,0
252 TD.AGC==TVOFF+TVSTRT-1
253
254 ADDTV TUVEC,0
255 TD.LNT==TVOFF+TVSTRT-1
256
257 ADDTV TUVEC,0
258 TD.PTY==TVOFF+TVSTRT-1
259
260 ADDTV TCHAN,0
261 RCYCHN==TVOFF+TVSTRT-1
262
263
264 ;GLOBAL SPECIAL PDL
265
266 GSP:    BLOCK   GSPLNT
267         GENERAL
268         GSPLNT+2,,0
269
270 ADDTV TVEC,[-GSPLNT,,GSP]
271 GLOBASE==TVOFF+TVSTRT-1
272 GLOB==.-2
273 ADDTV TVEC,GLOB
274 GLOBSP==TVOFF+TVSTRT-1  ;ENTRY FOR CURRENT POINTER TO GLOBAL SP
275
276 ; POINTER VECTOR TO PURE SHARED RSUBRS
277
278 PURV:   BLOCK   3*20.           ; ENOUGH FOR 20 SUCH (INITIALLY)
279         0
280         3*20.+2,,0
281
282 ADDTV TUVEC,[-3*20.,,PURV]
283 PURVEC==TVOFF+TVSTRT-1
284
285 ADDTV TLIST,0
286 STOLST==TVOFF+TVSTRT-1
287
288 ADDTV TVEC,GLOB
289 GLOTOP==TVOFF+TVSTRT-1
290
291 ;PROCESS VECTOR FOR GARBAGE COLLECTOR PROCESS
292
293 GCPVP:  BLOCK   PVLNT*2
294         GENERAL
295         PVLNT*2+2,,0
296
297
298 VECRET
299
300 PURE
301
302 ;INITIAL PROCESS VECTOR
303
304 PVBASE":        BLOCK   PVLNT*2
305         GENERAL
306         PVLNT*2+2,,0
307 PVLOC==PVBASE
308
309
310 ;ENTRY FOR PROCESS I.D.
311
312         ADDPV   TFIX,1,PROCID
313 ;THE FOLLOWING IRP MAKES SPACE FO9 SAVED ACS
314
315 ZZZ==.
316
317 IRP A,,[0,A,B,C,D,E,PVP,TVP,FRM,AB,TB,TP,SP,M,R,P]B,,[0
318 0,0,0,0,0,0,0,TTP,TAB,TTB,TTP,0,TCODE,TRSUBR,TPDL]
319
320 LOC PVLOC+2*A
321 A!STO==.-PVBASE
322 B,,0
323 0
324 TERMIN
325
326 PVLOC==PVLOC+16.*2
327 LOC ZZZ
328
329
330 ADDPV TTB,0,TBINIT
331 ADDPV TTP,0,TPBASE
332 ADDPV TSP,0,SPBASE
333 ADDPV TPDL,0,PBASE
334 ADDPV 0,0,RESFUN
335 ADDPV TLIST,0,.BLOCK
336 ADDPV TLIST,0,MESS
337 ADDPV TACT,0,FACTI
338 ADDPV TPVP,0,LSTRES
339 ADDPV TFIX,0,BINDID
340 ADDPV TFIX,1,PSTAT
341 ADDPV TPVP,0,1STEPR
342 ADDPV TSP,0,CURFCN
343 ADDPV TTVP,0,REALTV
344
345
346
347 IMPURE
348
349 END