summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--jefs.fs10
-rw-r--r--jefs.s12
2 files changed, 19 insertions, 3 deletions
diff --git a/jefs.fs b/jefs.fs
index dbd6da5..309f118 100644
--- a/jefs.fs
+++ b/jefs.fs
@@ -1,12 +1,16 @@
+: [compile] parse find drop >cfa compile, ; immediate
+: ' parse find drop >cfa [compile] lit ; immediate \ note: no error handling (yet)
+
: begin here @ ; immediate
-: again branch here @ 4 + - d, ; immediate
+: again branch here @ 4 + - d, ; immediate \ add 4 to get to beginning of the next instruction
+\ : if 0branch here @ 0 d, ; immediate ( I: -- a )
+\ : then dup here @ 4 + swap - swap d! ; immediate
: / /mod swap drop ;
: mod /mod drop ;
: syswrite ( u c-addr fd -- n ) 1 syscall3 ;
: say ( c-addr u -- ) swap 1 syswrite drop ;
-\ : saying begin TESTSTR say again ;
-\ HEREDUMP
+\ : saying 0 if TESTSTR say then ;
\ saying bye
TESTSTR say bye
diff --git a/jefs.s b/jefs.s
index 6eb5a80..e0b0c70 100644
--- a/jefs.s
+++ b/jefs.s
@@ -103,6 +103,18 @@ defword "!", store, 0
mov qword [r11], r12
ret
+defword "d!", dstore, 0
+ pspop r11
+ pspop r12
+ mov dword [r11], r12d
+ ret
+
+defword "w!", wstore, 0
+ pspop r11
+ pspop r12
+ mov word [r11], r12w
+ ret
+
defword "c!", cstore, 0
pspop r11
pspop r12