From b0c1c394e20c582ff9df3234559f7f88fc1f426c Mon Sep 17 00:00:00 2001 From: kitty Date: Mon, 16 Feb 2026 23:06:18 +1100 Subject: smudge, rewrite : using create and smudge --- jefs.s | 36 +++++++++++------------------------- 1 file 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 -- cgit v1.2.3