Commit Graph

15 Commits

Author SHA1 Message Date
stephena ba1019a308 Updated documentation for missing commandline arguments.
Added infrastructure to System and Device classes to deal with CodeAccessBase
even when the bankswitching scheme bypasses the normal System::PageAccess
way of reading ROM space.  This allows bankswitching schemes 2E, AR, FE and
4A50 to support emulation core 'hints' for more accurate disassembly.  The
only scheme not supported now is MC, which isn't really working anyway (I've
never actually had a test ROM for this scheme).

It's getting close, folks ...


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2184 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-11-11 22:24:51 +00:00
stephena e8c91c7876 Fixed infinite loop in Distella; a section of code needed to use 32-bit
values instead of 16-bit.

Fixed compilation of System class and M6502 disassembly tracking when
compiling without debugger support.  In this case, the tracking is not
done, and all related operations are completely #ifdef'ed out (resulting
in no extra speed/memory usage at all).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2152 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-11 23:06:37 +00:00
stephena 5624d30d93 The emulation core now tracks access to DATA areas (currently, any address
used as a peek operand).  Still TODO is deal with poke areas, which would
be relevant in carts with extended RAM.

The interaction between the internal tracking and Distella is now much
tighter, in that knowledge gained by Distella is used in the core code,
and vice versa.  This allows the best of both worlds, where the internal
tracking finds stuff at runtime (that couldn't be found in a static
analysis), and Distella tracks potential paths (that haven't occurred at
runtime yet).

Added 'type' debugger prompt command, which basically queries an address
for its disassembly type (CODE/GFX/DATA, etc).

Added debugger commands to query the last address used in an operation
for various registers, but they're only stubs at the moment.

Updated the bankswitch schemes to deal with accesses in and around the
hotspot areas.  Previously, peek accesses in these areas weren't being
recorded as DATA areas.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2145 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-10 20:24:22 +00:00
stephena 5fe91e2841 Greatly improved the disassembler output, but having Stella keep track of
addresses used as part of code execution (ie, from the PC) during emulation.
This gives Distella much more information than can be determined from a
static analysis alone, resulting in an extremely accurate disassembly.
This also allows to generate very accurate debugger .cfg files.

Not all carts have been ported to this new scheme yet, particularly ones
having extended RAM that can be mapped out dynamically.

Note that this new scheme doubles the amount of RAM used for storing ROM
images, so up to 128KB extra will be used.  There's also a small runtime
check for each instruction executed.  Preliminary testing doesn't show
any slowdowns, but we'll see how it goes.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2138 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-10-03 00:23:13 +00:00
stephena 32aa9d3186 Fixed a *REALLY* annoying bug in Windows with the latest code. It seems that System::PAGE_xxx enumerations were already defined elsewhere in a Windows header file. This was very irritating to track down. As a result, they're now named System::PA_xxx (for 'PageAccess').
The file selector in Windows now ignores all items starting with '.', not just the directories '.' and '..'.  This is most apparent when using the Windows port and browing Linux shares, which shows many dot files.

git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2012 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-14 22:35:46 +00:00
stephena af8c5a5133 Added 'PageType' infrastructure to PageAccess, which basically
informs the rest of the system about how a page of address
space is to be treated (READ, WRITE, READWRITE).  This makes it
much easier to track if a read from the write port has occurred.
As such, the _rwport command should now be somewhat faster.
Eventually, the debugger/disassembler will use this info to
colorize the output.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2004 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-12 19:56:14 +00:00
stephena 2193c94b12 Updated boilerplate on top of each source file to include
'Stephen Anthony' (aka, me) in addition to Brad Mott as copyright
holders for Stella.  I think I've been with the project long
enough now (almost 10 years) to justify being specifically mentioned
above and beyond 'the Stella Team'.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2001 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-10 21:37:23 +00:00
stephena 10c82a9457 Removed 'md5instate' commandline argument (it was previously added
post-3.0), and reworked how state files are accessed.  The cart type
now determines if a state file is valid, meaning developers can use
one state file across multiple builds of their program.

Added 'runtopc' debugger command, and associated UI item in the
RomWidget area.  This steps the code until the PC matches the given
value.

Added '16in1' bankswitch scheme, which is useful for ROMs named
'128-in-1' in RomHunter database.  Also, all multicart schemes now
show the current ROM onscreen while switching between them.

Fixed bug in Serializer class when accessing files in read-only mode.
Such files would be created and set to zero size, even if only
reading was requested.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1997 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-04-09 20:13:12 +00:00
stephena 4c75e52a96 Fixed segfault that could occur on startup when a ROM triggered a read
from the write port.  Basically, the cartdebug class depended on the
console existing, but it wasn't being created until after it was required.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1979 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-29 02:21:32 +00:00
stephena 6fee79ddff Modified most of the cart classes to properly set the 'page dirty' flag
when their address space has been modified by poke.  Any writes done
inadvertently by reading from the write port are also flagged.  This flag
is used by CartDebug to determine if cart address space has changed.
For now, it uses this information to do a complete re-disassembly.
Entire bank changes are signaled by setting myBankChanged to true,
which overrides the page dirty flag and short-circuits testing for it.

Still TODO is add support for 'AR' bankswitching, and fix the patch
method for several schemes.

Added latest DPC+ updates from Spiceware and Batari.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1976 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-28 03:13:10 +00:00
stephena 8fe2d5f6c1 The System 'dirty page' code is now connected to CartDebug. It now tests
whether the range 0x1000 - 0x1FFF (aka cart space) has been modified, and
if so, it forces a re-disassembly.  Still TODO is modify all the cart
classes that manually handle poke operations to set the page as dirty
when a write actually succeeds.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1974 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-26 01:33:40 +00:00
stephena 2b384e2353 First pass at adding a 'dirty page' infrastructure to the System class.
The idea is that all direct-access pokes will set a flag indicating that
the page containing the poked address is set to be dirty.  Devices that
handle their own pokes will have to be updated to set this dirty flag too.
Overall, the point is to enable the debugger to know whether cart space
has been modified, and use that knowledge to selectively do a
re-disassembly.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1973 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-03-26 00:59:56 +00:00
stephena e234139a3c Updated Stella headers in all files:
The license file is actually named 'License.txt', not 'license'
  The 'Stella Team' has a capital T, not lowercase.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1921 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-01-10 03:23:32 +00:00
stephena d372671277 Updated copyright dates to 2010.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1920 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2010-01-10 02:58:28 +00:00
stephena 8b14e0eef8 On second thought, why do we even need M6502 files in a separate directory?
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1908 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2009-11-22 02:32:20 +00:00