mirror of https://github.com/stella-emu/stella.git
Updated Debugger.txt doc
Debugger bankswitch support for a few cart types git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@569 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
8ad0d445c3
commit
dfdc9de1a9
|
@ -19,7 +19,7 @@ What the debugger can do:
|
||||||
- Built-in VCS.H symbols, if no symbol file is loaded
|
- Built-in VCS.H symbols, if no symbol file is loaded
|
||||||
- Symbolic names in disassembly
|
- Symbolic names in disassembly
|
||||||
- Symbolic names accepted as input
|
- Symbolic names accepted as input
|
||||||
- Tab completion for symbol names (but not for commands yet).
|
- Tab completion for commands and symbol names
|
||||||
- Graphical editor for RIOT RAM. Acts a lot like a spreadsheet.
|
- Graphical editor for RIOT RAM. Acts a lot like a spreadsheet.
|
||||||
Input in hex, with displays for label/decimal/binary for
|
Input in hex, with displays for label/decimal/binary for
|
||||||
currently-selected location.
|
currently-selected location.
|
||||||
|
@ -31,6 +31,7 @@ What the debugger can do:
|
||||||
- Save CLI session to a text file.
|
- Save CLI session to a text file.
|
||||||
- Supports hex, decimal, and binary input and output almost everywhere.
|
- Supports hex, decimal, and binary input and output almost everywhere.
|
||||||
(disassembly is still hex)
|
(disassembly is still hex)
|
||||||
|
- (partial) Support for bank switching. Only F8 cart type works for now.
|
||||||
|
|
||||||
Planned features for Stella 2.0 release:
|
Planned features for Stella 2.0 release:
|
||||||
- Better TIA state display, with register names and GUI buttons for
|
- Better TIA state display, with register names and GUI buttons for
|
||||||
|
@ -40,7 +41,11 @@ Planned features for Stella 2.0 release:
|
||||||
code at once)
|
code at once)
|
||||||
- Scanline advance (like frame advance, break at beginning
|
- Scanline advance (like frame advance, break at beginning
|
||||||
of next scanline).
|
of next scanline).
|
||||||
- Support for bank switching.
|
- TIA display should be updated during step/trace, so we can see our
|
||||||
|
scanlines being drawn as it happens. The emulation core wasn't
|
||||||
|
designed with this in mind, so it'll take a lot of work
|
||||||
|
- Bankswitch support in the debugger for the remaining 20-odd cart
|
||||||
|
types. Each one has to be added individually.
|
||||||
|
|
||||||
Future plans (post 2.0):
|
Future plans (post 2.0):
|
||||||
- Advanced breakpoint support (e.g. Break when carry flag
|
- Advanced breakpoint support (e.g. Break when carry flag
|
||||||
|
@ -91,7 +96,7 @@ The tabs that are implemented so far:
|
||||||
be abbreviated: instead of "clearbreaks", you can type "clear" or
|
be abbreviated: instead of "clearbreaks", you can type "clear" or
|
||||||
even just "cl". However, "c" by itself is the Toggle Carry command.
|
even just "cl". However, "c" by itself is the Toggle Carry command.
|
||||||
|
|
||||||
Bash-style tab completion is supported for labels (see below)
|
Bash-style tab completion is supported for commands and labels (see below)
|
||||||
|
|
||||||
For now, there are some functions that only exist in the prompt. We
|
For now, there are some functions that only exist in the prompt. We
|
||||||
intend to add GUI equivalents for all (or almost all?) of the prompt
|
intend to add GUI equivalents for all (or almost all?) of the prompt
|
||||||
|
@ -145,21 +150,18 @@ The tabs that are implemented so far:
|
||||||
|
|
||||||
- Tab completion
|
- Tab completion
|
||||||
|
|
||||||
While entering a label, you can type a partial label name and press
|
While entering a command or label, you can type a partial name and
|
||||||
the Tab key to attempt to auto-complete the label. If you've ever
|
press the Tab key to attempt to auto-complete it. If you've ever used
|
||||||
used "bash", this will be immediately familiar. If not, try it: load
|
"bash", this will be immediately familiar. If not, try it: load up
|
||||||
up a ROM, go to the debugger, type "print w" (but don't press Enter),
|
a ROM, go to the debugger, type "print w" (but don't press Enter),
|
||||||
then hit Tab. The "w" will change to "WSYNC" (since this is the only
|
then hit Tab. The "w" will change to "WSYNC" (since this is the only
|
||||||
built-in label starting with a "w"). If there are multiple possible
|
built-in label starting with a "w"). If there are multiple possible
|
||||||
completions (try with "v" instead of "w"), you'll see a list of them,
|
completions (try with "v" instead of "w"), you'll see a list of them,
|
||||||
and your partial label will be completed as far as possible.
|
and your partial name will be completed as far as possible.
|
||||||
|
|
||||||
Tab completion works on all labels: built-in, loaded from a symbol file,
|
Tab completion works on all labels: built-in, loaded from a symbol file,
|
||||||
or set during debugging with the "define" command.
|
or set during debugging with the "define" command.
|
||||||
|
|
||||||
(By the time Stella 2.0 is released, completion will work on commands
|
|
||||||
as well as labels)
|
|
||||||
|
|
||||||
- Expressions
|
- Expressions
|
||||||
|
|
||||||
Almost every command takes a value: the "a" command takes a
|
Almost every command takes a value: the "a" command takes a
|
||||||
|
@ -454,3 +456,5 @@ When you use these buttons, the prompt doesn't change. This means the
|
||||||
status lines with the registers and disassembly will be "stale". You
|
status lines with the registers and disassembly will be "stale". You
|
||||||
can update them just by pressing Enter in the prompt.
|
can update them just by pressing Enter in the prompt.
|
||||||
|
|
||||||
|
You can also use the Step and Trace buttons from anywhere in the GUI via
|
||||||
|
the keyboard, with Alt-S and Alt-T. (TODO: Alt-F for Frame+1)
|
||||||
|
|
|
@ -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: Cart3F.cxx,v 1.5 2005-06-16 00:55:57 stephena Exp $
|
// $Id: Cart3F.cxx,v 1.6 2005-06-27 12:43:48 urchlay Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
@ -149,6 +149,17 @@ void Cartridge3F::bank(uInt16 bank)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
int Cartridge3F::bank() {
|
||||||
|
return myCurrentBank;
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
int Cartridge3F::bankCount() {
|
||||||
|
return mySize/2048;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
bool Cartridge3F::save(Serializer& out)
|
bool Cartridge3F::save(Serializer& out)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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: Cart3F.hxx,v 1.4 2005-06-16 00:55:57 stephena Exp $
|
// $Id: Cart3F.hxx,v 1.5 2005-06-27 12:43:48 urchlay Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifndef CARTRIDGE3F_HXX
|
#ifndef CARTRIDGE3F_HXX
|
||||||
|
@ -37,7 +37,7 @@ class Deserializer;
|
||||||
only used 8K this bankswitching scheme supports up to 512K.
|
only used 8K this bankswitching scheme supports up to 512K.
|
||||||
|
|
||||||
@author Bradford W. Mott
|
@author Bradford W. Mott
|
||||||
@version $Id: Cart3F.hxx,v 1.4 2005-06-16 00:55:57 stephena Exp $
|
@version $Id: Cart3F.hxx,v 1.5 2005-06-27 12:43:48 urchlay Exp $
|
||||||
*/
|
*/
|
||||||
class Cartridge3F : public Cartridge
|
class Cartridge3F : public Cartridge
|
||||||
{
|
{
|
||||||
|
@ -108,7 +108,6 @@ class Cartridge3F : public Cartridge
|
||||||
*/
|
*/
|
||||||
virtual void poke(uInt16 address, uInt8 value);
|
virtual void poke(uInt16 address, uInt8 value);
|
||||||
|
|
||||||
private:
|
|
||||||
/**
|
/**
|
||||||
Map the specified bank into the first segment
|
Map the specified bank into the first segment
|
||||||
|
|
||||||
|
@ -116,6 +115,9 @@ class Cartridge3F : public Cartridge
|
||||||
*/
|
*/
|
||||||
void bank(uInt16 bank);
|
void bank(uInt16 bank);
|
||||||
|
|
||||||
|
int bank();
|
||||||
|
int bankCount();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Indicates which bank is currently active for the first segment
|
// Indicates which bank is currently active for the first segment
|
||||||
uInt16 myCurrentBank;
|
uInt16 myCurrentBank;
|
||||||
|
|
|
@ -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: CartAR.cxx,v 1.7 2005-06-16 00:55:57 stephena Exp $
|
// $Id: CartAR.cxx,v 1.8 2005-06-27 12:43:48 urchlay Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
@ -218,6 +218,8 @@ void CartridgeAR::bankConfiguration(uInt8 configuration)
|
||||||
// p = ROM Power (0 = enabled, 1 = off.) Only power the ROM if you're
|
// p = ROM Power (0 = enabled, 1 = off.) Only power the ROM if you're
|
||||||
// wanting to access the ROM for multiloads. Otherwise set to 1.
|
// wanting to access the ROM for multiloads. Otherwise set to 1.
|
||||||
|
|
||||||
|
myCurrentBank = configuration & 0x1f; // remember for the bank() method
|
||||||
|
|
||||||
// Handle ROM power configuration
|
// Handle ROM power configuration
|
||||||
myPower = !(configuration & 0x01);
|
myPower = !(configuration & 0x01);
|
||||||
|
|
||||||
|
@ -288,6 +290,21 @@ void CartridgeAR::bankConfiguration(uInt8 configuration)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
void CartridgeAR::bank(uInt16 b) {
|
||||||
|
bankConfiguration(b);
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
int CartridgeAR::bank() {
|
||||||
|
return myCurrentBank;
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
int CartridgeAR::bankCount() {
|
||||||
|
return 32;
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeAR::initializeROM()
|
void CartridgeAR::initializeROM()
|
||||||
{
|
{
|
||||||
|
|
|
@ -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: CartAR.hxx,v 1.5 2005-06-16 00:55:57 stephena Exp $
|
// $Id: CartAR.hxx,v 1.6 2005-06-27 12:43:49 urchlay Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifndef CARTRIDGEAR_HXX
|
#ifndef CARTRIDGEAR_HXX
|
||||||
|
@ -37,7 +37,7 @@ class Deserializer;
|
||||||
and one bank of ROM. All 6K of the RAM can be read and written.
|
and one bank of ROM. All 6K of the RAM can be read and written.
|
||||||
|
|
||||||
@author Bradford W. Mott
|
@author Bradford W. Mott
|
||||||
@version $Id: CartAR.hxx,v 1.5 2005-06-16 00:55:57 stephena Exp $
|
@version $Id: CartAR.hxx,v 1.6 2005-06-27 12:43:49 urchlay Exp $
|
||||||
*/
|
*/
|
||||||
class CartridgeAR : public Cartridge
|
class CartridgeAR : public Cartridge
|
||||||
{
|
{
|
||||||
|
@ -115,6 +115,16 @@ class CartridgeAR : public Cartridge
|
||||||
*/
|
*/
|
||||||
virtual void poke(uInt16 address, uInt8 value);
|
virtual void poke(uInt16 address, uInt8 value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Install pages for the specified bank in the system
|
||||||
|
|
||||||
|
@param bank The bank that should be installed in the system
|
||||||
|
*/
|
||||||
|
void bank(uInt16 bank);
|
||||||
|
|
||||||
|
int bank();
|
||||||
|
int bankCount();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Handle a change to the bank configuration
|
// Handle a change to the bank configuration
|
||||||
void bankConfiguration(uInt8 configuration);
|
void bankConfiguration(uInt8 configuration);
|
||||||
|
@ -164,6 +174,8 @@ class CartridgeAR : public Cartridge
|
||||||
|
|
||||||
// Indicates if a write is pending or not
|
// Indicates if a write is pending or not
|
||||||
bool myWritePending;
|
bool myWritePending;
|
||||||
|
|
||||||
|
uInt16 myCurrentBank;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -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: CartE7.cxx,v 1.6 2005-06-16 00:55:57 stephena Exp $
|
// $Id: CartE7.cxx,v 1.7 2005-06-27 12:43:49 urchlay Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
@ -184,6 +184,16 @@ void CartridgeE7::bank(uInt16 slice)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
int CartridgeE7::bank() {
|
||||||
|
return myCurrentSlice[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
int CartridgeE7::bankCount() {
|
||||||
|
return 8;
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void CartridgeE7::bankRAM(uInt16 bank)
|
void CartridgeE7::bankRAM(uInt16 bank)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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: CartE7.hxx,v 1.4 2005-06-16 00:55:57 stephena Exp $
|
// $Id: CartE7.hxx,v 1.5 2005-06-27 12:43:49 urchlay Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifndef CARTRIDGEE7_HXX
|
#ifndef CARTRIDGEE7_HXX
|
||||||
|
@ -53,7 +53,7 @@ class Deserializer;
|
||||||
here by accessing 1FF8 to 1FFB.
|
here by accessing 1FF8 to 1FFB.
|
||||||
|
|
||||||
@author Bradford W. Mott
|
@author Bradford W. Mott
|
||||||
@version $Id: CartE7.hxx,v 1.4 2005-06-16 00:55:57 stephena Exp $
|
@version $Id: CartE7.hxx,v 1.5 2005-06-27 12:43:49 urchlay Exp $
|
||||||
*/
|
*/
|
||||||
class CartridgeE7 : public Cartridge
|
class CartridgeE7 : public Cartridge
|
||||||
{
|
{
|
||||||
|
@ -123,7 +123,6 @@ class CartridgeE7 : public Cartridge
|
||||||
*/
|
*/
|
||||||
virtual void poke(uInt16 address, uInt8 value);
|
virtual void poke(uInt16 address, uInt8 value);
|
||||||
|
|
||||||
private:
|
|
||||||
/**
|
/**
|
||||||
Map the specfied bank into the first segment
|
Map the specfied bank into the first segment
|
||||||
|
|
||||||
|
@ -131,6 +130,10 @@ class CartridgeE7 : public Cartridge
|
||||||
*/
|
*/
|
||||||
void bank(uInt16 bank);
|
void bank(uInt16 bank);
|
||||||
|
|
||||||
|
int bank();
|
||||||
|
int bankCount();
|
||||||
|
|
||||||
|
private:
|
||||||
/**
|
/**
|
||||||
Install pages for the specified 256 byte bank of RAM
|
Install pages for the specified 256 byte bank of RAM
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue