mirror of https://github.com/stella-emu/stella.git
Added support for informing the M6502 of the debugger, so it can call it
directly. Updated M6502 classes to call Debugger::start when a breakpoint is hit. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@510 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
c693074377
commit
9473ca0dd5
|
@ -13,7 +13,7 @@
|
||||||
## See the file "license" for information on usage and redistribution of
|
## See the file "license" for information on usage and redistribution of
|
||||||
## this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
## this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
##
|
##
|
||||||
## $Id: makefile,v 1.99 2005-06-16 02:16:25 urchlay Exp $
|
## $Id: makefile,v 1.100 2005-06-16 12:28:53 stephena Exp $
|
||||||
##============================================================================
|
##============================================================================
|
||||||
|
|
||||||
##============================================================================
|
##============================================================================
|
||||||
|
@ -373,10 +373,10 @@ M6502.o: $(CORE)/m6502/src/M6502.cxx
|
||||||
$(CXX) -c $(FLAGS) $(OPTIONS) $(CORE)/m6502/src/M6502.cxx
|
$(CXX) -c $(FLAGS) $(OPTIONS) $(CORE)/m6502/src/M6502.cxx
|
||||||
|
|
||||||
M6502Low.o: $(CORE)/m6502/src/M6502Low.cxx
|
M6502Low.o: $(CORE)/m6502/src/M6502Low.cxx
|
||||||
$(CXX) -c $(FLAGS) $(OPTIONS) $(CORE)/m6502/src/M6502Low.cxx
|
$(CXX) -c $(FLAGS) $(OPTIONS) $(LDFLAGS) $(CORE)/m6502/src/M6502Low.cxx
|
||||||
|
|
||||||
M6502Hi.o: $(CORE)/m6502/src/M6502Hi.cxx
|
M6502Hi.o: $(CORE)/m6502/src/M6502Hi.cxx
|
||||||
$(CXX) -c $(FLAGS) $(OPTIONS) $(CORE)/m6502/src/M6502Hi.cxx
|
$(CXX) -c $(FLAGS) $(OPTIONS) $(LDFLAGS) $(CORE)/m6502/src/M6502Hi.cxx
|
||||||
|
|
||||||
NullDev.o: $(CORE)/m6502/src/NullDev.cxx $(CORE)/m6502/src/NullDev.hxx
|
NullDev.o: $(CORE)/m6502/src/NullDev.cxx $(CORE)/m6502/src/NullDev.hxx
|
||||||
$(CXX) -c $(FLAGS) $(OPTIONS) $(CORE)/m6502/src/NullDev.cxx
|
$(CXX) -c $(FLAGS) $(OPTIONS) $(CORE)/m6502/src/NullDev.cxx
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: Debugger.cxx,v 1.10 2005-06-16 02:16:25 urchlay Exp $
|
// $Id: Debugger.cxx,v 1.11 2005-06-16 12:28:53 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
|
@ -256,6 +256,12 @@ const string Debugger::dumpTIA()
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void Debugger::start()
|
||||||
|
{
|
||||||
|
myOSystem->eventHandler().enterDebugMode();
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Debugger::quit()
|
void Debugger::quit()
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: Debugger.hxx,v 1.7 2005-06-16 02:16:25 urchlay Exp $
|
// $Id: Debugger.hxx,v 1.8 2005-06-16 12:28:53 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifndef DEBUGGER_HXX
|
#ifndef DEBUGGER_HXX
|
||||||
|
@ -48,7 +48,7 @@ enum {
|
||||||
for all debugging operations in Stella (parser, 6502 debugger, etc).
|
for all debugging operations in Stella (parser, 6502 debugger, etc).
|
||||||
|
|
||||||
@author Stephen Anthony
|
@author Stephen Anthony
|
||||||
@version $Id: Debugger.hxx,v 1.7 2005-06-16 02:16:25 urchlay Exp $
|
@version $Id: Debugger.hxx,v 1.8 2005-06-16 12:28:53 stephena Exp $
|
||||||
*/
|
*/
|
||||||
class Debugger : public DialogContainer
|
class Debugger : public DialogContainer
|
||||||
{
|
{
|
||||||
|
@ -124,6 +124,7 @@ class Debugger : public DialogContainer
|
||||||
// set a bunch of RAM locations at once
|
// set a bunch of RAM locations at once
|
||||||
const string setRAM(int argCount, int *args);
|
const string setRAM(int argCount, int *args);
|
||||||
|
|
||||||
|
void start();
|
||||||
void quit();
|
void quit();
|
||||||
void trace();
|
void trace();
|
||||||
void step();
|
void step();
|
||||||
|
@ -148,7 +149,7 @@ class Debugger : public DialogContainer
|
||||||
|
|
||||||
DebuggerParser* myParser;
|
DebuggerParser* myParser;
|
||||||
D6502* myDebugger;
|
D6502* myDebugger;
|
||||||
EquateList *equateList;
|
EquateList *equateList;
|
||||||
PackedBitArray *breakPoints;
|
PackedBitArray *breakPoints;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: Console.cxx,v 1.56 2005-06-16 00:55:57 stephena Exp $
|
// $Id: Console.cxx,v 1.57 2005-06-16 12:28:53 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
@ -144,6 +144,7 @@ Console::Console(const uInt8* image, uInt32 size, OSystem* osystem)
|
||||||
{
|
{
|
||||||
m6502 = new M6502High(1);
|
m6502 = new M6502High(1);
|
||||||
}
|
}
|
||||||
|
m6502->attach(myOSystem->debugger());
|
||||||
|
|
||||||
M6532* m6532 = new M6532(*this);
|
M6532* m6532 = new M6532(*this);
|
||||||
TIA* tia = new TIA(*this, myOSystem->settings());
|
TIA* tia = new TIA(*this, myOSystem->settings());
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: M6502.cxx,v 1.5 2005-06-16 02:16:26 urchlay Exp $
|
// $Id: M6502.cxx,v 1.6 2005-06-16 12:28:54 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include "M6502.hxx"
|
#include "M6502.hxx"
|
||||||
|
@ -22,6 +22,7 @@
|
||||||
M6502::M6502(uInt32 systemCyclesPerProcessorCycle)
|
M6502::M6502(uInt32 systemCyclesPerProcessorCycle)
|
||||||
: myExecutionStatus(0),
|
: myExecutionStatus(0),
|
||||||
mySystem(0),
|
mySystem(0),
|
||||||
|
myDebugger(0),
|
||||||
mySystemCyclesPerProcessorCycle(systemCyclesPerProcessorCycle)
|
mySystemCyclesPerProcessorCycle(systemCyclesPerProcessorCycle)
|
||||||
{
|
{
|
||||||
uInt16 t;
|
uInt16 t;
|
||||||
|
@ -54,6 +55,13 @@ void M6502::install(System& system)
|
||||||
mySystem = &system;
|
mySystem = &system;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void M6502::attach(Debugger& debugger)
|
||||||
|
{
|
||||||
|
// Remember the debugger for this microprocessor
|
||||||
|
myDebugger = &debugger;
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void M6502::reset()
|
void M6502::reset()
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: M6502.hxx,v 1.4 2005-06-16 02:16:26 urchlay Exp $
|
// $Id: M6502.hxx,v 1.5 2005-06-16 12:28:54 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifndef M6502_HXX
|
#ifndef M6502_HXX
|
||||||
|
@ -23,6 +23,7 @@ class D6502;
|
||||||
class M6502;
|
class M6502;
|
||||||
class Serializer;
|
class Serializer;
|
||||||
class Deserializer;
|
class Deserializer;
|
||||||
|
class Debugger;
|
||||||
|
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
|
@ -34,7 +35,7 @@ class Deserializer;
|
||||||
has a 64K addressing space.
|
has a 64K addressing space.
|
||||||
|
|
||||||
@author Bradford W. Mott
|
@author Bradford W. Mott
|
||||||
@version $Id: M6502.hxx,v 1.4 2005-06-16 02:16:26 urchlay Exp $
|
@version $Id: M6502.hxx,v 1.5 2005-06-16 12:28:54 stephena Exp $
|
||||||
*/
|
*/
|
||||||
class M6502
|
class M6502
|
||||||
{
|
{
|
||||||
|
@ -79,6 +80,13 @@ class M6502
|
||||||
*/
|
*/
|
||||||
virtual void install(System& system);
|
virtual void install(System& system);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Attach the specified debugger.
|
||||||
|
|
||||||
|
@param debugger The debugger to attach to the microprocessor.
|
||||||
|
*/
|
||||||
|
void attach(Debugger& debugger);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
Reset the processor to its power-on state. This method should not
|
Reset the processor to its power-on state. This method should not
|
||||||
|
@ -224,6 +232,9 @@ class M6502
|
||||||
/// Pointer to the system the processor is installed in or the null pointer
|
/// Pointer to the system the processor is installed in or the null pointer
|
||||||
System* mySystem;
|
System* mySystem;
|
||||||
|
|
||||||
|
/// Pointer to the debugger for this processor or the null pointer
|
||||||
|
Debugger* myDebugger;
|
||||||
|
|
||||||
/// Indicates the number of system cycles per processor cycle
|
/// Indicates the number of system cycles per processor cycle
|
||||||
const uInt32 mySystemCyclesPerProcessorCycle;
|
const uInt32 mySystemCyclesPerProcessorCycle;
|
||||||
|
|
||||||
|
@ -247,4 +258,3 @@ class M6502
|
||||||
static const char* ourInstructionMnemonicTable[256];
|
static const char* ourInstructionMnemonicTable[256];
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -13,12 +13,13 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: M6502Hi.cxx,v 1.4 2005-06-16 02:16:26 urchlay Exp $
|
// $Id: M6502Hi.cxx,v 1.5 2005-06-16 12:28:54 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include "M6502Hi.hxx"
|
#include "M6502Hi.hxx"
|
||||||
#include "Serializer.hxx"
|
#include "Serializer.hxx"
|
||||||
#include "Deserializer.hxx"
|
#include "Deserializer.hxx"
|
||||||
|
#include "Debugger.hxx"
|
||||||
|
|
||||||
#define debugStream cout
|
#define debugStream cout
|
||||||
|
|
||||||
|
@ -76,7 +77,7 @@ bool M6502High::execute(uInt32 number)
|
||||||
if(breakPoints != NULL)
|
if(breakPoints != NULL)
|
||||||
{
|
{
|
||||||
if(breakPoints->isSet(PC))
|
if(breakPoints->isSet(PC))
|
||||||
cerr << "hit breakpoint at " << PC << endl;
|
myDebugger->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
|
|
@ -13,12 +13,13 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: M6502Low.cxx,v 1.4 2005-06-16 02:16:26 urchlay Exp $
|
// $Id: M6502Low.cxx,v 1.5 2005-06-16 12:28:54 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include "M6502Low.hxx"
|
#include "M6502Low.hxx"
|
||||||
#include "Serializer.hxx"
|
#include "Serializer.hxx"
|
||||||
#include "Deserializer.hxx"
|
#include "Deserializer.hxx"
|
||||||
|
#include "Debugger.hxx"
|
||||||
|
|
||||||
#define debugStream cout
|
#define debugStream cout
|
||||||
|
|
||||||
|
@ -62,7 +63,7 @@ bool M6502Low::execute(uInt32 number)
|
||||||
if(breakPoints != NULL)
|
if(breakPoints != NULL)
|
||||||
{
|
{
|
||||||
if(breakPoints->isSet(PC))
|
if(breakPoints->isSet(PC))
|
||||||
cerr << "hit breakpoint at " << PC << endl;
|
myDebugger->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
|
Loading…
Reference in New Issue