mirror of https://github.com/stella-emu/stella.git
Remove '_rwport' from the debugger.
The new way of detecting RWP is superior, and we don't have time to rework _rwport to use it. This may come back in the future (if required), but I honestly don't see a need for it.
This commit is contained in:
parent
d7e9cfc4d0
commit
69fb08e30c
|
@ -744,7 +744,6 @@ that holds 'number of scanlines' on an actual console).</p>
|
||||||
<tr><td> _fcount</td><td> Number of frames since emulation started</td></tr>
|
<tr><td> _fcount</td><td> Number of frames since emulation started</td></tr>
|
||||||
<tr><td> _fcycles</td><td> Number of cycles since frame started</td></tr>
|
<tr><td> _fcycles</td><td> Number of cycles since frame started</td></tr>
|
||||||
<tr><td> _icycles</td><td> Number of cycles of last instruction</td></tr>
|
<tr><td> _icycles</td><td> Number of cycles of last instruction</td></tr>
|
||||||
<tr><td> _rwport</td><td> Last address to attempt a read from the cart write port</td></tr>
|
|
||||||
<tr><td> _scan</td><td> Current scanline count</td></tr>
|
<tr><td> _scan</td><td> Current scanline count</td></tr>
|
||||||
<tr><td> _scycles</td><td> Number of cycles in current scanline</td></tr>
|
<tr><td> _scycles</td><td> Number of cycles in current scanline</td></tr>
|
||||||
<tr><td> _vblank</td><td> Whether vertical blank is enabled (1 or 0)</td></tr>
|
<tr><td> _vblank</td><td> Whether vertical blank is enabled (1 or 0)</td></tr>
|
||||||
|
|
|
@ -48,8 +48,6 @@ CartDebug::CartDebug(Debugger& dbg, Console& console, const OSystem& osystem)
|
||||||
myOSystem(osystem),
|
myOSystem(osystem),
|
||||||
myDebugWidget(nullptr),
|
myDebugWidget(nullptr),
|
||||||
myAddrToLineIsROM(true),
|
myAddrToLineIsROM(true),
|
||||||
myRWPortAddress(0),
|
|
||||||
myRWPortTriggersBreak(false),
|
|
||||||
myLabelLength(8) // longest pre-defined label
|
myLabelLength(8) // longest pre-defined label
|
||||||
{
|
{
|
||||||
// Add case sensitive compare for user labels
|
// Add case sensitive compare for user labels
|
||||||
|
@ -161,37 +159,6 @@ void CartDebug::saveOldState()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
void CartDebug::triggerReadFromWritePort(uInt16 addr)
|
|
||||||
{
|
|
||||||
myRWPortAddress = addr;
|
|
||||||
mySystem.setDirtyPage(addr);
|
|
||||||
|
|
||||||
if(myRWPortTriggersBreak &&
|
|
||||||
!mySystem.m6502().lastWasGhostPeek())
|
|
||||||
{
|
|
||||||
ostringstream msg;
|
|
||||||
msg << "RWP[@ $" << Common::Base::HEX4 << addr << "]: ";
|
|
||||||
EmulationWarning::raise(msg.str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
int CartDebug::readFromWritePort()
|
|
||||||
{
|
|
||||||
uInt16 addr = myRWPortAddress;
|
|
||||||
myRWPortAddress = 0;
|
|
||||||
|
|
||||||
// A read from the write port occurs when the read is actually in the write
|
|
||||||
// port address space AND the last access was actually a read (the latter
|
|
||||||
// differentiates between reads that are normally part of a write cycle vs.
|
|
||||||
// ones that are illegal)
|
|
||||||
if(!mySystem.m6502().lastWasGhostPeek())
|
|
||||||
return addr;
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
int CartDebug::lastReadBaseAddress()
|
int CartDebug::lastReadBaseAddress()
|
||||||
{
|
{
|
||||||
|
|
|
@ -109,18 +109,6 @@ class CartDebug : public DebuggerSystem
|
||||||
CartDebugWidget* getDebugWidget() const { return myDebugWidget; }
|
CartDebugWidget* getDebugWidget() const { return myDebugWidget; }
|
||||||
void setDebugWidget(CartDebugWidget* w) { myDebugWidget = w; }
|
void setDebugWidget(CartDebugWidget* w) { myDebugWidget = w; }
|
||||||
|
|
||||||
// Called when a read from write port has occurred at the specified address.
|
|
||||||
// An exception will be thrown, if enabled
|
|
||||||
void triggerReadFromWritePort(uInt16 address);
|
|
||||||
|
|
||||||
// Return the address at which an invalid read was performed in a
|
|
||||||
// write port area.
|
|
||||||
int readFromWritePort();
|
|
||||||
|
|
||||||
// Determines whether a debugger exception will be thrown when a read from
|
|
||||||
// the write port happens.
|
|
||||||
void setReadFromWritePortBreak(bool enable) { myRWPortTriggersBreak = enable; }
|
|
||||||
|
|
||||||
// Return the base (= non-mirrored) address of the last CPU read
|
// Return the base (= non-mirrored) address of the last CPU read
|
||||||
int lastReadBaseAddress();
|
int lastReadBaseAddress();
|
||||||
// Return the base (= non-mirrored) address of the last CPU write
|
// Return the base (= non-mirrored) address of the last CPU write
|
||||||
|
@ -357,13 +345,6 @@ class CartDebug : public DebuggerSystem
|
||||||
// handled differently
|
// handled differently
|
||||||
LabelToAddr mySystemAddresses;
|
LabelToAddr mySystemAddresses;
|
||||||
|
|
||||||
// Holds address at which the most recent read from a write port
|
|
||||||
// occurred
|
|
||||||
uInt16 myRWPortAddress;
|
|
||||||
|
|
||||||
// Whether a read from write port should trigger a debugger exception
|
|
||||||
bool myRWPortTriggersBreak;
|
|
||||||
|
|
||||||
// The maximum length of all labels currently defined
|
// The maximum length of all labels currently defined
|
||||||
uInt16 myLabelLength;
|
uInt16 myLabelLength;
|
||||||
|
|
||||||
|
|
|
@ -836,7 +836,6 @@ Debugger::PseudoRegister Debugger::ourPseudoRegisters[NUM_PSEUDO_REGS] = {
|
||||||
{ "_fcount", "Number of frames since emulation started" },
|
{ "_fcount", "Number of frames since emulation started" },
|
||||||
{ "_fcycles", "Number of cycles since frame started" },
|
{ "_fcycles", "Number of cycles since frame started" },
|
||||||
{ "_icycles", "Number of cycles of last instruction" },
|
{ "_icycles", "Number of cycles of last instruction" },
|
||||||
{ "_rwport", "Address at which a read from a write port occurred" },
|
|
||||||
{ "_scan", "Current scanline count" },
|
{ "_scan", "Current scanline count" },
|
||||||
{ "_scycles", "Number of cycles in current scanline" },
|
{ "_scycles", "Number of cycles in current scanline" },
|
||||||
{ "_vblank", "Whether vertical blank is enabled (1 or 0)" },
|
{ "_vblank", "Whether vertical blank is enabled (1 or 0)" },
|
||||||
|
|
|
@ -324,7 +324,7 @@ class Debugger : public DialogContainer
|
||||||
string name, help;
|
string name, help;
|
||||||
};
|
};
|
||||||
static const uInt32 NUM_BUILTIN_FUNCS = 18;
|
static const uInt32 NUM_BUILTIN_FUNCS = 18;
|
||||||
static const uInt32 NUM_PSEUDO_REGS = 12;
|
static const uInt32 NUM_PSEUDO_REGS = 11;
|
||||||
static BuiltinFunction ourBuiltinFunctions[NUM_BUILTIN_FUNCS];
|
static BuiltinFunction ourBuiltinFunctions[NUM_BUILTIN_FUNCS];
|
||||||
static PseudoRegister ourPseudoRegisters[NUM_PSEUDO_REGS];
|
static PseudoRegister ourPseudoRegisters[NUM_PSEUDO_REGS];
|
||||||
|
|
||||||
|
|
|
@ -117,15 +117,6 @@ void Cartridge::pokeRAM(uInt8& dest, uInt16 address, uInt8 value)
|
||||||
dest = value;
|
dest = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
void Cartridge::triggerReadFromWritePort(uInt16 address)
|
|
||||||
{
|
|
||||||
#ifdef DEBUGGER_SUPPORT
|
|
||||||
if(!mySystem->autodetectMode())
|
|
||||||
Debugger::debugger().cartDebug().triggerReadFromWritePort(address);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Cartridge::createCodeAccessBase(uInt32 size)
|
void Cartridge::createCodeAccessBase(uInt32 size)
|
||||||
{
|
{
|
||||||
|
|
|
@ -232,13 +232,6 @@ class Cartridge : public Device
|
||||||
*/
|
*/
|
||||||
void pokeRAM(uInt8& dest, uInt16 address, uInt8 value);
|
void pokeRAM(uInt8& dest, uInt16 address, uInt8 value);
|
||||||
|
|
||||||
/**
|
|
||||||
Indicate that an illegal read from a write port has occurred.
|
|
||||||
|
|
||||||
@param address The address of the illegal read
|
|
||||||
*/
|
|
||||||
void triggerReadFromWritePort(uInt16 address);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Create an array that holds code-access information for every byte
|
Create an array that holds code-access information for every byte
|
||||||
of the ROM (indicated by 'size'). Note that this is only used by
|
of the ROM (indicated by 'size'). Note that this is only used by
|
||||||
|
|
|
@ -181,8 +181,6 @@ CartMethod getCartSpecial(char* ch)
|
||||||
{
|
{
|
||||||
if(BSPF::equalsIgnoreCase(ch, "_bank"))
|
if(BSPF::equalsIgnoreCase(ch, "_bank"))
|
||||||
return &CartDebug::getBank;
|
return &CartDebug::getBank;
|
||||||
else if(BSPF::equalsIgnoreCase(ch, "_rwport"))
|
|
||||||
return &CartDebug::readFromWritePort;
|
|
||||||
else if(BSPF::equalsIgnoreCase(ch, "__lastread"))
|
else if(BSPF::equalsIgnoreCase(ch, "__lastread"))
|
||||||
return &CartDebug::lastReadBaseAddress;
|
return &CartDebug::lastReadBaseAddress;
|
||||||
else if(BSPF::equalsIgnoreCase(ch, "__lastwrite"))
|
else if(BSPF::equalsIgnoreCase(ch, "__lastwrite"))
|
||||||
|
|
Loading…
Reference in New Issue