Diff for /gforth/extend.fs between versions 1.32 and 1.35

version 1.32, 1999/02/03 00:10:20 version 1.35, 1999/05/21 20:35:35
Line 26  decimal Line 26  decimal
 \ .(                                                    12may93jaw  \ .(                                                    12may93jaw
   
 : .(   ( "ccc<paren>" -- ) \ core-ext dot-paren  : .(   ( "ccc<paren>" -- ) \ core-ext dot-paren
   \G Parse a string ccc delimited by a ) (right parenthesis). Display    \G Parse a string @var{ccc} delimited by a @code{)} (right
   \G the string. This is often used to display progress information    \G parenthesis). Display the string. This is often used to display
   \G during compilation. See examples below.    \G progress information during compilation; see examples below.
   [char] ) parse type ; immediate    [char] ) parse type ; immediate
   
 \ VALUE 2>R 2R> 2R@                                     17may93jaw  \ VALUE 2>R 2R> 2R@                                     17may93jaw
Line 36  decimal Line 36  decimal
 \ !! 2value  \ !! 2value
   
 : 2Literal ( compilation w1 w2 -- ; run-time  -- w1 w2 ) \ double two-literal  : 2Literal ( compilation w1 w2 -- ; run-time  -- w1 w2 ) \ double two-literal
     \G Compile appropriate code such that, at run-time, cell pair w1, w2 are      \G Compile appropriate code such that, at run-time, cell pair @var{w1, w2} are
     \G placed on the stack. Interpretation semantics are undefined.      \G placed on the stack. Interpretation semantics are undefined.
     swap postpone Literal  postpone Literal ; immediate restrict      swap postpone Literal  postpone Literal ; immediate restrict
   
Line 76  decimal Line 76  decimal
     postpone (c") here over char+ allot  place align ; immediate restrict      postpone (c") here over char+ allot  place align ; immediate restrict
   
 : C" ( compilation "ccc<quote>" -- ; run-time  -- c-addr ) \ core-ext c-quote  : C" ( compilation "ccc<quote>" -- ; run-time  -- c-addr ) \ core-ext c-quote
     \G Compilation: parse a string ccc delimited by a " (double quote). At      \G Compilation: parse a string @var{ccc} delimited by a @code{"}
     \G run-time, return c-addr which specifies the counted string ccc.      \G (double quote). At run-time, return @var{c-addr} which
     \G Interpretation semantics are undefined.      \G specifies the counted string @var{ccc}.  Interpretation
       \G semantics are undefined.
     [char] " parse postpone CLiteral ; immediate restrict      [char] " parse postpone CLiteral ; immediate restrict
   
 \ [COMPILE]                                             17may93jaw  \ [COMPILE]                                             17may93jaw
Line 89  decimal Line 90  decimal
 \ CONVERT                                               17may93jaw  \ CONVERT                                               17may93jaw
   
 : convert ( ud1 c-addr1 -- ud2 c-addr2 ) \ core-ext  : convert ( ud1 c-addr1 -- ud2 c-addr2 ) \ core-ext
     \G obsolescent; superseded by @code{>number}.      \G OBSOLESCENT: superseded by @code{>number}.
     char+ true >number drop ;      char+ true >number drop ;
   
 \ ERASE                                                 17may93jaw  \ ERASE                                                 17may93jaw
   
 : erase ( addr len -- ) \ core-ext  : erase ( addr len -- ) \ core-ext
     \G If len>0, clear all bits in each location of a memory region      \G If @var{len}>0, clear all bits in each location of a memory region
     \G of len address units starting at address addr.      \G of @var{len} address units starting at address @var{addr}.
     \ !! dependence on "1 chars 1 ="      \ !! dependence on "1 chars 1 ="
     ( 0 1 chars um/mod nip )  0 fill ;      ( 0 1 chars um/mod nip )  0 fill ;
 : blank ( addr len -- ) \ string  : blank ( c-addr u -- ) \ string
     \G If len>0, store the character value for a space in each      \G If @var{u}>0, store the character value for a space in each
     \G location of a memory region      \G location of a memory region
     \G of len character units starting at address addr.      \G of @var{u} character units starting at address @var{c-addr}.
     bl fill ;      bl fill ;
   
 \ SEARCH                                                02sep94py  \ SEARCH                                                02sep94py
   
 : search ( c-addr1 u1 c-addr2 u2 -- c-addr3 u3 flag ) \ string  : search ( c-addr1 u1 c-addr2 u2 -- c-addr3 u3 flag ) \ string
     \G Search the string specified by c-addr1, u1 for the string      \G Search the string specified by @var{c-addr1, u1} for the string
     \G speficied by c-addr2, u2. If flag is true: match was found      \G specified by @var{c-addr2, u2}. If @var{flag} is true: match was found
     \G at c-addr3 with u3 characters remaining. If flag is false:      \G at @var{c-addr3} with @var{u3} characters remaining. If @var{flag} is false:
     \G no match was found; c-addr3, u3 are equal to c-addr1, u1.      \G no match was found; @var{c-addr3, u3} are equal to @var{c-addr1, u1}.
     \ not very efficient; but if we want efficiency, we'll do it as primitive      \ not very efficient; but if we want efficiency, we'll do it as primitive
     2>r 2dup      2>r 2dup
     begin      begin
Line 127  decimal Line 128  decimal
 \ SOURCE-ID SAVE-INPUT RESTORE-INPUT                    11jun93jaw  \ SOURCE-ID SAVE-INPUT RESTORE-INPUT                    11jun93jaw
   
 : source-id ( -- 0 | -1 | fileid ) \ core-ext,file source-i-d  : source-id ( -- 0 | -1 | fileid ) \ core-ext,file source-i-d
   loadfile @ dup 0= IF  drop sourceline# 0 min  THEN ;      \G Return 0 (the input source is the user input device), -1 (the
       \G input source is a string being processed by @code{evaluate}) or
 : save-input ( -- x1 .. xn n ) \ core-ext      \G a @var{fileid} (the input source is the file specified by
       \G @var{fileid}).
       loadfile @ dup 0= IF  drop sourceline# 0 min  THEN ;
   
   : save-input ( -- xn .. x1 n ) \ core-ext
       \G The @var{n} entries @var{xn - x1} describe the current state of the
       \G input source specification, in some platform-dependent way that can
       \G be used by @code{restore-input}.
     >in @      >in @
     loadfile @      loadfile @
     if      if
Line 143  decimal Line 151  decimal
     source-id      source-id
     6 ;      6 ;
   
 : restore-input ( x1 .. xn n -- flag ) \ core-ext  : restore-input ( xn .. x1 n -- flag ) \ core-ext
       \G Attempt to restore the input source specification to the state
       \G described by the @var{n} entries @var{xn - x1}. @var{flag} is
       \G true if the restore fails.  In Gforth it fails pretty often
       \G (and sometimes with a @code{throw}).
     6 <> -12 and throw      6 <> -12 and throw
     source-id <> -12 and throw      source-id <> -12 and throw
     >tib !      >tib !
Line 167  decimal Line 179  decimal
   
 \ EXPECT SPAN                                           17may93jaw  \ EXPECT SPAN                                           17may93jaw
   
 variable span ( -- a-addr ) \ core-ext  variable span ( -- c-addr ) \ core-ext
 \ obsolescent  \ VARIABLE: @var{c-addr} is the address of a cell that stores the
   \ length of the last string received by @code{expect}. OBSOLESCENT.
 : expect ( c-addr +len -- ) \ core-ext  
     \ obsolescent; use accept  : expect ( c-addr +n -- ) \ core-ext
       \G Receive a string of at most @var{+n} characters, and store it
       \G in memory starting at @var{c-addr}. The string is
       \G displayed. Input terminates when the <return> key is pressed or
       \G @var{+n} characters have been received. The normal Gforth line
       \G editing capabilites are available. The length of the string is
       \G stored in @code{span}; it does not include the <return>
       \G character. OBSOLESCENT: superceeded by @code{accept}.
     0 rot over      0 rot over
     BEGIN ( maxlen span c-addr pos1 )      BEGIN ( maxlen span c-addr pos1 )
         key decode ( maxlen span c-addr pos2 flag )          key decode ( maxlen span c-addr pos2 flag )

Removed from v.1.32  
changed lines
  Added in v.1.35


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