summaryrefslogtreecommitdiff
path: root/Q1.core/Components/Memory.cs
blob: 38c33eebfeac0fce6a3fd5750afad96eab806e5a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
namespace Q1.core.Components;

public class Memory : IBusDevice
{
    private readonly u8[] _memory;
    
    public u16 AddressableStart { get; }
    public u16 AddressableEnd { get; }
    
    public Memory(u16 start, u16 size)
    {
        this.AddressableStart = start;
        this.AddressableEnd = (u16) (start + size);
        
        this._memory = new u8[size];
    }
    
    public u8 Read(u16 address) => this._memory[address];
    public void Write(u16 address, u8 value) => this._memory[address] = value;
    public void Clock(Bus bus) { /* No timing behavior for simple memory */ }
}