CMNT General instruction for handling complex logic CMNT Input: É/arg ¥ list/inst/É (see below for description of list) CMNT Output: É ¥ inst/É CMNT - CMNT The list contains list entries tagged literal, macro or delegate CMNT Literal: store arg in specified structure. -->index-->key--X CMNT Macro: store arg and compute structure. -->index-->key--X CMNT Delegate: send arg to non-inv and inv outputs. -->output#--X CMNT - CMNT Expects instance entries: -->list-->MAP-->LSB-->2SB-->3SB-->MSB--X CMNT - PRIM List/Test for leaf É/arg ¥ rslt/list/inst/É BRFL branch if not a leaf PRIM List/Behead É/arg ¥ entry/list/inst/É PRIM Stack/Xswap É/arg ¥ entry/inst/list/É LCAL $$1 É/arg ¥ inst/list/É PRIM Stack/Swap É/arg ¥ list/inst/É CALL 354251 BRTR PRIM List/List to item É/arg ¥ entry/inst/É LCAL $$1 É/arg ¥ inst/É PRIM Stack/Drop from aux É ¥ inst/É LDEF $$1 CMNT Input: É/arg ¥ entry/inst/É CMNT Output: É/arg ¥ inst/É PRIM Tags/Test call É/arg ¥ rslt/entry/inst/É BRFL branch if not a macro PRIM Tags/Test literal É/arg ¥ rslt/entry/inst/É BRFL branch if not a literal PRIM Tags/Test delegate É/arg ¥ rslt/entry/inst/É BRFL CMNT Entry is a selection: - "inverted output" PRIM List/List to item É/arg ¥ out#/inst/É PRIM Stack/Dup from aux É/arg ¥ arg/out#/inst/É PRIM Ordinal/Test zero É/arg ¥ ~arg/out#/inst/É PRIM Stack/Swap É/arg ¥ out#/~arg/inst/É PRIM Misc/Send entry É/arg ¥ inst/É BRTR CMNT Entry is a delegate: - "output" PRIM List/List to item É/arg ¥ out#/inst/É PRIM Stack/Dup from aux É/arg ¥ arg/out#/inst/É PRIM Stack/Swap É/arg ¥ out#/arg/inst/É PRIM Misc/Send entry É/arg ¥ inst/É BRTR CMNT Entry is a literal: - "store" PRIM List/List to stack É/arg ¥ key/index/inst/É PRIM Stack/Dup from aux É/arg ¥ arg/key/index/inst/É PRIM Stack/Rotate up É/arg ¥ key/index/arg/inst/É PRIM S_tree/Replace É/arg ¥ inst/É BRTR CMNT entry is a macro: - "compute" PRIM Stack/Dup down É/arg ¥ entry/inst/entry/É PRIM List/List to stack É/arg ¥ key/index/inst/entry/É PRIM S_tree/Read É/arg ¥ current/inst/entry/É PRIM Stack/Dup from aux É/arg ¥ arg/current/inst/entry/É PRIM Ordinal/Test equal É/arg ¥ rslt/current/inst/entry/É PRIM Stack/Xdrop É/arg ¥ rslt/inst/entry/É BRFL branch if not equal PRIM Stack/Swap É/arg ¥ entry/inst/É PRIM List/List to stack É/arg ¥ key/index/inst/É PRIM Stack/Duplicate É/arg ¥ key/key/index/inst/É PRIM Stack/Dup from aux É/arg ¥ arg/key/key/index/inst/É PRIM Stack/Second to aux É/arg/key ¥ arg/key/index/inst/É PRIM Stack/Rotate up É/arg/key ¥ key/index/arg/inst/É PRIM S_tree/Replace É/arg/key ¥ inst/É PRIM Stack/Push from aux É/arg ¥ key/inst/É PRIM S_tree/Entry to stack É/arg ¥ MSB/3SB/2SB/LSB/MAP/list/inst/É PRIM Ordinal/Do logic É/arg ¥ rslt/list/inst/É PRIM Stack/Pop to aux É/arg/rslt ¥ list/inst/É CALL 354251 É/arg ¥ inst/É BRTR PRIM Stack/Xdrop É/arg ¥ inst/É EDEF