From 42c7f45c425d26e10bb8f99d7517be718974017f Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 23 Apr 2020 12:34:27 +0200 Subject: [PATCH] refactored Cart3EPlus widget --- src/debugger/gui/Cart3EPlusWidget.cxx | 210 +++++++++--------------- src/debugger/gui/Cart3EPlusWidget.hxx | 42 ++--- src/debugger/gui/Cart3EWidget.hxx | 2 +- src/debugger/gui/Cart3FWidget.hxx | 2 +- src/debugger/gui/CartE0Widget.hxx | 2 +- src/debugger/gui/CartEnhancedWidget.cxx | 8 +- src/debugger/gui/CartEnhancedWidget.hxx | 2 +- src/debugger/gui/CartWDWidget.hxx | 2 +- src/emucore/Cart3EPlus.cxx | 16 +- src/emucore/Cart3EPlus.hxx | 15 +- 10 files changed, 106 insertions(+), 195 deletions(-) diff --git a/src/debugger/gui/Cart3EPlusWidget.cxx b/src/debugger/gui/Cart3EPlusWidget.cxx index a93cb8f98..8e7cdf063 100644 --- a/src/debugger/gui/Cart3EPlusWidget.cxx +++ b/src/debugger/gui/Cart3EPlusWidget.cxx @@ -18,116 +18,124 @@ #include "Cart3EPlus.hxx" #include "EditTextWidget.hxx" #include "PopUpWidget.hxx" -#include "Cart3EPlusWidget.hxx" +#include "CartEnhancedWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cartridge3EPlusWidget::Cartridge3EPlusWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, Cartridge3EPlus& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart), + myCart3EP(cart) { - size_t size = cart.mySize; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string Cartridge3EPlusWidget::description() +{ ostringstream info; - info << "3EPlus cartridge - (4..64K ROM + RAM)\n" - << " 4..64K ROM (1K banks), ..32K RAM (512b banks)\n" - << "Each 1K ROM selected by writing to $3F\n" - "Each 512b RAM selected by writing to $3E\n" - " Lower 512b of bank x (R)\n" - " Upper 512b of bank x (+$200) (W)\n" - << "Startup bank = 0/-1/-1/0 (ROM)\n"; + size_t size; + const uInt8* image = myCart.getImage(size); + uInt16 numRomBanks = myCart.romBankCount(); + uInt16 numRamBanks = myCart.ramBankCount(); + + info << "3E+ cartridge - (4..64K ROM + RAM)\n" + << " " << numRomBanks << " 1K ROM banks + " << numRamBanks << " 512b RAM banks\n" + << " mapped into four segments\n" + "ROM bank & segment selected by writing to $3F\n" + "RAM bank & segment selected by writing to $3E\n" + " Lower 512b of segment for read access\n" + " Upper 512b of segment for write access\n" + "Startup bank = 0/-1/-1/0 (ROM)\n"; // Eventually, we should query this from the debugger/disassembler - // Currently the cart starts at bank 0. If we change that, we have to change this too. - uInt16 start = (cart.myImage[0x400-3] << 8) | cart.myImage[0x400 - 4]; - start &= 0xF000; - info << "Bank RORG = $" << Common::Base::HEX4 << start << "\n"; + uInt16 start = (image[0x400 - 3] << 8) | image[0x400 - 4]; + start -= start % 0x1000; + info << "Bank RORG" << " = $" << Common::Base::HEX4 << start << "\n"; - int xpos = 2, - ypos = addBaseInformation(size, "Thomas Jentzsch", info.str()) + 8; - - VariantList bankno; - for(uInt32 i = 0; i < myCart.romBankCount(); ++i) - VarList::push_back(bankno, i, i); + return info.str(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void Cartridge3EPlusWidget::bankSelect(int& ypos) +{ + size_t size; + const uInt8* image = myCart.getImage(size); VariantList banktype; + VarList::push_back(banktype, "ROM", "ROM"); VarList::push_back(banktype, "RAM", "RAM"); - for(uInt32 seg = 0; seg < myCart.myBankSegs; ++seg) - { - int xpos_s, ypos_s = ypos + 1; + myBankWidgets = make_unique(bankSegs()); + for(uInt32 seg = 0; seg < bankSegs(); ++seg) + { + int xpos = 2, xpos_s, ypos_s = ypos + 1, width; ostringstream label; + VariantList items; + label << "Set segment " << seg << " as "; - new StaticTextWidget(boss, _font, xpos, ypos, label.str()); + new StaticTextWidget(_boss, _font, xpos, ypos, label.str()); ypos += myLineHeight + 8; xpos += _font.getMaxCharWidth() * 2; - myBankNumber[seg] = - new PopUpWidget(boss, _font, xpos, ypos-2, 2 *_font.getMaxCharWidth(), - myLineHeight, bankno, "Bank "); - addFocusWidget(myBankNumber[seg]); - xpos += myBankNumber[seg]->getWidth(); + CartridgeEnhancedWidget::bankList(myCart.romBankCount(), seg, items, width); + myBankWidgets[seg] = + new PopUpWidget(_boss, _font, xpos, ypos - 2, width, + myLineHeight, items, "Bank "); + addFocusWidget(myBankWidgets[seg]); + + xpos += myBankWidgets[seg]->getWidth(); myBankType[seg] = - new PopUpWidget(boss, _font, xpos, ypos-2, 3 *_font.getMaxCharWidth(), + new PopUpWidget(_boss, _font, xpos, ypos - 2, 3 * _font.getMaxCharWidth(), myLineHeight, banktype, " of "); addFocusWidget(myBankType[seg]); xpos = myBankType[seg]->getRight() + _font.getMaxCharWidth(); // add "Commit" button (why required?) - myBankCommit[seg] = new ButtonWidget(boss, _font, xpos, ypos-4, - _font.getStringWidth(" Commit "), myButtonHeight, - "Commit", bankEnum[seg]); + myBankCommit[seg] = new ButtonWidget(_boss, _font, xpos, ypos - 4, + _font.getStringWidth(" Commit "), myButtonHeight, + "Commit", bankEnum[seg]); myBankCommit[seg]->setTarget(this); addFocusWidget(myBankCommit[seg]); xpos_s = myBankCommit[seg]->getRight() + _font.getMaxCharWidth() * 2; StaticTextWidget* t; + uInt16 start = (image[0x400 - 3] << 8) | image[0x400 - 4]; + start -= start % 0x1000; int addr1 = start + (seg * 0x400), addr2 = addr1 + 0x200; label.str(""); label << "$" << Common::Base::HEX4 << addr1 << "-$" << Common::Base::HEX4 << (addr1 + 0x1FF); - t = new StaticTextWidget(boss, _font, xpos_s, ypos_s+2, label.str()); + t = new StaticTextWidget(_boss, _font, xpos_s, ypos_s + 2, label.str()); int xoffset = t->getRight() + _font.getMaxCharWidth(); - myBankState[2*seg] = new EditTextWidget(boss, _font, xoffset, ypos_s, - w - xoffset - 10, myLineHeight, ""); - myBankState[2*seg]->setEditable(false, true); + myBankState[2 * seg] = new EditTextWidget(_boss, _font, xoffset, ypos_s, + _w - xoffset - 10, myLineHeight, ""); + myBankState[2 * seg]->setEditable(false, true); ypos_s += myLineHeight + 4; label.str(""); label << "$" << Common::Base::HEX4 << addr2 << "-$" << Common::Base::HEX4 << (addr2 + 0x1FF); - new StaticTextWidget(boss, _font, xpos_s, ypos_s+2, label.str()); + new StaticTextWidget(_boss, _font, xpos_s, ypos_s + 2, label.str()); - myBankState[2*seg+1] = new EditTextWidget(boss, _font, xoffset, ypos_s, - w - xoffset - 10, myLineHeight, ""); - myBankState[2*seg+1]->setEditable(false, true); + myBankState[2 * seg + 1] = new EditTextWidget(_boss, _font, xoffset, ypos_s, + _w - xoffset - 10, myLineHeight, ""); + myBankState[2 * seg + 1]->setEditable(false, true); - xpos = 2; ypos += 2 * myLineHeight; } } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3EPlusWidget::saveOldState() -{ - myOldState.internalram.clear(); - - for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myRAM[i]); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge3EPlusWidget::loadConfig() { + CartridgeEnhancedWidget::loadConfig(); updateUIState(); - CartDebugWidget::loadConfig(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -154,11 +162,11 @@ void Cartridge3EPlusWidget::handleCommand(CommandSender* sender, } // Ignore bank if either number or type hasn't been selected - if(myBankNumber[segment]->getSelected() < 0 || + if(myBankWidgets[segment]->getSelected() < 0 || myBankType[segment]->getSelected() < 0) return; - uInt8 bank = myBankNumber[segment]->getSelected(); + uInt8 bank = myBankWidgets[segment]->getSelected(); myCart.unlockBank(); @@ -172,123 +180,61 @@ void Cartridge3EPlusWidget::handleCommand(CommandSender* sender, updateUIState(); } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string Cartridge3EPlusWidget::bankState() -{ - ostringstream& buf = buffer(); - - for(int seg = 0; seg < myCart.myBankSegs; ++seg) - { - int bank = myCart.getSegmentBank(seg); - - if(bank >= myCart.romBankCount()) // was RAM mapped here? - buf << " RAM " << bank - myCart.romBankCount(); - else - buf << " ROM " << bank; - if(seg < myCart.myBankSegs - 1) - buf << " /"; - } - - return buf.str(); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge3EPlusWidget::updateUIState() { - // Set description for each 1K bank state (@ each index) + // Set description for each 1K segment state (@ each index) // Set contents for actual banks number and type (@ each even index) - for(int seg = 0; seg < myCart.myBankSegs; ++seg) + for(int seg = 0; seg < myCart3EP.myBankSegs; ++seg) { uInt16 bank = myCart.getSegmentBank(seg); ostringstream buf; - if(bank >= myCart.romBankCount()) // was RAM mapped here? + if(bank >= myCart.romBankCount()) // was RAM mapped here? { uInt16 ramBank = bank - myCart.romBankCount(); - buf << "RAM " << std::dec << ramBank << " @ $" << Common::Base::HEX4 - << (ramBank << myCart.myBankShift) << "(R)"; + buf << "RAM @ $" << Common::Base::HEX4 + << (ramBank << myCart3EP.myBankShift) << " (R)"; myBankState[seg * 2]->setText(buf.str()); buf.str(""); - buf << "RAM " << std::dec << ramBank << " @ $" << Common::Base::HEX4 - << ((ramBank << myCart.myBankShift) + myCart.myBankSize) << "(W)"; + buf << "RAM @ $" << Common::Base::HEX4 + << ((ramBank << myCart3EP.myBankShift) + myCart3EP.myBankSize) << " (W)"; myBankState[seg * 2 + 1]->setText(buf.str()); - myBankNumber[seg]->setSelected(ramBank); + myBankWidgets[seg]->setSelectedIndex(ramBank); myBankType[seg]->setSelected("RAM"); } else { - buf << "ROM " << std::dec << bank << " @ $" << Common::Base::HEX4 - << ((bank << myCart.myBankShift)); + buf << "ROM @ $" << Common::Base::HEX4 + << ((bank << myCart3EP.myBankShift)); myBankState[seg * 2]->setText(buf.str()); buf.str(""); - buf << "ROM " << std::dec << bank << " @ $" << Common::Base::HEX4 - << ((bank << myCart.myBankShift) + myCart.myBankSize); + buf << "ROM @ $" << Common::Base::HEX4 + << ((bank << myCart3EP.myBankShift) + myCart3EP.myBankSize); myBankState[seg * 2 + 1]->setText(buf.str()); - myBankNumber[seg]->setSelected(bank); + myBankWidgets[seg]->setSelectedIndex(bank); myBankType[seg]->setSelected("ROM"); } } } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Cartridge3EPlusWidget::internalRamSize() -{ - return 32*1024; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Cartridge3EPlusWidget::internalRamRPort(int start) -{ - return 0x0000 + start; -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string Cartridge3EPlusWidget::internalRamDescription() { ostringstream desc; desc << "Accessible 512b at a time via:\n" - << " $f000/$f400/$f800/$fc00 for Read Access\n" - << " $f200/$f600/$fa00/$fe00 for Write Access"; + << " $f000/$f400/$f800/$fc00 for read access\n" + << " $f200/$f600/$fa00/$fe00 for write access"; return desc.str(); } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& Cartridge3EPlusWidget::internalRamOld(int start, int count) -{ - myRamOld.clear(); - for(int i = 0; i < count; i++) - myRamOld.push_back(myOldState.internalram[start + i]); - return myRamOld; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& Cartridge3EPlusWidget::internalRamCurrent(int start, int count) -{ - myRamCurrent.clear(); - for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myRAM[start + i]); - return myRamCurrent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3EPlusWidget::internalRamSetValue(int addr, uInt8 value) -{ - myCart.myRAM[addr] = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 Cartridge3EPlusWidget::internalRamGetValue(int addr) -{ - return myCart.myRAM[addr]; -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - const std::array Cartridge3EPlusWidget::bankEnum = { kBank0Changed, kBank1Changed, kBank2Changed, kBank3Changed diff --git a/src/debugger/gui/Cart3EPlusWidget.hxx b/src/debugger/gui/Cart3EPlusWidget.hxx index 723003376..7cde61042 100644 --- a/src/debugger/gui/Cart3EPlusWidget.hxx +++ b/src/debugger/gui/Cart3EPlusWidget.hxx @@ -23,9 +23,9 @@ class ButtonWidget; class EditTextWidget; class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class Cartridge3EPlusWidget : public CartDebugWidget +class Cartridge3EPlusWidget : public CartridgeEnhancedWidget { public: Cartridge3EPlusWidget(GuiObject* boss, const GUI::Font& lfont, @@ -35,21 +35,27 @@ class Cartridge3EPlusWidget : public CartDebugWidget virtual ~Cartridge3EPlusWidget() = default; private: + string manufacturer() override { return "Thomas Jentzsch"; } + + string description() override; + + void bankSelect(int& ypos) override; + + void handleCommand(CommandSender* sender, int cmd, int data, int id) override; + void updateUIState(); - private: - Cartridge3EPlus& myCart; + void loadConfig() override; + + string internalRamDescription() override; + + private: + Cartridge3EPlus& myCart3EP; - std::array myBankNumber{nullptr}; std::array myBankType{nullptr}; std::array myBankCommit{nullptr}; std::array myBankState{nullptr}; - struct CartState { - ByteArray internalram; - }; - CartState myOldState; - enum BankID { kBank0Changed = 'b0CH', kBank1Changed = 'b1CH', @@ -59,22 +65,6 @@ class Cartridge3EPlusWidget : public CartDebugWidget static const std::array bankEnum; private: - void saveOldState() override; - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - - // start of functions for Cartridge RAM tab - uInt32 internalRamSize() override; - uInt32 internalRamRPort(int start) override; - string internalRamDescription() override; - const ByteArray& internalRamOld(int start, int count) override; - const ByteArray& internalRamCurrent(int start, int count) override; - void internalRamSetValue(int addr, uInt8 value) override; - uInt8 internalRamGetValue(int addr) override; - // end of functions for Cartridge RAM tab - // Following constructors and assignment operators not supported Cartridge3EPlusWidget() = delete; Cartridge3EPlusWidget(const Cartridge3EPlusWidget&) = delete; diff --git a/src/debugger/gui/Cart3EWidget.hxx b/src/debugger/gui/Cart3EWidget.hxx index e1d4f266b..424d9a577 100644 --- a/src/debugger/gui/Cart3EWidget.hxx +++ b/src/debugger/gui/Cart3EWidget.hxx @@ -47,7 +47,7 @@ class Cartridge3EWidget : public CartridgeEnhancedWidget void bankSelect(int& ypos) override; - int bankSegs() override { return 1; } + uInt16 bankSegs() override { return 1; } void loadConfig() override; diff --git a/src/debugger/gui/Cart3FWidget.hxx b/src/debugger/gui/Cart3FWidget.hxx index e5f97a392..ad24d8e56 100644 --- a/src/debugger/gui/Cart3FWidget.hxx +++ b/src/debugger/gui/Cart3FWidget.hxx @@ -36,7 +36,7 @@ class Cartridge3FWidget : public CartridgeEnhancedWidget string description() override; - int bankSegs() override { return 1; } + uInt16 bankSegs() override { return 1; } private: // Following constructors and assignment operators not supported diff --git a/src/debugger/gui/CartE0Widget.hxx b/src/debugger/gui/CartE0Widget.hxx index a9d84b461..a50893e84 100644 --- a/src/debugger/gui/CartE0Widget.hxx +++ b/src/debugger/gui/CartE0Widget.hxx @@ -40,7 +40,7 @@ class CartridgeE0Widget : public CartridgeEnhancedWidget string hotspotStr(int bank, int segment, bool noBrackets = false) override; - int bankSegs() override { return 3; } + uInt16 bankSegs() override { return 3; } private: // Following constructors and assignment operators not supported diff --git a/src/debugger/gui/CartEnhancedWidget.cxx b/src/debugger/gui/CartEnhancedWidget.cxx index a59e4f985..8001c1292 100644 --- a/src/debugger/gui/CartEnhancedWidget.cxx +++ b/src/debugger/gui/CartEnhancedWidget.cxx @@ -253,7 +253,7 @@ string CartridgeEnhancedWidget::hotspotStr(int bank, int segment, bool prefix) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -int CartridgeEnhancedWidget::bankSegs() +uInt16 CartridgeEnhancedWidget::bankSegs() { return myCart.myBankSegs; } @@ -339,18 +339,18 @@ string CartridgeEnhancedWidget::internalRamDescription() { desc << indent << "$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myReadOffset) << " - $" << (ADDR_BASE | (myCart.myReadOffset + myCart.myRamMask)) - << " used for Read Access\n"; + << " used for read Access\n"; } desc << indent << "$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myWriteOffset) << " - $" << (ADDR_BASE | (myCart.myWriteOffset + myCart.myRamMask)) - << " used for Write Access"; + << " used for write Access"; if(myCart.myReadOffset > myCart.myWriteOffset) { desc << indent << "\n$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myReadOffset) << " - $" << (ADDR_BASE | (myCart.myReadOffset + myCart.myRamMask)) - << " used for Read Access"; + << " used for read Access"; } return desc.str(); diff --git a/src/debugger/gui/CartEnhancedWidget.hxx b/src/debugger/gui/CartEnhancedWidget.hxx index 1f4ae6f30..968a4bbf0 100644 --- a/src/debugger/gui/CartEnhancedWidget.hxx +++ b/src/debugger/gui/CartEnhancedWidget.hxx @@ -57,7 +57,7 @@ class CartridgeEnhancedWidget : public CartDebugWidget virtual string hotspotStr(int bank = 0, int segment = 0, bool prefix = false); - virtual int bankSegs(); // { return myCart.myBankSegs; } + virtual uInt16 bankSegs(); // { return myCart.myBankSegs; } void saveOldState() override; void loadConfig() override; diff --git a/src/debugger/gui/CartWDWidget.hxx b/src/debugger/gui/CartWDWidget.hxx index 0201cffa5..2ccdd7437 100644 --- a/src/debugger/gui/CartWDWidget.hxx +++ b/src/debugger/gui/CartWDWidget.hxx @@ -41,7 +41,7 @@ private: string hotspotStr(int bank, int seg = 0, bool prefix = false) override; - int bankSegs() override { return 1; } + uInt16 bankSegs() override { return 1; } private: // Following constructors and assignment operators not supported diff --git a/src/emucore/Cart3EPlus.cxx b/src/emucore/Cart3EPlus.cxx index 5803f2136..6c9fe7c2a 100644 --- a/src/emucore/Cart3EPlus.cxx +++ b/src/emucore/Cart3EPlus.cxx @@ -22,13 +22,11 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cartridge3EPlus::Cartridge3EPlus(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : CartridgeEnhanced(image, size, md5, settings) - + : Cartridge3E(image, size, md5, settings) { myBankShift = BANK_SHIFT; myRamSize = RAM_SIZE; myRamBankCount = RAM_BANKS; - myRamWpHigh = RAM_HIGH_WP; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -42,18 +40,6 @@ void Cartridge3EPlus::reset() bank(startBank(), 3); } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3EPlus::install(System& system) -{ - CartridgeEnhanced::install(system); - - System::PageAccess access(this, System::PageAccessType::WRITE); - - // The hotspots are in TIA address space, so we claim it here - for(uInt16 addr = 0x00; addr < 0x40; addr += System::PAGE_SIZE) - mySystem->setPageAccess(addr, access); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool Cartridge3EPlus::checkSwitchBank(uInt16 address, uInt8 value) { diff --git a/src/emucore/Cart3EPlus.hxx b/src/emucore/Cart3EPlus.hxx index 209ab89dc..c2ce64cd8 100644 --- a/src/emucore/Cart3EPlus.hxx +++ b/src/emucore/Cart3EPlus.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "CartEnhanced.hxx" +#include "Cart3E.hxx" #ifdef DEBUGGER_SUPPORT class Cartridge3EPlusWidget; @@ -89,7 +89,7 @@ class Cartridge3EPlusWidget; @author Thomas Jentzsch and Stephen Anthony */ -class Cartridge3EPlus: public CartridgeEnhanced +class Cartridge3EPlus: public Cartridge3E { friend class Cartridge3EPlusWidget; @@ -110,14 +110,6 @@ class Cartridge3EPlus: public CartridgeEnhanced /** Reset device to its power-on state */ void reset() override; - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - /** Get a descriptor for the device name (used in error checking). @@ -167,9 +159,6 @@ class Cartridge3EPlus: public CartridgeEnhanced // RAM size static constexpr size_t RAM_SIZE = RAM_BANKS << (BANK_SHIFT - 1); // = 32K = 0x4000; - // Write port for extra RAM is at high address - static constexpr bool RAM_HIGH_WP = true; - private: // Following constructors and assignment operators not supported Cartridge3EPlus() = delete;