private void UpdateSlotVisibleInPage3IsExpanded(Z80Page page, SlotNumber slotNumber) { if (page == 3) { slotVisibleInPage3IsExpanded = isExpanded[slotNumber.PrimarySlotNumber]; } }
public void WriteToSlotSelectionRegister(byte value) { slotSelectionRegisterValue = value; for (int p = 0; p < 4; p++) { Z80Page page = p; var primarySlotNumber = value & 3; SlotNumber slotNumber; if (isExpanded[primarySlotNumber]) { var subslotNumber = secondarySlotsSelectedForEachPrimarySlot[primarySlotNumber][page]; slotNumber = new SlotNumber(primarySlotNumber, subslotNumber); } else { slotNumber = new SlotNumber((byte)primarySlotNumber); } SetVisibleSlot(page, slotNumber); value >>= 2; } if (SlotSelectionRegisterWritten != null) { SlotSelectionRegisterWritten(this, new SlotSelectionRegisterWrittenEventArgs(slotSelectionRegisterValue)); } }
public void Can_be_implicitly_cast_to_int(int page) { var sut = new Z80Page(page); var pageNumber = (int)sut; Assert.AreEqual(sut.Value, pageNumber); }
public void Address_mask_can_be_retrieved_via_AddressMask_property(int page) { var masks = new[] { 0x0000, 0x4000, 0x8000, 0xC000 }; var sut = new Z80Page(page); Assert.AreEqual(masks[page], sut.AddressMask); }
public void Can_create_instance_from_address(int page) { var address = (ushort)(page * 16384); var sut = Z80Page.FromAddress(address); Assert.AreEqual(page, sut.Value); }
public void Two_instances_are_different_if_page_number_is_not_the_same(int page) { var sut1 = new Z80Page(page); var sut2 = new Z80Page((page + 1) & 3); Assert.True(sut1 != sut2); Assert.False(sut1.Equals(sut2)); }
public void Two_instances_are_equal_if_page_number_is_the_same(int page) { var sut1 = new Z80Page(page); var sut2 = new Z80Page(page); Assert.True(sut1 == sut2); Assert.True(sut1.Equals(sut2)); }
public void Can_be_compared_to_int(int page) { var sut = new Z80Page(page); Assert.AreEqual(page, sut); var otherPage = (page + 1) & 3; Assert.AreNotEqual(otherPage, sut); }
public PlainRomPlugin(PluginContext context, IDictionary <string, object> pluginConfig) { page = pluginConfig.GetValueOrDefault <int>("page", 0); if (!pluginConfig.ContainsKey("file")) { throw new InvalidOperationException("No 'file' key in config file"); } fileName = pluginConfig.GetMachineOrDataFilePath(pluginConfig.GetValue <string>("file")); }
public void WriteToSegmentSelectionRegister(Z80Page page, byte segmentNumber) { segmentNumber &= segmentMask; if (segmentsInEachPage[page] == segmentNumber) { return; } addressOffsetsPerEachPage[page.AddressMask] = segmentNumber * segmentSize; segmentsInEachPage[page] = segmentNumber; BankValueChanged?.Invoke(this, new BankValueChangedEventArgs(page, segmentNumber)); }
public void EnableSlot(Z80Page page, SlotNumber slot) { ThrowIfUndefinedSlot(slot); SetVisibleSlot(page, slot); byte newSlotSelectionRegisterValue = 0; for (var p = 0; p < 4; p++) { newSlotSelectionRegisterValue |= (byte)(visibleSlotNumbers[p].PrimarySlotNumber << 2 * p); } slotSelectionRegisterValue = newSlotSelectionRegisterValue; }
private byte SlotSelectionRegisterValue(Z80Page page0, Z80Page page1, Z80Page page2, Z80Page page3) { return((byte)(page0 + (page1 << 2) + (page2 << 4) + (page3 << 6))); }
public SlotNumber GetCurrentSlot(Z80Page page) { return(visibleSlotNumbers[page]); }
private void SetVisibleSlot(Z80Page page, SlotNumber slotNumber) { visibleSlotNumbers[page] = slotNumber; visibleSlotContents[page.AddressMask] = slotContents[slotNumber]; UpdateSlotVisibleInPage3IsExpanded(page, slotNumber); }
public void Page_number_can_be_retrieved_via_PageNumber_property(int page) { var sut = new Z80Page(page); Assert.AreEqual(page, sut.Value); }
public void Can_create_instances_with_values_0_to_3(int page) { var sut = new Z80Page(page); Assert.IsNotNull(sut); }