Hätte hier abschließend noch ein kleines Rechenbeispiel und bin mir nicht sicher ob ich das richtig verstanden habe.
Es geht um die genauen Abläufe wenn ein JSR ausgeführt wird. Das Programm ist sinnbefreit, es geht rein um den Ablauf beim Aufruf des Unterprogramms und dann den Rücksprung zum Aufrufer mit RTS.
1500 A2 00 LDX Bitte melde dich an, um diesen Link zu sehen.
1502 A9 01 LDA Bitte melde dich an, um diesen Link zu sehen.
1504 20 00 30 JSR $3000
1507 RTS
Die Rücksprungadresse ist ja eigentlich $1507.
Laut der Beschreibung auf der Seite Bitte melde dich an, um diesen Link zu sehen. wird die Adresse des JSR-Opcodes $1504 +2 auf den Stack gelegt, also die um 1 verminderte Rücksprungadresse $1507-1 = $1506, und zwar zuerst das Hi-Byte $15 und dann das Lo-Byte $06.
Hier das Unterprogramm:
3000 INX
3001 INX
3002 INX
3003 INX
3004 RTS
Der Befehl RTS holt sich die Adresse dann wieder vom Stack, addiert 1 drauf und trägt $1507 im Program Counter ein wodurch es beim RTS an der Adresse $1507 weitergeht mit der Programmausführung.
Hab ich das richtig verstanden?