1/*
2 * cpu32bug.S -- board support for the CPU32BUG monitor.
3 *
4 * Copyright (c) 1995, 1996 Cygnus Support
5 *
6 * The authors hereby grant permission to use, copy, modify, distribute,
7 * and license this software and its documentation for any purpose, provided
8 * that existing copyright notices are retained in all copies and that this
9 * notice is included verbatim in any distributions. No written agreement,
10 * license, or royalty fee is required for any of the authorized uses.
11 * Modifications to this software may be copyrighted by their authors
12 * and need not follow the licensing terms described here, provided that
13 * the new terms are clearly indicated on the first page of each file where
14 * they apply.
15 */
16
17#include "asm.h"
18#include "cpu32bug.h"
19
20	.title "cpu32bug.S for m68k-coff"
21
22	.text
23	.global SYM (_exit)
24	.global SYM (outln)
25	.global SYM (outbyte)
26	.global SYM (putDebugChar)
27	.global SYM (inbyte)
28	.global SYM (getDebugChar)
29	.global SYM (havebyte)
30
31/*
32 * _exit -- Exit from the application. Normally we cause a user trap
33 *          to return to the ROM monitor for another run.
34 */
35	.text
36	.align	2
37SYM (_exit):
38	link	fp, IMM(0)
39        trap	IMM(15)
40        .word	RETURN
41
42/*
43 * inbyte -- get a byte from the serial port
44 *	d0 - contains the byte read in
45 */
46	.text
47	.align	2
48SYM (getDebugChar):		/* symbol name used by m68k-stub */
49SYM (inbyte):
50	link	fp, IMM(-8)
51	trap 	IMM(15)
52	.word	INCHR
53	moveb 	sp@, d0
54	extw	d0
55	extl	d0
56	unlk	fp
57	rts
58
59/*
60 * outbyte -- sends a byte out the serial port
61 *	d0 - contains the byte to be sent
62 */
63	.text
64	.align	2
65SYM (putDebugChar):		/* symbol name used by m68k-stub */
66SYM (outbyte):
67	link	fp, IMM(-4)
68 	moveb	fp@(11), sp@
69	trap 	IMM(15)
70	.word	OUTCHR
71	unlk	fp
72	rts
73
74/*
75 * outln -- sends a string of bytes out the serial port with a CR/LF
76 *	a0 - contains the address of the string's first byte
77 *	a1 - contains the address of the string's last byte
78 */
79	.text
80	.align	2
81SYM (outln):
82	link	fp, IMM(-8)
83	moveml	a0/a1, sp@
84	trap 	IMM(15)
85	.word 	OUTLN
86	unlk	fp
87	rts
88
89/*
90 * outstr -- sends a string of bytes out the serial port without a CR/LF
91 *	a0 - contains the address of the string's first byte
92 *	a1 - contains the address of the string's last byte
93 */
94	.text
95	.align	2
96SYM (outstr):
97	link	fp, IMM(-8)
98	moveml	a0/a1, sp@
99	trap 	IMM(15)
100	.word 	OUTSTR
101	unlk	fp
102	rts
103
104/*
105 * havebyte -- checks to see if there is a byte in the serial port,
106 *             returns 1 if there is a byte, 0 otherwise.
107 */
108	.text
109	.align	2
110SYM (havebyte):
111	trap 	IMM(15)
112	.word	INSTAT
113	beqs	empty
114	movel 	IMM(1), d0
115	rts
116empty:
117	movel	IMM(0), d0
118	rts
119