Newsgroups: comp.sys.apple2.programmer Path: news.weeg.uiowa.edu!news.uiowa.edu!hobbes.physics.uiowa.edu!math.ohio-state.edu!howland.reston.ans.net!pipex!sunic!EU.net!uunet!comp.vuw.ac.nz!actrix.gen.nz!dempson From: dempson@actrix.gen.nz (David Empson) Subject: Re: ExpressLoad segment format Message-ID: Organization: Actrix Information Exchange References: <2smpt4$17s@schema.fiu.edu> <2sms6g$er0@tuba.cit.cornell.edu> <2snnq9$chj@schema.fiu.edu> <2sp00b$sdn@tuba.cit.cornell.edu> Date: Mon, 6 Jun 1994 08:58:25 GMT Lines: 82 In article <2sp00b$sdn@tuba.cit.cornell.edu>, Jay Krell wrote: > >Really? I just ran dumpobj on an executable with an ~ExpressLoad > >segment and it was one LCONST record, > > Sorry for being incomplete. Do a disassembly with DumpObj, > the -d option with Apple's DumpObj I think. Yes, that does provide some information, in the form of comments to each field. It looks pretty complete in that it explains what is present in the file. It probably isn't enough to explain the data format in general - there may be other records that aren't used in a particular file, or some of the "reserved" fields may have special functions. It is also unclear how some of the fields are calculated (e.g. the "displacement to names" field in the copy of the segment header seems to be an unusual value). From looking at a couple of files, the structure of the data in the expressload segment seems to be: long reserved field (contains 0) word number of segments - 1 header entry table (one entry per segment): word relative offset to segment header table entry word flags (0 in all files I've looked at so far) long handle (0, probably only used in memory) segment number conversion table (one entry per segment): word actual file segment number for original segment segment header table (one entry per segment): long file mark for this segment's LConst record long number of bytes in this segment's LConst record long file mark for this segment's relocation dictionary long number of bytes in this segment's relocation dictionary (Note: following fields are copied or derived from the actual segment header) byte reserved byte label length byte number length byte version long banksize word kind word reserved long org long align byte number sex byte reserved word segment number long segment entry word displacement to names variable reserved byte segment name length variable segment name The ~Expressload segment contains a single LConst record. It is a dynamic data segment. The format of this segment is only the first part of the information: the relocation records and LConsts in the program segments may contain special information. From a quick glance, I can't see anything unusual - the relocation table appears to contain SUPER, cRELOC and cINTERSEG records, as normal for a "compacted" file (OMF version 2). Interesting - DumpOBJ got out of sync while I was trying to dump Finder. > I wonder if the ExpressLoad docs are even on the Toolchest CD's. > Anyone? What is a "Toolchest" CD? If you mean the Developer CDs, then it might have been on an older one (e.g. around the time System 5.0 was released), but there is nothing about ExpressLoad on the Feb 92 CD, which is included on the System 6.0 Golden Master CD. > (You mean ORCA 2.0 manual, right? There isn't an APW manual, is there? > What sort of manual comes with the APW Tools/Interfaces?) APW Tools & Interfaces 1.1 included extracts from the APW 2.0 manual - the chapters on the resource compiler, linker, and the appropriate utilities. The full APW 2.0 manual was never released (nor was APW 2.0). -- David Empson dempson@actrix.gen.nz Snail mail: P.O. Box 27-103, Wellington, New Zealand