Da die Systemvariablen und -vektoren die unterste Schicht des Betriebssystems darstellen, sollten Anwenderprogramme nur wenn unbedingt notwendig auf diese zugreifen. Konkret:
Die folgende Liste enthält alle Systemvektoren des TOS:
Vektor | Beschreibung
| |||||||||||||||||||||
LONG $000 | Reset: SSP
Diese und die folgenden Speicherzellen enthalten eine Spiegelung der ersten acht Bytes des ROMs. Bei einem Reset wird der hier liegende Wert in den Supervisor-Stack-Pointer geladen (allerdings kein sinnvoller; der 'richtige' Stack wird erst später vom BIOS installiert). | |||||||||||||||||||||
LONG $004 | Reset: PC
Bei einem Reset wird der hier vorgefundene Wert in den Program-Counter (PC) geladen. Man findet hier also die Adresse, die bei einem Reset angesprungen wird. | |||||||||||||||||||||
LONG $008 | Busfehler
Exception-Vektor 2: zwei Bömbchen Busfehler treten auf, wenn man versucht, auf Speicherbereiche zuzugreifen, auf die kein Zugriff erlaubt ist. Das können im Supervisor-Modus eigentlich nur nicht-existierende Speicherbereiche sein. Im User-Modus kann es auch beim Zugriff auf Hardware-Register oder Bereiche unterhalb von $800 passieren. Im Normallfall zeigt dieser Vektor auf die TOS-Routine zur Anzeige von Bömbchen (in diesem Fall genau zwei). | |||||||||||||||||||||
LONG $00c | Adreßfehler
Exception-Vektor 3: drei Bömbchen 68000 und 68010 können nur byteweise auf ungerade Adressen zugreifen. Diese Exception wird ausgelöst, wenn man dennoch einen Wort- oder Langwort-Zugriff versucht (auch Programmzähler oder Stack-Pointer dürfen keine ungeraden Adressen enthalten). | |||||||||||||||||||||
LONG $010 | Illegaler Befehl
Exception-Vektor 4: vier Bömbchen Es wurde versucht, einen illegalen Befehl auszuführen. Dieser Vektor wird von vielen Debuggern zur Verwendung für Break-Points geändert. | |||||||||||||||||||||
LONG $014 | Division durch Null
Exception-Vektor 5: kein Bömbchen Bei einem DIV-Befehl wurde durch 0 geteilt. Dieser Vektor zeigt im Normalfall auf einen RTE-Befehl; daher gibt es auch keine Bömbchen. | |||||||||||||||||||||
LONG $018 | CHK-Befehl
Exception-Vektor 6: Es wurde eine Exception durch einen CHK-Befehl erzeugt. | |||||||||||||||||||||
LONG $01c | Befehl TRAPV
Exception-Vektor 7: Es wurde eine Exception durch einen TRAPV-Befehl erzeugt. | |||||||||||||||||||||
LONG $020 | Privilegverletzung
Exception-Vektor 8: Es wurde versucht, einen Befehl auszuführen, der nur im Supervisor-Modus erlaubt ist. Beim Atari-TT testet das BIOS, ob es sich bei dem betreffenden Befehl um einen 'move sr,...' gehandelt hat: dieser Befehl ist im Gegensatz zum 68000er nur im Supervisor-Modus erlaubt. In einem solchen Fall setzt das BIOS statt dessen den Befehl 'move ccr,...' ein und versucht, das Programm weiterlaufen zu lassen. | |||||||||||||||||||||
LONG $024 | Trace
Exception-Vektor 9: Ist das Trace-Bit im Statusregister gesetzt, wird nach jeder Instruktion die hier angegebene Adresse angesprungen. | |||||||||||||||||||||
LONG $028 | Line-A-Vektor
Exception-Vektor 10: Es wurde versucht eine Instruktion auszuführen, die in den obersten vier Bits den Wert '$A' enthält. Zur Zeit wird dieser Vektor für die sogenannten Line-A-Routinen benutzt. | |||||||||||||||||||||
LONG $02c | Line-F-Vektor
Exception-Vektor 11: Es wurde versucht, eine Instruktion auszuführen, die in den obersten vier Bits den Wert '$F' enthält. Wird bis TOS 1.04 vom GEM benutzt, und ist eigentlich für die Programmierung einer Floating-Point-Unit (FPU) gedacht. | |||||||||||||||||||||
LONG $030 | reserviert
| |||||||||||||||||||||
: | Exception-Vektoren 12-23
| |||||||||||||||||||||
LONG $05C | reserviert
| |||||||||||||||||||||
LONG $060 | Spurious Interrupt
Exception-Vektor 24: Tritt auf, wenn ein Interrupt ausgelöst wurde, die Ursache dafür aber nicht feststellbar war. | |||||||||||||||||||||
LONG $064 | Autovektor-Interrupt, Level 1
Unbenutzt. | |||||||||||||||||||||
LONG $068 | Autovektor-Interrupt, Level 2
Zeigt auf den Handler für Horizontal-Blanks. | |||||||||||||||||||||
LONG $06c | Autovektor-Interrupt, Level 3
Unbenutzt. | |||||||||||||||||||||
LONG $070 | Autovektor-Interrupt, Level 4
Zeigt auf den Handler für Vertical-Blanks. | |||||||||||||||||||||
LONG $074 | Autovektor-Interrupt, Level 5
Unbenutzt. | |||||||||||||||||||||
LONG $078 | Autovektor-Interrupt, Level 6
Zeigt auf Handler für MFP-Interrupts. | |||||||||||||||||||||
LONG $07c | Autovektor-Interrupt, Level 7
Unbenutzt. | |||||||||||||||||||||
LONG $080 | TRAP#0
Exception-Vektor 32 Vektor für den Befehl 'TRAP #0'. Da vom Betriebssystem nicht benutzt, gibt es Bömbchen. | |||||||||||||||||||||
LONG $084 | TRAP#1
Exception-Vektor 33 Vektor für den Befehl 'TRAP #1'. Zeigt auf den Dispatcher für die GEMDOS-Funktionen. | |||||||||||||||||||||
LONG $088 | TRAP#2
Exception-Vektor 34 Vektor für den Befehl 'TRAP #2'. In Abhänigkeit vom Wert in d0 werden unterschiedliche Systemfunktionen angesprungen:
| |||||||||||||||||||||
LONG $08c - LONG $0b0 | TRAP#3 - TRAP#12
Exception-Vektoren 35-44. Entsprechend viele Bömbchen, da sie vom Betriebssystem z.Zt. nicht benutzt werden. Allerdings gibt es externe Erweiterungen die diese Traps benutzen: | |||||||||||||||||||||
LONG $0b4 | TRAP#13
Exception-Vektor 45: Vektor für den Befehl 'TRAP #13'. Zeigt auf den Dispatcher für die BIOS-Funktionen. | |||||||||||||||||||||
LONG $0b8 | TRAP#14
Exception-Vektor 46: Vektor für den Befehl 'TRAP #14'. Zeigt auf den Dispatcher für die XBIOS-Funktionen. | |||||||||||||||||||||
LONG $0bc | TRAP#15
Vom Betriebssystem nicht benutzt. NVDI und dessen Druckmonitor verwenden diesen Vektor. | |||||||||||||||||||||
LONG $0c0 | reserviert
| |||||||||||||||||||||
: | Exception-Vektoren 48-63.
| |||||||||||||||||||||
LONG $0fc | reserviert
| |||||||||||||||||||||
LONG $100 | BUSY-Interrupt
ST-MFP-Interrupt 0. Wird durch parallele Schnittstelle ausgelöst. Normalerweise nicht benutzt. | |||||||||||||||||||||
LONG $104 | DCD-Interrupt
ST-MFP-Interrupt 1. Wird durch die serielle Schnittstelle (Carrier detect) ausgelöst. Normalerweise unbenutzt. | |||||||||||||||||||||
LONG $108 | CTS-Interrupt
ST-MFP-Interrupt 2. Wird durch die serielle Schnittstelle (Clear to send) ausgelöst. Normalerweise unbenutzt. | |||||||||||||||||||||
LONG $10c | GPU Done
ST-MFP-Interrupt 3. Kann vom Blitter benutzt werden, um den Abschluß einer Operation anzuzeigen. Normalerweise unbenutzt. | |||||||||||||||||||||
LONG $110 | Baudratengenerator
ST-MFP-Interrupt 4. Normalerweise nicht benutzt. | |||||||||||||||||||||
LONG $114 | 200Hz System Timer
ST-MFP-Interrupt 5. Zeigt auf den Systemtimer-Interrupt und darf auf keinen Fall verändert werden (wird für Timing-Schleifen im TOS benötigt). | |||||||||||||||||||||
LONG $118 | IKBD/MIDI
ST-MFP-Interrupt 6. Zeigt auf den Handler für IKBD- und MIDI-Interrupts. | |||||||||||||||||||||
LONG $11c | FDC/ACSI
ST-MFP-Interrupt 7. Normalerweise unbelegt. | |||||||||||||||||||||
LONG $120 | Display Enable Signal
ST-MFP-Interrupt 8. Normalerweise gesperrt. | |||||||||||||||||||||
LONG $124 | RS232 Sendefehler
ST-MFP-Interrupt 9. Wird bei Übertragungsfehlern beim Senden von Daten über die serielle Schnittstelle ausgelöst. | |||||||||||||||||||||
LONG $128 | RS232 Sendepuffer leer
ST-MFP-Interrupt 10. Wird ausgelöst, wenn der Sendevorgang eines einzelnen Bytes abgeschlossen ist. | |||||||||||||||||||||
LONG $12c | RS232 Empfangsfehler
ST-MFP-Interrupt 11. Tritt bei Empfangsfehlern auf. | |||||||||||||||||||||
LONG $130 | RS232 Empfangspuffer voll
ST-MFP-Interrupt 12. Ein komplettes Zeichen ist von der seriellen Schnittstelle empfangen worden. | |||||||||||||||||||||
LONG $134 | unbenutzt
ST-MFP-Interrupt 13. Unbenutzt | |||||||||||||||||||||
LONG $138 | Ring Indicator
ST-MFP-Interrupt 14. Wird ausgelöst, wenn die serielle Schnittstelle einen ankommenden Anruf bemerkt (z.B. bei Verwendung von Modems). Da dieser Interrupt so leicht auszulösen ist wird er gerne in Debuggern als Break-Signal eingesetzt. | |||||||||||||||||||||
LONG $13c | Monochrom Monitor Detect
ST-MFP-Interrupt 15. Unbenutzt. | |||||||||||||||||||||
LONG $140 | TT-MFP-Interrupts
| |||||||||||||||||||||
: | 16 Interruptvektoren für den zweiten MFP im Atari-TT.
| |||||||||||||||||||||
LONG $17c | TT-MFP-Interrupts
| |||||||||||||||||||||
LONG $180 | TT-SCC-Interrupts
| |||||||||||||||||||||
: | Platz für die Interruptvektoren des SCC-Bausteins im Atari-TT.
| |||||||||||||||||||||
LONG $1bc | TT-SCC-Interrupts
|
Querverweis:
Reset-Vektor Systemvariablen Exceptions unter MagiC Mac