On 2020-06-24 23:15:40 +0000, Andy McFadden said:
> One thing I can't figure out is why my code in CiderPress
> (reformat/Disasm.cpp) seems to diverge from the specification in the
> Workshop Reference book. Specifically, CiderPress ignores the last few
> fields (SEGNUM, ENTRY, DISPNAME, DISPDATA, LOADNAME). Those fields are
> present in the Object Module Format ERS (the internal doc used while
> the format was developed). The description of the VERSION field says:
>
> "This 1 byte field indicates the version number of the Object Module
> Format with which the Segment is compatable[sic]. This field should be
> 1 for the initial specification of the Object Module Format."
>
> A value of 1 corresponds to v2.0. So the ERS, from Aug 1986, indicates
> that v2.0 was the standard when the IIgs shipped. Perhaps v1.0 was a
> pre-release thing that only visible to early-access developers?
There seems to be some confusion about version numbers. Appendix B of
the (16-bit) ORCA/M 2.0 manual contains documentation for OMF and says
the following:
"There are now three versions of the object module format. The first,
used with [eight-bit] ORCA/M 4.0, is labeled as version zero in the
header. The second, used by ORCA/M 4.1 on both eight-bit and
sixteen-bit Apple II computers, and by early versions of ORCA/M and the
Apple Programmer's Workshop on the Apple IIGS, has a one as the version
number. The newest version, version two, is currently used by ORCA/M. A
variant of this OMF format, known as version 2.1, adds an optional
field to the end of the header. The optional field is not needed, nor
is it created, by native development systems, although the ORCA
utilities and linker will accept OMF 2.1 format files."
It contains diagrams showing the headers for "Version 0", "Version 1",
and "Version 2.1". I believe version 2.0 would be the same as 2.1,
except without the extra TEMPORG field (the difference could be
detected based on DISPNAME).
I think "Version 1", "Version 2.0", and "Version 2.1" (as defined in
the ORCA/M manual) can all be found in various IIGS programs and
object/library files. If you're asking about "Version 0" then AFAIK it
was never used with IIGS stuff, only with eight-bit ORCA/M 4.0.
According to the manual, that version is indeed missing the SEGNUM,
ENTRY, DISPNAME, DISPDATA, and LOADNAME fields.
Incidentally, the even earlier versions of ORCA/M running on DOS 3.3
apparently used an even earlier version of OMF (pre-"Version 0"), as
documented in their manual:
https://archive.org/details/stx_Hayden_Software_ORCA-M_Macro_Assembler_manual/page/n277/
I haven't tracked down the old eight-bit versions of ORCA/M to get
examples of the OMF files they generate, but I think that's where you
would have to look if you want to find them.
--
Stephen Heumann