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 - 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)

View File

@ -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)
{ {

View File

@ -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;

View File

@ -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()
{ {

View File

@ -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

View File

@ -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)
{ {

View File

@ -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