diff options
| -rw-r--r-- | jefs.s | 36 |
1 files changed, 11 insertions, 25 deletions
@@ -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 |
