TIMER.LST 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. Listing:
  2. 1 (* Release 3.10 *)
  3. 2 (*-------------------------------------------------------------------------*
  4. 3 * *
  5. 4 * TIMER.MOD - COMMS Toolkit timer functions *
  6. 5 * *
  7. 6 * COPYRIGHT (C) 1988..1992 Clarion Software Corporation. *
  8. 7 * All Rights Reserved *
  9. 8 * *
  10. 9 *--------------------------------------------------------------------------*)
  11. 10
  12. 11 IMPLEMENTATION MODULE Timer;
  13. 12 (*%F _OS2*)
  14. 13 IMPORT SYSTEM,Lib;
  15. 14
  16. 15 VAR
  17. 16 AppTimer,OldSeconds : CARDINAL;
  18. 17
  19. 18 (*................................................*)
  20. 19
  21. 20 PROCEDURE ReadClock():CARDINAL;
  22. 21 VAR
  23. 22 Regs : SYSTEM.Registers;
  24. 23 BEGIN
  25. 24 Regs.AH := 2CH;
  26. 25 Lib.Dos(Regs);
  27. 26 RETURN Regs.DX>>8;
  28. 27 END ReadClock;
  29. 28
  30. 29 (*................................................*)
  31. 30
  32. 31 PROCEDURE TickHandler(Ticks:CARDINAL);
  33. 32 VAR
  34. 33 i : CARDINAL;
  35. 34 BEGIN
  36. 35 IF Ticks=0 THEN
  37. 36 RETURN;
  38. 37 END;
  39. 38 IF AppTimer>=Ticks THEN
  40. 39 DEC(AppTimer,Ticks);
  41. 40 ELSE
  42. 41 AppTimer:=0;
  43. 42 END;
  44. 43 IF Clock.Running THEN
  45. 44 WITH Clock DO
  46. 45 INC(Seconds,Ticks);
  47. 46 IF Seconds>=60 THEN
  48. 47 DEC(Seconds,60);
  49. 48 INC(Minutes);
  50. 49 IF Minutes=60 THEN
  51. 50 Minutes:=0;
  52. 51 INC(Hours);
  53. 52 END;
  54. 53 END;
  55. 54 END;
  56. 55 END;
  57. 56 END TickHandler;
  58. 57
  59. 58 (*.............................................*)
  60. 59
  61. 60 PROCEDURE UpdateTimer;
  62. 61 VAR
  63. 62 Seconds : CARDINAL;
  64. 63 BEGIN
  65. 64 Seconds := ReadClock();
  66. 65 IF Seconds>=OldSeconds THEN
  67. 66 TickHandler(Seconds - OldSeconds)
  68. 67 ELSE
  69. 68 TickHandler((60+Seconds) - OldSeconds)
  70. 69 END;
  71. 70 OldSeconds := Seconds;
  72. 71 END UpdateTimer;
  73. 72
  74. 73 (*................................................*)
  75. 74
  76. 75 PROCEDURE StopClock;
  77. 76 BEGIN
  78. 77 Clock.Running := FALSE;
  79. 78 END StopClock;
  80. 79
  81. 80 (*........................................*)
  82. 81
  83. 82 PROCEDURE StartClock;
  84. 83 BEGIN
  85. 84 StopClock; (* Stop clock if it is running *)
  86. 85 WITH Clock DO
  87. 86 Hours:=0;
  88. 87 Minutes:=0;
  89. 88 Seconds:=0;
  90. 89 Running := TRUE;
  91. 90 END;
  92. 91 OldSeconds := ReadClock();
  93. 92 END StartClock;
  94. 93
  95. 94 (*........................................*)
  96. 95
  97. 96 PROCEDURE AppTimerExpired():BOOLEAN;
  98. 97 BEGIN
  99. 98 RETURN AppTimer=0;
  100. 99 END AppTimerExpired;
  101. 100
  102. 101 (*........................................*)
  103. 102
  104. 103 PROCEDURE SetAppTimer(Seconds:CARDINAL);
  105. 104 BEGIN
  106. 105 AppTimer := Seconds;
  107. 106 OldSeconds := ReadClock();
  108. 107 END SetAppTimer;
  109. 108
  110. 109 (*........................................*)
  111. 110
  112. 111 BEGIN
  113. 112 AppTimer := 0;
  114. 113 StopClock;
  115. 114 END Timer.
  116. 115
  117. 116 (*%E*)
  118. 117 (*%T _OS2*)
  119. 118 (* OS/2 version *)
  120. 119 IMPORT Dos;
  121. 120
  122. 121 VAR
  123. 122 AppTimer : CARDINAL;
  124. 123 OldSeconds : LONGCARD;
  125. ***** ^ undeclared identifier
  126. 124 ginfo : CARDINAL;
  127. 125 pinfo : CARDINAL;
  128. 126
  129. 127 (*................................................*)
  130. 128
  131. 129 PROCEDURE ReadClock():LONGCARD;
  132. ***** ^ undeclared identifier
  133. 130 VAR
  134. 131 tmp : LONGCARD;
  135. ***** ^ undeclared identifier
  136. 132 BEGIN
  137. 133 REPEAT
  138. 134 tmp := [ginfo:0 Dos.PGINFOSEG]^.time;
  139. ***** ^ not supported yet
  140. ***** ^ not supported yet
  141. ***** ^ not supported yet
  142. ***** ^ not supported yet
  143. ***** ^ not supported yet
  144. 135 UNTIL tmp = [ginfo:0 Dos.PGINFOSEG]^.time;
  145. ***** ^ not supported yet
  146. ***** ^ not supported yet
  147. ***** ^ not supported yet
  148. ***** ^ not supported yet
  149. ***** ^ not supported yet
  150. 136 RETURN tmp;
  151. ***** ^ not supported yet
  152. 137 END ReadClock;
  153. ***** ^ not supported yet
  154. 138
  155. 139 (*................................................*)
  156. 140
  157. 141 PROCEDURE TickHandler(Ticks:CARDINAL);
  158. 142 VAR
  159. 143 i : CARDINAL;
  160. 144 BEGIN
  161. 145 IF Ticks=0 THEN
  162. 146 RETURN;
  163. 147 END;
  164. 148 IF AppTimer>=Ticks THEN
  165. 149 DEC(AppTimer,Ticks);
  166. ***** ^ undeclared identifier
  167. ***** ^ not supported yet
  168. 150 ELSE
  169. 151 AppTimer:=0;
  170. 152 END;
  171. 153 IF Clock.Running THEN
  172. ***** ^ undeclared identifier
  173. ***** ^ not supported yet
  174. 154 WITH Clock DO
  175. ***** ^ undeclared identifier
  176. 155 INC(Seconds,Ticks);
  177. ***** ^ undeclared identifier
  178. ***** ^ undeclared identifier
  179. ***** ^ not supported yet
  180. 156 IF Seconds>=60 THEN
  181. ***** ^ undeclared identifier
  182. 157 DEC(Seconds,60);
  183. ***** ^ undeclared identifier
  184. ***** ^ undeclared identifier
  185. ***** ^ not supported yet
  186. 158 INC(Minutes);
  187. ***** ^ undeclared identifier
  188. ***** ^ undeclared identifier
  189. 159 IF Minutes=60 THEN
  190. ***** ^ undeclared identifier
  191. 160 Minutes:=0;
  192. ***** ^ undeclared identifier
  193. 161 INC(Hours);
  194. ***** ^ undeclared identifier
  195. ***** ^ undeclared identifier
  196. 162 END;
  197. 163 END;
  198. 164 END;
  199. ***** ^ not supported yet
  200. 165 END;
  201. 166 END TickHandler;
  202. ***** ^ not supported yet
  203. 167
  204. 168 (*.............................................*)
  205. 169
  206. 170 PROCEDURE UpdateTimer;
  207. 171 VAR
  208. 172 Seconds : LONGCARD;
  209. ***** ^ undeclared identifier
  210. 173 BEGIN
  211. 174 Seconds := ReadClock();
  212. ***** ^ not supported yet
  213. ***** ^ not supported yet
  214. ***** ^ not supported yet
  215. 175 TickHandler(VAL(CARDINAL,Seconds-OldSeconds));
  216. ***** ^ not supported yet
  217. ***** ^ undeclared identifier
  218. ***** ^ not supported yet
  219. ***** ^ not supported yet
  220. 176 OldSeconds := Seconds;
  221. ***** ^ not supported yet
  222. ***** ^ not supported yet
  223. 177 END UpdateTimer;
  224. ***** ^ not supported yet
  225. 178
  226. 179 (*................................................*)
  227. 180
  228. 181 PROCEDURE StopClock;
  229. 182 BEGIN
  230. 183 Clock.Running := FALSE;
  231. ***** ^ undeclared identifier
  232. ***** ^ not supported yet
  233. 184 END StopClock;
  234. ***** ^ not supported yet
  235. 185
  236. 186 (*........................................*)
  237. 187
  238. 188 PROCEDURE StartClock;
  239. 189 BEGIN
  240. 190 StopClock; (* Stop clock if it is running *)
  241. ***** ^ not supported yet
  242. 191 WITH Clock DO
  243. ***** ^ undeclared identifier
  244. 192 Hours:=0;
  245. ***** ^ undeclared identifier
  246. 193 Minutes:=0;
  247. ***** ^ undeclared identifier
  248. 194 Seconds:=0;
  249. ***** ^ undeclared identifier
  250. 195 Running := TRUE;
  251. ***** ^ undeclared identifier
  252. 196 END;
  253. ***** ^ not supported yet
  254. 197 OldSeconds := ReadClock();
  255. ***** ^ not supported yet
  256. ***** ^ not supported yet
  257. ***** ^ not supported yet
  258. 198 END StartClock;
  259. ***** ^ not supported yet
  260. 199
  261. 200 (*........................................*)
  262. 201
  263. 202 PROCEDURE AppTimerExpired():BOOLEAN;
  264. 203 BEGIN
  265. 204 RETURN AppTimer=0;
  266. 205 END AppTimerExpired;
  267. ***** ^ not supported yet
  268. 206
  269. 207 (*........................................*)
  270. 208
  271. 209 PROCEDURE SetAppTimer(Seconds:CARDINAL);
  272. 210 BEGIN
  273. 211 AppTimer := Seconds;
  274. 212 OldSeconds := ReadClock();
  275. ***** ^ not supported yet
  276. ***** ^ not supported yet
  277. ***** ^ not supported yet
  278. 213 END SetAppTimer;
  279. ***** ^ not supported yet
  280. 214
  281. 215 (*........................................*)
  282. 216
  283. 217 BEGIN
  284. 218 Dos.GetInfoSeg(ginfo,pinfo);
  285. ***** ^ not supported yet
  286. ***** ^ not supported yet
  287. ***** ^ not supported yet
  288. 219 AppTimer := 0;
  289. 220 StopClock;
  290. ***** ^ not supported yet
  291. 221 END Timer.
  292. ***** ^ not supported yet
  293. 222 (*%E*)
  294. 70 errors