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