public void CheckMove_A0i_ToA1()
        {
            // 00ss aaa0 01mm mxxx
            // 0001 0010 0101 1000  0x1258
            // MOVEM <ea>,An
            // MOVEM (A0)+,A1

            byte[] data = new byte[]
            {
                0x12, 0x58
            };

            MegadriveState state = new MegadriveState(new Data(data), 0x00000000, 0x00000000, 0x000000, 0x3FFFFF, 0x0FF0000, 0xFFFFFF);

            state.WriteByte(0x00FF0000, 0xAA);
            state.WriteByte(0x00FF0001, 0xBB);
            state.WriteAReg(0x0, 0x00FF0000);
            state.FetchOpCode();

            var opcode = new MOVEA(state);

            Assert.That(opcode.Assembly, Is.EqualTo($"MOVEA (A0)+,A1"));
            Assert.That(opcode.Size, Is.EqualTo(Size.Word));
            Assert.That(state.ReadAReg(0x0), Is.EqualTo(0x00FF0002));
            Assert.That(state.ReadAReg(0x1), Is.EqualTo(0xAABB));
        }
        public void CheckMove_dA0_ToA1()
        {
            // 00ss aaa0 01mm mxxx
            // 0010 0010 0110 0000  0x2260
            // MOVEM <ea>,An
            // MOVEM -(A0),A1

            byte[] data = new byte[]
            {
                0x22, 0x60
            };

            MegadriveState state = new MegadriveState(new Data(data), 0x00000000, 0x00000000, 0x000000, 0x3FFFFF, 0x0FF0000, 0xFFFFFF);

            state.WriteByte(0x00FF0000, 0xAA);
            state.WriteByte(0x00FF0001, 0xBB);
            state.WriteByte(0x00FF0002, 0xCC);
            state.WriteByte(0x00FF0003, 0xDD);
            state.WriteAReg(0x0, 0x00FF0004);
            state.FetchOpCode();

            var opcode = new MOVEA(state);

            Assert.That(opcode.Assembly, Is.EqualTo($"MOVEA -(A0),A1"));
            Assert.That(opcode.Size, Is.EqualTo(Size.Long));
            Assert.That(state.ReadAReg(0x0), Is.EqualTo(0x00FF0000));
            Assert.That(state.ReadAReg(0x1), Is.EqualTo(0xAABBCCDD));
        }
        public void CheckMoveA0ToA1()
        {
            // 00ss aaa0 01mm mxxx
            // 0001 0010 0100 1000  0x1248
            // MOVEM <ea>,An
            // MOVEM A0,A1

            byte[] data = new byte[]
            {
                0x12, 0x48
            };

            MegadriveState state = new MegadriveState(new Data(data), 0x00000000, 0x00000000, 0x000000, 0x3FFFFF, 0x0FF0000, 0xFFFFFF);

            state.WriteAReg(0x0, 0xAABBCCDD);
            state.FetchOpCode();

            var opcode = new MOVEA(state);

            Assert.That(opcode.Assembly, Is.EqualTo($"MOVEA A0,A1"));
            Assert.That(opcode.Size, Is.EqualTo(Size.Word));
            Assert.That(state.ReadAReg(0x1), Is.EqualTo(0xCCDD));
        }
Пример #4
0
 public AnonymousInstruction1(MOVEA parent)
 {
     this.parent = parent;
 }