home *** CD-ROM | disk | FTP | other *** search
/ HOT Scene Stuff / hotscenestuffzyklop1996.iso / demos / sunknown / timer.cpp < prev    next >
C/C++ Source or Header  |  1994-04-06  |  1KB  |  68 lines

  1. // TIMER_C //////////////////////////////////////////////////////////////////
  2.  
  3. // Thomas H.
  4.  
  5. // INCLUDES /////////////////////////////////////////////////////////////////
  6.  
  7. #include <dos.h>
  8. #include "timer.h"
  9. #include "global.h"
  10.  
  11. #define INTR 0x1c
  12. #define CLOCK_DIVISOR 9944U
  13. #define TIMERFAC 8.35708687636071
  14.  
  15. // EXTERNALS ////////////////////////////////////////////////////////////////
  16.  
  17. // FUNCTIONS
  18.  
  19. extern "C" void smidigo(void);
  20.  
  21. // VARS
  22.  
  23. extern long ticks;
  24. extern byte callmidi;
  25. extern byte guson;
  26.  
  27. // VARS /////////////////////////////////////////////////////////////////////
  28.  
  29. void interrupt (*oldhandler)(...);
  30.  
  31. // FUNCTIONS ////////////////////////////////////////////////////////////////
  32.  
  33. // CONSTRUCTOR
  34.  
  35. timer_C::timer_C()
  36. {
  37.     outportb(0x43, 0x36);
  38.     outportb(0x40, CLOCK_DIVISOR & 0xff);
  39.     outportb(0x40, (CLOCK_DIVISOR & 0xff00) >> 8);
  40.  
  41.     oldhandler = getvect(INTR);
  42. }
  43.  
  44. // DESTRUCTOR
  45.  
  46. timer_C::~timer_C()
  47. {
  48.     outportb(0x43,0x36);
  49.     outportb(0x40,0x00);
  50.     outportb(0x40,0x00);
  51.   if (oldhandler)
  52.       setvect(INTR,oldhandler);
  53. }
  54.  
  55. // READTIMER
  56.  
  57. long timer_C::readtimer(void)
  58. {
  59.     return ticks;
  60. }
  61.  
  62. // ELAPSED
  63.  
  64. long timer_C::elapsed(unsigned long start,unsigned long stop)
  65. {
  66.     return ((float)stop-start)*TIMERFAC;
  67. }
  68.