N@Plotter Controller I@DestX DestY Draw Move Speed Timer O@X Y Fire TimerRun TimerReset Running first()->TimerRun=0,TimerReset=1,Fire=0,X=10,Y=10, Running=0, On=0; !On & Draw & ~Draw -> On=1, Fire=1, Uncalibrated=1, Running=1; !On & Move & ~Move -> On=1, Fire=0, Uncalibrated=1, Running=1; Uncalibrated -> XD = DestX - X, SX = X; Uncalibrated -> YD = DestY - Y, SY = Y; Uncalibrated -> Dist = sqrt((XD*XD) + (YD*YD)); Uncalibrated -> Duration = Dist/Speed; Uncalibrated -> TimerRun=1,TimerReset=0,Uncalibrated=0; Timer > Duration -> Timer = Duration, Stop=1; On & Timer -> X = SX + XD*(Timer/Duration); On & Timer -> Y = SY + YD*(Timer/Duration); Stop -> X = SX + XD, Y = SY + YD, Stop=0,TimerRun=0,TimerReset=1,NoUpdate=1,interval(250); clk()->On=0,Fire=0,NoUpdate=0,Running=0;