- { "adc", 0x88, 0x4A, emit_adc },
- { "add", 0x80, 0x09, emit_add },
- { "and", 0x00, 0xA0, emit_s },
- { "bit", 0xCB, 0x40, emit_bit },
- { "call", 0xCD, 0xC4, emit_jpcc },
- { "ccf", 0x00, 0x3F, emit_insn },
- { "cp", 0x00, 0xB8, emit_s },
- { "cpd", 0xED, 0xA9, emit_insn },
- { "cpdr", 0xED, 0xB9, emit_insn },
- { "cpi", 0xED, 0xA1, emit_insn },
- { "cpir", 0xED, 0xB1, emit_insn },
- { "cpl", 0x00, 0x2F, emit_insn },
- { "daa", 0x00, 0x27, emit_insn },
- { "dec", 0x0B, 0x05, emit_incdec },
- { "di", 0x00, 0xF3, emit_insn },
- { "djnz", 0x00, 0x10, emit_jr },
- { "ei", 0x00, 0xFB, emit_insn },
- { "ex", 0x00, 0x00, emit_ex},
- { "exx", 0x00, 0xD9, emit_insn },
- { "halt", 0x00, 0x76, emit_insn },
- { "im", 0xED, 0x46, emit_im },
- { "in", 0x00, 0x00, emit_in },
- { "inc", 0x03, 0x04, emit_incdec },
- { "ind", 0xED, 0xAA, emit_insn },
- { "indr", 0xED, 0xBA, emit_insn },
- { "ini", 0xED, 0xA2, emit_insn },
- { "inir", 0xED, 0xB2, emit_insn },
- { "jp", 0xC3, 0xC2, emit_jpcc },
- { "jr", 0x18, 0x20, emit_jrcc },
- { "ld", 0x00, 0x00, emit_ld },
- { "ldd", 0xED, 0xA8, emit_insn },
- { "lddr", 0xED, 0xB8, emit_insn },
- { "ldi", 0xED, 0xA0, emit_insn },
- { "ldir", 0xED, 0xB0, emit_insn },
- { "mulub", 0xED, 0xC5, emit_mulub }, /* R800 only. */
- { "muluw", 0xED, 0xC3, emit_muluw }, /* R800 only. */
- { "neg", 0xed, 0x44, emit_insn },
- { "nop", 0x00, 0x00, emit_insn },
- { "or", 0x00, 0xB0, emit_s },
- { "otdr", 0xED, 0xBB, emit_insn },
- { "otir", 0xED, 0xB3, emit_insn },
- { "out", 0x00, 0x00, emit_out },
- { "outd", 0xED, 0xAB, emit_insn },
- { "outi", 0xED, 0xA3, emit_insn },
- { "pop", 0x00, 0xC1, emit_pop },
- { "push", 0x00, 0xC5, emit_pop },
- { "res", 0xCB, 0x80, emit_bit },
- { "ret", 0xC9, 0xC0, emit_retcc },
- { "reti", 0xED, 0x4D, emit_insn },
- { "retn", 0xED, 0x45, emit_insn },
- { "rl", 0xCB, 0x10, emit_mr },
- { "rla", 0x00, 0x17, emit_insn },
- { "rlc", 0xCB, 0x00, emit_mr },
- { "rlca", 0x00, 0x07, emit_insn },
- { "rld", 0xED, 0x6F, emit_insn },
- { "rr", 0xCB, 0x18, emit_mr },
- { "rra", 0x00, 0x1F, emit_insn },
- { "rrc", 0xCB, 0x08, emit_mr },
- { "rrca", 0x00, 0x0F, emit_insn },
- { "rrd", 0xED, 0x67, emit_insn },
- { "rst", 0x00, 0xC7, emit_rst},
- { "sbc", 0x98, 0x42, emit_adc },
- { "scf", 0x00, 0x37, emit_insn },
- { "set", 0xCB, 0xC0, emit_bit },
- { "sla", 0xCB, 0x20, emit_mr },
- { "sli", 0xCB, 0x30, emit_mr },
- { "sll", 0xCB, 0x30, emit_mr },
- { "sra", 0xCB, 0x28, emit_mr },
- { "srl", 0xCB, 0x38, emit_mr },
- { "sub", 0x00, 0x90, emit_s },
- { "xor", 0x00, 0xA8, emit_s },
+ { "adc", 0x88, 0x4A, emit_adc, INS_ALL },
+ { "add", 0x80, 0x09, emit_add, INS_ALL },
+ { "and", 0x00, 0xA0, emit_s, INS_ALL },
+ { "bit", 0xCB, 0x40, emit_bit, INS_ALL },
+ { "brlc", 0xED, 0x2C, emit_bshft,INS_Z80N },
+ { "bsla", 0xED, 0x28, emit_bshft,INS_Z80N },
+ { "bsra", 0xED, 0x29, emit_bshft,INS_Z80N },
+ { "bsrf", 0xED, 0x2B, emit_bshft,INS_Z80N },
+ { "bsrl", 0xED, 0x2A, emit_bshft,INS_Z80N },
+ { "call", 0xCD, 0xC4, emit_jpcc, INS_ALL },
+ { "ccf", 0x00, 0x3F, emit_insn, INS_ALL },
+ { "cp", 0x00, 0xB8, emit_s, INS_ALL },
+ { "cpd", 0xED, 0xA9, emit_insn, INS_NOT_GBZ80 },
+ { "cpdr", 0xED, 0xB9, emit_insn, INS_NOT_GBZ80 },
+ { "cpi", 0xED, 0xA1, emit_insn, INS_NOT_GBZ80 },
+ { "cpir", 0xED, 0xB1, emit_insn, INS_NOT_GBZ80 },
+ { "cpl", 0x00, 0x2F, emit_insn, INS_ALL },
+ { "daa", 0x00, 0x27, emit_insn, INS_ALL },
+ { "dec", 0x0B, 0x05, emit_incdec,INS_ALL },
+ { "di", 0x00, 0xF3, emit_insn, INS_ALL },
+ { "djnz", 0x00, 0x10, emit_jr, INS_NOT_GBZ80 },
+ { "ei", 0x00, 0xFB, emit_insn, INS_ALL },
+ { "ex", 0x00, 0x00, emit_ex, INS_NOT_GBZ80 },
+ { "exx", 0x00, 0xD9, emit_insn, INS_NOT_GBZ80 },
+ { "halt", 0x00, 0x76, emit_insn, INS_ALL },
+ { "im", 0xED, 0x46, emit_im, INS_NOT_GBZ80 },
+ { "in", 0x00, 0x00, emit_in, INS_NOT_GBZ80 },
+ { "in0", 0xED, 0x00, emit_in0, INS_Z180|INS_EZ80 },
+ { "inc", 0x03, 0x04, emit_incdec,INS_ALL },
+ { "ind", 0xED, 0xAA, emit_insn, INS_NOT_GBZ80 },
+ { "ind2", 0xED, 0x8C, emit_insn, INS_EZ80 },
+ { "ind2r",0xED, 0x9C, emit_insn, INS_EZ80 },
+ { "indm", 0xED, 0x8A, emit_insn, INS_EZ80 },
+ { "indmr",0xED, 0x9A, emit_insn, INS_EZ80 },
+ { "indr", 0xED, 0xBA, emit_insn, INS_NOT_GBZ80 },
+ { "indrx",0xED, 0xCA, emit_insn, INS_EZ80 },
+ { "ini", 0xED, 0xA2, emit_insn, INS_NOT_GBZ80 },
+ { "ini2", 0xED, 0x84, emit_insn, INS_EZ80 },
+ { "ini2r",0xED, 0x94, emit_insn, INS_EZ80 },
+ { "inim", 0xED, 0x82, emit_insn, INS_EZ80 },
+ { "inimr",0xED, 0x92, emit_insn, INS_EZ80 },
+ { "inir", 0xED, 0xB2, emit_insn, INS_NOT_GBZ80 },
+ { "inirx",0xED, 0xC2, emit_insn, INS_EZ80 },
+ { "jp", 0xC3, 0xC2, emit_jpcc, INS_ALL },
+ { "jr", 0x18, 0x20, emit_jrcc, INS_ALL },
+ { "ld", 0x00, 0x00, emit_ld, INS_ALL },
+ { "ldd", 0xED, 0xA8, emit_lddldi,INS_ALL }, /* GBZ80 has special meaning */
+ { "lddr", 0xED, 0xB8, emit_insn, INS_NOT_GBZ80 },
+ { "lddrx",0xED, 0xBC, emit_insn, INS_Z80N },
+ { "lddx", 0xED, 0xAC, emit_insn, INS_Z80N },
+ { "ldh", 0xE0, 0x00, emit_ldh, INS_GBZ80 },
+ { "ldhl", 0x00, 0xF8, emit_ldhl, INS_GBZ80 },
+ { "ldi", 0xED, 0xA0, emit_lddldi,INS_ALL }, /* GBZ80 has special meaning */
+ { "ldir", 0xED, 0xB0, emit_insn, INS_NOT_GBZ80 },
+ { "ldirx",0xED, 0xB4, emit_insn, INS_Z80N },
+ { "ldix", 0xED, 0xA4, emit_insn, INS_Z80N },
+ { "ldpirx",0xED,0xB7, emit_insn, INS_Z80N },
+ { "ldws", 0xED, 0xA5, emit_insn, INS_Z80N },
+ { "lea", 0xED, 0x02, emit_lea, INS_EZ80 },
+ { "mirror",0xED,0x24, emit_insn, INS_Z80N },
+ { "mlt", 0xED, 0x4C, emit_mlt, INS_Z180|INS_EZ80|INS_Z80N },
+ { "mul", 0xED, 0x30, emit_mul, INS_Z80N },
+ { "mulub",0xED, 0xC5, emit_mulub,INS_R800 },
+ { "muluw",0xED, 0xC3, emit_muluw,INS_R800 },
+ { "neg", 0xED, 0x44, emit_insn, INS_NOT_GBZ80 },
+ { "nextreg",0xED,0x91,emit_nextreg,INS_Z80N },
+ { "nop", 0x00, 0x00, emit_insn, INS_ALL },
+ { "or", 0x00, 0xB0, emit_s, INS_ALL },
+ { "otd2r",0xED, 0xBC, emit_insn, INS_EZ80 },
+ { "otdm", 0xED, 0x8B, emit_insn, INS_Z180|INS_EZ80 },
+ { "otdmr",0xED, 0x9B, emit_insn, INS_Z180|INS_EZ80 },
+ { "otdr", 0xED, 0xBB, emit_insn, INS_NOT_GBZ80 },
+ { "otdrx",0xED, 0xCB, emit_insn, INS_EZ80 },
+ { "oti2r",0xED, 0xB4, emit_insn, INS_EZ80 },
+ { "otim", 0xED, 0x83, emit_insn, INS_Z180|INS_EZ80 },
+ { "otimr",0xED, 0x93, emit_insn, INS_Z180|INS_EZ80 },
+ { "otir", 0xED, 0xB3, emit_insn, INS_NOT_GBZ80 },
+ { "otirx",0xED, 0xC3, emit_insn, INS_EZ80 },
+ { "out", 0x00, 0x00, emit_out, INS_NOT_GBZ80 },
+ { "out0", 0xED, 0x01, emit_out0, INS_Z180|INS_EZ80 },
+ { "outd", 0xED, 0xAB, emit_insn, INS_NOT_GBZ80 },
+ { "outd2",0xED, 0xAC, emit_insn, INS_EZ80 },
+ { "outi", 0xED, 0xA3, emit_insn, INS_NOT_GBZ80 },
+ { "outi2",0xED, 0xA4, emit_insn, INS_EZ80 },
+ { "outinb",0xED,0x90, emit_insn, INS_Z80N },
+ { "pea", 0xED, 0x65, emit_pea, INS_EZ80 },
+ { "pixelad",0xED,0x94,emit_insn, INS_Z80N },
+ { "pixeldn",0xED,0x93,emit_insn, INS_Z80N },
+ { "pop", 0x00, 0xC1, emit_pop, INS_ALL },
+ { "push", 0x00, 0xC5, emit_push, INS_ALL },
+ { "res", 0xCB, 0x80, emit_bit, INS_ALL },
+ { "ret", 0xC9, 0xC0, emit_retcc,INS_ALL },
+ { "reti", 0xED, 0x4D, emit_reti, INS_ALL }, /*GBZ80 has its own opcode for it*/
+ { "retn", 0xED, 0x45, emit_insn, INS_NOT_GBZ80 },
+ { "rl", 0xCB, 0x10, emit_mr, INS_ALL },
+ { "rla", 0x00, 0x17, emit_insn, INS_ALL },
+ { "rlc", 0xCB, 0x00, emit_mr, INS_ALL },
+ { "rlca", 0x00, 0x07, emit_insn, INS_ALL },
+ { "rld", 0xED, 0x6F, emit_insn, INS_NOT_GBZ80 },
+ { "rr", 0xCB, 0x18, emit_mr, INS_ALL },
+ { "rra", 0x00, 0x1F, emit_insn, INS_ALL },
+ { "rrc", 0xCB, 0x08, emit_mr, INS_ALL },
+ { "rrca", 0x00, 0x0F, emit_insn, INS_ALL },
+ { "rrd", 0xED, 0x67, emit_insn, INS_NOT_GBZ80 },
+ { "rsmix",0xED, 0x7E, emit_insn, INS_EZ80 },
+ { "rst", 0x00, 0xC7, emit_rst, INS_ALL },
+ { "sbc", 0x98, 0x42, emit_adc, INS_ALL },
+ { "scf", 0x00, 0x37, emit_insn, INS_ALL },
+ { "set", 0xCB, 0xC0, emit_bit, INS_ALL },
+ { "setae",0xED, 0x95, emit_insn, INS_Z80N },
+ { "sl1", 0xCB, 0x30, emit_mr, INS_SLI|INS_Z80N },
+ { "sla", 0xCB, 0x20, emit_mr, INS_ALL },
+ { "sli", 0xCB, 0x30, emit_mr, INS_SLI|INS_Z80N },
+ { "sll", 0xCB, 0x30, emit_mr, INS_SLI|INS_Z80N },
+ { "slp", 0xED, 0x76, emit_insn, INS_Z180|INS_EZ80 },
+ { "sra", 0xCB, 0x28, emit_mr, INS_ALL },
+ { "srl", 0xCB, 0x38, emit_mr, INS_ALL },
+ { "stmix",0xED, 0x7D, emit_insn, INS_EZ80 },
+ { "stop", 0x00, 0x10, emit_insn, INS_GBZ80 },
+ { "sub", 0x00, 0x90, emit_sub, INS_ALL },
+ { "swap", 0xCB, 0x30, emit_swap, INS_GBZ80|INS_Z80N },
+ { "swapnib",0xED,0x23,emit_insn, INS_Z80N },
+ { "test", 0xED, 0x27, emit_insn_n, INS_Z80N },
+ { "tst", 0xED, 0x04, emit_tst, INS_Z180|INS_EZ80|INS_Z80N },
+ { "tstio",0xED, 0x74, emit_insn_n,INS_Z180|INS_EZ80 },
+ { "xor", 0x00, 0xA8, emit_s, INS_ALL },