---------------------------------------------------------------- node DELAY_COUNT(init,incr:int;reset,run:bool) returns (n:int); let n = init -> if not run then pre(n) else if reset then init else pre(n)+incr; tel ---------------------------------------------------------------- node TWO_STATES (init,set,reset:bool) returns (state:bool); let state = init -> if set and not pre(state) then true else if reset and pre(state) then false else pre(state); tel ---------------------------------------------------------------- -- node stopwatch (start_stop,reset: bool) returns (time:int); -- var CK, running: bool; -- let -- time = current(COUNT((0,1,reset) when CK)); -- when not supported -- CK = true -> running or reset; -- running = TWO_STATES(false, start_stop, start_stop); -- tel ---------------------------------------------------------------- -- second attempt: ---------------------------------------------------------------- node stopwatch2 (start_stop,reset: bool) returns (time:int); var CK, running: bool; let time = DELAY_COUNT(0,1,reset,CK); CK = true -> running or reset; running = TWO_STATES(false, start_stop, start_stop); tel