mirror of https://github.com/stella-emu/stella.git
Refactor a few classes to not include so many headers.
Including many header files in other headers leads to a cascade of compiles when changing one of them. Note that this potentially makes some inline methods non-inline (although current idea on this is that the compiler can make much better choices for when to inline). So we may need to check performance after this work, to make sure no regressions happen.
This commit is contained in:
parent
6970389ff5
commit
632fffcb49
|
@ -22,13 +22,17 @@
|
||||||
#include "FSNode.hxx"
|
#include "FSNode.hxx"
|
||||||
#include "DiStella.hxx"
|
#include "DiStella.hxx"
|
||||||
#include "Debugger.hxx"
|
#include "Debugger.hxx"
|
||||||
|
#include "DebuggerParser.hxx"
|
||||||
#include "CpuDebug.hxx"
|
#include "CpuDebug.hxx"
|
||||||
#include "OSystem.hxx"
|
#include "OSystem.hxx"
|
||||||
#include "Settings.hxx"
|
#include "Settings.hxx"
|
||||||
#include "Version.hxx"
|
#include "Version.hxx"
|
||||||
|
#include "Cart.hxx"
|
||||||
#include "CartDebug.hxx"
|
#include "CartDebug.hxx"
|
||||||
#include "CartDebugWidget.hxx"
|
#include "CartDebugWidget.hxx"
|
||||||
#include "CartRamWidget.hxx"
|
#include "CartRamWidget.hxx"
|
||||||
|
#include "System.hxx"
|
||||||
|
#include "Base.hxx"
|
||||||
using Common::Base;
|
using Common::Base;
|
||||||
using std::hex;
|
using std::hex;
|
||||||
using std::dec;
|
using std::dec;
|
||||||
|
@ -179,6 +183,18 @@ int CartDebug::readFromWritePort()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
int CartDebug::lastReadBaseAddress()
|
||||||
|
{
|
||||||
|
return mySystem.m6502().lastReadBaseAddress();
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
int CartDebug::lastWriteBaseAddress()
|
||||||
|
{
|
||||||
|
return mySystem.m6502().lastWriteBaseAddress();
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
string CartDebug::toString()
|
string CartDebug::toString()
|
||||||
{
|
{
|
||||||
|
@ -513,6 +529,18 @@ bool CartDebug::addDirective(CartDebug::DisasmType type,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
int CartDebug::getBank()
|
||||||
|
{
|
||||||
|
return myConsole.cartridge().getBank();
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
int CartDebug::bankCount() const
|
||||||
|
{
|
||||||
|
return myConsole.cartridge().bankCount();
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
bool CartDebug::addLabel(const string& label, uInt16 address)
|
bool CartDebug::addLabel(const string& label, uInt16 address)
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,11 +26,7 @@ class CartDebugWidget;
|
||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
#include "Base.hxx"
|
|
||||||
#include "Cart.hxx"
|
|
||||||
#include "DebuggerSystem.hxx"
|
#include "DebuggerSystem.hxx"
|
||||||
#include "System.hxx"
|
|
||||||
#include "M6502.hxx"
|
|
||||||
|
|
||||||
// Function type for CartDebug instance methods
|
// Function type for CartDebug instance methods
|
||||||
class CartDebug;
|
class CartDebug;
|
||||||
|
@ -122,9 +118,9 @@ class CartDebug : public DebuggerSystem
|
||||||
int readFromWritePort();
|
int readFromWritePort();
|
||||||
|
|
||||||
// Return the base (= non-mirrored) address of the last CPU read
|
// Return the base (= non-mirrored) address of the last CPU read
|
||||||
int lastReadBaseAddress() { return mySystem.m6502().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
|
||||||
int lastWriteBaseAddress() { return mySystem.m6502().lastWriteBaseAddress(); }
|
int lastWriteBaseAddress();
|
||||||
|
|
||||||
// The following two methods are meant to be used together
|
// The following two methods are meant to be used together
|
||||||
// First, a call is made to disassemble(), which updates the disassembly
|
// First, a call is made to disassemble(), which updates the disassembly
|
||||||
|
@ -190,17 +186,12 @@ class CartDebug : public DebuggerSystem
|
||||||
Get the current bank in use by the cartridge
|
Get the current bank in use by the cartridge
|
||||||
(non-const because of use in YaccParser)
|
(non-const because of use in YaccParser)
|
||||||
*/
|
*/
|
||||||
int getBank() { return myConsole.cartridge().getBank(); }
|
int getBank();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Get the total number of banks supported by the cartridge.
|
Get the total number of banks supported by the cartridge.
|
||||||
*/
|
*/
|
||||||
int bankCount() const { return myConsole.cartridge().bankCount(); }
|
int bankCount() const;
|
||||||
|
|
||||||
/**
|
|
||||||
Get the name/type of the cartridge. // FIXME - dead code
|
|
||||||
*/
|
|
||||||
string getCartType() const { return myConsole.cartridge().name(); }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Add a label and associated address.
|
Add a label and associated address.
|
||||||
|
@ -293,19 +284,6 @@ class CartDebug : public DebuggerSystem
|
||||||
DirectiveList directiveList; // overrides for automatic code determination
|
DirectiveList directiveList; // overrides for automatic code determination
|
||||||
|
|
||||||
BankInfo() : start(0), end(0), offset(0), size(0) { }
|
BankInfo() : start(0), end(0), offset(0), size(0) { }
|
||||||
#if 0
|
|
||||||
friend ostream& operator<<(ostream& os, const BankInfo& b)
|
|
||||||
{
|
|
||||||
os << "start=$" << Common::Base::HEX4 << b.start
|
|
||||||
<< ", end=$" << Common::Base::HEX4 << b.end
|
|
||||||
<< ", offset=$" << Common::Base::HEX4 << b.offset
|
|
||||||
<< ", size=" << dec << b.size << endl
|
|
||||||
<< "addrlist: ";
|
|
||||||
for(const auto& i: b.addressList)
|
|
||||||
os << Common::Base::HEX4 << i << " ";
|
|
||||||
return os;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Address type information determined by Distella
|
// Address type information determined by Distella
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "Settings.hxx"
|
#include "Settings.hxx"
|
||||||
#include "DebuggerDialog.hxx"
|
#include "DebuggerDialog.hxx"
|
||||||
#include "DebuggerParser.hxx"
|
#include "DebuggerParser.hxx"
|
||||||
|
#include "StateManager.hxx"
|
||||||
|
|
||||||
#include "Console.hxx"
|
#include "Console.hxx"
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
|
@ -179,6 +180,24 @@ string Debugger::autoExec(StringList* history)
|
||||||
return buf.str();
|
return buf.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
PackedBitArray& Debugger::breakPoints() const
|
||||||
|
{
|
||||||
|
return mySystem.m6502().breakPoints();
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
TrapArray& Debugger::readTraps() const
|
||||||
|
{
|
||||||
|
return mySystem.m6502().readTraps();
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
TrapArray& Debugger::writeTraps() const
|
||||||
|
{
|
||||||
|
return mySystem.m6502().writeTraps();
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
const string Debugger::run(const string& command)
|
const string Debugger::run(const string& command)
|
||||||
{
|
{
|
||||||
|
@ -512,6 +531,12 @@ string Debugger::showWatches()
|
||||||
return myParser->showWatches();
|
return myParser->showWatches();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
int Debugger::stringToValue(const string& stringval)
|
||||||
|
{
|
||||||
|
return myParser->decipher_arg(stringval);
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
bool Debugger::patchROM(uInt16 addr, uInt8 value)
|
bool Debugger::patchROM(uInt16 addr, uInt8 value)
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,23 +27,23 @@ class EditTextWidget;
|
||||||
class RomWidget;
|
class RomWidget;
|
||||||
class Expression;
|
class Expression;
|
||||||
class PackedBitArray;
|
class PackedBitArray;
|
||||||
|
class TrapArray;
|
||||||
class PromptWidget;
|
class PromptWidget;
|
||||||
class ButtonWidget;
|
class ButtonWidget;
|
||||||
|
|
||||||
|
class CartDebug;
|
||||||
|
class CpuDebug;
|
||||||
|
class RiotDebug;
|
||||||
|
class TIADebug;
|
||||||
|
class DebuggerParser;
|
||||||
|
class RewindManager;
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
#include "Base.hxx"
|
#include "Base.hxx"
|
||||||
#include "DialogContainer.hxx"
|
#include "DialogContainer.hxx"
|
||||||
#include "DebuggerDialog.hxx"
|
#include "DebuggerDialog.hxx"
|
||||||
#include "DebuggerParser.hxx"
|
|
||||||
#include "StateManager.hxx"
|
|
||||||
#include "M6502.hxx"
|
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
#include "Stack.hxx"
|
|
||||||
#include "CartDebug.hxx"
|
|
||||||
#include "CpuDebug.hxx"
|
|
||||||
#include "RiotDebug.hxx"
|
|
||||||
#include "TIADebug.hxx"
|
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
|
|
||||||
using FunctionMap = std::map<string, unique_ptr<Expression>>;
|
using FunctionMap = std::map<string, unique_ptr<Expression>>;
|
||||||
|
@ -146,9 +146,9 @@ class Debugger : public DialogContainer
|
||||||
RomWidget& rom() const { return myDialog->rom(); }
|
RomWidget& rom() const { return myDialog->rom(); }
|
||||||
TiaOutputWidget& tiaOutput() const { return myDialog->tiaOutput(); }
|
TiaOutputWidget& tiaOutput() const { return myDialog->tiaOutput(); }
|
||||||
|
|
||||||
PackedBitArray& breakPoints() const { return mySystem.m6502().breakPoints(); }
|
PackedBitArray& breakPoints() const;
|
||||||
TrapArray& readTraps() const { return mySystem.m6502().readTraps(); }
|
TrapArray& readTraps() const;
|
||||||
TrapArray& writeTraps() const { return mySystem.m6502().writeTraps(); }
|
TrapArray& writeTraps() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Run the debugger command and return the result.
|
Run the debugger command and return the result.
|
||||||
|
@ -163,8 +163,7 @@ class Debugger : public DialogContainer
|
||||||
Convert between string->integer and integer->string, taking into
|
Convert between string->integer and integer->string, taking into
|
||||||
account the current base format.
|
account the current base format.
|
||||||
*/
|
*/
|
||||||
int stringToValue(const string& stringval)
|
int stringToValue(const string& stringval);
|
||||||
{ return myParser->decipher_arg(stringval); }
|
|
||||||
|
|
||||||
/* Convenience methods to get/set bit(s) in an 8-bit register */
|
/* Convenience methods to get/set bit(s) in an 8-bit register */
|
||||||
static uInt8 set_bit(uInt8 input, uInt8 bit, bool on)
|
static uInt8 set_bit(uInt8 input, uInt8 bit, bool on)
|
||||||
|
|
|
@ -20,6 +20,8 @@
|
||||||
#include "OSystem.hxx"
|
#include "OSystem.hxx"
|
||||||
#include "TIATypes.hxx"
|
#include "TIATypes.hxx"
|
||||||
#include "Debugger.hxx"
|
#include "Debugger.hxx"
|
||||||
|
#include "CartDebug.hxx"
|
||||||
|
#include "TIADebug.hxx"
|
||||||
#include "Base.hxx"
|
#include "Base.hxx"
|
||||||
#include "TIA.hxx"
|
#include "TIA.hxx"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue