home *** CD-ROM | disk | FTP | other *** search
- /* sleep for a number of milliseconds -- interrupted by kbd */
- /* returns zero if uninterrupted, else -1 */
- #include <dos.h>
-
- int
- sleep(ticks)
- long ticks;
- {
- union REGS kregs, cregs;
- long dostime, newtime;
-
- kregs.h.ah = 0x0b; /* "check keyoard status" */
- cregs.h.ah = 0x2c; /* "get time" */
- ticks /= 10L; /* clock() deals in hundreths of seconds */
- intdos(&cregs,&cregs);
- dostime=cregs.h.ch*360000 + cregs.h.cl*6000 + cregs.h.dh*100 + cregs.h.dl;
- do {
- intdos(&cregs,&cregs);
- newtime=cregs.h.ch*360000+cregs.h.cl*6000+cregs.h.dh*100+cregs.h.dl;
- intdos(&kregs,&kregs); /* see if keystroke is available */
- } while((newtime-dostime) < ticks && !kregs.h.al);
- return((int) kregs.h.al);
- }