| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- 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
|