mirror of https://github.com/stella-emu/stella.git
hides new access functions since they can only used together with traps
fixes listtraps formatting (trapStatus) fixes trap addresses (in executeTrapRW, addr & XY is now always used for compares)
This commit is contained in:
parent
eb2ae18ce1
commit
7406c0fd2a
|
@ -105,8 +105,8 @@ static const char* const pseudo_registers[][2] = {
|
||||||
{ "_vblank", "Whether vertical blank is enabled (1 or 0)" },
|
{ "_vblank", "Whether vertical blank is enabled (1 or 0)" },
|
||||||
{ "_vsync", "Whether vertical sync is enabled (1 or 0)" },
|
{ "_vsync", "Whether vertical sync is enabled (1 or 0)" },
|
||||||
// CPU address access functions:
|
// CPU address access functions:
|
||||||
{ "_lastread", "last CPU read address" },
|
/*{ "__lastread", "last CPU read address" },
|
||||||
{ "_lastwrite", "last CPU write address" },
|
{ "__lastwrite", "last CPU write address" },*/
|
||||||
|
|
||||||
// empty string marks end of list, do not remove
|
// empty string marks end of list, do not remove
|
||||||
{ 0, 0 }
|
{ 0, 0 }
|
||||||
|
|
|
@ -546,23 +546,27 @@ string DebuggerParser::eval()
|
||||||
string DebuggerParser::trapStatus(const Trap& trap)
|
string DebuggerParser::trapStatus(const Trap& trap)
|
||||||
{
|
{
|
||||||
stringstream result;
|
stringstream result;
|
||||||
|
string lblb = debugger.cartDebug().getLabel(trap.begin, !trap.write);
|
||||||
|
string lble = debugger.cartDebug().getLabel(trap.end, !trap.write);
|
||||||
|
|
||||||
string lbl = debugger.cartDebug().getLabel(trap.begin, !trap.write);
|
if(lblb != "") {
|
||||||
if(lbl != "") {
|
|
||||||
result << " (";
|
result << " (";
|
||||||
result << lbl;
|
result << lblb;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(trap.begin != trap.end)
|
if(trap.begin != trap.end)
|
||||||
{
|
{
|
||||||
lbl = debugger.cartDebug().getLabel(trap.end, !trap.write);
|
if(lble != "")
|
||||||
if(lbl != "")
|
|
||||||
{
|
{
|
||||||
result << " ";
|
if (lblb != "")
|
||||||
result << lbl;
|
result << " ";
|
||||||
|
else
|
||||||
|
result << " (";
|
||||||
|
result << lble;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
result << ")";
|
if (lblb != "" || lble != "")
|
||||||
|
result << ")";
|
||||||
|
|
||||||
return result.str();
|
return result.str();
|
||||||
}
|
}
|
||||||
|
@ -1608,18 +1612,18 @@ void DebuggerParser::executeTraps(bool read, bool write, string command, bool ha
|
||||||
if(read)
|
if(read)
|
||||||
{
|
{
|
||||||
if(beginRead != endRead)
|
if(beginRead != endRead)
|
||||||
parserBuf << "_lastread>=" << Base::toString(beginRead) << "&&_lastread<=" << Base::toString(endRead);
|
parserBuf << "__lastread>=" << Base::toString(beginRead) << "&&__lastread<=" << Base::toString(endRead);
|
||||||
else
|
else
|
||||||
parserBuf << "_lastread==" << Base::toString(beginRead);
|
parserBuf << "__lastread==" << Base::toString(beginRead);
|
||||||
}
|
}
|
||||||
if(read && write)
|
if(read && write)
|
||||||
parserBuf << "||";
|
parserBuf << "||";
|
||||||
if(write)
|
if(write)
|
||||||
{
|
{
|
||||||
if(beginWrite != endWrite)
|
if(beginWrite != endWrite)
|
||||||
parserBuf << "_lastwrite>=" << Base::toString(beginWrite) << "&&_lastwrite<=" << Base::toString(endWrite);
|
parserBuf << "__lastwrite>=" << Base::toString(beginWrite) << "&&__lastwrite<=" << Base::toString(endWrite);
|
||||||
else
|
else
|
||||||
parserBuf << "_lastwrite==" << Base::toString(beginWrite);
|
parserBuf << "__lastwrite==" << Base::toString(beginWrite);
|
||||||
}
|
}
|
||||||
// parenthesize provided condition (end)
|
// parenthesize provided condition (end)
|
||||||
if(hasCond)
|
if(hasCond)
|
||||||
|
@ -1682,9 +1686,9 @@ void DebuggerParser::executeTrapRW(uInt32 addr, bool read, bool write, bool add)
|
||||||
if((i & 0x1080) == 0x0000)
|
if((i & 0x1080) == 0x0000)
|
||||||
{
|
{
|
||||||
// @sa666666: This seems wrong. E.g. trapread 40 4f will never trigger
|
// @sa666666: This seems wrong. E.g. trapread 40 4f will never trigger
|
||||||
if(read && (i & 0x000F) == addr)
|
if(read && (i & 0x000F) == (addr & 0x000F))
|
||||||
add ? debugger.addReadTrap(i) : debugger.removeReadTrap(i);
|
add ? debugger.addReadTrap(i) : debugger.removeReadTrap(i);
|
||||||
if(write && (i & 0x003F) == addr)
|
if(write && (i & 0x003F) == (addr & 0x003F))
|
||||||
add ? debugger.addWriteTrap(i) : debugger.removeWriteTrap(i);
|
add ? debugger.addWriteTrap(i) : debugger.removeWriteTrap(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1694,7 +1698,7 @@ void DebuggerParser::executeTrapRW(uInt32 addr, bool read, bool write, bool add)
|
||||||
{
|
{
|
||||||
for(uInt32 i = 0; i <= 0xFFFF; ++i)
|
for(uInt32 i = 0; i <= 0xFFFF; ++i)
|
||||||
{
|
{
|
||||||
if((i & 0x1080) == 0x0080 && (i & 0x0200) != 0x0000 && (i & 0x02FF) == addr)
|
if((i & 0x1280) == 0x0280 && (i & 0x029F) == (addr & 0x029F))
|
||||||
{
|
{
|
||||||
if(read)
|
if(read)
|
||||||
add ? debugger.addReadTrap(i) : debugger.removeReadTrap(i);
|
add ? debugger.addReadTrap(i) : debugger.removeReadTrap(i);
|
||||||
|
@ -1708,7 +1712,7 @@ void DebuggerParser::executeTrapRW(uInt32 addr, bool read, bool write, bool add)
|
||||||
{
|
{
|
||||||
for(uInt32 i = 0; i <= 0xFFFF; ++i)
|
for(uInt32 i = 0; i <= 0xFFFF; ++i)
|
||||||
{
|
{
|
||||||
if((i & 0x1080) == 0x0080 && (i & 0x0200) == 0x0000 && (i & 0x00FF) == addr)
|
if((i & 0x1280) == 0x0080 && (i & 0x00FF) == (addr & 0x00FF))
|
||||||
{
|
{
|
||||||
if(read)
|
if(read)
|
||||||
add ? debugger.addReadTrap(i) : debugger.removeReadTrap(i);
|
add ? debugger.addReadTrap(i) : debugger.removeReadTrap(i);
|
||||||
|
|
|
@ -206,9 +206,9 @@ CartMethod getCartSpecial(char* ch)
|
||||||
return &CartDebug::getBank;
|
return &CartDebug::getBank;
|
||||||
else if(BSPF::equalsIgnoreCase(ch, "_rwport"))
|
else if(BSPF::equalsIgnoreCase(ch, "_rwport"))
|
||||||
return &CartDebug::readFromWritePort;
|
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"))
|
||||||
return &CartDebug::lastWriteBaseAddress;
|
return &CartDebug::lastWriteBaseAddress;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue