X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=dosdemo;a=blobdiff_plain;f=src%2Fdos%2Ftimer.c;h=2440bd581130294c134c1545bf96d99c11986bdb;hp=dcf790cfc0b494e11c9fe6f6ec13605e6252d3ee;hb=93f68e445b0a4f10f2b15383aafed8a216a4a228;hpb=637ca39c29b03bd3a2beb99521753e83c043283f diff --git a/src/dos/timer.c b/src/dos/timer.c index dcf790c..2440bd5 100644 --- a/src/dos/timer.c +++ b/src/dos/timer.c @@ -1,3 +1,8 @@ +/* for sound we use MIDAS, which takes over the PIT and we can't use it + * therefore only compile this file for NO_SOUND builds. + */ +#ifdef NO_SOUND + #include #include #include @@ -16,6 +21,7 @@ #include "pit8254.h" #include "inttypes.h" +#include "util.h" #define PIT_TIMER_INTR 8 #define DOS_TIMER_INTR 0x1c @@ -45,7 +51,7 @@ static _go32_dpmi_seginfo intr, prev_intr; static void INTERRUPT timer_irq(); -static unsigned long ticks; +static volatile unsigned long ticks; static unsigned long tick_interval, ticks_per_dos_intr; static int inum; @@ -123,6 +129,16 @@ unsigned long get_msec(void) return ticks * tick_interval; } +void sleep_msec(unsigned long msec) +{ + unsigned long wakeup_time = ticks + msec / tick_interval; + while(ticks < wakeup_time) { +#ifdef USE_HLT + halt(); +#endif + } +} + static void set_timer_reload(int reload_val) { outp(PORT_CMD, CMD_CHAN0 | CMD_ACCESS_BOTH | CMD_OP_SQWAVE); @@ -163,3 +179,5 @@ static void INTERRUPT timer_irq() /* send EOI to the PIC */ outp(PIC1_CMD, OCW2_EOI); } + +#endif /* NO_SOUND */