initial commit
This commit is contained in:
37
memory.h
Normal file
37
memory.h
Normal file
@@ -0,0 +1,37 @@
|
||||
#ifndef BEAR_MEMORY_H
|
||||
#define BEAR_MEMORY_H
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
|
||||
#include "Bus.h"
|
||||
|
||||
class IMemoryAccessor
|
||||
{
|
||||
public:
|
||||
virtual ~IMemoryAccessor() = default;
|
||||
|
||||
virtual void write(std::uint16_t _addr, std::uint8_t value) = 0;
|
||||
virtual std::uint8_t read8(std::uint16_t _addr) = 0;
|
||||
};
|
||||
|
||||
class CPUMemoryAccessor : public IMemoryAccessor
|
||||
{
|
||||
public:
|
||||
explicit CPUMemoryAccessor(Bus* bus);
|
||||
~CPUMemoryAccessor() override = default;
|
||||
|
||||
void write(std::uint16_t _addr, std::uint8_t value) override;
|
||||
std::uint8_t read8(std::uint16_t _addr) override;
|
||||
|
||||
private:
|
||||
std::uint8_t* ram = nullptr;
|
||||
Bus* bus = nullptr;
|
||||
|
||||
static bool isRamAddress(std::uint16_t _addr);
|
||||
|
||||
[[nodiscard]] std::uint8_t readFromRam(std::uint16_t _addr) const;
|
||||
void writeToRam(std::uint16_t _addr, std::uint8_t value) const;
|
||||
};
|
||||
|
||||
#endif //BEAR_MEMORY_H
|
||||
Reference in New Issue
Block a user