home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / lan / spy / source / multitsr.pas < prev    next >
Pascal/Delphi Source File  |  1989-10-03  |  1KB  |  56 lines

  1. {$A+,B-,D-,E-,F+,I-,L-,N-,O-,R-,S-,V+}
  2. Unit MultiTsr;
  3. { This unit links the TSR and MULTI units.
  4.  
  5.   Copyright 1989 by Edwin T. Floyd
  6.   All rights reserved.
  7.   Non-commercial use Ok.
  8.   Use at your own risk.
  9.  
  10.   Author:  Edwin T. Floyd [76067,747]
  11.            #9 Adams Park Court
  12.            Columbus, GA 31909
  13.            (404) 322-0076
  14. }
  15. Interface Uses TSR, MULTI;
  16. Const
  17.   MaxTicksToWait = 1200;  { Maximum number of ticks to wait in IdleRoutine }
  18.  
  19. Implementation
  20. Var
  21.   OldDispatchHook : HookRoutineType;
  22.   SmallWaitCount : Byte;
  23.  
  24. Procedure TsrIdle(Timeout : LongInt);
  25. Begin
  26.   If Timeout < 7 Then Begin
  27.     If Timeout < SmallWaitCount Then Dec(SmallWaitCount, Timeout)
  28.     Else Begin
  29.       SmallWaitCount := 6;
  30.       TsrWait(1);
  31.     End;
  32.   End Else Begin
  33.     Timeout := Timeout Div 6;
  34.     If Timeout > MaxTicksToWait Then Timeout := MaxTicksToWait;
  35.     TsrWait(Timeout);
  36.   End;
  37. End;
  38.  
  39. Procedure WakeHook(Task : TaskType; Entry : DispatchHookType);
  40. Begin
  41.   If Entry = HookWake Then WakeBackground;
  42.   OldDispatchHook(Task, Entry);
  43. End;
  44.  
  45. Procedure MultiTsrExit;
  46. Begin
  47.   RemoveTSR;
  48. End;
  49.  
  50. Begin
  51.   SmallWaitCount := 6;
  52.   IdleRoutine := TsrIdle;
  53.   OldDispatchHook := DispatchHook;
  54.   DispatchHook := WakeHook;
  55.   ExitProc := @MultiTsrExit;
  56. End.