Commit Graph

521 Commits

Author SHA1 Message Date
urchlay 2afcf0cd4f DebuggerParser::parseArg now properly formats its string result, depending
on the current default base.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@530 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-19 08:37:29 +00:00
urchlay b5b07d41ed Reworked argument processor. Now it can be called as a public method from
another class. Also added decimal support, plus default base support. As
a side benefit, there's much better syntax checking.

Also you can now do a word-pointer dereference with "@address". This
works just like "*address" except that it returns a 16-bit value.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@529 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-19 08:29:40 +00:00
urchlay cb6232cc25 Implemented prefix operators < and > (low byte and high byte) in CLI.
They work just like the ones in DASM: "<1234" is "34" and ">1234" is "12".
They can of course be used with labels, and they can be prefixed with "*"
for dereference.

Implemented binary input in CLI. Like DASM: prefix with "%" to treat
your argument as binary. "%10101010" means hex "ff". Can be stacked with
other prefixes.

Stacking order of prefixes is important. "*" must come first, if present.
Then ">" or "<" if present (but not both!). Then "%" if present. Currently
there's no real error checking for this.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@528 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-18 19:00:44 +00:00
urchlay 5378b2c971 Added register names to argument processing. This means you can set e.g.
location 80 to the contents of the X register by saying "ram 80 x". This
also means that there's a small conflict: if you're inputting the value
0x0a (decimal 10), you need to either say "0a" or "A". Otherwise the
parser thinks you're talking about the "a" register instead of the hex
number "a".

Added dereference operator to arg processing. This works the same way as
in C: you prefix a "*" to an argument. So "80" means a literal hex 80,
as before, but you can say "*80" to mean "the memory location pointed to
by location 80"... this also works with the registers. Example: if the X
register holds the value ff, you can say "*x" and it will be treated as
the value ff. Unlike C, multiple levels of dereference are not supported.
Also, the result of a dereference is always a byte for now.

Added "eval" command to debugger prompt. This evaluates one or more
arguments (which may hex values or a labels, and may have a * in front)
and prints the results in hex, binary, and decimal, along with the label
that has that value, if any.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@527 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-18 17:28:18 +00:00
urchlay a92a6b0ab8 Implemented missing "clearbreaks" command in prompt. This command nulls
out the M6502's breakPoints, so any speed decrease caused by breakpoint
checking logic should go away after breakpoints are cleared.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@526 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-18 15:45:05 +00:00
stephena 17d72c8d12 Updated debugger.txt with info on cheat system. This document will
eventually become part of the main HTML manual.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@525 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-18 13:45:34 +00:00
urchlay e681c06799 Added "frame" command to the prompt, identical to the Frame+1 button.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@524 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-18 07:12:53 +00:00
urchlay 999f4b52b6 Initial documentation for the debugger. Also changed negate button label
in RAM tab from "~" to "Neg". ~ is the invert/complement operator in C,
not negation. I thought about using a minus sign, but it's visually too
similar to the -- for decrement...


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@523 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-18 06:59:43 +00:00
stephena fc6401eb2f Updates for the VC++ project file. Fullscreen OpenGL support in Win32
is currently somewhat broken, and I'm thinking this may be related to the
mysterious OpenGL Linux problems as well.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@522 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-18 00:51:15 +00:00
urchlay eaa8fa898b Implemented "disassemble" command in prompt, in case you want to see more
code than the current line.

On ROM load, we replace the file extension with .sym and attempt to load
that as a symbol file for the debugger. No harm is done if the file is
missing.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@521 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-17 21:59:54 +00:00
stephena 09bb356f52 Added zero, invert, negate, increment, decrement, shift left and shift right
buttons to the RamWidget.  They operate on the currently selected memory
location.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@520 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-17 21:46:24 +00:00
stephena 53fb6d00d4 Fixed problem with changing RAM locations and input longer than 2 hex digits.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@519 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-17 18:17:15 +00:00
stephena f58a258b94 Added 'Frame Advance' and 'Exit' buttons to the DebuggerDialog. Advancing
the frame by 1 can be very useful, in that you can change a memory location,
do a frame advance, and then see any results graphically.

Eventually the trace and step will work the same way, and show changes
to the scanline as it's being drawn.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@518 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-17 17:34:01 +00:00
stephena 07ea0bbae1 Re-added (center) commandline argument, which was in a previous version
of Stella.  It defaults to true/on, so if you don't want centering, use
'-center false' on the commandline at least once (or edit the config file).

Some more work on the RamWidget and ByteGridWidget.  Entering values in hex
now works correctly, and 128 byte RAM area is now updated.

More work on the automatic updating of the tabs.  Tabs are now updated when
debugging mode is entered, or when a new tab is selected.

Shortened the width of the debugging tab area and added an area for commonly
use actions/buttons on the right.  Currently it contains 'Step' and 'Trace'
buttons.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@517 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-17 14:42:49 +00:00
urchlay 379aa0c3ed Major surgery on the breakpoint support. It all seems to work correctly
now: set/clear a breakpoint, clear all breakpoints, list breakpoints
(including labels in the output!). The 6502 no longer gets "stuck" on a
breakpoint if you quit the debugger while the current PC is a breakpoint.

Some work on the prompt console. The CPU state information shouldn't be
stale any more.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@516 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-17 03:49:10 +00:00
stephena f1617b1db8 Further work on the RamWidget. It now shows row labels in hex, but I
may not be able to add column labels because we need the vertical space
for buttons.  Also, the ByteGrid is now drawn correctly.

Added initial infrastructure for a tab to reload itself, either on command
or when a new tab is selected.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@515 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-16 22:18:02 +00:00
stephena 028f95768d First pass at the RAM input widget.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@514 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-16 18:40:17 +00:00
urchlay ee8e3fcd0c Got rid of SDL window-centering option, so the $#@#^ window will stay put
when switching between debugger and emulator mode.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@513 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-16 16:36:49 +00:00
stephena 05d67232a6 Only start/exit the debugger when necessary (don't start it when it's
already going, and don't stop when it isn't).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@512 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-16 16:26:27 +00:00
urchlay 33155b9138 The processor state + disassembly now appears as part of the prompt,
rather than the result of each command. This makes breakpoints a little
nicer (you see the state as soon as you hit the breakpoint).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@511 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-16 16:18:57 +00:00
stephena 9473ca0dd5 Added support for informing the M6502 of the debugger, so it can call it
directly.

Updated M6502 classes to call Debugger::start when a breakpoint is hit.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@510 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-16 12:28:54 +00:00
urchlay c693074377 Partial breakpoint support: the "break" command in the console sets &
clears breakpoints, and the 6502 core emits a "hit breakpoint" message
to standard error when it sees a breakpoint. Still TODO is to figure out
how to enter the debugger from within the 6502 core! (Stephen?)


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@509 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-16 02:16:26 +00:00
stephena 008c49e507 More copyright fixes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@508 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-16 01:11:29 +00:00
stephena 7d9fc41053 Updated the copyright notice on all files.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@507 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-16 00:56:00 +00:00
stephena f42399092d Added border around active widget. Currently it's drawn in an ugly red
color; this will have to change.  This makes it much easier to navigate
with the keyboard, since it's now easy to see which widget you've tabbed to.

Added some copyright stuff to the debugger classes.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@506 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-16 00:20:12 +00:00
urchlay bbd77f6a51 Cleaned up equateList stuff. Now there's only one instance, in the
Debugger, which gets used by both DebuggerParser and D6502, but
neither one keeps a pointer to it permanently.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@505 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-15 23:45:04 +00:00
stephena 1b332ef8f0 The CheatWidget seems complete; RAM contents can now be changed.
Still TODO is somehow draw around the currently active widget,
to show which widget is actually active.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@504 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-15 21:18:47 +00:00
urchlay c00de2813c De-uglified the symbol loading somewhat. It still isn't working 100%.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@503 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-15 20:41:09 +00:00
stephena d6d73fff6f Added widget to Cheats area for changing memory. It's not quite working
correctly yet, but we're close.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@502 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-15 18:45:28 +00:00
stephena 34c7e84d45 Allowed strings starting with numbers to be selected.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@501 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-15 15:48:09 +00:00
stephena a402ecad41 Removed stale StellaX frontend code. Stella now has an internal GUI/launcher,
so this code has been officially abandoned.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@500 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-15 15:38:19 +00:00
stephena eb792b159a Updated ListWidget to extend EditableWidget class (new code from ScummVM
CVS).  This means you can now edit the contents of a ListWidget, and
do something with those new contents based on the signal that's emitted.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@499 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-15 15:34:35 +00:00
urchlay ab9e047d49 Implemented symbol file loading. There are still some rough edges, but
it does work.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@498 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-15 04:30:35 +00:00
stephena 3af4b74147 Added much more functionality to the CheatWidget. Currently, everything
is working except for changing values (but you can still use the RAM tab
to do that).

Basically, the rules are as follows:

1)  Only works on decimal input for now.
2)  Search with empty input returns all addresses (128 bytes).
3)  Comparing a value after a search inspects the current result set
    for the given value.
4)  Compare can make use of 'comparitive' operators '+' and '-'.  If
    specified at the start of input, they search by offset.

Typical uses are as follows:

1)  Search for a '3', then compare to a '2'.  This finds the memory location
that at first contained 3, then later changed to 2 (maybe you lost a life or
something).

2)  Search for all values (leave input blank), then compare to '-1'.  This
finds all memory locations that have decreased by 1 (useful when you don't
know where to start).

I guess after this, Stella will officially be banned from hi-score contests :)


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@497 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-14 18:55:36 +00:00
stephena bf16e9a6f9 Added 'Exit Menu' button to the Options Menu. You can still exit by using
the 'Tab' key, though.

Fixed Unicode issues whereby modifier keys couldn't be used as gaming keys.

Made the 'Left Control' key be one of the defaults for 'Player 1 Fire'.  The
other two are 'Joystick 0, button 0' and 'Space' key.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@496 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-14 12:18:37 +00:00
urchlay cdb61cddb0 DebuggerParser now supports labels in input. Labels are treated
case-insensitively!

We look for labels *first*, so if there were a label "aa", it'd
be impossible to input the hex value "aa" (the label would take
precedence). This doesn't matter for now, since the labels are hard-coded
and none of them conflict with anything, but in the future we'll be
loading symbol files... even then, I don't think anyone's dumb enough
to create a label that looks like a hex value, but it could happen...


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@495 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-14 03:11:03 +00:00
urchlay 5e911f1453 Disassembly now shows symbolic names from VCS.H
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@494 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-14 01:55:52 +00:00
stephena 780422bd42 More GUI infrastructure changes. I'm hoping to have the CheatWidget
complete by tomorrow evening.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@493 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-14 01:11:48 +00:00
urchlay 15ae1043e9 Disassembly display in Debugger.state() now shows machine code bytes.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@492 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-14 00:58:39 +00:00
urchlay c866f7962e Add Cycles display to the debugger state. For now this is just the
number of cycles since the ROM was loaded.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@491 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-13 19:04:54 +00:00
urchlay 59f61c7926 Forgot to remove DebuggerCommand.* in last commit, whoops
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@490 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-13 17:24:42 +00:00
urchlay 382d2fd045 Removed stale DCmd* files from src/debugger
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@489 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-13 17:10:43 +00:00
urchlay 89bf4d1da6 D6502::disassemble() now includes cycle count in its output. This isn't
perfect: it doesn't take into account the extra cycles added by things
like taking a branch or crossing a page boundary. However, it's still
somewhat useful and *dead* simple to implement this way.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@488 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-13 13:35:09 +00:00
urchlay 536b65f4bc Implemented quite a few debugger commands, plus machinery within
Debugger class to support them.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@487 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-13 02:47:44 +00:00
stephena 58ef675a78 Added beginning of CheatWidget, which will be used for searching a memory
location for a certain value (ie, finding out which location holds # of lives).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@486 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-12 20:12:10 +00:00
stephena fd82d749ec Oops, forgot to include the makefile.
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@485 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-12 18:18:42 +00:00
stephena 330ca1bd7c Slightly reworked the debugger commandline handling. Commands are now
contained in the Debugger class methods, since they need to be accessible
from both the console and the GUI code.

Implemented console commands for dumping RAM (ram) and TIA (tia), and
implemented the console 'quit' command (it returns to emulation mode).


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@484 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-12 18:18:01 +00:00
urchlay 47b471bc1a Finally, the console does something!
The "trace" command is now implemented (though it doesn't skip over
JSR's like it's supposed to yet, so it does what "step" will do).

After each command, we now emit the values of all the CPU regs and a
disassembly of the next instruction, like gdb and good old DEBUG.COM do.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@483 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-11 20:02:25 +00:00
stephena 3bc9a165bc Updates so that Stella can compile in Visual Studio .Net
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@482 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-11 17:02:26 +00:00
markgrebe 8bf842f319 Added missing semicolon in Mac specific code
git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@481 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
2005-06-11 01:52:49 +00:00