MESS v.0.123 Debugger Help -------------------------- Notes from Richard Degler (March 2, 2008, Message #5387): MESS debugger's command-line errors only tell you "unknown command" or "not enough parameters for command". And the on-line help is not much better if you don't know what you need help with. It's like looking up the spelling of a word in the dictionary when you don't even know the word exists in the first place! So here's the help text ripped from MESS v.0.123(debugger)'s messdlib.dll file. Giving it the once over will let you know what it can do better than just seeing "MAME new debugger, etc" Although the next line: "Currently targeting astrocade (Bally Professional Arcade)" sort of lets you know it's doing Z-80 disassembling. The text was unchanged except for some NULLs separating the sections (those have been replaced by ***'s) and ignore where it says MAME debugger, obviously a typo!! [One other change was made. Line breaks were added after 79 characters.] Help file start here: --------------------- MAME Debugger Help help [] -- get help on a particular topic Topics: General Memory Execution Breakpoints Watchpoints Expressions Comments *** help general *** General Debugger Help Type help for further details on each command help [] -- get help on a particular topic do -- evaluates the given expression symlist [] -- lists registered symbols softreset -- executes a soft reset hardreset -- executes a hard reset print [,...] -- prints one or more s to the console printf [,[,...]] -- prints one or more s to the console using logerror [,[,...]] -- outputs one or more s to the error.log tracelog [,[,...]] -- outputs one or more s to the trace file using snap [] -- save a screen snapshot source -- reads commands from and executes them one by one quit -- exits MAME and the debugger *** help memory *** Memory Commands Type help for further details on each command dasm ,
,[,[,]] -- disassemble to the given file f[ind]
,[,[,...]] -- search program memory for data f[ind]d
,[,[,...]] -- search data memory for data f[ind]i
,[,[,...]] -- search I/O memory for data dump ,
,[,[,[,]]] -- dump program memory as text dumpd ,
,[,[,[,]]] -- dump data memory as text dumpi ,
,[,[,[,]]] -- dump I/O memory as text save ,
,[,] -- save binary program memory to the given file saved ,
,[,] -- save binary data memory to the given file savei ,
,[,] -- save binary I/O memory to the given file map
-- map logical program address to physical address and bank mapd
-- map logical data address to physical address and bank mapi
-- map logical I/O address to physical address and bank memdump [] -- dump the current memory map to *** help execution *** Execution Commands Type help for further details on each command s[tep] [=1] -- single steps for instructions (F12) o[ver] [=1] -- single steps over instructions (F11) out -- single steps until the current subroutine/exception handler is exited (Shift-F11) g[o] [
] -- resumes execution, sets temp breakpoint at
(F5) gi[nt] [] -- resumes execution, setting temp breakpoint if is taken (F7) gt[ime] -- resumes execution until the given delay has elapsed gv[blank] -- resumes execution, setting temp breakpoint on the next VBLANK (F8) n[ext] -- executes until the next CPU switch (F6) focus -- focuses debugger only on ignore [[,[,...]]] -- stops debugging on observe [[,[,...]]] -- resumes debugging on trace {|OFF}[,[,]] -- trace the given CPU to a file (defaults to active CPU) traceover {|OFF}[,[,]] -- trace the given CPU to a file, but skip subroutines (defaults to active CPU) traceflush -- flushes all open trace files *** help breakpoints *** Breakpoint Commands Type help for further details on each command bp[set]
[,[,]] -- sets breakpoint at
bpclear [] -- clears a given breakpoint or all if no specified bpdisable [] -- disables a given breakpoint or all if no specified bpenable [] -- enables a given breakpoint or all if no specified bplist -- lists all the breakpoints *** help watchpoints *** Watchpoint Commands Type help for further details on each command wp[set]
,,[,[,]] -- sets program space watchpoint wpd[set]
,,[,[,]] -- sets data space watchpoint wpi[set]
,,[,[,]] -- sets I/O space watchpoint wpclear [] -- clears a given watchpoint or all if no specified wpdisable [] -- disables a given watchpoint or all if no specified wpenable [] -- enables a given watchpoint or all if no specified wplist -- lists all the watchpoints hotspot [,[[,]]] -- attempt to find hotspots *** help expressions *** Expressions can be used anywhere a numeric parameter is expected. The syntax for expressions is very close to standard C-style syntax with full operator ordering and parentheses. There are a few operators missing (notably the trinary ? : operator), and a few new ones (memory accessors). The table below lists all the operators in their order, highest precedence operators first. ( ) : standard parentheses ++ -- : postfix increment/decrement ++ -- ~ ! - + b@ w@ d@ q@ : prefix inc/dec, binary NOT, logical NOT, unary +/-, memory access * / % : multiply, divide, modulus + - : add, subtract << >> : shift left/right < <= > >= : less than, less than or equal, greater than, greater than or equal == != : equal, not equal & : binary AND ^ : binary XOR | : binary OR && : logical AND || : logical OR = *= /= %= += -= <<= >>= &= |= ^= : assignment , : separate terms, function parameters These are the differences from C behaviors. First, All math is performed on full 64-bit unsigned values, so things like a < 0 won't work as expected. Second, the logical operators && and || do not have short-circuit properties -- both halves are always evaluated. Finally, the new memory operators work like this: b@ refers to the byte read from . Similarly, w@ refers to a word in memory, d@ refers to a dword in memory, and q@ refers to a qword in memory. The memory operators can be used as both lvalues and rvalues, so you can write b@100 = ff to store a byte in memory. By default these operators read from the program memory space, but you can override that by prefixing them with a 'd' or an 'i'. So dw@300 refers to data memory word at address 300 and id@400 refers to an I/O memory dword at address 400. *** help comments *** Code annotation commands Type help for further details on each command comadd[//]
, -- adds a comment to the disassembled code at given address comdelete
-- removes a comment from the given address comsave -- save the current comments to a file *** help do *** do The do command simply evaluates the given . This is typically used to set or modify variables. Examples: do pc = 0 Sets the register 'pc' to 0. *** help symlist *** symlist [] Lists registered symbols. If is not specified, then symbols in the global symbol table are displayed; otherwise, the symbols for 's specific CPU are displayed. Symbols are listed alphabetically. Read-only symbols are flagged with an asterisk. Examples: symlist Displays the global symbol table. symlist 2 Displays the symbols specific to CPU #2. *** help softreset *** softreset Executes a soft reset. Examples: softreset Executes a soft reset. *** help hardreset *** hardreset Executes a hard reset. Examples: hardreset Executes a hard reset. *** help print *** print [,...] The print command prints the results of one or more expressions to the debugger console as hexadecimal values. Examples: print pc Prints the value of 'pc' to the console as a hex number. print a,b,a+b Prints a, b, and the value of a+b to the console as hex numbers. *** help printf *** printf [,[,...]] The printf command performs a C-style printf to the debugger console. Only a very limited set of formatting options are available: %[0][]d -- prints as a decimal value with optional digit count and zero-fill %[0][]x -- prints as a hexadecimal value with optional digit count and zero-fill All remaining formatting options are ignored. Use %% together to output a % character. Multiple lines can be printed by embedding a \n in the text. Examples: printf "PC=%04X",pc Prints PC= where is displayed in hexadecimal with 4 digits with zero-fill. printf "A=%d, B=%d\nC=%d",a,b,a+b Prints A=, B= on one line, and C= on a second line. *** help logerror *** logerror [,[,...]] The logerror command performs a C-style printf to the error log. Only a very limited set of formatting options are available: %[0][]d -- logs as a decimal value with optional digit count and zero-fill %[0][]x -- logs as a hexadecimal value with optional digit count and zero-fill All remaining formatting options are ignored. Use %% together to output a % character. Multiple lines can be printed by embedding a \n in the text. Examples: logerror "PC=%04X",pc Logs PC= where is displayed in hexadecimal with 4 digits with zero-fill. logerror "A=%d, B=%d\nC=%d",a,b,a+b Logs A=, B= on one line, and C= on a second line. *** help tracelog *** tracelog [,[,...]] The tracelog command performs a C-style printf and routes the output to the currently open trace file (see the 'trace' command for details). If no file is currently open, tracelog does nothing. Only a very limited set of formatting options are available. See the 'printf' help for details. Examples: tracelog "PC=%04X",pc Outputs PC= where is displayed in hexadecimal with 4 digits with zero-fill. printf "A=%d, B=%d\nC=%d",a,b,a+b Outputs A=, B= on one line, and C= on a second line. *** help snap *** snap [[], ] The snap command takes a snapshot of the current video display and saves it to the configured snapshot directory. If is specified explicitly, a single screenshot for is saved under the requested filename. If is omitted, all screens are saved using the same default rules as the "save snapshot" key in MAME proper. Examples: snap Takes a snapshot of the current video screen and saves to the next non- conflicting filename in the configured snapshot directory. snap shinobi Takes a snapshot of the current video screen and saves it as 'shinobi.png' in the configured snapshot directory. *** help source *** source The source command reads in a set of debugger commands from a file and executes them one by one, similar to a batch file. Examples: source break_and_trace.cmd Reads in debugger commands from break_and_trace.cmd and executes them. *** help quit *** quit The quit command exits MAME immediately. *** help dasm *** dasm ,
,[,[,]] The dasm command disassembles program memory to the file specified in the parameter.
indicates the address of the start of disassembly, and indicates how much memory to disassemble. The range
through
+-1 inclusive will be output to the file. By default, the raw opcode data is output with each line. The optional parameter can be used to enable (1) or disable(0) this feature. Finally, you can disassemble code from another CPU by specifying the parameter. Examples: dasm venture.asm,0,10000 Disassembles addresses 0-ffff in the current CPU, including raw opcode data, to the file 'venture.asm'. dasm harddriv.asm,3000,1000,0,2 Disassembles addresses 3000-3fff from CPU #2, with no raw opcode data, to the file 'harddriv.asm'. *** help find *** f[ind][{d|i}]
,[,[,...]] The find/findd/findi commands search through memory for the specified sequence of data. 'find' will search program space memory, while 'findd' will search data space memory and 'findi' will search I/O space memory.
indicates the address to begin searching, and indicates how much memory to search. can either be a quoted string or a numeric value or expression or the wildcard character '?'. Strings by default imply a byte-sized search; non-string data is searched by default in the native word size of the CPU. To override the search size for non-strings, you can prefix the value with b. to force byte- sized search, w. for word-sized search, d. for dword-sized, and q. for qword-sized. Overrides are remembered, so if you want to search for a series of words, you need only to prefix the first value with a w. Note also that you can intermix sizes in order to perform more complex searches. The entire range
through
+-1 inclusive will be searched for the sequence, and all occurrences will be displayed. Examples: find 0,10000,"HIGH SCORE",0 Searches the address range 0-ffff in the current CPU for the string "HIGH SCORE" followed by a 0 byte. findd 3000,1000,w.abcd,4567 Searches the data memory address range 3000-3fff for the word-sized value abcd followed by the word-sized value 4567. find 0,8000,"AAR",d.0,"BEN",w.0 Searches the address range 0000-7fff for the string "AAR" followed by a dword-sized 0 followed by the string "BEN", followed by a word-sized 0. *** help dump *** dump[{d|i}] ,
,[,[,[,]]] The dump/dumpd/dumpi commands dump memory to the text file specified in the parameter. 'dump' will dump program space memory, while 'dumpd' will dump data space memory and 'dumpi' will dump I/O space memory.
indicates the address of the start of dumping, and indicates how much memory to dump. The range
through
+-1 inclusive will be output to the file. By default, the data will be output in byte format, unless the underlying address space is word/dword/qword-only. You can override this by specifying the parameter, which can be used to group the data in 1, 2, 4 or 8-byte chunks. The optional parameter can be used to enable (1) or disable (0) the output of ASCII characters to the right of each line; by default, this is enabled. Finally, you can dump memory from another CPU by specifying the parameter. Examples: dump venture.dmp,0,10000 Dumps addresses 0-ffff in the current CPU in 1-byte chunks, including ASCII data, to the file 'venture.dmp'. dumpd harddriv.dmp,3000,1000,4,0,3 Dumps data memory addresses 3000-3fff from CPU #3 in 4-byte chunks, with no ASCII data, to the file 'harddriv.dmp'. *** help save *** save[{d|i}] ,
,[,] The save/saved/savei commands save raw memory to the binary file specified in the parameter. 'save' will save program space memory, while 'saved' will save data space memory and 'savei' will save I/O space memory.
indicates the address of the start of saving, and indicates how much memory to save. The range
through
+-1 inclusive will be output to the file. You can also save memory from another CPU by specifying the parameter. Examples: save venture.bin,0,10000 Saves addresses 0-ffff in the current CPU to the binary file 'venture.bin'. saved harddriv.bin,3000,1000,3 Saves data memory addresses 3000-3fff from CPU #3 to the binary file 'harddriv.bin'. *** help step *** s[tep] [=1] The step command single steps one or more instructions in the currently executing CPU. By default, step executes one instruction each time it is issued. You can also tell step to step multiple instructions by including the optional parameter. Examples: s Steps forward one instruction on the current CPU. step 4 Steps forward four instructions on the current CPU. *** help over *** o[ver] [=1] The over command single steps "over" one or more instructions in the currently executing CPU, stepping over subroutine calls and exception handler traps and counting them as a single instruction. Note that when stepping over a subroutine call, code may execute on other CPUs before the subroutine call completes. By default, over executes one instruction each time it is issued. You can also tell step to step multiple instructions by including the optional parameter. Note that the step over functionality may not be implemented on all CPU types. If it is not implemented, then 'over' will behave exactly like 'step'. Examples: o Steps forward over one instruction on the current CPU. over 4 Steps forward over four instructions on the current CPU. *** help out *** out The out command single steps until it encounters a return from subroutine or return from exception instruction. Note that because it detects return from exception conditions, if you attempt to step out of a subroutine and an interrupt/exception occurs before you hit the end, then you may stop prematurely at the end of the exception handler. Note that the step out functionality may not be implemented on all CPU types. If it is not implemented, then 'out' will behave exactly like 'step'. Examples: out Steps until the current subroutine or exception handler returns. *** help go *** g[o] [
] The go command resumes execution of the current code. Control will not be returned to the debugger until a breakpoint or watchpoint is hit, or until you manually break in using the assigned key. The go command takes an optional
parameter which is a temporary unconditional breakpoint that is set before executing, and automatically removed when hit. Examples: g Resume execution until the next break/watchpoint or until a manual break. g 1234 Resume execution, stopping at address 1234 unless something else stops us first. *** help gvblank *** gv[blank] The gvblank command resumes execution of the current code. Control will not be returned to the debugger until a breakpoint or watchpoint is hit, or until the next VBLANK occurs in the emulator. Examples: gv Resume execution until the next break/watchpoint or until the next VBLANK. *** help gint *** gi[nt] [] The gint command resumes execution of the current code. Control will not be returned to the debugger until a breakpoint or watchpoint is hit, or until an IRQ is asserted and acknowledged on the current CPU. You can specify if you wish to stop execution only on a particular IRQ line being asserted and acknowledged. If is omitted, then any IRQ line will stop execution. Examples: gi Resume execution until the next break/watchpoint or until any IRQ is asserted and acknowledged on the current CPU. gint 4 Resume execution until the next break/watchpoint or until IRQ line 4 is asserted and acknowledged on the current CPU. *** help gtime *** gt[ime] The gtime command resumes execution of the current code. Control will not be returned to the debugger until a specified delay has elapsed. The delay is in milliseconds. Example: gtime #10000 Resume execution for ten seconds *** help next *** n[ext] The next command resumes execution and continues executing until the next time a different CPU is scheduled. Note that if you have used 'ignore' to ignore certain CPUs, you will not stop until a non-'ignore'd CPU is scheduled. *** help focus *** focus Sets the debugger focus exclusively to the given . This is equivalent to specifying 'ignore' on all other CPUs. Examples: focus 1 Focus exclusively CPU #1 while ignoring all other CPUs when using the debugger. *** help ignore *** ignore [[,[,...]]] Ignores the specified in the debugger. This means that you won't ever see execution on that CPU, nor will you be able to set breakpoints on that CPU. To undo this change use the 'observe' command. You can specify multiple s in a single command. Note also that you are not permitted to ignore all CPUs; at least one must be active at all times. Examples: ignore 1 Ignore CPU #1 when using the debugger. ignore 2,3,4 Ignore CPU #2, #3 and #4 when using the debugger. ignore List the CPUs that are currently ignored. *** help observe *** observe [[,[,...]]] Re-enables interaction with the specified in the debugger. This command undoes the effects of the 'ignore' command. You can specify multiple s in a single command. Examples: observe 1 Stop ignoring CPU #1 when using the debugger. observe 2,3,4 Stop ignoring CPU #2, #3 and #4 when using the debugger. observe List the CPUs that are currently observed. *** help trace *** trace {|OFF}[,[,]] Starts or stops tracing of the execution of the specified . If is omitted, the currently active CPU is specified. When enabling tracing, specify the filename in the parameter. To disable tracing, substitute the keyword 'off' for . If you wish to log additional information on each trace, you can append an parameter which is a command that is executed before each trace is logged. Generally, this is used to include a 'tracelog' command. Note that you may need to embed the action within braces { } in order to prevent commas and semicolons from being interpreted as applying to the trace command itself. Examples: trace dribling.tr,0 Begin tracing the execution of CPU #0, logging output to dribling.tr. trace joust.tr Begin tracing the currently active CPU, logging output to joust.tr. trace >>pigskin.tr Begin tracing the currently active CPU, appending log output to pigskin.tr. trace off,0 Turn off tracing on CPU #0. trace asteroid.tr,0,{tracelog "A=%02X ",a} Begin tracing the execution of CPU #0, logging output to asteroid.tr. Before each line, output A= to the tracelog. *** help traceover *** traceover {|OFF}[,[,]] Starts or stops tracing of the execution of the specified . When tracing reaches a subroutine or call, tracing will skip over the subroutine. The same algorithm is used as is used in the step over command. This means that traceover will not work properly when calls are recusive or the return address is not immediately following the call instruction. If is omitted, the currently active CPU is specified. When enabling tracing, specify the filename in the parameter. To disable tracing, substitute the keyword 'off' for . If you wish to log additional information on each trace, you can append an parameter which is a command that is executed before each trace is logged. Generally, this is used to include a 'tracelog' command. Note that you may need to embed the action within braces { } in order to prevent commas and semicolons from being interpreted as applying to the trace command itself. Examples: traceover dribling.tr,0 Begin tracing the execution of CPU #0, logging output to dribling.tr. traceover joust.tr Begin tracing the currently active CPU, logging output to joust.tr. traceover off,0 Turn off tracing on CPU #0. traceover asteroid.tr,0,{tracelog "A=%02X ",a} Begin tracing the execution of CPU #0, logging output to asteroid.tr. Before each line, output A= to the tracelog. *** help traceflush *** traceflush Flushes all open trace files. *** help bpset *** bp[set]
[,[,]] Sets a new execution breakpoint at the specified
. The optional parameter lets you specify an expression that will be evaluated each time the breakpoint is hit. If the result of the expression is true (non- zero), the breakpoint will actually halt execution; otherwise, execution will continue with no notification. The optional parameter provides a command that is executed whenever the breakpoint is hit and the is true. Note that you may need to embed the action within braces { } in order to prevent commas and semicolons from being interpreted as applying to the bpset command itself. Each breakpoint that is set is assigned an index which can be used in other breakpoint commands to reference this breakpoint. Examples: bp 1234 Set a breakpoint that will halt execution whenever the PC is equal to 1234. bp 23456,a0 == 0 && a1 == 0 Set a breakpoint that will halt execution whenever the PC is equal to 23456 AND the expression (a0 == 0 && a1 == 0) is true. bp 3456,1,{printf "A0=%08X\n",a0; g} Set a breakpoint that will halt execution whenever the PC is equal to 3456. When this happens, print A0= and continue executing. bp 45678,a0==100,{a0 = ff; g} Set a breakpoint that will halt execution whenever the PC is equal to 45678 AND the expression (a0 == 100) is true. When that happens, set a0 to ff and resume execution. temp0 = 0; bp 567890,++temp0 >= 10 Set a breakpoint that will halt execution whenever the PC is equal to 567890 AND the expression (++temp0 >= 10) is true. This effectively breaks only after the breakpoint has been hit 16 times. *** help bpclear *** bpclear [] The bpclear command clears a breakpoint. If is specified, only the requested breakpoint is cleared, otherwise all breakpoints are cleared. Examples: bpclear 3 Clear breakpoint index 3. bpclear Clear all breakpoints. *** help bpdisable *** bpdisable [] The bpdisable command disables a breakpoint. If is specified, only the requested breakpoint is disabled, otherwise all breakpoints are disabled. Note that disabling a breakpoint does not delete it, it just temporarily marks the breakpoint as inactive. Examples: bpdisable 3 Disable breakpoint index 3. bpdisable Disable all breakpoints. *** help bpenable *** bpenable [] The bpenable command enables a breakpoint. If is specified, only the requested breakpoint is enabled, otherwise all breakpoints are enabled. Examples: bpenable 3 Enable breakpoint index 3. bpenable Enable all breakpoints. *** help bplist *** bplist The bplist command lists all the current breakpoints, along with their index and any conditions or actions attached to them. *** help wpset *** wp[{d|i}][set]
,,[,[,]] Sets a new watchpoint starting at the specified
and extending for . The inclusive range of the watchpoint is
through
+ - 1. The 'wpset' command sets a watchpoint on program memory; the 'wpdset' command sets a watchpoint on data memory; and the 'wpiset' sets a watchpoint on I/O memory. The parameter specifies which sort of accesses to trap on. It can be one of three values: 'r' for a read watchpoint 'w' for a write watchpoint, and 'rw' for a read/write watchpoint. The optional parameter lets you specify an expression that will be evaluated each time the watchpoint is hit. If the result of the expression is true (non-zero), the watchpoint will actually halt execution; otherwise, execution will continue with no notification. The optional parameter provides a command that is executed whenever the watchpoint is hit and the is true. Note that you may need to embed the action within braces { } in order to prevent commas and semicolons from being interpreted as applying to the wpset command itself. Each watchpoint that is set is assigned an index which can be used in other watchpoint commands to reference this watchpoint. In order to help expressions, two variables are available. For all watchpoints, the variable 'wpaddr' is set to the address that actually triggered the watchpoint. For write watchpoints, the variable 'wpdata' is set to the data that is being written. Examples: wp 1234,6,rw Set a watchpoint that will halt execution whenever a read or write occurs in the address range 1234-1239 inclusive. wp 23456,a,w,wpdata == 1 Set a watchpoint that will halt execution whenever a write occurs in the address range 23456-2345f AND the data written is equal to 1. wp 3456,20,r,1,{printf "Read @ %08X\n",wpaddr; g} Set a watchpoint that will halt execution whenever a read occurs in the address range 3456-3475. When this happens, print Read @ and continue executing. temp0 = 0; wp 45678,1,w,wpdata==f0,{temp0++; g} Set a watchpoint that will halt execution whenever a write occurs to the address 45678 AND the value being written is equal to f0. When that happens, increment the variable temp0 and resume execution. *** help wpclear *** wpclear [] The wpclear command clears a watchpoint. If is specified, only the requested watchpoint is cleared, otherwise all watchpoints are cleared. Examples: wpclear 3 Clear watchpoint index 3. wpclear Clear all watchpoints. *** help wpdisable *** wpdisable [] The wpdisable command disables a watchpoint. If is specified, only the requested watchpoint is disabled, otherwise all watchpoints are disabled. Note that disabling a watchpoint does not delete it, it just temporarily marks the watchpoint as inactive. Examples: wpdisable 3 Disable watchpoint index 3. wpdisable Disable all watchpoints. *** help wpenable *** wpenable [] The wpenable command enables a watchpoint. If is specified, only the requested watchpoint is enabled, otherwise all watchpoints are enabled. Examples: wpenable 3 Enable watchpoint index 3. wpenable Enable all watchpoints. *** help wplist *** wplist The wplist command lists all the current watchpoints, along with their index and any conditions or actions attached to them. *** help hotspot *** hotspot [,[[,]]] The hotspot command attempts to help locate hotspots in the code where speedup opportunities might be present. , which defaults to the currently active CPU, specified which processor's memory to track. , which defaults to 64, controls the depth of the search buffer. The search buffer tracks the last memory reads from unique PCs. The parameter, which defaults to 250, specifies the minimum number of hits to report. The basic theory of operation is like this: each memory read is trapped by the debugger and logged in the search buffer according to the address which was read and the PC that executed the opcode. If the search buffer already contains a matching entry, that entry's count is incremented and the entry is moved to the top of the list. If the search buffer does not contain a matching entry, the entry from the bottom of the list is removed, and a new entry is created at the top with an initial count of 1. Entries which fall off the bottom are examined and if their count is larger than , they are reported to the debugger console. Examples: hotspot 0,10 Looks for hotspots on CPU 0 using a search buffer of 16 entries, reporting any entries which end up with 250 or more hits. hotspot 1,40,#1000 Looks for hotspots on CPU 1 using a search buffer of 64 entries, reporting any entries which end up with 1000 or more hits. *** help map *** map[{d|i}]
The map/mapd/mapi commands map a logical address in memory to the correct physical address, as well as specifying the bank. 'map' will map program space memory, while 'mapd' will map data space memory and 'mapi' will map I/O space memory. Example: map 152d0 Gives physical address and bank for logical address 152d0 in program memory *** help memdump *** memdump [] Dumps the current memory map to . If is omitted, then dumps to memdump.log Examples: memdump mylog.log Dumps memory to mylog.log. memdump Dumps memory to memdump.log. *** help comadd *** comadd[//]
, Adds a string to the disassembled code at
. The shortcut for this command is simply '//' Examples: comadd 0, hello world. Adds the comment 'hello world.' to the code at address 0x0 // 10, undocumented opcode! Adds the comment 'undocumented opcode!' to the code at address 0x10 *** help comsave *** comsave Saves the working comments to the driver's XML comment file. Examples: comsave Saves the comments to the driver's comment file *** help comdelete *** help comdelete Deletes the comment at the specified memory offset. The comment which is deleted is in the currently active memory bank. Examples: comdelete 10 Deletes the comment at code address 0x10 (using the current memory bank settings)