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
|
||||
- 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)
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue