68000 System Call TRAPs ======================= TRAP &A000 - MacOS calls TRAP &F000 - 68000 CoPro calls TRAP 0 - Unix calls OS/9 calls TRAP 1 - Indirect Unix calls Atari ST GEMDOS BDOS TRAP 2 - CP/M BDOS calls Atari AES and VDI Sinclair QDOS basic I/O TRAP 3 - CP/M BIOS calls Sinclair QDOS complex I/O TRAP 4 - Sinclair BASIC command interpreter TRAP 5 - TRAP 6 - TRAP 7 - TRAP 8 - TRAP 9 - TRAP 10 - Sinclair QDOS, wwitch to supervisor mode TRAP 11 - TRAP 12 - CiscOS SWI calls TRAP 13 - OS/9 C I/O Atari ST BIOS TRAP 14 - Atari ST XBIOS TRAP 15 - OS/9 Floating point SimTec68K test I/O TRAP &A000 - MacOS A-line trap ------------------------------ Opcode &Axxx - xxx=function %1010:0xxx:xxxx:xxxx (&000-&7FF) OS traps %1010:1xxx:xxxx:xxxx (&800-&FFF) Toolbox traps TRAP %1010:0ffr:nnnn:nnnn nnnn:nnnn - OS trap number &00-&FF r - return/save A0 ff - flags On entry: D0-D7=data or: A0=>parameter block On exit: D0=result, 0=Ok A0=result2 if r=1 on entry TRAP %1010:1ann:nnnn:nnnn nn:nnnn:nnnn - Toolbox trap number &000-&3FF a - auto-pop TRAP &F000 - CoPro functions ---------------------------- TRAP 0 - Unix/Linux calls ------------------------- On entry: On return: D0=function CC=ok, D0=returned data A0=arg1 CS=error, D0=returned error D1=arg2 A1=arg3 D2=arg4 TRAP 1 - Indirect Unix/Linux calls ---------------------------------- On entry: D0=function A7=>ret, function, arg1, arg2, arg3, arg4 On exit: CC=ok, D0=returned data CS=error, D0=returned error TRAP 0 - OS/9 calls -------------------- On entry: TRAP 0 DC.W function ; inline function number D0,etc=parameters On exit: CC=ok, D0,etc=returned data CS=error, D1 =returned error (nb: not R0) TRAP 1 - Atari ST GEMDOS BDOS ----------------------------- On entry: SP=>function, args... The caller must clean up the stack after the call, eg: move #char,-(sp) ; stack char move #2,-(sp) ; 2=conout, 1=conin, 0=quit, etc trap 1 ; output char add #4,sp ; clean up stack TRAP 2 - Atari AES and VDI -------------------------- On entry: SP=>function, args... The caller must clean up the stack after the call. TRAP 2 - CP/M BDOS calls ------------------------ On entry: D0=function D1=parameters On exit: D0=result TRAP 3 - CP/M BIOS calls ------------------------ On entry: D0=function D1=parameters On exit: D0=result TRAP 2 -Sinclair QDOS basic I/O ------------------------------- TRAP 3 - Sinclair QDOS complex I/O ---------------------------------- TRAP 4 - Sinclair BASIC command interpreter ------------------------------------------- TRAP 5 ------ TRAP 6 ------ TRAP 7 ------ TRAP 8 ------ TRAP 9 ------ TRAP 10 - Sinclair QDOS, switch to supervisor mode -------------------------------------------------- TRAP 11 ------- TRAP 12 - CiscOS SWI calls -------------------------- On entry: D0: SWI R0 A0: SWI number D1: SWI R1 A1: SWI R8 ; rarely used D2: SWI R2 A2: SWI R9 ; rarely used D3: SWI R3 A3: SWI R10 ; only for OS_CallASWIR10 D4: SWI R4 A4: 'RISC OS R12' ; private workspace pointer D5: SWI R5 A5: SWI R12 ; only for OS_CallASWIR12 D6: SWI R6 A6=>stack frame D7: SWI R7 A7=>stack On exit: If VC, D0-D7=any returned data, A0=preserved, A1-A7 preserved if not used If VS, D0=>error block: EQUW errnum:EQUS errstr:EQUB 0 All registers that are not used by the SWI call are preserved, including A0. TRAP 13 - Atari ST BIOS ----------------------- On entry: SP=>function, args... The caller must clean up the stack after the call. TRAP 14 - Atari ST XBIOS ------------------------ On entry: SP=>function, args... The caller must clean up the stack after the call. TRAP 13 - OS/9 C I/O -------------------- On entry: TRAP 13 DC.W function ; inline function number D0,etc=parameters On exit: CC=ok, D0,etc=returned data CS=error, D1 =returned error (nb: not R0) TRAP 15 - OS/9 Floating point maths ----------------------------------- On entry: TRAP 15 DC.W function ; inline function number D0,etc=parameters On exit: CC=ok, D0,etc=returned data CS=error, D1 =returned error (nb: not R0) TRAP 15 - SimTek68 text I/O --------------------------- On entry: D0=function