// chip-specific support functions // // may override function definitions made previously chipname='z80'; grChipSize=5000; grChipOffsetX=150; grChipOffsetY=0; grCanvasSize=5000; grMaxZoom=24; ngnd = nodenames['vss']; npwr = nodenames['vcc']; nodenamereset = '_reset'; presetLogLists=[ ['cycle',], ['ab', 'db', '_m1', '_rd', '_wr', '_mreq', '_iorq', 'State', 'pc', 'Fetch'], ['af', 'bc', 'de', 'hl', 'ix', 'iy', 'sp'], ['af2', 'bc2', 'de2', 'hl2'], ['wz', 'ir'], ['_int','_nmi', nodenamereset], ]; function setupTransistors(){ for(i in transdefs){ var tdef = transdefs[i]; var name = tdef[0]; var gate = tdef[1]; var c1 = tdef[2]; var c2 = tdef[3]; var bb = tdef[4]; if(tdef[6]) // just ignore all the 'weak' transistors for now continue; if(c1==ngnd) {c1=c2;c2=ngnd;} if(c1==npwr) {c1=c2;c2=npwr;} var trans = {name: name, on: false, gate: gate, c1: c1, c2: c2, bb: bb}; nodes[gate].gates.push(trans); nodes[c1].c1c2s.push(trans); nodes[c2].c1c2s.push(trans); transistors[name] = trans; } } // simulate a single clock phase with no update to graphics or trace function halfStep(){ var clk = isNodeHigh(nodenames['clk']); eval(clockTriggers[cycle]); if (clk) {setLow('clk'); } else {setHigh('clk'); } // DMB: It's almost certainly wrong to execute these on both clock edges handleBusRead(); handleBusWrite(); } function goUntilSyncOrWrite(){ halfStep(); cycle++; while( !isNodeHigh(nodenames['clk']) || ( isNodeHigh(nodenames['_m1']) && isNodeHigh(nodenames['_wr']) ) ) { halfStep(); cycle++; } chipStatus(); } function initChip(){ var start = now(); for(var nn in nodes) { nodes[nn].state = false; nodes[nn].float = true; } nodes[ngnd].state = false; nodes[ngnd].float = false; nodes[npwr].state = true; nodes[npwr].float = false; for(var tn in transistors) transistors[tn].on = false; setLow(nodenamereset); setHigh('clk'); setHigh('_busrq'); setHigh('_int'); setHigh('_nmi'); setHigh('_wait'); recalcNodeList(allNodes()); // DMB: Not sure why the 6800 sim did something like this //for(var i=0;i<8;i++){ // setHigh('clk'); // setLow('clk'); //} for(var i=0;i<31;i++){halfStep();} // avoid updating graphics and trace buffer before user code setHigh(nodenamereset); refresh(); cycle = 0; trace = Array(); if(typeof expertMode != "undefined") updateLogList(); chipStatus(); if(ctrace)console.log('initChip done after', now()-start); } var prefix = 0x00; var opcode = 0x00; var state = 0; var last_rd_done = 1; function handleBusRead(){ if(!isNodeHigh(nodenames['_rd'])){ var a = readAddressBus(); var d = eval(readTriggers[a]); if(d == undefined) d = mRead(readAddressBus()); if(!isNodeHigh(nodenames['_m1']) && !isNodeHigh(nodenames['_mreq'])) { eval(fetchTriggers[d]); } writeDataBus(d); } // Prefic / Opcode parsing state machone // CB // DD // ED // FD // DD CB // FD CB // // Only advance the state machine on the falling edge of read if (last_rd_done && !isNodeHigh(nodenames['_rd']) && !isNodeHigh(nodenames['_mreq'])) { switch (state) { case 0: // In state 0 we are ready to start a new instruction if(!isNodeHigh(nodenames['_m1'])) { switch (d) { case 0xdd: case 0xfd: prefix = d; opcode = d; state = 1; break; case 0xcb: case 0xed: prefix = d; opcode = 0x100; state = 2; break; default: prefix = 0; opcode = d; break; } } break; case 1: // In state 1 we have just seen the 0xdd/0xfd prefix if(!isNodeHigh(nodenames['_mreq'])) { switch (d) { case 0xdd: case 0xfd: prefix = d; opcode = d; break; case 0xcb: prefix = (prefix << 8) | d; opcode = 0x100; state = 2; break; default: opcode = d; state = 0; break; } } break; default: // In state 2 the next read must be the opcode if(!isNodeHigh(nodenames['_mreq'])) { opcode = d; state = 0; } break; } } last_rd_done = (isNodeHigh(nodenames['_rd']) || isNodeHigh(nodenames['_mreq'])); } function handleBusWrite(){ if(!isNodeHigh(nodenames['_wr'])){ var a = readAddressBus(); var d = readDataBus(); eval(writeTriggers[a]); mWrite(a,d); if(a<0x200) setCellValue(a,d); } } function readA() { if (!isNodeHigh(nodenames['ex_af'])) { return 0xFF ^ readBits('reg_aa', 8); } else { return 0xFF ^ readBits('reg_a', 8); } } function readF() { if (!isNodeHigh(nodenames['ex_af'])) { return 0xFF ^ readBits('reg_ff', 8); } else { return 0xFF ^ readBits('reg_f', 8); } } function readB() { if (isNodeHigh(nodenames['ex_bcdehl'])) { return 0xFF ^ readBits('reg_bb', 8); } else { return 0xFF ^ readBits('reg_b', 8); } } function readC() { if (isNodeHigh(nodenames['ex_bcdehl'])) { return 0xFF ^ readBits('reg_cc', 8); } else { return 0xFF ^ readBits('reg_c', 8); } } function readD() { if (isNodeHigh(nodenames['ex_bcdehl'])) { if (isNodeHigh(nodenames['ex_dehl1'])) { return 0xFF ^ readBits('reg_hh', 8); } else { return 0xFF ^ readBits('reg_dd', 8); } } else { if (isNodeHigh(nodenames['ex_dehl0'])) { return 0xFF ^ readBits('reg_h', 8); } else { return 0xFF ^ readBits('reg_d', 8); } } } function readE() { if (isNodeHigh(nodenames['ex_bcdehl'])) { if (isNodeHigh(nodenames['ex_dehl1'])) { return 0xFF ^ readBits('reg_ll', 8); } else { return 0xFF ^ readBits('reg_ee', 8); } } else { if (isNodeHigh(nodenames['ex_dehl0'])) { return 0xFF ^ readBits('reg_l', 8); } else { return 0xFF ^ readBits('reg_e', 8); } } } function readH() { if (isNodeHigh(nodenames['ex_bcdehl'])) { if (isNodeHigh(nodenames['ex_dehl1'])) { return 0xFF ^ readBits('reg_dd', 8); } else { return 0xFF ^ readBits('reg_hh', 8); } } else { if (isNodeHigh(nodenames['ex_dehl0'])) { return 0xFF ^ readBits('reg_d', 8); } else { return 0xFF ^ readBits('reg_h', 8); } } } function readL() { if (isNodeHigh(nodenames['ex_bcdehl'])) { if (isNodeHigh(nodenames['ex_dehl1'])) { return 0xFF ^ readBits('reg_ee', 8); } else { return 0xFF ^ readBits('reg_ll', 8); } } else { if (isNodeHigh(nodenames['ex_dehl0'])) { return 0xFF ^ readBits('reg_e', 8); } else { return 0xFF ^ readBits('reg_l', 8); } } } function readA2() { if (isNodeHigh(nodenames['ex_af'])) { return 0xFF ^ readBits('reg_aa', 8); } else { return 0xFF ^ readBits('reg_a', 8); } } function readF2() { if (isNodeHigh(nodenames['ex_af'])) { return 0xFF ^ readBits('reg_ff', 8); } else { return 0xFF ^ readBits('reg_f', 8); } } function readB2() { if (!isNodeHigh(nodenames['ex_bcdehl'])) { return 0xFF ^ readBits('reg_bb', 8); } else { return 0xFF ^ readBits('reg_b', 8); } } function readC2() { if (!isNodeHigh(nodenames['ex_bcdehl'])) { return 0xFF ^ readBits('reg_cc', 8); } else { return 0xFF ^ readBits('reg_c', 8); } } function readD2() { if (!isNodeHigh(nodenames['ex_bcdehl'])) { if (isNodeHigh(nodenames['ex_dehl1'])) { return 0xFF ^ readBits('reg_hh', 8); } else { return 0xFF ^ readBits('reg_dd', 8); } } else { if (isNodeHigh(nodenames['ex_dehl0'])) { return 0xFF ^ readBits('reg_h', 8); } else { return 0xFF ^ readBits('reg_d', 8); } } } function readE2() { if (!isNodeHigh(nodenames['ex_bcdehl'])) { if (isNodeHigh(nodenames['ex_dehl1'])) { return 0xFF ^ readBits('reg_ll', 8); } else { return 0xFF ^ readBits('reg_ee', 8); } } else { if (isNodeHigh(nodenames['ex_dehl0'])) { return 0xFF ^ readBits('reg_l', 8); } else { return 0xFF ^ readBits('reg_e', 8); } } } function readH2() { if (!isNodeHigh(nodenames['ex_bcdehl'])) { if (isNodeHigh(nodenames['ex_dehl1'])) { return 0xFF ^ readBits('reg_dd', 8); } else { return 0xFF ^ readBits('reg_hh', 8); } } else { if (isNodeHigh(nodenames['ex_dehl0'])) { return 0xFF ^ readBits('reg_d', 8); } else { return 0xFF ^ readBits('reg_h', 8); } } } function readL2() { if (!isNodeHigh(nodenames['ex_bcdehl'])) { if (isNodeHigh(nodenames['ex_dehl1'])) { return 0xFF ^ readBits('reg_ee', 8); } else { return 0xFF ^ readBits('reg_ll', 8); } } else { if (isNodeHigh(nodenames['ex_dehl0'])) { return 0xFF ^ readBits('reg_e', 8); } else { return 0xFF ^ readBits('reg_l', 8); } } } function readI(){return 0xFF ^ readBits('reg_i', 8);} function readR(){return 0xFF ^ readBits('reg_r', 8);} function readW(){return 0xFF ^ readBits('reg_w', 8);} function readZ(){return 0xFF ^ readBits('reg_z', 8);} function readIX(){return 0xFFFF ^ ((readBits('reg_ixh', 8)<<8) + readBits('reg_ixl', 8));} function readIY(){return 0xFFFF ^ ((readBits('reg_iyh', 8)<<8) + readBits('reg_iyl', 8));} function readSP(){return 0xFFFF ^ ((readBits('reg_sph', 8)<<8) + readBits('reg_spl', 8));} function readPC(){return 0xFFFF ^ ((readBits('reg_pch', 8)<<8) + readBits('reg_pcl', 8));} function readPCL(){return 0xFF ^ readBits('reg_pcl', 8);} function readPCH(){return 0xFF ^ readBits('reg_pch', 8);} // The 6800 state control is something like a branching shift register // ... but not quite like that TCStates=[ "m1", "m2", "m3", "m4", "m5", "t1", "t2", "t3", "t4", "t5", "t6", ]; function listActiveTCStates() { var s=[]; for(var i=0;i>1; if(busname=='af') return hexByte(readA()) + hexByte(readF()); if(busname=='bc') return hexByte(readB()) + hexByte(readC()); if(busname=='de') return hexByte(readD()) + hexByte(readE()); if(busname=='hl') return hexByte(readH()) + hexByte(readL()); if(busname=='af2') return hexByte(readA2()) + hexByte(readF2()); if(busname=='bc2') return hexByte(readB2()) + hexByte(readC2()); if(busname=='de2') return hexByte(readD2()) + hexByte(readE2()); if(busname=='hl2') return hexByte(readH2()) + hexByte(readL2()); if(busname=='ir') return busToHexInv('reg_i') + busToHexInv('reg_r'); if(busname=='wz') return busToHexInv('reg_w') + busToHexInv('reg_z'); if(busname=='pc') return busToHexInv('reg_pch') + busToHexInv('reg_pcl'); if(busname=='sp') return busToHexInv('reg_sph') + busToHexInv('reg_spl'); if(busname=='ix') return busToHexInv('reg_ixh') + busToHexInv('reg_ixl'); if(busname=='iy') return busToHexInv('reg_iyh') + busToHexInv('reg_iyl'); if(busname=='State') return listActiveTCStates(); // DMB: TODO // if(busname=='Execute') // return disassemblytoHTML(readBits('ir',8)); if(busname=='Fetch') return (!isNodeHigh(nodenames['_m1']) && !isNodeHigh(nodenames['_mreq']) && !isNodeHigh(nodenames['_rd']))?disassemblytoHTML():""; if(busname[0]=="-"){ // invert the value of the bus for display var value=busToHex(busname.slice(1)) if(typeof value != "undefined") return value.replace(/./g,function(x){return (15-parseInt(x,16)).toString(16)}); else return undefined;; } else { return busToHex(busname); } } function chipStatus(){ var ab = readAddressBus(); var machine1 = ' halfcyc:' + cycle + ' clk:' + readBit('clk') + ' AB:' + hexWord(ab) + ' D:' + hexByte(readDataBus()) + ' M1:' + readBit('_m1') + ' RD:' + readBit('_rd') + ' WR:' + readBit('_wr') + ' MREQ:' + readBit('_mreq') + ' IORQ:' + readBit('_iorq'); var machine2 = ' PC:' + hexWord(readPC()) + ' A:' + hexByte(readA()) + ' F:' + hexByte(readF()) + ' B:' + hexByte(readB()) + ' C:' + hexByte(readC()) + ' D:' + hexByte(readD()) + ' E:' + hexByte(readE()) + ' H:' + hexByte(readH()) + ' L:' + hexByte(readL()) + ' I:' + hexByte(readI()) + ' R:' + hexByte(readR()) + ' W:' + hexByte(readW()) + ' Z:' + hexByte(readZ()) + ' IX:' + hexWord(readIX()) + ' IY:' + hexWord(readIY()) + ' SP:' + hexWord(readSP()); var machine3 = 'State: ' + busToString('State') + 'Hz: ' + estimatedHz().toFixed(1); if(typeof expertMode != "undefined") { machine3 += ' Exec: ' + busToString('Execute'); // no T-state info for 6800 yet if(!isNodeHigh(nodenames['_m1']) && !isNodeHigh(nodenames['_mreq']) && !isNodeHigh(nodenames['_rd'])) machine3 += ' (Fetch: ' + busToString('Fetch') + ')'; if(goldenChecksum != undefined) machine3 += " Chk:" + traceChecksum + ((traceChecksum==goldenChecksum)?" OK":" no match"); } setStatus(machine1, machine2, machine3); if (logThese.length>1) { updateLogbox(logThese); } selectCell(ab); } // sanitised opcode for HTML output function disassemblytoHTML(){ var disassembly; switch (prefix) { case 0xCB: disassembly = disassembly_cb; break; case 0xDD: disassembly = disassembly_dd; break; case 0xED: disassembly = disassembly_ed; break; case 0xFD: disassembly = disassembly_fd; break; case 0xDDCB: disassembly = disassembly_ddcb; break; case 0xFDCB: disassembly = disassembly_ddfd; break; default: disassembly = disassembly_00; break; } var opstr=disassembly[opcode]; if(typeof opstr == "undefined") return "unknown" return opstr.replace(/ /,' '); } var disassembly_00={ 0x00: "NOP", 0x01: "LD BC,NNNN", 0x02: "LD (BC),A", 0x03: "INC BC", 0x04: "INC B", 0x05: "DEC B", 0x06: "LD B,NN", 0x07: "RLCA", 0x08: "EX AF,AF'", 0x09: "ADD HL,BC", 0x0A: "LD A,(BC)", 0x0B: "DEC BC", 0x0C: "INC C", 0x0D: "DEC C", 0x0E: "LD C,NN", 0x0F: "RRCA", 0x10: "DJNZ REL", 0x11: "LD DE,NNNN", 0x12: "LD (DE),A", 0x13: "INC DE", 0x14: "INC D", 0x15: "DEC D", 0x16: "LD D,NN", 0x17: "RLA", 0x18: "JR REL", 0x19: "ADD HL,DE", 0x1A: "LD A,(DE)", 0x1B: "DEC DE", 0x1C: "INC E", 0x1D: "DEC E", 0x1E: "LD E,NN", 0x1F: "RRA", 0x20: "JR NZ,REL", 0x21: "LD HL,NNNN", 0x22: "LD (NNNN),HL", 0x23: "INC HL", 0x24: "INC H", 0x25: "DEC H", 0x26: "LD H,NN", 0x27: "DAA", 0x28: "JR Z,REL", 0x29: "ADD HL,HL", 0x2A: "LD HL,(NNNN)", 0x2B: "DEC HL", 0x2C: "INC L", 0x2D: "DEC L", 0x2E: "LD L,NN", 0x2F: "CPL", 0x30: "JR NC,REL", 0x31: "LD SP,NNNN", 0x32: "LD (NNNN),A", 0x33: "INC SP", 0x34: "INC (HL)", 0x35: "DEC (HL)", 0x36: "LD (HL),NN", 0x37: "SCF", 0x38: "JR C,REL", 0x39: "ADD HL,SP", 0x3A: "LD A,(NNNN)", 0x3B: "DEC SP", 0x3C: "INC A", 0x3D: "DEC A", 0x3E: "LD A,NN", 0x3F: "CCF", 0x40: "LD B,B", 0x41: "LD B,C", 0x42: "LD B,D", 0x43: "LD B,E", 0x44: "LD B,H", 0x45: "LD B,L", 0x46: "LD B,(HL)", 0x47: "LD B,A", 0x48: "LD C,B", 0x49: "LD C,C", 0x4A: "LD C,D", 0x4B: "LD C,E", 0x4C: "LD C,H", 0x4D: "LD C,L", 0x4E: "LD C,(HL)", 0x4F: "LD C,A", 0x50: "LD D,B", 0x51: "LD D,C", 0x52: "LD D,D", 0x53: "LD D,E", 0x54: "LD D,H", 0x55: "LD D,L", 0x56: "LD D,(HL)", 0x57: "LD D,A", 0x58: "LD E,B", 0x59: "LD E,C", 0x5A: "LD E,D", 0x5B: "LD E,E", 0x5C: "LD E,H", 0x5D: "LD E,L", 0x5E: "LD E,(HL)", 0x5F: "LD E,A", 0x60: "LD H,B", 0x61: "LD H,C", 0x62: "LD H,D", 0x63: "LD H,E", 0x64: "LD H,H", 0x65: "LD H,L", 0x66: "LD H,(HL)", 0x67: "LD H,A", 0x68: "LD L,B", 0x69: "LD L,C", 0x6A: "LD L,D", 0x6B: "LD L,E", 0x6C: "LD L,H", 0x6D: "LD L,L", 0x6E: "LD L,(HL)", 0x6F: "LD L,A", 0x70: "LD (HL),B", 0x71: "LD (HL),C", 0x72: "LD (HL),D", 0x73: "LD (HL),E", 0x74: "LD (HL),H", 0x75: "LD (HL),L", 0x76: "HALT", 0x77: "LD (HL),A", 0x78: "LD A,B", 0x79: "LD A,C", 0x7A: "LD A,D", 0x7B: "LD A,E", 0x7C: "LD A,H", 0x7D: "LD A,L", 0x7E: "LD A,(HL)", 0x7F: "LD A,A", 0x80: "ADD A,B", 0x81: "ADD A,C", 0x82: "ADD A,D", 0x83: "ADD A,E", 0x84: "ADD A,H", 0x85: "ADD A,L", 0x86: "ADD A,(HL)", 0x87: "ADD A,A", 0x88: "ADC A,B", 0x89: "ADC A,C", 0x8A: "ADC A,D", 0x8B: "ADC A,E", 0x8C: "ADC A,H", 0x8D: "ADC A,L", 0x8E: "ADC A,(HL)", 0x8F: "ADC A,A", 0x90: "SUB B", 0x91: "SUB C", 0x92: "SUB D", 0x93: "SUB E", 0x94: "SUB H", 0x95: "SUB L", 0x96: "SUB (HL)", 0x97: "SUB A", 0x98: "SBC A,B", 0x99: "SBC A,C", 0x9A: "SBC A,D", 0x9B: "SBC A,E", 0x9C: "SBC A,H", 0x9D: "SBC A,L", 0x9E: "SBC A,(HL)", 0x9F: "SBC A,A", 0xA0: "AND B", 0xA1: "AND C", 0xA2: "AND D", 0xA3: "AND E", 0xA4: "AND H", 0xA5: "AND L", 0xA6: "AND (HL)", 0xA7: "AND A", 0xA8: "XOR B", 0xA9: "XOR C", 0xAA: "XOR D", 0xAB: "XOR E", 0xAC: "XOR H", 0xAD: "XOR L", 0xAE: "XOR (HL)", 0xAF: "XOR A", 0xB0: "OR B", 0xB1: "OR C", 0xB2: "OR D", 0xB3: "OR E", 0xB4: "OR H", 0xB5: "OR L", 0xB6: "OR (HL)", 0xB7: "OR A", 0xB8: "CP B", 0xB9: "CP C", 0xBA: "CP D", 0xBB: "CP E", 0xBC: "CP H", 0xBD: "CP L", 0xBE: "CP (HL)", 0xBF: "CP A", 0xC0: "RET NZ", 0xC1: "POP BC", 0xC2: "JP NZ,NNNN", 0xC3: "JP NNNN", 0xC4: "CALL NZ,NNNN", 0xC5: "PUSH BC", 0xC6: "ADD A,NN", 0xC7: "RST 00h", 0xC8: "RET Z", 0xC9: "RET", 0xCA: "JP Z,NNNN", 0xCB: "PREFIX", 0xCC: "CALL Z,NNNN", 0xCD: "CALL NNNN", 0xCE: "ADC A,NN", 0xCF: "RST 08h", 0xD0: "RET NC", 0xD1: "POP DE", 0xD2: "JP NC,NNNN", 0xD3: "OUT (NN),A", 0xD4: "CALL NC,NNNN", 0xD5: "PUSH DE", 0xD6: "SUB NN", 0xD7: "RST 10h", 0xD8: "RET C", 0xD9: "EXX", 0xDA: "JP C,NNNN", 0xDB: "IN A,(NN)", 0xDC: "CALL C,NNNN", 0xDD: "PREFIX", 0xDE: "SBC A,NN", 0xDF: "RST 18h", 0xE0: "RET PO", 0xE1: "POP HL", 0xE2: "JP PO,NNNN", 0xE3: "EX (SP),HL", 0xE4: "CALL PO,NNNN", 0xE5: "PUSH HL", 0xE6: "AND NN", 0xE7: "RST 20h", 0xE8: "RET PE", 0xE9: "JP (HL)", 0xEA: "JP PE,NNNN", 0xEB: "EX DE,HL", 0xEC: "CALL PE,NNNN", 0xED: "PREFIX", 0xEE: "XOR NN", 0xEF: "RST 28h", 0xF0: "RET P", 0xF1: "POP AF", 0xF2: "JP P,NNNN", 0xF3: "DI", 0xF4: "CALL P,NNNN", 0xF5: "PUSH AF", 0xF6: "OR NN", 0xF7: "RST 30h", 0xF8: "RET M", 0xF9: "LD SP,HL", 0xFA: "JP M,NNNN", 0xFB: "EI", 0xFC: "CALL M,NNNN", 0xFD: "PREFIX", 0xFE: "CP NN", 0xFF: "RST 38h" }; var disassembly_ed={ 0x00: "???", 0x01: "???", 0x02: "???", 0x03: "???", 0x04: "???", 0x05: "???", 0x06: "???", 0x07: "???", 0x08: "???", 0x09: "???", 0x0A: "???", 0x0B: "???", 0x0C: "???", 0x0D: "???", 0x0E: "???", 0x0F: "???", 0x10: "???", 0x11: "???", 0x12: "???", 0x13: "???", 0x14: "???", 0x15: "???", 0x16: "???", 0x17: "???", 0x18: "???", 0x19: "???", 0x1A: "???", 0x1B: "???", 0x1C: "???", 0x1D: "???", 0x1E: "???", 0x1F: "???", 0x20: "???", 0x21: "???", 0x22: "???", 0x23: "???", 0x24: "???", 0x25: "???", 0x26: "???", 0x27: "???", 0x28: "???", 0x29: "???", 0x2A: "???", 0x2B: "???", 0x2C: "???", 0x2D: "???", 0x2E: "???", 0x2F: "???", 0x30: "???", 0x31: "???", 0x32: "???", 0x33: "???", 0x34: "???", 0x35: "???", 0x36: "???", 0x37: "???", 0x38: "???", 0x39: "???", 0x3A: "???", 0x3B: "???", 0x3C: "???", 0x3D: "???", 0x3E: "???", 0x3F: "???", 0x40: "IN B,(C)", 0x41: "OUT (C),B", 0x42: "SBC HL,BC", 0x43: "LD (NNNN),BC", 0x44: "NEG", 0x45: "RETN", 0x46: "IM 0", 0x47: "LD I,A", 0x48: "IN C,(C)", 0x49: "OUT (C),C", 0x4A: "ADC HL,BC", 0x4B: "LD BC,(NNNN)", 0x4C: "NEG", 0x4D: "RETI", 0x4E: "IM 0/1", 0x4F: "LD R,A", 0x50: "IN D,(C)", 0x51: "OUT (C),D", 0x52: "SBC HL,DE", 0x53: "LD (NNNN),DE", 0x54: "NEG", 0x55: "RETN", 0x56: "IM 1", 0x57: "LD A,I", 0x58: "IN E,(C)", 0x59: "OUT (C),E", 0x5A: "ADC HL,DE", 0x5B: "LD DE,(NNNN)", 0x5C: "NEG", 0x5D: "RETN", 0x5E: "IM 2", 0x5F: "LD A,R", 0x60: "IN H,(C)", 0x61: "OUT (C),H", 0x62: "SBC HL,HL", 0x63: "LD (NNNN),HL", 0x64: "NEG", 0x65: "RETN", 0x66: "IM 0", 0x67: "RRD", 0x68: "IN L,(C)", 0x69: "OUT (C),L", 0x6A: "ADC HL,HL", 0x6B: "LD HL,(NNNN)", 0x6C: "NEG", 0x6D: "RETN", 0x6E: "IM 0/1", 0x6F: "RLD", 0x70: "IN (C)", 0x71: "OUT (C),0", 0x72: "SBC HL,SP", 0x73: "LD (NNNN),SP", 0x74: "NEG", 0x75: "RETN", 0x76: "IM 1", 0x77: "???", 0x78: "IN A,(C)", 0x79: "OUT (C),A", 0x7A: "ADC HL,SP", 0x7B: "LD SP,(NNNN)", 0x7C: "NEG", 0x7D: "RETN", 0x7E: "IM 2", 0x7F: "???", 0x80: "???", 0x81: "???", 0x82: "???", 0x83: "???", 0x84: "???", 0x85: "???", 0x86: "???", 0x87: "???", 0x88: "???", 0x89: "???", 0x8A: "???", 0x8B: "???", 0x8C: "???", 0x8D: "???", 0x8E: "???", 0x8F: "???", 0x90: "???", 0x91: "???", 0x92: "???", 0x93: "???", 0x94: "???", 0x95: "???", 0x96: "???", 0x97: "???", 0x98: "???", 0x99: "???", 0x9A: "???", 0x9B: "???", 0x9C: "???", 0x9D: "???", 0x9E: "???", 0x9F: "???", 0xA0: "LDI", 0xA1: "CPI", 0xA2: "INI", 0xA3: "OUTI", 0xA4: "???", 0xA5: "???", 0xA6: "???", 0xA7: "???", 0xA8: "LDD", 0xA9: "CPD", 0xAA: "IND", 0xAB: "OUTD", 0xAC: "???", 0xAD: "???", 0xAE: "???", 0xAF: "???", 0xB0: "LDIR", 0xB1: "CPIR", 0xB2: "INIR", 0xB3: "OTIR", 0xB4: "???", 0xB5: "???", 0xB6: "???", 0xB7: "???", 0xB8: "LDDR", 0xB9: "CPDR", 0xBA: "INDR", 0xBB: "OTDR", 0xBC: "???", 0xBD: "???", 0xBE: "???", 0xBF: "???", 0xC0: "???", 0xC1: "???", 0xC2: "???", 0xC3: "???", 0xC4: "???", 0xC5: "???", 0xC6: "???", 0xC7: "???", 0xC8: "???", 0xC9: "???", 0xCA: "???", 0xCB: "???", 0xCC: "???", 0xCD: "???", 0xCE: "???", 0xCF: "???", 0xD0: "???", 0xD1: "???", 0xD2: "???", 0xD3: "???", 0xD4: "???", 0xD5: "???", 0xD6: "???", 0xD7: "???", 0xD8: "???", 0xD9: "???", 0xDA: "???", 0xDB: "???", 0xDC: "???", 0xDD: "???", 0xDE: "???", 0xDF: "???", 0xE0: "???", 0xE1: "???", 0xE2: "???", 0xE3: "???", 0xE4: "???", 0xE5: "???", 0xE6: "???", 0xE7: "???", 0xE8: "???", 0xE9: "???", 0xEA: "???", 0xEB: "???", 0xEC: "???", 0xED: "???", 0xEE: "???", 0xEF: "???", 0xF0: "???", 0xF1: "???", 0xF2: "???", 0xF3: "???", 0xF4: "???", 0xF5: "???", 0xF6: "???", 0xF7: "???", 0xF8: "???", 0xF9: "???", 0xFA: "???", 0xFB: "???", 0xFC: "???", 0xFD: "???", 0xFE: "???", 0xFF: "???", 0x100: "PREFIX" }; var disassembly_cb={ 0x00: "RLC B", 0x01: "RLC C", 0x02: "RLC D", 0x03: "RLC E", 0x04: "RLC H", 0x05: "RLC L", 0x06: "RLC (HL)", 0x07: "RLC A", 0x08: "RRC B", 0x09: "RRC C", 0x0A: "RRC D", 0x0B: "RRC E", 0x0C: "RRC H", 0x0D: "RRC L", 0x0E: "RRC (HL)", 0x0F: "RRC A", 0x10: "RL B", 0x11: "RL C", 0x12: "RL D", 0x13: "RL E", 0x14: "RL H", 0x15: "RL L", 0x16: "RL (HL)", 0x17: "RL A", 0x18: "RR B", 0x19: "RR C", 0x1A: "RR D", 0x1B: "RR E", 0x1C: "RR H", 0x1D: "RR L", 0x1E: "RR (HL)", 0x1F: "RR A", 0x20: "SLA B", 0x21: "SLA C", 0x22: "SLA D", 0x23: "SLA E", 0x24: "SLA H", 0x25: "SLA L", 0x26: "SLA (HL)", 0x27: "SLA A", 0x28: "SRA B", 0x29: "SRA C", 0x2A: "SRA D", 0x2B: "SRA E", 0x2C: "SRA H", 0x2D: "SRA L", 0x2E: "SRA (HL)", 0x2F: "SRA A", 0x30: "SLL B", 0x31: "SLL C", 0x32: "SLL D", 0x33: "SLL E", 0x34: "SLL H", 0x35: "SLL L", 0x36: "SLL (HL)", 0x37: "SLL A", 0x38: "SRL B", 0x39: "SRL C", 0x3A: "SRL D", 0x3B: "SRL E", 0x3C: "SRL H", 0x3D: "SRL L", 0x3E: "SRL (HL)", 0x3F: "SRL A", 0x40: "BIT 0,B", 0x41: "BIT 0,C", 0x42: "BIT 0,D", 0x43: "BIT 0,E", 0x44: "BIT 0,H", 0x45: "BIT 0,L", 0x46: "BIT 0,(HL)", 0x47: "BIT 0,A", 0x48: "BIT 1,B", 0x49: "BIT 1,C", 0x4A: "BIT 1,D", 0x4B: "BIT 1,E", 0x4C: "BIT 1,H", 0x4D: "BIT 1,L", 0x4E: "BIT 1,(HL)", 0x4F: "BIT 1,A", 0x50: "BIT 2,B", 0x51: "BIT 2,C", 0x52: "BIT 2,D", 0x53: "BIT 2,E", 0x54: "BIT 2,H", 0x55: "BIT 2,L", 0x56: "BIT 2,(HL)", 0x57: "BIT 2,A", 0x58: "BIT 3,B", 0x59: "BIT 3,C", 0x5A: "BIT 3,D", 0x5B: "BIT 3,E", 0x5C: "BIT 3,H", 0x5D: "BIT 3,L", 0x5E: "BIT 3,(HL)", 0x5F: "BIT 3,A", 0x60: "BIT 4,B", 0x61: "BIT 4,C", 0x62: "BIT 4,D", 0x63: "BIT 4,E", 0x64: "BIT 4,H", 0x65: "BIT 4,L", 0x66: "BIT 4,(HL)", 0x67: "BIT 4,A", 0x68: "BIT 5,B", 0x69: "BIT 5,C", 0x6A: "BIT 5,D", 0x6B: "BIT 5,E", 0x6C: "BIT 5,H", 0x6D: "BIT 5,L", 0x6E: "BIT 5,(HL)", 0x6F: "BIT 5,A", 0x70: "BIT 6,B", 0x71: "BIT 6,C", 0x72: "BIT 6,D", 0x73: "BIT 6,E", 0x74: "BIT 6,H", 0x75: "BIT 6,L", 0x76: "BIT 6,(HL)", 0x77: "BIT 6,A", 0x78: "BIT 7,B", 0x79: "BIT 7,C", 0x7A: "BIT 7,D", 0x7B: "BIT 7,E", 0x7C: "BIT 7,H", 0x7D: "BIT 7,L", 0x7E: "BIT 7,(HL)", 0x7F: "BIT 7,A", 0x80: "RES 0,B", 0x81: "RES 0,C", 0x82: "RES 0,D", 0x83: "RES 0,E", 0x84: "RES 0,H", 0x85: "RES 0,L", 0x86: "RES 0,(HL)", 0x87: "RES 0,A", 0x88: "RES 1,B", 0x89: "RES 1,C", 0x8A: "RES 1,D", 0x8B: "RES 1,E", 0x8C: "RES 1,H", 0x8D: "RES 1,L", 0x8E: "RES 1,(HL)", 0x8F: "RES 1,A", 0x90: "RES 2,B", 0x91: "RES 2,C", 0x92: "RES 2,D", 0x93: "RES 2,E", 0x94: "RES 2,H", 0x95: "RES 2,L", 0x96: "RES 2,(HL)", 0x97: "RES 2,A", 0x98: "RES 3,B", 0x99: "RES 3,C", 0x9A: "RES 3,D", 0x9B: "RES 3,E", 0x9C: "RES 3,H", 0x9D: "RES 3,L", 0x9E: "RES 3,(HL)", 0x9F: "RES 3,A", 0xA0: "RES 4,B", 0xA1: "RES 4,C", 0xA2: "RES 4,D", 0xA3: "RES 4,E", 0xA4: "RES 4,H", 0xA5: "RES 4,L", 0xA6: "RES 4,(HL)", 0xA7: "RES 4,A", 0xA8: "RES 5,B", 0xA9: "RES 5,C", 0xAA: "RES 5,D", 0xAB: "RES 5,E", 0xAC: "RES 5,H", 0xAD: "RES 5,L", 0xAE: "RES 5,(HL)", 0xAF: "RES 5,A", 0xB0: "RES 6,B", 0xB1: "RES 6,C", 0xB2: "RES 6,D", 0xB3: "RES 6,E", 0xB4: "RES 6,H", 0xB5: "RES 6,L", 0xB6: "RES 6,(HL)", 0xB7: "RES 6,A", 0xB8: "RES 7,B", 0xB9: "RES 7,C", 0xBA: "RES 7,D", 0xBB: "RES 7,E", 0xBC: "RES 7,H", 0xBD: "RES 7,L", 0xBE: "RES 7,(HL)", 0xBF: "RES 7,A", 0xC0: "SET 0,B", 0xC1: "SET 0,C", 0xC2: "SET 0,D", 0xC3: "SET 0,E", 0xC4: "SET 0,H", 0xC5: "SET 0,L", 0xC6: "SET 0,(HL)", 0xC7: "SET 0,A", 0xC8: "SET 1,B", 0xC9: "SET 1,C", 0xCA: "SET 1,D", 0xCB: "SET 1,E", 0xCC: "SET 1,H", 0xCD: "SET 1,L", 0xCE: "SET 1,(HL)", 0xCF: "SET 1,A", 0xD0: "SET 2,B", 0xD1: "SET 2,C", 0xD2: "SET 2,D", 0xD3: "SET 2,E", 0xD4: "SET 2,H", 0xD5: "SET 2,L", 0xD6: "SET 2,(HL)", 0xD7: "SET 2,A", 0xD8: "SET 3,B", 0xD9: "SET 3,C", 0xDA: "SET 3,D", 0xDB: "SET 3,E", 0xDC: "SET 3,H", 0xDD: "SET 3,L", 0xDE: "SET 3,(HL)", 0xDF: "SET 3,A", 0xE0: "SET 4,B", 0xE1: "SET 4,C", 0xE2: "SET 4,D", 0xE3: "SET 4,E", 0xE4: "SET 4,H", 0xE5: "SET 4,L", 0xE6: "SET 4,(HL)", 0xE7: "SET 4,A", 0xE8: "SET 5,B", 0xE9: "SET 5,C", 0xEA: "SET 5,D", 0xEB: "SET 5,E", 0xEC: "SET 5,H", 0xED: "SET 5,L", 0xEE: "SET 5,(HL)", 0xEF: "SET 5,A", 0xF0: "SET 6,B", 0xF1: "SET 6,C", 0xF2: "SET 6,D", 0xF3: "SET 6,E", 0xF4: "SET 6,H", 0xF5: "SET 6,L", 0xF6: "SET 6,(HL)", 0xF7: "SET 6,A", 0xF8: "SET 7,B", 0xF9: "SET 7,C", 0xFA: "SET 7,D", 0xFB: "SET 7,E", 0xFC: "SET 7,H", 0xFD: "SET 7,L", 0xFE: "SET 7,(HL)", 0xFF: "SET 7,A", 0x100: "PREFIX" }; var disassembly_dd={ 0x00: "NOP", 0x01: "LD BC,NNNN", 0x02: "LD (BC),A", 0x03: "INC BC", 0x04: "INC B", 0x05: "DEC B", 0x06: "LD B,NN", 0x07: "RLCA", 0x08: "EX AF,AF'", 0x09: "ADD IX,BC", 0x0A: "LD A,(BC)", 0x0B: "DEC BC", 0x0C: "INC C", 0x0D: "DEC C", 0x0E: "LD C,NN", 0x0F: "RRCA", 0x10: "DJNZ REL", 0x11: "LD DE,NNNN", 0x12: "LD (DE),A", 0x13: "INC DE", 0x14: "INC D", 0x15: "DEC D", 0x16: "LD D,NN", 0x17: "RLA", 0x18: "JR REL", 0x19: "ADD IX,DE", 0x1A: "LD A,(DE)", 0x1B: "DEC DE", 0x1C: "INC E", 0x1D: "DEC E", 0x1E: "LD E,NN", 0x1F: "RRA", 0x20: "JR NZ,REL", 0x21: "LD IX,NNNN", 0x22: "LD (NNNN),IX", 0x23: "INC IX", 0x24: "INC IXH", 0x25: "DEC IXH", 0x26: "LD IXH,NN", 0x27: "DAA", 0x28: "JR Z,REL", 0x29: "ADD IX,IX", 0x2A: "LD IX,(NNNN)", 0x2B: "DEC IX", 0x2C: "INC IXL", 0x2D: "DEC IXL", 0x2E: "LD IXL,NN", 0x2F: "CPL", 0x30: "JR NC,REL", 0x31: "LD SP,NNNN", 0x32: "LD (NNNN),A", 0x33: "INC SP", 0x34: "INC (IX+d)", 0x35: "DEC (IX+d)", 0x36: "LD (IX+d),NN", 0x37: "SCF", 0x38: "JR C,REL", 0x39: "ADD IX,SP", 0x3A: "LD A,(NNNN)", 0x3B: "DEC SP", 0x3C: "INC A", 0x3D: "DEC A", 0x3D: "LD A,NN", 0x3F: "CCF", 0x40: "LD B,B", 0x41: "LD B,C", 0x42: "LD B,D", 0x44: "LD B,E", 0x44: "LD B,IXH", 0x45: "LD B,IXL", 0x46: "LD B,(IX+d)", 0x47: "LD B,A", 0x48: "LD C,B", 0x49: "LD C,C", 0x4A: "LD C,D", 0x4B: "LD C,E", 0x4C: "LD C,IXH", 0x4D: "LD C,IXL", 0x4E: "LD C,(IX+d)", 0x4F: "LD C,A", 0x50: "LD D,B", 0x51: "LD D,C", 0x52: "LD D,D", 0x52: "LD D,E", 0x54: "LD D,IXH", 0x55: "LD D,IXL", 0x56: "LD D,(IX+d)", 0x57: "LD D,A", 0x58: "LD E,B", 0x59: "LD E,C", 0x5A: "LD E,D", 0x5B: "LD E,E", 0x5C: "LD E,IXH", 0x5D: "LD E,IXL", 0x5E: "LD E,(IX+d)", 0x5F: "LD E,A", 0x60: "LD IXH,B", 0x61: "LD IXH,C", 0x62: "LD IXH,D", 0x63: "LD IXH,E", 0x64: "LD IXH,IXH", 0x65: "LD IXH,IXL", 0x66: "LD H,(IX+d)", 0x67: "LD IXH,A", 0x68: "LD IXL,B", 0x69: "LD IXL,C", 0x6A: "LD IXL,D", 0x6B: "LD IXL,E", 0x6C: "LD IXL,IXH", 0x6D: "LD IXL,IXL", 0x6E: "LD L,(IX+d)", 0x6F: "LD IXL,A", 0x70: "LD (IX+d),B", 0x71: "LD (IX+d),C", 0x72: "LD (IX+d),D", 0x73: "LD (IX+d),E", 0x74: "LD (IX+d),H", 0x75: "LD (IX+d),L", 0x76: "HALT", 0x77: "LD (IX+d),A", 0x78: "LD A,B", 0x79: "LD A,C", 0x7A: "LD A,D", 0x7B: "LD A,E", 0x7C: "LD A,IXH", 0x7D: "LD A,IXL", 0x7E: "LD A,(IX+d)", 0x7F: "LD A,A", 0x80: "ADD A,B", 0x81: "ADD A,C", 0x82: "ADD A,D", 0x83: "ADD A,E", 0x84: "ADD A,IXH", 0x85: "ADD A,IXL", 0x86: "ADD A,(IX+d)", 0x87: "ADD A,A", 0x88: "ADC A,B", 0x89: "ADC A,C", 0x8A: "ADC A,D", 0x8B: "ADC A,E", 0x8C: "ADC A,IXH", 0x8D: "ADC A,IXL", 0x8E: "ADC A,(IX+d)", 0x8F: "ADC A,A", 0x90: "SUB B", 0x91: "SUB C", 0x92: "SUB D", 0x93: "SUB E", 0x94: "SUB IXH", 0x95: "SUB IXL", 0x96: "SUB (IX+d)", 0x97: "SUB A", 0x98: "SBC A,B", 0x99: "SBC A,C", 0x9A: "SBC A,D", 0x9B: "SBC A,E", 0x9C: "SBC A,IXH", 0x9D: "SBC A,IXL", 0x9E: "SBC A,(IX+d)", 0x9F: "SBC A,A", 0xA0: "AND B", 0xA1: "AND C", 0xA2: "AND D", 0xA3: "AND E", 0xA4: "AND IXH", 0xA5: "AND IXL", 0xA6: "AND (IX+d)", 0xA7: "AND A", 0xA8: "XOR B", 0xA9: "XOR C", 0xAA: "XOR D", 0xAB: "XOR E", 0xAC: "XOR IXH", 0xAD: "XOR IXL", 0xAE: "XOR (IX+d)", 0xEF: "XOR A", 0xB0: "OR B", 0xB1: "OR C", 0xB2: "OR D", 0xB3: "OR E", 0xB4: "OR IXH", 0xB5: "OR IXL", 0xB6: "OR (IX+d)", 0xB7: "OR A", 0xB8: "CP B", 0xB9: "CP C", 0xBA: "CP D", 0xBB: "CP E", 0xBC: "CP IXH", 0xBD: "CP IXL", 0xBE: "CP (IX+d)", 0xBF: "CP A", 0xC0: "RET NZ", 0xC1: "POP BC", 0xC2: "JP NZ,NNNN", 0xC3: "JP NNNN", 0xC4: "CALL NZ,NNNN", 0xC5: "PUSH BC", 0xC6: "ADD A,NN", 0xC7: "RST 00h", 0xC8: "RET Z", 0xC9: "RET", 0xCA: "JP Z,NNNN", 0xCB: "PREFIX", 0xCC: "CALL Z,NNNN", 0xCD: "CALL NNNN", 0xCE: "ADC A,NN", 0xCF: "RST 08h", 0xD0: "RET NC", 0xD1: "POP DE", 0xD2: "JP NC,NNNN", 0xD3: "OUT (NN),A", 0xD4: "CALL NC,NNNN", 0xD5: "PUSH DE", 0xD6: "SUB NN", 0xD7: "RST 10h", 0xD8: "RET C", 0xD9: "EXX", 0xDA: "JP C,NNNN", 0xDB: "IN A,(NN)", 0xDC: "CALL C,NNNN", 0xDD: "PREFIX", 0xDE: "SBC A,NN", 0xDF: "RST 18h", 0xE0: "RET PO", 0xE1: "POP IX", 0xE2: "JP PO,NNNN", 0xE3: "EX (SP),IX", 0xE4: "CALL PO,NNNN", 0xE5: "PUSH IX", 0xE6: "AND NN", 0xE7: "RST 20h", 0xE8: "RET PE", 0xE9: "JP (IX)", 0xEA: "JP PE,NNNN", 0xEB: "EX DE,HL", 0xEC: "CALL PE,NNNN", 0xED: "PREFIX", 0xEE: "XOR NN", 0xEF: "RST 28h", 0xF0: "RET P", 0xF1: "POP AF", 0xF2: "JP P,NNNN", 0xF3: "DI", 0xF4: "CALL P,NNNN", 0xF5: "PUSH AF", 0xF7: "OR NN", 0xF7: "RST 30h", 0xF8: "RET M", 0xF9: "LD SP,IX", 0xFA: "JP M,NNNN", 0xFB: "EI", 0xFC: "CALL M,NNNN", 0xFD: "PREFIX", 0xFE: "CP NN", 0xFF: "RST 38h" }; var disassembly_fd={ 0x00: "NOP", 0x01: "LD BC,NNNN", 0x02: "LD (BC),A", 0x03: "INC BC", 0x04: "INC B", 0x05: "DEC B", 0x06: "LD B,NN", 0x07: "RLCA", 0x08: "EX AF,AF'", 0x09: "ADD IY,BC", 0x0A: "LD A,(BC)", 0x0B: "DEC BC", 0x0C: "INC C", 0x0D: "DEC C", 0x0E: "LD C,NN", 0x0F: "RRCA", 0x10: "DJNZ REL", 0x11: "LD DE,NNNN", 0x12: "LD (DE),A", 0x13: "INC DE", 0x14: "INC D", 0x15: "DEC D", 0x16: "LD D,NN", 0x17: "RLA", 0x18: "JR REL", 0x19: "ADD IY,DE", 0x1A: "LD A,(DE)", 0x1B: "DEC DE", 0x1C: "INC E", 0x1D: "DEC E", 0x1E: "LD E,NN", 0x1F: "RRA", 0x20: "JR NZ,REL", 0x21: "LD IY,NNNN", 0x22: "LD (NNNN),IY", 0x23: "INC IY", 0x24: "INC IYH", 0x25: "DEC IYH", 0x26: "LD IYH,NN", 0x27: "DAA", 0x28: "JR Z,REL", 0x29: "ADD IY,IY", 0x2A: "LD IY,(NNNN)", 0x2B: "DEC IY", 0x2C: "INC IYL", 0x2D: "DEC IYL", 0x2E: "LD IYL,NN", 0x2F: "CPL", 0x30: "JR NC,REL", 0x31: "LD SP,NNNN", 0x32: "LD (NNNN),A", 0x33: "INC SP", 0x34: "INC (IY+d)", 0x35: "DEC (IY+d)", 0x36: "LD (IY+d),NN", 0x37: "SCF", 0x38: "JR C,REL", 0x39: "ADD IY,SP", 0x3A: "LD A,(NNNN)", 0x3B: "DEC SP", 0x3C: "INC A", 0x3D: "DEC A", 0x3D: "LD A,NN", 0x3F: "CCF", 0x40: "LD B,B", 0x41: "LD B,C", 0x42: "LD B,D", 0x44: "LD B,E", 0x44: "LD B,IYH", 0x45: "LD B,IYL", 0x46: "LD B,(IY+d)", 0x47: "LD B,A", 0x48: "LD C,B", 0x49: "LD C,C", 0x4A: "LD C,D", 0x4B: "LD C,E", 0x4C: "LD C,IYH", 0x4D: "LD C,IYL", 0x4E: "LD C,(IY+d)", 0x4F: "LD C,A", 0x50: "LD D,B", 0x51: "LD D,C", 0x52: "LD D,D", 0x52: "LD D,E", 0x54: "LD D,IYH", 0x55: "LD D,IYL", 0x56: "LD D,(IY+d)", 0x57: "LD D,A", 0x58: "LD E,B", 0x59: "LD E,C", 0x5A: "LD E,D", 0x5B: "LD E,E", 0x5C: "LD E,IYH", 0x5D: "LD E,IYL", 0x5E: "LD E,(IY+d)", 0x5F: "LD E,A", 0x60: "LD IYH,B", 0x61: "LD IYH,C", 0x62: "LD IYH,D", 0x63: "LD IYH,E", 0x64: "LD IYH,IYH", 0x65: "LD IYH,IYL", 0x66: "LD H,(IY+d)", 0x67: "LD IYH,A", 0x68: "LD IYL,B", 0x69: "LD IYL,C", 0x6A: "LD IYL,D", 0x6B: "LD IYL,E", 0x6C: "LD IYL,IYH", 0x6D: "LD IYL,IYL", 0x6E: "LD L,(IY+d)", 0x6F: "LD IYL,A", 0x70: "LD (IY+d),B", 0x71: "LD (IY+d),C", 0x72: "LD (IY+d),D", 0x73: "LD (IY+d),E", 0x74: "LD (IY+d),H", 0x75: "LD (IY+d),L", 0x76: "HALT", 0x77: "LD (IY+d),A", 0x78: "LD A,B", 0x79: "LD A,C", 0x7A: "LD A,D", 0x7B: "LD A,E", 0x7C: "LD A,IYH", 0x7D: "LD A,IYL", 0x7E: "LD A,(IY+d)", 0x7F: "LD A,A", 0x80: "ADD A,B", 0x81: "ADD A,C", 0x82: "ADD A,D", 0x83: "ADD A,E", 0x84: "ADD A,IYH", 0x85: "ADD A,IYL", 0x86: "ADD A,(IY+d)", 0x87: "ADD A,A", 0x88: "ADC A,B", 0x89: "ADC A,C", 0x8A: "ADC A,D", 0x8B: "ADC A,E", 0x8C: "ADC A,IYH", 0x8D: "ADC A,IYL", 0x8E: "ADC A,(IY+d)", 0x8F: "ADC A,A", 0x90: "SUB B", 0x91: "SUB C", 0x92: "SUB D", 0x93: "SUB E", 0x94: "SUB IYH", 0x95: "SUB IYL", 0x96: "SUB (IY+d)", 0x97: "SUB A", 0x98: "SBC A,B", 0x99: "SBC A,C", 0x9A: "SBC A,D", 0x9B: "SBC A,E", 0x9C: "SBC A,IYH", 0x9D: "SBC A,IYL", 0x9E: "SBC A,(IY+d)", 0x9F: "SBC A,A", 0xA0: "AND B", 0xA1: "AND C", 0xA2: "AND D", 0xA3: "AND E", 0xA4: "AND IYH", 0xA5: "AND IYL", 0xA6: "AND (IY+d)", 0xA7: "AND A", 0xA8: "XOR B", 0xA9: "XOR C", 0xAA: "XOR D", 0xAB: "XOR E", 0xAC: "XOR IYH", 0xAD: "XOR IYL", 0xAE: "XOR (IY+d)", 0xEF: "XOR A", 0xB0: "OR B", 0xB1: "OR C", 0xB2: "OR D", 0xB3: "OR E", 0xB4: "OR IYH", 0xB5: "OR IYL", 0xB6: "OR (IY+d)", 0xB7: "OR A", 0xB8: "CP B", 0xB9: "CP C", 0xBA: "CP D", 0xBB: "CP E", 0xBC: "CP IYH", 0xBD: "CP IYL", 0xBE: "CP (IY+d)", 0xBF: "CP A", 0xC0: "RET NZ", 0xC1: "POP BC", 0xC2: "JP NZ,NNNN", 0xC3: "JP NNNN", 0xC4: "CALL NZ,NNNN", 0xC5: "PUSH BC", 0xC6: "ADD A,NN", 0xC7: "RST 00h", 0xC8: "RET Z", 0xC9: "RET", 0xCA: "JP Z,NNNN", 0xCB: "PREFIX", 0xCC: "CALL Z,NNNN", 0xCD: "CALL NNNN", 0xCE: "ADC A,NN", 0xCF: "RST 08h", 0xD0: "RET NC", 0xD1: "POP DE", 0xD2: "JP NC,NNNN", 0xD3: "OUT (NN),A", 0xD4: "CALL NC,NNNN", 0xD5: "PUSH DE", 0xD6: "SUB NN", 0xD7: "RST 10h", 0xD8: "RET C", 0xD9: "EXX", 0xDA: "JP C,NNNN", 0xDB: "IN A,(NN)", 0xDC: "CALL C,NNNN", 0xDD: "PREFIX", 0xDE: "SBC A,NN", 0xDF: "RST 18h", 0xE0: "RET PO", 0xE1: "POP IY", 0xE2: "JP PO,NNNN", 0xE3: "EX (SP),IY", 0xE4: "CALL PO,NNNN", 0xE5: "PUSH IY", 0xE6: "AND NN", 0xE7: "RST 20h", 0xE8: "RET PE", 0xE9: "JP (IY)", 0xEA: "JP PE,NNNN", 0xEB: "EX DE,HL", 0xEC: "CALL PE,NNNN", 0xED: "PREFIX", 0xEE: "XOR NN", 0xEF: "RST 28h", 0xF0: "RET P", 0xF1: "POP AF", 0xF2: "JP P,NNNN", 0xF3: "DI", 0xF4: "CALL P,NNNN", 0xF5: "PUSH AF", 0xF7: "OR NN", 0xF7: "RST 30h", 0xF8: "RET M", 0xF9: "LD SP,IY", 0xFA: "JP M,NNNN", 0xFB: "EI", 0xFC: "CALL M,NNNN", 0xFD: "PREFIX", 0xFE: "CP NN", 0xFF: "RST 38h" }; var disassembly_ddcb={ 0x00: "RLC (IX+d),B", 0x01: "RLC (IX+d),C", 0x02: "RLC (IX+d),D", 0x03: "RLC (IX+d),E", 0x04: "RLC (IX+d),H", 0x05: "RLC (IX+d),L", 0x06: "RLC (IX+d)", 0x07: "RLC (IX+d),A", 0x08: "RRC (IX+d),B", 0x09: "RRC (IX+d),C", 0x0A: "RRC (IX+d),D", 0x0B: "RRC (IX+d),E", 0x0C: "RRC (IX+d),H", 0x0D: "RRC (IX+d),L", 0x0E: "RRC (IX+d)", 0x0F: "RRC (IX+d),A", 0x10: "RL (IX+d),B", 0x11: "RL (IX+d),C", 0x12: "RL (IX+d),D", 0x13: "RL (IX+d),E", 0x14: "RL (IX+d),H", 0x15: "RL (IX+d),L", 0x16: "RL (IX+d)", 0x17: "RL (IX+d),A", 0x18: "RR (IX+d),B", 0x19: "RR (IX+d),C", 0x1A: "RR (IX+d),D", 0x1B: "RR (IX+d),E", 0x1C: "RR (IX+d),H", 0x1D: "RR (IX+d),L", 0x1E: "RR (IX+d)", 0x1F: "RR (IX+d),A", 0x20: "SLA (IX+d),B", 0x21: "SLA (IX+d),C", 0x22: "SLA (IX+d),D", 0x23: "SLA (IX+d),E", 0x24: "SLA (IX+d),H", 0x25: "SLA (IX+d),L", 0x26: "SLA (IX+d)", 0x27: "SLA (IX+d),A", 0x28: "SRA (IX+d),B", 0x29: "SRA (IX+d),C", 0x2A: "SRA (IX+d),D", 0x2B: "SRA (IX+d),E", 0x2C: "SRA (IX+d),H", 0x2D: "SRA (IX+d),L", 0x2E: "SRA (IX+d)", 0x2F: "SRA (IX+d),A", 0x30: "SLL (IX+d),B", 0x31: "SLL (IX+d),C", 0x32: "SLL (IX+d),D", 0x33: "SLL (IX+d),E", 0x34: "SLL (IX+d),H", 0x35: "SLL (IX+d),L", 0x36: "SLL (IX+d)", 0x37: "SLL (IX+d),A", 0x38: "SRL (IX+d),B", 0x39: "SRL (IX+d),C", 0x3A: "SRL (IX+d),D", 0x3B: "SRL (IX+d),E", 0x3C: "SRL (IX+d),H", 0x3D: "SRL (IX+d),L", 0x3E: "SRL (IX+d)", 0x3F: "SRL (IX+d),A", 0x40: "BIT 0,(IX+d)", 0x41: "BIT 0,(IX+d)", 0x42: "BIT 0,(IX+d)", 0x43: "BIT 0,(IX+d)", 0x44: "BIT 0,(IX+d)", 0x45: "BIT 0,(IX+d)", 0x46: "BIT 0,(IX+d)", 0x47: "BIT 0,(IX+d)", 0x48: "BIT 1,(IX+d)", 0x49: "BIT 1,(IX+d)", 0x4A: "BIT 1,(IX+d)", 0x4B: "BIT 1,(IX+d)", 0x4C: "BIT 1,(IX+d)", 0x4D: "BIT 1,(IX+d)", 0x4E: "BIT 1,(IX+d)", 0x4F: "BIT 1,(IX+d)", 0x50: "BIT 2,(IX+d)", 0x51: "BIT 2,(IX+d)", 0x52: "BIT 2,(IX+d)", 0x53: "BIT 2,(IX+d)", 0x54: "BIT 2,(IX+d)", 0x55: "BIT 2,(IX+d)", 0x56: "BIT 2,(IX+d)", 0x57: "BIT 2,(IX+d)", 0x58: "BIT 3,(IX+d)", 0x59: "BIT 3,(IX+d)", 0x5A: "BIT 3,(IX+d)", 0x5B: "BIT 3,(IX+d)", 0x5C: "BIT 3,(IX+d)", 0x5D: "BIT 3,(IX+d)", 0x5E: "BIT 3,(IX+d)", 0x5F: "BIT 3,(IX+d)", 0x60: "BIT 4,(IX+d)", 0x61: "BIT 4,(IX+d)", 0x62: "BIT 4,(IX+d)", 0x63: "BIT 4,(IX+d)", 0x64: "BIT 4,(IX+d)", 0x65: "BIT 4,(IX+d)", 0x66: "BIT 4,(IX+d)", 0x67: "BIT 4,(IX+d)", 0x68: "BIT 5,(IX+d)", 0x69: "BIT 5,(IX+d)", 0x6A: "BIT 5,(IX+d)", 0x6B: "BIT 5,(IX+d)", 0x6C: "BIT 5,(IX+d)", 0x6D: "BIT 5,(IX+d)", 0x6E: "BIT 5,(IX+d)", 0x6F: "BIT 5,(IX+d)", 0x70: "BIT 6,(IX+d)", 0x71: "BIT 6,(IX+d)", 0x72: "BIT 6,(IX+d)", 0x73: "BIT 6,(IX+d)", 0x74: "BIT 6,(IX+d)", 0x75: "BIT 6,(IX+d)", 0x76: "BIT 6,(IX+d)", 0x77: "BIT 6,(IX+d)", 0x78: "BIT 7,(IX+d)", 0x79: "BIT 7,(IX+d)", 0x7A: "BIT 7,(IX+d)", 0x7B: "BIT 7,(IX+d)", 0x7C: "BIT 7,(IX+d)", 0x7D: "BIT 7,(IX+d)", 0x7E: "BIT 7,(IX+d)", 0x7F: "BIT 7,(IX+d)", 0x80: "RES 0,(IX+d),B", 0x81: "RES 0,(IX+d),C", 0x82: "RES 0,(IX+d),D", 0x83: "RES 0,(IX+d),E", 0x84: "RES 0,(IX+d),H", 0x85: "RES 0,(IX+d),L", 0x86: "RES 0,(IX+d)", 0x87: "RES 0,(IX+d),A", 0x88: "RES 1,(IX+d),B", 0x89: "RES 1,(IX+d),C", 0x8A: "RES 1,(IX+d),D", 0x8B: "RES 1,(IX+d),E", 0x8C: "RES 1,(IX+d),H", 0x8D: "RES 1,(IX+d),L", 0x8E: "RES 1,(IX+d)", 0x8F: "RES 1,(IX+d),A", 0x90: "RES 2,(IX+d),B", 0x91: "RES 2,(IX+d),C", 0x92: "RES 2,(IX+d),D", 0x93: "RES 2,(IX+d),E", 0x94: "RES 2,(IX+d),H", 0x95: "RES 2,(IX+d),L", 0x96: "RES 2,(IX+d)", 0x97: "RES 2,(IX+d),A", 0x98: "RES 3,(IX+d),B", 0x99: "RES 3,(IX+d),C", 0x9A: "RES 3,(IX+d),D", 0x9B: "RES 3,(IX+d),E", 0x9C: "RES 3,(IX+d),H", 0x9D: "RES 3,(IX+d),L", 0x9E: "RES 3,(IX+d)", 0x9F: "RES 3,(IX+d),A", 0xA0: "RES 4,(IX+d),B", 0xA1: "RES 4,(IX+d),C", 0xA2: "RES 4,(IX+d),D", 0xA3: "RES 4,(IX+d),E", 0xA4: "RES 4,(IX+d),H", 0xA5: "RES 4,(IX+d),L", 0xA6: "RES 4,(IX+d)", 0xA7: "RES 4,(IX+d),A", 0xA8: "RES 5,(IX+d),B", 0xA9: "RES 5,(IX+d),C", 0xAA: "RES 5,(IX+d),D", 0xAB: "RES 5,(IX+d),E", 0xAC: "RES 5,(IX+d),H", 0xAD: "RES 5,(IX+d),L", 0xAE: "RES 5,(IX+d)", 0xAF: "RES 5,(IX+d),A", 0xB0: "RES 6,(IX+d),B", 0xB1: "RES 6,(IX+d),C", 0xB2: "RES 6,(IX+d),D", 0xB3: "RES 6,(IX+d),E", 0xB4: "RES 6,(IX+d),H", 0xB5: "RES 6,(IX+d),L", 0xB6: "RES 6,(IX+d)", 0xB7: "RES 6,(IX+d),A", 0xB8: "RES 7,(IX+d),B", 0xB9: "RES 7,(IX+d),C", 0xBA: "RES 7,(IX+d),D", 0xBB: "RES 7,(IX+d),E", 0xBC: "RES 7,(IX+d),H", 0xBD: "RES 7,(IX+d),L", 0xBE: "RES 7,(IX+d)", 0xBF: "RES 7,(IX+d),A", 0xC0: "SET 0,(IX+d),B", 0xC1: "SET 0,(IX+d),C", 0xC2: "SET 0,(IX+d),D", 0xC3: "SET 0,(IX+d),E", 0xC4: "SET 0,(IX+d),H", 0xC5: "SET 0,(IX+d),L", 0xC6: "SET 0,(IX+d)", 0xC7: "SET 0,(IX+d),A", 0xC8: "SET 1,(IX+d),B", 0xC9: "SET 1,(IX+d),C", 0xCA: "SET 1,(IX+d),D", 0xCB: "SET 1,(IX+d),E", 0xCC: "SET 1,(IX+d),H", 0xCD: "SET 1,(IX+d),L", 0xCE: "SET 1,(IX+d)", 0xCF: "SET 1,(IX+d),A", 0xD0: "SET 2,(IX+d),B", 0xD1: "SET 2,(IX+d),C", 0xD2: "SET 2,(IX+d),D", 0xD3: "SET 2,(IX+d),E", 0xD4: "SET 2,(IX+d),H", 0xD5: "SET 2,(IX+d),L", 0xD6: "SET 2,(IX+d)", 0xD7: "SET 2,(IX+d),A", 0xD8: "SET 3,(IX+d),B", 0xD9: "SET 3,(IX+d),C", 0xDA: "SET 3,(IX+d),D", 0xDB: "SET 3,(IX+d),E", 0xDC: "SET 3,(IX+d),H", 0xDD: "SET 3,(IX+d),L", 0xDE: "SET 3,(IX+d)", 0xDF: "SET 3,(IX+d),A", 0xE0: "SET 4,(IX+d),B", 0xE1: "SET 4,(IX+d),C", 0xE2: "SET 4,(IX+d),D", 0xE3: "SET 4,(IX+d),E", 0xE4: "SET 4,(IX+d),H", 0xE5: "SET 4,(IX+d),L", 0xE6: "SET 4,(IX+d)", 0xE7: "SET 4,(IX+d),A", 0xE8: "SET 5,(IX+d),B", 0xE9: "SET 5,(IX+d),C", 0xEA: "SET 5,(IX+d),D", 0xEB: "SET 5,(IX+d),E", 0xEC: "SET 5,(IX+d),H", 0xED: "SET 5,(IX+d),L", 0xEE: "SET 5,(IX+d)", 0xEF: "SET 5,(IX+d),A", 0xF0: "SET 6,(IX+d),B", 0xF1: "SET 6,(IX+d),C", 0xF2: "SET 6,(IX+d),D", 0xF3: "SET 6,(IX+d),E", 0xF4: "SET 6,(IX+d),H", 0xF5: "SET 6,(IX+d),L", 0xF6: "SET 6,(IX+d)", 0xF7: "SET 6,(IX+d),A", 0xF8: "SET 7,(IX+d),B", 0xF9: "SET 7,(IX+d),C", 0xFA: "SET 7,(IX+d),D", 0xFB: "SET 7,(IX+d),E", 0xFC: "SET 7,(IX+d),H", 0xFD: "SET 7,(IX+d),L", 0xFE: "SET 7,(IX+d)", 0xFF: "SET 7,(IX+d),A", 0x100: "PREFIX" }; var disassembly_fdcb={ 0x00: "RLC (IY+d),B", 0x01: "RLC (IY+d),C", 0x02: "RLC (IY+d),D", 0x03: "RLC (IY+d),E", 0x04: "RLC (IY+d),H", 0x05: "RLC (IY+d),L", 0x06: "RLC (IY+d)", 0x07: "RLC (IY+d),A", 0x08: "RRC (IY+d),B", 0x09: "RRC (IY+d),C", 0x0A: "RRC (IY+d),D", 0x0B: "RRC (IY+d),E", 0x0C: "RRC (IY+d),H", 0x0D: "RRC (IY+d),L", 0x0E: "RRC (IY+d)", 0x0F: "RRC (IY+d),A", 0x10: "RL (IY+d),B", 0x11: "RL (IY+d),C", 0x12: "RL (IY+d),D", 0x13: "RL (IY+d),E", 0x14: "RL (IY+d),H", 0x15: "RL (IY+d),L", 0x16: "RL (IY+d)", 0x17: "RL (IY+d),A", 0x18: "RR (IY+d),B", 0x19: "RR (IY+d),C", 0x1A: "RR (IY+d),D", 0x1B: "RR (IY+d),E", 0x1C: "RR (IY+d),H", 0x1D: "RR (IY+d),L", 0x1E: "RR (IY+d)", 0x1F: "RR (IY+d),A", 0x20: "SLA (IY+d),B", 0x21: "SLA (IY+d),C", 0x22: "SLA (IY+d),D", 0x23: "SLA (IY+d),E", 0x24: "SLA (IY+d),H", 0x25: "SLA (IY+d),L", 0x26: "SLA (IY+d)", 0x27: "SLA (IY+d),A", 0x28: "SRA (IY+d),B", 0x29: "SRA (IY+d),C", 0x2A: "SRA (IY+d),D", 0x2B: "SRA (IY+d),E", 0x2C: "SRA (IY+d),H", 0x2D: "SRA (IY+d),L", 0x2E: "SRA (IY+d)", 0x2F: "SRA (IY+d),A", 0x30: "SLL (IY+d),B", 0x31: "SLL (IY+d),C", 0x32: "SLL (IY+d),D", 0x33: "SLL (IY+d),E", 0x34: "SLL (IY+d),H", 0x35: "SLL (IY+d),L", 0x36: "SLL (IY+d)", 0x37: "SLL (IY+d),A", 0x38: "SRL (IY+d),B", 0x39: "SRL (IY+d),C", 0x3A: "SRL (IY+d),D", 0x3B: "SRL (IY+d),E", 0x3C: "SRL (IY+d),H", 0x3D: "SRL (IY+d),L", 0x3E: "SRL (IY+d)", 0x3F: "SRL (IY+d),A", 0x40: "BIT 0,(IY+d)", 0x41: "BIT 0,(IY+d)", 0x42: "BIT 0,(IY+d)", 0x43: "BIT 0,(IY+d)", 0x44: "BIT 0,(IY+d)", 0x45: "BIT 0,(IY+d)", 0x46: "BIT 0,(IY+d)", 0x47: "BIT 0,(IY+d)", 0x48: "BIT 1,(IY+d)", 0x49: "BIT 1,(IY+d)", 0x4A: "BIT 1,(IY+d)", 0x4B: "BIT 1,(IY+d)", 0x4C: "BIT 1,(IY+d)", 0x4D: "BIT 1,(IY+d)", 0x4E: "BIT 1,(IY+d)", 0x4F: "BIT 1,(IY+d)", 0x50: "BIT 2,(IY+d)", 0x51: "BIT 2,(IY+d)", 0x52: "BIT 2,(IY+d)", 0x53: "BIT 2,(IY+d)", 0x54: "BIT 2,(IY+d)", 0x55: "BIT 2,(IY+d)", 0x56: "BIT 2,(IY+d)", 0x57: "BIT 2,(IY+d)", 0x58: "BIT 3,(IY+d)", 0x59: "BIT 3,(IY+d)", 0x5A: "BIT 3,(IY+d)", 0x5B: "BIT 3,(IY+d)", 0x5C: "BIT 3,(IY+d)", 0x5D: "BIT 3,(IY+d)", 0x5E: "BIT 3,(IY+d)", 0x5F: "BIT 3,(IY+d)", 0x60: "BIT 4,(IY+d)", 0x61: "BIT 4,(IY+d)", 0x62: "BIT 4,(IY+d)", 0x63: "BIT 4,(IY+d)", 0x64: "BIT 4,(IY+d)", 0x65: "BIT 4,(IY+d)", 0x66: "BIT 4,(IY+d)", 0x67: "BIT 4,(IY+d)", 0x68: "BIT 5,(IY+d)", 0x69: "BIT 5,(IY+d)", 0x6A: "BIT 5,(IY+d)", 0x6B: "BIT 5,(IY+d)", 0x6C: "BIT 5,(IY+d)", 0x6D: "BIT 5,(IY+d)", 0x6E: "BIT 5,(IY+d)", 0x6F: "BIT 5,(IY+d)", 0x70: "BIT 6,(IY+d)", 0x71: "BIT 6,(IY+d)", 0x72: "BIT 6,(IY+d)", 0x73: "BIT 6,(IY+d)", 0x74: "BIT 6,(IY+d)", 0x75: "BIT 6,(IY+d)", 0x76: "BIT 6,(IY+d)", 0x77: "BIT 6,(IY+d)", 0x78: "BIT 7,(IY+d)", 0x79: "BIT 7,(IY+d)", 0x7A: "BIT 7,(IY+d)", 0x7B: "BIT 7,(IY+d)", 0x7C: "BIT 7,(IY+d)", 0x7D: "BIT 7,(IY+d)", 0x7E: "BIT 7,(IY+d)", 0x7F: "BIT 7,(IY+d)", 0x80: "RES 0,(IY+d),B", 0x81: "RES 0,(IY+d),C", 0x82: "RES 0,(IY+d),D", 0x83: "RES 0,(IY+d),E", 0x84: "RES 0,(IY+d),H", 0x85: "RES 0,(IY+d),L", 0x86: "RES 0,(IY+d)", 0x87: "RES 0,(IY+d),A", 0x88: "RES 1,(IY+d),B", 0x89: "RES 1,(IY+d),C", 0x8A: "RES 1,(IY+d),D", 0x8B: "RES 1,(IY+d),E", 0x8C: "RES 1,(IY+d),H", 0x8D: "RES 1,(IY+d),L", 0x8E: "RES 1,(IY+d)", 0x8F: "RES 1,(IY+d),A", 0x90: "RES 2,(IY+d),B", 0x91: "RES 2,(IY+d),C", 0x92: "RES 2,(IY+d),D", 0x93: "RES 2,(IY+d),E", 0x94: "RES 2,(IY+d),H", 0x95: "RES 2,(IY+d),L", 0x96: "RES 2,(IY+d)", 0x97: "RES 2,(IY+d),A", 0x98: "RES 3,(IY+d),B", 0x99: "RES 3,(IY+d),C", 0x9A: "RES 3,(IY+d),D", 0x9B: "RES 3,(IY+d),E", 0x9C: "RES 3,(IY+d),H", 0x9D: "RES 3,(IY+d),L", 0x9E: "RES 3,(IY+d)", 0x9F: "RES 3,(IY+d),A", 0xA0: "RES 4,(IY+d),B", 0xA1: "RES 4,(IY+d),C", 0xA2: "RES 4,(IY+d),D", 0xA3: "RES 4,(IY+d),E", 0xA4: "RES 4,(IY+d),H", 0xA5: "RES 4,(IY+d),L", 0xA6: "RES 4,(IY+d)", 0xA7: "RES 4,(IY+d),A", 0xA8: "RES 5,(IY+d),B", 0xA9: "RES 5,(IY+d),C", 0xAA: "RES 5,(IY+d),D", 0xAB: "RES 5,(IY+d),E", 0xAC: "RES 5,(IY+d),H", 0xAD: "RES 5,(IY+d),L", 0xAE: "RES 5,(IY+d)", 0xAF: "RES 5,(IY+d),A", 0xB0: "RES 6,(IY+d),B", 0xB1: "RES 6,(IY+d),C", 0xB2: "RES 6,(IY+d),D", 0xB3: "RES 6,(IY+d),E", 0xB4: "RES 6,(IY+d),H", 0xB5: "RES 6,(IY+d),L", 0xB6: "RES 6,(IY+d)", 0xB7: "RES 6,(IY+d),A", 0xB8: "RES 7,(IY+d),B", 0xB9: "RES 7,(IY+d),C", 0xBA: "RES 7,(IY+d),D", 0xBB: "RES 7,(IY+d),E", 0xBC: "RES 7,(IY+d),H", 0xBD: "RES 7,(IY+d),L", 0xBE: "RES 7,(IY+d)", 0xBF: "RES 7,(IY+d),A", 0xC0: "SET 0,(IY+d),B", 0xC1: "SET 0,(IY+d),C", 0xC2: "SET 0,(IY+d),D", 0xC3: "SET 0,(IY+d),E", 0xC4: "SET 0,(IY+d),H", 0xC5: "SET 0,(IY+d),L", 0xC6: "SET 0,(IY+d)", 0xC7: "SET 0,(IY+d),A", 0xC8: "SET 1,(IY+d),B", 0xC9: "SET 1,(IY+d),C", 0xCA: "SET 1,(IY+d),D", 0xCB: "SET 1,(IY+d),E", 0xCC: "SET 1,(IY+d),H", 0xCD: "SET 1,(IY+d),L", 0xCE: "SET 1,(IY+d)", 0xCF: "SET 1,(IY+d),A", 0xD0: "SET 2,(IY+d),B", 0xD1: "SET 2,(IY+d),C", 0xD2: "SET 2,(IY+d),D", 0xD3: "SET 2,(IY+d),E", 0xD4: "SET 2,(IY+d),H", 0xD5: "SET 2,(IY+d),L", 0xD6: "SET 2,(IY+d)", 0xD7: "SET 2,(IY+d),A", 0xD8: "SET 3,(IY+d),B", 0xD9: "SET 3,(IY+d),C", 0xDA: "SET 3,(IY+d),D", 0xDB: "SET 3,(IY+d),E", 0xDC: "SET 3,(IY+d),H", 0xDD: "SET 3,(IY+d),L", 0xDE: "SET 3,(IY+d)", 0xDF: "SET 3,(IY+d),A", 0xE0: "SET 4,(IY+d),B", 0xE1: "SET 4,(IY+d),C", 0xE2: "SET 4,(IY+d),D", 0xE3: "SET 4,(IY+d),E", 0xE4: "SET 4,(IY+d),H", 0xE5: "SET 4,(IY+d),L", 0xE6: "SET 4,(IY+d)", 0xE7: "SET 4,(IY+d),A", 0xE8: "SET 5,(IY+d),B", 0xE9: "SET 5,(IY+d),C", 0xEA: "SET 5,(IY+d),D", 0xEB: "SET 5,(IY+d),E", 0xEC: "SET 5,(IY+d),H", 0xED: "SET 5,(IY+d),L", 0xEE: "SET 5,(IY+d)", 0xEF: "SET 5,(IY+d),A", 0xF0: "SET 6,(IY+d),B", 0xF1: "SET 6,(IY+d),C", 0xF2: "SET 6,(IY+d),D", 0xF3: "SET 6,(IY+d),E", 0xF4: "SET 6,(IY+d),H", 0xF5: "SET 6,(IY+d),L", 0xF6: "SET 6,(IY+d)", 0xF7: "SET 6,(IY+d),A", 0xF8: "SET 7,(IY+d),B", 0xF9: "SET 7,(IY+d),C", 0xFA: "SET 7,(IY+d),D", 0xFB: "SET 7,(IY+d),E", 0xFC: "SET 7,(IY+d),H", 0xFD: "SET 7,(IY+d),L", 0xFE: "SET 7,(IY+d)", 0xFF: "SET 7,(IY+d),A", 0x100: "PREFIX" };