15#include "SubComponent.h"
27class FlashRom final :
public SubComponent {
29 Descriptions descriptions = {{
32 .description =
"Flash ROM"
36 static const isize numSectors = 8;
39 static const isize sectorSize = 0x10000;
42 static const isize romSize = 0x80000;
61 static bool isBankNumber(isize bank) {
return bank < 64; }
64 static const char *getStateAsString(FlashState state);
76 FlashRom& operator= (
const FlashRom& other) {
92 void serialize(T& worker)
94 if (isResetter(worker))
return;
102 void operator << (SerResetter &worker)
override { serialize(worker); }
103 void operator << (SerChecker &worker)
override { serialize(worker); }
104 void operator << (SerCounter &worker)
override;
105 void operator << (SerReader &worker)
override;
106 void operator << (SerWriter &worker)
override;
115 const Descriptions &getDescriptions()
const override {
return descriptions; }
119 void _dump(Category category, std::ostream& os)
const override;
120 void _reset(
bool hard)
override;
132 void loadBank(isize bank, u8 *data);
142 u8 peek(isize bank, u16 addr);
144 u8 spypeek(u32 addr)
const;
145 u8 spypeek(isize bank, u16 addr)
const;
147 void poke(u32 addr, u8 value);
148 void poke(isize bank, u16 addr, u8 value);
156 bool firstCommandAddr(u32 addr) {
return (addr & 0x7FF) == 0x555; }
159 bool secondCommandAddr(u32 addr) {
return (addr & 0x7FF) == 0x2AA; }
162 bool doByteProgram(u32 addr, u8 value);
163 bool doByteProgram(isize bank, u16 addr, u8 value);
166 void doSectorErase(u32 addr);
167 void doSectorErase(isize bank, u16 addr);
VirtualC64 project namespace.
Definition CmdQueue.cpp:16