1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
/* mvme.S -- board support for m68k
*
* Copyright (c) 1995, 1996 Cygnus Support
*
* The authors hereby grant permission to use, copy, modify, distribute,
* and license this software and its documentation for any purpose, provided
* that existing copyright notices are retained in all copies and that this
* notice is included verbatim in any distributions. No written agreement,
* license, or royalty fee is required for any of the authorized uses.
* Modifications to this software may be copyrighted by their authors
* and need not follow the licensing terms described here, provided that
* the new terms are clearly indicated on the first page of each file where
* they apply.
*/
#include "asm.h"
.title "mvme.S for m68k-coff"
.align 2
.text
.global SYM (_exit)
.global SYM (outln)
.global SYM (outbyte)
.global SYM (putDebugChar)
.global SYM (inbyte)
.global SYM (getDebugChar)
.global SYM (havebyte)
.global SYM (exceptionHandler)
.set vbr_size, 0x400
.comm SYM (vbr_table), vbr_size
/*
* _exit -- Exit from the application. Normally we cause a user trap
* to return to the ROM monitor for another run.
*/
SYM (_exit):
unlk a6
trap IMM(15)
.word return
.align 2
/*
* inbyte -- get a byte from the serial port
* d0 - contains the byte read in
*/
.align 2
SYM (getDebugChar): /* symbol name used by m68k-stub */
SYM (inbyte):
link a6, IMM(-8)
trap IMM(15)
.word inchr
moveb sp@, d0
extw d0
extl d0
unlk a6
rts
/*
* outbyte -- sends a byte out the serial port
* d0 - contains the byte to be sent
*/
.align 2
SYM (putDebugChar): /* symbol name used by m68k-stub */
SYM (outbyte):
link fp, IMM(-4)
moveb fp@(11), sp@
trap IMM(15)
.word outchr
unlk fp
rts
/*
* outln -- sends a string of bytes out the serial port with a CR/LF
* a0 - contains the address of the string's first byte
* a1 - contains the address of the string's last byte
*/
.align 2
SYM (outln):
link a6, IMM(-8)
moveml a0/a1, sp@
trap IMM(15)
.word outln
unlk a6
rts
/*
* outstr -- sends a string of bytes out the serial port without a CR/LF
* a0 - contains the address of the string's first byte
* a1 - contains the address of the string's last byte
*/
.align 2
SYM (outstr):
link a6, IMM(-8)
moveml a0/a1, sp@
trap IMM(15)
.word outstr
unlk a6
rts
/*
* havebyte -- checks to see if there is a byte in the serial port,
* returns 1 if there is a byte, 0 otherwise.
*/
SYM (havebyte):
trap IMM(15)
.word instat
beqs empty
movel IMM(1), d0
rts
empty:
movel IMM(0), d0
rts
/*
* These constants are for the MVME-135 board's boot monitor. They
* are used with a TRAP 15 call to access the monitor's I/O routines.
* they must be in the word following the trap call.
*/
.set inchr, 0x0
.set instat, 0x1
.set inln, 0x2
.set readstr, 0x3
.set readln, 0x4
.set chkbrk, 0x5
.set outchr, 0x20
.set outstr, 0x21
.set outln, 0x22
.set write, 0x23
.set writeln, 0x24
.set writdln, 0x25
.set pcrlf, 0x26
.set eraseln, 0x27
.set writd, 0x28
.set sndbrk, 0x29
.set tm_ini, 0x40
.set dt_ini, 0x42
.set tm_disp, 0x43
.set tm_rd, 0x44
.set redir, 0x60
.set redir_i, 0x61
.set redir_o, 0x62
.set return, 0x63
.set bindec, 0x64
.set changev, 0x67
.set strcmp, 0x68
.set mulu32, 0x69
.set divu32, 0x6A
.set chk_sum, 0x6B
|