summaryrefslogtreecommitdiff
path: root/apps/plugins/rockboy/debug.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/rockboy/debug.c')
-rw-r--r--apps/plugins/rockboy/debug.c1246
1 files changed, 612 insertions, 634 deletions
diff --git a/apps/plugins/rockboy/debug.c b/apps/plugins/rockboy/debug.c
index 8459ad3d5b..a829b98799 100644
--- a/apps/plugins/rockboy/debug.c
+++ b/apps/plugins/rockboy/debug.c
@@ -8,549 +8,548 @@
8#include "mem.h" 8#include "mem.h"
9#include "fastmem.h" 9#include "fastmem.h"
10#include "regs.h" 10#include "regs.h"
11#include "rc.h"
12 11
13#include "cpuregs.h" 12#include "cpuregs.h"
14 13
15 14
16static char *mnemonic_table[256] = 15static char *mnemonic_table[256] =
17{ 16{
18 "NOP", 17 "NOP",
19 "LD BC,%w", 18 "LD BC,%w",
20 "LD (BC),A", 19 "LD (BC),A",
21 "INC BC", 20 "INC BC",
22 "INC B", 21 "INC B",
23 "DEC B", 22 "DEC B",
24 "LD B,%b", 23 "LD B,%b",
25 "RLCA", 24 "RLCA",
26 "LD (%w),SP", 25 "LD (%w),SP",
27 "ADD HL,BC", 26 "ADD HL,BC",
28 "LD A,(BC)", 27 "LD A,(BC)",
29 "DEC BC", 28 "DEC BC",
30 "INC C", 29 "INC C",
31 "DEC C", 30 "DEC C",
32 "LD C,%b", 31 "LD C,%b",
33 "RRCA", 32 "RRCA",
34 "STOP", 33 "STOP",
35 "LD DE,%w", 34 "LD DE,%w",
36 "LD (DE),A", 35 "LD (DE),A",
37 "INC DE", 36 "INC DE",
38 "INC D", 37 "INC D",
39 "DEC D", 38 "DEC D",
40 "LD D,%b", 39 "LD D,%b",
41 "RLA", 40 "RLA",
42 "JR %o", 41 "JR %o",
43 "ADD HL,DE", 42 "ADD HL,DE",
44 "LD A,(DE)", 43 "LD A,(DE)",
45 "DEC DE", 44 "DEC DE",
46 "INC E", 45 "INC E",
47 "DEC E", 46 "DEC E",
48 "LD E,%b", 47 "LD E,%b",
49 "RRA", 48 "RRA",
50 "JR NZ,%o", 49 "JR NZ,%o",
51 "LD HL,%w", 50 "LD HL,%w",
52 "LD (HLI),A", 51 "LD (HLI),A",
53 "INC HL", 52 "INC HL",
54 "INC H", 53 "INC H",
55 "DEC H", 54 "DEC H",
56 "LD H,%b", 55 "LD H,%b",
57 "DAA", 56 "DAA",
58 "JR Z,%o", 57 "JR Z,%o",
59 "ADD HL,HL", 58 "ADD HL,HL",
60 "LD A,(HLI)", 59 "LD A,(HLI)",
61 "DEC HL", 60 "DEC HL",
62 "INC L", 61 "INC L",
63 "DEC L", 62 "DEC L",
64 "LD L,%b", 63 "LD L,%b",
65 "CPL", 64 "CPL",
66 "JR NC,%o", 65 "JR NC,%o",
67 "LD SP,%w", 66 "LD SP,%w",
68 "LD (HLD),A", 67 "LD (HLD),A",
69 "INC SP", 68 "INC SP",
70 "INC (HL)", 69 "INC (HL)",
71 "DEC (HL)", 70 "DEC (HL)",
72 "LD (HL),%b", 71 "LD (HL),%b",
73 "SCF", 72 "SCF",
74 "JR C,%o", 73 "JR C,%o",
75 "ADD HL,SP", 74 "ADD HL,SP",
76 "LD A,(HLD)", 75 "LD A,(HLD)",
77 "DEC SP", 76 "DEC SP",
78 "INC A", 77 "INC A",
79 "DEC A", 78 "DEC A",
80 "LD A,%b", 79 "LD A,%b",
81 "CCF", 80 "CCF",
82 "LD B,B", 81 "LD B,B",
83 "LD B,C", 82 "LD B,C",
84 "LD B,D", 83 "LD B,D",
85 "LD B,E", 84 "LD B,E",
86 "LD B,H", 85 "LD B,H",
87 "LD B,L", 86 "LD B,L",
88 "LD B,(HL)", 87 "LD B,(HL)",
89 "LD B,A", 88 "LD B,A",
90 "LD C,B", 89 "LD C,B",
91 "LD C,C", 90 "LD C,C",
92 "LD C,D", 91 "LD C,D",
93 "LD C,E", 92 "LD C,E",
94 "LD C,H", 93 "LD C,H",
95 "LD C,L", 94 "LD C,L",
96 "LD C,(HL)", 95 "LD C,(HL)",
97 "LD C,A", 96 "LD C,A",
98 "LD D,B", 97 "LD D,B",
99 "LD D,C", 98 "LD D,C",
100 "LD D,D", 99 "LD D,D",
101 "LD D,E", 100 "LD D,E",
102 "LD D,H", 101 "LD D,H",
103 "LD D,L", 102 "LD D,L",
104 "LD D,(HL)", 103 "LD D,(HL)",
105 "LD D,A", 104 "LD D,A",
106 "LD E,B", 105 "LD E,B",
107 "LD E,C", 106 "LD E,C",
108 "LD E,D", 107 "LD E,D",
109 "LD E,E", 108 "LD E,E",
110 "LD E,H", 109 "LD E,H",
111 "LD E,L", 110 "LD E,L",
112 "LD E,(HL)", 111 "LD E,(HL)",
113 "LD E,A", 112 "LD E,A",
114 "LD H,B", 113 "LD H,B",
115 "LD H,C", 114 "LD H,C",
116 "LD H,D", 115 "LD H,D",
117 "LD H,E", 116 "LD H,E",
118 "LD H,H", 117 "LD H,H",
119 "LD H,L", 118 "LD H,L",
120 "LD H,(HL)", 119 "LD H,(HL)",
121 "LD H,A", 120 "LD H,A",
122 "LD L,B", 121 "LD L,B",
123 "LD L,C", 122 "LD L,C",
124 "LD L,D", 123 "LD L,D",
125 "LD L,E", 124 "LD L,E",
126 "LD L,H", 125 "LD L,H",
127 "LD L,L", 126 "LD L,L",
128 "LD L,(HL)", 127 "LD L,(HL)",
129 "LD L,A", 128 "LD L,A",
130 "LD (HL),B", 129 "LD (HL),B",
131 "LD (HL),C", 130 "LD (HL),C",
132 "LD (HL),D", 131 "LD (HL),D",
133 "LD (HL),E", 132 "LD (HL),E",
134 "LD (HL),H", 133 "LD (HL),H",
135 "LD (HL),L", 134 "LD (HL),L",
136 "HALT", 135 "HALT",
137 "LD (HL),A", 136 "LD (HL),A",
138 "LD A,B", 137 "LD A,B",
139 "LD A,C", 138 "LD A,C",
140 "LD A,D", 139 "LD A,D",
141 "LD A,E", 140 "LD A,E",
142 "LD A,H", 141 "LD A,H",
143 "LD A,L", 142 "LD A,L",
144 "LD A,(HL)", 143 "LD A,(HL)",
145 "LD A,A", 144 "LD A,A",
146 "ADD A,B", 145 "ADD A,B",
147 "ADD A,C", 146 "ADD A,C",
148 "ADD A,D", 147 "ADD A,D",
149 "ADD A,E", 148 "ADD A,E",
150 "ADD A,H", 149 "ADD A,H",
151 "ADD A,L", 150 "ADD A,L",
152 "ADD A,(HL)", 151 "ADD A,(HL)",
153 "ADD A,A", 152 "ADD A,A",
154 "ADC A,B", 153 "ADC A,B",
155 "ADC A,C", 154 "ADC A,C",
156 "ADC A,D", 155 "ADC A,D",
157 "ADC A,E", 156 "ADC A,E",
158 "ADC A,H", 157 "ADC A,H",
159 "ADC A,L", 158 "ADC A,L",
160 "ADC A,(HL)", 159 "ADC A,(HL)",
161 "ADC A", 160 "ADC A",
162 "SUB B", 161 "SUB B",
163 "SUB C", 162 "SUB C",
164 "SUB D", 163 "SUB D",
165 "SUB E", 164 "SUB E",
166 "SUB H", 165 "SUB H",
167 "SUB L", 166 "SUB L",
168 "SUB (HL)", 167 "SUB (HL)",
169 "SUB A", 168 "SUB A",
170 "SBC A,B", 169 "SBC A,B",
171 "SBC A,C", 170 "SBC A,C",
172 "SBC A,D", 171 "SBC A,D",
173 "SBC A,E", 172 "SBC A,E",
174 "SBC A,H", 173 "SBC A,H",
175 "SBC A,L", 174 "SBC A,L",
176 "SBC A,(HL)", 175 "SBC A,(HL)",
177 "SBC A,A", 176 "SBC A,A",
178 "AND B", 177 "AND B",
179 "AND C", 178 "AND C",
180 "AND D", 179 "AND D",
181 "AND E", 180 "AND E",
182 "AND H", 181 "AND H",
183 "AND L", 182 "AND L",
184 "AND (HL)", 183 "AND (HL)",
185 "AND A", 184 "AND A",
186 "XOR B", 185 "XOR B",
187 "XOR C", 186 "XOR C",
188 "XOR D", 187 "XOR D",
189 "XOR E", 188 "XOR E",
190 "XOR H", 189 "XOR H",
191 "XOR L", 190 "XOR L",
192 "XOR (HL)", 191 "XOR (HL)",
193 "XOR A", 192 "XOR A",
194 "OR B", 193 "OR B",
195 "OR C", 194 "OR C",
196 "OR D", 195 "OR D",
197 "OR E", 196 "OR E",
198 "OR H", 197 "OR H",
199 "OR L", 198 "OR L",
200 "OR (HL)", 199 "OR (HL)",
201 "OR A", 200 "OR A",
202 "CP B", 201 "CP B",
203 "CP C", 202 "CP C",
204 "CP D", 203 "CP D",
205 "CP E", 204 "CP E",
206 "CP H", 205 "CP H",
207 "CP L", 206 "CP L",
208 "CP (HL)", 207 "CP (HL)",
209 "CP A", 208 "CP A",
210 "RET NZ", 209 "RET NZ",
211 "POP BC", 210 "POP BC",
212 "JP NZ,%w", 211 "JP NZ,%w",
213 "JP %w", 212 "JP %w",
214 "CALL NZ,%w", 213 "CALL NZ,%w",
215 "PUSH BC", 214 "PUSH BC",
216 "ADD A,%b", 215 "ADD A,%b",
217 "RST 0h", 216 "RST 0h",
218 "RET Z", 217 "RET Z",
219 "RET", 218 "RET",
220 "JP Z,%w", 219 "JP Z,%w",
221 NULL, 220 NULL,
222 "CALL Z,%w", 221 "CALL Z,%w",
223 "CALL %w", 222 "CALL %w",
224 "ADC A,%b", 223 "ADC A,%b",
225 "RST 8h", 224 "RST 8h",
226 "RET NC", 225 "RET NC",
227 "POP DE", 226 "POP DE",
228 "JP NC,%w", 227 "JP NC,%w",
229 NULL, 228 NULL,
230 "CALL NC,%w", 229 "CALL NC,%w",
231 "PUSH DE", 230 "PUSH DE",
232 "SUB %b", 231 "SUB %b",
233 "RST 10h", 232 "RST 10h",
234 "RET C", 233 "RET C",
235 "RETI", 234 "RETI",
236 "JP C,%w", 235 "JP C,%w",
237 NULL, 236 NULL,
238 "CALL C,%w", 237 "CALL C,%w",
239 NULL, 238 NULL,
240 "SBC A,%b", 239 "SBC A,%b",
241 "RST 18h", 240 "RST 18h",
242 "LD (FF00+%b),A", 241 "LD (FF00+%b),A",
243 "POP HL", 242 "POP HL",
244 "LD (FF00+C),A", 243 "LD (FF00+C),A",
245 NULL, 244 NULL,
246 NULL, 245 NULL,
247 "PUSH HL", 246 "PUSH HL",
248 "AND %b", 247 "AND %b",
249 "RST 20h", 248 "RST 20h",
250 "ADD SP,%o", 249 "ADD SP,%o",
251 "JP HL", 250 "JP HL",
252 "LD (%w),A", 251 "LD (%w),A",
253 NULL, 252 NULL,
254 NULL, 253 NULL,
255 NULL, 254 NULL,
256 "XOR %b", 255 "XOR %b",
257 "RST 28h", 256 "RST 28h",
258 "LD A,(FF00+%b)", 257 "LD A,(FF00+%b)",
259 "POP AF", 258 "POP AF",
260 "LD A,(FF00+C)", 259 "LD A,(FF00+C)",
261 "DI", 260 "DI",
262 NULL, 261 NULL,
263 "PUSH AF", 262 "PUSH AF",
264 "OR %b", 263 "OR %b",
265 "RST 30h", 264 "RST 30h",
266 "LD HL,SP%o", 265 "LD HL,SP%o",
267 "LD SP,HL", 266 "LD SP,HL",
268 "LD A,(%w)", 267 "LD A,(%w)",
269 "EI", 268 "EI",
270 NULL, 269 NULL,
271 NULL, 270 NULL,
272 "CP %b", 271 "CP %b",
273 "RST 38h" 272 "RST 38h"
274}; 273};
275 274
276static char *cb_mnemonic_table[256] = 275static char *cb_mnemonic_table[256] =
277{ 276{
278 "RLC B", 277 "RLC B",
279 "RLC C", 278 "RLC C",
280 "RLC D", 279 "RLC D",
281 "RLC E", 280 "RLC E",
282 "RLC H", 281 "RLC H",
283 "RLC L", 282 "RLC L",
284 "RLC (HL)", 283 "RLC (HL)",
285 "RLC A", 284 "RLC A",
286 "RRC B", 285 "RRC B",
287 "RRC C", 286 "RRC C",
288 "RRC D", 287 "RRC D",
289 "RRC E", 288 "RRC E",
290 "RRC H", 289 "RRC H",
291 "RRC L", 290 "RRC L",
292 "RRC (HL)", 291 "RRC (HL)",
293 "RRC A", 292 "RRC A",
294 "RL B", 293 "RL B",
295 "RL C", 294 "RL C",
296 "RL D", 295 "RL D",
297 "RL E", 296 "RL E",
298 "RL H", 297 "RL H",
299 "RL L", 298 "RL L",
300 "RL (HL)", 299 "RL (HL)",
301 "RL A", 300 "RL A",
302 "RR B", 301 "RR B",
303 "RR C", 302 "RR C",
304 "RR D", 303 "RR D",
305 "RR E", 304 "RR E",
306 "RR H", 305 "RR H",
307 "RR L", 306 "RR L",
308 "RR (HL)", 307 "RR (HL)",
309 "RR A", 308 "RR A",
310 "SLA B", 309 "SLA B",
311 "SLA C", 310 "SLA C",
312 "SLA D", 311 "SLA D",
313 "SLA E", 312 "SLA E",
314 "SLA H", 313 "SLA H",
315 "SLA L", 314 "SLA L",
316 "SLA (HL)", 315 "SLA (HL)",
317 "SLA A", 316 "SLA A",
318 "SRA B", 317 "SRA B",
319 "SRA C", 318 "SRA C",
320 "SRA D", 319 "SRA D",
321 "SRA E", 320 "SRA E",
322 "SRA H", 321 "SRA H",
323 "SRA L", 322 "SRA L",
324 "SRA (HL)", 323 "SRA (HL)",
325 "SRA A", 324 "SRA A",
326 "SWAP B", 325 "SWAP B",
327 "SWAP C", 326 "SWAP C",
328 "SWAP D", 327 "SWAP D",
329 "SWAP E", 328 "SWAP E",
330 "SWAP H", 329 "SWAP H",
331 "SWAP L", 330 "SWAP L",
332 "SWAP (HL)", 331 "SWAP (HL)",
333 "SWAP A", 332 "SWAP A",
334 "SRL B", 333 "SRL B",
335 "SRL C", 334 "SRL C",
336 "SRL D", 335 "SRL D",
337 "SRL E", 336 "SRL E",
338 "SRL H", 337 "SRL H",
339 "SRL L", 338 "SRL L",
340 "SRL (HL)", 339 "SRL (HL)",
341 "SRL A", 340 "SRL A",
342 "BIT 0,B", 341 "BIT 0,B",
343 "BIT 0,C", 342 "BIT 0,C",
344 "BIT 0,D", 343 "BIT 0,D",
345 "BIT 0,E", 344 "BIT 0,E",
346 "BIT 0,H", 345 "BIT 0,H",
347 "BIT 0,L", 346 "BIT 0,L",
348 "BIT 0,(HL)", 347 "BIT 0,(HL)",
349 "BIT 0,A", 348 "BIT 0,A",
350 "BIT 1,B", 349 "BIT 1,B",
351 "BIT 1,C", 350 "BIT 1,C",
352 "BIT 1,D", 351 "BIT 1,D",
353 "BIT 1,E", 352 "BIT 1,E",
354 "BIT 1,H", 353 "BIT 1,H",
355 "BIT 1,L", 354 "BIT 1,L",
356 "BIT 1,(HL)", 355 "BIT 1,(HL)",
357 "BIT 1,A", 356 "BIT 1,A",
358 "BIT 2,B", 357 "BIT 2,B",
359 "BIT 2,C", 358 "BIT 2,C",
360 "BIT 2,D", 359 "BIT 2,D",
361 "BIT 2,E", 360 "BIT 2,E",
362 "BIT 2,H", 361 "BIT 2,H",
363 "BIT 2,L", 362 "BIT 2,L",
364 "BIT 2,(HL)", 363 "BIT 2,(HL)",
365 "BIT 2,A", 364 "BIT 2,A",
366 "BIT 3,B", 365 "BIT 3,B",
367 "BIT 3,C", 366 "BIT 3,C",
368 "BIT 3,D", 367 "BIT 3,D",
369 "BIT 3,E", 368 "BIT 3,E",
370 "BIT 3,H", 369 "BIT 3,H",
371 "BIT 3,L", 370 "BIT 3,L",
372 "BIT 3,(HL)", 371 "BIT 3,(HL)",
373 "BIT 3,A", 372 "BIT 3,A",
374 "BIT 4,B", 373 "BIT 4,B",
375 "BIT 4,C", 374 "BIT 4,C",
376 "BIT 4,D", 375 "BIT 4,D",
377 "BIT 4,E", 376 "BIT 4,E",
378 "BIT 4,H", 377 "BIT 4,H",
379 "BIT 4,L", 378 "BIT 4,L",
380 "BIT 4,(HL)", 379 "BIT 4,(HL)",
381 "BIT 4,A", 380 "BIT 4,A",
382 "BIT 5,B", 381 "BIT 5,B",
383 "BIT 5,C", 382 "BIT 5,C",
384 "BIT 5,D", 383 "BIT 5,D",
385 "BIT 5,E", 384 "BIT 5,E",
386 "BIT 5,H", 385 "BIT 5,H",
387 "BIT 5,L", 386 "BIT 5,L",
388 "BIT 5,(HL)", 387 "BIT 5,(HL)",
389 "BIT 5,A", 388 "BIT 5,A",
390 "BIT 6,B", 389 "BIT 6,B",
391 "BIT 6,C", 390 "BIT 6,C",
392 "BIT 6,D", 391 "BIT 6,D",
393 "BIT 6,E", 392 "BIT 6,E",
394 "BIT 6,H", 393 "BIT 6,H",
395 "BIT 6,L", 394 "BIT 6,L",
396 "BIT 6,(HL)", 395 "BIT 6,(HL)",
397 "BIT 6,A", 396 "BIT 6,A",
398 "BIT 7,B", 397 "BIT 7,B",
399 "BIT 7,C", 398 "BIT 7,C",
400 "BIT 7,D", 399 "BIT 7,D",
401 "BIT 7,E", 400 "BIT 7,E",
402 "BIT 7,H", 401 "BIT 7,H",
403 "BIT 7,L", 402 "BIT 7,L",
404 "BIT 7,(HL)", 403 "BIT 7,(HL)",
405 "BIT 7,A", 404 "BIT 7,A",
406 "RES 0,B", 405 "RES 0,B",
407 "RES 0,C", 406 "RES 0,C",
408 "RES 0,D", 407 "RES 0,D",
409 "RES 0,E", 408 "RES 0,E",
410 "RES 0,H", 409 "RES 0,H",
411 "RES 0,L", 410 "RES 0,L",
412 "RES 0,(HL)", 411 "RES 0,(HL)",
413 "RES 0,A", 412 "RES 0,A",
414 "RES 1,B", 413 "RES 1,B",
415 "RES 1,C", 414 "RES 1,C",
416 "RES 1,D", 415 "RES 1,D",
417 "RES 1,E", 416 "RES 1,E",
418 "RES 1,H", 417 "RES 1,H",
419 "RES 1,L", 418 "RES 1,L",
420 "RES 1,(HL)", 419 "RES 1,(HL)",
421 "RES 1,A", 420 "RES 1,A",
422 "RES 2,B", 421 "RES 2,B",
423 "RES 2,C", 422 "RES 2,C",
424 "RES 2,D", 423 "RES 2,D",
425 "RES 2,E", 424 "RES 2,E",
426 "RES 2,H", 425 "RES 2,H",
427 "RES 2,L", 426 "RES 2,L",
428 "RES 2,(HL)", 427 "RES 2,(HL)",
429 "RES 2,A", 428 "RES 2,A",
430 "RES 3,B", 429 "RES 3,B",
431 "RES 3,C", 430 "RES 3,C",
432 "RES 3,D", 431 "RES 3,D",
433 "RES 3,E", 432 "RES 3,E",
434 "RES 3,H", 433 "RES 3,H",
435 "RES 3,L", 434 "RES 3,L",
436 "RES 3,(HL)", 435 "RES 3,(HL)",
437 "RES 3,A", 436 "RES 3,A",
438 "RES 4,B", 437 "RES 4,B",
439 "RES 4,C", 438 "RES 4,C",
440 "RES 4,D", 439 "RES 4,D",
441 "RES 4,E", 440 "RES 4,E",
442 "RES 4,H", 441 "RES 4,H",
443 "RES 4,L", 442 "RES 4,L",
444 "RES 4,(HL)", 443 "RES 4,(HL)",
445 "RES 4,A", 444 "RES 4,A",
446 "RES 5,B", 445 "RES 5,B",
447 "RES 5,C", 446 "RES 5,C",
448 "RES 5,D", 447 "RES 5,D",
449 "RES 5,E", 448 "RES 5,E",
450 "RES 5,H", 449 "RES 5,H",
451 "RES 5,L", 450 "RES 5,L",
452 "RES 5,(HL)", 451 "RES 5,(HL)",
453 "RES 5,A", 452 "RES 5,A",
454 "RES 6,B", 453 "RES 6,B",
455 "RES 6,C", 454 "RES 6,C",
456 "RES 6,D", 455 "RES 6,D",
457 "RES 6,E", 456 "RES 6,E",
458 "RES 6,H", 457 "RES 6,H",
459 "RES 6,L", 458 "RES 6,L",
460 "RES 6,(HL)", 459 "RES 6,(HL)",
461 "RES 6,A", 460 "RES 6,A",
462 "RES 7,B", 461 "RES 7,B",
463 "RES 7,C", 462 "RES 7,C",
464 "RES 7,D", 463 "RES 7,D",
465 "RES 7,E", 464 "RES 7,E",
466 "RES 7,H", 465 "RES 7,H",
467 "RES 7,L", 466 "RES 7,L",
468 "RES 7,(HL)", 467 "RES 7,(HL)",
469 "RES 7,A", 468 "RES 7,A",
470 "SET 0,B", 469 "SET 0,B",
471 "SET 0,C", 470 "SET 0,C",
472 "SET 0,D", 471 "SET 0,D",
473 "SET 0,E", 472 "SET 0,E",
474 "SET 0,H", 473 "SET 0,H",
475 "SET 0,L", 474 "SET 0,L",
476 "SET 0,(HL)", 475 "SET 0,(HL)",
477 "SET 0,A", 476 "SET 0,A",
478 "SET 1,B", 477 "SET 1,B",
479 "SET 1,C", 478 "SET 1,C",
480 "SET 1,D", 479 "SET 1,D",
481 "SET 1,E", 480 "SET 1,E",
482 "SET 1,H", 481 "SET 1,H",
483 "SET 1,L", 482 "SET 1,L",
484 "SET 1,(HL)", 483 "SET 1,(HL)",
485 "SET 1,A", 484 "SET 1,A",
486 "SET 2,B", 485 "SET 2,B",
487 "SET 2,C", 486 "SET 2,C",
488 "SET 2,D", 487 "SET 2,D",
489 "SET 2,E", 488 "SET 2,E",
490 "SET 2,H", 489 "SET 2,H",
491 "SET 2,L", 490 "SET 2,L",
492 "SET 2,(HL)", 491 "SET 2,(HL)",
493 "SET 2,A", 492 "SET 2,A",
494 "SET 3,B", 493 "SET 3,B",
495 "SET 3,C", 494 "SET 3,C",
496 "SET 3,D", 495 "SET 3,D",
497 "SET 3,E", 496 "SET 3,E",
498 "SET 3,H", 497 "SET 3,H",
499 "SET 3,L", 498 "SET 3,L",
500 "SET 3,(HL)", 499 "SET 3,(HL)",
501 "SET 3,A", 500 "SET 3,A",
502 "SET 4,B", 501 "SET 4,B",
503 "SET 4,C", 502 "SET 4,C",
504 "SET 4,D", 503 "SET 4,D",
505 "SET 4,E", 504 "SET 4,E",
506 "SET 4,H", 505 "SET 4,H",
507 "SET 4,L", 506 "SET 4,L",
508 "SET 4,(HL)", 507 "SET 4,(HL)",
509 "SET 4,A", 508 "SET 4,A",
510 "SET 5,B", 509 "SET 5,B",
511 "SET 5,C", 510 "SET 5,C",
512 "SET 5,D", 511 "SET 5,D",
513 "SET 5,E", 512 "SET 5,E",
514 "SET 5,H", 513 "SET 5,H",
515 "SET 5,L", 514 "SET 5,L",
516 "SET 5,(HL)", 515 "SET 5,(HL)",
517 "SET 5,A", 516 "SET 5,A",
518 "SET 6,B", 517 "SET 6,B",
519 "SET 6,C", 518 "SET 6,C",
520 "SET 6,D", 519 "SET 6,D",
521 "SET 6,E", 520 "SET 6,E",
522 "SET 6,H", 521 "SET 6,H",
523 "SET 6,L", 522 "SET 6,L",
524 "SET 6,(HL)", 523 "SET 6,(HL)",
525 "SET 6,A", 524 "SET 6,A",
526 "SET 7,B", 525 "SET 7,B",
527 "SET 7,C", 526 "SET 7,C",
528 "SET 7,D", 527 "SET 7,D",
529 "SET 7,E", 528 "SET 7,E",
530 "SET 7,H", 529 "SET 7,H",
531 "SET 7,L", 530 "SET 7,L",
532 "SET 7,(HL)", 531 "SET 7,(HL)",
533 "SET 7,A" 532 "SET 7,A"
534}; 533};
535 534
536static byte operand_count[256] = 535static byte operand_count[256] =
537{ 536{
538 1, 3, 1, 1, 1, 1, 2, 1, 3, 1, 1, 1, 1, 1, 2, 1, 537 1, 3, 1, 1, 1, 1, 2, 1, 3, 1, 1, 1, 1, 1, 2, 1,
539 1, 3, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 538 1, 3, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1,
540 2, 3, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 539 2, 3, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1,
541 2, 3, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 540 2, 3, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1,
542 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 541 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
543 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 542 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
544 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 543 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
545 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 544 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
546 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 545 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
547 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 546 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
548 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 547 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
549 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 548 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
550 1, 1, 3, 3, 3, 1, 2, 1, 1, 1, 3, 2, 3, 3, 2, 1, 549 1, 1, 3, 3, 3, 1, 2, 1, 1, 1, 3, 2, 3, 3, 2, 1,
551 1, 1, 3, 1, 3, 1, 2, 1, 1, 1, 3, 1, 3, 1, 2, 1, 550 1, 1, 3, 1, 3, 1, 2, 1, 1, 1, 3, 1, 3, 1, 2, 1,
552 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 1, 1, 2, 1, 551 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 1, 1, 2, 1,
553 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 1, 1, 2, 1 552 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 1, 1, 2, 1
554}; 553};
555 554
556 555
@@ -560,116 +559,95 @@ int debug_trace = 0;
560 559
561rcvar_t debug_exports[] = 560rcvar_t debug_exports[] =
562{ 561{
563 RCV_BOOL("trace", &debug_trace), 562 RCV_BOOL("trace", &debug_trace),
564 RCV_END 563 RCV_END
565}; 564};
566 565
567void debug_disassemble(addr a, int c) 566void debug_disassemble(addr a, int c)
568{ 567{
569 static int i, j, k; 568 static int i, j, k;
570 static byte code; 569 static byte code;
571 static byte ops[3]; 570 static byte ops[3];
572 static int opaddr; 571 static int opaddr;
573 static char mnemonic[256]; 572 static char mnemonic[256];
574 static char *pattern; 573 static char *pattern;
575 char meow[500],buf[300]; 574 char meow[500],buf[300];
576// int fd; 575 if(!debug_trace) return;
577 if(!debug_trace) return; 576
578// fd=open("/rockboy.trace",O_WRONLY|O_APPEND); 577 while (c > 0)
579// if(fd<0) 578 {
580// return; 579 k = 0;
581 580 opaddr = a;
582 while (c > 0) 581 code = ops[k++] = readb(a); a++;
583 { 582 if (code != 0xCB)
584 k = 0; 583 {
585 opaddr = a; 584 pattern = mnemonic_table[code];
586 code = ops[k++] = readb(a); a++; 585 if (!pattern)
587 if (code != 0xCB) 586 pattern = "***INVALID***";
588 { 587 }
589 pattern = mnemonic_table[code]; 588 else
590 if (!pattern) 589 {
591 pattern = "***INVALID***"; 590 code = ops[k++] = readb(a); a++;
592 } 591 pattern = cb_mnemonic_table[code];
593 else 592 }
594 { 593 i = j = 0;
595 code = ops[k++] = readb(a); a++; 594 while (pattern[i])
596 pattern = cb_mnemonic_table[code]; 595 {
597 } 596 if (pattern[i] == '%')
598 i = j = 0; 597 {
599 while (pattern[i]) 598 switch (pattern[++i])
600 { 599 {
601 if (pattern[i] == '%') 600 case 'B':
602 { 601 case 'b':
603 switch (pattern[++i]) 602 ops[k] = readb(a); a++;
604 { 603 j += snprintf(mnemonic + j,255-j,
605 case 'B': 604 "%02Xh", ops[k++]);
606 case 'b': 605 break;
607 ops[k] = readb(a); a++; 606 case 'W':
608 j += snprintf(mnemonic + j,255-j, 607 case 'w':
609 "%02Xh", ops[k++]); 608 ops[k] = readb(a); a++;
610 break; 609 ops[k+1] = readb(a); a++;
611 case 'W': 610 j += snprintf(mnemonic + j, 255-j,"%04Xh",
612 case 'w': 611 ((ops[k+1] << 8) | ops[k]));
613 ops[k] = readb(a); a++; 612 k += 2;
614 ops[k+1] = readb(a); a++; 613 break;
615 j += snprintf(mnemonic + j, 255-j,"%04Xh", 614 case 'O':
616 ((ops[k+1] << 8) | ops[k])); 615 case 'o':
617 k += 2; 616 ops[k] = readb(a); a++;
618 break; 617 j += snprintf(mnemonic + j, 255-j,"%+d",
619 case 'O': 618 (n8)(ops[k++]));
620 case 'o': 619 break;
621 ops[k] = readb(a); a++; 620 }
622 j += snprintf(mnemonic + j, 255-j,"%+d", 621 i++;
623 (n8)(ops[k++])); 622 }
624 break; 623 else
625 } 624 {
626 i++; 625 mnemonic[j++] = pattern[i++];
627 } 626 }
628 else 627 }
629 { 628 mnemonic[j] = 0;
630 mnemonic[j++] = pattern[i++]; 629 snprintf(buf,299,"%04X ", opaddr);
631 } 630 strcpy(meow,buf);
632 } 631 switch (operand_count[ops[0]]) {
633 mnemonic[j] = 0; 632 case 1:
634 snprintf(buf,299,"%04X ", opaddr); 633 snprintf(buf,299,"%02X ", ops[0]);
635 strcpy(meow,buf); 634 strcat(meow,buf);
636 switch (operand_count[ops[0]]) { 635 break;
637 case 1: 636 case 2:
638 snprintf(buf,299,"%02X ", ops[0]); 637 snprintf(buf,299,"%02X %02X ", ops[0], ops[1]);
639 strcat(meow,buf); 638 strcat(meow,buf);
640 break; 639 break;
641 case 2: 640 case 3:
642 snprintf(buf,299,"%02X %02X ", ops[0], ops[1]); 641 snprintf(buf,299,"%02X %02X %02X ", ops[0], ops[1], ops[2]);
643 strcat(meow,buf); 642 strcat(meow,buf);
644 break; 643 break;
645 case 3: 644 }
646 snprintf(buf,299,"%02X %02X %02X ", ops[0], ops[1], ops[2]); 645 snprintf(buf,"%-16.16s", mnemonic);
647 strcat(meow,buf); 646 strcat(meow,buf);
648 break;
649 }
650 snprintf(buf,"%-16.16s", mnemonic);
651 strcat(meow,buf);
652 rb->lcd_putsxy(0,0,meow); 647 rb->lcd_putsxy(0,0,meow);
653 rb->lcd_update(); 648 rb->lcd_update();
654/* fprintf(fd, 649 c--;
655 " SP=%04X.%04X BC=%04X.%02X.%02X DE=%04X.%02X " 650 }
656 "HL=%04X.%02X A=%02X F=%02X %c%c%c%c%c",
657 SP, readw(SP),
658 BC, readb(BC), readb(0xFF00 | C),
659 DE, readb(DE),
660 HL, readb(HL), A,
661 F, (IME ? 'I' : '-'),
662 ((F & 0x80) ? 'Z' : '-'),
663 ((F & 0x40) ? 'N' : '-'),
664 ((F & 0x20) ? 'H' : '-'),
665 ((F & 0x10) ? 'C' : '-')
666 );
667 fprintf(fd,
668 " IE=%02X IF=%02X LCDC=%02X STAT=%02X LY=%02X LYC=%02X",
669 R_IE, R_IF, R_LCDC, R_STAT, R_LY, R_LYC
670 );*/
671 c--;
672 }
673} 651}
674 652
675 653