visual6502/chip-z80/support.js

2485 lines
55 KiB
JavaScript

// 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 <op>
// DD <op>
// ED <op>
// FD <op>
// DD CB <op>
// FD CB <op>
//
// 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<TCStates.length;i++){
var t=TCStates[i];
if (isNodeHigh(nodenames[t])) s.push(t.slice(0,3));
}
return s.join(" ");
}
function busToHexInv(busname){
var value=busToHex(busname)
if (typeof value != "undefined")
return value.replace(/./g,function(x){return (15-parseInt(x,16)).toString(16)});
else
return undefined;;
}
function busToString(busname){
// takes a signal name or prefix
// returns an appropriate string representation
// some 'signal names' are CPU-specific aliases to user-friendly string output
if(busname=='cycle')
return cycle>>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(/ /,'&nbsp;');
}
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"
};