home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: Multimed / Multimed.zip / mp3osr05.zip / src / idle.pas < prev    next >
Pascal/Delphi Source File  |  1999-12-08  |  710b  |  44 lines

  1. unit idle; // from DPMI32 package (c) Veit.Kannegieser@gmx.de
  2.  
  3. interface
  4.  
  5. procedure give_up_cpu_time;
  6.  
  7. implementation
  8.  
  9. uses
  10.   (*$IFDEF DPMI32*)
  11.   dpmi32df,dpmi32,
  12.   (*$ENDIF*)
  13.   VpSysLow;
  14.  
  15. procedure give_up_cpu_time;
  16.   begin
  17.     (*$IFDEF DPMI32*)
  18.  
  19.     if os2 then
  20.       asm (*$ALTERS EAX,EDX*)
  21.         sub edx,edx
  22.         sub eax,eax
  23.         inc eax
  24.         hlt     // OS/2: Sleep(DX:AX)
  25.         db $35,$ca
  26.       end;
  27.     if IsMultiThread then
  28.       SysCtrlSleep(1);
  29.  
  30.       asm (*$ALTERS EAX*)
  31.         // DPMI: release current time slice
  32.         mov ax,$1680
  33.         int $2f
  34.         int $28
  35.       end;
  36.  
  37.     (*$ELSE*)
  38.     SysCtrlSleep(1);
  39.     (*$ENDIF*)
  40.  
  41.   end;
  42.  
  43.  
  44. end.