summaryrefslogtreecommitdiff
path: root/jefs.s
diff options
context:
space:
mode:
Diffstat (limited to 'jefs.s')
-rw-r--r--jefs.s36
1 files changed, 11 insertions, 25 deletions
diff --git a/jefs.s b/jefs.s
index 5101a8f..4c3f291 100644
--- a/jefs.s
+++ b/jefs.s
@@ -398,32 +398,9 @@ defword "compile,", compile_comma, 0
mov qword [here], r12
ret
-; todo: separate the CREATE functionality out
defword ":", colon, 0
- call parse
- pspop r9 ; u
- pspop r10 ; c-addr
- mov r11, [latest]
- mov r12, [here]
- push r12 ; keep for LATEST
-
- mov qword [r12], r11
- add r12, 8
- mov byte [r12], smudge_mask
- inc r12
- mov word [r12], r9w ; r9w from r9: safe?
- add r12, 2
-
- ; strcpy
- mov rcx, r9
- mov rsi, r10
- mov rdi, r12
- rep movsb
- add r12, r9
-
- mov qword [here], r12
- pop r12
- mov qword [latest], r12
+ call create
+ call smudge
mov qword [state], compiling
ret
@@ -744,6 +721,15 @@ defword "immediate", immediate, 0
mov byte [r12], r13b
ret
+defword "smudge", smudge, 0 ; TOGGLES it (follows fig-forth but i kinda dont like it)
+ mov r12, [latest]
+ add r12, 8
+ mov r13b, [r12]
+ mov r15b, smudge_mask
+ xor r13b, r15b
+ mov byte [r12], r13b
+ ret
+
; e9 [00 00 00 00] relative 32 bit immediate, relative to *instruction after jump*!
; note: the dummy value must be provided *by the calling word*
defword "branch", branch, 0