"Asm.fif" include <{ NEWDICT SWAP REPEAT: s2 XCHG0 NEWC 16 STU s2 XCHG0 16 INT DICTISETB }>s dup csr. constant mkdict(16,16).code { mkdict(16,16).code runvmcode abort"cannot create 16->16 dictionary" } : mkdict(16,16) <{ ZERO WHILE:<{ SWAP 16 INT DICTIREMMAX }>DO<{ // n d' x i SWAP 16 LDU ENDS // n d' i s 2SWAP SWAP INC }> DROP }>s dup csr. constant explode_dict(16,16).code { explode_dict(16,16).code runvmcode abort"cannot explode 16->16 dictionary" } : xdict(16,16) { xdict(16,16) ."{ " { swap . ."-> " . ."; " } swap times ."}" cr } : .dict(16,16) { xdict(16,16) { dup 0< not { ."+" } if ._ 64 + emit } swap times space } : .v 169 13 239 dup dup * swap 289 17 3 mkdict(16,16) constant dict { 16 { 16 i@+ s> 1+ 16 i, true } dictmap } : dict:1+ { 16 { 16 i@+ s> swap 16 i@+ s> + 16 i, true } dictmerge } : dict:+ dict dict:1+ dup