Date: Mon, 16 Jul 2001 08:08:12 +0300 (IDT) From: Eli Zaretskii X-Sender: eliz AT is To: Matthew Conte cc: djgpp AT delorie DOT com Subject: Re: '9x and raise in interrupt service routines In-Reply-To: <001701c10d68$074978e0$e33e1d18@nycap.rr.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Reply-To: djgpp AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk On Sun, 15 Jul 2001, Matthew Conte wrote: > perhaps i'm being thick here, but i haven't seen a mechanism to > selectively chain to a previous interrupt handler anywhere, the FAQ or > otherwise. i've always either set up the interrupt handler via > _go32_dpmi_[set/chain]_protected_mode_interrupt_vector, and that's > all. > > how does one chain to the previous handler from C code, especially in > the middle of an already-executing interrupt handler? should i be > accessing ___djgpp_hwint_flags? You mean, your handler is written in C? I never assumed that, I thought it was in assembly. Did I say you didn't post enough info about your code? You _are_ aware that with a C handler you will have to lock most, if not all of the code and data, and will have other complications, as the FAQ explains? Hm... one possibility to solve the keyboard buffer overflow would be to call `getkey' or similar function in your main program (not in the keyboard handler). That would remove the keys from the keyboard buffer and prevent BIOS from beeping. Another possibility is to remove the keys from the keyboard controller, unless you see the Ctrl-C or Ctrl-BREAK keypress. You remove the key by sending a suitable command to the keyboard controller (sorry, I don't remember the details and don't have a good reference book nearby to look it up).