Added DebuggerSystem and DebuggerState classes to clean up the unwieldy
Debugger class. There will be a subsystem for each GUI debugger tab,
and it will have responsibility for all thing related to that tab,
eliminating a lot of code from Debugger class.
Added RamDebug class, and changed the GUI RAM tab to use the new RamDebug
subsystem. The prompt still uses the old method, which will have to be
fixed. At that point, Debugger::(readRAM, writeRAM, ramChanged) can be
eliminated. If the Debugger ever wants to access RAM related things,
it should refer to RamDebug.
Still TODO is create a CpuDebug subsystem, and turn the current TIADebug
into a real subsystem.
Cleaned up some redundant typedefs (changed AddrList/ValueList to
IntArray). As well, we're moving away from having bspf stuff seeded
throughout the system. Integer values will be stored/passed around as
'int', and truncated where necessary as close to the given method as
possible.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@615 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-07-07 15:19:04 +00:00
|
|
|
//============================================================================
|
|
|
|
//
|
2016-12-30 00:00:30 +00:00
|
|
|
// SSSS tt lll lll
|
|
|
|
// SS SS tt ll ll
|
|
|
|
// SS tttttt eeee ll ll aaaa
|
Added DebuggerSystem and DebuggerState classes to clean up the unwieldy
Debugger class. There will be a subsystem for each GUI debugger tab,
and it will have responsibility for all thing related to that tab,
eliminating a lot of code from Debugger class.
Added RamDebug class, and changed the GUI RAM tab to use the new RamDebug
subsystem. The prompt still uses the old method, which will have to be
fixed. At that point, Debugger::(readRAM, writeRAM, ramChanged) can be
eliminated. If the Debugger ever wants to access RAM related things,
it should refer to RamDebug.
Still TODO is create a CpuDebug subsystem, and turn the current TIADebug
into a real subsystem.
Cleaned up some redundant typedefs (changed AddrList/ValueList to
IntArray). As well, we're moving away from having bspf stuff seeded
throughout the system. Integer values will be stored/passed around as
'int', and truncated where necessary as close to the given method as
possible.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@615 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-07-07 15:19:04 +00:00
|
|
|
// 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
|
|
|
|
//
|
2019-01-01 15:05:51 +00:00
|
|
|
// Copyright (c) 1995-2019 by Bradford W. Mott, Stephen Anthony
|
2010-04-10 21:37:23 +00:00
|
|
|
// and the Stella Team
|
Added DebuggerSystem and DebuggerState classes to clean up the unwieldy
Debugger class. There will be a subsystem for each GUI debugger tab,
and it will have responsibility for all thing related to that tab,
eliminating a lot of code from Debugger class.
Added RamDebug class, and changed the GUI RAM tab to use the new RamDebug
subsystem. The prompt still uses the old method, which will have to be
fixed. At that point, Debugger::(readRAM, writeRAM, ramChanged) can be
eliminated. If the Debugger ever wants to access RAM related things,
it should refer to RamDebug.
Still TODO is create a CpuDebug subsystem, and turn the current TIADebug
into a real subsystem.
Cleaned up some redundant typedefs (changed AddrList/ValueList to
IntArray). As well, we're moving away from having bspf stuff seeded
throughout the system. Integer values will be stored/passed around as
'int', and truncated where necessary as close to the given method as
possible.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@615 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-07-07 15:19:04 +00:00
|
|
|
//
|
2010-01-10 03:23:32 +00:00
|
|
|
// See the file "License.txt" for information on usage and redistribution of
|
Added DebuggerSystem and DebuggerState classes to clean up the unwieldy
Debugger class. There will be a subsystem for each GUI debugger tab,
and it will have responsibility for all thing related to that tab,
eliminating a lot of code from Debugger class.
Added RamDebug class, and changed the GUI RAM tab to use the new RamDebug
subsystem. The prompt still uses the old method, which will have to be
fixed. At that point, Debugger::(readRAM, writeRAM, ramChanged) can be
eliminated. If the Debugger ever wants to access RAM related things,
it should refer to RamDebug.
Still TODO is create a CpuDebug subsystem, and turn the current TIADebug
into a real subsystem.
Cleaned up some redundant typedefs (changed AddrList/ValueList to
IntArray). As well, we're moving away from having bspf stuff seeded
throughout the system. Integer values will be stored/passed around as
'int', and truncated where necessary as close to the given method as
possible.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@615 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-07-07 15:19:04 +00:00
|
|
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
|
|
|
//============================================================================
|
|
|
|
|
|
|
|
#ifndef DEBUGGER_SYSTEM_HXX
|
|
|
|
#define DEBUGGER_SYSTEM_HXX
|
|
|
|
|
2010-10-18 18:39:57 +00:00
|
|
|
class Debugger;
|
|
|
|
|
2005-07-07 18:56:41 +00:00
|
|
|
#include "Console.hxx"
|
Added DebuggerSystem and DebuggerState classes to clean up the unwieldy
Debugger class. There will be a subsystem for each GUI debugger tab,
and it will have responsibility for all thing related to that tab,
eliminating a lot of code from Debugger class.
Added RamDebug class, and changed the GUI RAM tab to use the new RamDebug
subsystem. The prompt still uses the old method, which will have to be
fixed. At that point, Debugger::(readRAM, writeRAM, ramChanged) can be
eliminated. If the Debugger ever wants to access RAM related things,
it should refer to RamDebug.
Still TODO is create a CpuDebug subsystem, and turn the current TIADebug
into a real subsystem.
Cleaned up some redundant typedefs (changed AddrList/ValueList to
IntArray). As well, we're moving away from having bspf stuff seeded
throughout the system. Integer values will be stored/passed around as
'int', and truncated where necessary as close to the given method as
possible.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@615 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-07-07 15:19:04 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
The DebuggerState class is used as a base class for state in all
|
|
|
|
DebuggerSystem objects. We make it a class so we can take advantage
|
|
|
|
of the copy constructor.
|
|
|
|
*/
|
|
|
|
class DebuggerState
|
|
|
|
{
|
|
|
|
public:
|
2015-12-29 22:39:08 +00:00
|
|
|
DebuggerState() = default;
|
|
|
|
~DebuggerState() = default;
|
2015-09-14 18:14:00 +00:00
|
|
|
|
|
|
|
DebuggerState(const DebuggerState&) = default;
|
|
|
|
DebuggerState(DebuggerState&&) = delete;
|
|
|
|
DebuggerState& operator=(const DebuggerState&) = default;
|
|
|
|
DebuggerState& operator=(DebuggerState&&) = delete;
|
Added DebuggerSystem and DebuggerState classes to clean up the unwieldy
Debugger class. There will be a subsystem for each GUI debugger tab,
and it will have responsibility for all thing related to that tab,
eliminating a lot of code from Debugger class.
Added RamDebug class, and changed the GUI RAM tab to use the new RamDebug
subsystem. The prompt still uses the old method, which will have to be
fixed. At that point, Debugger::(readRAM, writeRAM, ramChanged) can be
eliminated. If the Debugger ever wants to access RAM related things,
it should refer to RamDebug.
Still TODO is create a CpuDebug subsystem, and turn the current TIADebug
into a real subsystem.
Cleaned up some redundant typedefs (changed AddrList/ValueList to
IntArray). As well, we're moving away from having bspf stuff seeded
throughout the system. Integer values will be stored/passed around as
'int', and truncated where necessary as close to the given method as
possible.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@615 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-07-07 15:19:04 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
The base class for all debugger objects. Its real purpose is to
|
|
|
|
clean up the Debugger API, partitioning it into separate
|
|
|
|
subsystems.
|
|
|
|
*/
|
|
|
|
class DebuggerSystem
|
|
|
|
{
|
|
|
|
public:
|
Added RiotDebug class, which for now only duplicates the previous
functionality of the Debugger::riotState() method. It will become
more useful when I add a RIOT tab to the debugger. Also, added
change tracking infrastructure.
Fixed long-standing bug with viewing the contents of TIM{1, 8, 64, 1024}T
registers. Apparently, the output generated by the 'riot' debugger
command showed either INTIM or TIMINT for those registers, and not the
actual value written to those registers.
Added INTIM, TIMINT, and TIMCLKS to the riot output, which show the
current values of the timer, the timer interrupt, and the number of
'timer clocks' resulting from writing to a timer register.
Cleaned up some of the debugger API, removing pointers and using
references instead.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1479 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-04-19 21:11:52 +00:00
|
|
|
DebuggerSystem(Debugger& dbg, Console& console) :
|
|
|
|
myDebugger(dbg), myConsole(console), mySystem(console.system()) { }
|
2015-12-29 22:39:08 +00:00
|
|
|
virtual ~DebuggerSystem() = default;
|
Added DebuggerSystem and DebuggerState classes to clean up the unwieldy
Debugger class. There will be a subsystem for each GUI debugger tab,
and it will have responsibility for all thing related to that tab,
eliminating a lot of code from Debugger class.
Added RamDebug class, and changed the GUI RAM tab to use the new RamDebug
subsystem. The prompt still uses the old method, which will have to be
fixed. At that point, Debugger::(readRAM, writeRAM, ramChanged) can be
eliminated. If the Debugger ever wants to access RAM related things,
it should refer to RamDebug.
Still TODO is create a CpuDebug subsystem, and turn the current TIADebug
into a real subsystem.
Cleaned up some redundant typedefs (changed AddrList/ValueList to
IntArray). As well, we're moving away from having bspf stuff seeded
throughout the system. Integer values will be stored/passed around as
'int', and truncated where necessary as close to the given method as
possible.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@615 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-07-07 15:19:04 +00:00
|
|
|
|
Added RiotDebug class, which for now only duplicates the previous
functionality of the Debugger::riotState() method. It will become
more useful when I add a RIOT tab to the debugger. Also, added
change tracking infrastructure.
Fixed long-standing bug with viewing the contents of TIM{1, 8, 64, 1024}T
registers. Apparently, the output generated by the 'riot' debugger
command showed either INTIM or TIMINT for those registers, and not the
actual value written to those registers.
Added INTIM, TIMINT, and TIMCLKS to the riot output, which show the
current values of the timer, the timer interrupt, and the number of
'timer clocks' resulting from writing to a timer register.
Cleaned up some of the debugger API, removing pointers and using
references instead.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1479 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-04-19 21:11:52 +00:00
|
|
|
virtual const DebuggerState& getState() = 0;
|
|
|
|
virtual const DebuggerState& getOldState() = 0;
|
Added DebuggerSystem and DebuggerState classes to clean up the unwieldy
Debugger class. There will be a subsystem for each GUI debugger tab,
and it will have responsibility for all thing related to that tab,
eliminating a lot of code from Debugger class.
Added RamDebug class, and changed the GUI RAM tab to use the new RamDebug
subsystem. The prompt still uses the old method, which will have to be
fixed. At that point, Debugger::(readRAM, writeRAM, ramChanged) can be
eliminated. If the Debugger ever wants to access RAM related things,
it should refer to RamDebug.
Still TODO is create a CpuDebug subsystem, and turn the current TIADebug
into a real subsystem.
Cleaned up some redundant typedefs (changed AddrList/ValueList to
IntArray). As well, we're moving away from having bspf stuff seeded
throughout the system. Integer values will be stored/passed around as
'int', and truncated where necessary as close to the given method as
possible.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@615 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-07-07 15:19:04 +00:00
|
|
|
|
|
|
|
virtual void saveOldState() = 0;
|
Added RiotDebug class, which for now only duplicates the previous
functionality of the Debugger::riotState() method. It will become
more useful when I add a RIOT tab to the debugger. Also, added
change tracking infrastructure.
Fixed long-standing bug with viewing the contents of TIM{1, 8, 64, 1024}T
registers. Apparently, the output generated by the 'riot' debugger
command showed either INTIM or TIMINT for those registers, and not the
actual value written to those registers.
Added INTIM, TIMINT, and TIMCLKS to the riot output, which show the
current values of the timer, the timer interrupt, and the number of
'timer clocks' resulting from writing to a timer register.
Cleaned up some of the debugger API, removing pointers and using
references instead.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1479 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-04-19 21:11:52 +00:00
|
|
|
virtual string toString() = 0;
|
2005-07-08 14:36:18 +00:00
|
|
|
|
|
|
|
protected:
|
Added RiotDebug class, which for now only duplicates the previous
functionality of the Debugger::riotState() method. It will become
more useful when I add a RIOT tab to the debugger. Also, added
change tracking infrastructure.
Fixed long-standing bug with viewing the contents of TIM{1, 8, 64, 1024}T
registers. Apparently, the output generated by the 'riot' debugger
command showed either INTIM or TIMINT for those registers, and not the
actual value written to those registers.
Added INTIM, TIMINT, and TIMCLKS to the riot output, which show the
current values of the timer, the timer interrupt, and the number of
'timer clocks' resulting from writing to a timer register.
Cleaned up some of the debugger API, removing pointers and using
references instead.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1479 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2008-04-19 21:11:52 +00:00
|
|
|
Debugger& myDebugger;
|
|
|
|
Console& myConsole;
|
|
|
|
System& mySystem;
|
2015-04-26 19:02:42 +00:00
|
|
|
|
|
|
|
private:
|
|
|
|
// Following constructors and assignment operators not supported
|
|
|
|
DebuggerSystem() = delete;
|
|
|
|
DebuggerSystem(const DebuggerSystem&) = delete;
|
|
|
|
DebuggerSystem(DebuggerSystem&&) = delete;
|
|
|
|
DebuggerSystem& operator=(const DebuggerSystem&) = delete;
|
|
|
|
DebuggerSystem& operator=(DebuggerSystem&&) = delete;
|
Added DebuggerSystem and DebuggerState classes to clean up the unwieldy
Debugger class. There will be a subsystem for each GUI debugger tab,
and it will have responsibility for all thing related to that tab,
eliminating a lot of code from Debugger class.
Added RamDebug class, and changed the GUI RAM tab to use the new RamDebug
subsystem. The prompt still uses the old method, which will have to be
fixed. At that point, Debugger::(readRAM, writeRAM, ramChanged) can be
eliminated. If the Debugger ever wants to access RAM related things,
it should refer to RamDebug.
Still TODO is create a CpuDebug subsystem, and turn the current TIADebug
into a real subsystem.
Cleaned up some redundant typedefs (changed AddrList/ValueList to
IntArray). As well, we're moving away from having bspf stuff seeded
throughout the system. Integer values will be stored/passed around as
'int', and truncated where necessary as close to the given method as
possible.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@615 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-07-07 15:19:04 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|