Keven writes:
> When I trap system traps with user trap procedure set with XSYSTRAP,
> there are 4 integers passed in (int32). The 1st integer is named TRAPCODE.
...
> I get value 1003.
I armed XSYSTRAP and triggered it with 3 kinds of traps:
1) call to ACTIVATE (and my process didn't have PH capability (hi Chris! :))
Systrap caught: parameters = $000003eb, $00000068, $00000002, $00000000
2) call to GETPRIVMODE (and my process didn't have PH capability (hi Chris! :))
Systrap caught: parameters = $000003eb, $000000c8, $00000002, $00000000
3) illegal memory access
**** Data memory protection trap (TRAPS 68).
So...the "thing" that varied (for a successful trap) was paramter two.
As it turns out, genmsgu (5, $68) produces "ACTIVATE",
and genmsgu (5, $c8) produces GETPRIVMODE.
I.e., it would appear that the second parameter is the intrinsic number
that caused the trap.
From CATALOG.PUB.SYS, the title for message set 5:
$SET 5 INTRINSIC - FOR ABORT
BTW, XCODETRAP would have caught that third trap above. For XCODETRAP,
the 4 parameters are:
R26: unknown address of some kind ... does not appear to be pointing
to the interrupt stack marker :(
R25: space ID of instruction causing trap (i.e, upper 32-bits of address)
R24: offset of instruction causing trap (i.e, bottom 32-bits of address)
R23: instruction causing trap (in debug, do: DIS R23 to see it)
--
Stan Sieler [log in to unmask]
http://www.allegro.com/sieler/
|