4 REM allocate the data hashmap
7 REM set the data and outer pointer
11 REM update environment pointer and return new environment
16 REM ENV_SET(E%, K%, V%) -> R%
24 REM ENV_SET_S(E%, K$, V%) -> R%
32 REM ENV_FIND(E%, K%) -> R%
37 REM More efficient to use GET for value (R%) and contains? (T3%)
39 REM if we found it, save value in T4% for ENV_GET
40 IF T3
%=1 THEN T4
%=R
%: GOTO ENV_FIND_DONE
41 EF
%=ZO
%(EF
%): REM get outer environment
42 IF EF
%<>-1 THEN GOTO ENV_FIND_LOOP
47 REM ENV_GET(E%, K%) -> R%
50 IF R
%=-1 THEN ER
%=1: ER
$="'" + ZS
$(Z%(K%,1)) + "' not found": RETURN