[NTVDM]: Timer
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sat, 27 Sep 2014 15:31:12 +0000 (15:31 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Sat, 27 Sep 2014 15:31:12 +0000 (15:31 +0000)
- Add a hack for the signal out so that, when the PIT gate is off, no callback is called. This should be improved so that also no Out state is set, and other things too.
- Really set the out signal when the flipflop changes, in square-wave mode. Contributes to fix the speaker (see next commit).

svn path=/trunk/; revision=64344

reactos/subsystems/ntvdm/hardware/timer.c

index 87f6863..dcf1f34 100644 (file)
@@ -79,6 +79,7 @@ static VOID PitSetOut(PPIT_CHANNEL Channel, BOOLEAN State)
     Channel->Out = State;
 
     /* Call the callback */
+    if (!Channel->Gate) return; // HACK: This is a HACK until gates are properly used (needed for the speaker to work properly).
     if (Channel->OutFunction) Channel->OutFunction(Channel->OutParam, State);
 }
 
@@ -423,7 +424,7 @@ static VOID PitDecrementCount(PPIT_CHANNEL Channel, DWORD Count)
             if (ReloadCount & 1)
             {
                 Channel->FlipFlop = !Channel->FlipFlop;
-                // PitSetOut(Channel, !Channel->Out);
+                PitSetOut(Channel, !Channel->Out);
             }
 
             /* Was there any rising edge? */