[openfirmware] [commit] r3341 - forth/lib

repository service svn at openfirmware.info
Thu Sep 27 23:17:27 CEST 2012


Author: wmb
Date: Thu Sep 27 23:17:26 2012
New Revision: 3341
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/3341

Log:
Debugger - improve visual debugger redisplay so it's rarely necessary to use the L command.  See OLPC trac #12105.

Modified:
   forth/lib/debug.fth

Modified: forth/lib/debug.fth
==============================================================================
--- forth/lib/debug.fth	Thu Sep 27 03:23:16 2012	(r3340)
+++ forth/lib/debug.fth	Thu Sep 27 23:17:26 2012	(r3341)
@@ -37,7 +37,9 @@
 variable step? step? on
 variable res
 headers
-false value redisplay?
+
+-1 value displayed-xt
+: force-redisplay  ( -- )  -1 to displayed-xt  ;
 
 : (debug)       (s low-adr hi-adr -- )
    unbug   1 cnt !   ip> !   <ip !   pnext
@@ -46,8 +48,9 @@
       slow-next? on
    then
    step? on
-   true is redisplay?
+   force-redisplay
 ;
+
 headerless
 : 'unnest   (s pfa -- pfa' )
    begin   dup ta1+  swap  token@ ['] unnest =  until
@@ -188,6 +191,8 @@
 : restore#  ( -- )  #buf-save  #-buf /#buf -  d# 72 move    hld-save @  hld !  ;
 0 value the-ip
 0 value the-rp
+: redisplay?  ( -- flag )  displayed-xt  the-ip find-cfa <>  ;
+
 : (.rs  ( -- )
    show-rstack @ 0=  if  exit  then
    ." return-stack: "
@@ -210,6 +215,7 @@
    d# 40 rmargin !
    ." Stack: " #out @ #line @ to full-stack-xy  cr  \ For stack
    the-ip debug-see
+   the-ip find-cfa to displayed-xt
    cr
    \ Display the initial stack on the cursor line
    the-ip ip>position  0=  if   ( col row )
@@ -224,7 +230,6 @@
          setup-2d-display
       then
       0 show-rstack !
-      false is redisplay?
    then
 ;
 : show-debug-stack  ( -- )
@@ -269,7 +274,7 @@
 	    ascii U  of  the-rp ['] up1 try                     endof \ Up
             ascii C  of                                               \ Continue
                step? @ 0= step? !              
-               step? @ 0=  if  true to scrolling-debug?  true to redisplay?  then
+               step? @ 0=  if  true to scrolling-debug?  force-redisplay  then
                true
             endof
 
@@ -290,10 +295,10 @@
             ascii *  of  the-ip find-cfa dup <ip !  'unnest ip> !  false  endof
             ascii \  of  show-rstack @ 0= show-rstack !  false  endof  \ toggle return stack display
             ascii X  of  hex-stack @ 0= hex-stack !      false  endof  \ toggle heX stack display
-            ascii L  of  true to redisplay?              false  endof  \ Redisplay
+            ascii L  of  force-redisplay                 false  endof  \ Redisplay
             ascii V  of						\ toggle Visual (2D) mode
                scrolling-debug? 0= to scrolling-debug?      
-               scrolling-debug? 0=  if  true to redisplay?  then  false
+               scrolling-debug? 0=  if  force-redisplay  then  false
             endof
             ( default )  true swap
          endcase
@@ -309,7 +314,7 @@
    debug-interact
 \   scrolling-debug? 0=  if  to-result-loc  then
    the-ip token@  dup ['] unnest =  swap ['] exit =  or  if
-      cr  true is redisplay?
+      cr  force-redisplay
    then
    slow-next? @  if  pnext  then
 ;
@@ -325,7 +330,7 @@
    (debug
 ;
 : debugging  ( -- )  ' .debug-short-help  dup (debug  execute  ;
-: resume    (s -- )  true is exit-interact?  pnext  ;
+: resume    (s -- )  true is exit-interact?  force-redisplay  pnext  ;
 : stepping  (s -- )  step? on  ;
 : tracing   (s -- )  step? off ;
 



More information about the openfirmware mailing list