CMNT Stores state, sends non-inverted and inverted outputs given data CMNT Input: É ¥ new/old/inst/É CMNT Output: É ¥ É BRFL branch if new=0 BRFL branch if old=0 CMNT new=0; old=0 PRIM Heap/Store self É ¥ É BRTR CMNT new=0; old=1 LITO 0 É ¥ 0/inst/É LCAL end É ¥ É BRTR BRFL branch if old=0 CMNT new=1; old=0 LITO 1 É ¥ 1/inst/É LCAL end É ¥ É BRTR CMNT new=1; old=1 PRIM Heap/Store self É ¥ É LDEF end CMNT stores new state and sends outputs CMNT Input: É ¥ data/inst/É CMNT Output: É ¥ É PRIM Stack/Dup down É ¥ data/inst/data/É CMNT state is stored as entry 1 in key 2 LITO 1 É ¥ 1/data/inst/data/É LITO 2 É ¥ 2/1/data/inst/data/É PRIM S_tree/Replace É ¥ inst/data/É PRIM Stack/Over É ¥ data/inst/data/É PRIM Ordinal/Test zero É ¥ ~data/inst/data/É CMNT output #2 is the inverted output GSYM Output/#2 É ¥ #2/~data/inst/data/É PRIM Misc/Send entry É ¥ inst/data/É PRIM Stack/Swap É ¥ data/inst/É CMNT output #1 is the non-inverted output GSYM Output/#1 É ¥ #1/data/inst/É PRIM Misc/Send entry É ¥ inst/É PRIM Heap/Store self É ¥ É EDEF