STRE Prototype SGLB Misc/Class Reference CLAS 354261 ESBR SORD 2 LITO 0 clock input, counter counts on rising edge LITO 0 last state of count input (to detect positive edge) LITO 0 reset input, true input resets based upon count mode LITO 0 rollover limit; store full scale or preset 1 here, based on RO mode LITO 0 /e,Full Scale,Preset 1;Rollover Mode PORD 0 the count is stored here PORD 0 /e,Down,Up;Direction PORD 0 /o,0,32767;Preset 1 PORD 0 /o,0,32767;Preset 2 LITO 0 /e,Zero,Preset 1;Reset mode LITO 0 last state of 'at full scale' output LITO 0 last state of 'at zero' output LITO 0 last state of 'above preset 1' output LITO 0 last state of 'above preset 2' output ESBR SGLB Output/#1 LCON /*+;Output 1 (0 - 32767) ESBR SGLB Output/#2 LCON /*+;Output 2 (0 - 100%) ESBR SGLB Output/#3 LCON /*+;At Full Scale ESBR SGLB Output/#4 LCON /*+;At Zero ESBR SGLB Output/#5 LCON /*+;Above Preset 1 ESBR SGLB Output/#6 LCON /*+;Above Preset 2 ESBR ESTR STRE SGLB Misc/Superclass Reference CLAS 354008 ESBR SGLB General/Initialize CMNT Expects: É ¥ inst/É LCAL setrolim É ¥ inst/É LCAL Do Outputs É ¥ inst/É PRIM Heap/Store self ESBR SGLB R&D/Preset 1 /3v8,-100,100,0,100;Preset 1 (0-100%) CMNT Expects: É ¥ inst/arg/É PRIM Stack/Swap É ¥ arg/inst/É LITO 32767 É ¥ 32767/arg/inst/É PRIM Misc/Value to ordinal É ¥ ordinal arg/inst/É LITO 8 É ¥ 8/ordinal arg/inst/É LITO 2 É ¥ 2/8/ordinal arg/inst/É PRIM S_tree/Replace É ¥ inst/É LCAL setrolim update the rollover limit if rollover mode is true LCAL Do Outputs PRIM Heap/Store self ESBR SGLB R&D/Get Preset 1 /2v6,-100,100;%3.2f%% CMNT Expects: É ¥ inst/route/É LITO 8 É ¥ 8/inst/route/É LITO 2 É ¥ 2/8/inst/route/É PRIM S_tree/Read É ¥ ordinal data/inst/route/É LITO 32767 É ¥ 32767/ordinal data/inst/route/É PRIM Misc/Ordinal to value É ¥ value data/inst/route/É PRIM Tags/Set literal É ¥ value data/inst/route/É CALL 354056 ESBR SGLB R&D/Preset 2 /3v8,-100,100,0,100;Preset 2 (0-100%) CMNT Expects: É ¥ inst/arg/É PRIM Stack/Swap É ¥ arg/inst/É LITO 32767 É ¥ 32767/arg/inst/É PRIM Misc/Value to ordinal É ¥ ordinal arg/inst/É LITO 9 É ¥ 9/ordinal arg/inst/É LITO 2 É ¥ 2/9/ordinal arg/inst/É PRIM S_tree/Replace É ¥ inst/É LCAL Do Outputs PRIM Heap/Store self ESBR SGLB R&D/Get Preset 2 /2v6,-100,100;%3.2f%% CMNT Expects: É ¥ inst/route/É LITO 9 É ¥ 9/inst/route/É LITO 2 É ¥ 2/9/inst/route/É PRIM S_tree/Read É ¥ ordinal data/inst/route/É LITO 32767 É ¥ 32767/ordinal data/inst/route/É PRIM Misc/Ordinal to value É ¥ value data/inst/route/É PRIM Tags/Set literal É ¥ value data/inst/route/É CALL 354056 ESBR SGLB R&D/Rollover Mode /3t5,Full Scale,Preset 1;Rollover Mode CMNT Expects: É ¥ inst/arg/É PRIM Stack/Swap É ¥ arg/inst/É LITO 5 É ¥ 5/arg/inst/É LITO 2 É ¥ 2/5/arg/inst/É PRIM S_tree/Replace É ¥ inst/É LCAL setrolim LCAL Do Outputs PRIM Heap/Store self ESBR SGLB R&D/Get Rollover Mode /2t4,Full Scale,Preset 1 CMNT Expects: É ¥ inst/route/É LITO 5 É ¥ 5/inst/route/É CALL 354072 ESBR SGLB R&D/Reset Mode /3t5,Zero,Preset 1;Reset mode CMNT If false, resets to 0 on RESET. CMNT If True, resets to PRESET 1 on RESET CMNT Expects: É ¥ inst/arg/É PRIM Stack/Swap É ¥ arg/inst/É LITO 10 É ¥ 10/arg/inst/É LITO 2 É ¥ 2/10/arg/inst/É PRIM S_tree/Replace É ¥ inst/É LCAL Do Outputs PRIM Heap/Store self ESBR SGLB R&D/Get Reset Mode /2t4,Zero,Preset 1 CMNT Expects: É ¥ inst/route/É LITO 10 É ¥ 10/inst/route/É CALL 354072 ESBR SGLB R&D/Direction /3t5,Down,Up;Direction CMNT Expects É ¥ inst/arg/É PRIM Stack/Swap É ¥ arg/inst/É LITO 7 É ¥ 7/arg/inst/É LITO 2 É ¥ 2/7/arg/inst/É PRIM S_tree/Replace É ¥ inst/É LCAL Do Outputs PRIM Heap/Store self ESBR SGLB R&D/Get Direction /2t15,Down,Up CMNT Expects: É ¥ inst/route/É LITO 7 É ¥ 7/inst/route/É CALL 354072 ESBR SGLB R&D/Reset /3t5,False,True;Reset CMNT Expects: É ¥ inst/arg/É CMNT First check for positive edge triggering LITO 3 É ¥ 3/inst/arg/É LITO 2 É ¥ 2/3/inst/arg/É PRIM S_tree/Read É ¥ old reset state/inst/arg/É PRIM Stack/Xswap É ¥ old reset state/arg/inst/É CMNT Branch if new input is different from old state PRIM Ordinal/Test equal É ¥ result/arg/inst/É BRFL É ¥ arg/inst/É CMNT We are here if the reset input has changed. If it is now CMNT false, then do nothing. Else effect a reset. CMNT First save the new state. PRIM Stack/Dup down É ¥ arg/inst/argÉ LITO 3 É ¥ 3/arg/inst/arg/É LITO 2 É ¥ 2/3/arg/inst/arg/É PRIM S_tree/Replace É ¥ inst/arg/É PRIM Stack/Swap É ¥ arg/inst/É BRFL É ¥ inst/É CMNT Now the new reset state has been stored. If it is false, CMNT then do nothing. PRIM Heap/Store self BRTR CMNT Otherwise, reset is now true, so perform a reset CMNT Read Reset Mode. If true, set COUNT to PRESET 1, else to 0. LITO 10 É ¥ 10/inst/É LITO 2 É ¥ 2/10/inst/É PRIM S_tree/Read É ¥ reset mode/inst/É BRFL É ¥ inst/É CMNT Mode is false, so reset count to 0. LITO 0 É ¥ 0/inst/É LITO 6 É ¥ 6/0/inst/É LITO 2 É ¥ 2/6/0/inst/É PRIM S_tree/Replace É ¥ inst/É LCAL Do Outputs PRIM Heap/Store self BRTR CMNT Reset Mode is TRUE, so store PRESET 1 in COUNT LITO 8 É ¥ 8/inst/É LITO 2 É ¥ 2/8/inst/É PRIM S_tree/Read É ¥ PRESET 1/inst/É LITO 6 É ¥ 6/PRESET 1/inst/É LITO 2 É ¥ 2/6/PRESET 1/inst/É PRIM S_tree/Replace É ¥ inst/É LCAL Do Outputs PRIM Heap/Store self BRTR PRIM Stack/Drop É ¥ inst/É PRIM Heap/Store self ESBR SGLB R&D/Get Reset /2t4,False,True CMNT Expects: É ¥ inst/route/É LITO 3 É ¥ 3/inst/route/É CALL 354072 ESBR SGLB R&D/Clock Input /3t5,False,True;Count Input CMNT Expects: É ¥ inst/arg/É PRIM Stack/Over É ¥ arg/inst/arg/É BRFL É ¥ inst/arg/É CMNT if input is low, then just store it and be done. PRIM Stack/Swap É ¥ arg/inst/É LITO 1 É ¥ 1/arg/inst/É LITO 2 É ¥ 2/1/arg/inst/É PRIM S_tree/Replace É ¥ inst/É PRIM Heap/Store self BRTR CMNT If input is high, then if currently high, do nothing. CMNT If input was low, then this is a rising edge, so it's time to count LITO 1 É ¥ 1/inst/arg/É LITO 2 É ¥ 2/1/inst/arg/É PRIM S_tree/Read É ¥ last input/inst/arg/É BRFL É ¥ /inst/arg/É CMNT Here, a rising edge has been detected, so perform CMNT the appropriate counting function. CMNT First store the new count input state. PRIM Stack/Swap É ¥ arg/inst/É LITO 1 É ¥ 1/arg/inst/É LITO 2 É ¥ 2/1/arg/inst/É PRIM S_tree/Replace É ¥ inst/É CMNT Now get the direction input, to see which way to count LITO 7 É ¥ 7/inst/É LITO 2 É ¥ 2/7/inst/É PRIM S_tree/Read É ¥ direction/inst/É BRFL É ¥ inst/É CMNT here, false, so count down. Get the existing count, and CMNT see if currently at 0. If so, load the number which has CMNT been stored in ROLLOVER. Otherwise, just decrement the count. LITO 6 É ¥ 6/inst/É LITO 2 É ¥ 2/6/inst/É PRIM S_tree/Read É ¥ count/inst/É BRFL É ¥ inst/É CMNT Here, 0, so load from ROLLOVER LITO 4 É ¥ 4/inst/É LITO 2 É ¥ 2/4/inst/É PRIM S_tree/Read É ¥ ROLLOVER/inst/É LITO 6 É ¥ 6/ROLLOVER/inst/É LITO 2 É ¥ 2/6/ROLLOVER/inst/É PRIM S_tree/Replace É ¥ inst/É LCAL Do Outputs PRIM Heap/Store self BRTR CMNT Otherwise, not 0, so just decrement the existing count LITO 6 É ¥ 6/inst/É LITO 2 É ¥ 2/6/inst/É PRIM S_tree/Read É ¥ count/inst/É PRIM Ordinal/Decrement É ¥ count-1/inst/É LITO 6 É ¥ 6/count-1/inst/É LITO 2 É ¥ 2/6/count-1/inst/É PRIM S_tree/Replace É ¥ inst/É LCAL Do Outputs PRIM Heap/Store self BRTR CMNT Here, direction is TRUE, so must count up. First check to see CMNT if at rollover level, and if so, set count to 0. CMNT Else, simply increment the count. LITO 6 É ¥ 6/inst/É LITO 2 É ¥ 2/6/inst/É PRIM S_tree/Read É ¥ COUNT/inst/É PRIM Stack/Swap É ¥ inst/COUNT/É LITO 4 É ¥ 4/inst/COUNT/É LITO 2 É ¥ 2/4/inst/COUNT/É PRIM S_tree/Read É ¥ ROLLOVER/inst/COUNT/É PRIM Stack/Xswap É ¥ ROLLOVER/COUNT/inst/É CMNT Here, we have the upper count limit on top of the stack, CMNT and the current count as the second element on the stack CMNT After a COMPARE operation, if result is FALSE, then increment CMNT the COUNT. If the result is TRUE (COUNT >= ROLLOVER), then CMNT load 0 as the COUNT. PRIM Ordinal/Compare É ¥ result/COUNT/inst/É BRFL É ¥ COUNT/inst/É CMNT Here, counter has not yet reached limit. Just inc it. PRIM Ordinal/Increment É ¥ COUNT+1/inst/É LITO 6 É ¥ 6/COUNT+1/inst/É LITO 2 É ¥ 2/6/COUNT+1/inst/É PRIM S_tree/Replace É ¥ inst/É LCAL Do Outputs PRIM Heap/Store self BRTR CMNT Otherwise, counter is at limit. Set it back to 0. PRIM Stack/Drop É ¥ inst/É LITO 0 É ¥ 0/inst/É LITO 6 É ¥ 6/0/inst/É LITO 2 É ¥ 2/6/0/inst/É PRIM S_tree/Replace É ¥ inst/É LCAL Do Outputs PRIM Heap/Store self BRTR CMNT Here, count input is true, and was true last time, so no CMNT action is necessary, except to clean up the stack, and exit. PRIM Stack/Xdrop É ¥ inst/É PRIM Heap/Store self ESBR SGLB R&D/Get Clock Input /2t4,False,True CMNT Expects: É ¥ inst/route/É LITO 1 É ¥ 1/inst/route/É CALL 354072 ESBR SGLB R&D/Count /3u110,0,32767;Enter Count CMNT Expects: É ¥ inst/arg/É PRIM Stack/Swap É ¥ arg/inst/É LITO 6 É ¥ 6/arg/inst/É LITO 2 É ¥ 2/6/arg/inst/É PRIM S_tree/Replace É ¥ inst/É LCAL Do Outputs PRIM Heap/Store self ESBR SGLB R&D/Get Count /2u2 CMNT Expects: É ¥ inst/route/É LITO 6 É ¥ 6/inst/route/É CALL 354072 ESBR SGLB R&D/Get Full Scale /2t4,False,True;At Full Scale CMNT Expects: É ¥ inst/route/É LITO 11 É ¥ 11/inst/route/É CALL 354072 ESBR SGLB R&D/Get Zero /2t4,False,True;At Zero CMNT Expects: É ¥ inst/route/É LITO 12 É ¥ 12/inst/route/É CALL 354072 ESBR SGLB R&D/Get Above Preset 1 /2t4,False,True;Above Preset 1 CMNT Expects: É ¥ inst/route/É LITO 13 É ¥ 13/inst/route/É CALL 354072 ESBR SGLB R&D/Get Above Preset 2 /2t4,False,True;Above Preset 2 CMNT Expects: É ¥ inst/route/É LITO 14 É ¥ 14/inst/route/É CALL 354072 ESBR ESTR LDEF setrolim CMNT This reads rollover mode, and sets up the rollover limit CMNT accordingly. CMNT Input: É ¥ inst/É CMNT Output: É ¥ inst/É LITO 32767 É ¥ 32767/inst/É LITO 4 É ¥ 4/32767/inst/É LITO 2 É ¥ 2/4/32767/inst/É CMNT first preset rollover limit to 32767 (assume mode is false) PRIM S_tree/Replace É ¥ inst/É LITO 5 É ¥ 5/inst/É LITO 2 É ¥ 2/5/inst/É PRIM S_tree/Read É ¥ rmode/inst/É BRFL If false, then need fs in roll limit, which is already there PRIM Misc/Idle BRTR LITO 8 É ¥ 8/inst/É LITO 2 É ¥ 2/8/inst/É CMNT Here, the roll mode is true, which means that the rollover CMNT limit must be set to preset 1, instead of 32767 PRIM S_tree/Read É ¥ preset 1/inst/É LITO 4 É ¥ 4/preset 1/inst/É LITO 2 É ¥ 2/4/preset 1/inst/É PRIM S_tree/Replace É ¥ inst/É EDEF LDEF Do Outputs CMNT Input: É ¥ inst/É CMNT Output: É ¥ inst/É CMNT CMNT This routine updates all of the outputs from the counter. CMNT first do the ordinal count output. CMNT LITO 6 É ¥ 6/inst/É LITO 2 É ¥ 2/6/inst/É PRIM S_tree/Read É ¥ COUNT/inst/É PRIM Stack/Dup down É ¥ COUNT/inst/COUNT/É GSYM Output/#1 É ¥ #1/COUNT/inst/COUNT/É PRIM Misc/Send entry É ¥ inst/COUNT/É CMNT CMNT Now the value count output CMNT PRIM Stack/Swap É ¥ COUNT/inst/É PRIM Stack/Dup down É ¥ COUNT/inst/COUNT/É LITO 32767 É ¥ 32767/COUNT/inst/COUNT/É PRIM Misc/Ordinal to value É ¥ value COUNT/inst/COUNT/É GSYM Output/#2 É ¥ #2/value COUNT/inst/COUNTÉ PRIM Misc/Send entry É ¥ inst/COUNT/É CMNT LCAL Test Out 3 LCAL Test Out 4 LCAL Test Out 5 LCAL Test Out 6 PRIM Stack/Xdrop É ¥ inst/É CMNT CMNT CMNT CMNT EDEF LDEF Test Out 3 CMNT Input: É ¥ inst/COUNT/É CMNT Output: É ¥ new output 3/inst/COUNT/É CMNT CMNT Here the output for full scale is handled. First check to see CMNT what the output should be. Then, if it has changed since last CMNT time, output the new state. (in Do Out 3). CMNT PRIM Stack/Over É ¥ COUNT/inst/COUNT/É LITO 32767 É ¥ 32767/COUNT/inst/COUNT/É PRIM Ordinal/Test equal É ¥ result/COUNT/inst/COUNT/É PRIM Stack/Xdrop É ¥ result/inst/COUNT/É BRFL É ¥ inst/COUNT/É LITO 0 É ¥ 0/inst/COUNT/É LCAL Do Out 3 BRTR LITO 1 É ¥ 1/inst/COUNT/É LCAL Do Out 3 EDEF LDEF Do Out 3 CMNT Input: É ¥ new output 3/inst/COUNTÉ CMNT Output: É ¥ inst/COUNTÉ CMNT This routine reads the last state of output 3, and CMNT outputs the new state if it is different. CMNT PRIM Stack/Swap É ¥ inst/new output 3/COUNTÉ LITO 11 É ¥ 11/inst/new output 3/COUNTÉ LITO 2 É ¥ 2/11/inst/new output 3/COUNTÉ PRIM S_tree/Read É ¥ old output 3/inst/new output 3/COUNTÉ PRIM Stack/Xswap É ¥ old output 3/new output 3/inst/COUNTÉ PRIM Ordinal/Test equal É ¥ result/new output 3/inst/COUNTÉ BRFL É ¥ new output 3/inst/COUNTÉ PRIM Stack/Dup down É ¥ new output 3/inst/new output 3/COUNTÉ LITO 11 É ¥ 11/new output 3/inst/new output 3/COUNTÉ LITO 2 É ¥ 2/11/new output 3/inst/new output 3/COUNTÉ PRIM S_tree/Replace É ¥ inst/new output 3/COUNTÉ PRIM Stack/Swap É ¥ new output 3/inst/COUNTÉ GSYM Output/#3 É ¥ #3/new output 3/inst/COUNTÉ PRIM Misc/Send entry É ¥ /inst/COUNTÉ BRTR PRIM Stack/Drop É ¥ inst/COUNT/É EDEF LDEF Test Out 4 CMNT Input: É ¥ inst/COUNT/É CMNT Output: É ¥ new output 4/inst/COUNT/É CMNT CMNT Here the 'At Zero' output is handled. First check to see what CMNT the output should be. Then, if it has changed since last time, CMNT output the new state. (in Do Out 4). CMNT PRIM Stack/Over É ¥ COUNT/inst/COUNT/É LITO 0 É ¥ 0/COUNT/inst/COUNT/É PRIM Ordinal/Test equal É ¥ result/COUNT/inst/COUNT/É PRIM Stack/Xdrop É ¥ result/inst/COUNT/É BRFL É ¥ inst/COUNT/É LITO 0 É ¥ 0/inst/COUNT/É LCAL Do Out 4 BRTR LITO 1 É ¥ 1/inst/COUNT/É LCAL Do Out 4 EDEF LDEF Do Out 4 CMNT Input: É ¥ new output 4/inst/COUNTÉ CMNT Output: É ¥ inst/COUNTÉ CMNT This routine reads the last state of output 4, and CMNT outputs the new state if it is different. CMNT CMNT PRIM Stack/Swap É ¥ inst/new output 4/COUNTÉ LITO 12 É ¥ 12/inst/new output 4/COUNTÉ LITO 2 É ¥ 2/12/inst/new output 4/COUNTÉ PRIM S_tree/Read É ¥ old output 4/inst/new output 4/COUNTÉ PRIM Stack/Xswap É ¥ old output 4/new output 4/inst/COUNTÉ PRIM Ordinal/Test equal É ¥ result/new output 4/inst/COUNTÉ BRFL É ¥ new output 4/inst/COUNTÉ PRIM Stack/Dup down É ¥ new output 3/inst/new output 3/COUNTÉ LITO 12 É ¥ 12/new output 3/inst/new output 3/COUNTÉ LITO 2 É ¥ 2/12/new output 3/inst/new output 3/COUNTÉ PRIM S_tree/Replace É ¥ inst/new output 3/COUNTÉ PRIM Stack/Swap É ¥ new output 3/inst/COUNTÉ GSYM Output/#4 É ¥ #4/new output 4/inst/COUNTÉ PRIM Misc/Send entry É ¥ /inst/COUNTÉ BRTR PRIM Stack/Drop É ¥ inst/COUNT/É EDEF LDEF Test Out 5 CMNT Input: É ¥ inst/COUNT/É CMNT Output: É ¥ new output 5/inst/COUNT/É CMNT CMNT This is the routine to handle the 'Above Preset 1' output. CMNT First, the new state of it is computed. This is passed to CMNT the local instruction Do Out 5, which tests to see if the new CMNT output is different from the old one and if so, sends it out. CMNT LITO 8 É ¥ 8/inst/COUNT/É LITO 2 É ¥ 2/8/inst/COUNT/É PRIM S_tree/Read É ¥ PRESET 1/inst/COUNT/É PRIM Stack/Xswap É ¥ PRESET 1/COUNT/inst/É CMNT Will be True if COUNT is >= PRESET 1, which implies that CMNT the output should be set to TRUE. PRIM Ordinal/Compare É ¥ result/COUNT/inst/É PRIM Stack/Xswap É ¥ result/inst/COUNT/É BRFL É ¥ inst/COUNT/É LITO 0 É ¥ 0/inst/COUNT/É LCAL Do Out 5 BRTR LITO 1 É ¥ 1/inst/COUNT/É LCAL Do Out 5 EDEF LDEF Do Out 5 CMNT Input: É ¥ new output 5/inst/COUNTÉ CMNT Output: É ¥ inst/COUNTÉ CMNT This routine reads the last state of output 5, and CMNT outputs the new state if it is different. CMNT CMNT PRIM Stack/Swap É ¥ inst/new output 5/COUNTÉ LITO 13 É ¥ 13/inst/new output 5/COUNTÉ LITO 2 É ¥ 2/13/inst/new output 5/COUNTÉ PRIM S_tree/Read É ¥ old output 5/inst/new output 5/COUNTÉ PRIM Stack/Xswap É ¥ old output 5/new output 5/inst/COUNTÉ PRIM Ordinal/Test equal É ¥ result/new output 5/inst/COUNTÉ BRFL É ¥ new output 5/inst/COUNTÉ PRIM Stack/Dup down É ¥ new output 3/inst/new output 3/COUNTÉ LITO 13 É ¥ 13/new output 3/inst/new output 3/COUNTÉ LITO 2 É ¥ 2/13/new output 3/inst/new output 3/COUNTÉ PRIM S_tree/Replace É ¥ inst/new output 3/COUNTÉ PRIM Stack/Swap É ¥ new output 3/inst/COUNTÉ GSYM Output/#5 É ¥ #5/new output 5/inst/COUNTÉ PRIM Misc/Send entry É ¥ inst/COUNTÉ BRTR PRIM Stack/Drop É ¥ inst/COUNT/É EDEF LDEF Test Out 6 CMNT Input: É ¥ inst/COUNT/É CMNT Output: É ¥ new output 6/inst/COUNT/É CMNT CMNT This is the routine to handle the 'Above Preset 2' output. CMNT First, the new state of it is computed. This is passed to CMNT the local instruction Do Out 6, which tests to see if the new CMNT output is different from the old one and if so, sends it out. CMNT LITO 9 É ¥ 9/inst/COUNT/É LITO 2 É ¥ 2/9/inst/COUNT/É PRIM S_tree/Read É ¥ PRESET 2/inst/COUNT/É PRIM Stack/Xswap É ¥ PRESET 2/COUNT/inst/É CMNT Will be True if COUNT is >= PRESET 2, which implies that CMNT the output should be set to TRUE. PRIM Ordinal/Compare É ¥ result/COUNT/inst/É PRIM Stack/Xswap É ¥ result/inst/COUNT/É BRFL É ¥ inst/COUNT/É LITO 0 É ¥ 0/inst/COUNT/É LCAL Do Out 6 BRTR LITO 1 É ¥ 1/inst/COUNT/É LCAL Do Out 6 EDEF LDEF Do Out 6 CMNT Input: É ¥ new output 6/inst/COUNTÉ CMNT Output: É ¥ inst/COUNTÉ CMNT This routine reads the last state of output 6, and CMNT outputs the new state if it is different. CMNT CMNT PRIM Stack/Swap É ¥ inst/new output 6/COUNTÉ LITO 14 É ¥ 14/inst/new output 6/COUNTÉ LITO 2 É ¥ 2/14/inst/new output6/COUNTÉ PRIM S_tree/Read É ¥ old output 6/inst/new output 6/COUNTÉ PRIM Stack/Xswap É ¥ old output 6/new output 6/inst/COUNTÉ PRIM Ordinal/Test equal É ¥ result/new output 6/inst/COUNTÉ BRFL É ¥ new output 6/inst/COUNTÉ PRIM Stack/Dup down É ¥ new output 3/inst/new output 3/COUNTÉ LITO 14 É ¥ 14/new output 3/inst/new output 3/COUNTÉ LITO 2 É ¥ 2/14/new output 3/inst/new output 3/COUNTÉ PRIM S_tree/Replace É ¥ inst/new output 3/COUNTÉ PRIM Stack/Swap É ¥ new output 3/inst/COUNTÉ GSYM Output/#6 É ¥ #6/new output 6/inst/COUNTÉ PRIM Misc/Send entry É ¥ /inst/COUNTÉ BRTR PRIM Stack/Drop É ¥ inst/COUNT/É EDEF