NAME AllocTrap -- allocate a processor trap vector SYNOPSIS trapNum = AllocTrap(trapNum) D0 D0 LONG AllocTrap(LONG); FUNCTION Allocate a trap number from the current task's pool. These trap numbers are those associated with the 68000 TRAP type instructions. Either a particular number, or the next free number may be allocated. If the trap is already in use (or no free traps are available) a -1 is returned. This function only affects the currently running task. Traps are sent to the trap handler pointed at by tc_TrapCode. Unless changed by user code, this points to a standard trap handler. The stack frame of the exception handler will be: 0(SP) = Exception vector number. This will be in the range of 32 to 47 (corresponding to the Trap #1...Trap #15 instructions). 4(SP) = 68000/68010/68020/68030, etc. exception frame tc_TrapData is not used. WARNING Traps may not be allocated or freed from exception handling code. You are not allowed to write to the exception table yourself. In fact, on some machines you will have trouble finding it - the VBR register may be used to remap its location. INPUTS trapNum - the desired trap number {of 0..15} or -1 for no preference. RESULTS trapNum - the trap number allocated {of 0..15}. If no traps are available, this function returns -1. Instructions of the form "Trap #trapNum" will be sent to the task's trap handler. SEE ALSO FreeTrap
[Back to Amiga Developer Docs]