summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--jefs.fs18
1 files changed, 10 insertions, 8 deletions
diff --git a/jefs.fs b/jefs.fs
index f459702..b568fd0 100644
--- a/jefs.fs
+++ b/jefs.fs
@@ -261,11 +261,11 @@ decimal
make error-msgs #error-msgs cells allot
: set-error ( xt -- ) cells error-msgs + ! ;
: write-error cells error-msgs + @ execute ;
-:> ." no error" ; 0 set-error
-:> ." stack underflow" ; 1 set-error
-:> ." word not found" ; 2 set-error
-:> ." compile mode only" ; 3 set-error
-:> ." interpret mode only" ; 4 set-error
+:> ." no error" ; 0 set-error
+:> ." stack underflow" ; 1 set-error
+:> ." word not found" ; 2 set-error
+:> ." compile mode only" ; 3 set-error
+:> ." interpret mode only" ; 4 set-error
: #bye ( code -- ) 60 syscall1 ;
\ maybe this would be more elegant as a table?
@@ -339,7 +339,7 @@ stdin buffers-fd !
0 begin dup (accept-n) < while buffer-key dup
0>= if ( n c -- ) dup 10 = if drop dup truncate-(accept-n) true swap
else over (accept-a) + c! 1+ then
- else drop truncate-(accept-n) false swap then repeat
+ else truncate-(accept-n) false swap then repeat
(accept-real-n) (accept-n) = if true else swap then ;
hide (accept-n) hide (accept-a) hide (accept-real-n)
hide truncate-(accept-n)
@@ -350,12 +350,14 @@ hide truncate-(accept-n)
2048 constant line-buffer-length
make line-buffer line-buffer-length allot
+\ maybe fill the old space with zeroes?
+\ seem to be having issues with old words being interpreted
: refill ( -- ? ) source-id 0< if false [ ret, ] then
0 >in ! line-buffer tib ! line-buffer line-buffer-length accept
- 0= if ?dup if false [ ret, ] then then #tib ! true ;
+ 0= if ?dup 0= if false [ ret, ] then then #tib ! true ;
\ bug: C-d causes stack underflow
-: quit 0 to source-id [compile] [ begin refill while interpret ." ok" cr repeat ;
+: quit 0 to source-id [compile] [ begin refill while interpret ." ok" cr repeat ;
\ }}}
: (evaluate) ( c-addr u -- ) 0 >in ! ( u ) #tib ! ( c-addr ) tib !