-
Notifications
You must be signed in to change notification settings - Fork 16
/
README
154 lines (106 loc) · 4.14 KB
/
README
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
This is a rewrite of Arto Salmi's 6809 simulator. Many changes
have been made to it. This program remains licensed under the
GNU General Public License.
Input Files
Machines
The simulator now has the notion of different 'machines':
which says what types of I/O devices are mapped into the 6809's
address space and how they can be accessed. Adding support for
a new machine is fairly easy.
There are 3 builtin machine types at present. The default,
called 'simple', assumes that you have a full 64KB of RAM,
minus some input/output functions mapped at $FF00 (see I/O below).
If you compile a program with gcc6809 with no special linker
option, you'll get an S-record file that is suitable for running
on this machine. The S-record file will include a vector table
at $FFF0, with a reset vector that points to a _start function,
which will call your main() function. When main returns,
_start writes to an 'exit register' at $FF01, which the simulator
interprets and causes it to stop.
gcc6809 also has a builtin notion of which addresses are used
for text and data. The simple machine enforces this and will
"fault" on invalid accesses.
The second machine is 'wpc', and is an emulation of the
Williams Pinball Controller which was the impetus for me
working on the compiler in the first place.
The third machine, still in development, is called 'eon'
(for Eight-O-Nine). It is similar to simple but has some
more advanced I/O capabilities, like a larger memory space
that can be paged in/out, and a disk emulation for programs
that wants to have persistence.
TODO : Would anyone be interested in a CoCo machine type?
Faults
Debugging
The simulator supports interactive debugging similar to that
provided by 'gdb'.
b <expr>
Set a breakpoint at the given address.
bl
List all breakpoints.
c
Continue running.
d <num>
Delete a breakpoint/watchpoint.
di <expr>
Add a display expression. The value of the expression
is display anytime the CPU breaks.
h
Display help.
l <expr>
List CPU instructions.
me <expr>
Measure the amount of time that a function named by
<expr> takes.
n
Continue until the next instruction is reached.
If the current instruction is a call, then
the debugger resumes after control returns.
p <expr>
Print the value of an expression. See "Expressions" below.
q
Quit the simulator.
re
Reset the CPU/machine.
runfor <expr>
Continue but break after a certain period of (simulated) time.
s
Step one CPU instruction.
set <expr>
Sets the value of an internal variable or target memory.
See "Expressions" below for details on the syntax.
so <file>
Run a set of debugger commands from another file.
The commands may start/stop the CPU. When the commands
are finished, control returns to the previous input
source (the file that called it, or the keyboard.)
sym <file>
Load a symbol table file. Currently, the only format
supported is an aslink map file.
td
Dump the last 256 instructions that were executed.
wa <expr>
Add a watchpoint. The CPU will break when the
memory given by <expr> is modified.
x <expr>
Examine target memory at the address given.
-----------------------------------------------------------------
Original README text from Arto:
simple 6809 simulator under GPL licence
NOTE! this software is beta stage, and has bugs.
To compile it you should have 32-bit ANSI C complier.
This simulator is missing all interrupt related SYNC, NMI Etc...
I am currently busy with school, thus this is relased.
if you have guestion or found something funny in my code please mail me.
have fun!
arto salmi asalmi@ratol.fi
history:
2001-01-28 V1.0 original version
2001-02-15 V1.1 fixed str_scan function, fixed dasm _rel_???? code.
2001-06-19 V1.2 Added changes made by Joze Fabcic:
- 6809's memory is initialized to zero
- function dasm() had two bugs when using vc6.0 complier:
- RDWORD macro used two ++ in same variable
- _rel_byte address was wrong by 1.
- after EXIT command, if invalid instruction is encountered, monitor is activated again
- default file format is motorola S-record
- monitor formatting