Message-Id: <199808082021.VAA30786@sable.ox.ac.uk> Comments: Authenticated sender is From: George Foot To: rylan AT inbtekom DOT co DOT za Date: Sat, 8 Aug 1998 21:20:17 +0000 MIME-Version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Subject: Re: Testing for a key in an inline assembly loop Reply-to: george DOT foot AT merton DOT oxford DOT ac DOT uk CC: djgpp AT delorie DOT com Precedence: bulk On 8 Aug 98 at 12:10, Rylan wrote: > Hi, > > How can I test for a key press in an inline assembly loop in DJGPP? I tried > using a __dpmi_int call, which works fine for int 16h function 0x00 which > waits until a key is pressed, then continues, so my interrupt setup seems to > work. But when I try function 0x01 of int 16h, which sets the zero flag if a > key has been pressed, how can I test the flags set by an int executed for me > by __dpmi_int? 'Cause it seems that __dpmi_int alters them on exit of > itself? Of course, you can't rely on the flags and registers being what they were on return from the interrupt. __dpmi_int is documented to update the __dpmi_regs struct you pass a pointer to with the new register contents. See my last email, where I used the flags field for exactly this. Of course I may have got it wrong; I don't know how int 16h works, I just basically copied the djgpp library's source code for `kbhit', translating it into assembler. > Is there a way to do this? If I am on the wrong track then - how can I test > for a keypress in inline DJGPP assembler?? You could of course just call `kbhit'; restore ES and DS, then "call _kbhit", and the return value will be in EAX. > Please reply by mail if at all possible! My last few replies have bounced from your email address, so I can't do that. -- george DOT foot AT merton DOT oxford DOT ac DOT uk