using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Essgee.Emulation.CPU { public partial class Z80A { static SimpleOpcodeDelegate[] opcodesPrefixCB = new SimpleOpcodeDelegate[] { /* 0x00 */ new SimpleOpcodeDelegate((c) => { c.RotateLeftCircular(ref c.bc.High); }), new SimpleOpcodeDelegate((c) => { c.RotateLeftCircular(ref c.bc.Low); }), new SimpleOpcodeDelegate((c) => { c.RotateLeftCircular(ref c.de.High); }), new SimpleOpcodeDelegate((c) => { c.RotateLeftCircular(ref c.de.Low); }), new SimpleOpcodeDelegate((c) => { c.RotateLeftCircular(ref c.hl.High); }), new SimpleOpcodeDelegate((c) => { c.RotateLeftCircular(ref c.hl.Low); }), new SimpleOpcodeDelegate((c) => { c.RotateLeftCircular(c.hl.Word); }), new SimpleOpcodeDelegate((c) => { c.RotateLeftCircular(ref c.af.High); }), new SimpleOpcodeDelegate((c) => { c.RotateRightCircular(ref c.bc.High); }), new SimpleOpcodeDelegate((c) => { c.RotateRightCircular(ref c.bc.Low); }), new SimpleOpcodeDelegate((c) => { c.RotateRightCircular(ref c.de.High); }), new SimpleOpcodeDelegate((c) => { c.RotateRightCircular(ref c.de.Low); }), new SimpleOpcodeDelegate((c) => { c.RotateRightCircular(ref c.hl.High); }), new SimpleOpcodeDelegate((c) => { c.RotateRightCircular(ref c.hl.Low); }), new SimpleOpcodeDelegate((c) => { c.RotateRightCircular(c.hl.Word); }), new SimpleOpcodeDelegate((c) => { c.RotateRightCircular(ref c.af.High); }), /* 0x10 */ new SimpleOpcodeDelegate((c) => { c.RotateLeft(ref c.bc.High); }), new SimpleOpcodeDelegate((c) => { c.RotateLeft(ref c.bc.Low); }), new SimpleOpcodeDelegate((c) => { c.RotateLeft(ref c.de.High); }), new SimpleOpcodeDelegate((c) => { c.RotateLeft(ref c.de.Low); }), new SimpleOpcodeDelegate((c) => { c.RotateLeft(ref c.hl.High); }), new SimpleOpcodeDelegate((c) => { c.RotateLeft(ref c.hl.Low); }), new SimpleOpcodeDelegate((c) => { c.RotateLeft(c.hl.Word); }), new SimpleOpcodeDelegate((c) => { c.RotateLeft(ref c.af.High); }), new SimpleOpcodeDelegate((c) => { c.RotateRight(ref c.bc.High); }), new SimpleOpcodeDelegate((c) => { c.RotateRight(ref c.bc.Low); }), new SimpleOpcodeDelegate((c) => { c.RotateRight(ref c.de.High); }), new SimpleOpcodeDelegate((c) => { c.RotateRight(ref c.de.Low); }), new SimpleOpcodeDelegate((c) => { c.RotateRight(ref c.hl.High); }), new SimpleOpcodeDelegate((c) => { c.RotateRight(ref c.hl.Low); }), new SimpleOpcodeDelegate((c) => { c.RotateRight(c.hl.Word); }), new SimpleOpcodeDelegate((c) => { c.RotateRight(ref c.af.High); }), /* 0x20 */ new SimpleOpcodeDelegate((c) => { c.ShiftLeftArithmetic(ref c.bc.High); }), new SimpleOpcodeDelegate((c) => { c.ShiftLeftArithmetic(ref c.bc.Low); }), new SimpleOpcodeDelegate((c) => { c.ShiftLeftArithmetic(ref c.de.High); }), new SimpleOpcodeDelegate((c) => { c.ShiftLeftArithmetic(ref c.de.Low); }), new SimpleOpcodeDelegate((c) => { c.ShiftLeftArithmetic(ref c.hl.High); }), new SimpleOpcodeDelegate((c) => { c.ShiftLeftArithmetic(ref c.hl.Low); }), new SimpleOpcodeDelegate((c) => { c.ShiftLeftArithmetic(c.hl.Word); }), new SimpleOpcodeDelegate((c) => { c.ShiftLeftArithmetic(ref c.af.High); }), new SimpleOpcodeDelegate((c) => { c.ShiftRightArithmetic(ref c.bc.High); }), new SimpleOpcodeDelegate((c) => { c.ShiftRightArithmetic(ref c.bc.Low); }), new SimpleOpcodeDelegate((c) => { c.ShiftRightArithmetic(ref c.de.High); }), new SimpleOpcodeDelegate((c) => { c.ShiftRightArithmetic(ref c.de.Low); }), new SimpleOpcodeDelegate((c) => { c.ShiftRightArithmetic(ref c.hl.High); }), new SimpleOpcodeDelegate((c) => { c.ShiftRightArithmetic(ref c.hl.Low); }), new SimpleOpcodeDelegate((c) => { c.ShiftRightArithmetic(c.hl.Word); }), new SimpleOpcodeDelegate((c) => { c.ShiftRightArithmetic(ref c.af.High); }), /* 0x30 */ new SimpleOpcodeDelegate((c) => { c.ShiftLeftLogical(ref c.bc.High); }), new SimpleOpcodeDelegate((c) => { c.ShiftLeftLogical(ref c.bc.Low); }), new SimpleOpcodeDelegate((c) => { c.ShiftLeftLogical(ref c.de.High); }), new SimpleOpcodeDelegate((c) => { c.ShiftLeftLogical(ref c.de.Low); }), new SimpleOpcodeDelegate((c) => { c.ShiftLeftLogical(ref c.hl.High); }), new SimpleOpcodeDelegate((c) => { c.ShiftLeftLogical(ref c.hl.Low); }), new SimpleOpcodeDelegate((c) => { c.ShiftLeftLogical(c.hl.Word); }), new SimpleOpcodeDelegate((c) => { c.ShiftLeftLogical(ref c.af.High); }), new SimpleOpcodeDelegate((c) => { c.ShiftRightLogical(ref c.bc.High); }), new SimpleOpcodeDelegate((c) => { c.ShiftRightLogical(ref c.bc.Low); }), new SimpleOpcodeDelegate((c) => { c.ShiftRightLogical(ref c.de.High); }), new SimpleOpcodeDelegate((c) => { c.ShiftRightLogical(ref c.de.Low); }), new SimpleOpcodeDelegate((c) => { c.ShiftRightLogical(ref c.hl.High); }), new SimpleOpcodeDelegate((c) => { c.ShiftRightLogical(ref c.hl.Low); }), new SimpleOpcodeDelegate((c) => { c.ShiftRightLogical(c.hl.Word); }), new SimpleOpcodeDelegate((c) => { c.ShiftRightLogical(ref c.af.High); }), /* 0x40 */ new SimpleOpcodeDelegate((c) => { c.TestBit(c.bc.High, 0); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.bc.Low, 0); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.de.High, 0); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.de.Low, 0); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.High, 0); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.Low, 0); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.Word, 0); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.af.High, 0); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.bc.High, 1); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.bc.Low, 1); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.de.High, 1); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.de.Low, 1); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.High, 1); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.Low, 1); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.Word, 1); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.af.High, 1); }), /* 0x50 */ new SimpleOpcodeDelegate((c) => { c.TestBit(c.bc.High, 2); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.bc.Low, 2); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.de.High, 2); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.de.Low, 2); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.High, 2); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.Low, 2); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.Word, 2); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.af.High, 2); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.bc.High, 3); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.bc.Low, 3); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.de.High, 3); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.de.Low, 3); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.High, 3); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.Low, 3); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.Word, 3); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.af.High, 3); }), /* 0x60 */ new SimpleOpcodeDelegate((c) => { c.TestBit(c.bc.High, 4); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.bc.Low, 4); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.de.High, 4); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.de.Low, 4); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.High, 4); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.Low, 4); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.Word, 4); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.af.High, 4); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.bc.High, 5); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.bc.Low, 5); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.de.High, 5); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.de.Low, 5); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.High, 5); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.Low, 5); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.Word, 5); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.af.High, 5); }), /* 0x70 */ new SimpleOpcodeDelegate((c) => { c.TestBit(c.bc.High, 6); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.bc.Low, 6); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.de.High, 6); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.de.Low, 6); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.High, 6); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.Low, 6); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.Word, 6); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.af.High, 6); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.bc.High, 7); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.bc.Low, 7); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.de.High, 7); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.de.Low, 7); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.High, 7); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.Low, 7); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.hl.Word, 7); }), new SimpleOpcodeDelegate((c) => { c.TestBit(c.af.High, 7); }), /* 0x80 */ new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.bc.High, 0); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.bc.Low, 0); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.de.High, 0); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.de.Low, 0); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.hl.High, 0); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.hl.Low, 0); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(c.hl.Word, 0); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.af.High, 0); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.bc.High, 1); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.bc.Low, 1); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.de.High, 1); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.de.Low, 1); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.hl.High, 1); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.hl.Low, 1); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(c.hl.Word, 1); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.af.High, 1); }), /* 0x90 */ new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.bc.High, 2); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.bc.Low, 2); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.de.High, 2); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.de.Low, 2); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.hl.High, 2); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.hl.Low, 2); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(c.hl.Word, 2); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.af.High, 2); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.bc.High, 3); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.bc.Low, 3); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.de.High, 3); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.de.Low, 3); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.hl.High, 3); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.hl.Low, 3); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(c.hl.Word, 3); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.af.High, 3); }), /* 0xA0 */ new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.bc.High, 4); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.bc.Low, 4); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.de.High, 4); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.de.Low, 4); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.hl.High, 4); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.hl.Low, 4); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(c.hl.Word, 4); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.af.High, 4); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.bc.High, 5); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.bc.Low, 5); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.de.High, 5); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.de.Low, 5); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.hl.High, 5); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.hl.Low, 5); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(c.hl.Word, 5); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.af.High, 5); }), /* 0xB0 */ new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.bc.High, 6); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.bc.Low, 6); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.de.High, 6); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.de.Low, 6); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.hl.High, 6); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.hl.Low, 6); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(c.hl.Word, 6); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.af.High, 6); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.bc.High, 7); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.bc.Low, 7); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.de.High, 7); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.de.Low, 7); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.hl.High, 7); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.hl.Low, 7); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(c.hl.Word, 7); }), new SimpleOpcodeDelegate((c) => { c.ResetBit(ref c.af.High, 7); }), /* 0xC0 */ new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.bc.High, 0); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.bc.Low, 0); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.de.High, 0); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.de.Low, 0); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.hl.High, 0); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.hl.Low, 0); }), new SimpleOpcodeDelegate((c) => { c.SetBit(c.hl.Word, 0); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.af.High, 0); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.bc.High, 1); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.bc.Low, 1); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.de.High, 1); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.de.Low, 1); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.hl.High, 1); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.hl.Low, 1); }), new SimpleOpcodeDelegate((c) => { c.SetBit(c.hl.Word, 1); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.af.High, 1); }), /* 0xD0 */ new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.bc.High, 2); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.bc.Low, 2); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.de.High, 2); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.de.Low, 2); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.hl.High, 2); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.hl.Low, 2); }), new SimpleOpcodeDelegate((c) => { c.SetBit(c.hl.Word, 2); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.af.High, 2); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.bc.High, 3); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.bc.Low, 3); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.de.High, 3); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.de.Low, 3); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.hl.High, 3); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.hl.Low, 3); }), new SimpleOpcodeDelegate((c) => { c.SetBit(c.hl.Word, 3); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.af.High, 3); }), /* 0xE0 */ new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.bc.High, 4); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.bc.Low, 4); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.de.High, 4); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.de.Low, 4); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.hl.High, 4); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.hl.Low, 4); }), new SimpleOpcodeDelegate((c) => { c.SetBit(c.hl.Word, 4); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.af.High, 4); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.bc.High, 5); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.bc.Low, 5); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.de.High, 5); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.de.Low, 5); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.hl.High, 5); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.hl.Low, 5); }), new SimpleOpcodeDelegate((c) => { c.SetBit(c.hl.Word, 5); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.af.High, 5); }), /* 0xF0 */ new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.bc.High, 6); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.bc.Low, 6); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.de.High, 6); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.de.Low, 6); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.hl.High, 6); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.hl.Low, 6); }), new SimpleOpcodeDelegate((c) => { c.SetBit(c.hl.Word, 6); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.af.High, 6); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.bc.High, 7); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.bc.Low, 7); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.de.High, 7); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.de.Low, 7); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.hl.High, 7); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.hl.Low, 7); }), new SimpleOpcodeDelegate((c) => { c.SetBit(c.hl.Word, 7); }), new SimpleOpcodeDelegate((c) => { c.SetBit(ref c.af.High, 7); }), }; } }