Also JSR und PC vom Stack holen geht nicht.
Das geht schon, wenn Du zuvor eine Hilfsroutine an eine bekannte Stelle schreibst:
LDA #$68 ; PLA Opcode-Byte
STA $69
STA $6B
LDA #$AA ; TAX Opcode-Byte
STA $6A
LDA #$A8 ; TAY Opcode-Byte
STA $6C
LDA #$48 ; PHA Opcode-Byte
STA $6D
STA $6F
LDA #$8A ; TXA Opcode-Byte
STA $6E
LDA #$60 ; RTS Opcode-Byte
STA $70
JSR $0069
.I_AM_HERE
Alles anzeigen
Im Anschluß steht in X/Y die Adresse I_AM_HERE - 1.
Ja genau, das war auch meine erste Idee.
Funktioniert auch.
Es ist allerdings sehr umständlich, weil ich ja Byte für Byte schreiben muss ...
Am Ende ist das dann optimiert nur noch ein einziger Befehl an der bekannten Adresse: RTS
Alles andere kann man dann auch wieder im Hauptprogramm machen.
Wenn man davon ausgehen kann, dass das Kernal oder BASIC ROM verfügbar ist, kann man auch ein RTS da nutzen.
Oder ganz raffiniert, einfach gucken ob ein RTS im ROM auch da ist und das verwenden,
Alternativ ist wahrscheinlich die CHRGET Routine in der Zero Page vorhanden, da gibt es ein RTS.
Alternativ, wenn kein ROM und kein CHRGET verfügbar ist, kann man immer noch in eine freie ZP Adresse ein RTS schreiben ...
Das ist es wohl dann.
Oder kommt noch eine gute Idee, habe ich irgendwas übersehen, ein spezieller Trick?