示例#1
0
        public void WriteWorksAsExpected()
        {
            // --- Arrange
            var dev = new SpectrumP3MemoryDevice();

            dev.OnAttachedToVm(null);
            dev.Reset();

            for (var i = 0; i < 0x4000; i++)
            {
                dev.CurrentRom[i] = 0xFC;
            }

            for (var i = 0; i <= 0xFFFF; i++)
            {
                dev.Write((ushort)i, (byte)(i & 0xFF));
            }

            // -- Assert
            for (var i = 0; i <= 0x3FFF; i++)
            {
                dev.Read((ushort)i).ShouldBe((byte)0xFC);
            }
            for (var i = 0x4000; i <= 0x7FFF; i++)
            {
                dev.Read((ushort)i).ShouldBe((byte)(i & 0xFF));
            }
            for (var i = 0x8000; i <= 0xBFFF; i++)
            {
                dev.Read((ushort)i).ShouldBe((byte)(i & 0xFF));
            }
            for (var i = 0xC000; i <= 0xFFFF; i++)
            {
                dev.Read((ushort)i).ShouldBe((byte)(i & 0xFF));
            }
            for (var b = 0; b < 8; b++)
            {
                for (var i = 0; i <= 0x3FFF; i++)
                {
                    if (b == 0 || b == 2 || b == 5)
                    {
                        dev.RamBanks[b][i].ShouldBe((byte)(i & 0xFF));
                    }
                    else
                    {
                        dev.RamBanks[b][i].ShouldBe((byte)0xFF);
                    }
                }
            }
        }