Commit | Line | Data |
---|---|---|
252b5132 RH |
1 | ("cs" 0x0 |
2 | (("size") (1 byte) ("size")) | |
3 | ||
4 | (("hd") (1 byte) ("hd")) | |
5 | (("hs") (1 byte) ("hs")) | |
6 | (("un") (1 byte) ("un")) | |
7 | (("us") (1 byte) ("us")) | |
8 | ||
9 | (("sc") (1 byte) ("sc")) | |
10 | (("ss") (1 byte) ("ss")) | |
11 | (("er") (1 byte) ("er")) | |
12 | (("ed") (1 byte) ("ed")) | |
13 | ||
14 | (("sh") (1 byte) ("sh")) | |
15 | (("ob") (1 byte) ("ob")) | |
16 | (("rl") (1 byte) ("rl")) | |
17 | (("du") (1 byte) ("du")) | |
18 | ||
19 | (("dps") (1 byte) ("dps")) | |
20 | (("dsy") (1 byte) ("dsy")) | |
21 | (("dty") (1 byte) ("dty")) | |
22 | (("dln") (1 byte) ("dln")) | |
23 | ||
24 | (("dso") (1 byte) ("dso")) | |
25 | (("dus") (1 byte) ("dus")) | |
26 | (("dss") (1 byte) ("dss")) | |
27 | (("dbt") (1 byte) ("dbt")) | |
28 | ||
29 | (("dpp") (1 byte) ("dpp")) | |
30 | (("dfp") (1 byte) ("dfp")) | |
31 | (("den") (1 byte) ("den")) | |
32 | (("dds") (1 byte) ("dds")) | |
33 | ||
34 | (("dar") (1 byte) ("dar")) | |
35 | (("dpt") (1 byte) ("dpt")) | |
36 | (("dul") (1 byte) ("dul")) | |
37 | (("dse") (1 byte) ("dse")) | |
38 | ||
39 | (("dot") (1 byte) ("dot"))) | |
40 | ||
41 | ||
42 | ("hd" 0x04 | |
43 | (("module type") (4 bits) ("mt") | |
44 | (("MTYPE_ABS_LM" "0") | |
45 | ("MTYPE_REL_LM" "1") | |
46 | ("MTYPE_OMS_OR_LMS" "2") | |
47 | ("MTYPE_UNSPEC" "0xf"))) | |
48 | (("spare")(4 bits) ("spare1")) | |
49 | (("creation date")( chars 12 bytes)( "cd")) | |
50 | (("number of units") (2 bytes) ("nu")) | |
51 | (("code") (1 byte) ("code")) | |
52 | (("version") (chars 4 bytes) ("ver")) | |
53 | (("address update") (1 byte) ("au")) | |
54 | (("segment identifier") (1 bit) ("si")) | |
55 | (("address field length") (4 bits) ("afl")) | |
56 | (("spare")(3 bits) ("spare2")) | |
57 | (("space size within segment") (1 byte) ("spcsz")) | |
58 | (("segment size") (1 byte) ("segsz")) | |
59 | (("segment shift") (1 byte) ("segsh")) | |
60 | (("entry point") (1 byte) ("ep")) | |
61 | (cond "ptr->ep" | |
62 | (cond "ptr->mt != MTYPE_ABS_LM" | |
63 | (("unit appearance number") (2 bytes) ("uan")) | |
64 | (("section appearance number") (2 bytes) ("sa"))) | |
65 | (cond "segmented_p" | |
66 | (("segment address") (segsize bytes) ("sad"))) | |
67 | (("address") (addrsize bytes) ("address"))) | |
68 | (("os name") (chars variable bytes) ("os")) | |
69 | (("sys name") (chars variable bytes) ("sys")) | |
70 | (("module name") (chars variable bytes) ("mn")) | |
71 | (("cpu") (chars variable bytes) ("cpu"))) | |
72 | ||
73 | ||
74 | ("hs" 0x05 | |
75 | (("neg number") (2 bytes) ("neg"))) | |
76 | ||
77 | ||
78 | ("un" 0x06 | |
79 | (("format") (2 bits) ("format") | |
80 | (("FORMAT_LM" "0") | |
81 | ("FORMAT_OM" "1") | |
82 | ("FORMAT_OMS_OR_LMS" "2"))) | |
83 | (("spare") (6 bits) ("spare1")) | |
84 | (("number of sections") (2 bytes) ("nsections")) | |
85 | (("number of external refs") (2 bytes) ("nextrefs")) | |
86 | (("number of external defs") (2 bytes) ("nextdefs")) | |
87 | (("unit name") (chars variable byte) ("name")) | |
88 | (("tool name") (chars variable byte) ("tool")) | |
89 | (("creation date") (chars 12 bytes) ("tcd")) | |
90 | (("linker name") (chars variable byte) ("linker")) | |
91 | (("creation date") (chars 12 bytes) ("lcd"))) | |
92 | ||
93 | ||
94 | ("us" 0x07 | |
95 | (("negotiation number") (2 bytes) ("neg"))) | |
96 | ||
97 | ||
98 | ("sc" 0x08 | |
99 | (("format") (2 bits) ("format")) | |
100 | (("spare") (6 bits) ("spare")) | |
101 | (("segment address") (segsize bytes) ("segadd")) | |
102 | (("address") (addrsize bytes) ("addr")) | |
103 | (("length") (addrsize bytes) ("length")) | |
104 | (("alignment") (addrsize bytes) ("align")) | |
105 | (("contents") (4 bits) ("contents") | |
106 | (("CONTENTS_CODE" "0") | |
107 | ("CONTENTS_DATA" "1") | |
108 | ("CONTENTS_STACK" "2") | |
109 | ("CONTENTS_DUMMY" "3") | |
110 | ("CONTENTS_SPECIAL" "4") | |
111 | ("CONTENTS_NONSPEC" "0xf"))) | |
112 | (("concat") (4 bits) ("concat") | |
113 | (("CONCAT_SIMPLE" "0") | |
114 | ("CONCAT_SHAREDC" "1") | |
115 | ("CONCAT_DUMMY" "2") | |
116 | ("CONCAT_GROUP" "3") | |
117 | ("CONCAT_SHARED" "4") | |
118 | ("CONCAT_PRIVATE" "5") | |
119 | ("CONCAT_UNSPEC" "0xf"))) | |
120 | (("read") (2 bits) ("read")) | |
121 | (("write") (2 bits) ("write")) | |
122 | (("exec") (2 bits) ("exec")) | |
123 | (("initialized") (2 bits) ("init")) | |
124 | (("mode") (2 bits) ("mode")) | |
125 | (("spare") (6 bits) ("spare1")) | |
126 | (("name") (chars variable byte) ("name"))) | |
127 | ||
128 | ||
129 | ("ss" 0x09 | |
130 | (("neg number") (2 bytes) ("neg"))) | |
131 | ||
132 | ||
133 | ("er" 0x0c | |
134 | (("symbol type") (2 bits) ("type") | |
135 | (("ER_ENTRY" "0") | |
136 | ("ER_DATA" "1") | |
137 | ("ER_NOTDEF" "2") | |
138 | ("ER_NOTSPEC" "3"))) | |
139 | (("spare") (6 bits) ("spare")) | |
140 | (("symbol name") (chars variable byte) ("name"))) | |
141 | ||
142 | ||
143 | ("ed" 0x14 | |
144 | (("section appearance number") (2 bytes) ("section")) | |
145 | (("symbol type") (3 bits) ("type") | |
146 | (("ED_TYPE_ENTRY" "0") | |
147 | ("ED_TYPE_DATA" "1") | |
148 | ("ED_TYPE_CONST" "2") | |
149 | ("ED_TYPE_NOTSPEC" "7"))) | |
150 | (("spare") (5 bits) ("spare")) | |
151 | (cond "ptr->type==ED_TYPE_ENTRY || ptr->type==ED_TYPE_DATA" | |
152 | (("symbol address") (addrsize bytes) ("address"))) | |
153 | (cond "ptr->type==ED_TYPE_CONST" | |
154 | (("constant value") (addrsize bytes) ("constant"))) | |
155 | (("symbol name") (chars variable byte) ("name"))) | |
156 | ||
157 | ||
158 | ("sh" 0x1a | |
159 | (("unit appearance number") (2 bytes) ("unit")) | |
160 | (("section appearance number") (2 bytes) ("section"))) | |
161 | ||
162 | ||
163 | ("ob" 0x1c | |
164 | (("starting address flag") (1 bit) ("saf")) | |
165 | (("compression flag") (1 bit) ("cpf")) | |
166 | (("spare") (6 bits) ("spare")) | |
167 | (cond "ptr->saf" | |
168 | ( ("starting address") (addrsize bytes) ("address"))) | |
169 | (cond "ptr->cpf" | |
170 | (("comp reps") (addrsize bytes) ("compreps"))) | |
171 | (("data") (barray counted byte) ("data"))) | |
172 | ||
173 | ||
174 | ("rl" 0x20 | |
175 | (("boundary of relocateable area") (4 bits) ("boundary")) | |
176 | (("address polarity") (1 bit) ("apol")) | |
177 | (("segment number") (1 bit) ("segment")) | |
178 | (("sign of relocation") (1 bit) ("sign")) | |
179 | (("check range") (1 bit) ("check")) | |
180 | (("reloc address") (addrsize bytes) ("addr")) | |
181 | ||
182 | (("bit loc") (1 byte) ("bitloc")) | |
183 | (("field length") (1 byte) ("flen")) | |
184 | (("bcount") (1 byte) ("bcount")) | |
185 | (("operator") (1 byte) ("op") | |
186 | (("OP_RELOC_ADDR" "1") | |
187 | ("OP_SEC_REF" "0") | |
188 | ("OP_EXT_REF" "2"))) | |
189 | (cond "ptr->op == OP_EXT_REF" | |
190 | (("symbol number") (2 bytes) ("symn")) ) | |
191 | ||
192 | (cond "ptr->op == OP_SEC_REF" | |
193 | (("section number") (2 bytes) ("secn")) | |
194 | (("const opcode") (1 byte) ("copcode_is_3")) | |
195 | (("addend length") (1 byte) ("alength_is_4")) | |
196 | (("addend") (4 byte) ("addend")) | |
197 | (("plus opcode") (1 byte) ("aopcode_is_0x20"))) | |
198 | ||
199 | (cond "ptr->op == OP_RELOC_ADDR" | |
200 | (("dunno") (2 bytes) ("dunno"))) | |
201 | ||
202 | (("end") (1 byte) ("end"))) | |
203 | ||
204 | ||
205 | ("du" 0x30 | |
206 | (("format") (2 bits) ("format")) | |
207 | (("optimized") (1 bit) ("optimized")) | |
208 | (("stackfrmt") (2 bits) ("stackfrmt")) | |
209 | (("spare") (3 bits) ("spare")) | |
210 | (("unit number") (2 bytes) ("unit")) | |
211 | (("sections") (2 bytes) ("sections")) | |
212 | (repeat "ptr->sections" | |
213 | (("section appearance number") (2 bytes) ("san")) | |
214 | (("address") (addrsize bytes) ("address")) | |
215 | (("section length") (addrsize bytes) ("length"))) | |
216 | (("tool name") (chars variable byte) ("tool")) | |
217 | (("creation date") (chars 12 bytes) ("date"))) | |
218 | ||
219 | ||
220 | ("dsy" 0x34 | |
221 | (("symbol type") (7 bits) ("type") | |
222 | (("STYPE_VAR" "0") | |
223 | ("STYPE_LAB" "1") | |
224 | ("STYPE_PROC" "2") | |
225 | ("STYPE_FUNC" "3") | |
226 | ("STYPE_TYPE" "4") | |
227 | ("STYPE_CONST" "5") | |
228 | ("STYPE_ENTRY" "6") | |
229 | ("STYPE_MEMBER" "7") | |
230 | ("STYPE_ENUM" "8") | |
231 | ("STYPE_TAG" "9") | |
232 | ("STYPE_PACKAGE" "10") | |
233 | ("STYPE_GENERIC" "11") | |
234 | ("STYPE_TASK" "12") | |
235 | ("STYPE_EXCEPTION" "13") | |
236 | ("STYPE_PARAMETER" "14") | |
237 | ("STYPE_EQUATE" "15") | |
238 | ("STYPE_UNSPEC" "0x7f"))) | |
239 | (("assignment info") (1 bit) ("assign")) | |
240 | (("symbol id") (2 bytes) ("snumber")) | |
241 | (("symbol name") (chars variable bytes) ("sname")) | |
242 | (("nesting level") (2 bytes) ("nesting")) | |
243 | (cond "ptr->assign" | |
244 | (("assignment type") (1 byte) ("ainfo") | |
245 | (("AINFO_REG" "1") | |
246 | ("AINFO_STATIC_EXT_DEF" "2") | |
247 | ("AINFO_STATIC_EXT_REF" "3") | |
248 | ("AINFO_STATIC_INT" "4") | |
249 | ("AINFO_STATIC_COM" "5") | |
250 | ("AINFO_AUTO" "6") | |
251 | ("AINFO_CONST" "7") | |
252 | ("AINFO_UNSPEC" "0xff"))) | |
253 | (("data length") (addrsize bytes) ("dlength")) | |
254 | (cond "ptr->ainfo == AINFO_STATIC_EXT_DEF | |
255 | || ptr->ainfo == AINFO_STATIC_INT | |
256 | || ptr->ainfo == AINFO_STATIC_COM" | |
257 | (("section number") (2 bytes) ("section"))) | |
258 | (cond "ptr->ainfo == AINFO_STATIC_EXT_DEF | |
259 | || ptr->ainfo == AINFO_STATIC_INT | |
260 | || ptr->ainfo == AINFO_STATIC_COM | |
261 | || ptr->ainfo == AINFO_AUTO" | |
262 | (("address") (addrsize bytes) ("address"))) | |
263 | (cond "ptr->ainfo == AINFO_REG" | |
264 | (("register name") (chars variable bytes) ("reg"))) | |
265 | (cond "ptr->ainfo == AINFO_STATIC_EXT_DEF | |
266 | || ptr->ainfo == AINFO_STATIC_EXT_REF" | |
267 | (("external name") (chars variable bytes) ("ename"))) | |
268 | (cond "ptr->ainfo == AINFO_CONST" | |
269 | (("constant") (chars variable bytes) ("constant")))) | |
270 | (cond "ptr->type == STYPE_MEMBER" | |
271 | (("assignment unit") (1 bit) ("bitunit")) | |
272 | (("spare") (7 bits) ("spare2")) | |
273 | (("field length") (addrsize bytes) ("field_len")) | |
274 | (("field offset") (addrsize bytes) ("field_off")) | |
275 | (cond "ptr->bitunit" | |
276 | (("bit offset") (addrsize bytes) ("field_bitoff")))) | |
277 | (cond "ptr->type== STYPE_ENUM" | |
278 | (("value length") (1 byte) ("evallen")) | |
279 | (("value") (4 bytes) ("evalue"))) | |
280 | (cond "ptr->type == STYPE_CONST" | |
281 | (("value") (chars variable bytes) ("cvalue"))) | |
282 | (cond "ptr->type == STYPE_EQUATE" | |
283 | (("value length") (1 byte) ("qvallen")) | |
284 | (("value") (4 bytes) ("qvalue")) | |
285 | (("basic type") (1 byte) ("btype")) | |
286 | (("size information") (addrsize bytes) ("sizeinfo")) | |
287 | (("sign") (2 bits) ("sign")) | |
288 | (("floating point type") (6 bits) ("flt_type"))) | |
289 | (("source file number") (2 bytes) ("sfn")) | |
290 | (("source line number") (2 bytes) ("sln")) | |
291 | (("negotiation number") (2 bytes) ("neg")) | |
292 | (cond "ptr->type == STYPE_TAG" | |
293 | (("magic") (1 byte) ("magic")))) | |
294 | ||
295 | ||
296 | ||
297 | ("dul" 0x52 | |
298 | (("max declaration type flag") (1 bit) ("max_variable")) | |
299 | (("max spare") (7 bits) ("maxspare")) | |
300 | (cond "ptr->max_variable == 0" | |
301 | (("maximum") (addrsize bytes) ("max")) | |
302 | (("max mode") (chars variable bytes) ("maxmode"))) | |
303 | ||
304 | (("min declaration type flag") (1 bit) ("min_variable")) | |
305 | (("min spare") (7 bits) ("minspare")) | |
306 | (cond "ptr->min_variable == 0" | |
307 | (("minimum") (addrsize bytes) ("min")) | |
308 | (("min mode") (chars variable bytes) ("minmode")))) | |
309 | ||
310 | ||
311 | ("dty" 0x36 | |
312 | (("end flag") (1 bit) ("end")) | |
313 | (("spare") (7 bits) ("spare")) | |
314 | (cond "!ptr->end" | |
315 | (("negotiation") (2 bytes) ("neg")))) | |
316 | ||
317 | ||
318 | ("dbt" 0x44 | |
319 | (("basic type") (1 byte) ("btype") | |
320 | (("BTYPE_VOID" "0") | |
321 | ("BTYPE_UNDEF" "1") | |
322 | ("BTYPE_CHAR" "2") | |
323 | ("BTYPE_INT" "3") | |
324 | ("BTYPE_FLOAT" "4") | |
325 | ("BTYPE_BIT" "5") | |
326 | ("BTYPE_STRING" "6") | |
327 | ("BTYPE_DECIMAL" "7") | |
328 | ("BTYPE_ENUM" "8") | |
329 | ("BTYPE_STRUCT" "9") | |
330 | ("BTYPE_TYPE" "10") | |
331 | ("BTYPE_TAG" "11") | |
332 | ("BTYPE_UNSPEC" "0xff"))) | |
333 | (("size info") (addrsize bytes) ("bitsize")) | |
334 | (("sign") (2 bits) ("sign") | |
335 | (("SIGN_SIGNED" "0") | |
336 | ("SIGN_UNSIGNED" "1") | |
337 | ("SIGN_UNSPEC" "3"))) | |
338 | (("floating point type") (6 bits) ("fptype") | |
339 | (("FPTYPE_SINGLE" "0") | |
340 | ("FPTYPE_DOUBLE" "1") | |
341 | ("FPTYPE_EXTENDED" "2") | |
342 | ("FPTYPE_NOTSPEC" "0x3f"))) | |
343 | (cond "ptr->btype==BTYPE_TAG || ptr->btype == BTYPE_TYPE" | |
344 | (("symbol id") (2 bytes) ("sid"))) | |
345 | (("negotiation") (2 bytes) ("neg"))) | |
346 | ||
347 | ("dar" 0x4e | |
348 | (("element length" ) (addrsize bytes) ("length")) | |
349 | (("dims") (1 byte) ("dims")) | |
350 | (repeat "ptr->dims" | |
351 | (("variable flag") (1 bit) ("variable") | |
352 | (("VARIABLE_FIXED" "0") | |
353 | ("VARIABLE_VARIABLE" "1"))) | |
354 | ||
355 | (("subscript type") (1 bit) ("subtype") | |
356 | (("SUB_INTEGER" "0") | |
357 | ("SUB_TYPE" "1"))) | |
358 | ||
359 | (("spare") (6 bits) ("spare")) | |
360 | ||
361 | (cond "ptr->subtype[n] == SUB_TYPE" | |
362 | (("sub symbol id") (2 bytes) ("sid"))) | |
363 | ||
364 | (cond "ptr->subtype[n] == SUB_INTEGER" | |
365 | (("max declaration type flag") (1 bit) ("max_variable")) | |
366 | (("max spare") (7 bits) ("maxspare")) | |
367 | ;; FIXME: next field should be conditional on max_variable, | |
368 | (("maximum") (addrsize bytes) ("max")) | |
369 | ||
370 | (("min declaration type flag") (1 bit) ("min_variable")) | |
371 | (("min spare") (7 bits) ("minspare")) | |
372 | ;; FIXME: next field should be conditional on min_variable | |
373 | (("minimum") (addrsize bytes) ("min")))) | |
374 | (("negotiation") (2 bytes) ("neg"))) | |
375 | ||
376 | ||
377 | ("dso" 0x3a | |
378 | (("function name") (2 bytes) ("sid")) | |
379 | (("sp update count") (4 bytes) ("spupdates")) | |
380 | (repeat "ptr->spupdates" | |
381 | (("update address") (addrsize bytes) ("address")) | |
382 | (("offset") (addrsize bytes) ("offset")))) | |
383 | ||
384 | ("dln" 0x38 | |
385 | (("number of lines") (2 bytes) ("nln")) | |
386 | (repeat "ptr->nln" | |
387 | (("source file number") (2 bytes) ("sfn")) | |
388 | (("source line number") (2 bytes) ("sln")) | |
389 | (("section number") (2 bytes) ("section")) | |
390 | (("from address") (addrsize bytes) ("from_address")) | |
391 | (("to address") (addrsize bytes) ("to_address")) | |
392 | (("call count") (2 bytes) ("cc")) | |
393 | ) | |
394 | (("neg") (2 bytes) ("neg"))) | |
395 | ||
396 | ("dpp" 0x46 | |
397 | (("start/end") (1 bit) ("end")) | |
398 | (("spare") (7 bits) ("spare")) | |
399 | (cond "!ptr->end" | |
400 | (("params") (1 byte) ("params")) | |
401 | (("neg number") (2 bytes) ("neg")))) | |
402 | ||
403 | ("den" 0x4a | |
404 | (("start/end") (1 bit) ("end")) | |
405 | (("spare") (7 bits) ("spare")) | |
406 | (cond "!ptr->end" | |
407 | (("neg number") (2 bytes) ("neg")))) | |
408 | ||
409 | ("dfp" 0x48 | |
410 | (("start/end flag") (1 bit) ("end")) | |
411 | (("spare") (7 bits) ("spare")) | |
412 | (cond "!ptr->end" | |
413 | (("number of parameters") (1 byte) ("nparams")) | |
414 | (("neg number") (2 bytes) ("neg")))) | |
415 | ||
416 | ("dds" 0x4c | |
417 | (("start/end") (1 bit) ("end")) | |
418 | (("spare") (7 bits) ("spare")) | |
419 | (cond "!ptr->end" | |
420 | (("neg number") (2 bytes) ("neg")))) | |
421 | ||
422 | ("dpt" 0x50 | |
423 | (("neg number") (2 bytes) ("neg")) | |
424 | (("dunno") (1 byte) ("dunno"))) | |
425 | ||
426 | ("dse" 0x54 | |
427 | (("neg number") (2 bytes) ("neg")) | |
428 | (("dunno") (1 byte) ("dunno"))) | |
429 | ||
430 | ("dot" 0x56 | |
431 | (("unknown") (1 byte) ("unknown"))) | |
432 | ; FIXME: unknown field should be repeated symbol number? | |
433 | ||
434 | ||
435 | ("dss" 0x42 | |
436 | (("type") (1 byte) ("type")) | |
437 | (("external/internal") (1 bit) ("internal")) | |
438 | (("spare") (7 bits) ("spare")) | |
439 | (cond "!ptr->internal" | |
440 | ( ("package name") (chars variable byte) ("package"))) | |
441 | (cond "ptr->internal" | |
442 | (("symbol id") (2 bytes) ("id"))) | |
443 | (("record type") (2 bytes) ("record")) | |
444 | (("rules") (chars variable byte) ("rules")) | |
445 | (("number of symbols") (2 bytes) ("nsymbols")) | |
446 | (("unknown" ) (2 bytes) ("fixme"))) | |
447 | ||
448 | ("pss" 0x40 | |
449 | (("negotiation number") (2 bytes) ("efn")) | |
450 | (("number of source files") (2 bytes) ("ns")) | |
451 | (repeat "ptr->ns" | |
452 | (("directory reference bit") (1 bit) ("drb")) | |
453 | (("spare") (7 bits) ("spare")) | |
454 | (("completed file name") (chars variable byte) ("fname")) | |
455 | (cond "ptr->drb[n]" | |
456 | (("directory apperance number") (2 bytes) ("dan")))) | |
457 | ||
458 | (("number of directories") (2 bytes) ("ndir")) | |
459 | (repeat "ptr->ndir" | |
460 | (("directory name") (chars variable bytes) ("dname")))) | |
461 | ||
462 | ||
463 | ; FIXME: the tr block has no contents. sysinfo, etc. aren't prepared | |
464 | ; to deal with that. | |
465 | ; ("tr" 0x7f) | |
466 | ||
467 | ||
468 | ("dus" 0x40 | |
469 | (("negotiation number") (2 bytes) ("efn")) | |
470 | (("number of source files") (2 bytes) ("ns")) | |
471 | (repeat "ptr->ns" | |
472 | (("directory reference bit") (1 bit) ("drb")) | |
473 | (("spare") (7 bits) ("spare")) | |
474 | (("completed file name") (chars variable byte) ("fname")) | |
475 | (cond "ptr->drb[n]" | |
476 | (("directory apperance number") (2 bytes) ("dan")))) | |
477 | (("number of directories") (2 bytes) ("ndir")) | |
478 | (repeat "ptr->ndir" | |
479 | (("directory name") (chars variable bytes) ("dname")))) | |
480 | ||
481 | ||
482 | ("dps" 0x32 | |
483 | (("start/end flag") (1 bit) ("end")) | |
484 | (("block type") (7 bits) ("type") | |
485 | (("BLOCK_TYPE_COMPUNIT" "0") | |
486 | ("BLOCK_TYPE_PROCEDURE" "2") | |
487 | ("BLOCK_TYPE_FUNCTION" "3") | |
488 | ("BLOCK_TYPE_BLOCK" "4") | |
489 | ("BLOCK_TYPE_BASIC" "9"))) | |
490 | (cond "!ptr->end" | |
491 | (("optimization") (1 byte) ("opt")) | |
492 | (("section number") (2 bytes) ("san")) | |
493 | (("address") (addrsize bytes) ("address")) | |
494 | (("block size") (addrsize bytes) ("block_size")) | |
495 | (("nesting") (1 byte) ("nesting")) | |
496 | (cond "ptr->type == BLOCK_TYPE_PROCEDURE | |
497 | || ptr->type == BLOCK_TYPE_FUNCTION" | |
498 | (("return address") (1 bit) ("retaddr")) | |
499 | (("interrupt function flag") (1 bit) ("intrflag")) | |
500 | (("stack update flag") (1 bit) ("stackflag")) | |
501 | (("intra page JMP") (1 bit) ("intrpagejmp")) | |
502 | (("spare") (4 bits) ("spare"))) | |
503 | (("neg number") (2 bytes) ("neg")))) | |
504 |