mirror of https://github.com/stella-emu/stella.git
Added -debug command line option to make Stella start in the debugger.
Added -debugheight command line option. The height may not be set to anything below 383 (which is the default). Attempted to implement a "height" command in the prompt, but either I'm doing something wrong (most likely), or the debugger can't be resized after it's started. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@531 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
2afcf0cd4f
commit
7051819948
|
@ -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: mainSDL.cxx,v 1.46 2005-06-17 14:42:48 stephena Exp $
|
// $Id: mainSDL.cxx,v 1.47 2005-06-19 16:53:57 urchlay Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
@ -178,7 +178,11 @@ int main(int argc, char* argv[])
|
||||||
if(argc == 1 || !FilesystemNode::fileExists(romfile))
|
if(argc == 1 || !FilesystemNode::fileExists(romfile))
|
||||||
theOSystem->createLauncher();
|
theOSystem->createLauncher();
|
||||||
else
|
else
|
||||||
|
{
|
||||||
theOSystem->createConsole(romfile);
|
theOSystem->createConsole(romfile);
|
||||||
|
if(theOSystem->settings().getBool("debug"))
|
||||||
|
handler.enterDebugMode();
|
||||||
|
}
|
||||||
|
|
||||||
// Start the main loop, and don't exit until the user issues a QUIT command
|
// Start the main loop, and don't exit until the user issues a QUIT command
|
||||||
theOSystem->mainLoop();
|
theOSystem->mainLoop();
|
||||||
|
|
|
@ -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.18 2005-06-19 08:29:39 urchlay Exp $
|
// $Id: Debugger.cxx,v 1.19 2005-06-19 16:53:57 urchlay Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
|
@ -59,10 +59,14 @@ Debugger::~Debugger()
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Debugger::initialize()
|
void Debugger::initialize()
|
||||||
{
|
{
|
||||||
|
int userHeight = myOSystem->settings().getInt("debugheight");
|
||||||
|
if(userHeight < kDebuggerHeight)
|
||||||
|
userHeight = kDebuggerHeight;
|
||||||
|
|
||||||
int x = 0,
|
int x = 0,
|
||||||
y = myConsole->mediaSource().height(),
|
y = myConsole->mediaSource().height(),
|
||||||
w = kDebuggerWidth,
|
w = kDebuggerWidth,
|
||||||
h = kDebuggerHeight - y;
|
h = userHeight - y;
|
||||||
|
|
||||||
delete myBaseDialog;
|
delete myBaseDialog;
|
||||||
DebuggerDialog *dd = new DebuggerDialog(myOSystem, this, x, y, w, h);
|
DebuggerDialog *dd = new DebuggerDialog(myOSystem, this, x, y, w, h);
|
||||||
|
@ -73,8 +77,12 @@ void Debugger::initialize()
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Debugger::initializeVideo()
|
void Debugger::initializeVideo()
|
||||||
{
|
{
|
||||||
|
int userHeight = myOSystem->settings().getInt("debugheight");
|
||||||
|
if(userHeight < kDebuggerHeight)
|
||||||
|
userHeight = kDebuggerHeight;
|
||||||
|
|
||||||
string title = string("Stella version ") + STELLA_VERSION + ": Debugger mode";
|
string title = string("Stella version ") + STELLA_VERSION + ": Debugger mode";
|
||||||
myOSystem->frameBuffer().initialize(title, kDebuggerWidth, kDebuggerHeight, false);
|
myOSystem->frameBuffer().initialize(title, kDebuggerWidth, userHeight, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -473,3 +481,21 @@ int Debugger::peek(int addr) {
|
||||||
int Debugger::dpeek(int addr) {
|
int Debugger::dpeek(int addr) {
|
||||||
return mySystem->peek(addr) | (mySystem->peek(addr+1) << 8);
|
return mySystem->peek(addr) | (mySystem->peek(addr+1) << 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
bool Debugger::setHeight(int height) {
|
||||||
|
if(height == 0)
|
||||||
|
height = kDebuggerHeight;
|
||||||
|
|
||||||
|
if(height < kDebuggerHeight)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
myOSystem->settings().setInt("debugheight", height);
|
||||||
|
/*
|
||||||
|
// FIXME: this segfaults
|
||||||
|
quit();
|
||||||
|
initialize();
|
||||||
|
initializeVideo();
|
||||||
|
*/
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
@ -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.16 2005-06-19 08:29:39 urchlay Exp $
|
// $Id: Debugger.hxx,v 1.17 2005-06-19 16:53:57 urchlay Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifndef DEBUGGER_HXX
|
#ifndef DEBUGGER_HXX
|
||||||
|
@ -49,7 +49,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.16 2005-06-19 08:29:39 urchlay Exp $
|
@version $Id: Debugger.hxx,v 1.17 2005-06-19 16:53:57 urchlay Exp $
|
||||||
*/
|
*/
|
||||||
class Debugger : public DialogContainer
|
class Debugger : public DialogContainer
|
||||||
{
|
{
|
||||||
|
@ -130,6 +130,7 @@ class Debugger : public DialogContainer
|
||||||
void toggleBreakPoint(int bp);
|
void toggleBreakPoint(int bp);
|
||||||
bool breakPoint(int bp);
|
bool breakPoint(int bp);
|
||||||
string disassemble(int start, int lines);
|
string disassemble(int start, int lines);
|
||||||
|
bool setHeight(int height);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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: DebuggerParser.cxx,v 1.16 2005-06-19 08:37:29 urchlay Exp $
|
// $Id: DebuggerParser.cxx,v 1.17 2005-06-19 16:53:57 urchlay Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
|
@ -449,7 +449,18 @@ string DebuggerParser::run(const string& command) {
|
||||||
return "OK";
|
return "OK";
|
||||||
} else if(subStringMatch(verb, "clearbreaks")) {
|
} else if(subStringMatch(verb, "clearbreaks")) {
|
||||||
debugger->clearAllBreakPoints();
|
debugger->clearAllBreakPoints();
|
||||||
return "cleared all breakpoints";
|
} else if(subStringMatch(verb, "height")) {
|
||||||
|
if(argCount != 1)
|
||||||
|
return "one argument required";
|
||||||
|
|
||||||
|
return "This command is not yet supported. Start Stella with the -debugheight option instead.";
|
||||||
|
/*
|
||||||
|
if(debugger->setHeight(args[0]))
|
||||||
|
//return "Stella will use the new height next time it starts.";
|
||||||
|
return "OK";
|
||||||
|
else
|
||||||
|
return "bad height (use 0 for default, min height #383)";
|
||||||
|
*/
|
||||||
} else if(subStringMatch(verb, "print")) {
|
} else if(subStringMatch(verb, "print")) {
|
||||||
if(argCount < 1)
|
if(argCount < 1)
|
||||||
return "one or more arguments required";
|
return "one or more arguments required";
|
||||||
|
@ -498,6 +509,7 @@ string DebuggerParser::run(const string& command) {
|
||||||
"disasm - Disassemble (from current PC)\n"
|
"disasm - Disassemble (from current PC)\n"
|
||||||
"disasm xx - Disassemble (from address xx)\n"
|
"disasm xx - Disassemble (from address xx)\n"
|
||||||
"frame - Advance to next TIA frame, then break\n"
|
"frame - Advance to next TIA frame, then break\n"
|
||||||
|
"height xx - Set height of debugger window in pixels\n"
|
||||||
"listbreaks - List all breakpoints\n"
|
"listbreaks - List all breakpoints\n"
|
||||||
"loadsym f - Load DASM symbols from file f\n"
|
"loadsym f - Load DASM symbols from file f\n"
|
||||||
"n - Toggle Negative Flag\n"
|
"n - Toggle Negative Flag\n"
|
||||||
|
|
|
@ -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: Settings.cxx,v 1.49 2005-06-17 14:42:49 stephena Exp $
|
// $Id: Settings.cxx,v 1.50 2005-06-19 16:53:57 urchlay Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
@ -50,6 +50,7 @@ Settings::Settings(OSystem* osystem)
|
||||||
set("grabmouse", "false");
|
set("grabmouse", "false");
|
||||||
set("center", "true");
|
set("center", "true");
|
||||||
set("palette", "standard");
|
set("palette", "standard");
|
||||||
|
set("debugheight", "383");
|
||||||
|
|
||||||
set("sound", "true");
|
set("sound", "true");
|
||||||
set("fragsize", "512");
|
set("fragsize", "512");
|
||||||
|
@ -146,6 +147,11 @@ bool Settings::loadCommandLine(int argc, char** argv)
|
||||||
set(key, "true", false); // this confusing line means set 'listrominfo'
|
set(key, "true", false); // this confusing line means set 'listrominfo'
|
||||||
return true; // to true, but don't save to the settings file
|
return true; // to true, but don't save to the settings file
|
||||||
}
|
}
|
||||||
|
else if(key == "debug") // this doesn't make Stella exit
|
||||||
|
{
|
||||||
|
set(key, "true", false); // don't save this to the config file either
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if(++i >= argc)
|
if(++i >= argc)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue