[Back to TIMING SWAG index] [Back to Main SWAG index] [Original]

    {
    > Sometimes delay doesn't work in TP 7.0, I'm unsure what it's doing,
    > but if I have like: delay(10) it will not delay for ten milliseconds..
    > I don't have a sure fire way to reproduce this error, it just
    > happens  whenever it wants to.

    sounds like you mite be running under windoz ?
    Delay will malfunction at times if a multitasker or you have
    redirected some interrupts for background events.. like the iNT $08
    for example..
    I not sure how TP 7.0 does it but TP 6.0 uses a software loop..
    you could use the timer 2 for a delay if you not use sound at the time.
    if you use the PC speaker then poll timer 0..  it you leave timer 0 set
    to its standard then its simple.
    }

    procedure HardWareDelay( Time :word); { time in Millisecs }
    Var
     CompVar, LastReading:Word;
     Begin
       CompVar := (Time / 0.00000083);
     asm
      CLI;
      Mov AL, $36;
      out $43, AL;
      in AL , $40;
      Mov Byte Ptr LastReading, AL;
      In AL, $40;
      Mov Byte Ptr lastReading+1, AL;
     @L:
      CLI;
      Mov AL, $36;
      out $43, AL;
      in AL, $40;
      Mov BL, AL;
      in Al, $40;
      STI;
      Mov BH, Al;
      Mov AX, lastReading;
      Sub BX, AX;
      Cmp BX, CompVar
      Jb @l;
      Sti;
     End;
    End;

[Back to TIMING SWAG index] [Back to Main SWAG index] [Original]