19class Reu final :
public Cartridge {
21 CartridgeTraits traits = {
29 virtual const CartridgeTraits &getCartridgeTraits()
const override {
return traits; }
77 Reu(C64 &ref) : Cartridge(ref) { };
78 Reu(C64 &ref, isize kb);
87 void _dump(Category category, std::ostream& os)
const override;
96 Reu& operator= (
const Reu& other) {
98 Cartridge::operator=(other);
113 virtual void clone(
const Cartridge &other)
override { *
this = (
const Reu &)other; }
116 void serialize(T& worker)
118 if (isResetter(worker))
return;
133 } CARTRIDGE_SERIALIZERS(serialize);
135 void _reset(
bool hard)
override;
142 bool isREU1700()
const {
return getRamCapacity() == KB(128); }
143 bool isREU1764()
const {
return getRamCapacity() == KB(256); }
144 bool isREU1750()
const {
return getRamCapacity() >= KB(512); }
147 u32 wrapMask()
const {
return isREU1700() ? 0x1FFFF : 0x7FFFF; }
154 bool autoloadEnabled()
const {
return GET_BIT(cr, 5); }
155 bool ff00Enabled()
const {
return !GET_BIT(cr, 4); }
156 bool ff00Disabled()
const {
return GET_BIT(cr, 4); }
158 bool irqEnabled()
const {
return GET_BIT(imr, 7); }
159 bool irqOnEndOfBlock()
const {
return GET_BIT(imr, 6); }
160 bool irqOnVerifyError()
const {
return GET_BIT(imr, 5); }
162 bool isArmed()
const {
return GET_BIT(cr, 7) && ff00Enabled(); }
164 isize memStep()
const {
return GET_BIT(acr,7) ? 0 : 1; }
165 isize reuStep()
const {
return GET_BIT(acr,6) ? 0 : 1; }
174 u8 peekIO2(u16 addr)
override;
175 u8 spypeekIO2(u16 addr)
const override;
176 void pokeIO2(u16 addr, u8 value)
override;
177 void poke(u16 addr, u8 value)
override;
181 u8 readFromReuRam(u32 addr);
182 void writeToReuRam(u32 addr, u8 value);
191 void incMemAddr(u16 &addr) { addr = U16_ADD(addr, 1); }
192 void incReuAddr(u32 &addr) { addr = U32_ADD(addr, 1) & wrapMask(); }
195 void stash(u16 memAddr, u32 reuAddr, isize len);
196 void fetch(u16 memAddr, u32 reuAddr, isize len);
197 void swap(u16 memAddr, u32 reuAddr, isize len);
198 void verify(u16 memAddr, u32 reuAddr, isize len);
205 void triggerEndOfBlockIrq();
206 void triggerVerifyErrorIrq();
215 void updatePeekPokeLookupTables()
override;
VirtualC64 project namespace.
Definition CmdQueue.cpp:16