50 AmdFlash(
const Rom& rom, std::span<const SectorInfo> sectorInfo,
53 AmdFlash(
const std::string& name, std::span<const SectorInfo> sectorInfo,
67 [[nodiscard]]
size_t size()
const {
return sz; }
68 [[nodiscard]] uint8_t
read(
size_t address)
const;
69 [[nodiscard]] uint8_t
peek(
size_t address)
const;
70 void write(
size_t address, uint8_t value);
73 template<
typename Archive>
74 void serialize(Archive& ar,
unsigned version);
81 template<
typename Archive>
82 void serialize(Archive& ar,
unsigned version);
89 struct GetSectorInfoResult {
size_t sector, sectorSize, offset; };
90 [[nodiscard]] GetSectorInfoResult getSectorInfo(
size_t address)
const;
92 void setState(
State newState);
93 [[nodiscard]]
bool checkCommandReset();
94 [[nodiscard]]
bool checkCommandEraseSector();
95 [[nodiscard]]
bool checkCommandEraseChip();
96 [[nodiscard]]
bool checkCommandProgramHelper(
size_t numBytes, std::span<const uint8_t> cmdSeq);
97 [[nodiscard]]
bool checkCommandProgram();
98 [[nodiscard]]
bool checkCommandDoubleByteProgram();
99 [[nodiscard]]
bool checkCommandQuadrupleByteProgram();
100 [[nodiscard]]
bool checkCommandManufacturer();
101 [[nodiscard]]
bool partialMatch(std::span<const uint8_t> dataSeq)
const;
103 [[nodiscard]]
bool isSectorWritable(
size_t sector)
const;
106 MSXMotherBoard& motherBoard;
107 std::unique_ptr<SRAM> ram;
108 MemBuffer<ptrdiff_t> writeAddress;
109 MemBuffer<const uint8_t*> readAddress;
110 const std::span<const SectorInfo> sectorInfo;
115 static constexpr unsigned MAX_CMD_SIZE = 8;
116 std::array<AmdCmd, MAX_CMD_SIZE> cmd;
119 bool vppWpPinLow =
false;
void write(size_t address, uint8_t value)
AmdFlash(const Rom &rom, std::span< const SectorInfo > sectorInfo, uint16_t ID, Addressing addressing, const DeviceConfig &config, Load load=Load::NORMAL)
Create AmdFlash with given configuration.
void serialize(Archive &ar, unsigned version)
const uint8_t * getReadCacheLine(size_t address) const
void setVppWpPinLow(bool value)
Setting the Vpp/WP# pin LOW enables a certain kind of write protection of some sectors.
uint8_t peek(size_t address) const
uint8_t read(size_t address) const
SDLSurfacePtr load(const std::string &filename, bool want32bpp)
Load the given PNG file in a SDL_Surface.
This file implemented 3 utility functions:
SERIALIZE_CLASS_VERSION(CassettePlayer, 2)
void serialize(Archive &ar, unsigned version)