diff options
Diffstat (limited to 'apps/plugins/rockboy/debug.c')
-rw-r--r-- | apps/plugins/rockboy/debug.c | 1246 |
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 | ||
16 | static char *mnemonic_table[256] = | 15 | static 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 | ||
276 | static char *cb_mnemonic_table[256] = | 275 | static 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 | ||
536 | static byte operand_count[256] = | 535 | static 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 | ||
561 | rcvar_t debug_exports[] = | 560 | rcvar_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 | ||
567 | void debug_disassemble(addr a, int c) | 566 | void 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 | ||