summaryrefslogtreecommitdiff
path: root/arm9/source/z80_dis.c
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/source/z80_dis.c')
-rw-r--r--arm9/source/z80_dis.c2494
1 files changed, 0 insertions, 2494 deletions
diff --git a/arm9/source/z80_dis.c b/arm9/source/z80_dis.c
deleted file mode 100644
index 8a8ade8..0000000
--- a/arm9/source/z80_dis.c
+++ /dev/null
@@ -1,2494 +0,0 @@
-/*
-
- z80 - Z80 Emulator
-
- Copyright (C) 2006 Ian Cowburn <ianc@noddybox.co.uk>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
- -------------------------------------------------------------------------
-
- $Id$
-
-*/
-static const char ident[]="$Id$";
-
-#include "z80_config.h"
-
-#ifdef ENABLE_DISASSEM
-
-#include <stdio.h>
-#include <string.h>
-#include <stdarg.h>
-
-#include "z80.h"
-#include "z80_private.h"
-
-static Z80Relative cb_off;
-
-/* ---------------------------------------- SHARED ROUTINES
-*/
-static const char *z80_dis_reg8[]={"b","c","d","e","h","l","(hl)","a"};
-static const char *z80_dis_reg16[]={"bc","de","hl","sp"};
-static const char *z80_dis_condition[]={"nz","z","nc","c","po","pe","p","m"};
-
-static const char *dis_op;
-static const char *dis_arg;
-
-const char *Z80_Dis_Printf(const char *format, ...)
-{
- static int p=0;
- static char s[16][80];
- va_list arg;
-
- va_start(arg,format);
- p=(p+1)%16;
- vsprintf(s[p],format,arg);
- va_end(arg);
-
- return s[p];
-}
-
-
-Z80Byte Z80_Dis_FetchByte(Z80 *cpu, Z80Word *pc)
-{
-#ifdef ENABLE_ARRAY_MEMORY
- return Z80_MEMORY[(*pc)++];
-#else
- return cpu->priv->disread(cpu,(*pc)++);
-#endif
-}
-
-
-Z80Word Z80_Dis_FetchWord(Z80 *cpu, Z80Word *pc)
-{
- Z80Byte l,h;
-
- l=Z80_Dis_FetchByte(cpu,pc);
- h=Z80_Dis_FetchByte(cpu,pc);
-
- return ((Z80Word)h<<8)|l;
-}
-
-
-void Z80_Dis_Set(const char *op, const char *arg)
-{
- dis_op=op;
- dis_arg=arg;
-}
-
-
-const char *Z80_Dis_GetOp(void)
-{
- return dis_op ? dis_op : "";
-}
-
-
-const char *Z80_Dis_GetArg(void)
-{
- return dis_arg ? dis_arg : "";
-}
-
-
-static const char *GetLabel(Z80Word w)
-{
- if (z80_labels)
- {
- int f;
-
- for(f=0;z80_labels[f].label;f++)
- {
- if (z80_labels[f].address==w)
- {
- return z80_labels[f].label;
- }
- }
- }
-
- return NULL;
-}
-
-
-
-/* ---------------------------------------- CB xx BYTE OPCODES
-*/
-static void DIS_RLC_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[op%8];
- Z80_Dis_Set("rlc",reg);
-}
-
-static void DIS_RRC_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[op%8];
- Z80_Dis_Set("rrc",reg);
-}
-
-static void DIS_RL_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[op%8];
- Z80_Dis_Set("rl",reg);
-}
-
-static void DIS_RR_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[op%8];
- Z80_Dis_Set("rr",reg);
-}
-
-static void DIS_SLA_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[op%8];
- Z80_Dis_Set("sla",reg);
-}
-
-static void DIS_SRA_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[op%8];
- Z80_Dis_Set("sra",reg);
-}
-
-static void DIS_SLL_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[op%8];
- Z80_Dis_Set("sll",reg);
-}
-
-static void DIS_SRL_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[op%8];
- Z80_Dis_Set("srl",reg);
-}
-
-static void DIS_BIT_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
- int bit;
-
- reg=z80_dis_reg8[op%8];
- bit=(op-0x40)/8;
- Z80_Dis_Set("bit",Z80_Dis_Printf("%d,%s",bit,reg));
-}
-
-static void DIS_RES_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
- int bit;
-
- reg=z80_dis_reg8[op%8];
- bit=(op-0x80)/8;
- Z80_Dis_Set("res",Z80_Dis_Printf("%d,%s",bit,reg));
-}
-
-static void DIS_SET_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
- int bit;
-
- reg=z80_dis_reg8[op%8];
- bit=(op-0xc0)/8;
- Z80_Dis_Set("set",Z80_Dis_Printf("%d,%s",bit,reg));
-}
-
-/* ---------------------------------------- DD OPCODES
-*/
-
-static const char *IX_RelStr(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- static char s[80];
- Z80Relative r;
-
- r=(Z80Relative)Z80_Dis_FetchByte(z80,pc);
-
- if (r<0)
- sprintf(s,"(ix-$%.2x)",-r);
- else
- sprintf(s,"(ix+$%.2x)",r);
-
- return(s);
-}
-
-
-static const char *IX_RelStrCB(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- static char s[80];
- Z80Relative r;
-
- r=(Z80Relative)cb_off;
-
- if (r<0)
- sprintf(s,"(ix-$%.2x)",-r);
- else
- sprintf(s,"(ix+$%.2x)",r);
-
- return(s);
-}
-
-
-static const char *XR8(Z80 *z80, int reg, Z80Word *pc)
-{
- switch(reg)
- {
- case 0:
- return("b");
- break;
- case 1:
- return("c");
- break;
- case 2:
- return("d");
- break;
- case 3:
- return("e");
- break;
- case 4:
- return("ixh");
- break;
- case 5:
- return("ixl");
- break;
- case 6:
- return(IX_RelStr(z80,0,pc));
- break;
- case 7:
- return("a");
- break;
- default:
- return(Z80_Dis_Printf("BUG %d",reg));
- break;
- }
-}
-
-static void DIS_DD_NOP(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- dis_opcode_z80[op](z80,op,pc);
-}
-
-static void DIS_ADD_IX_BC(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("add","ix,bc");
-}
-
-static void DIS_ADD_IX_DE(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("add","ix,de");
-}
-
-static void DIS_LD_IX_WORD(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ld",Z80_Dis_Printf("ix,$%.4x",Z80_Dis_FetchWord(z80,pc)));
-}
-
-static void DIS_LD_ADDR_IX(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80Word w;
- const char *p;
-
- w=Z80_Dis_FetchWord(z80,pc);
-
- if ((p=GetLabel(w)))
- Z80_Dis_Set("ld",Z80_Dis_Printf("(%s),ix",p));
- else
- Z80_Dis_Set("ld",Z80_Dis_Printf("($%.4x),ix",w));
-}
-
-static void DIS_INC_IX(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("inc","ix");
-}
-
-static void DIS_INC_IXH(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("inc","ixh");
-}
-
-static void DIS_DEC_IXH(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("dec","ixh");
-}
-
-static void DIS_LD_IXH_BYTE(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ld",Z80_Dis_Printf("ixh,$%.2x",Z80_Dis_FetchByte(z80,pc)));
-}
-
-static void DIS_ADD_IX_IX(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("add","ix,ix");
-}
-
-static void DIS_LD_IX_ADDR(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80Word w;
- const char *p;
-
- w=Z80_Dis_FetchWord(z80,pc);
-
- if ((p=GetLabel(w)))
- Z80_Dis_Set("ld",Z80_Dis_Printf("ix,(%s)",p));
- else
- Z80_Dis_Set("ld",Z80_Dis_Printf("ix,($%.4x)",w));
-}
-
-static void DIS_DEC_IX(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("dec","ix");
-}
-
-static void DIS_INC_IXL(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("inc","ixl");
-}
-
-static void DIS_DEC_IXL(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("dec","ixl");
-}
-
-static void DIS_LD_IXL_BYTE(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ld",Z80_Dis_Printf("ixl,$%.2x",Z80_Dis_FetchByte(z80,pc)));
-}
-
-static void DIS_INC_IIX(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("inc",Z80_Dis_Printf("%s",IX_RelStr(z80,op,pc)));
-}
-
-static void DIS_DEC_IIX(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("dec",Z80_Dis_Printf("%s",IX_RelStr(z80,op,pc)));
-}
-
-static void DIS_LD_IIX_BYTE(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *rel;
- int b;
-
- rel=IX_RelStr(z80,op,pc);
- b=Z80_Dis_FetchByte(z80,pc);
- Z80_Dis_Set("ld",Z80_Dis_Printf("%s,$%.2x",rel,b));
-}
-
-
-static void DIS_ADD_IX_SP(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("add","ix,sp");
-}
-
-static void DIS_XLD_R8_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int src_r,dest_r;
- const char *src,*dest;
-
- dest_r=(op-0x40)/8;
- src_r=op%8;
-
- /* IX can't be used as source and destination when reading z80ory
- */
- if (dest_r==6)
- {
- dest=XR8(z80,dest_r,pc);
- src=z80_dis_reg8[src_r];
- }
- else if (((dest_r==4)||(dest_r==5))&&(src_r==6))
- {
- dest=z80_dis_reg8[dest_r];
- src=XR8(z80,src_r,pc);
- }
- else
- {
- dest=XR8(z80,dest_r,pc);
- src=XR8(z80,src_r,pc);
- }
-
- Z80_Dis_Set("ld",Z80_Dis_Printf("%s,%s",dest,src));
-}
-
-static void DIS_XADD_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("add",Z80_Dis_Printf("a,%s",XR8(z80,(op%8),pc)));
-}
-
-static void DIS_XADC_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("adc",Z80_Dis_Printf("a,%s",XR8(z80,(op%8),pc)));
-}
-
-static void DIS_XSUB_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("sub",Z80_Dis_Printf("a,%s",XR8(z80,(op%8),pc)));
-}
-
-static void DIS_XSBC_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("sbc",Z80_Dis_Printf("a,%s",XR8(z80,(op%8),pc)));
-}
-
-static void DIS_XAND_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("and",Z80_Dis_Printf("%s",XR8(z80,(op%8),pc)));
-}
-
-static void DIS_XXOR_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("xor",Z80_Dis_Printf("%s",XR8(z80,(op%8),pc)));
-}
-
-static void DIS_X_OR_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("or",Z80_Dis_Printf("%s",XR8(z80,(op%8),pc)));
-}
-
-static void DIS_XCP_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("cp",Z80_Dis_Printf("%s",XR8(z80,(op%8),pc)));
-}
-
-static void DIS_POP_IX(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("pop","ix");
-}
-
-static void DIS_EX_ISP_IX(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ex","(sp),ix");
-}
-
-static void DIS_PUSH_IX(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("push","ix");
-}
-
-static void DIS_JP_IX(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("jp","(ix)");
-}
-
-static void DIS_LD_SP_IX(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ld","sp,ix");
-}
-
-static void DIS_DD_CB_DECODE(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int nop;
-
- cb_off=(Z80Relative)Z80_Dis_FetchByte(z80,pc);
- nop=Z80_Dis_FetchByte(z80,pc);
- dis_DD_CB_opcode[nop](z80,nop,pc);
-}
-
-static void DIS_DD_DD_DECODE(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int nop;
-
- nop=Z80_Dis_FetchByte(z80,pc);
- dis_DD_opcode[nop](z80,nop,pc);
-}
-
-static void DIS_DD_ED_DECODE(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int nop;
-
- nop=Z80_Dis_FetchByte(z80,pc);
- dis_ED_opcode[nop](z80,nop,pc);
-}
-
-static void DIS_DD_FD_DECODE(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int nop;
-
- nop=Z80_Dis_FetchByte(z80,pc);
- dis_FD_opcode[nop](z80,nop,pc);
-}
-
-
-/* ---------------------------------------- DD CB OPCODES
-*/
-
-static void DIS_RLC_IX (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
-
- reg=(op%8);
-
- if (reg==6)
- Z80_Dis_Set("rlc",Z80_Dis_Printf("%s",IX_RelStrCB(z80,op,pc)));
- else
- {
- Z80_Dis_Set("rlc",Z80_Dis_Printf("%s[%s]",IX_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
- }
-}
-
-static void DIS_RRC_IX (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
-
- reg=(op%8);
-
- if (reg==6)
- Z80_Dis_Set("rrc",Z80_Dis_Printf("%s",IX_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("rrc",Z80_Dis_Printf("%s[%s]",IX_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_RL_IX (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
-
- reg=(op%8);
-
- if (reg==6)
- Z80_Dis_Set("rl",Z80_Dis_Printf("%s",IX_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("rl",Z80_Dis_Printf("%s[%s]",IX_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_RR_IX (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
-
- reg=(op%8);
-
- if (reg==6)
- Z80_Dis_Set("rr",Z80_Dis_Printf("%s",IX_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("rr",Z80_Dis_Printf("%s[%s]",IX_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_SLA_IX (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
-
- reg=(op%8);
-
- if (reg==6)
- Z80_Dis_Set("sla",Z80_Dis_Printf("%s",IX_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("sla",Z80_Dis_Printf("%s[%s]",IX_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_SRA_IX (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
-
- reg=(op%8);
-
- if (reg==6)
- Z80_Dis_Set("sra",Z80_Dis_Printf("%s",IX_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("sra",Z80_Dis_Printf("%s[%s]",IX_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_SRL_IX (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
-
- reg=(op%8);
-
- if (reg==6)
- Z80_Dis_Set("srl",Z80_Dis_Printf("%s",IX_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("srl",Z80_Dis_Printf("%s[%s]",IX_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_SLL_IX (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
-
- reg=(op%8);
-
- if (reg==6)
- Z80_Dis_Set("sll",Z80_Dis_Printf("%s",IX_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("sll",Z80_Dis_Printf("%s[%s]",IX_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_BIT_IX (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
- int bit;
-
- reg=(op%8);
- bit=(op-0x40)/8;
-
- if (reg==6)
- Z80_Dis_Set("bit",Z80_Dis_Printf("%d,%s",bit,IX_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("bit",Z80_Dis_Printf("%d,%s[%s]",bit,IX_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_RES_IX (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
- int bit;
-
- reg=(op%8);
- bit=(op-0x80)/8;
-
- if (reg==6)
- Z80_Dis_Set("res",Z80_Dis_Printf("%d,%s",bit,IX_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("res",Z80_Dis_Printf("%d,%s[%s]",bit,IX_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_SET_IX (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
- int bit;
-
- reg=(op%8);
- bit=(op-0xc0)/8;
-
- if (reg==6)
- Z80_Dis_Set("set",Z80_Dis_Printf("%d,%s",bit,IX_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("set",Z80_Dis_Printf("%d,%s[%s]",bit,IX_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-
-/* ---------------------------------------- ED OPCODES
-*/
-
-static const char *ER8(int reg)
-{
- switch(reg)
- {
- case 0:
- return("b");
- break;
- case 1:
- return("c");
- break;
- case 2:
- return("d");
- break;
- case 3:
- return("e");
- break;
- case 4:
- return("h");
- break;
- case 5:
- return("l");
- break;
- case 6:
- return("0");
- break;
- case 7:
- return("a");
- break;
- }
-
- return "?";
-}
-
-/* Assumes illegal ED ops are being used for break points
-*/
-static void DIS_ED_NOP(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("brk",Z80_Dis_Printf("$%.2x",op));
-}
-
-static void DIS_IN_R8_C(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("in",Z80_Dis_Printf("%s,(c)",ER8((op-0x40)/8)));
-}
-
-static void DIS_OUT_C_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("out",Z80_Dis_Printf("(c),%s",ER8((op-0x40)/8)));
-}
-
-static void DIS_SBC_HL_R16(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("sbc",Z80_Dis_Printf("hl,%s",z80_dis_reg16[(op-0x40)/16]));
-}
-
-static void DIS_ED_LD_ADDR_R16(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80Word w;
- const char *p;
-
- w=Z80_Dis_FetchWord(z80,pc);
-
- if ((p=GetLabel(w)))
- Z80_Dis_Set("ld",Z80_Dis_Printf("(%s),%s",p,z80_dis_reg16[(op-0x40)/16]));
- else
- Z80_Dis_Set("ld",Z80_Dis_Printf("($%.4x),%s",w,z80_dis_reg16[(op-0x40)/16]));
-}
-
-static void DIS_NEG(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("neg",NULL);
-}
-
-static void DIS_RETN(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("retn",NULL);
-}
-
-static void DIS_IM_0(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("im","0");
-}
-
-static void DIS_LD_I_A(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ld","i,a");
-}
-
-static void DIS_ADC_HL_R16(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("adc",Z80_Dis_Printf("hl,%s",z80_dis_reg16[(op-0x40)/16]));
-}
-
-static void DIS_ED_LD_R16_ADDR(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80Word w;
- const char *p;
-
- w=Z80_Dis_FetchWord(z80,pc);
-
- if ((p=GetLabel(w)))
- Z80_Dis_Set("ld",Z80_Dis_Printf("%s,(%s)",z80_dis_reg16[(op-0x40)/16],p));
- else
- Z80_Dis_Set("ld",Z80_Dis_Printf("%s,($%.4x)",z80_dis_reg16[(op-0x40)/16],w));
-}
-
-static void DIS_RETI(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("reti",NULL);
-}
-
-static void DIS_LD_R_A(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ld","r,a");
-}
-
-static void DIS_IM_1(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("im","1");
-}
-
-static void DIS_LD_A_I(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ld","a,i");
-}
-
-static void DIS_IM_2(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("im","2");
-}
-
-static void DIS_LD_A_R(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ld","a,r");
-}
-
-static void DIS_RRD(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("rrd",NULL);
-}
-
-static void DIS_RLD(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("rld",NULL);
-}
-
-static void DIS_LDI(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ldi",NULL);
-}
-
-static void DIS_CPI(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("cpi",NULL);
-}
-
-static void DIS_INI(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ini",NULL);
-}
-
-static void DIS_OUTI(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("outi",NULL);
-}
-
-static void DIS_LDD(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ldd",NULL);
-}
-
-static void DIS_CPD(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("cpd",NULL);
-}
-
-static void DIS_IND(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ind",NULL);
-}
-
-static void DIS_OUTD(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("outd",NULL);
-}
-
-static void DIS_LDIR(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ldir",NULL);
-}
-
-static void DIS_CPIR(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("cpir",NULL);
-}
-
-static void DIS_INIR(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("inir",NULL);
-}
-
-static void DIS_OTIR(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("otir",NULL);
-}
-
-static void DIS_LDDR(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("lddr",NULL);
-}
-
-static void DIS_CPDR(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("cpdr",NULL);
-}
-
-static void DIS_INDR(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("indr",NULL);
-}
-
-static void DIS_OTDR(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("otdr",NULL);
-}
-
-
-/* ---------------------------------------- FD OPCODES
-*/
-
-static const char *IY_RelStr(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- static char s[80];
- Z80Relative r;
-
- r=(Z80Relative)Z80_Dis_FetchByte(z80,pc);
-
- if (r<0)
- sprintf(s,"(iy-$%.2x)",-r);
- else
- sprintf(s,"(iy+$%.2x)",r);
-
- return(s);
-}
-
-
-static const char *IY_RelStrCB(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- static char s[80];
- Z80Relative r;
-
- r=(Z80Relative)cb_off;
-
- if (r<0)
- sprintf(s,"(iy-$%.2x)",-r);
- else
- sprintf(s,"(iy+$%.2x)",r);
-
- return(s);
-}
-
-
-static const char *YR8(Z80 *z80, int reg, Z80Word *pc)
-{
- switch(reg)
- {
- case 0:
- return("b");
- break;
- case 1:
- return("c");
- break;
- case 2:
- return("d");
- break;
- case 3:
- return("e");
- break;
- case 4:
- return("iyh");
- break;
- case 5:
- return("iyl");
- break;
- case 6:
- return(IY_RelStr(z80,0,pc));
- break;
- case 7:
- return("a");
- break;
- default:
- return(Z80_Dis_Printf("BUG %d",reg));
- break;
- }
-}
-
-static void DIS_FD_NOP(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- dis_opcode_z80[op](z80,op,pc);
-}
-
-static void DIS_ADD_IY_BC(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("add","iy,bc");
-}
-
-static void DIS_ADD_IY_DE(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("add","iy,de");
-}
-
-static void DIS_LD_IY_WORD(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ld",Z80_Dis_Printf("iy,$%.4x",Z80_Dis_FetchWord(z80,pc)));
-}
-
-static void DIS_LD_ADDR_IY(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80Word w;
- const char *p;
-
- w=Z80_Dis_FetchWord(z80,pc);
-
- if ((p=GetLabel(w)))
- Z80_Dis_Set("ld",Z80_Dis_Printf("(%s),iy",p));
- else
- Z80_Dis_Set("ld",Z80_Dis_Printf("($%.4x),iy",w));
-}
-
-static void DIS_INC_IY(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("inc","iy");
-}
-
-static void DIS_INC_IYH(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("inc","iyh");
-}
-
-static void DIS_DEC_IYH(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("dec","iyh");
-}
-
-static void DIS_LD_IYH_BYTE(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ld",Z80_Dis_Printf("iyh,$%.2x",Z80_Dis_FetchByte(z80,pc)));
-}
-
-static void DIS_ADD_IY_IY(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("add","iy,iy");
-}
-
-static void DIS_LD_IY_ADDR(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80Word w;
- const char *p;
-
- w=Z80_Dis_FetchWord(z80,pc);
-
- if ((p=GetLabel(w)))
- Z80_Dis_Set("ld",Z80_Dis_Printf("iy,(%s)",p));
- else
- Z80_Dis_Set("ld",Z80_Dis_Printf("iy,($%.4x)",w));
-}
-
-static void DIS_DEC_IY(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("dec","iy");
-}
-
-static void DIS_INC_IYL(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("inc","iyl");
-}
-
-static void DIS_DEC_IYL(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("dec","iyl");
-}
-
-static void DIS_LD_IYL_BYTE(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ld",Z80_Dis_Printf("iyl,$%.2x",Z80_Dis_FetchByte(z80,pc)));
-}
-
-static void DIS_INC_IIY(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("inc",Z80_Dis_Printf("%s",IY_RelStr(z80,op,pc)));
-}
-
-static void DIS_DEC_IIY(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("dec",Z80_Dis_Printf("%s",IY_RelStr(z80,op,pc)));
-}
-
-static void DIS_LD_IIY_BYTE(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *rel;
- int b;
-
- rel=IY_RelStr(z80,op,pc);
- b=Z80_Dis_FetchByte(z80,pc);
- Z80_Dis_Set("ld",Z80_Dis_Printf("%s,$%.2x",rel,b));
-}
-
-
-static void DIS_ADD_IY_SP(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("add","iy,sp");
-}
-
-static void DIS_YLD_R8_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int src_r,dest_r;
- const char *src,*dest;
-
- dest_r=(op-0x40)/8;
- src_r=op%8;
-
- /* IY can't be used as source and destination when reading z80ory
- */
- if (dest_r==6)
- {
- dest=YR8(z80,dest_r,pc);
- src=z80_dis_reg8[src_r];
- }
- else if (((dest_r==4)||(dest_r==5))&&(src_r==6))
- {
- dest=z80_dis_reg8[dest_r];
- src=YR8(z80,src_r,pc);
- }
- else
- {
- dest=YR8(z80,dest_r,pc);
- src=YR8(z80,src_r,pc);
- }
-
- Z80_Dis_Set("ld",Z80_Dis_Printf("%s,%s",dest,src));
-}
-
-static void DIS_YADD_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("add",Z80_Dis_Printf("a,%s",YR8(z80,(op%8),pc)));
-}
-
-static void DIS_YADC_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("adc",Z80_Dis_Printf("a,%s",YR8(z80,(op%8),pc)));
-}
-
-static void DIS_YSUB_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("sub",Z80_Dis_Printf("a,%s",YR8(z80,(op%8),pc)));
-}
-
-static void DIS_YSBC_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("sbc",Z80_Dis_Printf("a,%s",YR8(z80,(op%8),pc)));
-}
-
-static void DIS_YAND_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("and",Z80_Dis_Printf("%s",YR8(z80,(op%8),pc)));
-}
-
-static void DIS_YYOR_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("xor",Z80_Dis_Printf("%s",YR8(z80,(op%8),pc)));
-}
-
-static void DIS_Y_OR_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("or",Z80_Dis_Printf("%s",YR8(z80,(op%8),pc)));
-}
-
-static void DIS_YCP_R8(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("cp",Z80_Dis_Printf("%s",YR8(z80,(op%8),pc)));
-}
-
-static void DIS_POP_IY(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("pop","iy");
-}
-
-static void DIS_EY_ISP_IY(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ex","(sp),iy");
-}
-
-static void DIS_PUSH_IY(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("push","iy");
-}
-
-static void DIS_JP_IY(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("jp","(iy)");
-}
-
-static void DIS_LD_SP_IY(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ld","sp,iy");
-}
-
-static void DIS_FD_CB_DECODE(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int nop;
-
- cb_off=(Z80Relative)Z80_Dis_FetchByte(z80,pc);
- nop=Z80_Dis_FetchByte(z80,pc);
- dis_FD_CB_opcode[nop](z80,nop,pc);
-}
-
-static void DIS_FD_DD_DECODE(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int nop;
-
- nop=Z80_Dis_FetchByte(z80,pc);
- dis_DD_opcode[nop](z80,nop,pc);
-}
-
-static void DIS_FD_ED_DECODE(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int nop;
-
- nop=Z80_Dis_FetchByte(z80,pc);
- dis_ED_opcode[nop](z80,nop,pc);
-}
-
-static void DIS_FD_FD_DECODE(Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int nop;
-
- nop=Z80_Dis_FetchByte(z80,pc);
- dis_FD_opcode[nop](z80,nop,pc);
-}
-
-
-/* ---------------------------------------- FD CB OPCODES
-*/
-
-static void DIS_RLC_IY (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
-
- reg=(op%8);
-
- if (reg==6)
- Z80_Dis_Set("rlc",Z80_Dis_Printf("%s",IY_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("rlc",Z80_Dis_Printf("%s[%s]",IY_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_RRC_IY (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
-
- reg=(op%8);
-
- if (reg==6)
- Z80_Dis_Set("rrc",Z80_Dis_Printf("%s",IY_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("rrc",Z80_Dis_Printf("%s[%s]",IY_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_RL_IY (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
-
- reg=(op%8);
-
- if (reg==6)
- Z80_Dis_Set("rl",Z80_Dis_Printf("%s",IY_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("rl",Z80_Dis_Printf("%s[%s]",IY_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_RR_IY (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
-
- reg=(op%8);
-
- if (reg==6)
- Z80_Dis_Set("rr",Z80_Dis_Printf("%s",IY_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("rr",Z80_Dis_Printf("%s[%s]",IY_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_SLA_IY (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
-
- reg=(op%8);
-
- if (reg==6)
- Z80_Dis_Set("sla",Z80_Dis_Printf("%s",IY_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("sla",Z80_Dis_Printf("%s[%s]",IY_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_SRA_IY (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
-
- reg=(op%8);
-
- if (reg==6)
- Z80_Dis_Set("sra",Z80_Dis_Printf("%s",IY_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("sra",Z80_Dis_Printf("%s[%s]",IY_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_SRL_IY (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
-
- reg=(op%8);
-
- if (reg==6)
- Z80_Dis_Set("srl",Z80_Dis_Printf("%s",IY_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("srl",Z80_Dis_Printf("%s[%s]",IY_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_SLL_IY (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
-
- reg=(op%8);
-
- if (reg==6)
- Z80_Dis_Set("sll",Z80_Dis_Printf("%s",IY_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("sll",Z80_Dis_Printf("%s[%s]",IY_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_BIT_IY (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
- int bit;
-
- reg=(op%8);
- bit=(op-0x40)/8;
-
- if (reg==6)
- Z80_Dis_Set("bit",Z80_Dis_Printf("%d,%s",bit,IY_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("bit",Z80_Dis_Printf("%d,%s[%s]",bit,IY_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_RES_IY (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
- int bit;
-
- reg=(op%8);
- bit=(op-0x80)/8;
-
- if (reg==6)
- Z80_Dis_Set("res",Z80_Dis_Printf("%d,%s",bit,IY_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("res",Z80_Dis_Printf("%d,%s[%s]",bit,IY_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-static void DIS_SET_IY (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int reg;
- int bit;
-
- reg=(op%8);
- bit=(op-0xc0)/8;
-
- if (reg==6)
- Z80_Dis_Set("set",Z80_Dis_Printf("%d,%s",bit,IY_RelStrCB(z80,op,pc)));
- else
- Z80_Dis_Set("set",Z80_Dis_Printf("%d,%s[%s]",bit,IY_RelStrCB(z80,op,pc),z80_dis_reg8[reg]));
-}
-
-
-/* ---------------------------------------- SINGLE BYTE OPCODES
-*/
-static void DIS_NOP (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("nop",NULL);
-}
-
-static void DIS_LD_R16_WORD (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg16[(op&0x30)/0x10];
- Z80_Dis_Set("ld",Z80_Dis_Printf("%s,$%.4x",reg,Z80_Dis_FetchWord(z80,pc)));
-}
-
-static void DIS_LD_R16_A (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg16[(op&0x30)/0x10];
- Z80_Dis_Set("ld",Z80_Dis_Printf("(%s),a",reg));
-}
-
-static void DIS_INC_R16 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg16[(op&0x30)/0x10];
- Z80_Dis_Set("inc",reg);
-}
-
-static void DIS_INC_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[(op&0x38)/0x8];
- Z80_Dis_Set("inc",reg);
-}
-
-static void DIS_DEC_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[(op&0x38)/0x8];
- Z80_Dis_Set("dec",reg);
-}
-
-static void DIS_LD_R8_BYTE (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[(op&0x38)/0x8];
- Z80_Dis_Set("ld",Z80_Dis_Printf("%s,$%.2x",reg,Z80_Dis_FetchByte(z80,pc)));
-}
-
-static void DIS_RLCA (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("rlca",NULL);
-}
-
-static void DIS_EX_AF_AF (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ex","af,af'");
-}
-
-static void DIS_ADD_HL_R16 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg16[(op&0x30)/0x10];
- Z80_Dis_Set("add",Z80_Dis_Printf("hl,%s",reg));
-}
-
-static void DIS_LD_A_R16 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg16[(op&0x30)/0x10];
- Z80_Dis_Set("ld",Z80_Dis_Printf("a,(%s)",reg));
-}
-
-static void DIS_DEC_R16 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg16[(op&0x30)/0x10];
- Z80_Dis_Set("dec",reg);
-}
-
-static void DIS_RRCA (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("rrca",NULL);
-}
-
-static void DIS_DJNZ (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80Word new;
-
-#ifdef ENABLE_ARRAY_MEMORY
- new=*pc+(Z80Relative)Z80_MEMORY[*pc]+1;
-#else
- new=*pc+(Z80Relative)z80->priv->disread(z80,*pc)+1;
-#endif
- (*pc)++;
- Z80_Dis_Set("djnz",Z80_Dis_Printf("$%.4x",new));
-}
-
-static void DIS_RLA (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("rla",NULL);
-}
-
-static void DIS_JR (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80Word new;
- const char *p;
-
-#ifdef ENABLE_ARRAY_MEMORY
- new=*pc+(Z80Relative)Z80_MEMORY[*pc]+1;
-#else
- new=*pc+(Z80Relative)z80->priv->disread(z80,*pc)+1;
-#endif
- (*pc)++;
-
- if ((p=GetLabel(new)))
- Z80_Dis_Set("jr",Z80_Dis_Printf("%s",p));
- else
- Z80_Dis_Set("jr",Z80_Dis_Printf("$%.4x",new));
-}
-
-static void DIS_RRA (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("rra",NULL);
-}
-
-static void DIS_JR_CO (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *con;
- Z80Word new;
- const char *p;
-
- con=z80_dis_condition[(op-0x20)/8];
-#ifdef ENABLE_ARRAY_MEMORY
- new=*pc+(Z80Relative)Z80_MEMORY[*pc]+1;
-#else
- new=*pc+(Z80Relative)z80->priv->disread(z80,*pc)+1;
-#endif
- (*pc)++;
-
- if ((p=GetLabel(new)))
- Z80_Dis_Set("jr",Z80_Dis_Printf("%s,%s",con,p));
- else
- Z80_Dis_Set("jr",Z80_Dis_Printf("%s,$%.4x",con,new));
-}
-
-static void DIS_LD_ADDR_HL (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80Word w;
- const char *p;
-
- w=Z80_Dis_FetchWord(z80,pc);
-
- if ((p=GetLabel(w)))
- Z80_Dis_Set("ld",Z80_Dis_Printf("(%s),hl",p));
- else
- Z80_Dis_Set("ld",Z80_Dis_Printf("($%.4x),hl",w));
-}
-
-static void DIS_DAA (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("daa",NULL);
-}
-
-static void DIS_LD_HL_ADDR (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80Word w;
- const char *p;
-
- w=Z80_Dis_FetchWord(z80,pc);
-
- if ((p=GetLabel(w)))
- Z80_Dis_Set("ld",Z80_Dis_Printf("hl,(%s)",p));
- else
- Z80_Dis_Set("ld",Z80_Dis_Printf("hl,($%.4x)",w));
-}
-
-static void DIS_CPL (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("cpl",NULL);
-}
-
-static void DIS_LD_ADDR_A (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80Word w;
- const char *p;
-
- w=Z80_Dis_FetchWord(z80,pc);
-
- if ((p=GetLabel(w)))
- Z80_Dis_Set("ld",Z80_Dis_Printf("(%s),a",p));
- else
- Z80_Dis_Set("ld",Z80_Dis_Printf("($%.4x),a",w));
-}
-
-static void DIS_SCF (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("scf",NULL);
-}
-
-static void DIS_LD_A_ADDR (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80Word w;
- const char *p;
-
- w=Z80_Dis_FetchWord(z80,pc);
-
- if ((p=GetLabel(w)))
- Z80_Dis_Set("ld",Z80_Dis_Printf("a,(%s)",p));
- else
- Z80_Dis_Set("ld",Z80_Dis_Printf("a,($%.4x)",w));
-}
-
-static void DIS_CCF (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ccf",NULL);
-}
-
-static void DIS_LD_R8_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *src,*dest;
-
- dest=z80_dis_reg8[(op-0x40)/8];
- src=z80_dis_reg8[op%8];
- Z80_Dis_Set("ld",Z80_Dis_Printf("%s,%s",dest,src));
-}
-
-static void DIS_HALT (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("halt",NULL);
-}
-
-static void DIS_ADD_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[op%8];
- Z80_Dis_Set("add",Z80_Dis_Printf("a,%s",reg));
-}
-
-static void DIS_ADC_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[op%8];
- Z80_Dis_Set("adc",Z80_Dis_Printf("a,%s",reg));
-}
-
-static void DIS_SUB_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[op%8];
- Z80_Dis_Set("sub",Z80_Dis_Printf("a,%s",reg));
-}
-
-static void DIS_SBC_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[op%8];
- Z80_Dis_Set("sbc",Z80_Dis_Printf("a,%s",reg));
-}
-
-static void DIS_AND_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[op%8];
- Z80_Dis_Set("and",Z80_Dis_Printf("%s",reg));
-}
-
-static void DIS_XOR_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[op%8];
- Z80_Dis_Set("xor",Z80_Dis_Printf("%s",reg));
-}
-
-static void DIS_OR_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[op%8];
- Z80_Dis_Set("or",Z80_Dis_Printf("%s",reg));
-}
-
-static void DIS_CP_R8 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg8[op%8];
- Z80_Dis_Set("cp",Z80_Dis_Printf("%s",reg));
-}
-
-
-static void DIS_RET_CO (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *con;
-
- con=z80_dis_condition[(op-0xc0)/8];
- Z80_Dis_Set("ret",con);
-}
-
-static void DIS_POP_R16 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg16[(op-0xc0)/16];
-
- if (!strcmp(reg,"sp"))
- reg="af";
-
- Z80_Dis_Set("pop",reg);
-}
-
-static void DIS_JP (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80Word w;
- const char *p;
-
- w=Z80_Dis_FetchWord(z80,pc);
-
- if ((p=GetLabel(w)))
- Z80_Dis_Set("jp",Z80_Dis_Printf("%s",p));
- else
- Z80_Dis_Set("jp",Z80_Dis_Printf("$%.4x",w));
-}
-
-static void DIS_PUSH_R16 (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *reg;
-
- reg=z80_dis_reg16[(op-0xc0)/16];
-
- if (!strcmp(reg,"sp"))
- reg="af";
-
- Z80_Dis_Set("push",reg);
-}
-
-static void DIS_ADD_A_BYTE (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("add",Z80_Dis_Printf("a,$%.2x",Z80_Dis_FetchByte(z80,pc)));
-}
-
-static void DIS_RST (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int add;
-
- add=(op&0x3f)-7;
- Z80_Dis_Set("rst",Z80_Dis_Printf("%.2xh",add));
-}
-
-static void DIS_RET (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ret",NULL);
-}
-
-static void DIS_JP_CO (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *con;
- Z80Word w;
- const char *p;
-
- w=Z80_Dis_FetchWord(z80,pc);
- con=z80_dis_condition[(op-0xc0)/8];
-
- if ((p=GetLabel(w)))
- Z80_Dis_Set("jp",Z80_Dis_Printf("%s,%s",con,p));
- else
- Z80_Dis_Set("jp",Z80_Dis_Printf("%s,$%.4x",con,w));
-}
-
-static void DIS_CB_DECODE (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int nop;
-
- nop=Z80_Dis_FetchByte(z80,pc);
- dis_CB_opcode[nop](z80,nop,pc);
-}
-
-static void DIS_CALL_CO (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- const char *con;
- Z80Word w;
- const char *p;
-
- w=Z80_Dis_FetchWord(z80,pc);
- con=z80_dis_condition[(op-0xc0)/8];
-
- if ((p=GetLabel(w)))
- Z80_Dis_Set("call",Z80_Dis_Printf("%s,%s",con,p));
- else
- Z80_Dis_Set("call",Z80_Dis_Printf("%s,$%.4x",con,w));
-}
-
-static void DIS_CALL (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80Word w;
- const char *p;
-
- w=Z80_Dis_FetchWord(z80,pc);
-
- if ((p=GetLabel(w)))
- Z80_Dis_Set("call",Z80_Dis_Printf("%s",p));
- else
- Z80_Dis_Set("call",Z80_Dis_Printf("$%.4x",w));
-}
-
-static void DIS_ADC_A_BYTE (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("adc",Z80_Dis_Printf("a,$%.2x",Z80_Dis_FetchByte(z80,pc)));
-}
-
-static void DIS_OUT_BYTE_A (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("out",Z80_Dis_Printf("($%.2x),a",Z80_Dis_FetchByte(z80,pc)));
-}
-
-static void DIS_SUB_A_BYTE (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("sub",Z80_Dis_Printf("a,$%.2x",Z80_Dis_FetchByte(z80,pc)));
-}
-
-static void DIS_EXX (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("exx",NULL);
-}
-
-static void DIS_IN_A_BYTE (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("in",Z80_Dis_Printf("a,($%.2x)",Z80_Dis_FetchByte(z80,pc)));
-}
-
-static void DIS_DD_DECODE (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int nop;
-
- nop=Z80_Dis_FetchByte(z80,pc);
- dis_DD_opcode[nop](z80,nop,pc);
-}
-
-static void DIS_SBC_A_BYTE (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("sbc",Z80_Dis_Printf("a,$%.2x",Z80_Dis_FetchByte(z80,pc)));
-}
-
-
-static void DIS_EX_ISP_HL (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ex","(sp),hl");
-}
-
-static void DIS_AND_A_BYTE (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("and",Z80_Dis_Printf("$%.2x",Z80_Dis_FetchByte(z80,pc)));
-}
-
-static void DIS_JP_HL (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("jp","(hl)");
-}
-
-static void DIS_EX_DE_HL (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ex","de,hl");
-}
-
-static void DIS_ED_DECODE (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int nop;
-
- nop=Z80_Dis_FetchByte(z80,pc);
- dis_ED_opcode[nop](z80,nop,pc);
-}
-
-static void DIS_XOR_A_BYTE (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("xor",Z80_Dis_Printf("$%.2x",Z80_Dis_FetchByte(z80,pc)));
-}
-
-static void DIS_DI (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("di",NULL);
-}
-
-static void DIS_OR_A_BYTE (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("or",Z80_Dis_Printf("$%.2x",Z80_Dis_FetchByte(z80,pc)));
-}
-
-static void DIS_LD_SP_HL (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ld","sp,hl");
-}
-
-static void DIS_EI (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("ei",NULL);
-}
-
-static void DIS_FD_DECODE (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- int nop;
-
- nop=Z80_Dis_FetchByte(z80,pc);
- dis_FD_opcode[nop](z80,nop,pc);
-}
-
-static void DIS_CP_A_BYTE (Z80 *z80, Z80Byte op, Z80Word *pc)
-{
- Z80_Dis_Set("cp",Z80_Dis_Printf("$%.2x",Z80_Dis_FetchByte(z80,pc)));
-}
-
-
-/* ---------------------------------------- TABLES
-*/
-
-/* CB opcodes
-*/
-DIS_OP_CALLBACK dis_CB_opcode[0x100]=
- {
-/* 0x00 - 0x03 */ DIS_RLC_R8, DIS_RLC_R8, DIS_RLC_R8, DIS_RLC_R8,
-/* 0x04 - 0x07 */ DIS_RLC_R8, DIS_RLC_R8, DIS_RLC_R8, DIS_RLC_R8,
-/* 0x08 - 0x0b */ DIS_RRC_R8, DIS_RRC_R8, DIS_RRC_R8, DIS_RRC_R8,
-/* 0x0c - 0x0f */ DIS_RRC_R8, DIS_RRC_R8, DIS_RRC_R8, DIS_RRC_R8,
-
-/* 0x10 - 0x13 */ DIS_RL_R8, DIS_RL_R8, DIS_RL_R8, DIS_RL_R8,
-/* 0x14 - 0x17 */ DIS_RL_R8, DIS_RL_R8, DIS_RL_R8, DIS_RL_R8,
-/* 0x18 - 0x1b */ DIS_RR_R8, DIS_RR_R8, DIS_RR_R8, DIS_RR_R8,
-/* 0x1c - 0x1f */ DIS_RR_R8, DIS_RR_R8, DIS_RR_R8, DIS_RR_R8,
-
-/* 0x20 - 0x23 */ DIS_SLA_R8, DIS_SLA_R8, DIS_SLA_R8, DIS_SLA_R8,
-/* 0x24 - 0x27 */ DIS_SLA_R8, DIS_SLA_R8, DIS_SLA_R8, DIS_SLA_R8,
-/* 0x28 - 0x2b */ DIS_SRA_R8, DIS_SRA_R8, DIS_SRA_R8, DIS_SRA_R8,
-/* 0x2c - 0x2f */ DIS_SRA_R8, DIS_SRA_R8, DIS_SRA_R8, DIS_SRA_R8,
-
-/* 0x30 - 0x33 */ DIS_SLL_R8, DIS_SLL_R8, DIS_SLL_R8, DIS_SLL_R8,
-/* 0x34 - 0x37 */ DIS_SLL_R8, DIS_SLL_R8, DIS_SLL_R8, DIS_SLL_R8,
-/* 0x38 - 0x3b */ DIS_SRL_R8, DIS_SRL_R8, DIS_SRL_R8, DIS_SRL_R8,
-/* 0x3c - 0x3f */ DIS_SRL_R8, DIS_SRL_R8, DIS_SRL_R8, DIS_SRL_R8,
-
-/* 0x40 - 0x43 */ DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8,
-/* 0x44 - 0x47 */ DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8,
-/* 0x48 - 0x4b */ DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8,
-/* 0x4c - 0x4f */ DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8,
-
-/* 0x50 - 0x53 */ DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8,
-/* 0x54 - 0x57 */ DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8,
-/* 0x58 - 0x5b */ DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8,
-/* 0x5c - 0x5f */ DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8,
-
-/* 0x60 - 0x63 */ DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8,
-/* 0x64 - 0x67 */ DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8,
-/* 0x68 - 0x6b */ DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8,
-/* 0x6c - 0x6f */ DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8,
-
-/* 0x70 - 0x73 */ DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8,
-/* 0x74 - 0x77 */ DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8,
-/* 0x78 - 0x7b */ DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8,
-/* 0x7c - 0x7f */ DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8, DIS_BIT_R8,
-
-/* 0x80 - 0x83 */ DIS_RES_R8, DIS_RES_R8, DIS_RES_R8, DIS_RES_R8,
-/* 0x84 - 0x87 */ DIS_RES_R8, DIS_RES_R8, DIS_RES_R8, DIS_RES_R8,
-/* 0x88 - 0x8b */ DIS_RES_R8, DIS_RES_R8, DIS_RES_R8, DIS_RES_R8,
-/* 0x8c - 0x8f */ DIS_RES_R8, DIS_RES_R8, DIS_RES_R8, DIS_RES_R8,
-
-/* 0x90 - 0x93 */ DIS_RES_R8, DIS_RES_R8, DIS_RES_R8, DIS_RES_R8,
-/* 0x94 - 0x97 */ DIS_RES_R8, DIS_RES_R8, DIS_RES_R8, DIS_RES_R8,
-/* 0x98 - 0x9b */ DIS_RES_R8, DIS_RES_R8, DIS_RES_R8, DIS_RES_R8,
-/* 0x9c - 0x9f */ DIS_RES_R8, DIS_RES_R8, DIS_RES_R8, DIS_RES_R8,
-
-/* 0xa0 - 0xa3 */ DIS_RES_R8, DIS_RES_R8, DIS_RES_R8, DIS_RES_R8,
-/* 0xa4 - 0xa7 */ DIS_RES_R8, DIS_RES_R8, DIS_RES_R8, DIS_RES_R8,
-/* 0xa8 - 0xab */ DIS_RES_R8, DIS_RES_R8, DIS_RES_R8, DIS_RES_R8,
-/* 0xac - 0xaf */ DIS_RES_R8, DIS_RES_R8, DIS_RES_R8, DIS_RES_R8,
-
-/* 0xb0 - 0xb3 */ DIS_RES_R8, DIS_RES_R8, DIS_RES_R8, DIS_RES_R8,
-/* 0xb4 - 0xb7 */ DIS_RES_R8, DIS_RES_R8, DIS_RES_R8, DIS_RES_R8,
-/* 0xb8 - 0xbb */ DIS_RES_R8, DIS_RES_R8, DIS_RES_R8, DIS_RES_R8,
-/* 0xbc - 0xbf */ DIS_RES_R8, DIS_RES_R8, DIS_RES_R8, DIS_RES_R8,
-
-/* 0xc0 - 0xc3 */ DIS_SET_R8, DIS_SET_R8, DIS_SET_R8, DIS_SET_R8,
-/* 0xc4 - 0xc7 */ DIS_SET_R8, DIS_SET_R8, DIS_SET_R8, DIS_SET_R8,
-/* 0xc8 - 0xcb */ DIS_SET_R8, DIS_SET_R8, DIS_SET_R8, DIS_SET_R8,
-/* 0xcc - 0xcf */ DIS_SET_R8, DIS_SET_R8, DIS_SET_R8, DIS_SET_R8,
-
-/* 0xd0 - 0xd3 */ DIS_SET_R8, DIS_SET_R8, DIS_SET_R8, DIS_SET_R8,
-/* 0xd4 - 0xd7 */ DIS_SET_R8, DIS_SET_R8, DIS_SET_R8, DIS_SET_R8,
-/* 0xd8 - 0xdb */ DIS_SET_R8, DIS_SET_R8, DIS_SET_R8, DIS_SET_R8,
-/* 0xdc - 0xdf */ DIS_SET_R8, DIS_SET_R8, DIS_SET_R8, DIS_SET_R8,
-
-/* 0xe0 - 0xe3 */ DIS_SET_R8, DIS_SET_R8, DIS_SET_R8, DIS_SET_R8,
-/* 0xe4 - 0xe7 */ DIS_SET_R8, DIS_SET_R8, DIS_SET_R8, DIS_SET_R8,
-/* 0xe8 - 0xeb */ DIS_SET_R8, DIS_SET_R8, DIS_SET_R8, DIS_SET_R8,
-/* 0xec - 0xef */ DIS_SET_R8, DIS_SET_R8, DIS_SET_R8, DIS_SET_R8,
-
-/* 0xf0 - 0xf3 */ DIS_SET_R8, DIS_SET_R8, DIS_SET_R8, DIS_SET_R8,
-/* 0xf4 - 0xf7 */ DIS_SET_R8, DIS_SET_R8, DIS_SET_R8, DIS_SET_R8,
-/* 0xf8 - 0xfb */ DIS_SET_R8, DIS_SET_R8, DIS_SET_R8, DIS_SET_R8,
-/* 0xfc - 0xff */ DIS_SET_R8, DIS_SET_R8, DIS_SET_R8, DIS_SET_R8,
- };
-
-/* DIS_DD opcodes
-*/
-DIS_OP_CALLBACK dis_DD_opcode[0x100]=
- {
-/* 0x00 - 0x03 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x04 - 0x07 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x08 - 0x0b */ DIS_DD_NOP, DIS_ADD_IX_BC, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x0c - 0x0f */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-
-/* 0x10 - 0x13 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x14 - 0x17 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x18 - 0x1b */ DIS_DD_NOP, DIS_ADD_IX_DE, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x1c - 0x1f */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-
-/* 0x20 - 0x23 */ DIS_DD_NOP, DIS_LD_IX_WORD, DIS_LD_ADDR_IX, DIS_INC_IX,
-/* 0x24 - 0x27 */ DIS_INC_IXH, DIS_DEC_IXH, DIS_LD_IXH_BYTE, DIS_DD_NOP,
-/* 0x28 - 0x2b */ DIS_DD_NOP, DIS_ADD_IX_IX, DIS_LD_IX_ADDR, DIS_DEC_IX,
-/* 0x2c - 0x2f */ DIS_INC_IXL, DIS_DEC_IXL, DIS_LD_IXL_BYTE, DIS_DD_NOP,
-
-/* 0x30 - 0x33 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x34 - 0x37 */ DIS_INC_IIX, DIS_DEC_IIX, DIS_LD_IIX_BYTE, DIS_DD_NOP,
-/* 0x38 - 0x3b */ DIS_DD_NOP, DIS_ADD_IX_SP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x3c - 0x3f */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-
-/* 0x40 - 0x43 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x44 - 0x47 */ DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_DD_NOP,
-/* 0x48 - 0x4b */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x4c - 0x4f */ DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_DD_NOP,
-
-/* 0x50 - 0x53 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x54 - 0x57 */ DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_DD_NOP,
-/* 0x58 - 0x5b */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x5c - 0x5f */ DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_DD_NOP,
-
-/* 0x60 - 0x63 */ DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_XLD_R8_R8,
-/* 0x64 - 0x67 */ DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_XLD_R8_R8,
-/* 0x68 - 0x6b */ DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_XLD_R8_R8,
-/* 0x6c - 0x6f */ DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_XLD_R8_R8,
-
-/* 0x70 - 0x73 */ DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_XLD_R8_R8,
-/* 0x74 - 0x77 */ DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_DD_NOP, DIS_XLD_R8_R8,
-/* 0x78 - 0x7b */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x7c - 0x7f */ DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_XLD_R8_R8, DIS_DD_NOP,
-
-/* 0x80 - 0x83 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x84 - 0x87 */ DIS_XADD_R8, DIS_XADD_R8, DIS_XADD_R8, DIS_DD_NOP,
-/* 0x88 - 0x8b */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x8c - 0x8f */ DIS_XADC_R8, DIS_XADC_R8, DIS_XADC_R8, DIS_DD_NOP,
-
-/* 0x90 - 0x93 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x94 - 0x97 */ DIS_XSUB_R8, DIS_XSUB_R8, DIS_XSUB_R8, DIS_DD_NOP,
-/* 0x98 - 0x9b */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0x9c - 0x9f */ DIS_XSBC_R8, DIS_XSBC_R8, DIS_XSBC_R8, DIS_DD_NOP,
-
-/* 0xa0 - 0xa3 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0xa4 - 0xa7 */ DIS_XAND_R8, DIS_XAND_R8, DIS_XAND_R8, DIS_DD_NOP,
-/* 0xa8 - 0xab */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0xac - 0xaf */ DIS_XXOR_R8, DIS_XXOR_R8, DIS_XXOR_R8, DIS_DD_NOP,
-
-/* 0xb0 - 0xb3 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0xb4 - 0xb7 */ DIS_X_OR_R8, DIS_X_OR_R8, DIS_X_OR_R8, DIS_DD_NOP,
-/* 0xb8 - 0xbb */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0xbc - 0xbf */ DIS_XCP_R8, DIS_XCP_R8, DIS_XCP_R8, DIS_DD_NOP,
-
-/* 0xc0 - 0xc3 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0xc4 - 0xc7 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0xc8 - 0xcb */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_CB_DECODE,
-/* 0xcc - 0xcf */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-
-/* 0xd0 - 0xd3 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0xd4 - 0xd7 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0xd8 - 0xdb */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0xdc - 0xdf */ DIS_DD_NOP, DIS_DD_DD_DECODE, DIS_DD_NOP, DIS_DD_NOP,
-
-/* 0xe0 - 0xe3 */ DIS_DD_NOP, DIS_POP_IX, DIS_DD_NOP, DIS_EX_ISP_IX,
-/* 0xe4 - 0xe7 */ DIS_DD_NOP, DIS_PUSH_IX, DIS_DD_NOP, DIS_DD_NOP,
-/* 0xe8 - 0xeb */ DIS_DD_NOP, DIS_JP_IX, DIS_DD_NOP, DIS_DD_NOP,
-/* 0xec - 0xef */ DIS_DD_NOP, DIS_DD_ED_DECODE, DIS_DD_NOP, DIS_DD_NOP,
-
-/* 0xf0 - 0xf3 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0xf4 - 0xf7 */ DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP, DIS_DD_NOP,
-/* 0xf8 - 0xfb */ DIS_DD_NOP, DIS_LD_SP_IX, DIS_DD_NOP, DIS_DD_NOP,
-/* 0xfc - 0xff */ DIS_DD_NOP, DIS_DD_FD_DECODE, DIS_DD_NOP, DIS_DD_NOP,
- };
-
-
-/* DIS_DD DIS_CB opcodes
-*/
-DIS_OP_CALLBACK dis_DD_CB_opcode[0x100]=
- {
-/* 0x00 - 0x03 */ DIS_RLC_IX, DIS_RLC_IX, DIS_RLC_IX, DIS_RLC_IX,
-/* 0x04 - 0x07 */ DIS_RLC_IX, DIS_RLC_IX, DIS_RLC_IX, DIS_RLC_IX,
-/* 0x08 - 0x0b */ DIS_RRC_IX, DIS_RRC_IX, DIS_RRC_IX, DIS_RRC_IX,
-/* 0x0c - 0x0f */ DIS_RRC_IX, DIS_RRC_IX, DIS_RRC_IX, DIS_RRC_IX,
-
-/* 0x10 - 0x13 */ DIS_RL_IX, DIS_RL_IX, DIS_RL_IX, DIS_RL_IX,
-/* 0x14 - 0x17 */ DIS_RL_IX, DIS_RL_IX, DIS_RL_IX, DIS_RL_IX,
-/* 0x18 - 0x1b */ DIS_RR_IX, DIS_RR_IX, DIS_RR_IX, DIS_RR_IX,
-/* 0x1c - 0x1f */ DIS_RR_IX, DIS_RR_IX, DIS_RR_IX, DIS_RR_IX,
-
-/* 0x20 - 0x23 */ DIS_SLA_IX, DIS_SLA_IX, DIS_SLA_IX, DIS_SLA_IX,
-/* 0x24 - 0x27 */ DIS_SLA_IX, DIS_SLA_IX, DIS_SLA_IX, DIS_SLA_IX,
-/* 0x28 - 0x2b */ DIS_SRA_IX, DIS_SRA_IX, DIS_SRA_IX, DIS_SRA_IX,
-/* 0x2c - 0x2f */ DIS_SRA_IX, DIS_SRA_IX, DIS_SRA_IX, DIS_SRA_IX,
-
-/* 0x30 - 0x33 */ DIS_SLL_IX, DIS_SLL_IX, DIS_SLL_IX, DIS_SLL_IX,
-/* 0x34 - 0x37 */ DIS_SLL_IX, DIS_SLL_IX, DIS_SLL_IX, DIS_SLL_IX,
-/* 0x38 - 0x3b */ DIS_SRL_IX, DIS_SRL_IX, DIS_SRL_IX, DIS_SRL_IX,
-/* 0x3c - 0x3f */ DIS_SRL_IX, DIS_SRL_IX, DIS_SRL_IX, DIS_SRL_IX,
-
-/* 0x40 - 0x43 */ DIS_BIT_IX,DIS_BIT_IX, DIS_BIT_IX, DIS_BIT_IX,
-/* 0x44 - 0x47 */ DIS_BIT_IX,DIS_BIT_IX, DIS_BIT_IX, DIS_BIT_IX,
-/* 0x48 - 0x4b */ DIS_BIT_IX,DIS_BIT_IX, DIS_BIT_IX, DIS_BIT_IX,
-/* 0x4c - 0x4f */ DIS_BIT_IX,DIS_BIT_IX, DIS_BIT_IX, DIS_BIT_IX,
-
-/* 0x50 - 0x53 */ DIS_BIT_IX,DIS_BIT_IX, DIS_BIT_IX, DIS_BIT_IX,
-/* 0x54 - 0x57 */ DIS_BIT_IX,DIS_BIT_IX, DIS_BIT_IX, DIS_BIT_IX,
-/* 0x58 - 0x5b */ DIS_BIT_IX,DIS_BIT_IX, DIS_BIT_IX, DIS_BIT_IX,
-/* 0x5c - 0x5f */ DIS_BIT_IX,DIS_BIT_IX, DIS_BIT_IX, DIS_BIT_IX,
-
-/* 0x60 - 0x63 */ DIS_BIT_IX,DIS_BIT_IX, DIS_BIT_IX, DIS_BIT_IX,
-/* 0x64 - 0x67 */ DIS_BIT_IX,DIS_BIT_IX, DIS_BIT_IX, DIS_BIT_IX,
-/* 0x68 - 0x6b */ DIS_BIT_IX,DIS_BIT_IX, DIS_BIT_IX, DIS_BIT_IX,
-/* 0x6c - 0x6f */ DIS_BIT_IX,DIS_BIT_IX, DIS_BIT_IX, DIS_BIT_IX,
-
-/* 0x70 - 0x73 */ DIS_BIT_IX,DIS_BIT_IX, DIS_BIT_IX, DIS_BIT_IX,
-/* 0x74 - 0x77 */ DIS_BIT_IX,DIS_BIT_IX, DIS_BIT_IX, DIS_BIT_IX,
-/* 0x78 - 0x7b */ DIS_BIT_IX,DIS_BIT_IX, DIS_BIT_IX, DIS_BIT_IX,
-/* 0x7c - 0x7f */ DIS_BIT_IX,DIS_BIT_IX, DIS_BIT_IX, DIS_BIT_IX,
-
-/* 0x80 - 0x83 */ DIS_RES_IX,DIS_RES_IX, DIS_RES_IX, DIS_RES_IX,
-/* 0x84 - 0x87 */ DIS_RES_IX,DIS_RES_IX, DIS_RES_IX, DIS_RES_IX,
-/* 0x88 - 0x8b */ DIS_RES_IX,DIS_RES_IX, DIS_RES_IX, DIS_RES_IX,
-/* 0x8c - 0x8f */ DIS_RES_IX,DIS_RES_IX, DIS_RES_IX, DIS_RES_IX,
-
-/* 0x90 - 0x93 */ DIS_RES_IX,DIS_RES_IX, DIS_RES_IX, DIS_RES_IX,
-/* 0x94 - 0x97 */ DIS_RES_IX,DIS_RES_IX, DIS_RES_IX, DIS_RES_IX,
-/* 0x98 - 0x9b */ DIS_RES_IX,DIS_RES_IX, DIS_RES_IX, DIS_RES_IX,
-/* 0x9c - 0x9f */ DIS_RES_IX,DIS_RES_IX, DIS_RES_IX, DIS_RES_IX,
-
-/* 0xa0 - 0xa3 */ DIS_RES_IX,DIS_RES_IX, DIS_RES_IX, DIS_RES_IX,
-/* 0xa4 - 0xa7 */ DIS_RES_IX,DIS_RES_IX, DIS_RES_IX, DIS_RES_IX,
-/* 0xa8 - 0xab */ DIS_RES_IX,DIS_RES_IX, DIS_RES_IX, DIS_RES_IX,
-/* 0xac - 0xaf */ DIS_RES_IX,DIS_RES_IX, DIS_RES_IX, DIS_RES_IX,
-
-/* 0xb0 - 0xb3 */ DIS_RES_IX,DIS_RES_IX, DIS_RES_IX, DIS_RES_IX,
-/* 0xb4 - 0xb7 */ DIS_RES_IX,DIS_RES_IX, DIS_RES_IX, DIS_RES_IX,
-/* 0xb8 - 0xbb */ DIS_RES_IX,DIS_RES_IX, DIS_RES_IX, DIS_RES_IX,
-/* 0xbc - 0xbf */ DIS_RES_IX,DIS_RES_IX, DIS_RES_IX, DIS_RES_IX,
-
-/* 0xc0 - 0xc3 */ DIS_SET_IX,DIS_SET_IX, DIS_SET_IX, DIS_SET_IX,
-/* 0xc4 - 0xc7 */ DIS_SET_IX,DIS_SET_IX, DIS_SET_IX, DIS_SET_IX,
-/* 0xc8 - 0xcb */ DIS_SET_IX,DIS_SET_IX, DIS_SET_IX, DIS_SET_IX,
-/* 0xcc - 0xcf */ DIS_SET_IX,DIS_SET_IX, DIS_SET_IX, DIS_SET_IX,
-
-/* 0xd0 - 0xd3 */ DIS_SET_IX,DIS_SET_IX, DIS_SET_IX, DIS_SET_IX,
-/* 0xd4 - 0xd7 */ DIS_SET_IX,DIS_SET_IX, DIS_SET_IX, DIS_SET_IX,
-/* 0xd8 - 0xdb */ DIS_SET_IX,DIS_SET_IX, DIS_SET_IX, DIS_SET_IX,
-/* 0xdc - 0xdf */ DIS_SET_IX,DIS_SET_IX, DIS_SET_IX, DIS_SET_IX,
-
-/* 0xe0 - 0xe3 */ DIS_SET_IX,DIS_SET_IX, DIS_SET_IX, DIS_SET_IX,
-/* 0xe4 - 0xe7 */ DIS_SET_IX,DIS_SET_IX, DIS_SET_IX, DIS_SET_IX,
-/* 0xe8 - 0xeb */ DIS_SET_IX,DIS_SET_IX, DIS_SET_IX, DIS_SET_IX,
-/* 0xec - 0xef */ DIS_SET_IX,DIS_SET_IX, DIS_SET_IX, DIS_SET_IX,
-
-/* 0xf0 - 0xf3 */ DIS_SET_IX,DIS_SET_IX, DIS_SET_IX, DIS_SET_IX,
-/* 0xf4 - 0xf7 */ DIS_SET_IX,DIS_SET_IX, DIS_SET_IX, DIS_SET_IX,
-/* 0xf8 - 0xfb */ DIS_SET_IX,DIS_SET_IX, DIS_SET_IX, DIS_SET_IX,
-/* 0xfc - 0xff */ DIS_SET_IX,DIS_SET_IX, DIS_SET_IX, DIS_SET_IX,
- };
-
-/* DIS_ED opcodes
-*/
-DIS_OP_CALLBACK dis_ED_opcode[0x100]=
- {
-/* 0x00 - 0x03 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x04 - 0x07 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x08 - 0x0b */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x0c - 0x0f */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-
-/* 0x10 - 0x13 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x14 - 0x17 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x18 - 0x1b */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x1c - 0x1f */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-
-/* 0x20 - 0x23 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x24 - 0x27 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x28 - 0x2b */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x2c - 0x2f */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-
-/* 0x30 - 0x33 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x34 - 0x37 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x38 - 0x3b */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x3c - 0x3f */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-
-/* 0x40 - 0x43 */ DIS_IN_R8_C, DIS_OUT_C_R8, DIS_SBC_HL_R16, DIS_ED_LD_ADDR_R16,
-/* 0x44 - 0x47 */ DIS_NEG, DIS_RETN, DIS_IM_0, DIS_LD_I_A,
-/* 0x48 - 0x4b */ DIS_IN_R8_C, DIS_OUT_C_R8, DIS_ADC_HL_R16, DIS_ED_LD_R16_ADDR,
-/* 0x4c - 0x4f */ DIS_NEG, DIS_RETI, DIS_IM_0, DIS_LD_R_A,
-
-/* 0x50 - 0x53 */ DIS_IN_R8_C, DIS_OUT_C_R8, DIS_SBC_HL_R16, DIS_ED_LD_ADDR_R16,
-/* 0x54 - 0x57 */ DIS_NEG, DIS_RETN, DIS_IM_1, DIS_LD_A_I,
-/* 0x58 - 0x5b */ DIS_IN_R8_C, DIS_OUT_C_R8, DIS_ADC_HL_R16, DIS_ED_LD_R16_ADDR,
-/* 0x5c - 0x5f */ DIS_NEG, DIS_RETI, DIS_IM_2, DIS_LD_A_R,
-
-/* 0x60 - 0x63 */ DIS_IN_R8_C, DIS_OUT_C_R8, DIS_SBC_HL_R16, DIS_ED_LD_ADDR_R16,
-/* 0x64 - 0x67 */ DIS_NEG, DIS_RETN, DIS_IM_0, DIS_RRD,
-/* 0x68 - 0x6b */ DIS_IN_R8_C, DIS_OUT_C_R8, DIS_ADC_HL_R16, DIS_ED_LD_R16_ADDR,
-/* 0x6c - 0x6f */ DIS_NEG, DIS_RETI, DIS_IM_0, DIS_RLD,
-
-/* 0x70 - 0x73 */ DIS_IN_R8_C, DIS_OUT_C_R8, DIS_SBC_HL_R16, DIS_ED_LD_ADDR_R16,
-/* 0x74 - 0x77 */ DIS_NEG, DIS_RETN, DIS_IM_1, DIS_ED_NOP,
-/* 0x78 - 0x7b */ DIS_IN_R8_C, DIS_OUT_C_R8, DIS_ADC_HL_R16, DIS_ED_LD_R16_ADDR,
-/* 0x7c - 0x7f */ DIS_NEG, DIS_RETI, DIS_IM_2, DIS_ED_NOP,
-
-/* 0x80 - 0x83 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x84 - 0x87 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x88 - 0x8b */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x8c - 0x8f */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-
-/* 0x90 - 0x93 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x94 - 0x97 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x98 - 0x9b */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0x9c - 0x9f */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-
-/* 0xa0 - 0xa3 */ DIS_LDI, DIS_CPI, DIS_INI, DIS_OUTI,
-/* 0xa4 - 0xa7 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0xa8 - 0xab */ DIS_LDD, DIS_CPD, DIS_IND, DIS_OUTD,
-/* 0xac - 0xaf */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-
-/* 0xb0 - 0xb3 */ DIS_LDIR, DIS_CPIR, DIS_INIR, DIS_OTIR,
-/* 0xb4 - 0xb7 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0xb8 - 0xbb */ DIS_LDDR, DIS_CPDR, DIS_INDR, DIS_OTDR,
-/* 0xbc - 0xbf */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-
-/* 0xc0 - 0xc3 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0xc4 - 0xc7 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0xc8 - 0xcb */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0xcc - 0xcf */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-
-/* 0xd0 - 0xd3 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0xd4 - 0xd7 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0xd8 - 0xdb */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0xdc - 0xdf */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-
-/* 0xe0 - 0xe3 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0xe4 - 0xe7 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0xe8 - 0xeb */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0xec - 0xef */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-
-/* 0xf0 - 0xf3 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0xf4 - 0xf7 */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0xf8 - 0xfb */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
-/* 0xfc - 0xff */ DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP, DIS_ED_NOP,
- };
-
-/* DIS_FD opcodes
-*/
-DIS_OP_CALLBACK dis_FD_opcode[0x100]=
- {
-/* 0x00 - 0x03 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x04 - 0x07 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x08 - 0x0b */ DIS_FD_NOP, DIS_ADD_IY_BC, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x0c - 0x0f */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-
-/* 0x10 - 0x13 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x14 - 0x17 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x18 - 0x1b */ DIS_FD_NOP, DIS_ADD_IY_DE, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x1c - 0x1f */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-
-/* 0x20 - 0x23 */ DIS_FD_NOP, DIS_LD_IY_WORD, DIS_LD_ADDR_IY, DIS_INC_IY,
-/* 0x24 - 0x27 */ DIS_INC_IYH, DIS_DEC_IYH, DIS_LD_IYH_BYTE, DIS_FD_NOP,
-/* 0x28 - 0x2b */ DIS_FD_NOP, DIS_ADD_IY_IY, DIS_LD_IY_ADDR, DIS_DEC_IY,
-/* 0x2c - 0x2f */ DIS_INC_IYL, DIS_DEC_IYL, DIS_LD_IYL_BYTE, DIS_FD_NOP,
-
-/* 0x30 - 0x33 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x34 - 0x37 */ DIS_INC_IIY, DIS_DEC_IIY, DIS_LD_IIY_BYTE, DIS_FD_NOP,
-/* 0x38 - 0x3b */ DIS_FD_NOP, DIS_ADD_IY_SP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x3c - 0x3f */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-
-/* 0x40 - 0x43 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x44 - 0x47 */ DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_FD_NOP,
-/* 0x48 - 0x4b */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x4c - 0x4f */ DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_FD_NOP,
-
-/* 0x50 - 0x53 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x54 - 0x57 */ DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_FD_NOP,
-/* 0x58 - 0x5b */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x5c - 0x5f */ DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_FD_NOP,
-
-/* 0x60 - 0x63 */ DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_YLD_R8_R8,
-/* 0x64 - 0x67 */ DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_YLD_R8_R8,
-/* 0x68 - 0x6b */ DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_YLD_R8_R8,
-/* 0x6c - 0x6f */ DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_YLD_R8_R8,
-
-/* 0x70 - 0x73 */ DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_YLD_R8_R8,
-/* 0x74 - 0x77 */ DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_FD_NOP, DIS_YLD_R8_R8,
-/* 0x78 - 0x7b */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x7c - 0x7f */ DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_YLD_R8_R8, DIS_FD_NOP,
-
-/* 0x80 - 0x83 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x84 - 0x87 */ DIS_YADD_R8, DIS_YADD_R8, DIS_YADD_R8, DIS_FD_NOP,
-/* 0x88 - 0x8b */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x8c - 0x8f */ DIS_YADC_R8, DIS_YADC_R8, DIS_YADC_R8, DIS_FD_NOP,
-
-/* 0x90 - 0x93 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x94 - 0x97 */ DIS_YSUB_R8, DIS_YSUB_R8, DIS_YSUB_R8, DIS_FD_NOP,
-/* 0x98 - 0x9b */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0x9c - 0x9f */ DIS_YSBC_R8, DIS_YSBC_R8, DIS_YSBC_R8, DIS_FD_NOP,
-
-/* 0xa0 - 0xa3 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0xa4 - 0xa7 */ DIS_YAND_R8, DIS_YAND_R8, DIS_YAND_R8, DIS_FD_NOP,
-/* 0xa8 - 0xab */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0xac - 0xaf */ DIS_YYOR_R8, DIS_YYOR_R8, DIS_YYOR_R8, DIS_FD_NOP,
-
-/* 0xb0 - 0xb3 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0xb4 - 0xb7 */ DIS_Y_OR_R8, DIS_Y_OR_R8, DIS_Y_OR_R8, DIS_FD_NOP,
-/* 0xb8 - 0xbb */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0xbc - 0xbf */ DIS_YCP_R8, DIS_YCP_R8, DIS_YCP_R8, DIS_FD_NOP,
-
-/* 0xc0 - 0xc3 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0xc4 - 0xc7 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0xc8 - 0xcb */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_CB_DECODE,
-/* 0xcc - 0xcf */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-
-/* 0xd0 - 0xd3 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0xd4 - 0xd7 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0xd8 - 0xdb */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0xdc - 0xdf */ DIS_FD_NOP, DIS_FD_DD_DECODE, DIS_FD_NOP, DIS_FD_NOP,
-
-/* 0xe0 - 0xe3 */ DIS_FD_NOP, DIS_POP_IY, DIS_FD_NOP, DIS_EY_ISP_IY,
-/* 0xe4 - 0xe7 */ DIS_FD_NOP, DIS_PUSH_IY, DIS_FD_NOP, DIS_FD_NOP,
-/* 0xe8 - 0xeb */ DIS_FD_NOP, DIS_JP_IY, DIS_FD_NOP, DIS_FD_NOP,
-/* 0xec - 0xef */ DIS_FD_NOP, DIS_FD_ED_DECODE, DIS_FD_NOP, DIS_FD_NOP,
-
-/* 0xf0 - 0xf3 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0xf4 - 0xf7 */ DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP, DIS_FD_NOP,
-/* 0xf8 - 0xfb */ DIS_FD_NOP, DIS_LD_SP_IY, DIS_FD_NOP, DIS_FD_NOP,
-/* 0xfc - 0xff */ DIS_FD_NOP, DIS_FD_FD_DECODE, DIS_FD_NOP, DIS_FD_NOP,
- };
-
-
-/* DIS_FD DIS_CB opcodes
-*/
-DIS_OP_CALLBACK dis_FD_CB_opcode[0x100]=
- {
-/* 0x00 - 0x03 */ DIS_RLC_IY, DIS_RLC_IY, DIS_RLC_IY, DIS_RLC_IY,
-/* 0x04 - 0x07 */ DIS_RLC_IY, DIS_RLC_IY, DIS_RLC_IY, DIS_RLC_IY,
-/* 0x08 - 0x0b */ DIS_RRC_IY, DIS_RRC_IY, DIS_RRC_IY, DIS_RRC_IY,
-/* 0x0c - 0x0f */ DIS_RRC_IY, DIS_RRC_IY, DIS_RRC_IY, DIS_RRC_IY,
-
-/* 0x10 - 0x13 */ DIS_RL_IY, DIS_RL_IY, DIS_RL_IY, DIS_RL_IY,
-/* 0x14 - 0x17 */ DIS_RL_IY, DIS_RL_IY, DIS_RL_IY, DIS_RL_IY,
-/* 0x18 - 0x1b */ DIS_RR_IY, DIS_RR_IY, DIS_RR_IY, DIS_RR_IY,
-/* 0x1c - 0x1f */ DIS_RR_IY, DIS_RR_IY, DIS_RR_IY, DIS_RR_IY,
-
-/* 0x20 - 0x23 */ DIS_SLA_IY, DIS_SLA_IY, DIS_SLA_IY, DIS_SLA_IY,
-/* 0x24 - 0x27 */ DIS_SLA_IY, DIS_SLA_IY, DIS_SLA_IY, DIS_SLA_IY,
-/* 0x28 - 0x2b */ DIS_SRA_IY, DIS_SRA_IY, DIS_SRA_IY, DIS_SRA_IY,
-/* 0x2c - 0x2f */ DIS_SRA_IY, DIS_SRA_IY, DIS_SRA_IY, DIS_SRA_IY,
-
-/* 0x30 - 0x33 */ DIS_SLL_IY, DIS_SLL_IY, DIS_SLL_IY, DIS_SLL_IY,
-/* 0x34 - 0x37 */ DIS_SLL_IY, DIS_SLL_IY, DIS_SLL_IY, DIS_SLL_IY,
-/* 0x38 - 0x3b */ DIS_SRL_IY, DIS_SRL_IY, DIS_SRL_IY, DIS_SRL_IY,
-/* 0x3c - 0x3f */ DIS_SRL_IY, DIS_SRL_IY, DIS_SRL_IY, DIS_SRL_IY,
-
-/* 0x40 - 0x43 */ DIS_BIT_IY,DIS_BIT_IY, DIS_BIT_IY, DIS_BIT_IY,
-/* 0x44 - 0x47 */ DIS_BIT_IY,DIS_BIT_IY, DIS_BIT_IY, DIS_BIT_IY,
-/* 0x48 - 0x4b */ DIS_BIT_IY,DIS_BIT_IY, DIS_BIT_IY, DIS_BIT_IY,
-/* 0x4c - 0x4f */ DIS_BIT_IY,DIS_BIT_IY, DIS_BIT_IY, DIS_BIT_IY,
-
-/* 0x50 - 0x53 */ DIS_BIT_IY,DIS_BIT_IY, DIS_BIT_IY, DIS_BIT_IY,
-/* 0x54 - 0x57 */ DIS_BIT_IY,DIS_BIT_IY, DIS_BIT_IY, DIS_BIT_IY,
-/* 0x58 - 0x5b */ DIS_BIT_IY,DIS_BIT_IY, DIS_BIT_IY, DIS_BIT_IY,
-/* 0x5c - 0x5f */ DIS_BIT_IY,DIS_BIT_IY, DIS_BIT_IY, DIS_BIT_IY,
-
-/* 0x60 - 0x63 */ DIS_BIT_IY,DIS_BIT_IY, DIS_BIT_IY, DIS_BIT_IY,
-/* 0x64 - 0x67 */ DIS_BIT_IY,DIS_BIT_IY, DIS_BIT_IY, DIS_BIT_IY,
-/* 0x68 - 0x6b */ DIS_BIT_IY,DIS_BIT_IY, DIS_BIT_IY, DIS_BIT_IY,
-/* 0x6c - 0x6f */ DIS_BIT_IY,DIS_BIT_IY, DIS_BIT_IY, DIS_BIT_IY,
-
-/* 0x70 - 0x73 */ DIS_BIT_IY,DIS_BIT_IY, DIS_BIT_IY, DIS_BIT_IY,
-/* 0x74 - 0x77 */ DIS_BIT_IY,DIS_BIT_IY, DIS_BIT_IY, DIS_BIT_IY,
-/* 0x78 - 0x7b */ DIS_BIT_IY,DIS_BIT_IY, DIS_BIT_IY, DIS_BIT_IY,
-/* 0x7c - 0x7f */ DIS_BIT_IY,DIS_BIT_IY, DIS_BIT_IY, DIS_BIT_IY,
-
-/* 0x80 - 0x83 */ DIS_RES_IY,DIS_RES_IY, DIS_RES_IY, DIS_RES_IY,
-/* 0x84 - 0x87 */ DIS_RES_IY,DIS_RES_IY, DIS_RES_IY, DIS_RES_IY,
-/* 0x88 - 0x8b */ DIS_RES_IY,DIS_RES_IY, DIS_RES_IY, DIS_RES_IY,
-/* 0x8c - 0x8f */ DIS_RES_IY,DIS_RES_IY, DIS_RES_IY, DIS_RES_IY,
-
-/* 0x90 - 0x93 */ DIS_RES_IY,DIS_RES_IY, DIS_RES_IY, DIS_RES_IY,
-/* 0x94 - 0x97 */ DIS_RES_IY,DIS_RES_IY, DIS_RES_IY, DIS_RES_IY,
-/* 0x98 - 0x9b */ DIS_RES_IY,DIS_RES_IY, DIS_RES_IY, DIS_RES_IY,
-/* 0x9c - 0x9f */ DIS_RES_IY,DIS_RES_IY, DIS_RES_IY, DIS_RES_IY,
-
-/* 0xa0 - 0xa3 */ DIS_RES_IY,DIS_RES_IY, DIS_RES_IY, DIS_RES_IY,
-/* 0xa4 - 0xa7 */ DIS_RES_IY,DIS_RES_IY, DIS_RES_IY, DIS_RES_IY,
-/* 0xa8 - 0xab */ DIS_RES_IY,DIS_RES_IY, DIS_RES_IY, DIS_RES_IY,
-/* 0xac - 0xaf */ DIS_RES_IY,DIS_RES_IY, DIS_RES_IY, DIS_RES_IY,
-
-/* 0xb0 - 0xb3 */ DIS_RES_IY,DIS_RES_IY, DIS_RES_IY, DIS_RES_IY,
-/* 0xb4 - 0xb7 */ DIS_RES_IY,DIS_RES_IY, DIS_RES_IY, DIS_RES_IY,
-/* 0xb8 - 0xbb */ DIS_RES_IY,DIS_RES_IY, DIS_RES_IY, DIS_RES_IY,
-/* 0xbc - 0xbf */ DIS_RES_IY,DIS_RES_IY, DIS_RES_IY, DIS_RES_IY,
-
-/* 0xc0 - 0xc3 */ DIS_SET_IY,DIS_SET_IY, DIS_SET_IY, DIS_SET_IY,
-/* 0xc4 - 0xc7 */ DIS_SET_IY,DIS_SET_IY, DIS_SET_IY, DIS_SET_IY,
-/* 0xc8 - 0xcb */ DIS_SET_IY,DIS_SET_IY, DIS_SET_IY, DIS_SET_IY,
-/* 0xcc - 0xcf */ DIS_SET_IY,DIS_SET_IY, DIS_SET_IY, DIS_SET_IY,
-
-/* 0xd0 - 0xd3 */ DIS_SET_IY,DIS_SET_IY, DIS_SET_IY, DIS_SET_IY,
-/* 0xd4 - 0xd7 */ DIS_SET_IY,DIS_SET_IY, DIS_SET_IY, DIS_SET_IY,
-/* 0xd8 - 0xdb */ DIS_SET_IY,DIS_SET_IY, DIS_SET_IY, DIS_SET_IY,
-/* 0xdc - 0xdf */ DIS_SET_IY,DIS_SET_IY, DIS_SET_IY, DIS_SET_IY,
-
-/* 0xe0 - 0xe3 */ DIS_SET_IY,DIS_SET_IY, DIS_SET_IY, DIS_SET_IY,
-/* 0xe4 - 0xe7 */ DIS_SET_IY,DIS_SET_IY, DIS_SET_IY, DIS_SET_IY,
-/* 0xe8 - 0xeb */ DIS_SET_IY,DIS_SET_IY, DIS_SET_IY, DIS_SET_IY,
-/* 0xec - 0xef */ DIS_SET_IY,DIS_SET_IY, DIS_SET_IY, DIS_SET_IY,
-
-/* 0xf0 - 0xf3 */ DIS_SET_IY,DIS_SET_IY, DIS_SET_IY, DIS_SET_IY,
-/* 0xf4 - 0xf7 */ DIS_SET_IY,DIS_SET_IY, DIS_SET_IY, DIS_SET_IY,
-/* 0xf8 - 0xfb */ DIS_SET_IY,DIS_SET_IY, DIS_SET_IY, DIS_SET_IY,
-/* 0xfc - 0xff */ DIS_SET_IY,DIS_SET_IY, DIS_SET_IY, DIS_SET_IY,
- };
-
-/* DIS_First/single byte opcodes
-*/
-DIS_OP_CALLBACK dis_opcode_z80[0x100]=
- {
-/* 0x00 - 0x03 */ DIS_NOP, DIS_LD_R16_WORD, DIS_LD_R16_A, DIS_INC_R16,
-/* 0x04 - 0x07 */ DIS_INC_R8, DIS_DEC_R8, DIS_LD_R8_BYTE, DIS_RLCA,
-/* 0x08 - 0x0b */ DIS_EX_AF_AF, DIS_ADD_HL_R16, DIS_LD_A_R16, DIS_DEC_R16,
-/* 0x0c - 0x0f */ DIS_INC_R8, DIS_DEC_R8, DIS_LD_R8_BYTE, DIS_RRCA,
-
-/* 0x10 - 0x13 */ DIS_DJNZ, DIS_LD_R16_WORD, DIS_LD_R16_A, DIS_INC_R16,
-/* 0x14 - 0x17 */ DIS_INC_R8, DIS_DEC_R8, DIS_LD_R8_BYTE, DIS_RLA,
-/* 0x18 - 0x1b */ DIS_JR, DIS_ADD_HL_R16, DIS_LD_A_R16, DIS_DEC_R16,
-/* 0x1c - 0x1f */ DIS_INC_R8, DIS_DEC_R8, DIS_LD_R8_BYTE, DIS_RRA,
-
-/* 0x20 - 0x23 */ DIS_JR_CO, DIS_LD_R16_WORD, DIS_LD_ADDR_HL, DIS_INC_R16,
-/* 0x24 - 0x27 */ DIS_INC_R8, DIS_DEC_R8, DIS_LD_R8_BYTE, DIS_DAA,
-/* 0x28 - 0x2b */ DIS_JR_CO, DIS_ADD_HL_R16, DIS_LD_HL_ADDR, DIS_DEC_R16,
-/* 0x2c - 0x2f */ DIS_INC_R8, DIS_DEC_R8, DIS_LD_R8_BYTE, DIS_CPL,
-
-/* 0x30 - 0x33 */ DIS_JR_CO, DIS_LD_R16_WORD, DIS_LD_ADDR_A, DIS_INC_R16,
-/* 0x34 - 0x37 */ DIS_INC_R8, DIS_DEC_R8, DIS_LD_R8_BYTE, DIS_SCF,
-/* 0x38 - 0x3b */ DIS_JR_CO, DIS_ADD_HL_R16, DIS_LD_A_ADDR, DIS_DEC_R16,
-/* 0x3c - 0x3f */ DIS_INC_R8, DIS_DEC_R8, DIS_LD_R8_BYTE, DIS_CCF,
-
-/* 0x40 - 0x43 */ DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8,
-/* 0x44 - 0x47 */ DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8,
-/* 0x48 - 0x4b */ DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8,
-/* 0x4c - 0x4f */ DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8,
-
-/* 0x50 - 0x53 */ DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8,
-/* 0x54 - 0x57 */ DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8,
-/* 0x58 - 0x5b */ DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8,
-/* 0x5c - 0x5f */ DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8,
-
-/* 0x60 - 0x63 */ DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8,
-/* 0x64 - 0x67 */ DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8,
-/* 0x68 - 0x6b */ DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8,
-/* 0x6c - 0x6f */ DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8,
-
-/* 0x70 - 0x73 */ DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8,
-/* 0x74 - 0x77 */ DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_HALT, DIS_LD_R8_R8,
-/* 0x78 - 0x7b */ DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8,
-/* 0x7c - 0x7f */ DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8, DIS_LD_R8_R8,
-
-/* 0x80 - 0x83 */ DIS_ADD_R8, DIS_ADD_R8, DIS_ADD_R8, DIS_ADD_R8,
-/* 0x84 - 0x87 */ DIS_ADD_R8, DIS_ADD_R8, DIS_ADD_R8, DIS_ADD_R8,
-/* 0x88 - 0x8b */ DIS_ADC_R8, DIS_ADC_R8, DIS_ADC_R8, DIS_ADC_R8,
-/* 0x8c - 0x8f */ DIS_ADC_R8, DIS_ADC_R8, DIS_ADC_R8, DIS_ADC_R8,
-
-/* 0x90 - 0x93 */ DIS_SUB_R8, DIS_SUB_R8, DIS_SUB_R8, DIS_SUB_R8,
-/* 0x94 - 0x97 */ DIS_SUB_R8, DIS_SUB_R8, DIS_SUB_R8, DIS_SUB_R8,
-/* 0x98 - 0x9b */ DIS_SBC_R8, DIS_SBC_R8, DIS_SBC_R8, DIS_SBC_R8,
-/* 0x9c - 0x9f */ DIS_SBC_R8, DIS_SBC_R8, DIS_SBC_R8, DIS_SBC_R8,
-
-/* 0xa0 - 0xa3 */ DIS_AND_R8, DIS_AND_R8, DIS_AND_R8, DIS_AND_R8,
-/* 0xa4 - 0xa7 */ DIS_AND_R8, DIS_AND_R8, DIS_AND_R8, DIS_AND_R8,
-/* 0xa8 - 0xab */ DIS_XOR_R8, DIS_XOR_R8, DIS_XOR_R8, DIS_XOR_R8,
-/* 0xac - 0xaf */ DIS_XOR_R8, DIS_XOR_R8, DIS_XOR_R8, DIS_XOR_R8,
-
-/* 0xb0 - 0xb3 */ DIS_OR_R8, DIS_OR_R8, DIS_OR_R8, DIS_OR_R8,
-/* 0xb4 - 0xb7 */ DIS_OR_R8, DIS_OR_R8, DIS_OR_R8, DIS_OR_R8,
-/* 0xb8 - 0xbb */ DIS_CP_R8, DIS_CP_R8, DIS_CP_R8, DIS_CP_R8,
-/* 0xbc - 0xbf */ DIS_CP_R8, DIS_CP_R8, DIS_CP_R8, DIS_CP_R8,
-
-/* 0xc0 - 0xc3 */ DIS_RET_CO, DIS_POP_R16, DIS_JP_CO, DIS_JP,
-/* 0xc4 - 0xc7 */ DIS_CALL_CO, DIS_PUSH_R16, DIS_ADD_A_BYTE, DIS_RST,
-/* 0xc8 - 0xcb */ DIS_RET_CO, DIS_RET, DIS_JP_CO, DIS_CB_DECODE,
-/* 0xcc - 0xcf */ DIS_CALL_CO, DIS_CALL, DIS_ADC_A_BYTE, DIS_RST,
-
-/* 0xd0 - 0xd3 */ DIS_RET_CO, DIS_POP_R16, DIS_JP_CO, DIS_OUT_BYTE_A,
-/* 0xd4 - 0xd7 */ DIS_CALL_CO, DIS_PUSH_R16, DIS_SUB_A_BYTE, DIS_RST,
-/* 0xd8 - 0xdb */ DIS_RET_CO, DIS_EXX, DIS_JP_CO, DIS_IN_A_BYTE,
-/* 0xdc - 0xdf */ DIS_CALL_CO, DIS_DD_DECODE, DIS_SBC_A_BYTE, DIS_RST,
-
-/* 0xe0 - 0xe3 */ DIS_RET_CO, DIS_POP_R16, DIS_JP_CO, DIS_EX_ISP_HL,
-/* 0xe4 - 0xe7 */ DIS_CALL_CO, DIS_PUSH_R16, DIS_AND_A_BYTE, DIS_RST,
-/* 0xe8 - 0xeb */ DIS_RET_CO, DIS_JP_HL, DIS_JP_CO, DIS_EX_DE_HL,
-/* 0xec - 0xef */ DIS_CALL_CO, DIS_ED_DECODE, DIS_XOR_A_BYTE, DIS_RST,
-
-/* 0xf0 - 0xf3 */ DIS_RET_CO, DIS_POP_R16, DIS_JP_CO, DIS_DI,
-/* 0xf4 - 0xf7 */ DIS_CALL_CO, DIS_PUSH_R16, DIS_OR_A_BYTE, DIS_RST,
-/* 0xf8 - 0xfb */ DIS_RET_CO, DIS_LD_SP_HL, DIS_JP_CO, DIS_EI,
-/* 0xfc - 0xff */ DIS_CALL_CO, DIS_FD_DECODE, DIS_CP_A_BYTE, DIS_RST,
- };
-
-
-#endif
-
-/* END OF FILE */