| www.delorie.com/archives/browse.cgi | search |
| From: | "Alex Oleynikov" <alex AT compuweigh DOT com> |
| Newsgroups: | comp.os.msdos.djgpp |
| References: | <frN89.72711$Pb DOT 3104967 AT news2 DOT east DOT cox DOT net> <7263-Thu22Aug2002105626+0300-eliz AT is DOT elta DOT co DOT il> |
| Subject: | Re: Problem with tight kbhit() loop |
| Lines: | 38 |
| X-Newsreader: | Microsoft Outlook Express 6.00.2600.0000 |
| X-MimeOLE: | Produced By Microsoft MimeOLE V6.00.2600.0000 |
| Message-ID: | <%z599.106$Or1.19232@news2.east.cox.net> |
| Date: | Thu, 22 Aug 2002 13:22:03 GMT |
| NNTP-Posting-Host: | 68.15.54.9 |
| X-Complaints-To: | abuse AT cox DOT net |
| X-Trace: | news2.east.cox.net 1030022523 68.15.54.9 (Thu, 22 Aug 2002 09:22:03 EDT) |
| NNTP-Posting-Date: | Thu, 22 Aug 2002 09:22:03 EDT |
| Organization: | Cox Communications |
| To: | djgpp AT delorie DOT com |
| DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
| Reply-To: | djgpp AT delorie DOT com |
"Eli Zaretskii" <eliz AT is DOT elta DOT co DOT il> wrote in message
news:7263-Thu22Aug2002105626+0300-eliz AT is DOT elta DOT co DOT il...
> > From: "Alex Oleynikov" <alex AT compuweigh DOT com>
> > Newsgroups: comp.os.msdos.djgpp
> >
> > I have a question about using kbhit() function in a tight loop like the
one
> > below:
> > ...
> > while( !kbhit() );
> >
> > ch = getch();
> > ...
> >
> > If I just run the program that contains this code everything works fine.
> > Now, if I run this program under the RHIDE's debugger and have some
> > breakpoints prior to the code listed above, then this loop never quits
and
> > computer locks up completely (only cold re-boot helps to restart it) and
> > sometimes even my CMOS settings are get screwed up, so BIOS loads their
> > default values at start-up making me go nuts restoring them :o).
>
> Is this on plain DOS or on Windows?
No, this is plain DOS.
> If the former, I think it's a known side-effect of the way CWDPMI
> implements the DPMI Interrupt 31 handler: after certain operations
> interrupts are left in disabled state. Try inserting __asm__("sti")
> inside the loop, and I think the problem will go away.
Yepp, you are right - this takes care of the problem.
Thanks for your help.
Alex
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |