DECLARE SUB timerAdd (element!, time!, value!) DECLARE SUB timerinit () DECLARE SUB timerprocess () DIM SHARED timerTime(0 TO 50, 0 TO 100) DIM SHARED timerValue(0 TO 50, 0 TO 100) DIM SHARED timerCplace(0 TO 50) DIM SHARED timerCtime(0 TO 50) DIM SHARED timerCvalue(0 TO 50) DIM SHARED timerLast timerinit 2 timerprocess GOTO 2 SUB timerAdd (element, time, value) FOR a = 0 TO 100 IF (timerTime(element, a) = 0) AND (timerValue(element, a) = 0) THEN GOTO timer3 NEXT a timer3: timerTime(element, a) = time timerValue(element, a) = value END SUB SUB timerdisp LOCATE 1, 1 FOR a = 0 TO 10 PRINT timerCplace(a), timerCtime(a), timerCvalue(a) NEXT a END SUB SUB timerinit timerLast = TIMER ' stuff size timerAdd 0, 0, 50 timerAdd 0, 7, 10 END SUB SUB timerprocess timerCurrent = TIMER timerDiff = timerCurrent - timerLast timerLast = timerCurrent FOR a = 0 TO 50 ctim = timerCtime(a) + timerDiff Cplace = timerCplace(a) timer2: IF timerTime(a, Cplace + 1) = -1 THEN ctim = 0 Cplace = 0 END IF IF timerTime(a, Cplace + 1) < ctim THEN IF timerTime(a, Cplace + 1) = 0 THEN timerCvalue(a) = timerValue(a, Cplace) GOTO timer1: END IF Cplace = Cplace + 1 GOTO timer2 END IF v1 = timerValue(a, Cplace) t1 = timerTime(a, Cplace) v2 = timerValue(a, Cplace + 1) t2 = timerTime(a, Cplace + 1) IF v1 = v2 THEN timerCvalue(a) = v1 ELSE Tdiff1 = t2 - t1 Tdiff2 = ctim - t1 Vdiff = v2 - v1 timerCvalue(a) = Tdiff2 / Tdiff1 * Vdiff + v1 END IF timer1: timerCplace(a) = Cplace timerCtime(a) = ctim NEXT a END SUB