68
K
A
DAK
Interrupt Service Procedures
4.8 Vector Table Initialization
The 80x86 processor operating in real mode vectors to an Interrupt Service Procedure
(ISP) directly through its Interrupt Vector Table which, in AMX nomenclature, is simply
called the AMX Vector Table.
The Vector Table may be located in RAM or ROM as dictated by your hardware
configuration. If the Vector Table is in RAM, it can be further characterized as alterable
or not. Whether or not AMX is allowed to alter the content of the Vector Table is
determined by the setting in your launch parameter when you start AMX.
Alterable Vector Table
The Vector Table must be initialized to provide dispatch access to all ISPs. If the Vector
Table is in RAM and is declared alterable, AMX services can be used to initialize the
Vector Table. Your application must initialize the Vector Table entry for each interrupt
or exception which your application services. You can use the AMX procedure ajivtw
(AAIVTW) during the AMX launch to install any ISP or ISP root (including an NMI ISP or
other nonconforming ISPs or exception handlers) into the Vector Table entry of your
choice.
If the Vector Table is in RAM and is declared alterable, AMX will automatically install
its own exception handlers for the error exceptions which AMX treats as task traps.
Unalterable Vector Table
Special consideration is required if the Vector Table is to be in ROM or is declared by
your launch parameter to be unalterable by AMX.
The Vector Table must be initialized when the ROM image is created. If the Vector
Table is in RAM but has been declared unalterable, the RAM copy of the Vector Table
must be initialized (as for a ROM image) before AMX is launched. Pointers to all ISPs
(including conforming ISP roots, nonconforming ISPs and the NMI ISP) must be
installed in the ROM image.
AMX requires that the entries for the error exceptions for which it is responsible be
initialized to branch to the addresses specified below.
Vector AMX
Number Entry Point Purpose
0AADERH Divide by zero
4AAOVFH Overflow
5AABERH Bound error