Herunterladen Inhalt Inhalt Diese Seite drucken

Atari TURBO-FREEZER XE 2005 Anleitung Seite 42

Inhaltsverzeichnis

Werbung

$3FF0
8D 7D D7
$3FF3
20 10 2A
$3FF6
8D 7D D7
$3FF9
60
Ein JMP-Aufruf kann so aussehen:
$3FFA
8D 7D D7
$3FFD
4C 10 2A
Hier die Erklärung, was genau bei einem Aufruf von „JSR SFOO" aus Bank Nummer 60 heraus
passiert:
Zuerst wird aus Bank Nummer 60 ab Adresse $3FF0 der Befehl „STA $D77D" gelesen und
danach ausgeführt. Nach der Ausführung des Befehls ist Bank 61 aktiv.
Nun wird aus Bank 61 ab Adresse $3FF3 der Befehl „JSR FOO" gelesen und ausgeführt. Nach
dem Ende des Unterprogrammes kehrt die CPU nach Adresse $3FF6 (immer noch in Bank 61)
zurück.
Danach wird aus Bank 61 ab Adresse $3FF6 der Befehl „STA $D77C" gelesen, ausgeführt, und
damit wieder auf Bank 60 umgeschaltet.
In Bank 60 steht an der Adresse $3FF9 nun der RTS Befehl und der Unterprogramm-Aufruf (JSR
SFOO) wird beendet.
Insgesamt werden für diesen Aufruf die Adressen $3FF0-3FF2 sowie $3FF9 aus Bank 60 und
$3FF3-$3FF8 aus Bank 61 verwendet.
Die „ungenutzten" Adressen kann man nun wie in dem Beispiel gezeigt dazu verwenden, ein
„Sprungbrett" zum Aufruf der Routine BAR in Bank 60 von der Bank 61 aus unterzubringen. Der
Code ist mehr oder weniger derselbe wie für den Aufruf der Routine FOO in Bank 61, nur sind eben
die Banknummern vertauscht.
Dieses System ist zwar recht simpel, aber man muss einige wichtige Details beachten:
• Im Gegensatz zu einem „normalen" JSR, das sich ja die (gesamte) Rücksprungadresse
merkt, muss man hier selber dafür sorgen, dass man wieder in die richtige Bank
zurückspringt.
• Will man eine Unterroutine vorzeitig beenden (zum Beispiel im Fehlerfall), so muss man
beachten, dass beim JSR-Aufruf entweder 2 Return-Adress-Bytes (wenn die Routine aus
der selben Bank aufgerufen wurde) oder 4 Bytes (wenn die Routine aus einer anderen Bank
aufgerufen wurde) am Stack liegen können. In der original Freezer Sofware bereitet dies
keine Probleme, da in der Fehlerbehandlung der Stackpointer komplett zurückgesetzt wird.
TURBO-FREEZER XL/XE 2005 Anleitung - Version 1.20
Bank 60
SFOO STA $D77D
JSR BAR
STA $D77D
RTS
JFOO STA $D77D
JMP BAR
8D 7C D7
20 82 2E
8D 7C D7
60
8D 7C D7
4C 82 2E
Seite 42
Bank 61
SBAR STA $D77C
JSR FOO
STA $D77C
RTS
JBAR STA $D77C
JMP FOO

Werbung

Inhaltsverzeichnis
loading

Verwandte Produkte für Atari TURBO-FREEZER XE 2005

Diese Anleitung auch für:

Turbo-freezer xl 2005

Inhaltsverzeichnis