Diff for /gforth/stuff.fs between versions 1.28 and 1.34

version 1.28, 2003/01/25 20:11:30 version 1.34, 2004/06/13 17:04:29
Line 1 Line 1
 \ miscelleneous words  \ miscelleneous words
   
 \ Copyright (C) 1996,1997,1998,2000 Free Software Foundation, Inc.  \ Copyright (C) 1996,1997,1998,2000,2003 Free Software Foundation, Inc.
   
 \ This file is part of Gforth.  \ This file is part of Gforth.
   
Line 106  AUser CSP Line 106  AUser CSP
     POSTPONE (const-does>)      POSTPONE (const-does>)
     POSTPONE ;      POSTPONE ;
     noname : POSTPONE rdrop      noname : POSTPONE rdrop
     lastxt r> cell+ ! \ patch the literal      latestxt r> cell+ ! \ patch the literal
 ; immediate  ; immediate
   
 \ !! rewrite slurp-file using slurp-fid  \ !! rewrite slurp-file using slurp-fid
 : slurp-file ( c-addr1 u1 -- c-addr2 u2 )  : slurp-file ( c-addr1 u1 -- c-addr2 u2 ) \ gforth
     \G @var{c-addr1 u1} is the filename, @var{c-addr2 u2} is the file's contents      \G @var{c-addr1 u1} is the filename, @var{c-addr2 u2} is the file's contents
     r/o bin open-file throw >r      r/o bin open-file throw >r
     r@ file-size throw abort" file too large"      r@ file-size throw abort" file too large"
Line 118  AUser CSP Line 118  AUser CSP
     2dup r@ read-file throw over <> abort" could not read whole file"      2dup r@ read-file throw over <> abort" could not read whole file"
     r> close-file throw ;      r> close-file throw ;
   
 : slurp-fid { fid -- addr u }  : slurp-fid { fid -- addr u } \ gforth
     \G @var{addr u} is the content of the file @var{fid}      \G @var{addr u} is the content of the file @var{fid}
     0 0 begin ( awhole uwhole )      0 0 begin ( awhole uwhole )
         dup 1024 + dup >r extend-mem ( anew awhole uwhole R: unew )          dup 1024 + dup >r extend-mem ( anew awhole uwhole R: unew )
Line 210  AUser CSP Line 210  AUser CSP
     endif      endif
     1 max ur min ;      1 max ur min ;
   
 : f>buf-rdp ( rf c-addr +nr nd np -- ) \ gforth  : f>buf-rdp ( rf c-addr +nr +nd +np -- ) \ gforth
 \G Convert @i{rf} into a string at @i{c-addr nr}.  The conversion  \G Convert @i{rf} into a string at @i{c-addr nr}.  The conversion
 \G rules and the meanings of @i{nr nd np} are the same as for  \G rules and the meanings of @i{nr nd np} are the same as for
 \G @code{f.rdp}.  \G @code{f.rdp}.
Line 236  AUser CSP Line 236  AUser CSP
   
 : f.rdp ( rf +nr +nd +np -- ) \ gforth  : f.rdp ( rf +nr +nd +np -- ) \ gforth
 \G Print float @i{rf} formatted.  The total width of the output is  \G Print float @i{rf} formatted.  The total width of the output is
 \G @i{nr}, the number of digits after the decimal point is @i{+nd},  \G @i{nr}.  For fixed-point notation, the number of digits after the
 \G the minimum number of significant digits for fixed-point notation  \G decimal point is @i{+nd} and the minimum number of significant
 \G is @i{np}.  @code{Set-precision} has no effect on @code{f.rdp}.  \G digits is @i{np}.  @code{Set-precision} has no effect on
 \G Fixed-point notation is used if the number of siginicant digits  \G @code{f.rdp}.  Fixed-point notation is used if the number of
 \G would be larger than @i{np} and if the number of digits before the  \G siginicant digits would be at least @i{np} and if the number of
 \G decimal point would fit.  If fixed-point notation is not used,  \G digits before the decimal point would fit.  If fixed-point notation
 \G exponential notation is used, and if that does not fit, asterisks  \G is not used, exponential notation is used, and if that does not
 \G are printed.  We recommend using @i{nr}>=7 to avoid the risk of  \G fit, asterisks are printed.  We recommend using @i{nr}>=7 to avoid
 \G numbers not fitting at all.  We recommend @i{nr}>=@i{np}+5 to avoid  \G the risk of numbers not fitting at all.  We recommend
 \G cases where @code{f.rdp} switches to exponential notation because  \G @i{nr}>=@i{np}+5 to avoid cases where @code{f.rdp} switches to
 \G fixed-point notation would have too few significant digits, yet  \G exponential notation because fixed-point notation would have too
 \G exponential notation offers fewer significant digits.  We recomment  \G few significant digits, yet exponential notation offers fewer
 \G @i{nr}>=@i{nd}+2, if you want to have fixed-point notation for some  \G significant digits.  We recommend @i{nr}>=@i{nd}+2, if you want to
   \G have fixed-point notation for some numbers.  We recommend
   \G @i{np}>@i{nr}, if you want to have exponential notation for all
 \G numbers.  \G numbers.
     f>str-rdp type ;      f>str-rdp type ;
   
Line 273  AUser CSP Line 275  AUser CSP
         10e f*          10e f*
     loop ;      loop ;
 [then]  [then]
   
   : f.s ( -- ) \ gforth f-dot-s
       \G Display the number of items on the floating-point stack,
       \G followed by a list of the items; TOS is the right-most item.
       ." <" fdepth 0 .r ." > " fdepth 0 max maxdepth-.s @ min dup 0 
       ?DO  dup i - 1- floats fp@ + f@ 16 5 11 f.rdp space LOOP  drop ; 

Removed from v.1.28  
changed lines
  Added in v.1.34


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