Date: Tue, 25 Mar 1997 13:31:53 +0300 (IDT) From: Eli Zaretskii To: "Jason M. Daniels" cc: djgpp AT delorie DOT com Subject: Re: set vs. chain In-Reply-To: <5gskl9$mjj@news.epcc.edu> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On 21 Mar 1997, Jason M. Daniels wrote: > never destructively read from the original handler. OK. So then I tried to > follow the directions in the FAQ for using [...]_set_[...]. I saved the > previous handler, allocated an iret wrapper, and set the handler. However, > the interrupt will trigger once and then crash the computer. This did not > happen with [...]_chain_[...]. Here's the source code: Your handler doesn't send the EOI (End Of Interrupt) command to the interrupt controller, so you only get the first interrupt, and then further keyboard interrupts are blocked forever. In the chaining version, the handler that you chained to (in the BIOS) did the EOI. I'm not sure whether this also explains the crashes (keyboard interrupt is special in DJGPP), but you will know after you correct this problem ;-).