How were these relocated Kickstart created when only an original binary is available. Any jump instruction from the original image would end up in the physical ROMs not the loaded Kickstart. But it seems to work, so I guess I miss something. But what makes it work in this respect ?
A very, very long time ago I worked on one of the first Kickstart relocation programs with Commodore to allow developers to use a new Kickstart for testing.
A 256k Kickstart resides normally at $FC0000. Kickstart is really a collection of 'modules' that are 'stuck' together. Each 'module' has a kicktag pointer that tells you the current location, the end location, and the next module's location. These locations are addresses in HEX.
When normally compiled the addresses are @ $FCXXXX. However, you can recompile to any address you want but $200000 was normally chosen for that is the start of expansion ram.
The reason this works so well is because the Amiga has only one absolute address at $4. This allows you to put Kickstart anywhere you want and the OS will run great. Any programs that are good 'citizens' will also run fine if they don't make hard coded address calls.
Lastly, Carl and RJ were smart enough to reserve Kickstart space to go up to a meg should the need arise. It would have been interesting to see how that would have progressed if Amiga had continued.
The jump from 256k to 512k was pretty amazing...
Cheers!
-P