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