--- gforth/extend.fs 1994/08/31 19:42:45 1.6 +++ gforth/extend.fs 1995/07/06 15:57:27 1.10 @@ -6,7 +6,8 @@ decimal \ .( 12may93jaw -: .( [char] ) parse type ; +: .( ( -- ) + [char] ) parse type ; immediate \ VALUE 2>R 2R> 2R@ 17may93jaw @@ -69,13 +70,24 @@ decimal \ ERASE 17may93jaw -: erase ( 0 1 chars um/mod nip ) 0 fill ; -: blank ( 0 1 chars um/mod nip ) bl fill ; +: erase ( addr len -- ) ( 0 1 chars um/mod nip ) 0 fill ; +: blank ( addr len -- ) ( 0 1 chars um/mod nip ) bl fill ; + +\ SEARCH 02sep94py + +: search ( buf buflen text textlen -- restbuf restlen flag ) + 2over 2 pick - 1+ 3 pick c@ >r + BEGIN r@ scan dup WHILE + >r >r 2dup r@ -text + 0= IF >r drop 2drop r> r> r> rot + 1- rdrop true EXIT THEN + r> r> 1 /string REPEAT + 2drop 2drop rdrop false ; \ ROLL 17may93jaw -: roll dup 1+ pick >r - cells sp@ cell+ dup cell+ rot move drop r> ; +: roll ( x0 x1 .. xn n -- x1 .. xn x0 ) + dup 1+ pick >r + cells sp@ cell+ dup cell+ rot move drop r> ; \ SOURCE-ID SAVE-INPUT RESTORE-INPUT 11jun93jaw @@ -109,7 +121,11 @@ decimal variable span : expect ( c-addr +len -- ) - 0 rot over - BEGIN key decode >r 2over = r> or UNTIL - 2drop nip span ! ; + 0 rot over + BEGIN ( maxlen span c-addr pos1 ) + key decode ( maxlen span c-addr pos2 flag ) + >r 2over = r> or + UNTIL + type-rest drop + 2drop nip span ! ;