Konkret geht es um 6510 Assembler (C64).
Die Motorola 6809 hat mit relokatiblen Code kein Problem.
- es gibt relative Sprünge mit 16 Bit Distanz
- es gibt relativen Unterprogramm Aufruf: BSR
Insofern kann ich da Code schreiben, der an jeder Adresse laufen kann.
Mich interessiert, was man in dieser Richtung mit der 6502/6510 machen könnte, trotz aller Einschränkungen dieser Architektur.
Sagen wir mal, da ist ein Maschinen Programm, das an die falsche Adresse geladen und da gestartet wird.
Was für Möglichkeiten hat der Code?
Es ist für eine 6502 CPU ja nicht mal möglich herauszufinden, an welcher Adresse ich gerade laufe.
Oder doch?
Vorschlag 1:
- Ein RTS an eine bekannte Adresse schreiben.
- JSR auf diese Adresse machen
- SP manipulieren und PC vom Stack lesen
Geht es irgendwie anders vielleicht besser oder einfacher?