2-34
2.5 TRAP #15 Functions
An additional utility within the dBUG firmware is a function called the TRAP 15 handler. This function
can be called by the user program to utilize various routines within the dBUG, to perform a special task,
and to return control to the dBUG. This section describes the TRAP 15 handler and how it is used.
There are four TRAP #15 functions. These are: OUT_CHAR, IN_CHAR, CHAR_PRESENT, and
EXIT_TO_dBUG.
2.5.1 OUT_CHAR
This function ( function code 0x0013) sends a character, which is in lower 8 bits of D1, to terminal.
Assembly example:
/* assume d1 contains the character */
move.l
#$0013,d0
Selects the function
TRAP
#15
The character in d1 is sent to terminal
C example:
void board_out_char (int ch)
{
/* If your C compiler produces a LINK/UNLK pair for this routine,
* then use the following code which takes this into account
*/
#if l
/* LINK a6,#0 -- produced by C compiler */
asm (“ move.l
8(a6),d1”);
/* put ‘ch’ into d1 */
asm (“ move.l
#0x0013,d0”); /* select the function */
asm (“ trap
#15”);
/* make the call */
/* UNLK a6 -- produced by C compiler */
#else
/* If C compiler does not produce a LINK/UNLK pair, the use
* the following code.
*/
asm (“ move.l 4(sp),d1”);
/* put ‘ch’ into d1 */
asm (“ move.l
#0x0013,d0”); /* select the function */
asm (“ trap
#15”);
/* make the call */
#endif
}
2.5.2 IN_CHAR
This function (function code 0x0010) returns an input character (from terminal) to the caller . The
returned character is in D1.
Assembly example:
move.l #$0010,d0
Select the function
trap
#15
Make the call, the input character is in d1.
C example:
int board_in_char (void)
{
asm (“ move.l
#0x0010,d0”);
/* select the function */
asm (“ trap
#15”);
/* make the call */