%%off % Author M. Ruckert % 6.4 Program L PREFIX :hash: H IS $0 Tabledefinitionblock: Table, M, Vacancies k IS $1 Key m IS $2 Local Variables i IS $3 T IS $4 ki IS $5 t IS $6 rR IS :rR TABLE IS 0 M IS 8 V IS 16 %%on Start LDO m,H,M \hfil$1$& $m\is H_M$ LDOU T,H,TABLE \hfil$1$& $T_k\is H_T$ DIV t,k,m \hfil$60$& {\ul{\sl L1. Hash.}} GET i,rR \hfil$1$& $i\is k \mod m$ SL i,i,3 \hfil$1$& $i\is 8i$ JMP 2F \hfil$1$& %%% 8H SL i,m,3 \hfil$E$& {\ul{\sl L3. Advance to next.}} 3H SUB i,i,8 \hfil$C+E-1$& $i\is i-1$. 2H LDO ki,T,i \hfil$C+E$& {\ul{\sl L2. Compare.}} CMP t,ki,k \hfil$C+E$& $k_i=k$? BZ t,Found \hfil$C+E+2S$&Exit if $k_i=k$. BNZ ki,3B \hfil$3C-2E+2S-5$&To L3 if $T_i$ nonempty. BN i,8B \hfil$3E+1-S$&To L3 with $i\is m$ if $i< 0$. %%% LDO t,H,V \hfil$1-S$&{\ul{\sl L4. Insert.}} $t\is H_V$. BZ t,Fail \hfil$1-S$& Overflow if $N=M-1$. SUB t,t,1 \hfil$1-S$& STO t,H,V \hfil$1-S$& Increase $N$ by 1. STO k,T,i \hfil$1-S$& Store key. POP 0,0 %%% Found ADDU $0,T,i \hfil$S$& POP 1,0 Fail NEG $0,1 \hfil$0$& POP 1,0 %%off PREFIX :