home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / TURBOPAS / PASUTIL1.ZIP / TIMU.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1985-12-28  |  1.8 KB  |  63 lines

  1. {$PAGESIZE: 58, $LINESIZE: 132, $TITLE: 'Timer Routines'}
  2. {$INCLUDE: 'TIMI.PAS'}
  3.  
  4. {This program illustrates is an intermediate-level Pascal program,
  5.  which illustrates how a Pascal unit can be created and how DOS calls
  6.  can be made with Pascal using the DOSXQQ function.  This unit provides
  7.  a procedure (ExactTime) which will get the system clock time and another
  8.  procedure (Delay) which will wait for a specified time; this latter 
  9.  capability was useful in developing routines for the Hayes SmartModem
  10.  which required specific delays.}
  11.  
  12. IMPLEMENTATION OF TIM;
  13.  
  14. VAR [EXTERN] CRCXQQ, CRDXQQ: WORD;
  15.   
  16. FUNCTION DOSXQQ (command: BYTE; parm: WORD): CHAR; EXTERN;
  17.  
  18. PROCEDURE EXACTTIME; {(VAR hrs, mins, secs: REAL);}
  19.  
  20. {Procedure EXACTTIME provides the exact time in hours, minutes, and seconds.}
  21.   
  22. VAR
  23.   a: CHAR;
  24.   b, c: INTEGER;
  25.   
  26. BEGIN
  27.   a:= DOSXQQ (44,0);
  28.   b:= ORD (CRCXQQ);
  29.   c:= ORD (CRDXQQ);
  30.   hrs:= b DIV 256;
  31.   mins:= b MOD 256;
  32.   secs:= c DIV 256 + (c MOD 256) / 100
  33. END;  
  34.   
  35. PROCEDURE DELAY; {(wsecs: REAL);}  
  36.  
  37. {Procedure DELAY will generate a delay of wsecs seconds.}
  38.  
  39. VAR
  40.   bhrs, bmins, bsecs, ehrs, emins, esecs: REAL;
  41.  
  42. BEGIN
  43.   EXACTTIME (bhrs, bmins, bsecs);
  44.   esecs:= bsecs + wsecs;
  45.   IF esecs >= 60 THEN
  46.     BEGIN
  47.       emins:= bmins + 1;
  48.       IF emins >= 60 THEN 
  49.         BEGIN
  50.           ehrs:= bhrs + 1;
  51.           emins:= emins - 60
  52.         END
  53.       ELSE ehrs:= bhrs;
  54.       esecs:= esecs - 60
  55.     END
  56.   ELSE emins:= bmins;
  57.   WHILE ehrs > bhrs DO EXACTTIME (bhrs, bmins, bsecs);
  58.   WHILE emins > bmins DO EXACTTIME (bhrs, bmins, bsecs);
  59.   WHILE esecs > bsecs DO EXACTTIME (bhrs, bmins, bsecs)
  60. END;
  61.  
  62. BEGIN
  63. END.