Example #1
0
        public void CopyRomWorksWithPage3()
        {
            // --- Arrange
            var dev = new SpectrumP3MemoryDevice();

            dev.OnAttachedToVm(null);
            for (var i = 0; i < 0x4000; i++)
            {
                dev.CurrentRom[i] = 0xFF;
                for (var b = 0; b < 8; b++)
                {
                    dev.RamBanks[b][i] = (byte)b;
                }
            }
            dev.SelectRom(3);

            // --- Act
            var rom = new byte[0x4000];

            for (var i = 0; i <= 0x3FFF; i++)
            {
                rom[i] = (byte)(i - 3);
            }
            dev.CopyRom(rom);

            // -- Assert
            for (var i = 0; i <= 0x3FFF; i++)
            {
                dev.Read((ushort)i).ShouldBe((byte)(i - 3));
            }
            for (var i = 0x4000; i <= 0x7FFF; i++)
            {
                dev.Read((ushort)i).ShouldBe((byte)0x05);
            }
            for (var i = 0x8000; i <= 0xBFFF; i++)
            {
                dev.Read((ushort)i).ShouldBe((byte)0x02);
            }
            for (var i = 0xC000; i <= 0xFFFF; i++)
            {
                dev.Read((ushort)i).ShouldBe((byte)0x00);
            }
        }