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:
urchlay 2005-06-27 12:43:49 +00:00
parent 8ad0d445c3
commit dfdc9de1a9
7 changed files with 81 additions and 22 deletions

View File

@ -19,7 +19,7 @@ What the debugger can do:
- Built-in VCS.H symbols, if no symbol file is loaded
- Symbolic names in disassembly
- 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.
Input in hex, with displays for label/decimal/binary for
currently-selected location.
@ -31,6 +31,7 @@ What the debugger can do:
- Save CLI session to a text file.
- Supports hex, decimal, and binary input and output almost everywhere.
(disassembly is still hex)
- (partial) Support for bank switching. Only F8 cart type works for now.
Planned features for Stella 2.0 release:
- 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)
- Scanline advance (like frame advance, break at beginning
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):
- 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
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
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
While entering a label, you can type a partial label name and press
the Tab key to attempt to auto-complete the label. If you've ever
used "bash", this will be immediately familiar. If not, try it: load
up a ROM, go to the debugger, type "print w" (but don't press Enter),
While entering a command or label, you can type a partial name and
press the Tab key to attempt to auto-complete it. If you've ever used
"bash", this will be immediately familiar. If not, try it: load up
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
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,
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,
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
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
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)

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// 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>
@ -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)
{

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// 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
@ -37,7 +37,7 @@ class Deserializer;
only used 8K this bankswitching scheme supports up to 512K.
@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
{
@ -108,7 +108,6 @@ class Cartridge3F : public Cartridge
*/
virtual void poke(uInt16 address, uInt8 value);
private:
/**
Map the specified bank into the first segment
@ -116,6 +115,9 @@ class Cartridge3F : public Cartridge
*/
void bank(uInt16 bank);
int bank();
int bankCount();
private:
// Indicates which bank is currently active for the first segment
uInt16 myCurrentBank;

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// 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>
@ -218,6 +218,8 @@ void CartridgeAR::bankConfiguration(uInt8 configuration)
// 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.
myCurrentBank = configuration & 0x1f; // remember for the bank() method
// Handle ROM power configuration
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()
{

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// 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
@ -37,7 +37,7 @@ class Deserializer;
and one bank of ROM. All 6K of the RAM can be read and written.
@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
{
@ -115,6 +115,16 @@ class CartridgeAR : public Cartridge
*/
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:
// Handle a change to the bank configuration
void bankConfiguration(uInt8 configuration);
@ -164,6 +174,8 @@ class CartridgeAR : public Cartridge
// Indicates if a write is pending or not
bool myWritePending;
uInt16 myCurrentBank;
};
#endif

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// 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>
@ -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)
{

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of
// 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
@ -53,7 +53,7 @@ class Deserializer;
here by accessing 1FF8 to 1FFB.
@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
{
@ -123,7 +123,6 @@ class CartridgeE7 : public Cartridge
*/
virtual void poke(uInt16 address, uInt8 value);
private:
/**
Map the specfied bank into the first segment
@ -131,6 +130,10 @@ class CartridgeE7 : public Cartridge
*/
void bank(uInt16 bank);
int bank();
int bankCount();
private:
/**
Install pages for the specified 256 byte bank of RAM