public Opcode(string mneu, ushort length, int cycles, OpcodeHandler handler, List <string> args) { Length = length; EffectiveLength = Length; Mneumonic = mneu; Handler = handler; Args = args; Cycles = cycles; }
public TCPClient(Client client, OpcodeHandler handler) { this.handler = handler; this.client = client; handler.RegisterHandler(); }
public Opcode(OpcodeAttribute attr, OpcodeHandler handler) { this.attr = attr; this.handler = handler; }
void InstallOpcodes() { Opcodes = new OpcodeHandler[0x100]; ushort EA; Opcodes[0x65] = delegate { EA = aZPG(); clk(3); iADC(Mem[EA]); }; Opcodes[0x75] = delegate { EA = aZPX(); clk(4); iADC(Mem[EA]); }; Opcodes[0x61] = delegate { EA = aIDX(); clk(6); iADC(Mem[EA]); }; Opcodes[0x71] = delegate { EA = aIDY(1); clk(5); iADC(Mem[EA]); }; Opcodes[0x79] = delegate { EA = aABY(1); clk(4); iADC(Mem[EA]); }; Opcodes[0x6d] = delegate { EA = aABS(); clk(4); iADC(Mem[EA]); }; Opcodes[0x7d] = delegate { EA = aABX(1); clk(4); iADC(Mem[EA]); }; Opcodes[0x69] = delegate { /*aIMM*/ clk(2); iADC(Mem[PC++]); }; Opcodes[0x25] = delegate { EA = aZPG(); clk(3); iAND(Mem[EA]); }; // may be 2 clk Opcodes[0x35] = delegate { EA = aZPX(); clk(4); iAND(Mem[EA]); }; // may be 3 clk Opcodes[0x21] = delegate { EA = aIDX(); clk(6); iAND(Mem[EA]); }; Opcodes[0x31] = delegate { EA = aIDY(1); clk(5); iAND(Mem[EA]); }; Opcodes[0x2d] = delegate { EA = aABS(); clk(4); iAND(Mem[EA]); }; Opcodes[0x39] = delegate { EA = aABY(1); clk(4); iAND(Mem[EA]); }; Opcodes[0x3d] = delegate { EA = aABX(1); clk(4); iAND(Mem[EA]); }; Opcodes[0x29] = delegate { /*aIMM*/ clk(2); iAND(Mem[PC++]); }; Opcodes[0x06] = delegate { EA = aZPG(); clk(5); Mem[EA] = iASL(Mem[EA]); }; Opcodes[0x16] = delegate { EA = aZPX(); clk(6); Mem[EA] = iASL(Mem[EA]); }; Opcodes[0x0e] = delegate { EA = aABS(); clk(6); Mem[EA] = iASL(Mem[EA]); }; Opcodes[0x1e] = delegate { EA = aABX(0); clk(7); Mem[EA] = iASL(Mem[EA]); }; Opcodes[0x0a] = delegate { /*aACC*/ clk(2); A = iASL(A); }; Opcodes[0x24] = delegate { EA = aZPG(); clk(3); iBIT(Mem[EA]); }; Opcodes[0x2c] = delegate { EA = aABS(); clk(4); iBIT(Mem[EA]); }; Opcodes[0x10] = delegate { EA = aREL(); clk(2); br(!fN, EA); /* BPL */ }; Opcodes[0x30] = delegate { EA = aREL(); clk(2); br(fN, EA); /* BMI */ }; Opcodes[0x50] = delegate { EA = aREL(); clk(2); br(!fV, EA); /* BVC */ }; Opcodes[0x70] = delegate { EA = aREL(); clk(2); br(fV, EA); /* BVS */ }; Opcodes[0x90] = delegate { EA = aREL(); clk(2); br(!fC, EA); /* BCC */ }; Opcodes[0xb0] = delegate { EA = aREL(); clk(2); br(fC, EA); /* BCS */ }; Opcodes[0xd0] = delegate { EA = aREL(); clk(2); br(!fZ, EA); /* BNE */ }; Opcodes[0xf0] = delegate { EA = aREL(); clk(2); br(fZ, EA); /* BEQ */ }; Opcodes[0x00] = delegate { /*aIMP*/ clk(7); iBRK(); }; Opcodes[0x18] = delegate { /*aIMP*/ clk(2); iCLC(); }; Opcodes[0xd8] = delegate { /*aIMP*/ clk(2); iCLD(); }; Opcodes[0x58] = delegate { /*aIMP*/ clk(2); iCLI(); }; Opcodes[0xb8] = delegate { /*aIMP*/ clk(2); iCLV(); }; Opcodes[0xc5] = delegate { EA = aZPG(); clk(3); iCMP(Mem[EA]); }; Opcodes[0xd5] = delegate { EA = aZPX(); clk(4); iCMP(Mem[EA]); }; Opcodes[0xc1] = delegate { EA = aIDX(); clk(6); iCMP(Mem[EA]); }; Opcodes[0xd1] = delegate { EA = aIDY(1); clk(5); iCMP(Mem[EA]); }; Opcodes[0xcd] = delegate { EA = aABS(); clk(4); iCMP(Mem[EA]); }; Opcodes[0xdd] = delegate { EA = aABX(1); clk(4); iCMP(Mem[EA]); }; Opcodes[0xd9] = delegate { EA = aABY(1); clk(4); iCMP(Mem[EA]); }; Opcodes[0xc9] = delegate { /*aIMM*/ clk(2); iCMP(Mem[PC++]); }; Opcodes[0xe4] = delegate { EA = aZPG(); clk(3); iCPX(Mem[EA]); }; Opcodes[0xec] = delegate { EA = aABS(); clk(4); iCPX(Mem[EA]); }; Opcodes[0xe0] = delegate { /*aIMM*/ clk(2); iCPX(Mem[PC++]); }; Opcodes[0xc4] = delegate { EA = aZPG(); clk(3); iCPY(Mem[EA]); }; Opcodes[0xcc] = delegate { EA = aABS(); clk(4); iCPY(Mem[EA]); }; Opcodes[0xc0] = delegate { /*aIMM*/ clk(2); iCPY(Mem[PC++]); }; Opcodes[0xc6] = delegate { EA = aZPG(); clk(5); Mem[EA] = iDEC(Mem[EA]); }; Opcodes[0xd6] = delegate { EA = aZPX(); clk(6); Mem[EA] = iDEC(Mem[EA]); }; Opcodes[0xce] = delegate { EA = aABS(); clk(6); Mem[EA] = iDEC(Mem[EA]); }; Opcodes[0xde] = delegate { EA = aABX(0); clk(7); Mem[EA] = iDEC(Mem[EA]); }; Opcodes[0xca] = delegate { /*aIMP*/ clk(2); iDEX(); }; Opcodes[0x88] = delegate { /*aIMP*/ clk(2); iDEY(); }; Opcodes[0x45] = delegate { EA = aZPG(); clk(3); iEOR(Mem[EA]); }; Opcodes[0x55] = delegate { EA = aZPX(); clk(4); iEOR(Mem[EA]); }; Opcodes[0x41] = delegate { EA = aIDX(); clk(6); iEOR(Mem[EA]); }; Opcodes[0x51] = delegate { EA = aIDY(1); clk(5); iEOR(Mem[EA]); }; Opcodes[0x4d] = delegate { EA = aABS(); clk(4); iEOR(Mem[EA]); }; Opcodes[0x5d] = delegate { EA = aABX(1); clk(4); iEOR(Mem[EA]); }; Opcodes[0x59] = delegate { EA = aABY(1); clk(4); iEOR(Mem[EA]); }; Opcodes[0x49] = delegate { /*aIMM*/ clk(2); iEOR(Mem[PC++]); }; Opcodes[0xe6] = delegate { EA = aZPG(); clk(5); Mem[EA] = iINC(Mem[EA]); }; Opcodes[0xf6] = delegate { EA = aZPX(); clk(6); Mem[EA] = iINC(Mem[EA]); }; Opcodes[0xee] = delegate { EA = aABS(); clk(6); Mem[EA] = iINC(Mem[EA]); }; Opcodes[0xfe] = delegate { EA = aABX(0); clk(7); Mem[EA] = iINC(Mem[EA]); }; Opcodes[0xe8] = delegate { /*aIMP*/ clk(2); iINX(); }; Opcodes[0xc8] = delegate { /*aIMP*/ clk(2); iINY(); }; Opcodes[0xa5] = delegate { EA = aZPG(); clk(3); iLDA(Mem[EA]); }; Opcodes[0xb5] = delegate { EA = aZPX(); clk(4); iLDA(Mem[EA]); }; Opcodes[0xa1] = delegate { EA = aIDX(); clk(6); iLDA(Mem[EA]); }; Opcodes[0xb1] = delegate { EA = aIDY(1); clk(5); iLDA(Mem[EA]); }; Opcodes[0xad] = delegate { EA = aABS(); clk(4); iLDA(Mem[EA]); }; Opcodes[0xbd] = delegate { EA = aABX(1); clk(4); iLDA(Mem[EA]); }; Opcodes[0xb9] = delegate { EA = aABY(1); clk(4); iLDA(Mem[EA]); }; Opcodes[0xa9] = delegate { /*aIMM*/ clk(2); iLDA(Mem[PC++]); }; Opcodes[0xa6] = delegate { EA = aZPG(); clk(3); iLDX(Mem[EA]); }; Opcodes[0xb6] = delegate { EA = aZPY(); clk(4); iLDX(Mem[EA]); }; Opcodes[0xae] = delegate { EA = aABS(); clk(4); iLDX(Mem[EA]); }; Opcodes[0xbe] = delegate { EA = aABY(1); clk(4); iLDX(Mem[EA]); }; Opcodes[0xa2] = delegate { /*aIMM*/ clk(2); iLDX(Mem[PC++]); }; Opcodes[0xa4] = delegate { EA = aZPG(); clk(3); iLDY(Mem[EA]); }; Opcodes[0xb4] = delegate { EA = aZPX(); clk(4); iLDY(Mem[EA]); }; Opcodes[0xac] = delegate { EA = aABS(); clk(4); iLDY(Mem[EA]); }; Opcodes[0xbc] = delegate { EA = aABX(1); clk(4); iLDY(Mem[EA]); }; Opcodes[0xa0] = delegate { /*aIMM*/ clk(2); iLDY(Mem[PC++]); }; Opcodes[0x46] = delegate { EA = aZPG(); clk(5); Mem[EA] = iLSR(Mem[EA]); }; Opcodes[0x56] = delegate { EA = aZPX(); clk(6); Mem[EA] = iLSR(Mem[EA]); }; Opcodes[0x4e] = delegate { EA = aABS(); clk(6); Mem[EA] = iLSR(Mem[EA]); }; Opcodes[0x5e] = delegate { EA = aABX(0); clk(7); Mem[EA] = iLSR(Mem[EA]); }; Opcodes[0x4a] = delegate { /*aACC*/ clk(2); A = iLSR(A); }; Opcodes[0x4c] = delegate { EA = aABS(); clk(3); iJMP(EA); }; Opcodes[0x6c] = delegate { EA = aIND(); clk(5); iJMP(EA); }; Opcodes[0x20] = delegate { EA = aABS(); clk(6); iJSR(EA); }; Opcodes[0xea] = delegate { /*aIMP*/ clk(2); iNOP(); }; Opcodes[0x05] = delegate { EA = aZPG(); clk(3); iORA(Mem[EA]); }; // may be 2 clk Opcodes[0x15] = delegate { EA = aZPX(); clk(4); iORA(Mem[EA]); }; // may be 3 clk Opcodes[0x01] = delegate { EA = aIDX(); clk(6); iORA(Mem[EA]); }; Opcodes[0x11] = delegate { EA = aIDY(1); clk(5); iORA(Mem[EA]); }; Opcodes[0x0d] = delegate { EA = aABS(); clk(4); iORA(Mem[EA]); }; Opcodes[0x1d] = delegate { EA = aABX(1); clk(4); iORA(Mem[EA]); }; Opcodes[0x19] = delegate { EA = aABY(1); clk(4); iORA(Mem[EA]); }; Opcodes[0x09] = delegate { /*aIMM*/ clk(2); iORA(Mem[PC++]); }; Opcodes[0x48] = delegate { /*aIMP*/ clk(3); iPHA(); }; Opcodes[0x68] = delegate { /*aIMP*/ clk(4); iPLA(); }; Opcodes[0x08] = delegate { /*aIMP*/ clk(3); iPHP(); }; Opcodes[0x28] = delegate { /*aIMP*/ clk(4); iPLP(); }; Opcodes[0x26] = delegate { EA = aZPG(); clk(5); Mem[EA] = iROL(Mem[EA]); }; Opcodes[0x36] = delegate { EA = aZPX(); clk(6); Mem[EA] = iROL(Mem[EA]); }; Opcodes[0x2e] = delegate { EA = aABS(); clk(6); Mem[EA] = iROL(Mem[EA]); }; Opcodes[0x3e] = delegate { EA = aABX(0); clk(7); Mem[EA] = iROL(Mem[EA]); }; Opcodes[0x2a] = delegate { /*aACC*/ clk(2); A = iROL(A); }; Opcodes[0x66] = delegate { EA = aZPG(); clk(5); Mem[EA] = iROR(Mem[EA]); }; Opcodes[0x76] = delegate { EA = aZPX(); clk(6); Mem[EA] = iROR(Mem[EA]); }; Opcodes[0x6e] = delegate { EA = aABS(); clk(6); Mem[EA] = iROR(Mem[EA]); }; Opcodes[0x7e] = delegate { EA = aABX(0); clk(7); Mem[EA] = iROR(Mem[EA]); }; Opcodes[0x6a] = delegate { /*aACC*/ clk(2); A = iROR(A); }; Opcodes[0x40] = delegate { /*aIMP*/ clk(6); iRTI(); }; Opcodes[0x60] = delegate { /*aIMP*/ clk(6); iRTS(); }; Opcodes[0xe5] = delegate { EA = aZPG(); clk(3); iSBC(Mem[EA]); }; Opcodes[0xf5] = delegate { EA = aZPX(); clk(4); iSBC(Mem[EA]); }; Opcodes[0xe1] = delegate { EA = aIDX(); clk(6); iSBC(Mem[EA]); }; Opcodes[0xf1] = delegate { EA = aIDY(1); clk(5); iSBC(Mem[EA]); }; Opcodes[0xed] = delegate { EA = aABS(); clk(4); iSBC(Mem[EA]); }; Opcodes[0xfd] = delegate { EA = aABX(1); clk(4); iSBC(Mem[EA]); }; Opcodes[0xf9] = delegate { EA = aABY(1); clk(4); iSBC(Mem[EA]); }; Opcodes[0xe9] = delegate { /*aIMM*/ clk(2); iSBC(Mem[PC++]); }; Opcodes[0x38] = delegate { /*aIMP*/ clk(2); iSEC(); }; Opcodes[0xf8] = delegate { /*aIMP*/ clk(2); iSED(); }; Opcodes[0x78] = delegate { /*aIMP*/ clk(2); iSEI(); }; Opcodes[0x85] = delegate { EA = aZPG(); clk(3); Mem[EA] = iSTA(); }; Opcodes[0x95] = delegate { EA = aZPX(); clk(4); Mem[EA] = iSTA(); }; Opcodes[0x81] = delegate { EA = aIDX(); clk(6); Mem[EA] = iSTA(); }; Opcodes[0x91] = delegate { EA = aIDY(0); clk(6); Mem[EA] = iSTA(); }; Opcodes[0x8d] = delegate { EA = aABS(); clk(4); Mem[EA] = iSTA(); }; Opcodes[0x99] = delegate { EA = aABY(0); clk(5); Mem[EA] = iSTA(); }; Opcodes[0x9d] = delegate { EA = aABX(0); clk(5); Mem[EA] = iSTA(); }; Opcodes[0x86] = delegate { EA = aZPG(); clk(3); Mem[EA] = iSTX(); }; Opcodes[0x96] = delegate { EA = aZPY(); clk(4); Mem[EA] = iSTX(); }; Opcodes[0x8e] = delegate { EA = aABS(); clk(4); Mem[EA] = iSTX(); }; Opcodes[0x84] = delegate { EA = aZPG(); clk(3); Mem[EA] = iSTY(); }; Opcodes[0x94] = delegate { EA = aZPX(); clk(4); Mem[EA] = iSTY(); }; Opcodes[0x8c] = delegate { EA = aABS(); clk(4); Mem[EA] = iSTY(); }; Opcodes[0xaa] = delegate { /*aIMP*/ clk(2); iTAX(); }; Opcodes[0xa8] = delegate { /*aIMP*/ clk(2); iTAY(); }; Opcodes[0xba] = delegate { /*aIMP*/ clk(2); iTSX(); }; Opcodes[0x8a] = delegate { /*aIMP*/ clk(2); iTXA(); }; Opcodes[0x9a] = delegate { /*aIMP*/ clk(2); iTXS(); }; Opcodes[0x98] = delegate { /*aIMP*/ clk(2); iTYA(); }; // Illegal opcodes foreach (int opCode in new ushort[] { 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x62, 0x72, 0x92, 0xb2, 0xd2, 0xf2 }) { Opcodes[opCode] = delegate { clk(2); iKIL(); }; } Opcodes[0x3f] = delegate { EA = aABX(0); clk(4); iRLA(Mem[EA]); }; Opcodes[0xa7] = delegate { EA = aZPX(); clk(3); iLAX(Mem[EA]); }; Opcodes[0xb3] = delegate { EA = aIDY(0); clk(6); iLAX(Mem[EA]); }; Opcodes[0xef] = delegate { EA = aABS(); clk(6); iISB(Mem[EA]); }; Opcodes[0x0c] = delegate { EA = aABS(); clk(2); iNOP(); }; foreach (int opCode in new ushort[] { 0x1c, 0x3c, 0x5c, 0x7c, 0x9c, 0xdc, 0xfc }) { Opcodes[opCode] = delegate { EA = aABX(0); clk(2); iNOP(); }; } Opcodes[0x83] = delegate { EA = aIDX(); clk(6); Mem[EA] = iSAX(); }; Opcodes[0x87] = delegate { EA = aZPG(); clk(3); Mem[EA] = iSAX(); }; Opcodes[0x8f] = delegate { EA = aABS(); clk(4); Mem[EA] = iSAX(); }; Opcodes[0x97] = delegate { EA = aZPY(); clk(4); Mem[EA] = iSAX(); }; Opcodes[0xa3] = delegate { EA = aIDX(); clk(6); iLAX(Mem[EA]); }; Opcodes[0xb7] = delegate { EA = aZPY(); clk(4); iLAX(Mem[EA]); }; Opcodes[0xaf] = delegate { EA = aABS(); clk(5); iLAX(Mem[EA]); }; Opcodes[0xbf] = delegate { EA = aABY(0); clk(6); iLAX(Mem[EA]); }; Opcodes[0xff] = delegate { EA = aABX(0); clk(7); iISB(Mem[EA]); }; OpcodeHandler opNULL = () => Log("{0}:**UNKNOWN OPCODE: ${1:x2} at ${2:x4}\n", this, Mem[(ushort)(PC - 1)], PC - 1); for (var i = 0; i < Opcodes.Length; i++) { if (Opcodes[i] == null) { Opcodes[i] = opNULL; } } }
private void InstallOpcodeHandlers() { Opcodes[0x65] = new OpcodeHandler(op65); Opcodes[0x75] = new OpcodeHandler(op75); Opcodes[0x61] = new OpcodeHandler(op61); Opcodes[0x71] = new OpcodeHandler(op71); Opcodes[0x79] = new OpcodeHandler(op79); Opcodes[0x6d] = new OpcodeHandler(op6d); Opcodes[0x7d] = new OpcodeHandler(op7d); Opcodes[0x69] = new OpcodeHandler(op69); Opcodes[0x25] = new OpcodeHandler(op25); Opcodes[0x35] = new OpcodeHandler(op35); Opcodes[0x21] = new OpcodeHandler(op21); Opcodes[0x31] = new OpcodeHandler(op31); Opcodes[0x2d] = new OpcodeHandler(op2d); Opcodes[0x39] = new OpcodeHandler(op39); Opcodes[0x3d] = new OpcodeHandler(op3d); Opcodes[0x29] = new OpcodeHandler(op29); Opcodes[0x06] = new OpcodeHandler(op06); Opcodes[0x16] = new OpcodeHandler(op16); Opcodes[0x0e] = new OpcodeHandler(op0e); Opcodes[0x1e] = new OpcodeHandler(op1e); Opcodes[0x0a] = new OpcodeHandler(op0a); Opcodes[0x24] = new OpcodeHandler(op24); Opcodes[0x2c] = new OpcodeHandler(op2c); Opcodes[0x10] = new OpcodeHandler(op10); Opcodes[0x30] = new OpcodeHandler(op30); Opcodes[0x50] = new OpcodeHandler(op50); Opcodes[0x70] = new OpcodeHandler(op70); Opcodes[0x90] = new OpcodeHandler(op90); Opcodes[0xb0] = new OpcodeHandler(opb0); Opcodes[0xd0] = new OpcodeHandler(opd0); Opcodes[0xf0] = new OpcodeHandler(opf0); Opcodes[0x00] = new OpcodeHandler(op00); Opcodes[0x18] = new OpcodeHandler(op18); Opcodes[0xd8] = new OpcodeHandler(opd8); Opcodes[0x58] = new OpcodeHandler(op58); Opcodes[0xb8] = new OpcodeHandler(opb8); Opcodes[0xc5] = new OpcodeHandler(opc5); Opcodes[0xd5] = new OpcodeHandler(opd5); Opcodes[0xc1] = new OpcodeHandler(opc1); Opcodes[0xd1] = new OpcodeHandler(opd1); Opcodes[0xcd] = new OpcodeHandler(opcd); Opcodes[0xdd] = new OpcodeHandler(opdd); Opcodes[0xd9] = new OpcodeHandler(opd9); Opcodes[0xc9] = new OpcodeHandler(opc9); Opcodes[0xe4] = new OpcodeHandler(ope4); Opcodes[0xec] = new OpcodeHandler(opec); Opcodes[0xe0] = new OpcodeHandler(ope0); Opcodes[0xc4] = new OpcodeHandler(opc4); Opcodes[0xcc] = new OpcodeHandler(opcc); Opcodes[0xc0] = new OpcodeHandler(opc0); Opcodes[0xc6] = new OpcodeHandler(opc6); Opcodes[0xd6] = new OpcodeHandler(opd6); Opcodes[0xce] = new OpcodeHandler(opce); Opcodes[0xde] = new OpcodeHandler(opde); Opcodes[0xca] = new OpcodeHandler(opca); Opcodes[0x88] = new OpcodeHandler(op88); Opcodes[0x45] = new OpcodeHandler(op45); Opcodes[0x55] = new OpcodeHandler(op55); Opcodes[0x41] = new OpcodeHandler(op41); Opcodes[0x51] = new OpcodeHandler(op51); Opcodes[0x4d] = new OpcodeHandler(op4d); Opcodes[0x5d] = new OpcodeHandler(op5d); Opcodes[0x59] = new OpcodeHandler(op59); Opcodes[0x49] = new OpcodeHandler(op49); Opcodes[0xe6] = new OpcodeHandler(ope6); Opcodes[0xf6] = new OpcodeHandler(opf6); Opcodes[0xee] = new OpcodeHandler(opee); Opcodes[0xfe] = new OpcodeHandler(opfe); Opcodes[0xe8] = new OpcodeHandler(ope8); Opcodes[0xc8] = new OpcodeHandler(opc8); Opcodes[0xa5] = new OpcodeHandler(opa5); Opcodes[0xb5] = new OpcodeHandler(opb5); Opcodes[0xa1] = new OpcodeHandler(opa1); Opcodes[0xb1] = new OpcodeHandler(opb1); Opcodes[0xad] = new OpcodeHandler(opad); Opcodes[0xbd] = new OpcodeHandler(opbd); Opcodes[0xb9] = new OpcodeHandler(opb9); Opcodes[0xa9] = new OpcodeHandler(opa9); Opcodes[0xa6] = new OpcodeHandler(opa6); Opcodes[0xb6] = new OpcodeHandler(opb6); Opcodes[0xae] = new OpcodeHandler(opae); Opcodes[0xbe] = new OpcodeHandler(opbe); Opcodes[0xa2] = new OpcodeHandler(opa2); Opcodes[0xa4] = new OpcodeHandler(opa4); Opcodes[0xb4] = new OpcodeHandler(opb4); Opcodes[0xac] = new OpcodeHandler(opac); Opcodes[0xbc] = new OpcodeHandler(opbc); Opcodes[0xa0] = new OpcodeHandler(opa0); Opcodes[0x46] = new OpcodeHandler(op46); Opcodes[0x56] = new OpcodeHandler(op56); Opcodes[0x4e] = new OpcodeHandler(op4e); Opcodes[0x5e] = new OpcodeHandler(op5e); Opcodes[0x4a] = new OpcodeHandler(op4a); Opcodes[0x4c] = new OpcodeHandler(op4c); Opcodes[0x6c] = new OpcodeHandler(op6c); Opcodes[0x20] = new OpcodeHandler(op20); Opcodes[0xea] = new OpcodeHandler(opea); Opcodes[0x05] = new OpcodeHandler(op05); Opcodes[0x15] = new OpcodeHandler(op15); Opcodes[0x01] = new OpcodeHandler(op01); Opcodes[0x11] = new OpcodeHandler(op11); Opcodes[0x0d] = new OpcodeHandler(op0d); Opcodes[0x1d] = new OpcodeHandler(op1d); Opcodes[0x19] = new OpcodeHandler(op19); Opcodes[0x09] = new OpcodeHandler(op09); Opcodes[0x48] = new OpcodeHandler(op48); Opcodes[0x68] = new OpcodeHandler(op68); Opcodes[0x08] = new OpcodeHandler(op08); Opcodes[0x28] = new OpcodeHandler(op28); Opcodes[0x26] = new OpcodeHandler(op26); Opcodes[0x36] = new OpcodeHandler(op36); Opcodes[0x2e] = new OpcodeHandler(op2e); Opcodes[0x3e] = new OpcodeHandler(op3e); Opcodes[0x2a] = new OpcodeHandler(op2a); Opcodes[0x66] = new OpcodeHandler(op66); Opcodes[0x76] = new OpcodeHandler(op76); Opcodes[0x6e] = new OpcodeHandler(op6e); Opcodes[0x7e] = new OpcodeHandler(op7e); Opcodes[0x6a] = new OpcodeHandler(op6a); Opcodes[0x40] = new OpcodeHandler(op40); Opcodes[0x60] = new OpcodeHandler(op60); Opcodes[0xe5] = new OpcodeHandler(ope5); Opcodes[0xf5] = new OpcodeHandler(opf5); Opcodes[0xe1] = new OpcodeHandler(ope1); Opcodes[0xf1] = new OpcodeHandler(opf1); Opcodes[0xed] = new OpcodeHandler(oped); Opcodes[0xfd] = new OpcodeHandler(opfd); Opcodes[0xf9] = new OpcodeHandler(opf9); Opcodes[0xe9] = new OpcodeHandler(ope9); Opcodes[0x38] = new OpcodeHandler(op38); Opcodes[0xf8] = new OpcodeHandler(opf8); Opcodes[0x78] = new OpcodeHandler(op78); Opcodes[0x85] = new OpcodeHandler(op85); Opcodes[0x95] = new OpcodeHandler(op95); Opcodes[0x81] = new OpcodeHandler(op81); Opcodes[0x91] = new OpcodeHandler(op91); Opcodes[0x8d] = new OpcodeHandler(op8d); Opcodes[0x99] = new OpcodeHandler(op99); Opcodes[0x9d] = new OpcodeHandler(op9d); Opcodes[0x86] = new OpcodeHandler(op86); Opcodes[0x96] = new OpcodeHandler(op96); Opcodes[0x8e] = new OpcodeHandler(op8e); Opcodes[0x84] = new OpcodeHandler(op84); Opcodes[0x94] = new OpcodeHandler(op94); Opcodes[0x8c] = new OpcodeHandler(op8c); Opcodes[0xaa] = new OpcodeHandler(opaa); Opcodes[0xa8] = new OpcodeHandler(opa8); Opcodes[0xba] = new OpcodeHandler(opba); Opcodes[0x8a] = new OpcodeHandler(op8a); Opcodes[0x9a] = new OpcodeHandler(op9a); Opcodes[0x98] = new OpcodeHandler(op98); for (int i = 0; i < Opcodes.Length; i++) { if (Opcodes[i] == null) { Opcodes[i] = new OpcodeHandler(opXX); } } }