diff options
| -rw-r--r-- | jefs.fs | 15 |
1 files changed, 12 insertions, 3 deletions
@@ -289,14 +289,19 @@ max-include-depth 1+ constant #buffers make buffers /buffer #buffers * allot make buffers-used #buffers cells allot make buffers->in #buffers cells allot +make buffers-fd #buffers cells allot : cbuffer include-depth /buffer * buffers + ; : cbuffer-used include-depth cells buffers-used + ; : cbuffer->in include-depth cells buffers->in + ; -: buffer-refill ( u|0 ) cbuffer /buffer stdin read-file 0<> if 0 then +: cbuffer-fd include-depth cells buffers-fd + ; +stdin buffers-fd ! +: buffer-refill ( u|0 ) cbuffer /buffer cbuffer-fd @ read-file 0<> if 0 then 0 cbuffer->in ! dup cbuffer-used ! ; \ returns zero on error or nothing read. -: buffer-remaining? cbuffer->in @ cbuffer-used @ >= ; -: buffer-key buffer-remaining? not if buffer-refill 0= if -1 [ ret, ] then then +\ this is Borken +: buffer-empty? cbuffer->in @ cbuffer-used @ .s >= .s ; +\ bug: always seems to refill +: buffer-key buffer-empty? if buffer-refill 0= if -1 [ ret, ] then then cbuffer cbuffer->in @ + c@ cbuffer->in @ 1+ cbuffer->in ! ; @@ -331,4 +336,8 @@ make line-buffer line-buffer-length allot .free \ input-buffer buffer-length stdin read-file drop input-buffer swap evaluate +buffer-key +buffer-key +char = emit cr +.s bye |
