-
Notifications
You must be signed in to change notification settings - Fork 0
/
tester.h
298 lines (205 loc) · 5.06 KB
/
tester.h
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
#ifndef TESTER_H
#define TESTER_H
#include "68k/68k.h"
#include "memoryblock.h"
class Results;
class Tester_68k : public Core_68k
{
protected:
MemoryBlock memoryblock;
int cycleCounter;
unsigned adrCounter;
void sync(u8 cycles) { cycleCounter += cycles; }
unsigned getUserVector( u8 level ) { return 0 ; }
void cpuHalted() {}
void sampleIrq();
void op_illegal(u16 opcode);
void setPrivilegeException();
unsigned irqSampleCycle;
void group0exception(u8 type);
void trapException(u8 vector);
bool illegalOpcode;
bool privilege;
bool addressError;
bool busError;
bool group2exception;
unsigned errorCounter;
unsigned testCounter;
u8 memRead(u32 addr);
void memWrite(u32 addr, u8 data);
u16 memWordRead(u32 addr);
void memWordWrite(u32 addr, u16 data);
void setUp();
void check(string ident);
Results* sampleResult();
unsigned getEA(ADM _adm, unsigned reg = 0);
void addWord(u16 _word) {
memoryblock.write(adrCounter++, _word >> 8);
memoryblock.write(adrCounter++, _word & 0xff);
}
public:
Tester_68k();
void printErrorCounter();
void runTestCases();
void testAdd(); //c
void sampleAdd();
void testSub(); //c
void sampleSub();
void testLea(); //c
void sampleLea();
void testAsl(); //c
void sampleAsl();
void testAsr(); //c
void sampleAsr();
void testLsr(); //c
void sampleLsr();
void testLsl(); //c
void sampleLsl();
void testAnd(); //p
void sampleAnd();
void testClr(); //c
void sampleClr();
void testNop(); //c
void sampleNop();
void testExt(); //c
void sampleExt();
void testDbcc();
void sampleDbcc();
void testTst(); //c
void sampleTst();
void testAbcd();
void sampleAbcd();
void testNbcd();
void sampleNbcd();
void testSbcd();
void sampleSbcd();
void testMoveq();
void sampleMoveq();
void testOr();
void sampleOr();
void testEor();
void sampleEor();
void testMovea();
void sampleMovea();
void testMulu();
void sampleMulu();
void testMuls();
void sampleMuls();
void testRol();
void sampleRol();
void testRoxl();
void sampleRoxl();
void testRor();
void sampleRor();
void testRoxr();
void sampleRoxr();
void testBchg();
void sampleBchg();
void testBclr();
void sampleBclr();
void testBset();
void sampleBset();
void testBtst();
void sampleBtst();
void testNeg();
void sampleNeg();
void testNegx();
void sampleNegx();
void testNot();
void sampleNot();
void testScc();
void sampleScc();
void testTas();
void sampleTas();
void testAdda();
void sampleAdda();
void testCmp();
void sampleCmp();
void testCmpa();
void sampleCmpa();
void testSuba();
void sampleSuba();
void testDivu();
void sampleDivu();
void testDivs();
void sampleDivs();
void testMove();
void sampleMove();
void testAddi();
void sampleAddi();
void testAddq();
void sampleAddq();
void testAndi();
void sampleAndi();
void testCmpi();
void sampleCmpi();
void testEori();
void sampleEori();
void testOri();
void sampleOri();
void testSubi();
void sampleSubi();
void testSubq();
void sampleSubq();
void testBcc();
void sampleBcc();
void testBra();
void sampleBra();
void testBsr();
void sampleBsr();
void testJmp();
void sampleJmp();
void testJsr();
void sampleJsr();
void testPea();
void samplePea();
void testMovem();
void sampleMovem();
void testAddx();
void sampleAddx();
void testCmpm();
void sampleCmpm();
void testSubx();
void sampleSubx();
void testAndiCcr();
void sampleAndiCcr();
void testAndiSr();
void sampleAndiSr();
void testChk();
void sampleChk();
void testEoriCcr();
void sampleEoriCcr();
void testOriCcr();
void sampleOriCcr();
void testOriSr();
void sampleOriSr();
void testEoriSr();
void sampleEoriSr();
void testMoveFromSr();
void sampleMoveFromSr();
void testMoveToCcr();
void sampleMoveToCcr();
void testMoveToSr();
void sampleMoveToSr();
void testExg();
void sampleExg();
void testLink();
void sampleLink();
void testMoveUsp();
void sampleMoveUsp();
void testSwap();
void sampleSwap();
void testUnlk();
void sampleUnlk();
void testMovep();
void sampleMovep();
void testTrap();
void sampleTrap();
void testTrapv();
void sampleTrapv();
void testRtr();
void sampleRtr();
void testRts();
void sampleRts();
};
#endif // TESTER_H