//============================================================================ // // SSSS tt lll lll // SS SS tt ll ll // SS tttttt eeee ll ll aaaa // SSSS tt ee ee ll ll aa // SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" // SS SS tt ee ll ll aa aa // SSSS ttt eeeee llll llll aaaaa // // Copyright (c) 1995-2013 by Bradford W. Mott, Stephen Anthony // and the Stella Team // // See the file "License.txt" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // // $Id$ //============================================================================ #include "Cart4KSC.hxx" #include "Cart4KSCWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cartridge4KSCWidget::Cartridge4KSCWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, Cartridge4KSC& cart) : CartDebugWidget(boss, lfont, nfont, x, y, w, h), myCart(cart) { // Eventually, we should query this from the debugger/disassembler uInt16 start = (cart.myImage[0xFFD] << 8) | cart.myImage[0xFFC]; start -= start % 0x1000; ostringstream info; info << "4KSC cartridge, non-bankswitched\n" << "128 bytes RAM @ $F000 - $F0FF\n" << " $F080 - $F0FF (R), $F000 - $F07F (W)\n" << "Accessible @ $" << Common::Base::HEX4 << start << " - " << "$" << (start + 0xFFF); addBaseInformation(4096, "homebrew intermediate format", info.str()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge4KSCWidget::saveOldState() { myOldState.internalram.clear(); for(uInt32 i = 0; i < this->internalRamSize();i++) { myOldState.internalram.push_back(myCart.myRAM[i]); } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt32 Cartridge4KSCWidget::internalRamSize() { return 128; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt32 Cartridge4KSCWidget::internalRamRPort(int start) { return 0xF080 + start; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string Cartridge4KSCWidget::internalRamDescription() { ostringstream desc; desc << "$F000 - $F07F used for Write Access\n" << "$F080 - $F0FF used for Read Access"; return desc.str(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - const ByteArray& Cartridge4KSCWidget::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& Cartridge4KSCWidget::internalRamCurrent(int start, int count) { myRamCurrent.clear(); for(int i = 0; i < count; i++) myRamCurrent.push_back(myCart.myRAM[start + i]); return myRamCurrent; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge4KSCWidget::internalRamSetValue(int addr, uInt8 value) { myCart.myRAM[addr] = value; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt8 Cartridge4KSCWidget::internalRamGetValue(int addr) { return myCart.myRAM[addr]; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string Cartridge4KSCWidget::internalRamLabel(int addr) { CartDebug& dbg = instance().debugger().cartDebug(); return dbg.getLabel(addr + 0xF080, false); }