--- gforth/extend.fs 1999/11/08 22:01:08 1.36 +++ gforth/extend.fs 2000/09/09 20:32:58 1.42 @@ -25,10 +25,11 @@ decimal \ .( 12may93jaw -: .( ( "ccc" -- ) \ core-ext dot-paren - \G Parse a string @i{ccc} delimited by a @code{)} (right - \G parenthesis). Display the string. This is often used to display - \G progress information during compilation; see examples below. +: .( ( compilation,interpretation "ccc" -- ) \ core-ext dot-paren + \G Compilation and interpretation semantics: Parse a string @i{ccc} + \G delimited by a @code{)} (right parenthesis). Display the + \G string. This is often used to display progress information during + \G compilation; see examples below. [char] ) parse type ; immediate \ VALUE 2>R 2R> 2R@ 17may93jaw @@ -42,7 +43,9 @@ decimal ' drop alias d>s ( d -- n ) \ double d_to_s -: m*/ ( d1 n2 u3 -- dqout ) \ double m-star-slash +: m*/ ( d1 n2 u3 -- dquot ) \ double m-star-slash + \G dquot=(d1*n2)/u3, with the intermediate result being triple-precision. + \G In ANS Forth u3 can only be a positive signed number. >r s>d >r abs -rot s>d r> xor r> swap >r >r dabs rot tuck um* 2swap um* swap >r 0 d+ r> -rot r@ um/mod -rot r> um/mod nip swap @@ -85,7 +88,12 @@ decimal \ [COMPILE] 17may93jaw : [compile] ( compilation "name" -- ; run-time ? -- ? ) \ core-ext bracket-compile - comp' drop compile, ; immediate + comp' drop + dup [ comp' exit drop ] literal = if + execute \ EXIT has default compilation semantics, perform them + else + compile, + then ; immediate \ CONVERT 17may93jaw @@ -95,15 +103,12 @@ decimal \ ERASE 17may93jaw -: erase ( addr len -- ) \ core-ext - \G If @i{len}>0, clear all bits in each location of a memory region - \G of @i{len} address units starting at address @i{addr}. +: erase ( addr u -- ) \ core-ext + \G Clear all bits in @i{u} aus starting at @i{addr}. \ !! dependence on "1 chars 1 =" ( 0 1 chars um/mod nip ) 0 fill ; : blank ( c-addr u -- ) \ string - \G If @i{u}>0, store the character value for a space in each - \G location of a memory region - \G of @i{u} character units starting at address @i{c-addr}. + \G Store the space character into @i{u} chars starting at @i{c-addr}. bl fill ; \ SEARCH 02sep94py @@ -141,7 +146,7 @@ decimal >in @ loadfile @ if - loadfile @ file-position throw + loadfile @ file-position throw #fill-bytes @ 0 d- \ !! bug for CRLF and EOF else blk @ linestart @ @@ -163,6 +168,7 @@ decimal loadfile @ 0<> if loadfile @ reposition-file throw + refill 0= -36 and throw \ should never throw else linestart ! blk !