Go to file
Stephen Heumann 850952d612 Treat ORG records as giving a signed offset from the current location.
This is the way they are defined in the GS/OS Reference, as well as the way they seem to be used by all assemblers and all other linkers that I could check (ORCA/M, MPW AsmIIGS, Apple LinkIIGS, old ORCA/APW LINKED, 8-bit ORCA linker).

Previously, this linker treated ORG records as giving an absolute address to ORG to (but with a bug in the address computation). The OMF spec in appendix B of the ORCA/M manual defines them this way, but this is inconsistent with the spec in the GS/OS Reference and with the way ORG records are generated by ORCA/M itself (for an ORG *+expression directive). Therefore, I think this is just an error and the specification in the GS/OS Reference should be regarded as correct.

We still do not support going backward (using a negative ORG operand). Trying to do so will just give an error.
2022-09-26 21:32:28 -05:00
obj The ORCA Linker 2.0.3 from the Opus ][ CD 2017-10-01 21:26:59 -06:00
backup convert CR files to LF for better git compatibility. 2017-10-02 09:35:05 -04:00
build.ninja add makefile and ninja file for use with Golden Gate. 2017-10-02 16:01:45 -04:00
count convert CR files to LF for better git compatibility. 2017-10-02 09:35:05 -04:00
directpage convert CR files to LF for better git compatibility. 2017-10-02 09:35:05 -04:00
exp.asm Properly evaluate non-constant expressions in EQU/GEQU records. 2022-09-25 21:42:20 -05:00
exp.mac convert CR files to LF for better git compatibility. 2017-10-02 09:35:05 -04:00
file.asm Fix bug in handling of pathname buffers at the very beginning of a bank. 2017-10-08 20:47:06 -05:00
file.mac convert CR files to LF for better git compatibility. 2017-10-02 09:35:05 -04:00
GNUmakefile add makefile and ninja file for use with Golden Gate. 2017-10-02 16:01:45 -04:00
LICENSE The ORCA Linker 2.0.3 from the Opus ][ CD 2017-10-01 21:26:59 -06:00
linker.asm Add support for auto-segmentation. 2022-08-30 19:32:09 -05:00
linker.mac convert CR files to LF for better git compatibility. 2017-10-02 09:35:05 -04:00
linker.notes Treat ORG records as giving a signed offset from the current location. 2022-09-26 21:32:28 -05:00
linker.rez Add support for auto-segmentation. 2022-08-30 19:32:09 -05:00
linkit convert CR files to LF for better git compatibility. 2017-10-02 09:35:05 -04:00
make Fix the make script to use actual names of macro files. 2021-03-03 23:27:28 -06:00
out.asm Set position-independent flag only if it is set in all object segments. 2022-08-30 19:46:22 -05:00
out.mac convert CR files to LF for better git compatibility. 2017-10-02 09:35:05 -04:00
pass1.asm Treat ORG records as giving a signed offset from the current location. 2022-09-26 21:32:28 -05:00
pass1.mac convert CR files to LF for better git compatibility. 2017-10-02 09:35:05 -04:00
pass2.asm Treat ORG records as giving a signed offset from the current location. 2022-09-26 21:32:28 -05:00
pass2.mac Give error about excessive alignment at the right time. 2021-03-03 22:53:57 -06:00
README.md The ORCA Linker 2.0.3 from the Opus ][ CD 2017-10-01 21:26:59 -06:00
seg.asm Add support for auto-segmentation. 2022-08-30 19:32:09 -05:00
seg.mac convert CR files to LF for better git compatibility. 2017-10-02 09:35:05 -04:00
smac convert CR files to LF for better git compatibility. 2017-10-02 09:35:05 -04:00
symbol.asm Avoid spurious errors when evaluating EQU/GEQU expressions. 2022-09-25 21:49:01 -05:00
symbol.mac convert CR files to LF for better git compatibility. 2017-10-02 09:35:05 -04:00
util.asm Fix check for valid alignment values. 2021-03-03 23:26:08 -06:00
util.mac Fix check for valid alignment values. 2021-03-03 23:26:08 -06:00

Linker

Apple IIGS ORCA Linker, a link editor for the Apple IIGS object module format

If you would like to make changes to this linker and distribute them to others, feel free to submit them here. If the changes apply to compilation on and for an Apple IIGS, they will generally be approved for distribution on the master branch. For changes that run on a different platform, the project will either be forked or a new repository will be created, as appropriate.

The general conditions that must be met before a change is released on master are:

  1. The modified linker must compile under the currently released version of ORCA/M.

  2. The ORCA compilers must pass their test suites using the new linker, or the test suite must be suitably modified, too.

Contact support@byteworks.us if you need contributor access.

A complete distribution of the ORCA languages, including installers and documentation, is available from the Juiced GS store at https://juiced.gs/store/category/software/. It is distributed as part of the Opus ][ package.