X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=blobdiff_plain;f=src%2Fforth.jl;h=5730c380a07215cd4712e30f61bea3a701e11ab1;hb=824a4be938c62e1254237eef0315d9248ab68dc5;hp=da7321b0f596494a06fed518b40d7f4d17fac9dd;hpb=dafc6784df0004f3fe302fd1d43ba3eaaf41ee2d;p=forth.jl.git diff --git a/src/forth.jl b/src/forth.jl index da7321b..5730c38 100644 --- a/src/forth.jl +++ b/src/forth.jl @@ -698,7 +698,7 @@ end) # Dictionary searches -LFATOCFA_CFA = defPrimWord("LFA>CFA", () -> begin +FROMLINK_CFA = defPrimWord("LINK>", () -> begin addr = popPS() lenAndFlags = mem[addr+1] @@ -709,8 +709,6 @@ LFATOCFA_CFA = defPrimWord("LFA>CFA", () -> begin return NEXT end) -TOBODY_CFA = defWord(">BODY", [INCR_CFA, EXIT_CFA]) - CONTEXT, CONTEXT_CFA = defNewVar("CONTEXT", zeros(Int64, 100)) mem[CONTEXT] = FORTH_CFA NUMCONTEXT, NUMCONTEXT_CFA = defNewVar("#CONTEXT", 1) @@ -755,7 +753,7 @@ FIND_CFA = defPrimWord("FIND", () -> begin if lfa > 0 pushPS(lfa) - callPrim(mem[LFATOCFA_CFA]) + callPrim(mem[FROMLINK_CFA]) if (lenAndFlags & F_IMMED) == F_IMMED pushPS(1) else @@ -890,7 +888,7 @@ end, name="DODOES") DOES_HELPER_CFA = defPrimWord("(DOES>)", () -> begin pushPS(mem[mem[CURRENT]]) - callPrim(mem[LFATOCFA_CFA]) + callPrim(mem[FROMLINK_CFA]) cfa = popPS() runtimeAddr = popPS() @@ -901,7 +899,7 @@ DOES_HELPER_CFA = defPrimWord("(DOES>)", () -> begin end)), name="doesPrim") return NEXT -end, flags=F_IMMED) +end, flags=F_IMMED | F_HIDDEN) DOES_CFA = defWord("DOES>", [LIT_CFA, LIT_CFA, COMMA_CFA, HERE_CFA, LIT_CFA, 3, ADD_CFA, COMMA_CFA,