It would be no problem to add a mechanism for encoding placeholders for relocatable values, and for supplying those values, but the values themselves would have to come from somewhere.

I don't imagine it's good enough to just change the arguments to certain opcodes. I just assume that to actually relocate something, you have to know how that binary works to know what to change to get the desired end result?

There are at least a few generic relocators already out there in m100sig I can look at to see what they do.



But translating from one machine to another seems ambitious indeed.
I mean it's just a loader, the presumption is that the binary is meant for the platform!

That would be a great tool to have, but I feel like that's a separate job.

A couple years ago I ported ca2ba.100 from 100 to kc85, and I seem to recall I had to do some deducing and guessing. There was only 3 or 4 numbers that needed to be changed, but I think none of them were directly call addresses. But I was able recognize them as being offsets into some known structure like the start of the ram fs.
And I imagine that was a trivial example about as easy as it gets.

https://github.com/LivingM100SIG/Living_M100SIG/blob/main/M100SIG/Lib-08-TECH-PROGRAMMING/CO2BA.100

https://github.com/LivingM100SIG/Living_M100SIG/blob/main/M100SIG/Lib-08-TECH-PROGRAMMING/CO2BA.K85



On 3/8/26 09:01, Stephen Adolph wrote:
Two extensions that would be nice to have.  What do you think?

1.  Some way to identify and adjust addresses to enable relocatable code.  I know teeny has this feature.  Can we have another encoding element for that?

2.  Adjust ROM calls per platform.   This might require another method altogether.  Maybe there would need to be a library of calls and some code to identify the call.  More ambitious.


Also have we landed on an agreed encoding?




--
bkw

Reply via email to