| 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 | |