public void SelectRomWorksWithPage3() { // --- Arrange var dev = new SpectrumP3MemoryDevice(); dev.OnAttachedToVm(null); dev.SelectRom(0); for (var i = 0; i < 0x4000; i++) { dev.CurrentRom[i] = 0xAA; } dev.SelectRom(3); for (var i = 0; i < 0x4000; i++) { dev.CurrentRom[i] = 0x55; } dev.SelectRom(0); // --- Act dev.SelectRom(3); // -- Assert dev.IsInAllRamMode.ShouldBeFalse(); for (var i = 0; i <= 0x3FFF; i++) { dev.Read((ushort)i).ShouldBe((byte)0x55); } }
public void GetSelectedRomIndexWorksAsExpected() { // --- Arrange var dev = new SpectrumP3MemoryDevice(); dev.OnAttachedToVm(null); // --- Act dev.SelectRom(0); var index1 = dev.GetSelectedRomIndex(); dev.SelectRom(1); var index2 = dev.GetSelectedRomIndex(); dev.SelectRom(2); var index3 = dev.GetSelectedRomIndex(); dev.SelectRom(3); var index4 = dev.GetSelectedRomIndex(); // -- Assert index1.ShouldBe(0); index2.ShouldBe(1); index3.ShouldBe(2); index4.ShouldBe(3); }
public void SelectRomResetsSpecialMode(int romIndex) { // --- Arrange var dev = new SpectrumP3MemoryDevice(); dev.OnAttachedToVm(null); dev.PageIn(2, 4); // --- Act var before = dev.IsInAllRamMode; dev.SelectRom(romIndex); var after = dev.IsInAllRamMode; // -- Assert before.ShouldBeTrue(); after.ShouldBeFalse(); }
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); } }