HomeBIOSDie SystemvariablenBIOS Fehlermeldungen

3.5 Die Systemvektoren

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'. Wird von AES und VDI benutzt.
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 $08c TRAP#3
Exception-Vektor 35
Wird nur vom Omega-Color-CAD benutzt, sonst ohne funktion.
LONG $090 TRAP#4
Exception-Vektor 36
Der MS-DOS Emulator SuperCharger benutzt den Trap #4 für sein Toolbox.
LONG $094 TRAP#5
Exception-Vektor 37
Is used by Wind-XES. It is a modular accessory/control panel that lets you load in .WNX ("winks") applications which run concurrently under its environment.
LONG $0a0 TRAP#8
Exception-Vektor 40
Cubase MROS from Steinberg use this trap.
LONG $0a8 TRAP#10
Exception-Vektor 42
Wird vom TapeBIOS benutzt. Dies dient zum ansteuern eines Bandlaufwerk am ASCI-Bus des Ataris.
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


HomeBIOSDie SystemvariablenBIOS Fehlermeldungen