Quote:
Originally Posted by meynaf
This, of course, won't tell me what that trap #15 was supposed to be doing...
|
Okay, here you have a reference for X68000 traps. Explanations are in japanese, but can be translated with google (with not so much language correctness):
http://datacrystal.romhacking.net/wiki/X68k:TRAP
Speaking about trap #15, it is an IOCS (X68000 bios) call.
Poor translation follows:
Argument d0.b IOCS call number
. Running to run the IOCS, and IOCS code in one word from the IOCS work $ a0e
(High byte always 0) by Le number is saved.
Arguments and return value other than d0.b differ by call number.
To speed up the IOCS call, call shortcuts in such a way that the following
To perform. However, it must be in supervisor state.
movea.l (IOCS call number * 4 + $ 400), a0
jsr (a0)
To create as a subroutine to return in rts Each function of IOCS.
no problem even if destroyed a0.l but when viewed from the (user, when you shortcut
Not guaranteed to be saved), do not destroy For the registers that do not pass the return value of the other
Thing.
How to respond to the vector base register vbr
It is possible to enable the vbr In (ROM IOCS version 1.3) X68030.
On it was confirmed that it is a standard vector that points to the ROM, the vector of the following, it
It may be changed to a value obtained by subtracting 2 from the set address of each. However, some
It is not possible to correspond to those calling the routine directly ROM within IOCS call.
(IOCS processing address table is also changed to vbr + $ 400) trap # 15
IOCS _FNTGET
IOCS _OPMINTST
IOCS _TIMERDST
IOCS _VDISPST
IOCS _CRTCRAS
IOCS _HSYNCST
IOCS _PRNINTST
IOCS _B_INTVCS