projects
/
dosdemo
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
porting the demo to miniglut
[dosdemo]
/
src
/
dos
/
timer.c
diff --git
a/src/dos/timer.c
b/src/dos/timer.c
index
f42fac6
..
2440bd5
100644
(file)
--- 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 <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
@@
-9,13
+14,14
@@
#endif
#ifdef __DJGPP__
#endif
#ifdef __DJGPP__
-#include <stdint.h>
#include <dpmi.h>
#include <go32.h>
#include <pc.h>
#endif
#include "pit8254.h"
#include <dpmi.h>
#include <go32.h>
#include <pc.h>
#endif
#include "pit8254.h"
+#include "inttypes.h"
+#include "util.h"
#define PIT_TIMER_INTR 8
#define DOS_TIMER_INTR 0x1c
#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 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;
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;
}
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);
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);
}
/* send EOI to the PIC */
outp(PIC1_CMD, OCW2_EOI);
}
+
+#endif /* NO_SOUND */