From c804a6deb60a60cce4ddcc79495829ad6553728a Mon Sep 17 00:00:00 2001 From: kitty Date: Mon, 23 Mar 2026 18:30:06 +1100 Subject: compile-only actually implemented --- sanctuary.s | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'sanctuary.s') diff --git a/sanctuary.s b/sanctuary.s index a209303..d5e387f 100644 --- a/sanctuary.s +++ b/sanctuary.s @@ -315,12 +315,22 @@ defcode "interpret", interpret, 0 cmp r11, false je .intrpnum + call dup + call compile_only_q + pspop r13 + cmp r13, true + je .componly + .callw: ; label here for immed jump call to_body pspop r13 call r13 jmp .loop +.componly: + call dots + call abort + .intrpnum: call number pspop r11 @@ -378,6 +388,17 @@ defcode "immediate?", immediate_q, 0 pspush r13 ret +defcode "compile-only?", compile_only_q, 0 + pspop r11 + add r11, 8 + mov r12b, byte [r11] + xor r13, r13 + test r12b, comp_only_mask + setnz r13b + neg r13 + pspush r13 + ret + defcode ">body", to_body, 0 pspop r11 add r11, 9 @@ -505,6 +526,15 @@ defcode "immediate", immediate, 0 mov byte [r12], r13b ret +defcode "compile-only", compile_only, 0 + mov r12, [latest] + add r12, 8 + mov r13b, [r12] + mov r14b, comp_only_mask + or r13b, r14b + mov byte [r12], r13b + ret + defcode "char", char, 0 call parse_name call drop -- cgit v1.2.3