Diff for /gforth/debug.fs between versions 1.14 and 1.17

version 1.14, 1999/12/03 18:28:58 version 1.17, 2000/09/23 15:46:52
Line 1 Line 1
 \ DEBUG.FS     Debugger                                12jun93jaw  \ DEBUG.FS     Debugger                                12jun93jaw
   
 \ Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.  \ Copyright (C) 1995,1996,1997,2000 Free Software Foundation, Inc.
   
 \ This file is part of Gforth.  \ This file is part of Gforth.
   
Line 16 Line 16
   
 \ You should have received a copy of the GNU General Public License  \ You should have received a copy of the GNU General Public License
 \ along with this program; if not, write to the Free Software  \ along with this program; if not, write to the Free Software
 \ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  \ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
   
 decimal  decimal
   
 VARIABLE dbg-ip     \ instruction pointer for debugger  VARIABLE dbg-ip     \ instruction pointer for debugger
   
   \ !! move to see?
   
   : save-see-flags ( -- n* cnt )
     C-Output @
     C-Formated @ 1 ;
   
   : restore-see-flags ( n* cnt -- )
     drop C-Formated !
     C-Output ! ;
   
 : scanword ( body -- )  : scanword ( body -- )
           >r save-see-flags r>
         c-init C-Output off          c-init C-Output off
         ScanMode c-pass !          ScanMode c-pass !
         dup MakePass          dup MakePass
Line 30  VARIABLE dbg-ip     \ instruction pointe Line 41  VARIABLE dbg-ip     \ instruction pointe
         0 XPos !          0 XPos !
         DisplayMode c-pass !          DisplayMode c-pass !
         MakePass          MakePass
         C-Output on ;          restore-see-flags ;
   
 : .n    0 <# # # # # #S #> ctype bl cemit ;  : .n    0 <# # # # # #S #> ctype bl cemit ;
   
Line 42  VARIABLE dbg-ip     \ instruction pointe Line 53  VARIABLE dbg-ip     \ instruction pointe
                 C-Formated off                  C-Formated off
                 ;                  ;
   
 : disp-step  : Leave-D ;
   
   : disp-step ( -- )
   \ display step at current dbg-ip
         DisplayMode c-pass !            \ change to displaymode          DisplayMode c-pass !            \ change to displaymode
         cr          cr
         c-stop off          c-stop off
         Base @ hex dbg-ip @ 8 u.r space dbg-ip @ @ 8 u.r space          Base @ hex dbg-ip @ 8 u.r space dbg-ip @ @ 8 u.r space
         Base !          Base !
           save-see-flags
         NoFine 10 XPos !          NoFine 10 XPos !
         dbg-ip @ DisplayMode c-pass ! Analyse drop          dbg-ip @ DisplayMode c-pass ! Analyse drop
         25 XPos @ - 0 max spaces ." -> " ;          25 XPos @ - 0 max spaces ." -> " 
           restore-see-flags ;
   
 : get-next ( -- n | n n )  : get-next ( -- n | n n )
         DebugMode c-pass !          DebugMode c-pass !
Line 94  VARIABLE Body Line 110  VARIABLE Body
   
 VARIABLE Nesting  VARIABLE Nesting
   
 : Leave-D  
                 C-Formated on  
                 C-Output on ;  
   
 VARIABLE Unnest  VARIABLE Unnest
   
 : D-KEY         ( -- flag )  : D-KEY         ( -- flag )
Line 120  VARIABLE Unnest Line 132  VARIABLE Unnest
                 ENDCASE                  ENDCASE
         AGAIN ;          AGAIN ;
   
 : (debug) ( body -- )  : (_debug) ( body ip -- )
         0 Nesting !          0 Nesting !
         BEGIN   Unnest off          BEGIN   Unnest off
                 cr ." Scanning code..." cr C-Formated on                  cr ." Scanning code..." cr C-Formated on
                 dup scanword dbg-ip !                  swap scanword dbg-ip !
                 cr ." Nesting debugger ready!" cr                  cr ." Nesting debugger ready!" cr
                 BEGIN   d.s disp-step D-Key                  BEGIN   d.s disp-step D-Key
                 WHILE   C-Stop @ 0=                  WHILE   C-Stop @ 0=
Line 138  VARIABLE Unnest Line 150  VARIABLE Unnest
                 ELSE                  ELSE
                 dbg-ip @ 1 cells + >r 1 Nesting +!                  dbg-ip @ 1 cells + >r 1 Nesting +!
                 THEN                  THEN
                   dup
         AGAIN ;          AGAIN ;
   
   : (debug) dup (_debug) ;
   
 : dbg ( "name" -- ) \ gforth   : dbg ( "name" -- ) \ gforth 
     ' NestXT IF EXIT THEN (debug) Leave-D ;      ' NestXT IF EXIT THEN (debug) Leave-D ;
   
 has? compiler invert [IF] \ nac bugfix  : break:, ( -- )
     lastxt postpone literal ;
   
   : (break:)
       r> ['] (_debug) >body >r ;
     
 : break: ( -- ) \ gforth  : break: ( -- ) \ gforth
     r> ['] (debug) >body >r ;      break:, postpone (break:) ; immediate
   
 : (break")  : (break")
     cr      cr
     ." BREAK AT: " type cr      ." BREAK AT: " type cr
     r> ['] (debug) >body >r ;      r> ['] (_debug) >body >r ;
   
 : break" ( 'ccc"' -- ) \ gforth  : break" ( 'ccc"' -- ) \ gforth
       break:,
     postpone s"      postpone s"
     postpone (break") ; immediate      postpone (break") ; immediate
 [THEN]  

Removed from v.1.14  
changed lines
  Added in v.1.17


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>