home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* TIMEDEMO.PAS *)
- (* (c) 1993 Jörn Eichler & DMV-Verlag *)
- (* ------------------------------------------------------ *)
- PROGRAM Demo;
-
- USES ATTimer, Crt, Util;
-
- TYPE
- pDemoTimer = ^tDemoTimer;
- tDemoTimer = OBJECT
- Timer : LongInt;
- xOrigin, yOrigin : INTEGER;
- Frequency : tFloat;
- LinkControl : Pointer;
- RTCControl : pUserProcHead;
-
- CONSTRUCTOR Init(aXOrigin, aYOrigin : INTEGER;
- aFrequency : tFloat);
- DESTRUCTOR Done; VIRTUAL;
- PROCEDURE Draw; VIRTUAL;
-
- { private/interne Deklarationen }
-
- PROCEDURE IncTimer;
- END;
-
- CONSTRUCTOR tDemoTimer.Init(aXOrigin, aYOrigin : INTEGER;
- aFrequency : tFloat);
- BEGIN
- IF ((RTCStatus AND stRTCInstalled) = 0) OR
- (aXOrigin < 0) OR (aXOrigin > 60) OR
- (aYOrigin < 0) OR (aYOrigin > 23) OR
- (aFrequency <= 0) OR (aFrequency > RTCFrequency) THEN
- Fail;
- LinkControl := GetProcedureLink(@tDemoTimer.IncTimer,
- @Self, 0);
- IF (LinkControl = NIL) THEN Fail;
- RTCControl := InstallRTCUserProc(LinkControl,
- aFrequency);
- IF (RTCControl = NIL) THEN BEGIN
- DisposeLink(LinkControl);
- Fail;
- END;
- Timer := 0;
- XOrigin := aXOrigin;
- YOrigin := aYOrigin;
- Frequency := aFrequency;
- END;
-
- DESTRUCTOR tDemoTimer.Done;
- BEGIN
- DeInstallRTCUserProc(RTCControl);
- DisposeLink(LinkControl);
- END;
-
- PROCEDURE tDemoTimer.Draw;
- BEGIN
- GotoXY(xOrigin, yOrigin);
- Write ('Zeit : ', Timer * (1 / Frequency ):7:3, ' s');
- GotoXY(xOrigin, yOrigin + 1);
- Write ('Timer: ', Timer:7);
- END;
-
- PROCEDURE tDemoTimer.IncTimer;
- BEGIN
- Inc(Timer);
- END;
-
- PROCEDURE CPUStatus;
- BEGIN
- GotoXY(2, 25);
- Write('CPU-Auslastung: ', GetCPUOccupation:2, ' %');
- END;
-
- CONST
- MaxTimer = 3;
-
- VAR
- p : ARRAY [0..3] OF pDemoTimer;
- i : Integer;
-
- BEGIN
- ClrScr;
- Write(' --- AT-Timer Demonstrationsprogramm ---' );
- CPUStatus;
- InstallRTCTimer(256);
- IF ((RTCStatus AND stRTCInstalled) = 0) THEN BEGIN
- WriteLn('Timer kann nicht installiert werden!');
- Halt(1);
- END;
- Randomize;
- FOR i := 0 TO MaxTimer DO BEGIN
- New(p[i],
- Init(1 + Random(59), 3 + Random(20), 8 SHL i ));
- IF (p[i] = NIL) THEN BEGIN
- GotoXY(1, 20);
- WriteLn('Objekt ', i,
- 'kann nicht instantiiert werden!');
- DeInstallRTCTimer;
- Halt(2);
- END;
- END;
- GotoXY(50, 25);
- Write('RTCFrequenz: ', RTCFrequency, ' Hz');
- REPEAT
- FOR i := 0 TO MaxTimer DO
- p[i]^.Draw;
- CPUStatus;
- UNTIL KeyPressed;
- FOR i := 0 TO MaxTimer DO
- Dispose(p[i], Done);
- DeInstallRTCTimer;
- END.
- (* ------------------------------------------------------ *)
- (* Ende von TIMEDEMO.PAS *)
-