[NTVDM]
authorAleksandar Andrejevic <aandrejevic@reactos.org>
Sat, 30 Nov 2013 03:59:26 +0000 (03:59 +0000)
committerAleksandar Andrejevic <aandrejevic@reactos.org>
Sat, 30 Nov 2013 03:59:26 +0000 (03:59 +0000)
Fix the PIT square wave generator.

svn path=/branches/ntvdm/; revision=61151

subsystems/ntvdm/timer.c

index 1cdceaf..3f813fc 100644 (file)
@@ -277,12 +277,12 @@ VOID PitDecrementCount(DWORD Count)
                     }
                     else
                     {
-                        /* Clear the count */
-                        Count = 0;
-
                         /* Decrease the value */
                         PitChannels[i].CurrentValue -= Count * 2;
 
+                        /* Clear the count */
+                        Count = 0;
+
                         /* Did it fall to zero? */
                         if (PitChannels[i].CurrentValue == 0)
                         {
@@ -304,7 +304,9 @@ VOID PitDecrementCount(DWORD Count)
                 }
 
                 /* Was there any rising edge on channel 0 ? */
-                if ((PitChannels[i].OutputFlipFlop || ReloadCount) && (i == 0))
+                if (((PitChannels[i].OutputFlipFlop && (ReloadCount == 1))
+                    || (ReloadCount > 1))
+                    && (i == 0))
                 {
                     /* Yes, IRQ 0 */
                     PicInterruptRequest(0);