Files
openbios/forth/debugging/firmware.fs
Blue Swirl d6aac5ffe2 Reworked version of Forth Source debugger (Mark Cave-Ayland)
This patch implements the following Forth words:

   debug <xt> - Mark word for debugging
   debug-off  - Unmark all words for debugging
   resume     - Return from subordinate Forth interpreter

The source debugger also implements the following commands when it has
been activated:

   Up - Unmark current word for debugging, mark parent and continue
   Down - Mark next word for debugging
   Trace - Continue execution until end of word displaying
           debug information
   Rstack - Display contents of the Rstack
   Forth - Launch subordinate Forth interpreter

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>

git-svn-id: svn://coreboot.org/openbios/trunk/openbios-devel@611 f158a5a8-5612-0410-a976-696ce0be7e32
2009-11-15 21:03:51 +00:00

91 lines
1.2 KiB
Forth

\ 7.5 Firmware Debugging command group
\ 7.5.1 Automatic stack display
: (.s
depth 0 ?do
depth i - 1- pick .
loop
depth 0<> if ascii < emit space then
;
: showstack ( -- )
['] (.s to status
;
: noshowstack ( -- )
['] noop to status
;
\ 7.5.2 Serial download
: dl ( -- )
;
\ 7.5.3 Dictionary
\ 7.5.3.1 Dictionary search
: .calls ( xt -- )
;
: $sift ( text-addr text-len -- )
;
: sifting ( "text< >" -- )
;
\ : words ( -- )
\ \ Implemented in forth bootstrap.
\ ;
\ 7.5.3.2 Decompiler
\ implemented in see.fs
\ : see ( "old-name< >" -- )
\ ;
\ : (see) ( xt -- )
\ ;
\ 7.5.3.3 Patch
: patch ( "new-name< >old-name< >word-to-patch< >" -- )
;
: (patch) ( new-n1 num1? old-n2 num2? xt -- )
;
\ 7.5.3.4 Forth source-level debugger
: debug ( "old-name< >" -- )
parse-word \ Look up word CFA in dictionary
$find
0 = if
." could not locate word for debugging"
2drop
else
(debug
then
;
: stepping ( -- )
;
: tracing ( -- )
;
: debug-off ( -- )
(debug-off)
;
: resume ( -- )
\ Set interpreter termination flag
1 to terminate?
;