projects
/
dosdemo
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed procdata and 32bit build
[dosdemo]
/
src
/
dos
/
timer.c
diff --git
a/src/dos/timer.c
b/src/dos/timer.c
index
dcf790c
..
d6c3b52
100644
(file)
--- a/
src/dos/timer.c
+++ b/
src/dos/timer.c
@@
-16,6
+16,7
@@
#include "pit8254.h"
#include "inttypes.h"
#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
+46,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
+124,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);