summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--jefs.fs11
1 files changed, 7 insertions, 4 deletions
diff --git a/jefs.fs b/jefs.fs
index 9f74791..4551250 100644
--- a/jefs.fs
+++ b/jefs.fs
@@ -23,7 +23,8 @@
hex : ret, c3 c, ; decimal
: cells 8 * ;
-: allot here @ swap here +! ;
+: allot> here @ swap here +! ;
+: allot allot> drop ;
: [compile] parse find drop >cfa compile, ; immediate
: ' parse find drop >cfa [compile] lit ; immediate \ note: no error handling (yet)
@@ -32,7 +33,7 @@ hex : ret, c3 c, ; decimal
: literal [compile] lit ; immediate
: constant create [compile] lit ret, ;
-: variable 1 cells allot create [compile] lit ret, ;
+: variable 1 cells allot> create [compile] lit ret, ;
\ maybe i made bad design decisions, this is CREATE but it pushes a pointer to just after its definition. for arrays and the like
\ does not use LIT because we want to fill it in After
: make create here @ 18 + [compile] lit ret, ;
@@ -160,7 +161,7 @@ decimal
\ PNO {{{
\ mostly from pforth
-255 allot variable pad drop
+255 allot variable pad
variable hld
: <# pad hld ! ;
: hold 1 hld -! ( chr ) hld @ c! ;
@@ -210,7 +211,7 @@ variable hld
: words latest @ begin ?dup 0<> while dup (words) @ repeat cr ;
: (evaluate) ( c-addr u -- ) 0 >in ! ( u ) #tib ! ( c-addr ) tib ! interpret ;
-: evaluate ( c-addr u -- ) tib @ >r #tib @ >r >in @ >r (evaluate) r> >in ! r> #tib ! r> tib ! ;
+: evaluate ( c-addr u -- ) tib @ >r #tib @ >r >in @ >r (evaluate) r> >in ! r> #tib ! r> tib ! ;
\ SYSCALL ERRORS {{{
: errno ( rax -- ?val err|0 ) dup 0< if negate else 0 then ;
@@ -249,4 +250,6 @@ variable hld
: read-file ( c-addr u fd -- ?u flag ) >r swap r> sysread errno ;
\ }}}
+make buf 8192 allot
+
.free bye