diff options
| author | kitty <nepeta@canaglie.net> | 2026-03-05 15:45:53 +1100 |
|---|---|---|
| committer | kitty <nepeta@canaglie.net> | 2026-03-05 15:45:53 +1100 |
| commit | 75f8dd94314c48037160a3f3812c4b8f50e975bb (patch) | |
| tree | 8e03e788061da6626ddb6c0f134bdc6db4820d55 | |
| parent | fbbb6a1a2ab51dd7ed94e2ffa48bcde61df8ea7f (diff) | |
somewhat fix interpreter
| -rw-r--r-- | jefs.fs | 18 |
1 files changed, 10 insertions, 8 deletions
@@ -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 ! |
