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