summaryrefslogtreecommitdiff
path: root/Q1.core/Components/Bus.cs
diff options
context:
space:
mode:
authorMelodi <62381002+Melodi17@users.noreply.github.com>2026-03-20 06:04:13 +1000
committerMelodi <62381002+Melodi17@users.noreply.github.com>2026-03-20 06:04:13 +1000
commit571e44a12d2a52e92c1165ec294469d3d384faef (patch)
treed278303fe080322a7a4aeb122c09b6cc4bafaee7 /Q1.core/Components/Bus.cs
parent6f8356eca832e2350424b417cdea2d8d8eb6b1e3 (diff)
change: Split addressable and bus device
Diffstat (limited to 'Q1.core/Components/Bus.cs')
-rw-r--r--Q1.core/Components/Bus.cs20
1 files changed, 10 insertions, 10 deletions
diff --git a/Q1.core/Components/Bus.cs b/Q1.core/Components/Bus.cs
index 02b20a7..46c5847 100644
--- a/Q1.core/Components/Bus.cs
+++ b/Q1.core/Components/Bus.cs
@@ -5,7 +5,7 @@ using Q1.core.Arch;
public class Bus : IAddressable
{
private Chip? _chip;
- private readonly List<IAddressable> _devices;
+ private readonly List<IBusDevice> _devices;
public u16 AddressableStart { get; }
public u16 AddressableEnd { get; }
@@ -34,7 +34,7 @@ public class Bus : IAddressable
chip.Bus = this;
}
- public void MountDevice(IAddressable device)
+ public void MountDevice(IBusDevice device)
{
if (device.AddressableStart >= device.AddressableEnd)
throw new ArgumentException("Addressable range is invalid.", nameof(device));
@@ -45,14 +45,14 @@ public class Bus : IAddressable
if (index > 0)
{
- IAddressable prev = this._devices[index - 1];
+ IBusDevice prev = this._devices[index - 1];
if (device.AddressableStart < prev.AddressableEnd)
throw new InvalidOperationException("Address range overlaps with previous device.");
}
if (index < this._devices.Count)
{
- IAddressable next = this._devices[index];
+ IBusDevice next = this._devices[index];
if (device.AddressableEnd > next.AddressableStart)
throw new InvalidOperationException("Address range overlaps with next device.");
}
@@ -60,9 +60,9 @@ public class Bus : IAddressable
this._devices.Insert(index, device);
}
- private IAddressable? GetDevice(u16 address)
+ private IBusDevice? GetDevice(u16 address)
{
- foreach (IAddressable device in this._devices)
+ foreach (IBusDevice device in this._devices)
{
if (address < device.AddressableStart)
break;
@@ -76,7 +76,7 @@ public class Bus : IAddressable
public u8 Read(u16 address)
{
- IAddressable? device = this.GetDevice(address);
+ IBusDevice? device = this.GetDevice(address);
if (device == null)
return 0;
@@ -85,7 +85,7 @@ public class Bus : IAddressable
public void Write(u16 address, u8 value)
{
- IAddressable? device = this.GetDevice(address);
+ IBusDevice? device = this.GetDevice(address);
if (device == null)
return;
@@ -94,7 +94,7 @@ public class Bus : IAddressable
public void Clock()
{
- foreach (IAddressable addressable in this._devices)
- addressable.Clock();
+ foreach (IBusDevice addressable in this._devices)
+ addressable.Clock(this);
}
} \ No newline at end of file