2011-01-12 16:55:14 +01:00

563 lines
24 KiB
C++
Executable File

#ifdef CPU_CPP
string CPU::disassemble(uint16 pc) {
char output[80];
memset(output, ' ', sizeof output);
output[79] = 0;
string opcode = disassemble_opcode(pc);
// Terrible hack is terrible. :( Gief vartemplates!
string registers = string(
string(string(" AF:"), hex<4>(r[AF])),
string(string(" BC:"), hex<4>(r[BC])),
string(string(" DE:"), hex<4>(r[DE])),
string(string(" HL:"), hex<4>(r[HL])),
string(string(" SP:"), hex<4>(r[SP]))
);
memcpy(output + 0, hex<4>(pc), 4);
memcpy(output + 6, opcode, opcode.length());
memcpy(output + 23, registers, registers.length());
output[63] = 0;
return output;
}
string CPU::disassemble_opcode(uint16 pc) {
uint8 opcode = bus.read(pc);
uint8 p0 = bus.read(pc + 1);
uint8 p1 = bus.read(pc + 2);
uint8 p2 = bus.read(pc + 3);
switch(opcode) {
case 0x00: return string( "nop" );
case 0x01: return string( "ld bc,$", hex<2>(p1), hex<2>(p0) );
case 0x02: return string( "ld (bc),a" );
case 0x03: return string( "inc bc" );
case 0x04: return string( "inc b" );
case 0x05: return string( "dec b" );
case 0x06: return string( "ld b,$", hex<2>(p0) );
case 0x07: return string( "rlc a" );
case 0x08: return string( "ld ($", hex<2>(p1), hex<2>(p0), "),sp" );
case 0x09: return string( "add hl,bc" );
case 0x0a: return string( "ld a,(bc)" );
case 0x0b: return string( "dec bc" );
case 0x0c: return string( "inc c" );
case 0x0d: return string( "dec c" );
case 0x0e: return string( "ld c,$", hex<2>(p0) );
case 0x0f: return string( "rrc a" );
case 0x10: return string( "stop" );
case 0x11: return string( "ld de,$", hex<2>(p1), hex<2>(p0) );
case 0x12: return string( "ld (de),a" );
case 0x13: return string( "inc de" );
case 0x14: return string( "inc d" );
case 0x15: return string( "dec d" );
case 0x16: return string( "ld d,$", hex<2>(p0) );
case 0x17: return string( "rl a" );
case 0x18: return string( "jr $", hex<4>(r[PC] + 2 + (int8)p0) );
case 0x19: return string( "add hl,de" );
case 0x1a: return string( "ld a,(de)" );
case 0x1b: return string( "dec de" );
case 0x1c: return string( "inc e" );
case 0x1d: return string( "dec e" );
case 0x1e: return string( "ld e,$", hex<2>(p0) );
case 0x1f: return string( "rr a" );
case 0x20: return string( "jr nz,$", hex<4>(r[PC] + 2 + (int8)p0) );
case 0x21: return string( "ld hl,$", hex<2>(p1), hex<2>(p0) );
case 0x22: return string( "ldi (hl),a" );
case 0x23: return string( "inc hl" );
case 0x24: return string( "inc h" );
case 0x25: return string( "dec h" );
case 0x26: return string( "ld h,$", hex<2>(p0) );
case 0x27: return string( "daa" );
case 0x28: return string( "jr z,$", hex<4>(r[PC] + 2 + (int8)p0) );
case 0x29: return string( "add hl,hl" );
case 0x2a: return string( "ldi a,(hl)" );
case 0x2b: return string( "dec hl" );
case 0x2c: return string( "inc l" );
case 0x2d: return string( "dec l" );
case 0x2e: return string( "ld l,$", hex<2>(p0) );
case 0x2f: return string( "cpl" );
case 0x30: return string( "jr nc,$", hex<4>(r[PC] + 2 + (int8)p0) );
case 0x31: return string( "ld sp,$", hex<2>(p1), hex<2>(p0) );
case 0x32: return string( "ldd (hl),a" );
case 0x33: return string( "inc sp" );
case 0x34: return string( "inc (hl)" );
case 0x35: return string( "dec (hl)" );
case 0x36: return string( "ld (hl),$", hex<2>(p0) );
case 0x37: return string( "scf" );
case 0x38: return string( "jr c,$", hex<4>(r[PC] + 2 + (int8)p0) );
case 0x39: return string( "add hl,sp" );
case 0x3a: return string( "ldd a,(hl)" );
case 0x3b: return string( "dec sp" );
case 0x3c: return string( "inc a" );
case 0x3d: return string( "dec a" );
case 0x3e: return string( "ld a,$", hex<2>(p0) );
case 0x3f: return string( "ccf" );
case 0x40: return string( "ld b,b" );
case 0x41: return string( "ld b,c" );
case 0x42: return string( "ld b,d" );
case 0x43: return string( "ld b,e" );
case 0x44: return string( "ld b,h" );
case 0x45: return string( "ld b,l" );
case 0x46: return string( "ld b,(hl)" );
case 0x47: return string( "ld b,a" );
case 0x48: return string( "ld c,b" );
case 0x49: return string( "ld c,c" );
case 0x4a: return string( "ld c,d" );
case 0x4b: return string( "ld c,e" );
case 0x4c: return string( "ld c,h" );
case 0x4d: return string( "ld c,l" );
case 0x4e: return string( "ld c,(hl)" );
case 0x4f: return string( "ld c,a" );
case 0x50: return string( "ld d,b" );
case 0x51: return string( "ld d,c" );
case 0x52: return string( "ld d,d" );
case 0x53: return string( "ld d,e" );
case 0x54: return string( "ld d,h" );
case 0x55: return string( "ld d,l" );
case 0x56: return string( "ld d,(hl)" );
case 0x57: return string( "ld d,a" );
case 0x58: return string( "ld e,b" );
case 0x59: return string( "ld e,c" );
case 0x5a: return string( "ld e,d" );
case 0x5b: return string( "ld e,e" );
case 0x5c: return string( "ld e,h" );
case 0x5d: return string( "ld e,l" );
case 0x5e: return string( "ld e,(hl)" );
case 0x5f: return string( "ld e,a" );
case 0x60: return string( "ld h,b" );
case 0x61: return string( "ld h,c" );
case 0x62: return string( "ld h,d" );
case 0x63: return string( "ld h,e" );
case 0x64: return string( "ld h,h" );
case 0x65: return string( "ld h,l" );
case 0x66: return string( "ld h,(hl)" );
case 0x67: return string( "ld h,a" );
case 0x68: return string( "ld l,b" );
case 0x69: return string( "ld l,c" );
case 0x6a: return string( "ld l,d" );
case 0x6b: return string( "ld l,e" );
case 0x6c: return string( "ld l,h" );
case 0x6d: return string( "ld l,l" );
case 0x6e: return string( "ld l,(hl)" );
case 0x6f: return string( "ld l,a" );
case 0x70: return string( "ld (hl),b" );
case 0x71: return string( "ld (hl),c" );
case 0x72: return string( "ld (hl),d" );
case 0x73: return string( "ld (hl),e" );
case 0x74: return string( "ld (hl),h" );
case 0x75: return string( "ld (hl),l" );
case 0x76: return string( "halt" );
case 0x77: return string( "ld (hl),a" );
case 0x78: return string( "ld a,b" );
case 0x79: return string( "ld a,c" );
case 0x7a: return string( "ld a,d" );
case 0x7b: return string( "ld a,e" );
case 0x7c: return string( "ld a,h" );
case 0x7d: return string( "ld a,l" );
case 0x7e: return string( "ld a,(hl)" );
case 0x7f: return string( "ld a,a" );
case 0x80: return string( "add a,b" );
case 0x81: return string( "add a,c" );
case 0x82: return string( "add a,d" );
case 0x83: return string( "add a,e" );
case 0x84: return string( "add a,h" );
case 0x85: return string( "add a,l" );
case 0x86: return string( "add a,(hl)" );
case 0x87: return string( "add a,a" );
case 0x88: return string( "adc a,b" );
case 0x89: return string( "adc a,c" );
case 0x8a: return string( "adc a,d" );
case 0x8b: return string( "adc a,e" );
case 0x8c: return string( "adc a,h" );
case 0x8d: return string( "adc a,l" );
case 0x8e: return string( "adc a,(hl)" );
case 0x8f: return string( "adc a,a" );
case 0x90: return string( "sub a,b" );
case 0x91: return string( "sub a,c" );
case 0x92: return string( "sub a,d" );
case 0x93: return string( "sub a,e" );
case 0x94: return string( "sub a,h" );
case 0x95: return string( "sub a,l" );
case 0x96: return string( "sub a,(hl)" );
case 0x97: return string( "sub a,a" );
case 0x98: return string( "sbc a,b" );
case 0x99: return string( "sbc a,c" );
case 0x9a: return string( "sbc a,d" );
case 0x9b: return string( "sbc a,e" );
case 0x9c: return string( "sbc a,h" );
case 0x9d: return string( "sbc a,l" );
case 0x9e: return string( "sbc a,(hl)" );
case 0x9f: return string( "sbc a,a" );
case 0xa0: return string( "and a,b" );
case 0xa1: return string( "and a,c" );
case 0xa2: return string( "and a,d" );
case 0xa3: return string( "and a,e" );
case 0xa4: return string( "and a,h" );
case 0xa5: return string( "and a,l" );
case 0xa6: return string( "and a,(hl)" );
case 0xa7: return string( "and a,a" );
case 0xa8: return string( "xor a,b" );
case 0xa9: return string( "xor a,c" );
case 0xaa: return string( "xor a,d" );
case 0xab: return string( "xor a,e" );
case 0xac: return string( "xor a,h" );
case 0xad: return string( "xor a,l" );
case 0xae: return string( "xor a,(hl)" );
case 0xaf: return string( "xor a,a" );
case 0xb0: return string( "or a,b" );
case 0xb1: return string( "or a,c" );
case 0xb2: return string( "or a,d" );
case 0xb3: return string( "or a,e" );
case 0xb4: return string( "or a,h" );
case 0xb5: return string( "or a,l" );
case 0xb6: return string( "or a,(hl)" );
case 0xb7: return string( "or a,a" );
case 0xb8: return string( "cp a,b" );
case 0xb9: return string( "cp a,c" );
case 0xba: return string( "cp a,d" );
case 0xbb: return string( "cp a,e" );
case 0xbc: return string( "cp a,h" );
case 0xbd: return string( "cp a,l" );
case 0xbe: return string( "cp a,(hl)" );
case 0xbf: return string( "cp a,a" );
case 0xc0: return string( "ret nz" );
case 0xc1: return string( "pop bc" );
case 0xc2: return string( "jp nz,$", hex<2>(p1), hex<2>(p0) );
case 0xc3: return string( "jp $", hex<2>(p1), hex<2>(p0) );
case 0xc4: return string( "call nz,$", hex<2>(p1), hex<2>(p0) );
case 0xc5: return string( "push bc" );
case 0xc6: return string( "add a,$", hex<2>(p0) );
case 0xc7: return string( "rst $0000" );
case 0xc8: return string( "ret z" );
case 0xc9: return string( "ret" );
case 0xca: return string( "jp z,$", hex<2>(p1), hex<2>(p0) );
case 0xcb: return disassemble_opcode_cb(pc + 1);
case 0xcc: return string( "call z,$", hex<2>(p1), hex<2>(p0) );
case 0xcd: return string( "call $", hex<2>(p1), hex<2>(p0) );
case 0xce: return string( "adc a,$", hex<2>(p0) );
case 0xcf: return string( "rst $0008" );
case 0xd0: return string( "ret nc" );
case 0xd1: return string( "pop de" );
case 0xd2: return string( "jp nc,$", hex<2>(p1), hex<2>(p0) );
case 0xd3: return string( "xx" );
case 0xd4: return string( "call nc,$", hex<2>(p1), hex<2>(p0) );
case 0xd5: return string( "push de" );
case 0xd6: return string( "sub a,$", hex<2>(p0) );
case 0xd7: return string( "rst $0010" );
case 0xd8: return string( "ret c" );
case 0xd9: return string( "reti" );
case 0xda: return string( "jp c,$", hex<2>(p1), hex<2>(p0) );
case 0xdb: return string( "xx" );
case 0xdc: return string( "call c,$", hex<2>(p1), hex<2>(p0) );
case 0xdd: return string( "xx" );
case 0xde: return string( "sbc a,$", hex<2>(p0) );
case 0xdf: return string( "rst $0018" );
case 0xe0: return string( "ld ($ff", hex<2>(p0), "),a" );
case 0xe1: return string( "pop hl" );
case 0xe2: return string( "ld ($ff00+c),a" );
case 0xe3: return string( "xx" );
case 0xe4: return string( "xx" );
case 0xe5: return string( "push hl" );
case 0xe6: return string( "and a,$", hex<2>(p0) );
case 0xe7: return string( "rst $0020" );
case 0xe8: return string( "add sp,$", hex<4>((int8)p0) );
case 0xe9: return string( "jp hl" );
case 0xea: return string( "ld ($", hex<2>(p1), hex<2>(p0), "),a" );
case 0xeb: return string( "xx" );
case 0xec: return string( "xx" );
case 0xed: return string( "xx" );
case 0xee: return string( "xor a,$", hex<2>(p0) );
case 0xef: return string( "rst $0028" );
case 0xf0: return string( "ld a,($ff", hex<2>(p0), ")" );
case 0xf1: return string( "pop af" );
case 0xf2: return string( "ld a,($ff00+c)" );
case 0xf3: return string( "di" );
case 0xf4: return string( "xx" );
case 0xf5: return string( "push af" );
case 0xf6: return string( "or a,$", hex<2>(p0) );
case 0xf7: return string( "rst $0030" );
case 0xf8: return string( "ld hl,sp+$", hex<4>((int8)p0) );
case 0xf9: return string( "ld sp,hl" );
case 0xfa: return string( "ld a,($", hex<2>(p1), hex<2>(p0), ")" );
case 0xfb: return string( "ei" );
case 0xfc: return string( "xx" );
case 0xfd: return string( "xx" );
case 0xfe: return string( "cp a,$", hex<2>(p0) );
case 0xff: return string( "rst $0038" );
}
return "";
}
string CPU::disassemble_opcode_cb(uint16 pc) {
uint8 opcode = bus.read(pc);
uint8 p0 = bus.read(pc + 1);
uint8 p1 = bus.read(pc + 2);
uint8 p2 = bus.read(pc + 3);
switch(opcode) {
case 0x00: return string( "rlc b" );
case 0x01: return string( "rlc c" );
case 0x02: return string( "rlc d" );
case 0x03: return string( "rlc e" );
case 0x04: return string( "rlc h" );
case 0x05: return string( "rlc l" );
case 0x06: return string( "rlc (hl)" );
case 0x07: return string( "rlc a" );
case 0x08: return string( "rrc b" );
case 0x09: return string( "rrc c" );
case 0x0a: return string( "rrc d" );
case 0x0b: return string( "rrc e" );
case 0x0c: return string( "rrc h" );
case 0x0d: return string( "rrc l" );
case 0x0e: return string( "rrc (hl)" );
case 0x0f: return string( "rrc a" );
case 0x10: return string( "rl b" );
case 0x11: return string( "rl c" );
case 0x12: return string( "rl d" );
case 0x13: return string( "rl e" );
case 0x14: return string( "rl h" );
case 0x15: return string( "rl l" );
case 0x16: return string( "rl (hl)" );
case 0x17: return string( "rl a" );
case 0x18: return string( "rr b" );
case 0x19: return string( "rr c" );
case 0x1a: return string( "rr d" );
case 0x1b: return string( "rr e" );
case 0x1c: return string( "rr h" );
case 0x1d: return string( "rr l" );
case 0x1e: return string( "rr (hl)" );
case 0x1f: return string( "rr a" );
case 0x20: return string( "sla b" );
case 0x21: return string( "sla c" );
case 0x22: return string( "sla d" );
case 0x23: return string( "sla e" );
case 0x24: return string( "sla h" );
case 0x25: return string( "sla l" );
case 0x26: return string( "sla (hl)" );
case 0x27: return string( "sla a" );
case 0x28: return string( "sra b" );
case 0x29: return string( "sra c" );
case 0x2a: return string( "sra d" );
case 0x2b: return string( "sra e" );
case 0x2c: return string( "sra h" );
case 0x2d: return string( "sra l" );
case 0x2e: return string( "sra (hl)" );
case 0x2f: return string( "sra a" );
case 0x30: return string( "swap b" );
case 0x31: return string( "swap c" );
case 0x32: return string( "swap d" );
case 0x33: return string( "swap e" );
case 0x34: return string( "swap h" );
case 0x35: return string( "swap l" );
case 0x36: return string( "swap (hl)" );
case 0x37: return string( "swap a" );
case 0x38: return string( "srl b" );
case 0x39: return string( "srl c" );
case 0x3a: return string( "srl d" );
case 0x3b: return string( "srl e" );
case 0x3c: return string( "srl h" );
case 0x3d: return string( "srl l" );
case 0x3e: return string( "srl (hl)" );
case 0x3f: return string( "srl a" );
case 0x40: return string( "bit 0,b" );
case 0x41: return string( "bit 0,c" );
case 0x42: return string( "bit 0,d" );
case 0x43: return string( "bit 0,e" );
case 0x44: return string( "bit 0,h" );
case 0x45: return string( "bit 0,l" );
case 0x46: return string( "bit 0,(hl)" );
case 0x47: return string( "bit 0,a" );
case 0x48: return string( "bit 1,b" );
case 0x49: return string( "bit 1,c" );
case 0x4a: return string( "bit 1,d" );
case 0x4b: return string( "bit 1,e" );
case 0x4c: return string( "bit 1,h" );
case 0x4d: return string( "bit 1,l" );
case 0x4e: return string( "bit 1,(hl)" );
case 0x4f: return string( "bit 1,a" );
case 0x50: return string( "bit 2,b" );
case 0x51: return string( "bit 2,c" );
case 0x52: return string( "bit 2,d" );
case 0x53: return string( "bit 2,e" );
case 0x54: return string( "bit 2,h" );
case 0x55: return string( "bit 2,l" );
case 0x56: return string( "bit 2,(hl)" );
case 0x57: return string( "bit 2,a" );
case 0x58: return string( "bit 3,b" );
case 0x59: return string( "bit 3,c" );
case 0x5a: return string( "bit 3,d" );
case 0x5b: return string( "bit 3,e" );
case 0x5c: return string( "bit 3,h" );
case 0x5d: return string( "bit 3,l" );
case 0x5e: return string( "bit 3,(hl)" );
case 0x5f: return string( "bit 3,a" );
case 0x60: return string( "bit 4,b" );
case 0x61: return string( "bit 4,c" );
case 0x62: return string( "bit 4,d" );
case 0x63: return string( "bit 4,e" );
case 0x64: return string( "bit 4,h" );
case 0x65: return string( "bit 4,l" );
case 0x66: return string( "bit 4,(hl)" );
case 0x67: return string( "bit 4,a" );
case 0x68: return string( "bit 5,b" );
case 0x69: return string( "bit 5,c" );
case 0x6a: return string( "bit 5,d" );
case 0x6b: return string( "bit 5,e" );
case 0x6c: return string( "bit 5,h" );
case 0x6d: return string( "bit 5,l" );
case 0x6e: return string( "bit 5,(hl)" );
case 0x6f: return string( "bit 5,a" );
case 0x70: return string( "bit 6,b" );
case 0x71: return string( "bit 6,c" );
case 0x72: return string( "bit 6,d" );
case 0x73: return string( "bit 6,e" );
case 0x74: return string( "bit 6,h" );
case 0x75: return string( "bit 6,l" );
case 0x76: return string( "bit 6,(hl)" );
case 0x77: return string( "bit 6,a" );
case 0x78: return string( "bit 7,b" );
case 0x79: return string( "bit 7,c" );
case 0x7a: return string( "bit 7,d" );
case 0x7b: return string( "bit 7,e" );
case 0x7c: return string( "bit 7,h" );
case 0x7d: return string( "bit 7,l" );
case 0x7e: return string( "bit 7,(hl)" );
case 0x7f: return string( "bit 7,a" );
case 0x80: return string( "res 0,b" );
case 0x81: return string( "res 0,c" );
case 0x82: return string( "res 0,d" );
case 0x83: return string( "res 0,e" );
case 0x84: return string( "res 0,h" );
case 0x85: return string( "res 0,l" );
case 0x86: return string( "res 0,(hl)" );
case 0x87: return string( "res 0,a" );
case 0x88: return string( "res 1,b" );
case 0x89: return string( "res 1,c" );
case 0x8a: return string( "res 1,d" );
case 0x8b: return string( "res 1,e" );
case 0x8c: return string( "res 1,h" );
case 0x8d: return string( "res 1,l" );
case 0x8e: return string( "res 1,(hl)" );
case 0x8f: return string( "res 1,a" );
case 0x90: return string( "res 2,b" );
case 0x91: return string( "res 2,c" );
case 0x92: return string( "res 2,d" );
case 0x93: return string( "res 2,e" );
case 0x94: return string( "res 2,h" );
case 0x95: return string( "res 2,l" );
case 0x96: return string( "res 2,(hl)" );
case 0x97: return string( "res 2,a" );
case 0x98: return string( "res 3,b" );
case 0x99: return string( "res 3,c" );
case 0x9a: return string( "res 3,d" );
case 0x9b: return string( "res 3,e" );
case 0x9c: return string( "res 3,h" );
case 0x9d: return string( "res 3,l" );
case 0x9e: return string( "res 3,(hl)" );
case 0x9f: return string( "res 3,a" );
case 0xa0: return string( "res 4,b" );
case 0xa1: return string( "res 4,c" );
case 0xa2: return string( "res 4,d" );
case 0xa3: return string( "res 4,e" );
case 0xa4: return string( "res 4,h" );
case 0xa5: return string( "res 4,l" );
case 0xa6: return string( "res 4,(hl)" );
case 0xa7: return string( "res 4,a" );
case 0xa8: return string( "res 5,b" );
case 0xa9: return string( "res 5,c" );
case 0xaa: return string( "res 5,d" );
case 0xab: return string( "res 5,e" );
case 0xac: return string( "res 5,h" );
case 0xad: return string( "res 5,l" );
case 0xae: return string( "res 5,(hl)" );
case 0xaf: return string( "res 5,a" );
case 0xb0: return string( "res 6,b" );
case 0xb1: return string( "res 6,c" );
case 0xb2: return string( "res 6,d" );
case 0xb3: return string( "res 6,e" );
case 0xb4: return string( "res 6,h" );
case 0xb5: return string( "res 6,l" );
case 0xb6: return string( "res 6,(hl)" );
case 0xb7: return string( "res 6,a" );
case 0xb8: return string( "res 7,b" );
case 0xb9: return string( "res 7,c" );
case 0xba: return string( "res 7,d" );
case 0xbb: return string( "res 7,e" );
case 0xbc: return string( "res 7,h" );
case 0xbd: return string( "res 7,l" );
case 0xbe: return string( "res 7,(hl)" );
case 0xbf: return string( "res 7,a" );
case 0xc0: return string( "set 0,b" );
case 0xc1: return string( "set 0,c" );
case 0xc2: return string( "set 0,d" );
case 0xc3: return string( "set 0,e" );
case 0xc4: return string( "set 0,h" );
case 0xc5: return string( "set 0,l" );
case 0xc6: return string( "set 0,(hl)" );
case 0xc7: return string( "set 0,a" );
case 0xc8: return string( "set 1,b" );
case 0xc9: return string( "set 1,c" );
case 0xca: return string( "set 1,d" );
case 0xcb: return string( "set 1,e" );
case 0xcc: return string( "set 1,h" );
case 0xcd: return string( "set 1,l" );
case 0xce: return string( "set 1,(hl)" );
case 0xcf: return string( "set 1,a" );
case 0xd0: return string( "set 2,b" );
case 0xd1: return string( "set 2,c" );
case 0xd2: return string( "set 2,d" );
case 0xd3: return string( "set 2,e" );
case 0xd4: return string( "set 2,h" );
case 0xd5: return string( "set 2,l" );
case 0xd6: return string( "set 2,(hl)" );
case 0xd7: return string( "set 2,a" );
case 0xd8: return string( "set 3,b" );
case 0xd9: return string( "set 3,c" );
case 0xda: return string( "set 3,d" );
case 0xdb: return string( "set 3,e" );
case 0xdc: return string( "set 3,h" );
case 0xdd: return string( "set 3,l" );
case 0xde: return string( "set 3,(hl)" );
case 0xdf: return string( "set 3,a" );
case 0xe0: return string( "set 4,b" );
case 0xe1: return string( "set 4,c" );
case 0xe2: return string( "set 4,d" );
case 0xe3: return string( "set 4,e" );
case 0xe4: return string( "set 4,h" );
case 0xe5: return string( "set 4,l" );
case 0xe6: return string( "set 4,(hl)" );
case 0xe7: return string( "set 4,a" );
case 0xe8: return string( "set 5,b" );
case 0xe9: return string( "set 5,c" );
case 0xea: return string( "set 5,d" );
case 0xeb: return string( "set 5,e" );
case 0xec: return string( "set 5,h" );
case 0xed: return string( "set 5,l" );
case 0xee: return string( "set 5,(hl)" );
case 0xef: return string( "set 5,a" );
case 0xf0: return string( "set 6,b" );
case 0xf1: return string( "set 6,c" );
case 0xf2: return string( "set 6,d" );
case 0xf3: return string( "set 6,e" );
case 0xf4: return string( "set 6,h" );
case 0xf5: return string( "set 6,l" );
case 0xf6: return string( "set 6,(hl)" );
case 0xf7: return string( "set 6,a" );
case 0xf8: return string( "set 7,b" );
case 0xf9: return string( "set 7,c" );
case 0xfa: return string( "set 7,d" );
case 0xfb: return string( "set 7,e" );
case 0xfc: return string( "set 7,h" );
case 0xfd: return string( "set 7,l" );
case 0xfe: return string( "set 7,(hl)" );
case 0xff: return string( "set 7,a" );
}
return "";
}
#endif