Per risponderti con precisione, dovrei controllare bene i sorgenti, comunque in linea generale, il codice non residente è quello che verifica su quale periferica sia in esecuzione il loader e che carica o meno il drivecode.
Bisogna prestare attenzione ad eventuali bytes usati cone "variabili" dal loader...
Se sono compilate nella zona del codice di init, allora è meglio allocarle altrove, in modo che possano restare attive col loader.
Per gli indirizzi di caricamento, vengono specificati nel normale formato disco, cioè i primi 2 bytes letti dalla periferica rappresentano il load address nel formato basso/alto.
Il discorso varia con i files exomizati perchè, se non specificato diversamente in fase di compressione, i loro primi 2 bytes rappresentano l'indirizzo finale... ma questo è un discorso che per ora possiamo evitare, anche perchè è tutto gestito automagicamente dal loader.
Per iniziare, evita modifiche al codice. Fai una versione che lavori "out of the box" e poi pensa a come migliorare secondo le tue esigenze.