typedef CINESTATE (*opcode_func)(int);
/* a lot of jump table entries evaluate to the same thing */
#define opINP_AA_AA opINP_A_AA
#define opINP_BB_AA opINP_A_AA
#define opOUTbi_AA_A opOUTbi_A_A
#define opOUTbi_BB_A opOUTbi_A_A
#define opOUT16_AA_A opOUT16_A_A
#define opOUT16_BB_A opOUT16_A_A
#define opOUT64_AA_A opOUT64_A_A
#define opOUT64_BB_A opOUT64_A_A
#define opOUTWW_AA_A opOUTWW_A_A
#define opOUTWW_BB_A opOUTWW_A_A
#define opLDAimm_AA_AA opLDAimm_A_AA
#define opLDAimm_BB_AA opLDAimm_A_AA
#define opLDAdir_AA_AA opLDAdir_A_AA
#define opLDAdir_BB_AA opLDAdir_A_AA
#define opLDAirg_AA_AA opLDAirg_A_AA
#define opLDAirg_BB_AA opLDAirg_A_AA
#define opADDimm_AA_AA opADDimm_A_AA
#define opADDimm_BB_AA opADDimm_A_AA
#define opADDimmX_AA_AA opADDimmX_A_AA
#define opADDimmX_BB_AA opADDimmX_A_AA
#define opADDdir_AA_AA opADDdir_A_AA
#define opADDdir_BB_AA opADDdir_A_AA
#define opAWDirg_AA_AA opAWDirg_A_AA
#define opAWDirg_BB_AA opAWDirg_A_AA
#define opADDirg_A_AA opAWDirg_A_AA
#define opADDirg_AA_AA opAWDirg_A_AA
#define opADDirg_BB_AA opAWDirg_A_AA
#define opADDirg_B_AA opAWDirg_B_AA
#define opSUBimm_AA_AA opSUBimm_A_AA
#define opSUBimm_BB_AA opSUBimm_A_AA
#define opSUBimmX_AA_AA opSUBimmX_A_AA
#define opSUBimmX_BB_AA opSUBimmX_A_AA
#define opSUBdir_AA_AA opSUBdir_A_AA
#define opSUBdir_BB_AA opSUBdir_A_AA
#define opSUBirg_AA_AA opSUBirg_A_AA
#define opSUBirg_BB_AA opSUBirg_A_AA
#define opCMPdir_AA_AA opCMPdir_A_AA
#define opCMPdir_BB_AA opCMPdir_A_AA
#define opANDirg_AA_AA opANDirg_A_AA
#define opANDirg_BB_AA opANDirg_A_AA
#define opLDJimm_AA_A opLDJimm_A_A
#define opLDJimm_BB_A opLDJimm_A_A
#define opLDJirg_AA_A opLDJirg_A_A
#define opLDJirg_BB_A opLDJirg_A_A
#define opLDPimm_AA_A opLDPimm_A_A
#define opLDPimm_BB_A opLDPimm_A_A
#define opLDIdir_AA_A opLDIdir_A_A
#define opLDIdir_BB_A opLDIdir_A_A
#define opSTAdir_AA_A opSTAdir_A_A
#define opSTAdir_BB_A opSTAdir_A_A
#define opSTAirg_AA_A opSTAirg_A_A
#define opSTAirg_BB_A opSTAirg_A_A
#define opXLT_AA_AA opXLT_A_AA
#define opXLT_BB_AA opXLT_A_AA
#define opMULirg_AA_AA opMULirg_A_AA
#define opMULirg_BB_AA opMULirg_A_AA
#define opLSRe_AA_AA opLSRe_A_AA
#define opLSRe_BB_AA opLSRe_A_AA
#define opLSRf_AA_AA opLSRf_A_AA
#define opLSRf_BB_AA opLSRf_A_AA
#define opLSLe_AA_AA opLSLe_A_AA
#define opLSLe_BB_AA opLSLe_A_AA
#define opLSLf_AA_AA opLSLf_A_AA
#define opLSLf_BB_AA opLSLf_A_AA
#define opASRe_AA_AA opASRe_A_AA
#define opASRe_BB_AA opASRe_A_AA
#define opASRf_AA_AA opASRf_A_AA
#define opASRf_BB_AA opASRf_A_AA
#define opASRDe_AA_AA opASRDe_A_AA
#define opASRDe_BB_AA opASRDe_A_AA
#define opASRDf_AA_AA opASRDf_A_AA
#define opASRDf_BB_AA opASRDf_A_AA
#define opLSLDe_AA_AA opLSLDe_A_AA
#define opLSLDe_BB_AA opLSLDe_A_AA
#define opLSLDf_AA_AA opLSLDf_A_AA
#define opLSLDf_BB_AA opLSLDf_A_AA
#define opJMP_AA_A opJMP_A_A
#define opJMP_BB_A opJMP_A_A
#define opJEI_AA_A opJEI_A_A
#define opJEI_BB_A opJEI_A_A
#define opJEI_AA_B opJEI_A_B
#define opJEI_BB_B opJEI_A_B
#define opJLT_AA_A opJLT_A_A
#define opJLT_BB_A opJLT_A_A
#define opJEQ_AA_A opJEQ_A_A
#define opJEQ_BB_A opJEQ_A_A
#define opJA0_AA_A opJA0_A_A
#define opJA0_BB_A opJA0_A_A
#define opJNC_AA_A opJNC_A_A
#define opJNC_BB_A opJNC_A_A
#define opJDR_AA_A opJDR_A_A
#define opJDR_BB_A opJDR_A_A
#define opNOP_AA_A opNOP_A_A
#define opNOP_BB_A opNOP_A_A
#define opJPP32_AA_B opJPP32_A_B
#define opJPP32_BB_B opJPP32_A_B
#define opJPP16_AA_B opJPP16_A_B
#define opJPP16_BB_B opJPP16_A_B
#define opJPP8_AA_B opJPP8_A_B
#define opJPP8_BB_B opJPP8_A_B
#define opJLT_AA_B opJLT_A_B
#define opJLT_BB_B opJLT_A_B
#define opJEQ_AA_B opJEQ_A_B
#define opJEQ_BB_B opJEQ_A_B
#define opJA0_AA_B opJA0_A_B
#define opJA0_BB_B opJA0_A_B
#define opJNC_AA_B opJNC_A_B
#define opJNC_BB_B opJNC_A_B
#define opJDR_AA_B opJDR_A_B
#define opJDR_BB_B opJDR_A_B
#define opNOP_AA_B opNOP_A_B
#define opNOP_BB_B opNOP_A_B
#define opLLT_AA_AA opLLT_A_AA
#define opLLT_BB_AA opLLT_A_AA
#define opVIN_AA_A opVIN_A_A
#define opVIN_BB_A opVIN_A_A
#define opWAI_AA_A opWAI_A_A
#define opWAI_BB_A opWAI_A_A
#define opVDR_AA_A opVDR_A_A
#define opVDR_BB_A opVDR_A_A
#define tOUT_AA_A tOUT_A_A
#define tOUT_BB_A tOUT_B_BB
#define tJMI_B_BB2 tJMI_B_BB1
#define tJPP_AA_B tJPP_A_B
#define tJPP_BB_B tJPP_A_B
/* prototypes for the function handlers */
static CINESTATE opADDdir_A_AA (int opcode);
static CINESTATE opADDdir_B_AA (int opcode);
static CINESTATE opADDimmX_A_AA (int opcode);
static CINESTATE opADDimmX_B_AA (int opcode);
static CINESTATE opADDimm_A_AA (int opcode);
static CINESTATE opADDimm_B_AA (int opcode);
static CINESTATE opANDirg_A_AA (int opcode);
static CINESTATE opANDirg_B_AA (int opcode);
static CINESTATE opASRDe_A_AA (int opcode);
static CINESTATE opASRDe_B_AA (int opcode);
static CINESTATE opASRDf_A_AA (int opcode);
static CINESTATE opASRDf_B_AA (int opcode);
static CINESTATE opASRe_A_AA (int opcode);
static CINESTATE opASRe_B_AA (int opcode);
static CINESTATE opASRf_A_AA (int opcode);
static CINESTATE opASRf_B_AA (int opcode);
static CINESTATE opAWDirg_A_AA (int opcode);
static CINESTATE opAWDirg_B_AA (int opcode);
static CINESTATE opCMPdir_A_AA (int opcode);
static CINESTATE opCMPdir_B_AA (int opcode);
static CINESTATE opINP_A_AA (int opcode);
static CINESTATE opINP_B_AA (int opcode);
static CINESTATE opJA0_A_A (int opcode);
static CINESTATE opJA0_A_B (int opcode);
static CINESTATE opJA0_B_BB (int opcode);
static CINESTATE opJDR_A_A (int opcode);
static CINESTATE opJDR_A_B (int opcode);
static CINESTATE opJDR_B_BB (int opcode);
static CINESTATE opJEQ_A_A (int opcode);
static CINESTATE opJEQ_A_B (int opcode);
static CINESTATE opJEQ_B_BB (int opcode);
static CINESTATE opJLT_A_A (int opcode);
static CINESTATE opJLT_A_B (int opcode);
static CINESTATE opJLT_B_BB (int opcode);
static CINESTATE opJMP_A_A (int opcode);
static CINESTATE opJMP_B_BB (int opcode);
static CINESTATE opJNC_A_A (int opcode);
static CINESTATE opJNC_A_B (int opcode);
static CINESTATE opJNC_B_BB (int opcode);
static CINESTATE opLDAdir_A_AA (int opcode);
static CINESTATE opLDAdir_B_AA (int opcode);
static CINESTATE opLDAimm_A_AA (int opcode);
static CINESTATE opLDAimm_B_AA (int opcode);
static CINESTATE opLDAirg_A_AA (int opcode);
static CINESTATE opLDAirg_B_AA (int opcode);
static CINESTATE opLDIdir_A_A (int opcode);
static CINESTATE opLDIdir_B_BB (int opcode);
static CINESTATE opLDJimm_A_A (int opcode);
static CINESTATE opLDJimm_B_BB (int opcode);
static CINESTATE opLDJirg_A_A (int opcode);
static CINESTATE opLDJirg_B_BB (int opcode);
static CINESTATE opLDPimm_A_A (int opcode);
static CINESTATE opLDPimm_B_BB (int opcode);
static CINESTATE opLLT_A_AA (int opcode);
static CINESTATE opLLT_B_AA (int opcode);
static CINESTATE opLSLDe_A_AA (int opcode);
static CINESTATE opLSLDe_B_AA (int opcode);
static CINESTATE opLSLDf_A_AA (int opcode);
static CINESTATE opLSLDf_B_AA (int opcode);
static CINESTATE opLSLe_A_AA (int opcode);
static CINESTATE opLSLe_B_AA (int opcode);
static CINESTATE opLSLf_A_AA (int opcode);
static CINESTATE opLSLf_B_AA (int opcode);
static CINESTATE opLSRe_A_AA (int opcode);
static CINESTATE opLSRe_B_AA (int opcode);
static CINESTATE opLSRf_A_AA (int opcode);
static CINESTATE opLSRf_B_AA (int opcode);
static CINESTATE opMULirg_A_AA (int opcode);
static CINESTATE opMULirg_B_AA (int opcode);
static CINESTATE opNOP_A_A (int opcode);
static CINESTATE opNOP_A_B (int opcode);
static CINESTATE opNOP_B_BB (int opcode);
static CINESTATE opSTAdir_A_A (int opcode);
static CINESTATE opSTAdir_B_BB (int opcode);
static CINESTATE opSTAirg_A_A (int opcode);
static CINESTATE opSTAirg_B_BB (int opcode);
static CINESTATE opSUBdir_A_AA (int opcode);
static CINESTATE opSUBdir_B_AA (int opcode);
static CINESTATE opSUBimmX_A_AA (int opcode);
static CINESTATE opSUBimmX_B_AA (int opcode);
static CINESTATE opSUBimm_A_AA (int opcode);
static CINESTATE opSUBimm_B_AA (int opcode);
static CINESTATE opSUBirg_A_AA (int opcode);
static CINESTATE opSUBirg_B_AA (int opcode);
static CINESTATE opVDR_A_A (int opcode);
static CINESTATE opVDR_B_BB (int opcode);
static CINESTATE opVIN_A_A (int opcode);
static CINESTATE opVIN_B_BB (int opcode);
static CINESTATE opWAI_A_A (int opcode);
static CINESTATE opWAI_B_BB (int opcode);
static CINESTATE opXLT_A_AA (int opcode);
static CINESTATE opXLT_B_AA (int opcode);
static CINESTATE tJMI_AA_A (int opcode);
static CINESTATE tJMI_AA_B (int opcode);
static CINESTATE tJMI_A_A (int opcode);
static CINESTATE tJMI_A_B (int opcode);
static CINESTATE tJMI_BB_A (int opcode);
static CINESTATE tJMI_BB_B (int opcode);
static CINESTATE tJMI_B_BB1 (int opcode);
static CINESTATE tJPP_AA_B (int opcode);
static CINESTATE tJPP_A_B (int opcode);
static CINESTATE tJPP_BB_B (int opcode);
static CINESTATE tJPP_B_BB (int opcode);
static CINESTATE tOUT_A_A (int opcode);
static CINESTATE tOUT_B_BB (int opcode);
/* Opcode cycle counts according to Zonns cineinst.txt */
static unsigned char ccpu_cycles[] =
{
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
/*0*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* LDA */
/*1*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* INP */
/*2*/ 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* ADD */
/*3*/ 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* SUB */
/*4*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* LDJ */
/*5*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* Jumps: 2 extra cycles if jump made */
/*6*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* ADD */
/*7*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* SUB */
/*8*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* LDP */
/*9*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* OUT */
/*A*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* LDA */
/*B*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* CMP */
/*C*/ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* LDI */
/*D*/ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* STA */
/*E*/ 1, 2, 7, 2, 0, 0, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, /* LTT and WAI have special timing */
/*F*/ 1, 2, 7, 2, 0, 0, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1 /* same as E */
};
/* the main opcode table */
static opcode_func cineops[4][256] =
{
{
/* table for state "A" -- Use this table if the last opcode was not
* an ACC related opcode, and was not a B flip/flop operation.
* Translation:
* Any ACC related routine will use A-reg and go on to opCodeTblAA
* Any B flip/flop instructions will jump to opCodeTblB
* All other instructions remain in opCodeTblA
* JMI will use the current sign of the A-reg
*/
opLDAimm_A_AA, opLDAimm_A_AA, opLDAimm_A_AA, opLDAimm_A_AA, opLDAimm_A_AA, opLDAimm_A_AA, opLDAimm_A_AA, opLDAimm_A_AA,
opLDAimm_A_AA, opLDAimm_A_AA, opLDAimm_A_AA, opLDAimm_A_AA, opLDAimm_A_AA, opLDAimm_A_AA, opLDAimm_A_AA, opLDAimm_A_AA,
opINP_A_AA, opINP_A_AA, opINP_A_AA, opINP_A_AA, opINP_A_AA, opINP_A_AA, opINP_A_AA, opINP_A_AA,
opINP_A_AA, opINP_A_AA, opINP_A_AA, opINP_A_AA, opINP_A_AA, opINP_A_AA, opINP_A_AA, opINP_A_AA,
opADDimmX_A_AA,opADDimm_A_AA, opADDimm_A_AA, opADDimm_A_AA, opADDimm_A_AA, opADDimm_A_AA, opADDimm_A_AA, opADDimm_A_AA,
opADDimm_A_AA, opADDimm_A_AA, opADDimm_A_AA, opADDimm_A_AA, opADDimm_A_AA, opADDimm_A_AA, opADDimm_A_AA, opADDimm_A_AA,
opSUBimmX_A_AA,opSUBimm_A_AA, opSUBimm_A_AA, opSUBimm_A_AA, opSUBimm_A_AA, opSUBimm_A_AA, opSUBimm_A_AA, opSUBimm_A_AA,
opSUBimm_A_AA, opSUBimm_A_AA, opSUBimm_A_AA, opSUBimm_A_AA, opSUBimm_A_AA, opSUBimm_A_AA, opSUBimm_A_AA, opSUBimm_A_AA,
opLDJimm_A_A, opLDJimm_A_A, opLDJimm_A_A, opLDJimm_A_A, opLDJimm_A_A, opLDJimm_A_A, opLDJimm_A_A, opLDJimm_A_A,
opLDJimm_A_A, opLDJimm_A_A, opLDJimm_A_A, opLDJimm_A_A, opLDJimm_A_A, opLDJimm_A_A, opLDJimm_A_A, opLDJimm_A_A,
tJPP_A_B, tJMI_A_B, opJDR_A_B, opJLT_A_B, opJEQ_A_B, opJNC_A_B, opJA0_A_B, opNOP_A_B,
opJMP_A_A, tJMI_A_A, opJDR_A_A, opJLT_A_A, opJEQ_A_A, opJNC_A_A, opJA0_A_A, opNOP_A_A,
opADDdir_A_AA, opADDdir_A_AA, opADDdir_A_AA, opADDdir_A_AA, opADDdir_A_AA, opADDdir_A_AA, opADDdir_A_AA, opADDdir_A_AA,
opADDdir_A_AA, opADDdir_A_AA, opADDdir_A_AA, opADDdir_A_AA, opADDdir_A_AA, opADDdir_A_AA, opADDdir_A_AA, opADDdir_A_AA,
opSUBdir_A_AA, opSUBdir_A_AA, opSUBdir_A_AA, opSUBdir_A_AA, opSUBdir_A_AA, opSUBdir_A_AA, opSUBdir_A_AA, opSUBdir_A_AA,
opSUBdir_A_AA, opSUBdir_A_AA, opSUBdir_A_AA, opSUBdir_A_AA, opSUBdir_A_AA, opSUBdir_A_AA, opSUBdir_A_AA, opSUBdir_A_AA,
opLDPimm_A_A, opLDPimm_A_A, opLDPimm_A_A, opLDPimm_A_A, opLDPimm_A_A, opLDPimm_A_A, opLDPimm_A_A, opLDPimm_A_A,
opLDPimm_A_A, opLDPimm_A_A, opLDPimm_A_A, opLDPimm_A_A, opLDPimm_A_A, opLDPimm_A_A, opLDPimm_A_A, opLDPimm_A_A,
tOUT_A_A, tOUT_A_A, tOUT_A_A, tOUT_A_A, tOUT_A_A, tOUT_A_A, tOUT_A_A, tOUT_A_A,
tOUT_A_A, tOUT_A_A, tOUT_A_A, tOUT_A_A, tOUT_A_A, tOUT_A_A, tOUT_A_A, tOUT_A_A,
opLDAdir_A_AA, opLDAdir_A_AA, opLDAdir_A_AA, opLDAdir_A_AA, opLDAdir_A_AA, opLDAdir_A_AA, opLDAdir_A_AA, opLDAdir_A_AA,
opLDAdir_A_AA, opLDAdir_A_AA, opLDAdir_A_AA, opLDAdir_A_AA, opLDAdir_A_AA, opLDAdir_A_AA, opLDAdir_A_AA, opLDAdir_A_AA,
opCMPdir_A_AA, opCMPdir_A_AA, opCMPdir_A_AA, opCMPdir_A_AA, opCMPdir_A_AA, opCMPdir_A_AA, opCMPdir_A_AA, opCMPdir_A_AA,
opCMPdir_A_AA, opCMPdir_A_AA, opCMPdir_A_AA, opCMPdir_A_AA, opCMPdir_A_AA, opCMPdir_A_AA, opCMPdir_A_AA, opCMPdir_A_AA,
opLDIdir_A_A, opLDIdir_A_A, opLDIdir_A_A, opLDIdir_A_A, opLDIdir_A_A, opLDIdir_A_A, opLDIdir_A_A, opLDIdir_A_A,
opLDIdir_A_A, opLDIdir_A_A, opLDIdir_A_A, opLDIdir_A_A, opLDIdir_A_A, opLDIdir_A_A, opLDIdir_A_A, opLDIdir_A_A,
opSTAdir_A_A, opSTAdir_A_A, opSTAdir_A_A, opSTAdir_A_A, opSTAdir_A_A, opSTAdir_A_A, opSTAdir_A_A, opSTAdir_A_A,
opSTAdir_A_A, opSTAdir_A_A, opSTAdir_A_A, opSTAdir_A_A, opSTAdir_A_A, opSTAdir_A_A, opSTAdir_A_A, opSTAdir_A_A,
opVDR_A_A, opLDJirg_A_A, opXLT_A_AA, opMULirg_A_AA, opLLT_A_AA, opWAI_A_A, opSTAirg_A_A, opADDirg_A_AA,
opSUBirg_A_AA, opANDirg_A_AA, opLDAirg_A_AA, opLSRe_A_AA, opLSLe_A_AA, opASRe_A_AA, opASRDe_A_AA, opLSLDe_A_AA,
opVIN_A_A, opLDJirg_A_A, opXLT_A_AA, opMULirg_A_AA, opLLT_A_AA, opWAI_A_A, opSTAirg_A_A, opAWDirg_A_AA,
opSUBirg_A_AA, opANDirg_A_AA, opLDAirg_A_AA, opLSRf_A_AA, opLSLf_A_AA, opASRf_A_AA, opASRDf_A_AA, opLSLDf_A_AA
},
{
/* opcode table AA -- Use this table if the last opcode was an ACC
* related opcode. Translation:
* Any ACC related routine will use A-reg and remain in OpCodeTblAA
* Any B flip/flop instructions will jump to opCodeTblB
* All other instructions will jump to opCodeTblA
* JMI will use the sign of acc_old
*/
opLDAimm_AA_AA, opLDAimm_AA_AA, opLDAimm_AA_AA, opLDAimm_AA_AA, opLDAimm_AA_AA, opLDAimm_AA_AA, opLDAimm_AA_AA, opLDAimm_AA_AA,
opLDAimm_AA_AA, opLDAimm_AA_AA, opLDAimm_AA_AA, opLDAimm_AA_AA, opLDAimm_AA_AA, opLDAimm_AA_AA, opLDAimm_AA_AA, opLDAimm_AA_AA,
opINP_AA_AA, opINP_AA_AA, opINP_AA_AA, opINP_AA_AA, opINP_AA_AA, opINP_AA_AA, opINP_AA_AA, opINP_AA_AA,
opINP_AA_AA, opINP_AA_AA, opINP_AA_AA, opINP_AA_AA, opINP_AA_AA, opINP_AA_AA, opINP_AA_AA, opINP_AA_AA,
opADDimmX_AA_AA,opADDimm_AA_AA, opADDimm_AA_AA, opADDimm_AA_AA, opADDimm_AA_AA, opADDimm_AA_AA, opADDimm_AA_AA, opADDimm_AA_AA,
opADDimm_AA_AA, opADDimm_AA_AA, opADDimm_AA_AA, opADDimm_AA_AA, opADDimm_AA_AA, opADDimm_AA_AA, opADDimm_AA_AA, opADDimm_AA_AA,
opSUBimmX_AA_AA,opSUBimm_AA_AA, opSUBimm_AA_AA, opSUBimm_AA_AA, opSUBimm_AA_AA, opSUBimm_AA_AA, opSUBimm_AA_AA, opSUBimm_AA_AA,
opSUBimm_AA_AA, opSUBimm_AA_AA, opSUBimm_AA_AA, opSUBimm_AA_AA, opSUBimm_AA_AA, opSUBimm_AA_AA, opSUBimm_AA_AA, opSUBimm_AA_AA,
opLDJimm_AA_A, opLDJimm_AA_A, opLDJimm_AA_A, opLDJimm_AA_A, opLDJimm_AA_A, opLDJimm_AA_A, opLDJimm_AA_A, opLDJimm_AA_A,
opLDJimm_AA_A, opLDJimm_AA_A, opLDJimm_AA_A, opLDJimm_AA_A, opLDJimm_AA_A, opLDJimm_AA_A, opLDJimm_AA_A, opLDJimm_AA_A,
tJPP_AA_B, tJMI_AA_B, opJDR_AA_B, opJLT_AA_B, opJEQ_AA_B, opJNC_AA_B, opJA0_AA_B, opNOP_AA_B,
opJMP_AA_A, tJMI_AA_A, opJDR_AA_A, opJLT_AA_A, opJEQ_AA_A, opJNC_AA_A, opJA0_AA_A, opNOP_AA_A,
opADDdir_AA_AA, opADDdir_AA_AA, opADDdir_AA_AA, opADDdir_AA_AA, opADDdir_AA_AA, opADDdir_AA_AA, opADDdir_AA_AA, opADDdir_AA_AA,
opADDdir_AA_AA, opADDdir_AA_AA, opADDdir_AA_AA, opADDdir_AA_AA, opADDdir_AA_AA, opADDdir_AA_AA, opADDdir_AA_AA, opADDdir_AA_AA,
opSUBdir_AA_AA, opSUBdir_AA_AA, opSUBdir_AA_AA, opSUBdir_AA_AA, opSUBdir_AA_AA, opSUBdir_AA_AA, opSUBdir_AA_AA, opSUBdir_AA_AA,
opSUBdir_AA_AA, opSUBdir_AA_AA, opSUBdir_AA_AA, opSUBdir_AA_AA, opSUBdir_AA_AA, opSUBdir_AA_AA, opSUBdir_AA_AA, opSUBdir_AA_AA,
opLDPimm_AA_A, opLDPimm_AA_A, opLDPimm_AA_A, opLDPimm_AA_A, opLDPimm_AA_A, opLDPimm_AA_A, opLDPimm_AA_A, opLDPimm_AA_A,
opLDPimm_AA_A, opLDPimm_AA_A, opLDPimm_AA_A, opLDPimm_AA_A, opLDPimm_AA_A, opLDPimm_AA_A, opLDPimm_AA_A, opLDPimm_AA_A,
tOUT_AA_A, tOUT_AA_A, tOUT_AA_A, tOUT_AA_A, tOUT_AA_A, tOUT_AA_A, tOUT_AA_A, tOUT_AA_A,
tOUT_AA_A, tOUT_AA_A, tOUT_AA_A, tOUT_AA_A, tOUT_AA_A, tOUT_AA_A, tOUT_AA_A, tOUT_AA_A,
opLDAdir_AA_AA, opLDAdir_AA_AA, opLDAdir_AA_AA, opLDAdir_AA_AA, opLDAdir_AA_AA, opLDAdir_AA_AA, opLDAdir_AA_AA, opLDAdir_AA_AA,
opLDAdir_AA_AA, opLDAdir_AA_AA, opLDAdir_AA_AA, opLDAdir_AA_AA, opLDAdir_AA_AA, opLDAdir_AA_AA, opLDAdir_AA_AA, opLDAdir_AA_AA,
opCMPdir_AA_AA, opCMPdir_AA_AA, opCMPdir_AA_AA, opCMPdir_AA_AA, opCMPdir_AA_AA, opCMPdir_AA_AA, opCMPdir_AA_AA, opCMPdir_AA_AA,
opCMPdir_AA_AA, opCMPdir_AA_AA, opCMPdir_AA_AA, opCMPdir_AA_AA, opCMPdir_AA_AA, opCMPdir_AA_AA, opCMPdir_AA_AA, opCMPdir_AA_AA,
opLDIdir_AA_A, opLDIdir_AA_A, opLDIdir_AA_A, opLDIdir_AA_A, opLDIdir_AA_A, opLDIdir_AA_A, opLDIdir_AA_A, opLDIdir_AA_A,
opLDIdir_AA_A, opLDIdir_AA_A, opLDIdir_AA_A, opLDIdir_AA_A, opLDIdir_AA_A, opLDIdir_AA_A, opLDIdir_AA_A, opLDIdir_AA_A,
opSTAdir_AA_A, opSTAdir_AA_A, opSTAdir_AA_A, opSTAdir_AA_A, opSTAdir_AA_A, opSTAdir_AA_A, opSTAdir_AA_A, opSTAdir_AA_A,
opSTAdir_AA_A, opSTAdir_AA_A, opSTAdir_AA_A, opSTAdir_AA_A, opSTAdir_AA_A, opSTAdir_AA_A, opSTAdir_AA_A, opSTAdir_AA_A,
opVDR_AA_A, opLDJirg_AA_A, opXLT_AA_AA, opMULirg_AA_AA, opLLT_AA_AA, opWAI_AA_A, opSTAirg_AA_A, opADDirg_AA_AA,
opSUBirg_AA_AA, opANDirg_AA_AA, opLDAirg_AA_AA, opLSRe_AA_AA, opLSLe_AA_AA, opASRe_AA_AA, opASRDe_AA_AA, opLSLDe_AA_AA,
opVIN_AA_A, opLDJirg_AA_A, opXLT_AA_AA, opMULirg_AA_AA, opLLT_AA_AA, opWAI_AA_A, opSTAirg_AA_A, opAWDirg_AA_AA,
opSUBirg_AA_AA, opANDirg_AA_AA, opLDAirg_AA_AA, opLSRf_AA_AA, opLSLf_AA_AA, opASRf_AA_AA, opASRDf_AA_AA, opLSLDf_AA_AA
},
{
/* opcode table B -- use this table if the last opcode was a B-reg flip/flop
* Translation:
* Any ACC related routine uses B-reg, and goes to opCodeTblAA
* All other instructions will jump to table opCodeTblBB (including
* B flip/flop related instructions)
* JMI will use current sign of the A-reg
*/
opLDAimm_B_AA, opLDAimm_B_AA, opLDAimm_B_AA, opLDAimm_B_AA, opLDAimm_B_AA, opLDAimm_B_AA, opLDAimm_B_AA, opLDAimm_B_AA,
opLDAimm_B_AA, opLDAimm_B_AA, opLDAimm_B_AA, opLDAimm_B_AA, opLDAimm_B_AA, opLDAimm_B_AA, opLDAimm_B_AA, opLDAimm_B_AA,
opINP_B_AA, opINP_B_AA, opINP_B_AA, opINP_B_AA, opINP_B_AA, opINP_B_AA, opINP_B_AA, opINP_B_AA,
opINP_B_AA, opINP_B_AA, opINP_B_AA, opINP_B_AA, opINP_B_AA, opINP_B_AA, opINP_B_AA, opINP_B_AA,
opADDimmX_B_AA,opADDimm_B_AA, opADDimm_B_AA, opADDimm_B_AA, opADDimm_B_AA, opADDimm_B_AA, opADDimm_B_AA, opADDimm_B_AA,
opADDimm_B_AA, opADDimm_B_AA, opADDimm_B_AA, opADDimm_B_AA, opADDimm_B_AA, opADDimm_B_AA, opADDimm_B_AA, opADDimm_B_AA,
opSUBimmX_B_AA,opSUBimm_B_AA, opSUBimm_B_AA, opSUBimm_B_AA, opSUBimm_B_AA, opSUBimm_B_AA, opSUBimm_B_AA, opSUBimm_B_AA,
opSUBimm_B_AA, opSUBimm_B_AA, opSUBimm_B_AA, opSUBimm_B_AA, opSUBimm_B_AA, opSUBimm_B_AA, opSUBimm_B_AA, opSUBimm_B_AA,
opLDJimm_B_BB, opLDJimm_B_BB, opLDJimm_B_BB, opLDJimm_B_BB, opLDJimm_B_BB, opLDJimm_B_BB, opLDJimm_B_BB, opLDJimm_B_BB,
opLDJimm_B_BB, opLDJimm_B_BB, opLDJimm_B_BB, opLDJimm_B_BB, opLDJimm_B_BB, opLDJimm_B_BB, opLDJimm_B_BB, opLDJimm_B_BB,
tJPP_B_BB, tJMI_B_BB1, opJDR_B_BB, opJLT_B_BB, opJEQ_B_BB, opJNC_B_BB, opJA0_B_BB, opNOP_B_BB,
opJMP_B_BB, tJMI_B_BB2, opJDR_B_BB, opJLT_B_BB, opJEQ_B_BB, opJNC_B_BB, opJA0_B_BB, opNOP_B_BB,
opADDdir_B_AA, opADDdir_B_AA, opADDdir_B_AA, opADDdir_B_AA, opADDdir_B_AA, opADDdir_B_AA, opADDdir_B_AA, opADDdir_B_AA,
opADDdir_B_AA, opADDdir_B_AA, opADDdir_B_AA, opADDdir_B_AA, opADDdir_B_AA, opADDdir_B_AA, opADDdir_B_AA, opADDdir_B_AA,
opSUBdir_B_AA, opSUBdir_B_AA, opSUBdir_B_AA, opSUBdir_B_AA, opSUBdir_B_AA, opSUBdir_B_AA, opSUBdir_B_AA, opSUBdir_B_AA,
opSUBdir_B_AA, opSUBdir_B_AA, opSUBdir_B_AA, opSUBdir_B_AA, opSUBdir_B_AA, opSUBdir_B_AA, opSUBdir_B_AA, opSUBdir_B_AA,
opLDPimm_B_BB, opLDPimm_B_BB, opLDPimm_B_BB, opLDPimm_B_BB, opLDPimm_B_BB, opLDPimm_B_BB, opLDPimm_B_BB, opLDPimm_B_BB,
opLDPimm_B_BB, opLDPimm_B_BB, opLDPimm_B_BB, opLDPimm_B_BB, opLDPimm_B_BB, opLDPimm_B_BB, opLDPimm_B_BB, opLDPimm_B_BB,
tOUT_B_BB, tOUT_B_BB, tOUT_B_BB, tOUT_B_BB, tOUT_B_BB, tOUT_B_BB, tOUT_B_BB, tOUT_B_BB,
tOUT_B_BB, tOUT_B_BB, tOUT_B_BB, tOUT_B_BB, tOUT_B_BB, tOUT_B_BB, tOUT_B_BB, tOUT_B_BB,
opLDAdir_B_AA, opLDAdir_B_AA, opLDAdir_B_AA, opLDAdir_B_AA, opLDAdir_B_AA, opLDAdir_B_AA, opLDAdir_B_AA, opLDAdir_B_AA,
opLDAdir_B_AA, opLDAdir_B_AA, opLDAdir_B_AA, opLDAdir_B_AA, opLDAdir_B_AA, opLDAdir_B_AA, opLDAdir_B_AA, opLDAdir_B_AA,
opCMPdir_B_AA, opCMPdir_B_AA, opCMPdir_B_AA, opCMPdir_B_AA, opCMPdir_B_AA, opCMPdir_B_AA, opCMPdir_B_AA, opCMPdir_B_AA,
opCMPdir_B_AA, opCMPdir_B_AA, opCMPdir_B_AA, opCMPdir_B_AA, opCMPdir_B_AA, opCMPdir_B_AA, opCMPdir_B_AA, opCMPdir_B_AA,
opLDIdir_B_BB, opLDIdir_B_BB, opLDIdir_B_BB, opLDIdir_B_BB, opLDIdir_B_BB, opLDIdir_B_BB, opLDIdir_B_BB, opLDIdir_B_BB,
opLDIdir_B_BB, opLDIdir_B_BB, opLDIdir_B_BB, opLDIdir_B_BB, opLDIdir_B_BB, opLDIdir_B_BB, opLDIdir_B_BB, opLDIdir_B_BB,
opSTAdir_B_BB, opSTAdir_B_BB, opSTAdir_B_BB, opSTAdir_B_BB, opSTAdir_B_BB, opSTAdir_B_BB, opSTAdir_B_BB, opSTAdir_B_BB,
opSTAdir_B_BB, opSTAdir_B_BB, opSTAdir_B_BB, opSTAdir_B_BB, opSTAdir_B_BB, opSTAdir_B_BB, opSTAdir_B_BB, opSTAdir_B_BB,
opVDR_B_BB, opLDJirg_B_BB, opXLT_B_AA, opMULirg_B_AA, opLLT_B_AA, opWAI_B_BB, opSTAirg_B_BB, opADDirg_B_AA,
opSUBirg_B_AA, opANDirg_B_AA, opLDAirg_B_AA, opLSRe_B_AA, opLSLe_B_AA, opASRe_B_AA, opASRDe_B_AA, opLSLDe_B_AA,
opVIN_B_BB, opLDJirg_B_BB, opXLT_B_AA, opMULirg_B_AA, opLLT_B_AA, opWAI_B_BB, opSTAirg_B_BB, opAWDirg_B_AA,
opSUBirg_B_AA, opANDirg_B_AA, opLDAirg_B_AA, opLSRf_B_AA, opLSLf_B_AA, opASRf_B_AA, opASRDf_B_AA, opLSLDf_B_AA,
},
{
/* opcode table BB -- use this table if the last opcode was not an ACC
* related opcode, but instruction before that was a B-flip/flop instruction.
* Translation:
* Any ACC related routine will use A-reg and go to opCodeTblAA
* Any B flip/flop instructions will jump to opCodeTblB
* All other instructions will jump to table opCodeTblA
* JMI will use the current state of the B-reg
*/
opLDAimm_BB_AA, opLDAimm_BB_AA, opLDAimm_BB_AA, opLDAimm_BB_AA, opLDAimm_BB_AA, opLDAimm_BB_AA, opLDAimm_BB_AA, opLDAimm_BB_AA,
opLDAimm_BB_AA, opLDAimm_BB_AA, opLDAimm_BB_AA, opLDAimm_BB_AA, opLDAimm_BB_AA, opLDAimm_BB_AA, opLDAimm_BB_AA, opLDAimm_BB_AA,
opINP_BB_AA, opINP_BB_AA, opINP_BB_AA, opINP_BB_AA, opINP_BB_AA, opINP_BB_AA, opINP_BB_AA, opINP_BB_AA,
opINP_BB_AA, opINP_BB_AA, opINP_BB_AA, opINP_BB_AA, opINP_BB_AA, opINP_BB_AA, opINP_BB_AA, opINP_BB_AA,
opADDimmX_BB_AA,opADDimm_BB_AA, opADDimm_BB_AA, opADDimm_BB_AA, opADDimm_BB_AA, opADDimm_BB_AA, opADDimm_BB_AA, opADDimm_BB_AA,
opADDimm_BB_AA, opADDimm_BB_AA, opADDimm_BB_AA, opADDimm_BB_AA, opADDimm_BB_AA, opADDimm_BB_AA, opADDimm_BB_AA, opADDimm_BB_AA,
opSUBimmX_BB_AA,opSUBimm_BB_AA, opSUBimm_BB_AA, opSUBimm_BB_AA, opSUBimm_BB_AA, opSUBimm_BB_AA, opSUBimm_BB_AA, opSUBimm_BB_AA,
opSUBimm_BB_AA, opSUBimm_BB_AA, opSUBimm_BB_AA, opSUBimm_BB_AA, opSUBimm_BB_AA, opSUBimm_BB_AA, opSUBimm_BB_AA, opSUBimm_BB_AA,
opLDJimm_BB_A, opLDJimm_BB_A, opLDJimm_BB_A, opLDJimm_BB_A, opLDJimm_BB_A, opLDJimm_BB_A, opLDJimm_BB_A, opLDJimm_BB_A,
opLDJimm_BB_A, opLDJimm_BB_A, opLDJimm_BB_A, opLDJimm_BB_A, opLDJimm_BB_A, opLDJimm_BB_A, opLDJimm_BB_A, opLDJimm_BB_A,
tJPP_BB_B, tJMI_BB_B, opJDR_BB_B, opJLT_BB_B, opJEQ_BB_B, opJNC_BB_B, opJA0_BB_B, opNOP_BB_B,
opJMP_BB_A, tJMI_BB_A, opJDR_BB_A, opJLT_BB_A, opJEQ_BB_A, opJNC_BB_A, opJA0_BB_A, opNOP_BB_A,
opADDdir_BB_AA, opADDdir_BB_AA, opADDdir_BB_AA, opADDdir_BB_AA, opADDdir_BB_AA, opADDdir_BB_AA, opADDdir_BB_AA, opADDdir_BB_AA,
opADDdir_BB_AA, opADDdir_BB_AA, opADDdir_BB_AA, opADDdir_BB_AA, opADDdir_BB_AA, opADDdir_BB_AA, opADDdir_BB_AA, opADDdir_BB_AA,
opSUBdir_BB_AA, opSUBdir_BB_AA, opSUBdir_BB_AA, opSUBdir_BB_AA, opSUBdir_BB_AA, opSUBdir_BB_AA, opSUBdir_BB_AA, opSUBdir_BB_AA,
opSUBdir_BB_AA, opSUBdir_BB_AA, opSUBdir_BB_AA, opSUBdir_BB_AA, opSUBdir_BB_AA, opSUBdir_BB_AA, opSUBdir_BB_AA, opSUBdir_BB_AA,
opLDPimm_BB_A, opLDPimm_BB_A, opLDPimm_BB_A, opLDPimm_BB_A, opLDPimm_BB_A, opLDPimm_BB_A, opLDPimm_BB_A, opLDPimm_BB_A,
opLDPimm_BB_A, opLDPimm_BB_A, opLDPimm_BB_A, opLDPimm_BB_A, opLDPimm_BB_A, opLDPimm_BB_A, opLDPimm_BB_A, opLDPimm_BB_A,
tOUT_BB_A, tOUT_BB_A, tOUT_BB_A, tOUT_BB_A, tOUT_BB_A, tOUT_BB_A, tOUT_BB_A, tOUT_BB_A,
tOUT_BB_A, tOUT_BB_A, tOUT_BB_A, tOUT_BB_A, tOUT_BB_A, tOUT_BB_A, tOUT_BB_A, tOUT_BB_A,
opLDAdir_BB_AA, opLDAdir_BB_AA, opLDAdir_BB_AA, opLDAdir_BB_AA, opLDAdir_BB_AA, opLDAdir_BB_AA, opLDAdir_BB_AA, opLDAdir_BB_AA,
opLDAdir_BB_AA, opLDAdir_BB_AA, opLDAdir_BB_AA, opLDAdir_BB_AA, opLDAdir_BB_AA, opLDAdir_BB_AA, opLDAdir_BB_AA, opLDAdir_BB_AA,
opCMPdir_BB_AA, opCMPdir_BB_AA, opCMPdir_BB_AA, opCMPdir_BB_AA, opCMPdir_BB_AA, opCMPdir_BB_AA, opCMPdir_BB_AA, opCMPdir_BB_AA,
opCMPdir_BB_AA, opCMPdir_BB_AA, opCMPdir_BB_AA, opCMPdir_BB_AA, opCMPdir_BB_AA, opCMPdir_BB_AA, opCMPdir_BB_AA, opCMPdir_BB_AA,
opLDIdir_BB_A, opLDIdir_BB_A, opLDIdir_BB_A, opLDIdir_BB_A, opLDIdir_BB_A, opLDIdir_BB_A, opLDIdir_BB_A, opLDIdir_BB_A,
opLDIdir_BB_A, opLDIdir_BB_A, opLDIdir_BB_A, opLDIdir_BB_A, opLDIdir_BB_A, opLDIdir_BB_A, opLDIdir_BB_A, opLDIdir_BB_A,
opSTAdir_BB_A, opSTAdir_BB_A, opSTAdir_BB_A, opSTAdir_BB_A, opSTAdir_BB_A, opSTAdir_BB_A, opSTAdir_BB_A, opSTAdir_BB_A,
opSTAdir_BB_A, opSTAdir_BB_A, opSTAdir_BB_A, opSTAdir_BB_A, opSTAdir_BB_A, opSTAdir_BB_A, opSTAdir_BB_A, opSTAdir_BB_A,
opVDR_BB_A, opLDJirg_BB_A, opXLT_BB_AA, opMULirg_BB_AA, opLLT_BB_AA, opWAI_BB_A, opSTAirg_BB_A, opADDirg_BB_AA,
opSUBirg_BB_AA, opANDirg_BB_AA, opLDAirg_BB_AA, opLSRe_BB_AA, opLSLe_BB_AA, opASRe_BB_AA, opASRDe_BB_AA, opLSLDe_BB_AA,
opVIN_BB_A, opLDJirg_BB_A, opXLT_BB_AA, opMULirg_BB_AA, opLLT_BB_AA, opWAI_BB_A, opSTAirg_BB_A, opAWDirg_BB_AA,
opSUBirg_BB_AA, opANDirg_BB_AA, opLDAirg_BB_AA, opLSRf_BB_AA, opLSLf_BB_AA, opASRf_BB_AA, opASRDf_BB_AA, opLSLDf_BB_AA,
}
};