This is an old version from the tos.hyp. The new is on GitHub!

HomeBIOSThe system variablesBIOS error-messages

3.5 The system vectors

As the system variables and vectors represent the lowest level of the operating system, application programs should access these only when absolutely necessary. Explicitly:

The following list contains all system vectors of TOS ignore:

vector Description
LONG $000 Reset: SSP
This and the following memory cells contain a mirror image of the first eight bytes of the ROM. At a reset the value stored here is loaded into the supervisor stack pointer (though this is not meaningful; the 'real' stack is only installed later by the BIOS.
LONG $004 Reset: PC
At a reset the value found here is loaded into the program counter (PC). So one finds here the address that is jumped to on a reset.
LONG $008 Bus Error vector
Exception vector 2: Two bomblets
Bus errors arise when one attempts to access regions of memory to which access is not permitted. In supervisor mode this really can be only nonexistent memory areas. In user mode this can also happen in attempting to access hardware registers or regions below $800.

Normally this vector points to the TOS routine for the display of bombs (in this case just two).
LONG $00c Address Error vector
Exception vector 3: Three bomblets
The 68000 and 68010 can access odd addresses only byte by byte. This exception is triggered if one nevertheless attempts a word or longword access (program counters or stack pointers too may contain no odd addresses).
LONG $010 Illegal Instruction Error vector
Exception vector 4: Four bomblets
An attempt was made to perform an illegal instruction. This vector is altered by many debuggers for using for break-points.
LONG $014 Division by Zero Error vector
Exception vector 5: No bomblets
Division was by 0 during a DIV command. Normally this vector points to an RTE instruction; that's why there are no bomblets.
LONG $018 CHK Instruction Exception vector
Exception vector 6: An exception was created by a CHK instruction.
LONG $01c TRAPV Instruction Exception vector
Exception vector 7: An exception was created by a TRAPV instruction.
LONG $020 Privilege Violation Exception vector
Exception vector 8:
An attempt was made to execute an instruction that is permitted only in supervisor mode. On an Atari TT, the BIOS ignore tests whether the corresponding instruction was a 'move sr,...': unlike on 68000s, this instruction is permitted only in supervisor mode on the TT. If this is the case, the BIOS ignore will substitute the instruction 'move ccr,...' and attempt to keep the program running.
LONG $024 Trace Exception vector
Exception vector 9: If the trace bit is set in the status register, the address specified here is jumped to after every instruction.
LONG $028 Line-A-Vector
Exception vector 10: An attempt was made to execute an instruction that contained the value '$A' in the top four bits. At present this vector is used for the co-called Line-A routines.
LONG $02c Line-F Exception vector
Exception vector 11: An attempt was made to execute an instruction that contained the value '$F' in the top four bits. It is used up to TOS 1.04 by GEM, and is intended actually for the programmming of a floating point unit (FPU).
LONG $030 Reserved
    : Exception vectors 12-23
LONG $05C Reserved
LONG $060 Spurious Interrupt vector
Exception vector 24: Occurs if an interrupt has been triggered but the cause of it could not be ascertained.
LONG $064 Auto-vector Interrupt, Level 1
Unused
LONG $068 Auto-vector Interrupt, Level 2
Points to the handler for horizontal blanking.
LONG $06c Auto-vector Interrupt, Level 3
Unused
LONG $070 Auto-Vector Interrupt, Level 4
Points to the handler for vertical blanking.
LONG $074 Auto-Vector Interrupt, Level 5
Unused
LONG $078 Auto-Vector Interrupt, Level 6
Points to the handler for MFP interrupts.
LONG $07c Auto-Vector Interrupt, Level 7
Unused
LONG $080 TRAP#0
Exception vector 32
Vector for the 'TRAP #0' instruction. As it is not used by the operating system, it throws bomblets.
LONG $084 TRAP#1
Exception vector 33
Vector for the 'TRAP #1' instruction. Points to the Dispatcher for the GEMDOS functions.
LONG $088 TRAP#2
Exception vector 34
Vector for the 'TRAP #2 instruction'.
Depending on the value in d0, different system functions are started:

dec hex name
-2   vq_gdos
-1   address of VDI dispatcher
115 0x73 VDI
200 0xc8 AES
201 0xc9 _appl_yield
LONG $08c - LONG $0b0 TRAP#3 - TRAP#12
Exception vectors 35-44. Throws a corresponding number of bomblets, as they are not used currently by the operating system. However, there are external extensions that use these traps:
LONG $08c TRAP#3
Exception vector 35
Is used only by Omega-Color-CAD, otherise without function.
LONG $090 TRAP#4
Exception-Vector 36
The MS-DOS Emulator SuperCharger use the Trap #4 for his Toolbox.
LONG $094 TRAP#5
Exception vector 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 vector 40
Cubase MROS from Steinberg use this trap.
LONG $0a8 TRAP#10
Exception vector 42
Is used by TapeBIOS. Serves for controlling a BandDrive at the ASCI-bus of the Atari.
LONG $0b4 TRAP#13
Exception vector 45: Vector for the 'TRAP #13' instruction. Points to the Dispatcher for the BIOS functions.
LONG $0b8 TRAP#14
Exception vector 46: Vector for the 'TRAP #14' instruction. Points to the Dispatcher for the XBIOS functions.
LONG $0bc TRAP#15
Not used by the operating system. NVDI and its print monitor make use of this vector.
LONG $0c0 reserves
    : Exception vectors 48-63.
LONG $0fc Reserved
LONG $100 BUSY Interrupt vector
ST-MFP interrupt #0. Is triggered by the parallel port. Normally not used.
LONG $104 DCD-Interrupt
ST-MFP interrupt #1. Is triggered by the serial port (Carrier detect). Normally unused.
LONG $108 CTS-Interrupt
ST-MFP interrupt #2. Is triggered by the serial port (Clear to send). Normally unused.
LONG $10c GPU Done vector
ST-MFP interrupt #3. Can be used by the blitter (when present) to indicate termination of an operation. Normally unused.
LONG $110 Baud-rate Generator
ST-MFP interrupt #4. Normally unused.
LONG $114 200Hz System Clock
ST-MFP interrupt #5. Points to the system clock interrupt and may not be altered under any circumstances (required for timing loops in TOS.
LONG $118 IKBD/MIDI
ST-MFP interrupt #6. Points to the handler for IKBD and MIDI interrupts.
LONG $11c FDC/ACSI
ST-MFP interrupt #7. Normally unallocated.
LONG $120 Display Enable Signal
ST-MFP interrupt #8. Normally blocked.
LONG $124 RS-232 Transmit Error interrupt
ST-MFP interrupt #9. Is triggered by transmission errors when sending data via the serial port.
LONG $128 RS-232 Transmit Buffer Error interrupt
ST-MFP interrupt #10. Is triggered when the transmission of a single byte is completed and the transmit buffer is empty.
LONG $12c RS-232 Receive Error interrupt
ST-MFP interrupt #11. Occurs at receive errors.
LONG $130 RS-232 Receive Buffer Full interrupt
ST-MFP interrupt #12. A complete character has been received by the serial port.
LONG $134 Unused
ST-MFP-Interrupt 13. Unused
LONG $138 RS-232 Ring Indicator interrupt
ST-MFP interrupt #14. Is triggered when the serial port detects an incomming call (e.g. when using a modem). As this interrupt is so easy to trigger, debuggers like to use it as a break signal.
LONG $13c Monochrome Monitor Detect interrupt
ST-MFP-Interrupt 15. unused
LONG $140 TT-MFP interrupts
    : 16 interrupt vectors for the second MFP in the Atari-TT.
LONG $17c TT-MFP interrupts
LONG $180 TT-SCC interrupts
    : Space for the interrupt vectors of the SCC module in the Atari-TT.
LONG $1bc TT-SCC interrupts

See also:
Reset vector   System variables   Exceptions under MagiC Mac


HomeBIOSThe system variablesBIOS error-messages