Diff for /gforth/see.fs between versions 1.51 and 1.61

version 1.51, 2003/03/09 15:16:52 version 1.61, 2007/09/29 22:20:02
Line 1 Line 1
 \ SEE.FS       highend SEE for ANSforth                16may93jaw  \ SEE.FS       highend SEE for ANSforth                16may93jaw
   
 \ Copyright (C) 1995,2000,2003 Free Software Foundation, Inc.  \ Copyright (C) 1995,2000,2003,2004,2006 Free Software Foundation, Inc.
   
 \ This file is part of Gforth.  \ This file is part of Gforth.
   
Line 71  DEFER nlcount ' noop IS nlcount Line 71  DEFER nlcount ' noop IS nlcount
                 nlflag @ IF (nl) nlflag off THEN                  nlflag @ IF (nl) nlflag off THEN
                 XPos @ over + cols u>= IF (nl) THEN ;                  XPos @ over + cols u>= IF (nl) THEN ;
   
 : c-to-upper ( c1 -- c2 ) \ gforth  
     \ nac05feb1999 there is a primitive, toupper, with this function  
     dup [char] a >= over [char] z <= and if  bl -  then ;  
   
 : ctype         ( adr len -- )  : ctype         ( adr len -- )
                 warp? dup XPos +! C-Output @                   warp? dup XPos +! C-Output @ 
                 IF uppercase @ IF bounds ?DO i c@ c-to-upper emit LOOP                  IF uppercase @ IF bounds ?DO i c@ toupper emit LOOP
                                   uppercase off ELSE type THEN                                    uppercase off ELSE type THEN
                 ELSE 2drop THEN ;                  ELSE 2drop THEN ;
   
Line 124  VARIABLE Colors Colors on Line 120  VARIABLE Colors Colors on
                     else                      else
                         base @ >r try                          base @ >r try
                             8 base ! 0 <<# # # # '\ hold #> ctype #>> 0                              8 base ! 0 <<# # # # '\ hold #> ctype #>> 0
                         recover                          restore
                               r@ base !
                         endtry                          endtry
                         r> base ! throw                          rdrop throw
                     endif                      endif
                 endif                  endif
                 1 /string                  1 /string
Line 266  VARIABLE C-Pass Line 263  VARIABLE C-Pass
     \ print x as a word if possible      \ print x as a word if possible
     dup look 0= IF      dup look 0= IF
         drop dup threaded>name dup 0= if          drop dup threaded>name dup 0= if
             2drop dup 1 cells - @ dup body> look              drop over 1 cells - @ dup body> look
             IF              IF
                 nip dup ." <" name>string rot wordinfo .string ." > "                  nip nip dup ." <" name>string rot wordinfo .string ." > "
             ELSE              ELSE
                 drop ." <" 0 .r ." > "                  2drop ." <" 0 .r ." > "
             THEN              THEN
             EXIT              EXIT
         then          then
Line 454  VARIABLE C-Pass Line 451  VARIABLE C-Pass
                 THEN                  THEN
         THEN          THEN
         Debug?          Debug?
         IF      dup @ +          IF      @ \ !!! cross-interacts with debugger !!!
         ELSE    cell+          ELSE    cell+
         THEN ;          THEN ;
   
 : DebugBranch  : DebugBranch
         Debug?          Debug?
         IF      dup @ over + swap THEN ; \ return 2 different addresses          IF      dup @ swap THEN ; \ return 2 different addresses
   
 : c-?branch  : c-?branch
         Scan?          Scan?
Line 494  VARIABLE C-Pass Line 491  VARIABLE C-Pass
         Display? IF nl S" FOR" .struc level+ THEN ;          Display? IF nl S" FOR" .struc level+ THEN ;
   
 : c-loop  : c-loop
         Display? IF level- nl .name-without bl cemit nl THEN          Display? IF level- nl .name-without nl bl cemit THEN
         DebugBranch cell+           DebugBranch cell+ 
         Scan?           Scan? 
         IF      dup BranchAddr?           IF      dup BranchAddr? 
Line 513  VARIABLE C-Pass Line 510  VARIABLE C-Pass
     THEN      THEN
     DebugBranch cell+ ;      DebugBranch cell+ ;
   
 : c-exit  dup 1 cells -  : c-exit ( addr1 -- addr2 )
         CheckEnd      dup 1 cells -
         IF      Display? IF nlflag off S" ;" Com# .string THEN      CheckEnd
                 C-Stop on      IF
         ELSE    Display? IF S" EXIT " .struc THEN          Display? IF nlflag off S" ;" Com# .string THEN
         THEN          C-Stop on
         Debug? IF drop THEN ;      ELSE
           Display? IF S" EXIT " .struc THEN
       THEN
       Debug? IF drop THEN ; \ !!! cross-interacts with debugger !!!
   
 : c-abort"  : c-abort"
         count 2dup + aligned -rot          count 2dup + aligned -rot
Line 670  Defer discode ( addr u -- ) \ gforth Line 670  Defer discode ( addr u -- ) \ gforth
     cell +loop      cell +loop
     here ;      here ;
   
   [ifundef] umin \ !! bootstrapping help
 : umin ( u1 u2 -- u )  : umin ( u1 u2 -- u )
     2dup u>      2dup u>
     if      if
         swap          swap
     then      then
     drop ;      drop ;
           [then]
   
 : next-prim ( addr1 -- addr2 ) \ gforth  : next-prim ( addr1 -- addr2 ) \ gforth
     \G find the next primitive after addr1 (unreliable)      \G find the next primitive after addr1 (unreliable)
     1+ >r -1 primstart      1+ >r -1 primstart
Line 721  Defer discode ( addr u -- ) \ gforth Line 723  Defer discode ( addr u -- ) \ gforth
     >name ?dup-if      >name ?dup-if
         ." IS " .name cr          ." IS " .name cr
     else      else
         ." lastxt >body !"          ." latestxt >body !"
     then ;      then ;
 : see-threaded ( addr -- )  : see-threaded ( addr -- )
     C-Pass @ DebugMode = IF      C-Pass @ DebugMode = IF
Line 756  Defer discode ( addr u -- ) \ gforth Line 758  Defer discode ( addr u -- ) \ gforth
     dup >code-address      dup >code-address
     CASE      CASE
         docon: of seecon endof          docon: of seecon endof
           dovalue: of seevalue endof
         docol: of seecol endof          docol: of seecol endof
         dovar: of seevar endof          dovar: of seevar endof
 [ [IFDEF] douser: ]  [ [IFDEF] douser: ]
Line 773  Defer discode ( addr u -- ) \ gforth Line 776  Defer discode ( addr u -- ) \ gforth
     ENDCASE ;      ENDCASE ;
   
 : (xt-see-xt) ( xt -- )  : (xt-see-xt) ( xt -- )
     xt-see cr ." lastxt" ;      xt-see cr ." latestxt" ;
 ' (xt-see-xt) is xt-see-xt  ' (xt-see-xt) is xt-see-xt
   
 : (.immediate) ( xt -- )  : (.immediate) ( xt -- )
Line 794  Defer discode ( addr u -- ) \ gforth Line 797  Defer discode ( addr u -- ) \ gforth
         else \ interpret/compile word          else \ interpret/compile word
             r@ xt-see-xt cr              r@ xt-see-xt cr
             swap xt-see-xt cr              swap xt-see-xt cr
             ." interpret/compile " over .name (.immediate)              ." interpret/compile: " over .name drop
         then          then
     then      then
     rdrop drop ;      rdrop drop ;

Removed from v.1.51  
changed lines
  Added in v.1.61


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