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