Rizin
unix-like reverse engineering framework and cli tools
z80_tab.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: 2014-2016 condret <condr3t@protonmail.com>
2 // SPDX-License-Identifier: LGPL-3.0-only
3 
4 #ifndef Z80_TAB_H
5 #define Z80_TAB_H
6 
7 #ifdef NULL
8 #undef NULL
9 #endif
10 #define NULL 0
11 
12 enum {
14  Z80_OP8 = 2,
15  Z80_OP16 = 4,
16  Z80_OP24 = 8,
17  Z80_ARG8 = 16,
18  Z80_ARG16 = 32,
19  Z80_ENC0 = 64,
20  Z80_ENC1 = 128
21 };
22 
23 typedef struct{
24  char* name;
25  int type;
26  const void *op_moar;
27 } z80_opcode;
28 
30  switch (hex) {
31  case 0x9:
32  return 0x0;
33  case 0x19:
34  return 0x1;
35  case 0x21:
36  case 0x22:
37  case 0x23:
38  case 0x24:
39  case 0x25:
40  case 0x26:
41  return hex-0x1f;
42  case 0x29:
43  case 0x2a:
44  case 0x2b:
45  case 0x2c:
46  case 0x2d:
47  case 0x2e:
48  return hex-0x21;
49  case 0x34:
50  case 0x35:
51  case 0x36:
52  return hex-0x26;
53  case 0x39:
54  return 0x11;
55  case 0x44:
56  case 0x45:
57  case 0x46:
58  return hex-0x32;
59  case 0x4c:
60  case 0x4d:
61  case 0x4e:
62  return hex-0x37;
63  case 0x54: //0x18
64  case 0x55:
65  case 0x56:
66  return hex-0x3c;
67  case 0x5c:
68  case 0x5d:
69  case 0x5e: //0x1d
70  return hex-0x41;
71  case 0x60:
72  case 0x61:
73  case 0x62:
74  case 0x63:
75  case 0x64:
76  case 0x65:
77  case 0x66:
78  case 0x67:
79  case 0x68:
80  case 0x69:
81  case 0x6a:
82  case 0x6b:
83  case 0x6c:
84  case 0x6d:
85  case 0x6e:
86  case 0x6f:
87  case 0x70:
88  case 0x71:
89  case 0x72:
90  case 0x73:
91  case 0x74:
92  case 0x75:
93  return hex-0x42;
94  case 0x77:
95  return 0x34;
96  case 0x7c:
97  case 0x7d:
98  case 0x7e:
99  return hex-0x47;
100  case 0x84:
101  case 0x85:
102  case 0x86:
103  return hex-0x4c;
104  case 0x8c:
105  case 0x8d:
106  case 0x8e:
107  return hex-0x51;
108  case 0x94:
109  case 0x95:
110  case 0x96:
111  return hex-0x56;
112  case 0x9c:
113  case 0x9d:
114  case 0x9e:
115  return hex-0x5b;
116  case 0xa4:
117  case 0xa5:
118  case 0xa6:
119  return hex-0x60;
120  case 0xac:
121  case 0xad:
122  case 0xae:
123  return hex-0x65;
124  case 0xb4:
125  case 0xb5:
126  case 0xb6:
127  return hex-0x6a;
128  case 0xbc:
129  case 0xbd:
130  case 0xbe:
131  return hex-0x6f;
132  case 0xcb:
133  return 0x50;
134  case 0xe1:
135  return 0x51;
136  case 0xe3:
137  return 0x52;
138  case 0xe5:
139  return 0x53;
140  case 0xe9:
141  return 0x54;
142  case 0xf9:
143  return 0x55;
144  }
145  return 0x56;
146 }
147 
149  if (hex > 0x3f && 0x4c > hex)
150  return hex-0x40;
151  if (hex == 0x4d)
152  return 0xc;
153  if (hex > 0x4d && 0x54 > hex)
154  return hex-0x42;
155  if (hex > 0x55 && 0x5c > hex)
156  return hex-0x44;
157  if (hex > 0x5d && 0x63 > hex)
158  return hex-0x46;
159  if (hex > 0x66 && 0x6b > hex)
160  return hex-0x4a;
161  if (hex > 0x6e && 0x74 > hex)
162  return hex-0x4e;
163  if (hex > 0x77 && 0x7c > hex)
164  return hex-0x52;
165  if (hex > 0x9f && 0xa4 > hex)
166  return hex-0x76;
167  if (hex > 0xa7 && 0xac > hex)
168  return hex-0x7a;
169  if (hex > 0xaf && 0xb4 > hex)
170  return hex-0x7e;
171  if (hex > 0xb7 && 0xbc > hex)
172  return hex-0x82;
173  return 0x3b;
174 }
175 
176 static const char *cb[] = {
177  "rlc b",
178  "rlc c",
179  "rlc d",
180  "rlc e",
181  "rlc h",
182  "rlc l",
183  "rlc [hl]",
184  "rlc a",
185  "rrc b",
186  "rrc c",
187  "rrc d",
188  "rrc e",
189  "rrc h",
190  "rrc l",
191  "rrc [hl]",
192  "rrc a",
193  "rl b",
194  "rl c",
195  "rl d",
196  "rl e",
197  "rl h",
198  "rl l",
199  "rl [hl]",
200  "rl a",
201  "rr b",
202  "rr c",
203  "rr d",
204  "rr e",
205  "rr h",
206  "rr l",
207  "rr [hl]",
208  "rr a",
209  "sla b",
210  "sla c",
211  "sla d",
212  "sla e",
213  "sla h",
214  "sla l",
215  "sla [hl]",
216  "sla a",
217  "sra b",
218  "sra c",
219  "sra d",
220  "sra e",
221  "sra h",
222  "sra l",
223  "sra [hl]",
224  "sra a",
225  "sll b",
226  "sll c",
227  "sll d",
228  "sll e",
229  "sll h",
230  "sll l",
231  "sll [hl]",
232  "sll a",
233  "srl b",
234  "srl c",
235  "srl d",
236  "srl e",
237  "srl h",
238  "srl l",
239  "srl [hl]",
240  "srl a",
241  "bit 0, b",
242  "bit 0, c",
243  "bit 0, d",
244  "bit 0, e",
245  "bit 0, h",
246  "bit 0, l",
247  "bit 0, [hl]",
248  "bit 0, a",
249  "bit 1, b",
250  "bit 1, c",
251  "bit 1, d",
252  "bit 1, e",
253  "bit 1, h",
254  "bit 1, l",
255  "bit 1, [hl]",
256  "bit 1, a",
257  "bit 2, b",
258  "bit 2, c",
259  "bit 2, d",
260  "bit 2, e",
261  "bit 2, h",
262  "bit 2, l",
263  "bit 2, [hl]",
264  "bit 2, a",
265  "bit 3, b",
266  "bit 3, c",
267  "bit 3, d",
268  "bit 3, e",
269  "bit 3, h",
270  "bit 3, l",
271  "bit 3, [hl]",
272  "bit 3, a",
273  "bit 4, b",
274  "bit 4, c",
275  "bit 4, d",
276  "bit 4, e",
277  "bit 4, h",
278  "bit 4, l",
279  "bit 4, [hl]",
280  "bit 4, a",
281  "bit 5, b",
282  "bit 5, c",
283  "bit 5, d",
284  "bit 5, e",
285  "bit 5, h",
286  "bit 5, l",
287  "bit 5, [hl]",
288  "bit 5, a",
289  "bit 6, b",
290  "bit 6, c",
291  "bit 6, d",
292  "bit 6, e",
293  "bit 6, h",
294  "bit 6, l",
295  "bit 6, [hl]",
296  "bit 6, a",
297  "bit 7, b",
298  "bit 7, c",
299  "bit 7, d",
300  "bit 7, e",
301  "bit 7, h",
302  "bit 7, l",
303  "bit 7, [hl]",
304  "bit 7, a",
305  "res 0, b",
306  "res 0, c",
307  "res 0, d",
308  "res 0, e",
309  "res 0, h",
310  "res 0, l",
311  "res 0, [hl]",
312  "res 0, a",
313  "res 1, b",
314  "res 1, c",
315  "res 1, d",
316  "res 1, e",
317  "res 1, h",
318  "res 1, l",
319  "res 1, [hl]",
320  "res 1, a",
321  "res 2, b",
322  "res 2, c",
323  "res 2, d",
324  "res 2, e",
325  "res 2, h",
326  "res 2, l",
327  "res 2, [hl]",
328  "res 2, a",
329  "res 3, b",
330  "res 3, c",
331  "res 3, d",
332  "res 3, e",
333  "res 3, h",
334  "res 3, l",
335  "res 3, [hl]",
336  "res 3, a",
337  "res 4, b",
338  "res 4, c",
339  "res 4, d",
340  "res 4, e",
341  "res 4, h",
342  "res 4, l",
343  "res 4, [hl]",
344  "res 4, a",
345  "res 5, b",
346  "res 5, c",
347  "res 5, d",
348  "res 5, e",
349  "res 5, h",
350  "res 5, l",
351  "res 5, [hl]",
352  "res 5, a",
353  "res 6, b",
354  "res 6, c",
355  "res 6, d",
356  "res 6, e",
357  "res 6, h",
358  "res 6, l",
359  "res 6, [hl]",
360  "res 6, a",
361  "res 7, b",
362  "res 7, c",
363  "res 7, d",
364  "res 7, e",
365  "res 7, h",
366  "res 7, l",
367  "res 7, [hl]",
368  "res 7, a",
369  "set 0, b",
370  "set 0, c",
371  "set 0, d",
372  "set 0, e",
373  "set 0, h",
374  "set 0, l",
375  "set 0, [hl]",
376  "set 0, a",
377  "set 1, b",
378  "set 1, c",
379  "set 1, d",
380  "set 1, e",
381  "set 1, h",
382  "set 1, l",
383  "set 1, [hl]",
384  "set 1, a",
385  "set 2, b",
386  "set 2, c",
387  "set 2, d",
388  "set 2, e",
389  "set 2, h",
390  "set 2, l",
391  "set 2, [hl]",
392  "set 2, a",
393  "set 3, b",
394  "set 3, c",
395  "set 3, d",
396  "set 3, e",
397  "set 3, h",
398  "set 3, l",
399  "set 3, [hl]",
400  "set 3, a",
401  "set 4, b",
402  "set 4, c",
403  "set 4, d",
404  "set 4, e",
405  "set 4, h",
406  "set 4, l",
407  "set 4, [hl]",
408  "set 4, a",
409  "set 5, b",
410  "set 5, c",
411  "set 5, d",
412  "set 5, e",
413  "set 5, h",
414  "set 5, l",
415  "set 5, [hl]",
416  "set 5, a",
417  "set 6, b",
418  "set 6, c",
419  "set 6, d",
420  "set 6, e",
421  "set 6, h",
422  "set 6, l",
423  "set 6, [hl]",
424  "set 6, a",
425  "set 7, b",
426  "set 7, c",
427  "set 7, d",
428  "set 7, e",
429  "set 7, h",
430  "set 7, l",
431  "set 7, [hl]",
432  "set 7, a",
433 };
434 
435 static const char *ddcb[]={
436  "rlc [ix+0x%02x], b",
437  "rlc [ix+0x%02x], c",
438  "rlc [ix+0x%02x], d",
439  "rlc [ix+0x%02x], e",
440  "rlc [ix+0x%02x], h",
441  "rlc [ix+0x%02x], l",
442  "rlc [ix+0x%02x]",
443  "rlc [ix+0x%02x], a",
444  "rrc [ix+0x%02x], b",
445  "rrc [ix+0x%02x], c",
446  "rrc [ix+0x%02x], d",
447  "rrc [ix+0x%02x], e",
448  "rrc [ix+0x%02x], h",
449  "rrc [ix+0x%02x], l",
450  "rrc [ix+0x%02x]",
451  "rrc [ix+0x%02x], a",
452  "rl [ix+0x%02x], b",
453  "rl [ix+0x%02x], c",
454  "rl [ix+0x%02x], d",
455  "rl [ix+0x%02x], e",
456  "rl [ix+0x%02x], h",
457  "rl [ix+0x%02x], l",
458  "rl [ix+0x%02x]",
459  "rl [ix+0x%02x], a",
460  "rr [ix+0x%02x], b",
461  "rr [ix+0x%02x], c",
462  "rr [ix+0x%02x], d",
463  "rr [ix+0x%02x], e",
464  "rr [ix+0x%02x], h",
465  "rr [ix+0x%02x], l",
466  "rr [ix+0x%02x]",
467  "rr [ix+0x%02x], a",
468  "sla [ix+0x%02x], b",
469  "sla [ix+0x%02x], c",
470  "sla [ix+0x%02x], d",
471  "sla [ix+0x%02x], e",
472  "sla [ix+0x%02x], h",
473  "sla [ix+0x%02x], l",
474  "sla [ix+0x%02x]",
475  "sla [ix+0x%02x], a",
476  "sra [ix+0x%02x], b",
477  "sra [ix+0x%02x], c",
478  "sra [ix+0x%02x], d",
479  "sra [ix+0x%02x], e",
480  "sra [ix+0x%02x], h",
481  "sra [ix+0x%02x], l",
482  "sra [ix+0x%02x]",
483  "sra [ix+0x%02x], a",
484  "sll [ix+0x%02x], b",
485  "sll [ix+0x%02x], c",
486  "sll [ix+0x%02x], d",
487  "sll [ix+0x%02x], e",
488  "sll [ix+0x%02x], h",
489  "sll [ix+0x%02x], l",
490  "sll [ix+0x%02x]",
491  "sll [ix+0x%02x], a",
492  "srl [ix+0x%02x], b",
493  "srl [ix+0x%02x], c",
494  "srl [ix+0x%02x], d",
495  "srl [ix+0x%02x], e",
496  "srl [ix+0x%02x], h",
497  "srl [ix+0x%02x], l",
498  "srl [ix+0x%02x]",
499  "srl [ix+0x%02x], a",
500  "bit 0, [ix+0x%02x]",
501  "bit 1, [ix+0x%02x]",
502  "bit 2, [ix+0x%02x]",
503  "bit 3, [ix+0x%02x]",
504  "bit 4, [ix+0x%02x]",
505  "bit 5, [ix+0x%02x]",
506  "bit 6, [ix+0x%02x]",
507  "bit 7, [ix+0x%02x]",
508  "res 0, [ix+0x%02x], b",
509  "res 0, [ix+0x%02x], c",
510  "res 0, [ix+0x%02x], d",
511  "res 0, [ix+0x%02x], e",
512  "res 0, [ix+0x%02x], h",
513  "res 0, [ix+0x%02x], l",
514  "res 0, [ix+0x%02x]",
515  "res 0, [ix+0x%02x], a",
516  "res 1, [ix+0x%02x], b",
517  "res 1, [ix+0x%02x], c",
518  "res 1, [ix+0x%02x], d",
519  "res 1, [ix+0x%02x], e",
520  "res 1, [ix+0x%02x], h",
521  "res 1, [ix+0x%02x], l",
522  "res 1, [ix+0x%02x]",
523  "res 1, [ix+0x%02x], a",
524  "res 2, [ix+0x%02x], b",
525  "res 2, [ix+0x%02x], c",
526  "res 2, [ix+0x%02x], d",
527  "res 2, [ix+0x%02x], e",
528  "res 2, [ix+0x%02x], h",
529  "res 2, [ix+0x%02x], l",
530  "res 2, [ix+0x%02x]",
531  "res 2, [ix+0x%02x], a",
532  "res 3, [ix+0x%02x], b",
533  "res 3, [ix+0x%02x], c",
534  "res 3, [ix+0x%02x], d",
535  "res 3, [ix+0x%02x], e",
536  "res 3, [ix+0x%02x], h",
537  "res 3, [ix+0x%02x], l",
538  "res 3, [ix+0x%02x]",
539  "res 3, [ix+0x%02x], a",
540  "res 4, [ix+0x%02x], b",
541  "res 4, [ix+0x%02x], c",
542  "res 4, [ix+0x%02x], d",
543  "res 4, [ix+0x%02x], e",
544  "res 4, [ix+0x%02x], h",
545  "res 4, [ix+0x%02x], l",
546  "res 4, [ix+0x%02x]",
547  "res 4, [ix+0x%02x], a",
548  "res 5, [ix+0x%02x], b",
549  "res 5, [ix+0x%02x], c",
550  "res 5, [ix+0x%02x], d",
551  "res 5, [ix+0x%02x], e",
552  "res 5, [ix+0x%02x], h",
553  "res 5, [ix+0x%02x], l",
554  "res 5, [ix+0x%02x]",
555  "res 5, [ix+0x%02x], a",
556  "res 6, [ix+0x%02x], b",
557  "res 6, [ix+0x%02x], c",
558  "res 6, [ix+0x%02x], d",
559  "res 6, [ix+0x%02x], e",
560  "res 6, [ix+0x%02x], h",
561  "res 6, [ix+0x%02x], l",
562  "res 6, [ix+0x%02x]",
563  "res 6, [ix+0x%02x], a",
564  "res 7, [ix+0x%02x], b",
565  "res 7, [ix+0x%02x], c",
566  "res 7, [ix+0x%02x], d",
567  "res 7, [ix+0x%02x], e",
568  "res 7, [ix+0x%02x], h",
569  "res 7, [ix+0x%02x], l",
570  "res 7, [ix+0x%02x]",
571  "res 7, [ix+0x%02x], a",
572  "set 0, [ix+0x%02x], b",
573  "set 0, [ix+0x%02x], c",
574  "set 0, [ix+0x%02x], d",
575  "set 0, [ix+0x%02x], e",
576  "set 0, [ix+0x%02x], h",
577  "set 0, [ix+0x%02x], l",
578  "set 0, [ix+0x%02x]",
579  "set 0, [ix+0x%02x], a",
580  "set 1, [ix+0x%02x], b",
581  "set 1, [ix+0x%02x], c",
582  "set 1, [ix+0x%02x], d",
583  "set 1, [ix+0x%02x], e",
584  "set 1, [ix+0x%02x], h",
585  "set 1, [ix+0x%02x], l",
586  "set 1, [ix+0x%02x]",
587  "set 1, [ix+0x%02x], a",
588  "set 2, [ix+0x%02x], b",
589  "set 2, [ix+0x%02x], c",
590  "set 2, [ix+0x%02x], d",
591  "set 2, [ix+0x%02x], e",
592  "set 2, [ix+0x%02x], h",
593  "set 2, [ix+0x%02x], l",
594  "set 2, [ix+0x%02x]",
595  "set 2, [ix+0x%02x], a",
596  "set 3, [ix+0x%02x], b",
597  "set 3, [ix+0x%02x], c",
598  "set 3, [ix+0x%02x], d",
599  "set 3, [ix+0x%02x], e",
600  "set 3, [ix+0x%02x], h",
601  "set 3, [ix+0x%02x], l",
602  "set 3, [ix+0x%02x]",
603  "set 3, [ix+0x%02x], a",
604  "set 4, [ix+0x%02x], b",
605  "set 4, [ix+0x%02x], c",
606  "set 4, [ix+0x%02x], d",
607  "set 4, [ix+0x%02x], e",
608  "set 4, [ix+0x%02x], h",
609  "set 4, [ix+0x%02x], l",
610  "set 4, [ix+0x%02x]",
611  "set 4, [ix+0x%02x], a",
612  "set 5, [ix+0x%02x], b",
613  "set 5, [ix+0x%02x], c",
614  "set 5, [ix+0x%02x], d",
615  "set 5, [ix+0x%02x], e",
616  "set 5, [ix+0x%02x], h",
617  "set 5, [ix+0x%02x], l",
618  "set 5, [ix+0x%02x]",
619  "set 5, [ix+0x%02x], a",
620  "set 6, [ix+0x%02x], b",
621  "set 6, [ix+0x%02x], c",
622  "set 6, [ix+0x%02x], d",
623  "set 6, [ix+0x%02x], e",
624  "set 6, [ix+0x%02x], h",
625  "set 6, [ix+0x%02x], l",
626  "set 6, [ix+0x%02x]",
627  "set 6, [ix+0x%02x], a",
628  "set 7, [ix+0x%02x], b",
629  "set 7, [ix+0x%02x], c",
630  "set 7, [ix+0x%02x], d",
631  "set 7, [ix+0x%02x], e",
632  "set 7, [ix+0x%02x], h",
633  "set 7, [ix+0x%02x], l",
634  "set 7, [ix+0x%02x]",
635  "set 7, [ix+0x%02x], a",
636  "%x\rinvalid", //HACK
637 };
638 
639 static const char *fdcb[]={
640  "rlc b, [iy+0x%02x]",
641  "rlc c, [iy+0x%02x]",
642  "rlc d, [iy+0x%02x]",
643  "rlc e, [iy+0x%02x]",
644  "rlc h, [iy+0x%02x]",
645  "rlc l, [iy+0x%02x]",
646  "rlc [iy+0x%02x]",
647  "rlc a, [iy+0x%02x]",
648  "rrc b, [iy+0x%02x]",
649  "rrc c, [iy+0x%02x]",
650  "rrc d, [iy+0x%02x]",
651  "rrc e, [iy+0x%02x]",
652  "rrc h, [iy+0x%02x]",
653  "rrc l, [iy+0x%02x]",
654  "rrc [iy+0x%02x]",
655  "rrc a, [iy+0x%02x]",
656  "rl b, [iy+0x%02x]",
657  "rl c, [iy+0x%02x]",
658  "rl d, [iy+0x%02x]",
659  "rl e, [iy+0x%02x]",
660  "rl h, [iy+0x%02x]",
661  "rl l, [iy+0x%02x]",
662  "rl [iy+0x%02x]",
663  "rl a, [iy+0x%02x]",
664  "rr b, [iy+0x%02x]",
665  "rr c, [iy+0x%02x]",
666  "rr d, [iy+0x%02x]",
667  "rr e, [iy+0x%02x]",
668  "rr h, [iy+0x%02x]",
669  "rr l, [iy+0x%02x]",
670  "rr [iy+0x%02x]",
671  "rr a, [iy+0x%02x]",
672  "sla b, [iy+0x%02x]",
673  "sla c, [iy+0x%02x]",
674  "sla d, [iy+0x%02x]",
675  "sla e, [iy+0x%02x]",
676  "sla h, [iy+0x%02x]",
677  "sla l, [iy+0x%02x]",
678  "sla [iy+0x%02x]",
679  "sla a, [iy+0x%02x]",
680  "sra b, [iy+0x%02x]",
681  "sra c, [iy+0x%02x]",
682  "sra d, [iy+0x%02x]",
683  "sra e, [iy+0x%02x]",
684  "sra h, [iy+0x%02x]",
685  "sra l, [iy+0x%02x]",
686  "sra [iy+0x%02x]",
687  "sra a, [iy+0x%02x]",
688  "sll b, [iy+0x%02x]",
689  "sll c, [iy+0x%02x]",
690  "sll d, [iy+0x%02x]",
691  "sll e, [iy+0x%02x]",
692  "sll h, [iy+0x%02x]",
693  "sll l, [iy+0x%02x]",
694  "sll [iy+0x%02x]",
695  "sll a, [iy+0x%02x]",
696  "srl b, [iy+0x%02x]",
697  "srl c, [iy+0x%02x]",
698  "srl d, [iy+0x%02x]",
699  "srl e, [iy+0x%02x]",
700  "srl h, [iy+0x%02x]",
701  "srl l, [iy+0x%02x]",
702  "srl [iy+0x%02x]",
703  "srl a, [iy+0x%02x]",
704  "bit 0, [iy+0x%02x]",
705  "bit 1, [iy+0x%02x]",
706  "bit 2, [iy+0x%02x]",
707  "bit 3, [iy+0x%02x]",
708  "bit 4, [iy+0x%02x]",
709  "bit 5, [iy+0x%02x]",
710  "bit 6, [iy+0x%02x]",
711  "bit 7, [iy+0x%02x]",
712  "res 0, [iy+0x%02x], b",
713  "res 0, [iy+0x%02x], c",
714  "res 0, [iy+0x%02x], d",
715  "res 0, [iy+0x%02x], e",
716  "res 0, [iy+0x%02x], h",
717  "res 0, [iy+0x%02x], l",
718  "res 0, [iy+0x%02x]",
719  "res 0, [iy+0x%02x], a",
720  "res 1, [iy+0x%02x], b",
721  "res 1, [iy+0x%02x], c",
722  "res 1, [iy+0x%02x], d",
723  "res 1, [iy+0x%02x], e",
724  "res 1, [iy+0x%02x], h",
725  "res 1, [iy+0x%02x], l",
726  "res 1, [iy+0x%02x]",
727  "res 1, [iy+0x%02x], a",
728  "res 2, [iy+0x%02x], b",
729  "res 2, [iy+0x%02x], c",
730  "res 2, [iy+0x%02x], d",
731  "res 2, [iy+0x%02x], e",
732  "res 2, [iy+0x%02x], h",
733  "res 2, [iy+0x%02x], l",
734  "res 2, [iy+0x%02x]",
735  "res 2, [iy+0x%02x], a",
736  "res 3, [iy+0x%02x], b",
737  "res 3, [iy+0x%02x], c",
738  "res 3, [iy+0x%02x], d",
739  "res 3, [iy+0x%02x], e",
740  "res 3, [iy+0x%02x], h",
741  "res 3, [iy+0x%02x], l",
742  "res 3, [iy+0x%02x]",
743  "res 3, [iy+0x%02x], a",
744  "res 4, [iy+0x%02x], b",
745  "res 4, [iy+0x%02x], c",
746  "res 4, [iy+0x%02x], d",
747  "res 4, [iy+0x%02x], e",
748  "res 4, [iy+0x%02x], h",
749  "res 4, [iy+0x%02x], l",
750  "res 4, [iy+0x%02x]",
751  "res 4, [iy+0x%02x], a",
752  "res 5, [iy+0x%02x], b",
753  "res 5, [iy+0x%02x], c",
754  "res 5, [iy+0x%02x], d",
755  "res 5, [iy+0x%02x], e",
756  "res 5, [iy+0x%02x], h",
757  "res 5, [iy+0x%02x], l",
758  "res 5, [iy+0x%02x]",
759  "res 5, [iy+0x%02x], a",
760  "res 6, [iy+0x%02x], b",
761  "res 6, [iy+0x%02x], c",
762  "res 6, [iy+0x%02x], d",
763  "res 6, [iy+0x%02x], e",
764  "res 6, [iy+0x%02x], h",
765  "res 6, [iy+0x%02x], l",
766  "res 6, [iy+0x%02x]",
767  "res 6, [iy+0x%02x], a",
768  "res 7, [iy+0x%02x], b",
769  "res 7, [iy+0x%02x], c",
770  "res 7, [iy+0x%02x], d",
771  "res 7, [iy+0x%02x], e",
772  "res 7, [iy+0x%02x], h",
773  "res 7, [iy+0x%02x], l",
774  "res 7, [iy+0x%02x]",
775  "res 7, [iy+0x%02x], a",
776  "set 0, [iy+0x%02x], b",
777  "set 0, [iy+0x%02x], c",
778  "set 0, [iy+0x%02x], d",
779  "set 0, [iy+0x%02x], e",
780  "set 0, [iy+0x%02x], h",
781  "set 0, [iy+0x%02x], l",
782  "set 0, [iy+0x%02x]",
783  "set 0, [iy+0x%02x], a",
784  "set 1, [iy+0x%02x], b",
785  "set 1, [iy+0x%02x], c",
786  "set 1, [iy+0x%02x], d",
787  "set 1, [iy+0x%02x], e",
788  "set 1, [iy+0x%02x], h",
789  "set 1, [iy+0x%02x], l",
790  "set 1, [iy+0x%02x]",
791  "set 1, [iy+0x%02x], a",
792  "set 2, [iy+0x%02x], b",
793  "set 2, [iy+0x%02x], c",
794  "set 2, [iy+0x%02x], d",
795  "set 2, [iy+0x%02x], e",
796  "set 2, [iy+0x%02x], h",
797  "set 2, [iy+0x%02x], l",
798  "set 2, [iy+0x%02x]",
799  "set 2, [iy+0x%02x], a",
800  "set 3, [iy+0x%02x], b",
801  "set 3, [iy+0x%02x], c",
802  "set 3, [iy+0x%02x], d",
803  "set 3, [iy+0x%02x], e",
804  "set 3, [iy+0x%02x], h",
805  "set 3, [iy+0x%02x], l",
806  "set 3, [iy+0x%02x]",
807  "set 3, [iy+0x%02x], a",
808  "set 4, [iy+0x%02x], b",
809  "set 4, [iy+0x%02x], c",
810  "set 4, [iy+0x%02x], d",
811  "set 4, [iy+0x%02x], e",
812  "set 4, [iy+0x%02x], h",
813  "set 4, [iy+0x%02x], l",
814  "set 4, [iy+0x%02x]",
815  "set 4, [iy+0x%02x], a",
816  "set 5, [iy+0x%02x], b",
817  "set 5, [iy+0x%02x], c",
818  "set 5, [iy+0x%02x], d",
819  "set 5, [iy+0x%02x], e",
820  "set 5, [iy+0x%02x], h",
821  "set 5, [iy+0x%02x], l",
822  "set 5, [iy+0x%02x]",
823  "set 5, [iy+0x%02x], a",
824  "set 6, [iy+0x%02x], b",
825  "set 6, [iy+0x%02x], c",
826  "set 6, [iy+0x%02x], d",
827  "set 6, [iy+0x%02x], e",
828  "set 6, [iy+0x%02x], h",
829  "set 6, [iy+0x%02x], l",
830  "set 6, [iy+0x%02x]",
831  "set 6, [iy+0x%02x], a",
832  "set 7, [iy+0x%02x], b",
833  "set 7, [iy+0x%02x], c",
834  "set 7, [iy+0x%02x], d",
835  "set 7, [iy+0x%02x], e",
836  "set 7, [iy+0x%02x], h",
837  "set 7, [iy+0x%02x], l",
838  "set 7, [iy+0x%02x]",
839  "set 7, [iy+0x%02x], a",
840  "%x\rinvalid", //HACK
841 };
842 
843 
844 static const z80_opcode dd[] = { //dd
845  {"add ix, bc", Z80_OP16 ,NULL},
846  {"add ix, de", Z80_OP16 ,NULL},
847  {"ld ix, 0x%04x", Z80_OP16^Z80_ARG16 ,NULL},
848  {"ld [0x%04x], ix", Z80_OP16^Z80_ARG16 ,NULL},
849  {"inc ix", Z80_OP16 ,NULL},
850  {"inc ixh", Z80_OP16 ,NULL},
851  {"dec ixh", Z80_OP16 ,NULL},
852  {"ld ixh, 0x%02x", Z80_OP16^Z80_ARG8 ,NULL},
853  {"add ix, ix", Z80_OP16 ,NULL},
854  {"ld ix, [0x%04x]", Z80_OP16^Z80_ARG16 ,NULL},
855  {"dec ix", Z80_OP16 ,NULL},
856  {"inc ixl", Z80_OP16 ,NULL},
857  {"dec ixl", Z80_OP16 ,NULL},
858  {"ld ixl, 0x%02x", Z80_OP16^Z80_ARG8 ,NULL},
859  {"inc [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
860  {"dec [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
861  {"ld [ix+0x%02x], 0x%02x",Z80_OP16^Z80_ARG8^Z80_ARG16 ,NULL},
862  {"add ix, sp", Z80_OP16 ,NULL},
863  {"ld b, ixh", Z80_OP16 ,NULL},
864  {"ld b, ixl", Z80_OP16 ,NULL},
865  {"ld b, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
866  {"ld c, ixh", Z80_OP16 ,NULL},
867  {"ld c, ixl", Z80_OP16 ,NULL},
868  {"ld c, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
869  {"ld d, ixh", Z80_OP16 ,NULL},
870  {"ld d, ixl", Z80_OP16 ,NULL},
871  {"ld d, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
872  {"ld e, ixh", Z80_OP16 ,NULL},
873  {"ld e, ixl", Z80_OP16 ,NULL},
874  {"ld e, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
875  {"ld ixh, b", Z80_OP16 ,NULL},
876  {"ld ixh, c", Z80_OP16 ,NULL},
877  {"ld ixh, d", Z80_OP16 ,NULL},
878  {"ld ixh, e", Z80_OP16 ,NULL},
879  {"ld ixh, ixh", Z80_OP16 ,NULL},
880  {"ld ixh, ixl", Z80_OP16 ,NULL},
881  {"ld h, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
882  {"ld ixh, a", Z80_OP16 ,NULL},
883  {"ld ixl, b", Z80_OP16 ,NULL},
884  {"ld ixl, c", Z80_OP16 ,NULL},
885  {"ld ixl, d", Z80_OP16 ,NULL},
886  {"ld ixl, e", Z80_OP16 ,NULL},
887  {"ld ixl, ixh", Z80_OP16 ,NULL},
888  {"ld ixl, ixl", Z80_OP16 ,NULL},
889  {"ld l, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
890  {"ld ixl, a", Z80_OP16 ,NULL},
891  {"ld [ix+0x%02x], b", Z80_OP16^Z80_ARG8 ,NULL},
892  {"ld [ix+0x%02x], c", Z80_OP16^Z80_ARG8 ,NULL},
893  {"ld [ix+0x%02x], d", Z80_OP16^Z80_ARG8 ,NULL},
894  {"ld [ix+0x%02x], e", Z80_OP16^Z80_ARG8 ,NULL},
895  {"ld [ix+0x%02x], h", Z80_OP16^Z80_ARG8 ,NULL},
896  {"ld [ix+0x%02x], l", Z80_OP16^Z80_ARG8 ,NULL},
897  {"ld [ix+0x%02x], a", Z80_OP16^Z80_ARG8 ,NULL},
898  {"ld a, ixh", Z80_OP16 ,NULL},
899  {"ld a, ixl", Z80_OP16 ,NULL},
900  {"ld a, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
901  {"add a, ixh", Z80_OP16 ,NULL},
902  {"add a, ixl", Z80_OP16 ,NULL},
903  {"add a, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
904  {"adc a, ixh", Z80_OP16 ,NULL},
905  {"adc a, ixl", Z80_OP16 ,NULL},
906  {"adc a, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
907  {"sub a, ixh", Z80_OP16 ,NULL},
908  {"sub a, ixl", Z80_OP16 ,NULL},
909  {"sub [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
910  {"sbc a, ixh", Z80_OP16 ,NULL},
911  {"sbc a, ixl", Z80_OP16 ,NULL},
912  {"sbc a, [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
913  {"and ixh", Z80_OP16 ,NULL},
914  {"and ixl", Z80_OP16 ,NULL},
915  {"and [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
916  {"xor ixh", Z80_OP16 ,NULL},
917  {"xor ixl", Z80_OP16 ,NULL},
918  {"xor [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
919  {"or ixh", Z80_OP16 ,NULL},
920  {"or ixl", Z80_OP16 ,NULL},
921  {"or [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
922  {"cp ixh", Z80_OP16 ,NULL},
923  {"cp ixl", Z80_OP16 ,NULL},
924  {"cp [ix+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
925  {"", Z80_OP24^Z80_ARG8 ,ddcb},
926  {"pop ix", Z80_OP16 ,NULL},
927  {"ex [sp], ix", Z80_OP16 ,NULL},
928  {"push ix", Z80_OP16 ,NULL},
929  {"jp [ix]", Z80_OP16 ,NULL},
930  {"ld sp, ix", Z80_OP16 ,NULL},
931  {"invalid", Z80_OP16 ,NULL}
932 };
933 
934 static const z80_opcode ed[]={ //ed
935  {"in b, [c]", Z80_OP16 ,NULL},
936  {"out [c], b", Z80_OP16 ,NULL},
937  {"sbc hl, bc", Z80_OP16 ,NULL},
938  {"ld [0x%04x], bc", Z80_OP16^Z80_ARG16 ,NULL},
939  {"neg", Z80_OP16 ,NULL},
940  {"retn", Z80_OP16 ,NULL},
941  {"im 0", Z80_OP16 ,NULL},
942  {"ld i, a", Z80_OP16 ,NULL},
943  {"in c, [c]", Z80_OP16 ,NULL},
944  {"out [c], c", Z80_OP16 ,NULL},
945  {"adc hl, bc", Z80_OP16 ,NULL},
946  {"ld bc, [0x%04x]", Z80_OP16^Z80_ARG16 ,NULL},
947  {"reti", Z80_OP16 ,NULL},
948  {"ld r, a", Z80_OP16 ,NULL},
949  {"in d, [c]", Z80_OP16 ,NULL},
950  {"out [c], d", Z80_OP16 ,NULL},
951  {"sbc hl, de", Z80_OP16 ,NULL},
952  {"ld [0x%04x], de", Z80_OP16^Z80_ARG16 ,NULL},
953  {"im 1", Z80_OP16 ,NULL},
954  {"ld a, i", Z80_OP16 ,NULL},
955  {"in e, [c]", Z80_OP16 ,NULL},
956  {"out [c], e", Z80_OP16 ,NULL},
957  {"adc hl, de", Z80_OP16 ,NULL},
958  {"ld de, [0x%04x]", Z80_OP16^Z80_ARG16 ,NULL},
959  {"im 2", Z80_OP16 ,NULL},
960  {"ld a, r", Z80_OP16 ,NULL},
961  {"in h, [c]", Z80_OP16 ,NULL},
962  {"out [c], h", Z80_OP16 ,NULL},
963  {"sbc hl, hl", Z80_OP16 ,NULL},
964  {"rrd", Z80_OP16 ,NULL},
965  {"in l, [c]", Z80_OP16 ,NULL},
966  {"out [c], l", Z80_OP16 ,NULL},
967  {"adc hl, hl", Z80_OP16 ,NULL},
968  {"rld", Z80_OP16 ,NULL},
969  {"in [c]", Z80_OP16 ,NULL},
970  {"out [c], 0", Z80_OP16 ,NULL},
971  {"sbc hl, sp", Z80_OP16 ,NULL},
972  {"ld [0x%04x], sp", Z80_OP16^Z80_ARG16 ,NULL},
973  {"in a, [c]", Z80_OP16 ,NULL},
974  {"out [c], a", Z80_OP16 ,NULL},
975  {"adc hl, sp", Z80_OP16 ,NULL},
976  {"ld sp, [0x%04x]", Z80_OP16^Z80_ARG16 ,NULL},
977  {"ldi", Z80_OP16 ,NULL},
978  {"cpi", Z80_OP16 ,NULL},
979  {"ini", Z80_OP16 ,NULL},
980  {"outi", Z80_OP16 ,NULL},
981  {"ldd", Z80_OP16 ,NULL},
982  {"cpd", Z80_OP16 ,NULL},
983  {"ind", Z80_OP16 ,NULL},
984  {"outd", Z80_OP16 ,NULL},
985  {"ldir", Z80_OP16 ,NULL},
986  {"cpir", Z80_OP16 ,NULL},
987  {"inir", Z80_OP16 ,NULL},
988  {"otir", Z80_OP16 ,NULL},
989  {"lddr", Z80_OP16 ,NULL},
990  {"cpdr", Z80_OP16 ,NULL},
991  {"indr", Z80_OP16 ,NULL},
992  {"otdr", Z80_OP16 ,NULL},
993  {"invalid", Z80_OP16 ,NULL},
994  {"invalid", Z80_OP16 ,NULL}
995 };
996 
997 static const z80_opcode fd[]={ //fd
998  {"add iy, bc", Z80_OP16 ,NULL},
999  {"add iy, de", Z80_OP16 ,NULL},
1000  {"ld iy, 0x%04x", Z80_OP16^Z80_ARG16 ,NULL},
1001  {"ld [0x%04x], iy", Z80_OP16^Z80_ARG16 ,NULL},
1002  {"inc iy", Z80_OP16 ,NULL},
1003  {"inc iyh", Z80_OP16 ,NULL},
1004  {"dec iyh", Z80_OP16 ,NULL},
1005  {"ld iyh, 0x%02x", Z80_OP16^Z80_ARG8 ,NULL},
1006  {"add iy, iy", Z80_OP16 ,NULL},
1007  {"ld iy, [0x%04x]", Z80_OP16^Z80_ARG16 ,NULL},
1008  {"dec iy", Z80_OP16 ,NULL},
1009  {"inc iyl", Z80_OP16 ,NULL},
1010  {"dec iyl", Z80_OP16 ,NULL},
1011  {"ld iyl, 0x%02x", Z80_OP16^Z80_ARG8 ,NULL},
1012  {"inc [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1013  {"dec [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1014  {"ld [iy+0x%02x], 0x%02x",Z80_OP16^Z80_ARG8^Z80_ARG16 ,NULL},
1015  {"add iy, sp", Z80_OP16 ,NULL},
1016  {"ld b, iyh", Z80_OP16 ,NULL},
1017  {"ld b, iyl", Z80_OP16 ,NULL},
1018  {"ld b, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1019  {"ld c, iyh", Z80_OP16 ,NULL},
1020  {"ld c, iyl", Z80_OP16 ,NULL},
1021  {"ld c, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1022  {"ld d, iyh", Z80_OP16 ,NULL},
1023  {"ld d, iyl", Z80_OP16 ,NULL},
1024  {"ld d, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1025  {"ld e, iyh", Z80_OP16 ,NULL},
1026  {"ld e, iyl", Z80_OP16 ,NULL},
1027  {"ld e, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1028  {"ld iyh, b", Z80_OP16 ,NULL},
1029  {"ld iyh, c", Z80_OP16 ,NULL},
1030  {"ld iyh, d", Z80_OP16 ,NULL},
1031  {"ld iyh, e", Z80_OP16 ,NULL},
1032  {"ld iyh, iyh", Z80_OP16 ,NULL},
1033  {"ld iyh, iyl", Z80_OP16 ,NULL},
1034  {"ld h, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1035  {"ld iyh, a", Z80_OP16 ,NULL},
1036  {"ld iyl, b", Z80_OP16 ,NULL},
1037  {"ld iyl, c", Z80_OP16 ,NULL},
1038  {"ld iyl, d", Z80_OP16 ,NULL},
1039  {"ld iyl, e", Z80_OP16 ,NULL},
1040  {"ld iyl, iyh", Z80_OP16 ,NULL},
1041  {"ld iyl, iyl", Z80_OP16 ,NULL},
1042  {"ld l, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1043  {"ld iyl, a", Z80_OP16 ,NULL},
1044  {"ld [iy+0x%02x], b", Z80_OP16^Z80_ARG8 ,NULL},
1045  {"ld [iy+0x%02x], c", Z80_OP16^Z80_ARG8 ,NULL},
1046  {"ld [iy+0x%02x], d", Z80_OP16^Z80_ARG8 ,NULL},
1047  {"ld [iy+0x%02x], e", Z80_OP16^Z80_ARG8 ,NULL},
1048  {"ld [iy+0x%02x], h", Z80_OP16^Z80_ARG8 ,NULL},
1049  {"ld [iy+0x%02x], l", Z80_OP16^Z80_ARG8 ,NULL},
1050  {"ld [iy+0x%02x], a", Z80_OP16^Z80_ARG8 ,NULL},
1051  {"ld a, iyh", Z80_OP16 ,NULL},
1052  {"ld a, iyl", Z80_OP16 ,NULL},
1053  {"ld a, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1054  {"add a, iyh", Z80_OP16 ,NULL},
1055  {"add a, iyl", Z80_OP16 ,NULL},
1056  {"add a, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1057  {"adc a, iyh", Z80_OP16 ,NULL},
1058  {"adc a, iyl", Z80_OP16 ,NULL},
1059  {"adc a, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1060  {"sub iyh", Z80_OP16 ,NULL},
1061  {"sub iyl", Z80_OP16 ,NULL},
1062  {"sub [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1063  {"sbc a, iyh", Z80_OP16 ,NULL},
1064  {"sbc a, iyl", Z80_OP16 ,NULL},
1065  {"sbc a, [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1066  {"and iyh", Z80_OP16 ,NULL},
1067  {"and iyl", Z80_OP16 ,NULL},
1068  {"and [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1069  {"xor iyh", Z80_OP16 ,NULL},
1070  {"xor iyl", Z80_OP16 ,NULL},
1071  {"xor [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1072  {"or iyh", Z80_OP16 ,NULL},
1073  {"or iyl", Z80_OP16 ,NULL},
1074  {"or [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1075  {"cp iyh", Z80_OP16 ,NULL},
1076  {"cp iyl", Z80_OP16 ,NULL},
1077  {"cp [iy+0x%02x]", Z80_OP16^Z80_ARG8 ,NULL},
1078  {"", Z80_OP24^Z80_ARG8 ,fdcb},
1079  {"pop iy", Z80_OP16 ,NULL},
1080  {"ex [sp], iy", Z80_OP16 ,NULL},
1081  {"push iy", Z80_OP16 ,NULL},
1082  {"jp [iy]", Z80_OP16 ,NULL},
1083  {"ld sp, iy", Z80_OP16 ,NULL},
1084  {"invalid", Z80_OP16 ,NULL}
1085 };
1086 
1087 static const z80_opcode z80_op[] = {
1088  {"nop", Z80_OP8 ,NULL},
1089  {"ld bc, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1090  {"ld [bc], a", Z80_OP8 ,NULL},
1091  {"inc bc", Z80_OP8 ,NULL},
1092  {"inc b", Z80_OP8 ,NULL},
1093  {"dec b", Z80_OP8 ,NULL},
1094  {"ld b, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1095  {"rlca", Z80_OP8 ,NULL},
1096  {"ex af, af'", Z80_OP8 ,NULL},
1097  {"add hl, bc", Z80_OP8 ,NULL},
1098  {"ld a, [bc]", Z80_OP8 ,NULL},
1099  {"dec bc", Z80_OP8 ,NULL},
1100  {"inc c", Z80_OP8 ,NULL},
1101  {"dec c", Z80_OP8 ,NULL},
1102  {"ld c, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1103  {"rrca", Z80_OP8 ,NULL},
1104  {"djnz 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1105  {"ld de, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1106  {"ld [de], a", Z80_OP8 ,NULL},
1107  {"inc de", Z80_OP8 ,NULL},
1108  {"inc d", Z80_OP8 ,NULL},
1109  {"dec d", Z80_OP8 ,NULL},
1110  {"ld d, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1111  {"rla", Z80_OP8 ,NULL},
1112  {"jr 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1113  {"add hl, de", Z80_OP8 ,NULL},
1114  {"ld a, [de]", Z80_OP8 ,NULL},
1115  {"dec de", Z80_OP8 ,NULL},
1116  {"inc e", Z80_OP8 ,NULL},
1117  {"dec e", Z80_OP8 ,NULL},
1118  {"ld e, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1119  {"rra", Z80_OP8 ,NULL},
1120  {"jr nz, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1121  {"ld hl, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1122  {"ld [0x%04x], hl", Z80_OP8^Z80_ARG16 ,NULL},
1123  {"inc hl", Z80_OP8 ,NULL},
1124  {"inc h", Z80_OP8 ,NULL},
1125  {"dec h", Z80_OP8 ,NULL},
1126  {"ld h, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1127  {"daa", Z80_OP8 ,NULL},
1128  {"jr z, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1129  {"add hl, hl", Z80_OP8 ,NULL},
1130  {"ld hl, [0x%04x]", Z80_OP8^Z80_ARG16 ,NULL},
1131  {"dec hl", Z80_OP8 ,NULL},
1132  {"inc l", Z80_OP8 ,NULL},
1133  {"dec l", Z80_OP8 ,NULL},
1134  {"ld l, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1135  {"cpl", Z80_OP8 ,NULL},
1136  {"jr nc, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1137  {"ld sp, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1138  {"ld [0x%04x], a", Z80_OP8^Z80_ARG16 ,NULL},
1139  {"inc sp", Z80_OP8 ,NULL},
1140  {"inc [hl]", Z80_OP8 ,NULL},
1141  {"dec [hl]", Z80_OP8 ,NULL},
1142  {"ld [hl], 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1143  {"scf", Z80_OP8 ,NULL},
1144  {"jr c, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1145  {"add hl, sp", Z80_OP8 ,NULL},
1146  {"ld a, [0x%04x]", Z80_OP8^Z80_ARG16 ,NULL},
1147  {"dec sp", Z80_OP8 ,NULL},
1148  {"inc a", Z80_OP8 ,NULL},
1149  {"dec a", Z80_OP8 ,NULL},
1150  {"ld a, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1151  {"ccf", Z80_OP8 ,NULL},
1152  {"ld b, b", Z80_OP8 ,NULL},
1153  {"ld b, c", Z80_OP8 ,NULL},
1154  {"ld b, d", Z80_OP8 ,NULL},
1155  {"ld b, e", Z80_OP8 ,NULL},
1156  {"ld b, h", Z80_OP8 ,NULL},
1157  {"ld b, l", Z80_OP8 ,NULL},
1158  {"ld b, [hl]", Z80_OP8 ,NULL},
1159  {"ld b, a", Z80_OP8 ,NULL},
1160  {"ld c, b", Z80_OP8 ,NULL},
1161  {"ld c, c", Z80_OP8 ,NULL},
1162  {"ld c, d", Z80_OP8 ,NULL},
1163  {"ld c, e", Z80_OP8 ,NULL},
1164  {"ld c, h", Z80_OP8 ,NULL},
1165  {"ld c, l", Z80_OP8 ,NULL},
1166  {"ld c, [hl]", Z80_OP8 ,NULL},
1167  {"ld c, a", Z80_OP8 ,NULL},
1168  {"ld d, b", Z80_OP8 ,NULL},
1169  {"ld d, c", Z80_OP8 ,NULL},
1170  {"ld d, d", Z80_OP8 ,NULL},
1171  {"ld d, e", Z80_OP8 ,NULL},
1172  {"ld d, h", Z80_OP8 ,NULL},
1173  {"ld d, l", Z80_OP8 ,NULL},
1174  {"ld d, [hl]", Z80_OP8 ,NULL},
1175  {"ld d, a", Z80_OP8 ,NULL},
1176  {"ld e, b", Z80_OP8 ,NULL},
1177  {"ld e, c", Z80_OP8 ,NULL},
1178  {"ld e, d", Z80_OP8 ,NULL},
1179  {"ld e, e", Z80_OP8 ,NULL},
1180  {"ld e, h", Z80_OP8 ,NULL},
1181  {"ld e, l", Z80_OP8 ,NULL},
1182  {"ld e, [hl]", Z80_OP8 ,NULL},
1183  {"ld e, a", Z80_OP8 ,NULL},
1184  {"ld h, b", Z80_OP8 ,NULL},
1185  {"ld h, c", Z80_OP8 ,NULL},
1186  {"ld h, d", Z80_OP8 ,NULL},
1187  {"ld h, e", Z80_OP8 ,NULL},
1188  {"ld h, h", Z80_OP8 ,NULL},
1189  {"ld h, l", Z80_OP8 ,NULL},
1190  {"ld h, [hl]", Z80_OP8 ,NULL},
1191  {"ld h, a", Z80_OP8 ,NULL},
1192  {"ld l, b", Z80_OP8 ,NULL},
1193  {"ld l, c", Z80_OP8 ,NULL},
1194  {"ld l, d", Z80_OP8 ,NULL},
1195  {"ld l, e", Z80_OP8 ,NULL},
1196  {"ld l, h", Z80_OP8 ,NULL},
1197  {"ld l, l", Z80_OP8 ,NULL},
1198  {"ld l, [hl]", Z80_OP8 ,NULL},
1199  {"ld l, a", Z80_OP8 ,NULL},
1200  {"ld [hl], b", Z80_OP8 ,NULL},
1201  {"ld [hl], c", Z80_OP8 ,NULL},
1202  {"ld [hl], d", Z80_OP8 ,NULL},
1203  {"ld [hl], e", Z80_OP8 ,NULL},
1204  {"ld [hl], h", Z80_OP8 ,NULL},
1205  {"ld [hl], l", Z80_OP8 ,NULL},
1206  {"halt", Z80_OP8 ,NULL},
1207  {"ld [hl], a", Z80_OP8 ,NULL},
1208  {"ld a, b", Z80_OP8 ,NULL},
1209  {"ld a, c", Z80_OP8 ,NULL},
1210  {"ld a, d", Z80_OP8 ,NULL},
1211  {"ld a, e", Z80_OP8 ,NULL},
1212  {"ld a, h", Z80_OP8 ,NULL},
1213  {"ld a, l", Z80_OP8 ,NULL},
1214  {"ld a, [hl]", Z80_OP8 ,NULL},
1215  {"ld a, a", Z80_OP8 ,NULL},
1216  {"add a, b", Z80_OP8 ,NULL},
1217  {"add a, c", Z80_OP8 ,NULL},
1218  {"add a, d", Z80_OP8 ,NULL},
1219  {"add a, e", Z80_OP8 ,NULL},
1220  {"add a, h", Z80_OP8 ,NULL},
1221  {"add a, l", Z80_OP8 ,NULL},
1222  {"add a, [hl]", Z80_OP8 ,NULL},
1223  {"add a, a", Z80_OP8 ,NULL},
1224  {"adc a, b", Z80_OP8 ,NULL},
1225  {"adc a, c", Z80_OP8 ,NULL},
1226  {"adc a, d", Z80_OP8 ,NULL},
1227  {"adc a, e", Z80_OP8 ,NULL},
1228  {"adc a, h", Z80_OP8 ,NULL},
1229  {"adc a, l", Z80_OP8 ,NULL},
1230  {"adc a, [hl]", Z80_OP8 ,NULL},
1231  {"adc a, a", Z80_OP8 ,NULL},
1232  {"sub b", Z80_OP8 ,NULL},
1233  {"sub c", Z80_OP8 ,NULL},
1234  {"sub d", Z80_OP8 ,NULL},
1235  {"sub e", Z80_OP8 ,NULL},
1236  {"sub h", Z80_OP8 ,NULL},
1237  {"sub l", Z80_OP8 ,NULL},
1238  {"sub [hl]", Z80_OP8 ,NULL},
1239  {"sub a", Z80_OP8 ,NULL},
1240  {"sbc a, b", Z80_OP8 ,NULL},
1241  {"sbc a, c", Z80_OP8 ,NULL},
1242  {"sbc a, d", Z80_OP8 ,NULL},
1243  {"sbc a, e", Z80_OP8 ,NULL},
1244  {"sbc a, h", Z80_OP8 ,NULL},
1245  {"sbc a, l", Z80_OP8 ,NULL},
1246  {"sbc a, [hl]", Z80_OP8 ,NULL},
1247  {"sbc a, a", Z80_OP8 ,NULL},
1248  {"and b", Z80_OP8 ,NULL},
1249  {"and c", Z80_OP8 ,NULL},
1250  {"and d", Z80_OP8 ,NULL},
1251  {"and e", Z80_OP8 ,NULL},
1252  {"and h", Z80_OP8 ,NULL},
1253  {"and l", Z80_OP8 ,NULL},
1254  {"and [hl]", Z80_OP8 ,NULL},
1255  {"and a", Z80_OP8 ,NULL},
1256  {"xor b", Z80_OP8 ,NULL},
1257  {"xor c", Z80_OP8 ,NULL},
1258  {"xor d", Z80_OP8 ,NULL},
1259  {"xor e", Z80_OP8 ,NULL},
1260  {"xor h", Z80_OP8 ,NULL},
1261  {"xor l", Z80_OP8 ,NULL},
1262  {"xor [hl]", Z80_OP8 ,NULL},
1263  {"xor a", Z80_OP8 ,NULL},
1264  {"or b", Z80_OP8 ,NULL},
1265  {"or c", Z80_OP8 ,NULL},
1266  {"or d", Z80_OP8 ,NULL},
1267  {"or e", Z80_OP8 ,NULL},
1268  {"or h", Z80_OP8 ,NULL},
1269  {"or l", Z80_OP8 ,NULL},
1270  {"or [hl]", Z80_OP8 ,NULL},
1271  {"or a", Z80_OP8 ,NULL},
1272  {"cp b", Z80_OP8 ,NULL},
1273  {"cp c", Z80_OP8 ,NULL},
1274  {"cp d", Z80_OP8 ,NULL},
1275  {"cp e", Z80_OP8 ,NULL},
1276  {"cp h", Z80_OP8 ,NULL},
1277  {"cp l", Z80_OP8 ,NULL},
1278  {"cp [hl]", Z80_OP8 ,NULL},
1279  {"cp a", Z80_OP8 ,NULL},
1280  {"ret nz", Z80_OP8 ,NULL},
1281  {"pop bc", Z80_OP8 ,NULL},
1282  {"jp nz, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1283  {"jp 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1284  {"call nz, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1285  {"push bc", Z80_OP8 ,NULL},
1286  {"add a, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1287  {"rst 0x00", Z80_OP8 ,NULL},
1288  {"ret z", Z80_OP8 ,NULL},
1289  {"ret", Z80_OP8 ,NULL},
1290  {"jp z, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1291  {"", Z80_OP16 ,cb},
1292  {"call z, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1293  {"call 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1294  {"adc a, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1295  {"rst 0x08", Z80_OP8 ,NULL},
1296  {"ret nc", Z80_OP8 ,NULL},
1297  {"pop de", Z80_OP8 ,NULL},
1298  {"jp nc, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1299  {"out [0x%02x], a", Z80_OP8^Z80_ARG8 ,NULL},
1300  {"call nc, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1301  {"push de", Z80_OP8 ,NULL},
1302  {"sub 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1303  {"rst 0x10", Z80_OP8 ,NULL},
1304  {"ret c", Z80_OP8 ,NULL},
1305  {"exx", Z80_OP8 ,NULL},
1306  {"jp c, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1307  {"in a, [0x%02x]", Z80_OP8^Z80_ARG8 ,NULL},
1308  {"call c, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1309  {"", Z80_OP_UNK^Z80_ENC0 ,dd},
1310  {"sbc a, 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1311  {"rst 0x18", Z80_OP8 ,NULL},
1312  {"ret po", Z80_OP8 ,NULL},
1313  {"pop hl", Z80_OP8 ,NULL},
1314  {"jp po, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1315  {"ex [sp], hl", Z80_OP8 ,NULL},
1316  {"call po, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1317  {"push hl", Z80_OP8 ,NULL},
1318  {"and 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1319  {"rst 0x20", Z80_OP8 ,NULL},
1320  {"ret pe", Z80_OP8 ,NULL},
1321  {"jp [hl]", Z80_OP8 ,NULL},
1322  {"jp pe, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1323  {"ex de, hl", Z80_OP8 ,NULL},
1324  {"call pe, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1325  {"", Z80_OP_UNK^Z80_ENC1 ,ed},
1326  {"xor 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1327  {"rst 0x28", Z80_OP8 ,NULL},
1328  {"ret p", Z80_OP8 ,NULL},
1329  {"pop af", Z80_OP8 ,NULL},
1330  {"jp p, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1331  {"di", Z80_OP8 ,NULL},
1332  {"call p, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1333  {"push af", Z80_OP8 ,NULL},
1334  {"or 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1335  {"rst 0x30", Z80_OP8 ,NULL},
1336  {"ret m", Z80_OP8 ,NULL},
1337  {"ld sp, hl", Z80_OP8 ,NULL},
1338  {"jp m, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1339  {"ei", Z80_OP8 ,NULL},
1340  {"call m, 0x%04x", Z80_OP8^Z80_ARG16 ,NULL},
1341  {"", Z80_OP_UNK^Z80_ENC0 ,fd},
1342  {"cp 0x%02x", Z80_OP8^Z80_ARG8 ,NULL},
1343  {"rst 0x38", Z80_OP8 ,NULL},
1344 };
1345 
1346 #endif
uint8_t ut8
Definition: lh5801.h:11
static const char hex[16]
Definition: print.c:21
const void * op_moar
Definition: z80_tab.h:26
char * name
Definition: z80_tab.h:24
int type
Definition: z80_tab.h:25
#define NULL
Definition: z80_tab.h:10
@ Z80_OP24
Definition: z80_tab.h:16
@ Z80_ARG8
Definition: z80_tab.h:17
@ Z80_OP_UNK
Definition: z80_tab.h:13
@ Z80_ENC0
Definition: z80_tab.h:19
@ Z80_ARG16
Definition: z80_tab.h:18
@ Z80_ENC1
Definition: z80_tab.h:20
@ Z80_OP8
Definition: z80_tab.h:14
@ Z80_OP16
Definition: z80_tab.h:15
static const z80_opcode fd[]
Definition: z80_tab.h:997
static const z80_opcode z80_op[]
Definition: z80_tab.h:1087
static const z80_opcode dd[]
Definition: z80_tab.h:844
static const char * cb[]
Definition: z80_tab.h:176
static const char * ddcb[]
Definition: z80_tab.h:435
static const char * fdcb[]
Definition: z80_tab.h:639
static ut8 z80_ed_branch_index_res(ut8 hex)
Definition: z80_tab.h:148
static ut8 z80_fddd_branch_index_res(ut8 hex)
Definition: z80_tab.h:29
static const z80_opcode ed[]
Definition: z80_tab.h:934