summaryrefslogtreecommitdiff
path: root/Emulator/Chip/RamDevice.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Emulator/Chip/RamDevice.cs')
-rw-r--r--Emulator/Chip/RamDevice.cs33
1 files changed, 33 insertions, 0 deletions
diff --git a/Emulator/Chip/RamDevice.cs b/Emulator/Chip/RamDevice.cs
new file mode 100644
index 0000000..8d5b051
--- /dev/null
+++ b/Emulator/Chip/RamDevice.cs
@@ -0,0 +1,33 @@
+namespace Q1.Emulator.Chip;
+
+public class RamDevice : BusDevice
+{
+ public u8[] Memory;
+
+ public RamDevice(u16 start, u16 size) : base(start, (u16) (start + size))
+ {
+ this.Memory = new u8[size];
+ }
+
+ public override void Reset()
+ {
+ this.Memory = new u8[this.AddressableEnd - this.AddressableStart];
+ }
+
+ public override void Clock()
+ {
+ // No clocking needed for RAM
+ }
+
+ public override u8 Read(u16 address)
+ {
+ u16 relativeAddress = this.GetRelativeAddress(address);
+ return this.Memory[relativeAddress];
+ }
+
+ public override void Write(u16 address, u8 value)
+ {
+ u16 relativeAddress = this.GetRelativeAddress(address);
+ this.Memory[relativeAddress] = value;
+ }
+} \ No newline at end of file