#ifndef OPS_H
#define OPS_H

#define NUM_OPS 79
#define LEGAL_OPS 59

char *nmem[]={"ADC","AND","ASL","ASR","BCC","BCS","BEQ","BGE","BIT","BLT",
              "BMI","BNE","BPL","BRK","BVC","BVS","CLC","CLD","CLI","CLV",
              "CMP","CPX","CPY","DEC","DEX","DEY","EOR","INC","INX","INY",
              "JMP","JSR","LDA","LDX","LDY","LSR","NOP","ORA","PHA","PHP",
              "PLA","PLP","ROL","ROR","RTI","RTS","SBC","SEC","SED","SEI",
              "STA","STX","STY","TAX","TAY","TSX","TXA","TXS","TYA","ANC",
              "ARR","ATX","AXS","AX7","AXE","DCP","ISB","JAM","LAS","LAX",
              "RLA","RRA","SAX","SLO","SRE","SXA","SYA","XEA","XAS"};

char num_args[]={1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,1,1,1,1,0,0,1,1,0,
              0,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,
              1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1};

short imp[79]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,-1,-1,24,216,88,184,
            -1,-1,-1,-1,202,136,-1,-1,232,200,-1,-1,-1,-1,-1,-1,234,-1,
            72,8,104,40,-1,-1,64,96,-1,56,248,120,-1,-1,-1,170,168,186,
            138,154,152,-1,-1,-1,-1,-1,-1,-1,-1,2,-1,-1,-1,-1,-1,-1,-1,
            -1,-1,-1,-1};

short acc[79]={-1,-1,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,74,-1,-1,-1,-1,
            -1,-1,42,106,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};

short imm[79]={105,41,-1,75,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            201,224,192,-1,-1,-1,73,-1,-1,-1,-1,-1,169,162,160,-1,-1,9,
            -1,-1,-1,-1,-1,-1,-1,-1,233,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            -1,11,107,171,203,-1,139,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            171,-1};

/* added zpg jmp offset 30, ($4C) -- mws 11/10/99 */
short zpg[79]={101,37,6,-1,-1,-1,-1,-1,36,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            197,228,196,198,-1,-1,69,230,-1,-1,76,-1,165,166,164,70,-1,
            5,-1,-1,-1,-1,38,102,-1,-1,229,-1,-1,-1,133,134,132,-1,-1,-1,
            -1,-1,-1,-1,-1,-1,-1,-1,-1,199,231,-1,-1,167,39,103,135,7,71,
            -1,-1,-1,-1};

short z_x[79]={117,53,22,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            213,-1,-1,214,-1,-1,85,246,-1,-1,-1,-1,181,-1,180,86,-1,21,
            -1,-1,-1,-1,54,118,-1,-1,245,-1,-1,-1,149,-1,148,-1,-1,-1,-1,
            -1,-1,-1,-1,-1,-1,-1,-1,215,247,-1,-1,-1,55,119,-1,23,87,-1,
            -1,-1,-1};

/* Added 'illegal' sta/lda z,y => sta/lda a,y */
short z_y[79]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,185,182,-1,-1,-1,-1,-1,-1,
            -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,153,150,-1,-1,-1,-1,-1,-1,-1,-1,
            -1,-1,-1,-1,-1,-1,-1,-1,-1,183,-1,-1,151,-1,-1,-1,-1,-1,-1};

short i_x[79]={97,33,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            193,-1,-1,-1,-1,-1,65,-1,-1,-1,-1,-1,161,-1,-1,-1,-1,1,-1,-1,
            -1,-1,-1,-1,-1,-1,225,-1,-1,-1,129,-1,-1,-1,-1,-1,-1,-1,-1,
            -1,-1,-1,-1,-1,-1,195,227,-1,-1,163,35,99,131,3,67,-1,-1,-1,
            -1};

short i_y[79]={113,49,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            209,-1,-1,-1,-1,-1,81,-1,-1,-1,-1,-1,177,-1,-1,-1,-1,17,-1,
            -1,-1,-1,-1,-1,-1,-1,241,-1,-1,-1,145,-1,-1,-1,-1,-1,-1,-1,
            -1,-1,-1,-1,-1,147,-1,211,243,-1,-1,179,51,115,-1,19,83,-1,
            -1,-1,-1};

short a_x[79]={125,61,30,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            221,-1,-1,222,-1,-1,93,254,-1,-1,-1,-1,189,-1,188,94,-1,29,
            -1,-1,-1,-1,62,126,-1,-1,253,-1,-1,-1,157,-1,-1,-1,-1,-1,-1,
            -1,-1,-1,-1,-1,-1,-1,-1,223,255,-1,-1,-1,63,127,-1,31,95,-1,
            156,-1,-1};

short a_y[79]={121,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            217,-1,-1,-1,-1,-1,89,-1,-1,-1,-1,-1,185,190,-1,-1,-1,25,-1,
            -1,-1,-1,-1,-1,-1,-1,249,-1,-1,-1,153,-1,-1,-1,-1,-1,-1,-1,
            -1,-1,-1,-1,-1,159,-1,219,251,-1,187,191,59,123,-1,27,91,158,
            -1,-1,155};

short abl[79]={109,45,14,-1,-1,-1,-1,-1,44,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            205,236,204,206,-1,-1,77,238,-1,-1,76,32,173,174,172,78,-1,
            13,-1,-1,-1,-1,46,110,-1,-1,237,-1,-1,-1,141,142,140,-1,-1,
            -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,207,239,-1,-1,175,47,111,143,
            15,79,-1,-1,-1,-1};

short ind[79]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,108,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};

short rel[79]={-1,-1,-1,-1,144,176,240,176,-1,144,48,208,16,-1,80,112,-1,-1,
            -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
            -1};

#endif
