Skip to content

Instantly share code, notes, and snippets.

@cjsmeele
Last active August 8, 2018 01:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cjsmeele/e7d254bd1ffc7b9d639342adc99defb8 to your computer and use it in GitHub Desktop.
Save cjsmeele/e7d254bd1ffc7b9d639342adc99defb8 to your computer and use it in GitHub Desktop.
Game Boy CPU instruction listing with concise (partial) emulator implementation
// Ops {{{
// Copyright (c) 2018, Chris Smeele.
// All rights reserved.
// Rights to the actual ISA may belong to the respective right holders.
// Clock / flag attributes sourced from this table:
// http://pastraiser.com/cpu/gameboy/gameboy_opcodes.html
//
// - e2 and f2 have been changed to size '1' from '2' (this appears to be an error in the table).
// - cb (the prefix) was changed to size '2' from '1', for convenience (all prefixed ops are 2 bytes long).
constexpr static u8 oplen[256] {
// 0 1 2 3 4 5 6 7 8 9 a b c d e f
/* 0x0_ */ 1,3,1,1,1,1,2,1,3,1,1,1,1,1,2,1,
/* 0x1_ */ 2,3,1,1,1,1,2,1,2,1,1,1,1,1,2,1,
/* 0x2_ */ 2,3,1,1,1,1,2,1,2,1,1,1,1,1,2,1,
/* 0x3_ */ 2,3,1,1,1,1,2,1,2,1,1,1,1,1,2,1,
/* 0x4_ */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
/* 0x5_ */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
/* 0x6_ */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
/* 0x7_ */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
/* 0x8_ */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
/* 0x9_ */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
/* 0xa_ */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
/* 0xb_ */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
/* 0xc_ */ 1,1,3,3,3,1,2,1,1,1,3,2,3,3,2,1,
/* 0xd_ */ 1,1,3,1,3,1,2,1,1,1,3,1,3,1,2,1,
/* 0xe_ */ 2,1,1,1,1,1,2,1,2,1,3,1,1,1,2,1,
/* 0xf_ */ 2,1,1,1,1,1,2,1,2,1,3,1,1,1,2,1,
// Len of the 256 CB ops is always 2.
};
#pragma GCC diagnostic ignored "-Wunused-parameter"
// C++ Gods please forgive me, for I have sinned gravely.
#define Q(op) cpu.next_op = [] (Cpu &cpu) { op; };
#define R cpu.state.cpu.regs
#define BR(a) { R.pc(a); cpu.branched = true; }
#define OP cpu.op
#define IMM16 (OP[2] << 8 | OP[1])
#define IMM8 (OP[1])
#define _ (-1)
#define LD8(a, r) R.r(cpu.mcc.load_byte(a))
#define QLD8(a, r, ...) Q(R.r(cpu.mcc.load_byte(a)); __VA_ARGS__)
#define QLD16(a, rh, rl, ...) { cpu.tmpaddr = (a); \
QLD8(cpu.tmpaddr, rl, \
QLD8(cpu.tmpaddr+1, rh, __VA_ARGS__)) }
#define ST8(a, x) cpu.mcc.store_byte(a, x)
#define QST8(a, x, ...) Q(cpu.mcc.store_byte(a, x); __VA_ARGS__)
#define QST16(a, x, ...) Q(cpu.tmpaddr = (a); cpu.tmpval = (x); \
ST8(cpu.tmpaddr, cpu.tmpval & 0xff); \
Q(ST8(cpu.tmpaddr+1, (cpu.tmpval >> 8) & 0xff); __VA_ARGS__))
// PUSH = 3 cycles
#define QPUSH(r, ...) QST16(R.sp()-2,R.r(), Q(R.sp(R.sp()-2); __VA_ARGS__))
// POP = 2 cycles
#define QPOP(rh, rl, ...) QLD16(R.sp(),rh,rl, R.sp(R.sp()+2); __VA_ARGS__)
#define FN(c) [] (Cpu &cpu) { c; }
#define FN_() [] (Cpu &cpu) { abort(); }
#define IMPL_INC(r) { R.r(R.r()+1); R.flags(!R.r(),0,0,_); }
#define IMPL_DEC(r) { R.r(R.r()-1); R.flags(!R.r(),1,0,_); }
//#define IMPL_RL(r) { auto x = R.r(); R.r((x<<1)|(x>>7)); R.flags(!R.r(),0,0,R.r()&1); }
#define IMPL_RL(r) { auto x = R.r(); R.r((x<<1)|R.fc()); R.flags(!R.r(),0,0,!!(x&0x80)); }
#define IMPL_ADD8(r,v) { u8 x = R.r()+v; R.flags(!x,0,0,0); R.r(x); } // XXX
#define IMPL_SUB(v) { u8 x = R.a()-v; R.flags(!x,1,0,0); R.a(x); } // XXX
#define IMPL_CP(v) { u8 x = R.a()-v; R.flags(!x,1,0,0); } // XXX
constexpr static Op *ops[512] {
/* OP NAME ARGS LEN CLK ZNHC */
/* ================================= */
/* 0x00 NOP - 1 4 ---- */ FN(/* :D */),
/* 0x01 LD BC,d16 3 12 ---- */ FN(R.bc(IMM16)),
/* 0x02 LD (BC),A 1 8 ---- */ FN(QST8(R.bc(),R.a())),
/* 0x03 INC BC 1 8 ---- */ FN(Q(R.bc(R.bc()+1))),
/* 0x04 INC B 1 4 Z0H- */ FN(IMPL_INC(b)),
/* 0x05 DEC B 1 4 Z1H- */ FN(IMPL_DEC(b)),
/* 0x06 LD B,d8 2 8 ---- */ FN(R.b(IMM8)),
/* 0x07 RLCA - 1 4 000C */ FN_(),
/* 0x08 LD (a16),SP 3 20 ---- */ FN_(),
/* 0x09 ADD HL,BC 1 8 -0HC */ FN_(),
/* 0x0a LD A,(BC) 1 8 ---- */ FN_(),
/* 0x0b DEC BC 1 8 ---- */ FN(R.bc(R.bc()-1)),
/* 0x0c INC C 1 4 Z0H- */ FN(IMPL_INC(c)),
/* 0x0d DEC C 1 4 Z1H- */ FN(IMPL_DEC(c)),
/* 0x0e LD C,d8 2 8 ---- */ FN(R.c(IMM8)),
/* 0x0f RRCA - 1 4 000C */ FN_(),
/* 0x10 STOP 0 2 4 ---- */ FN(abort()),
/* 0x11 LD DE,d16 3 12 ---- */ FN(R.de(IMM16)),
/* 0x12 LD (DE),A 1 8 ---- */ FN_(),
/* 0x13 INC DE 1 8 ---- */ FN(R.de(R.de()+1)),
/* 0x14 INC D 1 4 Z0H- */ FN(IMPL_INC(d)),
/* 0x15 DEC D 1 4 Z1H- */ FN(IMPL_DEC(d)),
/* 0x16 LD D,d8 2 8 ---- */ FN(R.d(IMM8)),
/* 0x17 RLA - 1 4 000C */ FN(IMPL_RL(a); R.fz(0)),
/* 0x18 JR r8 2 12 ---- */ FN(Q(BR(R.pc() + (s8)IMM8))),
/* 0x19 ADD HL,DE 1 8 -0HC */ FN_(),
/* 0x1a LD A,(DE) 1 8 ---- */ FN(QLD8(R.de(), a)),
/* 0x1b DEC DE 1 8 ---- */ FN(Q(R.de(R.de()-1))),
/* 0x1c INC E 1 4 Z0H- */ FN(IMPL_INC(e)),
/* 0x1d DEC E 1 4 Z1H- */ FN(IMPL_DEC(e)),
/* 0x1e LD E,d8 2 8 ---- */ FN(R.e(IMM8)),
/* 0x1f RRA - 1 4 000C */ FN_(),
/* 0x20 JR NZ,r8 2 12/8 ---- */ FN(if (!R.fz()) Q(BR(R.pc() + (s8)IMM8))),
/* 0x21 LD HL,d16 3 12 ---- */ FN(R.hl(IMM16);),
/* 0x22 LD (HL+),A 1 8 ---- */ FN(QST8(R.hl(),R.a(), R.hl(R.hl()+1))),
/* 0x23 INC HL 1 8 ---- */ FN(Q(R.hl(R.hl()+1))),
/* 0x24 INC H 1 4 Z0H- */ FN(IMPL_INC(h)),
/* 0x25 DEC H 1 4 Z1H- */ FN(IMPL_DEC(h)),
/* 0x26 LD H,d8 2 8 ---- */ FN(R.h(IMM8)),
/* 0x27 DAA - 1 4 Z-0C */ FN_(),
/* 0x28 JR Z,r8 2 12/8 ---- */ FN(if (R.fz()) Q(BR(R.pc() + (s8)IMM8))),
/* 0x29 ADD HL,HL 1 8 -0HC */ FN_(),
/* 0x2a LD A,(HL+) 1 8 ---- */ FN_(),
/* 0x2b DEC HL 1 8 ---- */ FN_(),
/* 0x2c INC L 1 4 Z0H- */ FN_(),
/* 0x2d DEC L 1 4 Z1H- */ FN_(),
/* 0x2e LD L,d8 2 8 ---- */ FN(R.l(IMM8)),
/* 0x2f CPL - 1 4 -11- */ FN_(),
/* 0x30 JR NC,r8 2 12/8 ---- */ FN_(),
/* 0x31 LD SP,d16 3 12 ---- */ FN(R.sp(IMM16);),
/* 0x32 LD (HL-),A 1 8 ---- */ FN(QST8(R.hl(),R.a(), R.hl(R.hl()-1))),
/* 0x33 INC SP 1 8 ---- */ FN_(),
/* 0x34 INC (HL) 1 12 Z0H- */ FN_(),
/* 0x35 DEC (HL) 1 12 Z1H- */ FN_(),
/* 0x36 LD (HL),d8 2 12 ---- */ FN_(),
/* 0x37 SCF - 1 4 -001 */ FN_(),
/* 0x38 JR C,r8 2 12/8 ---- */ FN_(),
/* 0x39 ADD HL,SP 1 8 -0HC */ FN_(),
/* 0x3a LD A,(HL-) 1 8 ---- */ FN_(),
/* 0x3b DEC SP 1 8 ---- */ FN_(),
/* 0x3c INC A 1 4 Z0H- */ FN(IMPL_INC(a)),
/* 0x3d DEC A 1 4 Z1H- */ FN(IMPL_DEC(a)),
/* 0x3e LD A,d8 2 8 ---- */ FN(R.a(IMM8);),
/* 0x3f CCF - 1 4 -00C */ FN_(),
/* 0x40 LD B,B 1 4 ---- */ FN(R.b(R.b())),
/* 0x41 LD B,C 1 4 ---- */ FN(R.b(R.c())),
/* 0x42 LD B,D 1 4 ---- */ FN(R.b(R.d())),
/* 0x43 LD B,E 1 4 ---- */ FN(R.b(R.e())),
/* 0x44 LD B,H 1 4 ---- */ FN(R.b(R.h())),
/* 0x45 LD B,L 1 4 ---- */ FN(R.b(R.l())),
/* 0x46 LD B,(HL) 1 8 ---- */ FN_(),
/* 0x47 LD B,A 1 4 ---- */ FN(R.b(R.a())),
/* 0x48 LD C,B 1 4 ---- */ FN(R.c(R.b())),
/* 0x49 LD C,C 1 4 ---- */ FN(R.c(R.c())),
/* 0x4a LD C,D 1 4 ---- */ FN(R.c(R.d())),
/* 0x4b LD C,E 1 4 ---- */ FN(R.c(R.e())),
/* 0x4c LD C,H 1 4 ---- */ FN(R.c(R.h())),
/* 0x4d LD C,L 1 4 ---- */ FN(R.c(R.l())),
/* 0x4e LD C,(HL) 1 8 ---- */ FN_(),
/* 0x4f LD C,A 1 4 ---- */ FN(R.c(R.a())),
/* 0x50 LD D,B 1 4 ---- */ FN(R.d(R.b())),
/* 0x51 LD D,C 1 4 ---- */ FN(R.d(R.c())),
/* 0x52 LD D,D 1 4 ---- */ FN(R.d(R.d())),
/* 0x53 LD D,E 1 4 ---- */ FN(R.d(R.e())),
/* 0x54 LD D,H 1 4 ---- */ FN(R.d(R.h())),
/* 0x55 LD D,L 1 4 ---- */ FN(R.d(R.l())),
/* 0x56 LD D,(HL) 1 8 ---- */ FN_(),
/* 0x57 LD D,A 1 4 ---- */ FN(R.d(R.a())),
/* 0x58 LD E,B 1 4 ---- */ FN(R.e(R.b())),
/* 0x59 LD E,C 1 4 ---- */ FN(R.e(R.c())),
/* 0x5a LD E,D 1 4 ---- */ FN(R.e(R.d())),
/* 0x5b LD E,E 1 4 ---- */ FN(R.e(R.e())),
/* 0x5c LD E,H 1 4 ---- */ FN(R.e(R.h())),
/* 0x5d LD E,L 1 4 ---- */ FN(R.e(R.l())),
/* 0x5e LD E,(HL) 1 8 ---- */ FN_(),
/* 0x5f LD E,A 1 4 ---- */ FN(R.e(R.a())),
/* 0x60 LD H,B 1 4 ---- */ FN(R.h(R.b())),
/* 0x61 LD H,C 1 4 ---- */ FN(R.h(R.c())),
/* 0x62 LD H,D 1 4 ---- */ FN(R.h(R.d())),
/* 0x63 LD H,E 1 4 ---- */ FN(R.h(R.e())),
/* 0x64 LD H,H 1 4 ---- */ FN(R.h(R.h())),
/* 0x65 LD H,L 1 4 ---- */ FN(R.h(R.l())),
/* 0x66 LD H,(HL) 1 8 ---- */ FN_(),
/* 0x67 LD H,A 1 4 ---- */ FN(R.h(R.a())),
/* 0x68 LD L,B 1 4 ---- */ FN(R.l(R.b())),
/* 0x69 LD L,C 1 4 ---- */ FN(R.l(R.c())),
/* 0x6a LD L,D 1 4 ---- */ FN(R.l(R.d())),
/* 0x6b LD L,E 1 4 ---- */ FN(R.l(R.e())),
/* 0x6c LD L,H 1 4 ---- */ FN(R.l(R.h())),
/* 0x6d LD L,L 1 4 ---- */ FN(R.l(R.l())),
/* 0x6e LD L,(HL) 1 8 ---- */ FN_(),
/* 0x6f LD L,A 1 4 ---- */ FN(R.l(R.a())),
/* 0x70 LD (HL),B 1 8 ---- */ FN_(),
/* 0x71 LD (HL),C 1 8 ---- */ FN_(),
/* 0x72 LD (HL),D 1 8 ---- */ FN_(),
/* 0x73 LD (HL),E 1 8 ---- */ FN_(),
/* 0x74 LD (HL),H 1 8 ---- */ FN_(),
/* 0x75 LD (HL),L 1 8 ---- */ FN_(),
/* 0x76 HALT - 1 4 ---- */ FN_(),
/* 0x77 LD (HL),A 1 8 ---- */ FN(QST8(R.hl(), R.a())),
/* 0x78 LD A,B 1 4 ---- */ FN(R.a(R.b())),
/* 0x79 LD A,C 1 4 ---- */ FN(R.a(R.c())),
/* 0x7a LD A,D 1 4 ---- */ FN(R.a(R.d())),
/* 0x7b LD A,E 1 4 ---- */ FN(R.a(R.e())),
/* 0x7c LD A,H 1 4 ---- */ FN(R.a(R.h())),
/* 0x7d LD A,L 1 4 ---- */ FN(R.a(R.l())),
/* 0x7e LD A,(HL) 1 8 ---- */ FN_(),
/* 0x7f LD A,A 1 4 ---- */ FN(R.a(R.a())),
/* 0x80 ADD A,B 1 4 Z0HC */ FN(IMPL_ADD8(a,R.b())),
/* 0x81 ADD A,C 1 4 Z0HC */ FN(IMPL_ADD8(a,R.c())),
/* 0x82 ADD A,D 1 4 Z0HC */ FN(IMPL_ADD8(a,R.d())),
/* 0x83 ADD A,E 1 4 Z0HC */ FN(IMPL_ADD8(a,R.e())),
/* 0x84 ADD A,H 1 4 Z0HC */ FN(IMPL_ADD8(a,R.h())),
/* 0x85 ADD A,L 1 4 Z0HC */ FN(IMPL_ADD8(a,R.l())),
/* 0x86 ADD A,(HL) 1 8 Z0HC */ FN(QLD8(R.hl(),tmp8, IMPL_ADD8(a,R.tmp8()))),
/* 0x87 ADD A,A 1 4 Z0HC */ FN(IMPL_ADD8(a,R.b())),
/* 0x88 ADC A,B 1 4 Z0HC */ FN_(),
/* 0x89 ADC A,C 1 4 Z0HC */ FN_(),
/* 0x8a ADC A,D 1 4 Z0HC */ FN_(),
/* 0x8b ADC A,E 1 4 Z0HC */ FN_(),
/* 0x8c ADC A,H 1 4 Z0HC */ FN_(),
/* 0x8d ADC A,L 1 4 Z0HC */ FN_(),
/* 0x8e ADC A,(HL) 1 8 Z0HC */ FN_(),
/* 0x8f ADC A,A 1 4 Z0HC */ FN_(),
/* 0x90 SUB B 1 4 Z1HC */ FN(IMPL_SUB(R.b())),
/* 0x91 SUB C 1 4 Z1HC */ FN(IMPL_SUB(R.c())),
/* 0x92 SUB D 1 4 Z1HC */ FN(IMPL_SUB(R.d())),
/* 0x93 SUB E 1 4 Z1HC */ FN(IMPL_SUB(R.e())),
/* 0x94 SUB H 1 4 Z1HC */ FN(IMPL_SUB(R.h())),
/* 0x95 SUB L 1 4 Z1HC */ FN(IMPL_SUB(R.l())),
/* 0x96 SUB (HL) 1 8 Z1HC */ FN_(),
/* 0x97 SUB A 1 4 Z1HC */ FN_(),
/* 0x98 SBC A,B 1 4 Z1HC */ FN_(),
/* 0x99 SBC A,C 1 4 Z1HC */ FN_(),
/* 0x9a SBC A,D 1 4 Z1HC */ FN_(),
/* 0x9b SBC A,E 1 4 Z1HC */ FN_(),
/* 0x9c SBC A,H 1 4 Z1HC */ FN_(),
/* 0x9d SBC A,L 1 4 Z1HC */ FN_(),
/* 0x9e SBC A,(HL) 1 8 Z1HC */ FN_(),
/* 0x9f SBC A,A 1 4 Z1HC */ FN_(),
/* 0xa0 AND B 1 4 Z010 */ FN_(),
/* 0xa1 AND C 1 4 Z010 */ FN_(),
/* 0xa2 AND D 1 4 Z010 */ FN_(),
/* 0xa3 AND E 1 4 Z010 */ FN_(),
/* 0xa4 AND H 1 4 Z010 */ FN_(),
/* 0xa5 AND L 1 4 Z010 */ FN_(),
/* 0xa6 AND (HL) 1 8 Z010 */ FN_(),
/* 0xa7 AND A 1 4 Z010 */ FN_(),
/* 0xa8 XOR B 1 4 Z000 */ FN_(),
/* 0xa9 XOR C 1 4 Z000 */ FN_(),
/* 0xaa XOR D 1 4 Z000 */ FN_(),
/* 0xab XOR E 1 4 Z000 */ FN_(),
/* 0xac XOR H 1 4 Z000 */ FN_(),
/* 0xad XOR L 1 4 Z000 */ FN_(),
/* 0xae XOR (HL) 1 8 Z000 */ FN_(),
/* 0xaf XOR A 1 4 Z000 */ FN(R.a(0); R.flags(1,0,0,0);),
/* 0xb0 OR B 1 4 Z000 */ FN_(),
/* 0xb1 OR C 1 4 Z000 */ FN_(),
/* 0xb2 OR D 1 4 Z000 */ FN_(),
/* 0xb3 OR E 1 4 Z000 */ FN_(),
/* 0xb4 OR H 1 4 Z000 */ FN_(),
/* 0xb5 OR L 1 4 Z000 */ FN_(),
/* 0xb6 OR (HL) 1 8 Z000 */ FN_(),
/* 0xb7 OR A 1 4 Z000 */ FN_(),
/* 0xb8 CP B 1 4 Z1HC */ FN(IMPL_CP(R.b())),
/* 0xb9 CP C 1 4 Z1HC */ FN(IMPL_CP(R.c())),
/* 0xba CP D 1 4 Z1HC */ FN(IMPL_CP(R.d())),
/* 0xbb CP E 1 4 Z1HC */ FN(IMPL_CP(R.e())),
/* 0xbc CP H 1 4 Z1HC */ FN(IMPL_CP(R.h())),
/* 0xbd CP L 1 4 Z1HC */ FN(IMPL_CP(R.l())),
/* 0xbe CP (HL) 1 8 Z1HC */ FN(QLD8(R.hl(),tmp8, IMPL_CP(R.tmp8()))),
/* 0xbf CP A 1 4 Z1HC */ FN(IMPL_CP(R.a())),
/* 0xc0 RET NZ 1 20/8 ---- */ FN_(),
/* 0xc1 POP BC 1 12 ---- */ FN(QPOP(b,c)),
/* 0xc2 JP NZ,a16 3 16/12 ---- */ FN_(),
/* 0xc3 JP a16 3 16 ---- */ FN(Q(BR(IMM16))),
/* 0xc4 CALL NZ,a16 3 24/12 ---- */ FN_(),
/* 0xc5 PUSH BC 1 16 ---- */ FN(QPUSH(bc)),
/* 0xc6 ADD A,d8 2 8 Z0HC */ FN_(),
/* 0xc7 RST 00H 1 16 ---- */ FN_(),
/* 0xc8 RET Z 1 20/8 ---- */ FN_(),
/* 0xc9 RET - 1 16 ---- */ FN(Q(QPOP(pch,pcl, BR(R.pc())))),
/* 0xca JP Z,a16 3 16/12 ---- */ FN_(),
/* 0xcb PREFIX CB 1 4 ---- */ FN(abort(); /*ops[cpu.op[1]](cpu);*/),
/* 0xcc CALL Z,a16 3 24/12 ---- */ FN_(),
/* 0xcd CALL a16 3 24 ---- */ FN(QPUSH(pc, BR(IMM16))),
/* 0xce ADC A,d8 2 8 Z0HC */ FN_(),
/* 0xcf RST 08H 1 16 ---- */ FN_(),
/* 0xd0 RET NC 1 20/8 ---- */ FN_(),
/* 0xd1 POP DE 1 12 ---- */ FN_(),
/* 0xd2 JP NC,a16 3 16/12 ---- */ FN_(),
/* 0xd3 XXX */ FN_(),
/* 0xd4 CALL NC,a16 3 24/12 ---- */ FN_(),
/* 0xd5 PUSH DE 1 16 ---- */ FN_(),
/* 0xd6 SUB d8 2 8 Z1HC */ FN_(),
/* 0xd7 RST 10H 1 16 ---- */ FN_(),
/* 0xd8 RET C 1 20/8 ---- */ FN_(),
/* 0xd9 RETI - 1 16 ---- */ FN_(),
/* 0xda JP C,a16 3 16/12 ---- */ FN_(),
/* 0xdb XXX */ FN_(),
/* 0xdc CALL C,a16 3 24/12 ---- */ FN_(),
/* 0xdd XXX */ FN_(),
/* 0xde SBC A,d8 2 8 Z1HC */ FN_(),
/* 0xdf RST 18H 1 16 ---- */ FN_(),
/* 0xe0 LDH (a8),A 2 12 ---- */ FN(QST8(0xff00 | IMM8, R.a())),
/* 0xe1 POP HL 1 12 ---- */ FN_(),
/* 0xe2 LD (C),A 1 8 ---- */ FN(QST8(0xff00 | R.c(), R.a())),
/* 0xe3 XXX */ FN_(),
/* 0xe4 XXX */ FN_(),
/* 0xe5 PUSH HL 1 16 ---- */ FN_(),
/* 0xe6 AND d8 2 8 Z010 */ FN_(),
/* 0xe7 RST 20H 1 16 ---- */ FN_(),
/* 0xe8 ADD SP,r8 2 16 00HC */ FN_(),
/* 0xe9 JP (HL) 1 4 ---- */ FN_(),
/* 0xea LD (a16),A 3 16 ---- */ FN(QST8(IMM16,R.a())),
/* 0xeb XXX */ FN_(),
/* 0xec XXX */ FN_(),
/* 0xed XXX */ FN_(),
/* 0xee XOR d8 2 8 Z000 */ FN_(),
/* 0xef RST 28H 1 16 ---- */ FN_(),
/* 0xf0 LDH A,(a8) 2 12 ---- */ FN(QLD8(0xff00 | IMM8, a)),
/* 0xf1 POP AF 1 12 ZNHC */ FN_(),
/* 0xf2 LD A,(C) 1 8 ---- */ FN_(),
/* 0xf3 DI - 1 4 ---- */ FN_(),
/* 0xf4 XXX */ FN_(),
/* 0xf5 PUSH AF 1 16 ---- */ FN_(),
/* 0xf6 OR d8 2 8 Z000 */ FN_(),
/* 0xf7 RST 30H 1 16 ---- */ FN_(),
/* 0xf8 LD HL,SP+r8 2 12 00HC */ FN_(),
/* 0xf9 LD SP,HL 1 8 ---- */ FN_(),
/* 0xfa LD A,(a16) 3 16 ---- */ FN_(),
/* 0xfb EI - 1 4 ---- */ FN_(),
/* 0xfc XXX */ FN_(),
/* 0xfd XXX */ FN_(),
/* 0xfe CP d8 2 8 Z1HC */ FN(IMPL_CP(IMM8)),
/* 0xff RST 38H 1 16 ---- */ FN_(),
// Prefix 0xcb:
/* 0x0100 RLC B 2 8 Z00C */ FN_(),
/* 0x0101 RLC C 2 8 Z00C */ FN_(),
/* 0x0102 RLC D 2 8 Z00C */ FN_(),
/* 0x0103 RLC E 2 8 Z00C */ FN_(),
/* 0x0104 RLC H 2 8 Z00C */ FN_(),
/* 0x0105 RLC L 2 8 Z00C */ FN_(),
/* 0x0106 RLC (HL) 2 16 Z00C */ FN_(),
/* 0x0107 RLC A 2 8 Z00C */ FN_(),
/* 0x0108 RRC B 2 8 Z00C */ FN_(),
/* 0x0109 RRC C 2 8 Z00C */ FN_(),
/* 0x010a RRC D 2 8 Z00C */ FN_(),
/* 0x010b RRC E 2 8 Z00C */ FN_(),
/* 0x010c RRC H 2 8 Z00C */ FN_(),
/* 0x010d RRC L 2 8 Z00C */ FN_(),
/* 0x010e RRC (HL) 2 16 Z00C */ FN_(),
/* 0x010f RRC A 2 8 Z00C */ FN_(),
/* 0x0110 RL B 2 8 Z00C */ FN(IMPL_RL(b)),
/* 0x0111 RL C 2 8 Z00C */ FN(IMPL_RL(c)),
/* 0x0112 RL D 2 8 Z00C */ FN(IMPL_RL(d)),
/* 0x0113 RL E 2 8 Z00C */ FN(IMPL_RL(e)),
/* 0x0114 RL H 2 8 Z00C */ FN(IMPL_RL(h)),
/* 0x0115 RL L 2 8 Z00C */ FN(IMPL_RL(l)),
/* 0x0116 RL (HL) 2 16 Z00C */ FN_(),
/* 0x0117 RL A 2 8 Z00C */ FN(IMPL_RL(a)),
/* 0x0118 RR B 2 8 Z00C */ FN_(),
/* 0x0119 RR C 2 8 Z00C */ FN_(),
/* 0x011a RR D 2 8 Z00C */ FN_(),
/* 0x011b RR E 2 8 Z00C */ FN_(),
/* 0x011c RR H 2 8 Z00C */ FN_(),
/* 0x011d RR L 2 8 Z00C */ FN_(),
/* 0x011e RR (HL) 2 16 Z00C */ FN_(),
/* 0x011f RR A 2 8 Z00C */ FN_(),
/* 0x0120 SLA B 2 8 Z00C */ FN_(),
/* 0x0121 SLA C 2 8 Z00C */ FN_(),
/* 0x0122 SLA D 2 8 Z00C */ FN_(),
/* 0x0123 SLA E 2 8 Z00C */ FN_(),
/* 0x0124 SLA H 2 8 Z00C */ FN_(),
/* 0x0125 SLA L 2 8 Z00C */ FN_(),
/* 0x0126 SLA (HL) 2 16 Z00C */ FN_(),
/* 0x0127 SLA A 2 8 Z00C */ FN_(),
/* 0x0128 SRA B 2 8 Z000 */ FN_(),
/* 0x0129 SRA C 2 8 Z000 */ FN_(),
/* 0x012a SRA D 2 8 Z000 */ FN_(),
/* 0x012b SRA E 2 8 Z000 */ FN_(),
/* 0x012c SRA H 2 8 Z000 */ FN_(),
/* 0x012d SRA L 2 8 Z000 */ FN_(),
/* 0x012e SRA (HL) 2 16 Z000 */ FN_(),
/* 0x012f SRA A 2 8 Z000 */ FN_(),
/* 0x0130 SWAP B 2 8 Z000 */ FN_(),
/* 0x0131 SWAP C 2 8 Z000 */ FN_(),
/* 0x0132 SWAP D 2 8 Z000 */ FN_(),
/* 0x0133 SWAP E 2 8 Z000 */ FN_(),
/* 0x0134 SWAP H 2 8 Z000 */ FN_(),
/* 0x0135 SWAP L 2 8 Z000 */ FN_(),
/* 0x0136 SWAP (HL) 2 16 Z000 */ FN_(),
/* 0x0137 SWAP A 2 8 Z000 */ FN_(),
/* 0x0138 SRL B 2 8 Z00C */ FN_(),
/* 0x0139 SRL C 2 8 Z00C */ FN_(),
/* 0x013a SRL D 2 8 Z00C */ FN_(),
/* 0x013b SRL E 2 8 Z00C */ FN_(),
/* 0x013c SRL H 2 8 Z00C */ FN_(),
/* 0x013d SRL L 2 8 Z00C */ FN_(),
/* 0x013e SRL (HL) 2 16 Z00C */ FN_(),
/* 0x013f SRL A 2 8 Z00C */ FN_(),
/* 0x0140 BIT 0,B 2 8 Z01- */ FN_(),
/* 0x0141 BIT 0,C 2 8 Z01- */ FN_(),
/* 0x0142 BIT 0,D 2 8 Z01- */ FN_(),
/* 0x0143 BIT 0,E 2 8 Z01- */ FN_(),
/* 0x0144 BIT 0,H 2 8 Z01- */ FN_(),
/* 0x0145 BIT 0,L 2 8 Z01- */ FN_(),
/* 0x0146 BIT 0,(HL) 2 16 Z01- */ FN_(),
/* 0x0147 BIT 0,A 2 8 Z01- */ FN_(),
/* 0x0148 BIT 1,B 2 8 Z01- */ FN_(),
/* 0x0149 BIT 1,C 2 8 Z01- */ FN_(),
/* 0x014a BIT 1,D 2 8 Z01- */ FN_(),
/* 0x014b BIT 1,E 2 8 Z01- */ FN_(),
/* 0x014c BIT 1,H 2 8 Z01- */ FN_(),
/* 0x014d BIT 1,L 2 8 Z01- */ FN_(),
/* 0x014e BIT 1,(HL) 2 16 Z01- */ FN_(),
/* 0x014f BIT 1,A 2 8 Z01- */ FN_(),
/* 0x0150 BIT 2,B 2 8 Z01- */ FN_(),
/* 0x0151 BIT 2,C 2 8 Z01- */ FN_(),
/* 0x0152 BIT 2,D 2 8 Z01- */ FN_(),
/* 0x0153 BIT 2,E 2 8 Z01- */ FN_(),
/* 0x0154 BIT 2,H 2 8 Z01- */ FN_(),
/* 0x0155 BIT 2,L 2 8 Z01- */ FN_(),
/* 0x0156 BIT 2,(HL) 2 16 Z01- */ FN_(),
/* 0x0157 BIT 2,A 2 8 Z01- */ FN_(),
/* 0x0158 BIT 3,B 2 8 Z01- */ FN_(),
/* 0x0159 BIT 3,C 2 8 Z01- */ FN_(),
/* 0x015a BIT 3,D 2 8 Z01- */ FN_(),
/* 0x015b BIT 3,E 2 8 Z01- */ FN_(),
/* 0x015c BIT 3,H 2 8 Z01- */ FN_(),
/* 0x015d BIT 3,L 2 8 Z01- */ FN_(),
/* 0x015e BIT 3,(HL) 2 16 Z01- */ FN_(),
/* 0x015f BIT 3,A 2 8 Z01- */ FN_(),
/* 0x0160 BIT 4,B 2 8 Z01- */ FN_(),
/* 0x0161 BIT 4,C 2 8 Z01- */ FN_(),
/* 0x0162 BIT 4,D 2 8 Z01- */ FN_(),
/* 0x0163 BIT 4,E 2 8 Z01- */ FN_(),
/* 0x0164 BIT 4,H 2 8 Z01- */ FN_(),
/* 0x0165 BIT 4,L 2 8 Z01- */ FN_(),
/* 0x0166 BIT 4,(HL) 2 16 Z01- */ FN_(),
/* 0x0167 BIT 4,A 2 8 Z01- */ FN_(),
/* 0x0168 BIT 5,B 2 8 Z01- */ FN_(),
/* 0x0169 BIT 5,C 2 8 Z01- */ FN_(),
/* 0x016a BIT 5,D 2 8 Z01- */ FN_(),
/* 0x016b BIT 5,E 2 8 Z01- */ FN_(),
/* 0x016c BIT 5,H 2 8 Z01- */ FN_(),
/* 0x016d BIT 5,L 2 8 Z01- */ FN_(),
/* 0x016e BIT 5,(HL) 2 16 Z01- */ FN_(),
/* 0x016f BIT 5,A 2 8 Z01- */ FN_(),
/* 0x0170 BIT 6,B 2 8 Z01- */ FN_(),
/* 0x0171 BIT 6,C 2 8 Z01- */ FN_(),
/* 0x0172 BIT 6,D 2 8 Z01- */ FN_(),
/* 0x0173 BIT 6,E 2 8 Z01- */ FN_(),
/* 0x0174 BIT 6,H 2 8 Z01- */ FN_(),
/* 0x0175 BIT 6,L 2 8 Z01- */ FN_(),
/* 0x0176 BIT 6,(HL) 2 16 Z01- */ FN_(),
/* 0x0177 BIT 6,A 2 8 Z01- */ FN_(),
/* 0x0178 BIT 7,B 2 8 Z01- */ FN_(),
/* 0x0179 BIT 7,C 2 8 Z01- */ FN_(),
/* 0x017a BIT 7,D 2 8 Z01- */ FN_(),
/* 0x017b BIT 7,E 2 8 Z01- */ FN_(),
/* 0x017c BIT 7,H 2 8 Z01- */ FN(R.flags(!(R.h() & (1 << 7)), 0, 1, _);),
/* 0x017d BIT 7,L 2 8 Z01- */ FN_(),
/* 0x017e BIT 7,(HL) 2 16 Z01- */ FN_(),
/* 0x017f BIT 7,A 2 8 Z01- */ FN_(),
/* 0x0180 RES 0,B 2 8 ---- */ FN_(),
/* 0x0181 RES 0,C 2 8 ---- */ FN_(),
/* 0x0182 RES 0,D 2 8 ---- */ FN_(),
/* 0x0183 RES 0,E 2 8 ---- */ FN_(),
/* 0x0184 RES 0,H 2 8 ---- */ FN_(),
/* 0x0185 RES 0,L 2 8 ---- */ FN_(),
/* 0x0186 RES 0,(HL) 2 16 ---- */ FN_(),
/* 0x0187 RES 0,A 2 8 ---- */ FN_(),
/* 0x0188 RES 1,B 2 8 ---- */ FN_(),
/* 0x0189 RES 1,C 2 8 ---- */ FN_(),
/* 0x018a RES 1,D 2 8 ---- */ FN_(),
/* 0x018b RES 1,E 2 8 ---- */ FN_(),
/* 0x018c RES 1,H 2 8 ---- */ FN_(),
/* 0x018d RES 1,L 2 8 ---- */ FN_(),
/* 0x018e RES 1,(HL) 2 16 ---- */ FN_(),
/* 0x018f RES 1,A 2 8 ---- */ FN_(),
/* 0x0190 RES 2,B 2 8 ---- */ FN_(),
/* 0x0191 RES 2,C 2 8 ---- */ FN_(),
/* 0x0192 RES 2,D 2 8 ---- */ FN_(),
/* 0x0193 RES 2,E 2 8 ---- */ FN_(),
/* 0x0194 RES 2,H 2 8 ---- */ FN_(),
/* 0x0195 RES 2,L 2 8 ---- */ FN_(),
/* 0x0196 RES 2,(HL) 2 16 ---- */ FN_(),
/* 0x0197 RES 2,A 2 8 ---- */ FN_(),
/* 0x0198 RES 3,B 2 8 ---- */ FN_(),
/* 0x0199 RES 3,C 2 8 ---- */ FN_(),
/* 0x019a RES 3,D 2 8 ---- */ FN_(),
/* 0x019b RES 3,E 2 8 ---- */ FN_(),
/* 0x019c RES 3,H 2 8 ---- */ FN_(),
/* 0x019d RES 3,L 2 8 ---- */ FN_(),
/* 0x019e RES 3,(HL) 2 16 ---- */ FN_(),
/* 0x019f RES 3,A 2 8 ---- */ FN_(),
/* 0x01a0 RES 4,B 2 8 ---- */ FN_(),
/* 0x01a1 RES 4,C 2 8 ---- */ FN_(),
/* 0x01a2 RES 4,D 2 8 ---- */ FN_(),
/* 0x01a3 RES 4,E 2 8 ---- */ FN_(),
/* 0x01a4 RES 4,H 2 8 ---- */ FN_(),
/* 0x01a5 RES 4,L 2 8 ---- */ FN_(),
/* 0x01a6 RES 4,(HL) 2 16 ---- */ FN_(),
/* 0x01a7 RES 4,A 2 8 ---- */ FN_(),
/* 0x01a8 RES 5,B 2 8 ---- */ FN_(),
/* 0x01a9 RES 5,C 2 8 ---- */ FN_(),
/* 0x01aa RES 5,D 2 8 ---- */ FN_(),
/* 0x01ab RES 5,E 2 8 ---- */ FN_(),
/* 0x01ac RES 5,H 2 8 ---- */ FN_(),
/* 0x01ad RES 5,L 2 8 ---- */ FN_(),
/* 0x01ae RES 5,(HL) 2 16 ---- */ FN_(),
/* 0x01af RES 5,A 2 8 ---- */ FN_(),
/* 0x01b0 RES 6,B 2 8 ---- */ FN_(),
/* 0x01b1 RES 6,C 2 8 ---- */ FN_(),
/* 0x01b2 RES 6,D 2 8 ---- */ FN_(),
/* 0x01b3 RES 6,E 2 8 ---- */ FN_(),
/* 0x01b4 RES 6,H 2 8 ---- */ FN_(),
/* 0x01b5 RES 6,L 2 8 ---- */ FN_(),
/* 0x01b6 RES 6,(HL) 2 16 ---- */ FN_(),
/* 0x01b7 RES 6,A 2 8 ---- */ FN_(),
/* 0x01b8 RES 7,B 2 8 ---- */ FN_(),
/* 0x01b9 RES 7,C 2 8 ---- */ FN_(),
/* 0x01ba RES 7,D 2 8 ---- */ FN_(),
/* 0x01bb RES 7,E 2 8 ---- */ FN_(),
/* 0x01bc RES 7,H 2 8 ---- */ FN_(),
/* 0x01bd RES 7,L 2 8 ---- */ FN_(),
/* 0x01be RES 7,(HL) 2 16 ---- */ FN_(),
/* 0x01bf RES 7,A 2 8 ---- */ FN_(),
/* 0x01c0 SET 0,B 2 8 ---- */ FN_(),
/* 0x01c1 SET 0,C 2 8 ---- */ FN_(),
/* 0x01c2 SET 0,D 2 8 ---- */ FN_(),
/* 0x01c3 SET 0,E 2 8 ---- */ FN_(),
/* 0x01c4 SET 0,H 2 8 ---- */ FN_(),
/* 0x01c5 SET 0,L 2 8 ---- */ FN_(),
/* 0x01c6 SET 0,(HL) 2 16 ---- */ FN_(),
/* 0x01c7 SET 0,A 2 8 ---- */ FN_(),
/* 0x01c8 SET 1,B 2 8 ---- */ FN_(),
/* 0x01c9 SET 1,C 2 8 ---- */ FN_(),
/* 0x01ca SET 1,D 2 8 ---- */ FN_(),
/* 0x01cb SET 1,E 2 8 ---- */ FN_(),
/* 0x01cc SET 1,H 2 8 ---- */ FN_(),
/* 0x01cd SET 1,L 2 8 ---- */ FN_(),
/* 0x01ce SET 1,(HL) 2 16 ---- */ FN_(),
/* 0x01cf SET 1,A 2 8 ---- */ FN_(),
/* 0x01d0 SET 2,B 2 8 ---- */ FN_(),
/* 0x01d1 SET 2,C 2 8 ---- */ FN_(),
/* 0x01d2 SET 2,D 2 8 ---- */ FN_(),
/* 0x01d3 SET 2,E 2 8 ---- */ FN_(),
/* 0x01d4 SET 2,H 2 8 ---- */ FN_(),
/* 0x01d5 SET 2,L 2 8 ---- */ FN_(),
/* 0x01d6 SET 2,(HL) 2 16 ---- */ FN_(),
/* 0x01d7 SET 2,A 2 8 ---- */ FN_(),
/* 0x01d8 SET 3,B 2 8 ---- */ FN_(),
/* 0x01d9 SET 3,C 2 8 ---- */ FN_(),
/* 0x01da SET 3,D 2 8 ---- */ FN_(),
/* 0x01db SET 3,E 2 8 ---- */ FN_(),
/* 0x01dc SET 3,H 2 8 ---- */ FN_(),
/* 0x01dd SET 3,L 2 8 ---- */ FN_(),
/* 0x01de SET 3,(HL) 2 16 ---- */ FN_(),
/* 0x01df SET 3,A 2 8 ---- */ FN_(),
/* 0x01e0 SET 4,B 2 8 ---- */ FN_(),
/* 0x01e1 SET 4,C 2 8 ---- */ FN_(),
/* 0x01e2 SET 4,D 2 8 ---- */ FN_(),
/* 0x01e3 SET 4,E 2 8 ---- */ FN_(),
/* 0x01e4 SET 4,H 2 8 ---- */ FN_(),
/* 0x01e5 SET 4,L 2 8 ---- */ FN_(),
/* 0x01e6 SET 4,(HL) 2 16 ---- */ FN_(),
/* 0x01e7 SET 4,A 2 8 ---- */ FN_(),
/* 0x01e8 SET 5,B 2 8 ---- */ FN_(),
/* 0x01e9 SET 5,C 2 8 ---- */ FN_(),
/* 0x01ea SET 5,D 2 8 ---- */ FN_(),
/* 0x01eb SET 5,E 2 8 ---- */ FN_(),
/* 0x01ec SET 5,H 2 8 ---- */ FN_(),
/* 0x01ed SET 5,L 2 8 ---- */ FN_(),
/* 0x01ee SET 5,(HL) 2 16 ---- */ FN_(),
/* 0x01ef SET 5,A 2 8 ---- */ FN_(),
/* 0x01f0 SET 6,B 2 8 ---- */ FN_(),
/* 0x01f1 SET 6,C 2 8 ---- */ FN_(),
/* 0x01f2 SET 6,D 2 8 ---- */ FN_(),
/* 0x01f3 SET 6,E 2 8 ---- */ FN_(),
/* 0x01f4 SET 6,H 2 8 ---- */ FN_(),
/* 0x01f5 SET 6,L 2 8 ---- */ FN_(),
/* 0x01f6 SET 6,(HL) 2 16 ---- */ FN_(),
/* 0x01f7 SET 6,A 2 8 ---- */ FN_(),
/* 0x01f8 SET 7,B 2 8 ---- */ FN_(),
/* 0x01f9 SET 7,C 2 8 ---- */ FN_(),
/* 0x01fa SET 7,D 2 8 ---- */ FN_(),
/* 0x01fb SET 7,E 2 8 ---- */ FN_(),
/* 0x01fc SET 7,H 2 8 ---- */ FN_(),
/* 0x01fd SET 7,L 2 8 ---- */ FN_(),
/* 0x01fe SET 7,(HL) 2 16 ---- */ FN_(),
/* 0x01ff SET 7,A 2 8 ---- */ FN_(),
#undef Q
#undef R
#undef BR
#undef OP
#undef IMM16
#undef IMM8
#undef _
#undef LD8
#undef QLD8
#undef QLD16
#undef ST8
#undef QST8
#undef QST16
#undef QPUSH
#undef QPOP
#undef FN
#undef FN_
#undef IMPL_INC
#undef IMPL_DEC
#undef IMPL_RL
#undef IMPL_ADD8
#undef IMPL_SUB
#undef IMPL_CP
};
#pragma GCC diagnostic pop
// OP names {{{
static constexpr const char *opnames[512] {
"NOP - "/* 1 4 ----"*/,
"LD BC,d16 "/* 3 12 ----"*/,
"LD (BC),A "/* 1 8 ----"*/,
"INC BC "/* 1 8 ----"*/,
"INC B "/* 1 4 Z0H-"*/,
"DEC B "/* 1 4 Z1H-"*/,
"LD B,d8 "/* 2 8 ----"*/,
"RLCA - "/* 1 4 000C"*/,
"LD (a16),SP"/* 3 20 ----"*/,
"ADD HL,BC "/* 1 8 -0HC"*/,
"LD A,(BC) "/* 1 8 ----"*/,
"DEC BC "/* 1 8 ----"*/,
"INC C "/* 1 4 Z0H-"*/,
"DEC C "/* 1 4 Z1H-"*/,
"LD C,d8 "/* 2 8 ----"*/,
"RRCA - "/* 1 4 000C"*/,
"STOP 0 "/* 2 4 ----"*/,
"LD DE,d16 "/* 3 12 ----"*/,
"LD (DE),A "/* 1 8 ----"*/,
"INC DE "/* 1 8 ----"*/,
"INC D "/* 1 4 Z0H-"*/,
"DEC D "/* 1 4 Z1H-"*/,
"LD D,d8 "/* 2 8 ----"*/,
"RLA - "/* 1 4 000C"*/,
"JR r8 "/* 2 12 ----"*/,
"ADD HL,DE "/* 1 8 -0HC"*/,
"LD A,(DE) "/* 1 8 ----"*/,
"DEC DE "/* 1 8 ----"*/,
"INC E "/* 1 4 Z0H-"*/,
"DEC E "/* 1 4 Z1H-"*/,
"LD E,d8 "/* 2 8 ----"*/,
"RRA - "/* 1 4 000C"*/,
"JR NZ,r8 "/* 2 12/8 ----"*/,
"LD HL,d16 "/* 3 12 ----"*/,
"LD (HL+),A "/* 1 8 ----"*/,
"INC HL "/* 1 8 ----"*/,
"INC H "/* 1 4 Z0H-"*/,
"DEC H "/* 1 4 Z1H-"*/,
"LD H,d8 "/* 2 8 ----"*/,
"DAA - "/* 1 4 Z-0C"*/,
"JR Z,r8 "/* 2 12/8 ----"*/,
"ADD HL,HL "/* 1 8 -0HC"*/,
"LD A,(HL+) "/* 1 8 ----"*/,
"DEC HL "/* 1 8 ----"*/,
"INC L "/* 1 4 Z0H-"*/,
"DEC L "/* 1 4 Z1H-"*/,
"LD L,d8 "/* 2 8 ----"*/,
"CPL - "/* 1 4 -11-"*/,
"JR NC,r8 "/* 2 12/8 ----"*/,
"LD SP,d16 "/* 3 12 ----"*/,
"LD (HL-),A "/* 1 8 ----"*/,
"INC SP "/* 1 8 ----"*/,
"INC (HL) "/* 1 12 Z0H-"*/,
"DEC (HL) "/* 1 12 Z1H-"*/,
"LD (HL),d8 "/* 2 12 ----"*/,
"SCF - "/* 1 4 -001"*/,
"JR C,r8 "/* 2 12/8 ----"*/,
"ADD HL,SP "/* 1 8 -0HC"*/,
"LD A,(HL-) "/* 1 8 ----"*/,
"DEC SP "/* 1 8 ----"*/,
"INC A "/* 1 4 Z0H-"*/,
"DEC A "/* 1 4 Z1H-"*/,
"LD A,d8 "/* 2 8 ----"*/,
"CCF - "/* 1 4 -00C"*/,
"LD B,B "/* 1 4 ----"*/,
"LD B,C "/* 1 4 ----"*/,
"LD B,D "/* 1 4 ----"*/,
"LD B,E "/* 1 4 ----"*/,
"LD B,H "/* 1 4 ----"*/,
"LD B,L "/* 1 4 ----"*/,
"LD B,(HL) "/* 1 8 ----"*/,
"LD B,A "/* 1 4 ----"*/,
"LD C,B "/* 1 4 ----"*/,
"LD C,C "/* 1 4 ----"*/,
"LD C,D "/* 1 4 ----"*/,
"LD C,E "/* 1 4 ----"*/,
"LD C,H "/* 1 4 ----"*/,
"LD C,L "/* 1 4 ----"*/,
"LD C,(HL) "/* 1 8 ----"*/,
"LD C,A "/* 1 4 ----"*/,
"LD D,B "/* 1 4 ----"*/,
"LD D,C "/* 1 4 ----"*/,
"LD D,D "/* 1 4 ----"*/,
"LD D,E "/* 1 4 ----"*/,
"LD D,H "/* 1 4 ----"*/,
"LD D,L "/* 1 4 ----"*/,
"LD D,(HL) "/* 1 8 ----"*/,
"LD D,A "/* 1 4 ----"*/,
"LD E,B "/* 1 4 ----"*/,
"LD E,C "/* 1 4 ----"*/,
"LD E,D "/* 1 4 ----"*/,
"LD E,E "/* 1 4 ----"*/,
"LD E,H "/* 1 4 ----"*/,
"LD E,L "/* 1 4 ----"*/,
"LD E,(HL) "/* 1 8 ----"*/,
"LD E,A "/* 1 4 ----"*/,
"LD H,B "/* 1 4 ----"*/,
"LD H,C "/* 1 4 ----"*/,
"LD H,D "/* 1 4 ----"*/,
"LD H,E "/* 1 4 ----"*/,
"LD H,H "/* 1 4 ----"*/,
"LD H,L "/* 1 4 ----"*/,
"LD H,(HL) "/* 1 8 ----"*/,
"LD H,A "/* 1 4 ----"*/,
"LD L,B "/* 1 4 ----"*/,
"LD L,C "/* 1 4 ----"*/,
"LD L,D "/* 1 4 ----"*/,
"LD L,E "/* 1 4 ----"*/,
"LD L,H "/* 1 4 ----"*/,
"LD L,L "/* 1 4 ----"*/,
"LD L,(HL) "/* 1 8 ----"*/,
"LD L,A "/* 1 4 ----"*/,
"LD (HL),B "/* 1 8 ----"*/,
"LD (HL),C "/* 1 8 ----"*/,
"LD (HL),D "/* 1 8 ----"*/,
"LD (HL),E "/* 1 8 ----"*/,
"LD (HL),H "/* 1 8 ----"*/,
"LD (HL),L "/* 1 8 ----"*/,
"HALT - "/* 1 4 ----"*/,
"LD (HL),A "/* 1 8 ----"*/,
"LD A,B "/* 1 4 ----"*/,
"LD A,C "/* 1 4 ----"*/,
"LD A,D "/* 1 4 ----"*/,
"LD A,E "/* 1 4 ----"*/,
"LD A,H "/* 1 4 ----"*/,
"LD A,L "/* 1 4 ----"*/,
"LD A,(HL) "/* 1 8 ----"*/,
"LD A,A "/* 1 4 ----"*/,
"ADD A,B "/* 1 4 Z0HC"*/,
"ADD A,C "/* 1 4 Z0HC"*/,
"ADD A,D "/* 1 4 Z0HC"*/,
"ADD A,E "/* 1 4 Z0HC"*/,
"ADD A,H "/* 1 4 Z0HC"*/,
"ADD A,L "/* 1 4 Z0HC"*/,
"ADD A,(HL) "/* 1 8 Z0HC"*/,
"ADD A,A "/* 1 4 Z0HC"*/,
"ADC A,B "/* 1 4 Z0HC"*/,
"ADC A,C "/* 1 4 Z0HC"*/,
"ADC A,D "/* 1 4 Z0HC"*/,
"ADC A,E "/* 1 4 Z0HC"*/,
"ADC A,H "/* 1 4 Z0HC"*/,
"ADC A,L "/* 1 4 Z0HC"*/,
"ADC A,(HL) "/* 1 8 Z0HC"*/,
"ADC A,A "/* 1 4 Z0HC"*/,
"SUB B "/* 1 4 Z1HC"*/,
"SUB C "/* 1 4 Z1HC"*/,
"SUB D "/* 1 4 Z1HC"*/,
"SUB E "/* 1 4 Z1HC"*/,
"SUB H "/* 1 4 Z1HC"*/,
"SUB L "/* 1 4 Z1HC"*/,
"SUB (HL) "/* 1 8 Z1HC"*/,
"SUB A "/* 1 4 Z1HC"*/,
"SBC A,B "/* 1 4 Z1HC"*/,
"SBC A,C "/* 1 4 Z1HC"*/,
"SBC A,D "/* 1 4 Z1HC"*/,
"SBC A,E "/* 1 4 Z1HC"*/,
"SBC A,H "/* 1 4 Z1HC"*/,
"SBC A,L "/* 1 4 Z1HC"*/,
"SBC A,(HL) "/* 1 8 Z1HC"*/,
"SBC A,A "/* 1 4 Z1HC"*/,
"AND B "/* 1 4 Z010"*/,
"AND C "/* 1 4 Z010"*/,
"AND D "/* 1 4 Z010"*/,
"AND E "/* 1 4 Z010"*/,
"AND H "/* 1 4 Z010"*/,
"AND L "/* 1 4 Z010"*/,
"AND (HL) "/* 1 8 Z010"*/,
"AND A "/* 1 4 Z010"*/,
"XOR B "/* 1 4 Z000"*/,
"XOR C "/* 1 4 Z000"*/,
"XOR D "/* 1 4 Z000"*/,
"XOR E "/* 1 4 Z000"*/,
"XOR H "/* 1 4 Z000"*/,
"XOR L "/* 1 4 Z000"*/,
"XOR (HL) "/* 1 8 Z000"*/,
"XOR A "/* 1 4 Z000"*/,
"OR B "/* 1 4 Z000"*/,
"OR C "/* 1 4 Z000"*/,
"OR D "/* 1 4 Z000"*/,
"OR E "/* 1 4 Z000"*/,
"OR H "/* 1 4 Z000"*/,
"OR L "/* 1 4 Z000"*/,
"OR (HL) "/* 1 8 Z000"*/,
"OR A "/* 1 4 Z000"*/,
"CP B "/* 1 4 Z1HC"*/,
"CP C "/* 1 4 Z1HC"*/,
"CP D "/* 1 4 Z1HC"*/,
"CP E "/* 1 4 Z1HC"*/,
"CP H "/* 1 4 Z1HC"*/,
"CP L "/* 1 4 Z1HC"*/,
"CP (HL) "/* 1 8 Z1HC"*/,
"CP A "/* 1 4 Z1HC"*/,
"RET NZ "/* 1 20/8 ----"*/,
"POP BC "/* 1 12 ----"*/,
"JP NZ,a16 "/* 3 16/12 ----"*/,
"JP a16 "/* 3 16 ----"*/,
"CALL NZ,a16 "/* 3 24/12 ----"*/,
"PUSH BC "/* 1 16 ----"*/,
"ADD A,d8 "/* 2 8 Z0HC"*/,
"RST 00H "/* 1 16 ----"*/,
"RET Z "/* 1 20/8 ----"*/,
"RET - "/* 1 16 ----"*/,
"JP Z,a16 "/* 3 16/12 ----"*/,
"PREFIX CB "/* 1 4 ----"*/,
"CALL Z,a16 "/* 3 24/12 ----"*/,
"CALL a16 "/* 3 24 ----"*/,
"ADC A,d8 "/* 2 8 Z0HC"*/,
"RST 08H "/* 1 16 ----"*/,
"RET NC "/* 1 20/8 ----"*/,
"POP DE "/* 1 12 ----"*/,
"JP NC,a16 "/* 3 16/12 ----"*/,
"XXX "/* "*/,
"CALL NC,a16 "/* 3 24/12 ----"*/,
"PUSH DE "/* 1 16 ----"*/,
"SUB d8 "/* 2 8 Z1HC"*/,
"RST 10H "/* 1 16 ----"*/,
"RET C "/* 1 20/8 ----"*/,
"RETI - "/* 1 16 ----"*/,
"JP C,a16 "/* 3 16/12 ----"*/,
"XXX "/* "*/,
"CALL C,a16 "/* 3 24/12 ----"*/,
"XXX "/* "*/,
"SBC A,d8 "/* 2 8 Z1HC"*/,
"RST 18H "/* 1 16 ----"*/,
"LDH (a8),A "/* 2 12 ----"*/,
"POP HL "/* 1 12 ----"*/,
"LD (C),A "/* 1 8 ----"*/,
"XXX "/* "*/,
"XXX "/* "*/,
"PUSH HL "/* 1 16 ----"*/,
"AND d8 "/* 2 8 Z010"*/,
"RST 20H "/* 1 16 ----"*/,
"ADD SP,r8 "/* 2 16 00HC"*/,
"JP (HL) "/* 1 4 ----"*/,
"LD (a16),A "/* 3 16 ----"*/,
"XXX "/* "*/,
"XXX "/* "*/,
"XXX "/* "*/,
"XOR d8 "/* 2 8 Z000"*/,
"RST 28H "/* 1 16 ----"*/,
"LDH A,(a8) "/* 2 12 ----"*/,
"POP AF "/* 1 12 ZNHC"*/,
"LD A,(C) "/* 1 8 ----"*/,
"DI - "/* 1 4 ----"*/,
"XXX "/* "*/,
"PUSH AF "/* 1 16 ----"*/,
"OR d8 "/* 2 8 Z000"*/,
"RST 30H "/* 1 16 ----"*/,
"LD HL,SP+r8"/* 2 12 00HC"*/,
"LD SP,HL "/* 1 8 ----"*/,
"LD A,(a16) "/* 3 16 ----"*/,
"EI - "/* 1 4 ----"*/,
"XXX "/* "*/,
"XXX "/* "*/,
"CP d8 "/* 2 8 Z1HC"*/,
"RST 38H "/* 1 16 ----"*/,
// ---
"RLC B "/* 2 8 Z00C"*/,
"RLC C "/* 2 8 Z00C"*/,
"RLC D "/* 2 8 Z00C"*/,
"RLC E "/* 2 8 Z00C"*/,
"RLC H "/* 2 8 Z00C"*/,
"RLC L "/* 2 8 Z00C"*/,
"RLC (HL) "/* 2 16 Z00C"*/,
"RLC A "/* 2 8 Z00C"*/,
"RRC B "/* 2 8 Z00C"*/,
"RRC C "/* 2 8 Z00C"*/,
"RRC D "/* 2 8 Z00C"*/,
"RRC E "/* 2 8 Z00C"*/,
"RRC H "/* 2 8 Z00C"*/,
"RRC L "/* 2 8 Z00C"*/,
"RRC (HL) "/* 2 16 Z00C"*/,
"RRC A "/* 2 8 Z00C"*/,
"RL B "/* 2 8 Z00C"*/,
"RL C "/* 2 8 Z00C"*/,
"RL D "/* 2 8 Z00C"*/,
"RL E "/* 2 8 Z00C"*/,
"RL H "/* 2 8 Z00C"*/,
"RL L "/* 2 8 Z00C"*/,
"RL (HL) "/* 2 16 Z00C"*/,
"RL A "/* 2 8 Z00C"*/,
"RR B "/* 2 8 Z00C"*/,
"RR C "/* 2 8 Z00C"*/,
"RR D "/* 2 8 Z00C"*/,
"RR E "/* 2 8 Z00C"*/,
"RR H "/* 2 8 Z00C"*/,
"RR L "/* 2 8 Z00C"*/,
"RR (HL) "/* 2 16 Z00C"*/,
"RR A "/* 2 8 Z00C"*/,
"SLA B "/* 2 8 Z00C"*/,
"SLA C "/* 2 8 Z00C"*/,
"SLA D "/* 2 8 Z00C"*/,
"SLA E "/* 2 8 Z00C"*/,
"SLA H "/* 2 8 Z00C"*/,
"SLA L "/* 2 8 Z00C"*/,
"SLA (HL) "/* 2 16 Z00C"*/,
"SLA A "/* 2 8 Z00C"*/,
"SRA B "/* 2 8 Z000"*/,
"SRA C "/* 2 8 Z000"*/,
"SRA D "/* 2 8 Z000"*/,
"SRA E "/* 2 8 Z000"*/,
"SRA H "/* 2 8 Z000"*/,
"SRA L "/* 2 8 Z000"*/,
"SRA (HL) "/* 2 16 Z000"*/,
"SRA A "/* 2 8 Z000"*/,
"SWAP B "/* 2 8 Z000"*/,
"SWAP C "/* 2 8 Z000"*/,
"SWAP D "/* 2 8 Z000"*/,
"SWAP E "/* 2 8 Z000"*/,
"SWAP H "/* 2 8 Z000"*/,
"SWAP L "/* 2 8 Z000"*/,
"SWAP (HL) "/* 2 16 Z000"*/,
"SWAP A "/* 2 8 Z000"*/,
"SRL B "/* 2 8 Z00C"*/,
"SRL C "/* 2 8 Z00C"*/,
"SRL D "/* 2 8 Z00C"*/,
"SRL E "/* 2 8 Z00C"*/,
"SRL H "/* 2 8 Z00C"*/,
"SRL L "/* 2 8 Z00C"*/,
"SRL (HL) "/* 2 16 Z00C"*/,
"SRL A "/* 2 8 Z00C"*/,
"BIT 0,B "/* 2 8 Z01-"*/,
"BIT 0,C "/* 2 8 Z01-"*/,
"BIT 0,D "/* 2 8 Z01-"*/,
"BIT 0,E "/* 2 8 Z01-"*/,
"BIT 0,H "/* 2 8 Z01-"*/,
"BIT 0,L "/* 2 8 Z01-"*/,
"BIT 0,(HL)"/* 2 16 Z01-"*/,
"BIT 0,A "/* 2 8 Z01-"*/,
"BIT 1,B "/* 2 8 Z01-"*/,
"BIT 1,C "/* 2 8 Z01-"*/,
"BIT 1,D "/* 2 8 Z01-"*/,
"BIT 1,E "/* 2 8 Z01-"*/,
"BIT 1,H "/* 2 8 Z01-"*/,
"BIT 1,L "/* 2 8 Z01-"*/,
"BIT 1,(HL)"/* 2 16 Z01-"*/,
"BIT 1,A "/* 2 8 Z01-"*/,
"BIT 2,B "/* 2 8 Z01-"*/,
"BIT 2,C "/* 2 8 Z01-"*/,
"BIT 2,D "/* 2 8 Z01-"*/,
"BIT 2,E "/* 2 8 Z01-"*/,
"BIT 2,H "/* 2 8 Z01-"*/,
"BIT 2,L "/* 2 8 Z01-"*/,
"BIT 2,(HL)"/* 2 16 Z01-"*/,
"BIT 2,A "/* 2 8 Z01-"*/,
"BIT 3,B "/* 2 8 Z01-"*/,
"BIT 3,C "/* 2 8 Z01-"*/,
"BIT 3,D "/* 2 8 Z01-"*/,
"BIT 3,E "/* 2 8 Z01-"*/,
"BIT 3,H "/* 2 8 Z01-"*/,
"BIT 3,L "/* 2 8 Z01-"*/,
"BIT 3,(HL)"/* 2 16 Z01-"*/,
"BIT 3,A "/* 2 8 Z01-"*/,
"BIT 4,B "/* 2 8 Z01-"*/,
"BIT 4,C "/* 2 8 Z01-"*/,
"BIT 4,D "/* 2 8 Z01-"*/,
"BIT 4,E "/* 2 8 Z01-"*/,
"BIT 4,H "/* 2 8 Z01-"*/,
"BIT 4,L "/* 2 8 Z01-"*/,
"BIT 4,(HL)"/* 2 16 Z01-"*/,
"BIT 4,A "/* 2 8 Z01-"*/,
"BIT 5,B "/* 2 8 Z01-"*/,
"BIT 5,C "/* 2 8 Z01-"*/,
"BIT 5,D "/* 2 8 Z01-"*/,
"BIT 5,E "/* 2 8 Z01-"*/,
"BIT 5,H "/* 2 8 Z01-"*/,
"BIT 5,L "/* 2 8 Z01-"*/,
"BIT 5,(HL)"/* 2 16 Z01-"*/,
"BIT 5,A "/* 2 8 Z01-"*/,
"BIT 6,B "/* 2 8 Z01-"*/,
"BIT 6,C "/* 2 8 Z01-"*/,
"BIT 6,D "/* 2 8 Z01-"*/,
"BIT 6,E "/* 2 8 Z01-"*/,
"BIT 6,H "/* 2 8 Z01-"*/,
"BIT 6,L "/* 2 8 Z01-"*/,
"BIT 6,(HL)"/* 2 16 Z01-"*/,
"BIT 6,A "/* 2 8 Z01-"*/,
"BIT 7,B "/* 2 8 Z01-"*/,
"BIT 7,C "/* 2 8 Z01-"*/,
"BIT 7,D "/* 2 8 Z01-"*/,
"BIT 7,E "/* 2 8 Z01-"*/,
"BIT 7,H "/* 2 8 Z01-"*/,
"BIT 7,L "/* 2 8 Z01-"*/,
"BIT 7,(HL)"/* 2 16 Z01-"*/,
"BIT 7,A "/* 2 8 Z01-"*/,
"RES 0,B "/* 2 8 ----"*/,
"RES 0,C "/* 2 8 ----"*/,
"RES 0,D "/* 2 8 ----"*/,
"RES 0,E "/* 2 8 ----"*/,
"RES 0,H "/* 2 8 ----"*/,
"RES 0,L "/* 2 8 ----"*/,
"RES 0,(HL)"/* 2 16 ----"*/,
"RES 0,A "/* 2 8 ----"*/,
"RES 1,B "/* 2 8 ----"*/,
"RES 1,C "/* 2 8 ----"*/,
"RES 1,D "/* 2 8 ----"*/,
"RES 1,E "/* 2 8 ----"*/,
"RES 1,H "/* 2 8 ----"*/,
"RES 1,L "/* 2 8 ----"*/,
"RES 1,(HL)"/* 2 16 ----"*/,
"RES 1,A "/* 2 8 ----"*/,
"RES 2,B "/* 2 8 ----"*/,
"RES 2,C "/* 2 8 ----"*/,
"RES 2,D "/* 2 8 ----"*/,
"RES 2,E "/* 2 8 ----"*/,
"RES 2,H "/* 2 8 ----"*/,
"RES 2,L "/* 2 8 ----"*/,
"RES 2,(HL)"/* 2 16 ----"*/,
"RES 2,A "/* 2 8 ----"*/,
"RES 3,B "/* 2 8 ----"*/,
"RES 3,C "/* 2 8 ----"*/,
"RES 3,D "/* 2 8 ----"*/,
"RES 3,E "/* 2 8 ----"*/,
"RES 3,H "/* 2 8 ----"*/,
"RES 3,L "/* 2 8 ----"*/,
"RES 3,(HL)"/* 2 16 ----"*/,
"RES 3,A "/* 2 8 ----"*/,
"RES 4,B "/* 2 8 ----"*/,
"RES 4,C "/* 2 8 ----"*/,
"RES 4,D "/* 2 8 ----"*/,
"RES 4,E "/* 2 8 ----"*/,
"RES 4,H "/* 2 8 ----"*/,
"RES 4,L "/* 2 8 ----"*/,
"RES 4,(HL)"/* 2 16 ----"*/,
"RES 4,A "/* 2 8 ----"*/,
"RES 5,B "/* 2 8 ----"*/,
"RES 5,C "/* 2 8 ----"*/,
"RES 5,D "/* 2 8 ----"*/,
"RES 5,E "/* 2 8 ----"*/,
"RES 5,H "/* 2 8 ----"*/,
"RES 5,L "/* 2 8 ----"*/,
"RES 5,(HL)"/* 2 16 ----"*/,
"RES 5,A "/* 2 8 ----"*/,
"RES 6,B "/* 2 8 ----"*/,
"RES 6,C "/* 2 8 ----"*/,
"RES 6,D "/* 2 8 ----"*/,
"RES 6,E "/* 2 8 ----"*/,
"RES 6,H "/* 2 8 ----"*/,
"RES 6,L "/* 2 8 ----"*/,
"RES 6,(HL)"/* 2 16 ----"*/,
"RES 6,A "/* 2 8 ----"*/,
"RES 7,B "/* 2 8 ----"*/,
"RES 7,C "/* 2 8 ----"*/,
"RES 7,D "/* 2 8 ----"*/,
"RES 7,E "/* 2 8 ----"*/,
"RES 7,H "/* 2 8 ----"*/,
"RES 7,L "/* 2 8 ----"*/,
"RES 7,(HL)"/* 2 16 ----"*/,
"RES 7,A "/* 2 8 ----"*/,
"SET 0,B "/* 2 8 ----"*/,
"SET 0,C "/* 2 8 ----"*/,
"SET 0,D "/* 2 8 ----"*/,
"SET 0,E "/* 2 8 ----"*/,
"SET 0,H "/* 2 8 ----"*/,
"SET 0,L "/* 2 8 ----"*/,
"SET 0,(HL)"/* 2 16 ----"*/,
"SET 0,A "/* 2 8 ----"*/,
"SET 1,B "/* 2 8 ----"*/,
"SET 1,C "/* 2 8 ----"*/,
"SET 1,D "/* 2 8 ----"*/,
"SET 1,E "/* 2 8 ----"*/,
"SET 1,H "/* 2 8 ----"*/,
"SET 1,L "/* 2 8 ----"*/,
"SET 1,(HL)"/* 2 16 ----"*/,
"SET 1,A "/* 2 8 ----"*/,
"SET 2,B "/* 2 8 ----"*/,
"SET 2,C "/* 2 8 ----"*/,
"SET 2,D "/* 2 8 ----"*/,
"SET 2,E "/* 2 8 ----"*/,
"SET 2,H "/* 2 8 ----"*/,
"SET 2,L "/* 2 8 ----"*/,
"SET 2,(HL)"/* 2 16 ----"*/,
"SET 2,A "/* 2 8 ----"*/,
"SET 3,B "/* 2 8 ----"*/,
"SET 3,C "/* 2 8 ----"*/,
"SET 3,D "/* 2 8 ----"*/,
"SET 3,E "/* 2 8 ----"*/,
"SET 3,H "/* 2 8 ----"*/,
"SET 3,L "/* 2 8 ----"*/,
"SET 3,(HL)"/* 2 16 ----"*/,
"SET 3,A "/* 2 8 ----"*/,
"SET 4,B "/* 2 8 ----"*/,
"SET 4,C "/* 2 8 ----"*/,
"SET 4,D "/* 2 8 ----"*/,
"SET 4,E "/* 2 8 ----"*/,
"SET 4,H "/* 2 8 ----"*/,
"SET 4,L "/* 2 8 ----"*/,
"SET 4,(HL)"/* 2 16 ----"*/,
"SET 4,A "/* 2 8 ----"*/,
"SET 5,B "/* 2 8 ----"*/,
"SET 5,C "/* 2 8 ----"*/,
"SET 5,D "/* 2 8 ----"*/,
"SET 5,E "/* 2 8 ----"*/,
"SET 5,H "/* 2 8 ----"*/,
"SET 5,L "/* 2 8 ----"*/,
"SET 5,(HL)"/* 2 16 ----"*/,
"SET 5,A "/* 2 8 ----"*/,
"SET 6,B "/* 2 8 ----"*/,
"SET 6,C "/* 2 8 ----"*/,
"SET 6,D "/* 2 8 ----"*/,
"SET 6,E "/* 2 8 ----"*/,
"SET 6,H "/* 2 8 ----"*/,
"SET 6,L "/* 2 8 ----"*/,
"SET 6,(HL)"/* 2 16 ----"*/,
"SET 6,A "/* 2 8 ----"*/,
"SET 7,B "/* 2 8 ----"*/,
"SET 7,C "/* 2 8 ----"*/,
"SET 7,D "/* 2 8 ----"*/,
"SET 7,E "/* 2 8 ----"*/,
"SET 7,H "/* 2 8 ----"*/,
"SET 7,L "/* 2 8 ----"*/,
"SET 7,(HL)"/* 2 16 ----"*/,
"SET 7,A "/* 2 8 ----"*/,
};
// }}}
// }}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment