diff options
| author | kitty <nepeta@canaglie.net> | 2026-02-27 13:48:18 +1100 |
|---|---|---|
| committer | kitty <nepeta@canaglie.net> | 2026-02-27 13:48:18 +1100 |
| commit | fcd9ad7b2af1668edb83f8b5a59974acc0505f4c (patch) | |
| tree | 4de1bf0600e3d8becc0a2b326e71e28620cd28a6 | |
| parent | 18223b231d698ebe293b0018ed0bdad34961afa4 (diff) | |
allot -> allot>, allot
allot> returns an address. allot doesn't
| -rw-r--r-- | jefs.fs | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -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 |
