home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Pascal / HISOFTPASCAL2,0-3.DMS / in.adf / Units / Timer.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-05-20  |  1.6 KB  |  116 lines

  1. unit Timer;
  2.  
  3. INTERFACE
  4. uses Exec;
  5.  
  6.  
  7. type
  8.     pEClockVal = ^tEClockVal;
  9.     tEClockVal = record
  10.         ev_hi: long;
  11.         ev_lo: long;
  12.         end;
  13.  
  14.     ptimeval = ^ttimeval;
  15.     ttimeval = record
  16.         tv_secs: long;
  17.         tv_micro: long;
  18.         end;
  19.  
  20.     ptimerequest = ^ttimerequest;
  21.     ttimerequest = record
  22.         tr_node: tIORequest;
  23.         tr_time: ttimeval;
  24.         end;
  25.  
  26.  
  27.  
  28. var
  29.     TimerBase: pLibrary;
  30.  
  31.  
  32. const
  33.     TR_ADDREQUEST = 9;
  34.     UNIT_WAITUNTIL = 3;
  35.     TR_GETSYSTIME = $A;
  36.     UNIT_ECLOCK = 2;
  37.     TR_SETSYSTIME = $B;
  38.     UNIT_MICROHZ = 0;
  39.     UNIT_WAITECLOCK = 4;
  40.     DEVICES_TIMER_H = 1;
  41.     UNIT_VBLANK = 1;
  42.     TIMERNAME = 'timer.device';
  43.  
  44.  
  45. procedure AddTime
  46.         (dest: ptimeval;
  47.         src: ptimeval);
  48.  
  49. procedure SubTime
  50.         (dest: ptimeval;
  51.         src: ptimeval);
  52.  
  53. function CmpTime
  54.         (dest: ptimeval;
  55.         src: ptimeval): longint;
  56.  
  57. function ReadEClock (dest: pEClockVal): long;
  58. procedure GetSysTime (dest: ptimeval);
  59.  
  60.  
  61. IMPLEMENTATION
  62. procedure AddTime; xassembler;
  63. asm
  64.     move.l    a6,-(sp)
  65.     lea        8(sp),a6
  66.     move.l    (a6)+,a1
  67.     move.l    (a6)+,a0
  68.     move.l    TimerBase,a6
  69.     jsr        -$2A(a6)
  70.     move.l    (sp)+,a6
  71. end;
  72.  
  73. procedure SubTime; xassembler;
  74. asm
  75.     move.l    a6,-(sp)
  76.     lea        8(sp),a6
  77.     move.l    (a6)+,a1
  78.     move.l    (a6)+,a0
  79.     move.l    TimerBase,a6
  80.     jsr        -$30(a6)
  81.     move.l    (sp)+,a6
  82. end;
  83.  
  84. function CmpTime; xassembler;
  85. asm
  86.     move.l    a6,-(sp)
  87.     lea        8(sp),a6
  88.     move.l    (a6)+,a1
  89.     move.l    (a6)+,a0
  90.     move.l    TimerBase,a6
  91.     jsr        -$36(a6)
  92.     move.l    d0,$10(sp)
  93.     move.l    (sp)+,a6
  94. end;
  95.  
  96. function ReadEClock; xassembler;
  97. asm
  98.     move.l    a6,-(sp)
  99.     move.l    8(sp),a0
  100.     move.l    TimerBase,a6
  101.     jsr        -$3C(a6)
  102.     move.l    d0,$C(sp)
  103.     move.l    (sp)+,a6
  104. end;
  105.  
  106. procedure GetSysTime; xassembler;
  107. asm
  108.     move.l    a6,-(sp)
  109.     move.l    8(sp),a0
  110.     move.l    TimerBase,a6
  111.     jsr        -$42(a6)
  112.     move.l    (sp)+,a6
  113. end;
  114.  
  115. end.
  116.