initial cammit
[qbasicapps.git] / modules / timer.bas
1 DECLARE SUB timerAdd (element!, time!, value!)\r
2 DECLARE SUB timerinit ()\r
3 DECLARE SUB timerprocess ()\r
4 DIM SHARED timerTime(0 TO 50, 0 TO 100)\r
5 DIM SHARED timerValue(0 TO 50, 0 TO 100)\r
6 \r
7 DIM SHARED timerCplace(0 TO 50)\r
8 DIM SHARED timerCtime(0 TO 50)\r
9 DIM SHARED timerCvalue(0 TO 50)\r
10 DIM SHARED timerLast\r
11 \r
12 \r
13 timerinit\r
14 2\r
15 \r
16 \r
17 \r
18 timerprocess\r
19 GOTO 2\r
20 \r
21 SUB timerAdd (element, time, value)\r
22 \r
23 FOR a = 0 TO 100\r
24   IF (timerTime(element, a) = 0) AND (timerValue(element, a) = 0) THEN GOTO timer3\r
25 NEXT a\r
26 timer3:\r
27 \r
28 timerTime(element, a) = time\r
29 timerValue(element, a) = value\r
30 \r
31 END SUB\r
32 \r
33 SUB timerdisp\r
34 LOCATE 1, 1\r
35 \r
36 FOR a = 0 TO 10\r
37   PRINT timerCplace(a), timerCtime(a), timerCvalue(a)\r
38 NEXT a\r
39 \r
40 END SUB\r
41 \r
42 SUB timerinit\r
43 timerLast = TIMER\r
44 \r
45 \r
46 ' stuff size\r
47 timerAdd 0, 0, 50\r
48 timerAdd 0, 7, 10\r
49 \r
50 \r
51 END SUB\r
52 \r
53 SUB timerprocess\r
54 \r
55 timerCurrent = TIMER\r
56 timerDiff = timerCurrent - timerLast\r
57 timerLast = timerCurrent\r
58 \r
59 FOR a = 0 TO 50\r
60   ctim = timerCtime(a) + timerDiff\r
61   Cplace = timerCplace(a)\r
62 timer2:\r
63   IF timerTime(a, Cplace + 1) = -1 THEN\r
64     ctim = 0\r
65     Cplace = 0\r
66   END IF\r
67   IF timerTime(a, Cplace + 1) < ctim THEN\r
68     IF timerTime(a, Cplace + 1) = 0 THEN\r
69       timerCvalue(a) = timerValue(a, Cplace)\r
70       GOTO timer1:\r
71     END IF\r
72     Cplace = Cplace + 1\r
73     GOTO timer2\r
74   END IF\r
75 \r
76   v1 = timerValue(a, Cplace)\r
77   t1 = timerTime(a, Cplace)\r
78   v2 = timerValue(a, Cplace + 1)\r
79   t2 = timerTime(a, Cplace + 1)\r
80 \r
81   IF v1 = v2 THEN\r
82     timerCvalue(a) = v1\r
83   ELSE\r
84     Tdiff1 = t2 - t1\r
85     Tdiff2 = ctim - t1\r
86     Vdiff = v2 - v1\r
87     timerCvalue(a) = Tdiff2 / Tdiff1 * Vdiff + v1\r
88   END IF\r
89 timer1:\r
90   timerCplace(a) = Cplace\r
91   timerCtime(a) = ctim\r
92 NEXT a\r
93 \r
94 END SUB\r
95 \r