home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9303 / rtc / timedemo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-06-03  |  3.0 KB  |  117 lines

  1. (* ------------------------------------------------------ *)
  2. (*                    TIMEDEMO.PAS                        *)
  3. (*          (c) 1993 Jörn Eichler & DMV-Verlag            *)
  4. (* ------------------------------------------------------ *)
  5. PROGRAM Demo;
  6.  
  7. USES ATTimer, Crt, Util;
  8.  
  9. TYPE
  10.   pDemoTimer = ^tDemoTimer;
  11.   tDemoTimer = OBJECT
  12.     Timer            : LongInt;
  13.     xOrigin, yOrigin : INTEGER;
  14.     Frequency        : tFloat;
  15.     LinkControl      : Pointer;
  16.     RTCControl       : pUserProcHead;
  17.  
  18.     CONSTRUCTOR Init(aXOrigin, aYOrigin : INTEGER;
  19.                      aFrequency         : tFloat);
  20.     DESTRUCTOR  Done; VIRTUAL;
  21.     PROCEDURE   Draw; VIRTUAL;
  22.  
  23.     { private/interne Deklarationen }
  24.  
  25.     PROCEDURE   IncTimer;
  26.   END;
  27.  
  28.   CONSTRUCTOR tDemoTimer.Init(aXOrigin, aYOrigin : INTEGER;
  29.                               aFrequency         : tFloat);
  30.   BEGIN
  31.     IF ((RTCStatus AND stRTCInstalled) = 0) OR
  32.        (aXOrigin < 0) OR (aXOrigin > 60) OR
  33.        (aYOrigin < 0) OR (aYOrigin > 23) OR
  34.        (aFrequency <= 0) OR (aFrequency > RTCFrequency) THEN
  35.       Fail;
  36.     LinkControl := GetProcedureLink(@tDemoTimer.IncTimer,
  37.                                     @Self, 0);
  38.     IF (LinkControl = NIL) THEN Fail;
  39.     RTCControl := InstallRTCUserProc(LinkControl,
  40.                                      aFrequency);
  41.     IF (RTCControl = NIL) THEN BEGIN
  42.       DisposeLink(LinkControl);
  43.       Fail;
  44.     END;
  45.     Timer     := 0;
  46.     XOrigin   := aXOrigin;
  47.     YOrigin   := aYOrigin;
  48.     Frequency := aFrequency;
  49.   END;
  50.  
  51.   DESTRUCTOR tDemoTimer.Done;
  52.   BEGIN
  53.     DeInstallRTCUserProc(RTCControl);
  54.     DisposeLink(LinkControl);
  55.   END;
  56.  
  57.   PROCEDURE tDemoTimer.Draw;
  58.   BEGIN
  59.     GotoXY(xOrigin, yOrigin);
  60.     Write ('Zeit : ', Timer * (1 / Frequency ):7:3, ' s');
  61.     GotoXY(xOrigin, yOrigin + 1);
  62.     Write ('Timer: ', Timer:7);
  63.   END;
  64.  
  65.   PROCEDURE tDemoTimer.IncTimer;
  66.   BEGIN
  67.     Inc(Timer);
  68.   END;
  69.  
  70.   PROCEDURE CPUStatus;
  71.   BEGIN
  72.     GotoXY(2, 25);
  73.     Write('CPU-Auslastung: ', GetCPUOccupation:2, ' %');
  74.   END;
  75.  
  76. CONST
  77.   MaxTimer = 3;
  78.  
  79. VAR
  80.   p : ARRAY [0..3] OF pDemoTimer;
  81.   i : Integer;
  82.  
  83. BEGIN
  84.   ClrScr;
  85.   Write(' --- AT-Timer Demonstrationsprogramm ---' );
  86.   CPUStatus;
  87.   InstallRTCTimer(256);
  88.   IF ((RTCStatus AND stRTCInstalled) = 0) THEN BEGIN
  89.     WriteLn('Timer kann nicht installiert werden!');
  90.     Halt(1);
  91.   END;
  92.   Randomize;
  93.   FOR i := 0 TO MaxTimer DO BEGIN
  94.     New(p[i],
  95.         Init(1 + Random(59), 3 + Random(20), 8 SHL i ));
  96.     IF (p[i] = NIL) THEN BEGIN
  97.       GotoXY(1, 20);
  98.       WriteLn('Objekt ', i, 
  99.               'kann nicht instantiiert werden!');
  100.       DeInstallRTCTimer;
  101.       Halt(2);
  102.     END;
  103.   END;
  104.   GotoXY(50, 25);
  105.   Write('RTCFrequenz: ', RTCFrequency, ' Hz');
  106.   REPEAT
  107.     FOR i := 0 TO MaxTimer DO
  108.       p[i]^.Draw;
  109.     CPUStatus;
  110.   UNTIL KeyPressed;
  111.   FOR i := 0 TO MaxTimer DO
  112.     Dispose(p[i], Done);
  113.   DeInstallRTCTimer;
  114. END.
  115. (* ------------------------------------------------------ *)
  116. (*                 Ende von TIMEDEMO.PAS                  *)
  117.