From fb49822582a2a0761d2a9a47d5f6fe5948b7077e Mon Sep 17 00:00:00 2001 From: kitty Date: Wed, 4 Mar 2026 17:58:40 +1100 Subject: um --- jefs.fs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'jefs.fs') diff --git a/jefs.fs b/jefs.fs index 23cde43..2adfb89 100644 --- a/jefs.fs +++ b/jefs.fs @@ -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 -- cgit v1.2.3