-static struct tab_elt opc_main[] =
-{
- { 0x00, 0xFF, prt, "nop" },
- { 0x01, 0xCF, prt_rr_nn, "ld %s,0x%%04x" },
- { 0x02, 0xFF, prt, "ld (bc),a" },
- { 0x03, 0xCF, prt_rr, "inc " },
- { 0x04, 0xC7, prt_r, "inc %s" },
- { 0x05, 0xC7, prt_r, "dec %s" },
- { 0x06, 0xC7, ld_r_n, "ld %s,0x%%02x" },
- { 0x07, 0xFF, prt, "rlca" },
- { 0x08, 0xFF, prt, "ex af,af'" },
- { 0x09, 0xCF, prt_rr, "add hl," },
- { 0x0A, 0xFF, prt, "ld a,(bc)" },
- { 0x0B, 0xCF, prt_rr, "dec " },
- { 0x0F, 0xFF, prt, "rrca" },
- { 0x10, 0xFF, prt_e, "djnz " },
- { 0x12, 0xFF, prt, "ld (de),a" },
- { 0x17, 0xFF, prt, "rla" },
- { 0x18, 0xFF, prt_e, "jr "},
- { 0x1A, 0xFF, prt, "ld a,(de)" },
- { 0x1F, 0xFF, prt, "rra" },
- { 0x20, 0xE7, jr_cc, "jr %s,"},
- { 0x22, 0xFF, prt_nn, "ld (0x%04x),hl" },
- { 0x27, 0xFF, prt, "daa"},
- { 0x2A, 0xFF, prt_nn, "ld hl,(0x%04x)" },
- { 0x2F, 0xFF, prt, "cpl" },
- { 0x32, 0xFF, prt_nn, "ld (0x%04x),a" },
- { 0x37, 0xFF, prt, "scf" },
- { 0x3A, 0xFF, prt_nn, "ld a,(0x%04x)" },
- { 0x3F, 0xFF, prt, "ccf" },
-
- { 0x76, 0xFF, prt, "halt" },
- { 0x40, 0xC0, ld_r_r, "ld %s,%s"},
-
- { 0x80, 0xC0, arit_r, "%s%s" },
-
- { 0xC0, 0xC7, prt_cc, "ret " },
- { 0xC1, 0xCF, pop_rr, "pop" },
- { 0xC2, 0xC7, jp_cc_nn, "jp " },
- { 0xC3, 0xFF, prt_nn, "jp 0x%04x" },
- { 0xC4, 0xC7, jp_cc_nn, "call " },
- { 0xC5, 0xCF, pop_rr, "push" },
- { 0xC6, 0xC7, arit_n, "%s0x%%02x" },
- { 0xC7, 0xC7, rst, "rst 0x%02x" },
- { 0xC9, 0xFF, prt, "ret" },
- { 0xCB, 0xFF, pref_cb, "" },
- { 0xCD, 0xFF, prt_nn, "call 0x%04x" },
- { 0xD3, 0xFF, prt_n, "out (0x%02x),a" },
- { 0xD9, 0xFF, prt, "exx" },
- { 0xDB, 0xFF, prt_n, "in a,(0x%02x)" },
- { 0xDD, 0xFF, pref_ind, "ix" },
- { 0xE3, 0xFF, prt, "ex (sp),hl" },
- { 0xE9, 0xFF, prt, "jp (hl)" },
- { 0xEB, 0xFF, prt, "ex de,hl" },
- { 0xED, 0xFF, pref_ed, ""},
- { 0xF3, 0xFF, prt, "di" },
- { 0xF9, 0xFF, prt, "ld sp,hl" },
- { 0xFB, 0xFF, prt, "ei" },
- { 0xFD, 0xFF, pref_ind, "iy" },
- { 0x00, 0x00, prt, "????" },
+static const struct tab_elt
+opc_main[] =
+{
+ { 0x00, 0xFF, prt, "nop", INSS_ALL },
+ { 0x01, 0xCF, prt_rr_nn, "ld %s,0x%%04x", INSS_ALL },
+ { 0x02, 0xFF, prt, "ld (bc),a", INSS_ALL },
+ { 0x03, 0xCF, prt_rr, "inc ", INSS_ALL },
+ { 0x04, 0xC7, prt_r, "inc %s", INSS_ALL },
+ { 0x05, 0xC7, prt_r, "dec %s", INSS_ALL },
+ { 0x06, 0xC7, ld_r_n, "ld %s,0x%%02x", INSS_ALL },
+ { 0x07, 0xFF, prt, "rlca", INSS_ALL },
+ { 0x08, 0xFF, prt, "ex af,af'", ~INSS_GBZ80 },
+ { 0x09, 0xCF, prt_rr, "add hl,", INSS_ALL },
+ { 0x0A, 0xFF, prt, "ld a,(bc)", INSS_ALL },
+ { 0x0B, 0xCF, prt_rr, "dec ", INSS_ALL },
+ { 0x0F, 0xFF, prt, "rrca", INSS_ALL },
+ { 0x10, 0xFF, prt_e, "djnz ", ~INSS_GBZ80 },
+ { 0x12, 0xFF, prt, "ld (de),a", INSS_ALL },
+ { 0x17, 0xFF, prt, "rla", INSS_ALL },
+ { 0x18, 0xFF, prt_e, "jr ", INSS_ALL },
+ { 0x1A, 0xFF, prt, "ld a,(de)", INSS_ALL },
+ { 0x1F, 0xFF, prt, "rra", INSS_ALL },
+ { 0x20, 0xE7, jr_cc, "jr %s,", INSS_ALL },
+ { 0x22, 0xFF, prt_nn, "ld (0x%04x),hl", ~INSS_GBZ80 },
+ { 0x27, 0xFF, prt, "daa", INSS_ALL },
+ { 0x2A, 0xFF, prt_nn, "ld hl,(0x%04x)", ~INSS_GBZ80 },
+ { 0x2F, 0xFF, prt, "cpl", INSS_ALL },
+ { 0x32, 0xFF, prt_nn, "ld (0x%04x),a", INSS_ALL },
+ { 0x37, 0xFF, prt, "scf", INSS_ALL },
+ { 0x3A, 0xFF, prt_nn, "ld a,(0x%04x)", INSS_ALL },
+ { 0x3F, 0xFF, prt, "ccf", INSS_ALL },
+
+ { 0x76, 0xFF, prt, "halt", INSS_ALL },
+
+ { 0x40, 0xFF, suffix, "sis", INSS_EZ80 },
+ { 0x49, 0xFF, suffix, "lis", INSS_EZ80 },
+ { 0x52, 0xFF, suffix, "sil", INSS_EZ80 },
+ { 0x5B, 0xFF, suffix, "lil", INSS_EZ80 },
+
+ { 0x40, 0xC0, ld_r_r, "ld %s,%s", INSS_ALL},
+
+ { 0x80, 0xC0, arit_r, "%s%s", INSS_ALL },
+
+ { 0xC0, 0xC7, prt_cc, "ret ", INSS_ALL },
+ { 0xC1, 0xCF, pop_rr, "pop", INSS_ALL },
+ { 0xC2, 0xC7, jp_cc_nn, "jp ", INSS_ALL },
+ { 0xC3, 0xFF, prt_nn, "jp 0x%04x", INSS_ALL },
+ { 0xC4, 0xC7, jp_cc_nn, "call ", INSS_ALL },
+ { 0xC5, 0xCF, pop_rr, "push", INSS_ALL },
+ { 0xC6, 0xC7, arit_n, "%s0x%%02x", INSS_ALL },
+ { 0xC7, 0xC7, rst, "rst 0x%02x", INSS_ALL },
+ { 0xC9, 0xFF, prt, "ret", INSS_ALL },
+ { 0xCB, 0xFF, pref_cb, "", INSS_ALL },
+ { 0xCD, 0xFF, prt_nn, "call 0x%04x", INSS_ALL },
+ { 0xD3, 0xFF, prt_n, "out (0x%02x),a", ~INSS_GBZ80 },
+ { 0xD9, 0xFF, prt, "exx", ~INSS_GBZ80 },
+ { 0xDB, 0xFF, prt_n, "in a,(0x%02x)", ~INSS_GBZ80 },
+ { 0xDD, 0xFF, pref_ind, "ix", ~INSS_GBZ80 },
+ { 0xE3, 0xFF, prt, "ex (sp),hl", ~INSS_GBZ80 },
+ { 0xE9, 0xFF, prt, "jp (hl)", INSS_ALL },
+ { 0xEB, 0xFF, prt, "ex de,hl", ~INSS_GBZ80 },
+ { 0xED, 0xFF, pref_ed, "", ~INSS_GBZ80 },
+ { 0xF3, 0xFF, prt, "di", INSS_ALL },
+ { 0xF9, 0xFF, prt, "ld sp,hl", INSS_ALL },
+ { 0xFB, 0xFF, prt, "ei", INSS_ALL },
+ { 0xFD, 0xFF, pref_ind, "iy", ~INSS_GBZ80 },
+ { 0x00, 0x00, prt, "????", INSS_ALL },
+} ;
+
+/* Separate GBZ80 main opcode table due to many differences */
+static const struct tab_elt
+opc_main_gbz80[] =
+{
+ { 0x00, 0xFF, prt,"nop", INSS_ALL },
+ { 0x01, 0xCF, prt_rr_nn, "ld %s,0x%%04x", INSS_ALL },
+ { 0x02, 0xFF, prt, "ld (bc),a", INSS_ALL },
+ { 0x03, 0xCF, prt_rr, "inc ", INSS_ALL },
+ { 0x04, 0xC7, prt_r, "inc %s", INSS_ALL },
+ { 0x05, 0xC7, prt_r, "dec %s", INSS_ALL },
+ { 0x06, 0xC7, ld_r_n, "ld %s,0x%%02x", INSS_ALL },
+ { 0x07, 0xFF, prt, "rlca", INSS_ALL },
+ { 0x08, 0xFF, prt_nn, "ld (0x%04x),sp", INSS_GBZ80 },
+ { 0x09, 0xCF, prt_rr, "add hl,", INSS_ALL },
+ { 0x0A, 0xFF, prt, "ld a,(bc)", INSS_ALL },
+ { 0x0B, 0xCF, prt_rr, "dec ", INSS_ALL },
+ { 0x0F, 0xFF, prt, "rrca", INSS_ALL },
+ { 0x10, 0xFF, prt, "stop", INSS_GBZ80 },
+ { 0x12, 0xFF, prt, "ld (de),a", INSS_ALL },
+ { 0x17, 0xFF, prt, "rla", INSS_ALL },
+ { 0x18, 0xFF, prt_e, "jr ", INSS_ALL },
+ { 0x1A, 0xFF, prt, "ld a,(de)", INSS_ALL },
+ { 0x1F, 0xFF, prt, "rra", INSS_ALL },
+ { 0x20, 0xE7, jr_cc, "jr %s,", INSS_ALL },
+ { 0x22, 0xFF, prt, "ld (hl+),a", INSS_GBZ80 },
+ { 0x27, 0xFF, prt, "daa", INSS_ALL },
+ { 0x2A, 0xFF, prt, "ld a,(hl+)", INSS_GBZ80 },
+ { 0x2F, 0xFF, prt, "cpl", INSS_ALL },
+ { 0x32, 0xFF, prt, "ld (hl-),a", INSS_GBZ80 },
+ { 0x37, 0xFF, prt, "scf", INSS_ALL },
+ { 0x3A, 0xFF, prt, "ld a,(hl-)", INSS_GBZ80 },
+ { 0x3F, 0xFF, prt, "ccf", INSS_ALL },
+ { 0x76, 0xFF, prt, "halt", INSS_ALL },
+ { 0x40, 0xC0, ld_r_r, "ld %s,%s", INSS_ALL},
+ { 0x80, 0xC0, arit_r, "%s%s", INSS_ALL },
+ { 0xC0, 0xE7, prt_cc, "ret ", INSS_ALL },
+ { 0xC1, 0xCF, pop_rr, "pop", INSS_ALL },
+ { 0xC2, 0xE7, jp_cc_nn, "jp ", INSS_ALL },
+ { 0xC3, 0xFF, prt_nn, "jp 0x%04x", INSS_ALL },
+ { 0xC4, 0xE7, jp_cc_nn, "call ", INSS_ALL },
+ { 0xC5, 0xCF, pop_rr, "push", INSS_ALL },
+ { 0xC6, 0xC7, arit_n, "%s0x%%02x", INSS_ALL },
+ { 0xC7, 0xC7, rst, "rst 0x%02x", INSS_ALL },
+ { 0xC9, 0xFF, prt, "ret", INSS_ALL },
+ { 0xCB, 0xFF, pref_cb, "", INSS_ALL },
+ { 0xCD, 0xFF, prt_nn, "call 0x%04x", INSS_ALL },
+ { 0xD9, 0xFF, prt, "reti", INSS_GBZ80 },
+ { 0xE0, 0xFF, prt_n, "ldh (0x%02x),a", INSS_GBZ80 },
+ { 0xE2, 0xFF, prt, "ldh (c),a", INSS_GBZ80 },
+ { 0xE8, 0xFF, prt_d, "add sp,%d", INSS_GBZ80 },
+ { 0xE9, 0xFF, prt, "jp (hl)", INSS_ALL },
+ { 0xEA, 0xFF, prt_nn, "ld (0x%04x),a", INSS_GBZ80 },
+ { 0xF0, 0xFF, prt_n, "ldh a,(0x%02x)", INSS_GBZ80 },
+ { 0xF2, 0xFF, prt, "ldh a,(c)", INSS_GBZ80 },
+ { 0xF3, 0xFF, prt, "di", INSS_ALL },
+ { 0xF8, 0xFF, prt_d, "ldhl sp,%d", INSS_GBZ80 },
+ { 0xF9, 0xFF, prt, "ld sp,hl", INSS_ALL },
+ { 0xFA, 0xFF, prt_nn, "ld a,(0x%04x)", INSS_GBZ80 },
+ { 0xFB, 0xFF, prt, "ei", INSS_ALL },
+ { 0x00, 0x00, dump, "?", INSS_ALL },