exec_cause impl is garbage
The impl needs to also propagate the IS_DATA in A1! You can use StoneTracker as a testcase.
e.g. use something like:
* exec.library: _LVOCause (a1 = struct Interrupt *)
exec_cause
push all
move.l IS_CODE(a1),d0 ; Interrupt code..
beq.b not_soft_irq
move.l IS_DATA(a1),a3 ; Interrupt data is missing in old UADE!
move.l d0,a0
move #$2100,d0
lea trapcall(pc),a1
move.l a1,TRAP_VECTOR_3
trap #3
not_soft_irq pull all
rts
trapcall move d0,sr
move.l a3,a1 ; Interrupt code expects the data in A1!
jsr (a0)
move #$2000,sr
rte