Date: Wed, 8 Oct 1997 19:17:27 +0200 (IST) From: Eli Zaretskii To: "Gurunandan R. Bhat" cc: djgpp AT delorie DOT com Subject: Re: three .externs whose purpose and origin I know not In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Precedence: bulk On Wed, 8 Oct 1997, Gurunandan R. Bhat wrote: > On Wed, 8 Oct 1997, Eli Zaretskii wrote: > > > A *lot* of things about hardware interrupts should be documented, because > > it's so much of a black art. The question is (a) where? > > I would think section 18 of the djgpp faq, which already has more on > interrupt handling than any tutorial that I have seen (and I have seen > many) might be a good place. I disagree. This issue is too large to be in a general FAQ. The FAQ is already too large, and I have to draw a line somewhere. What's there today is a general introduction and some basic techniques. If I begin to explain about DS alias, then I'll end up discussing all the questions of Life, the Universe, and Everything. No, somebody should sit down and really write a tutorial about this. It isn't going to be a short one, since there's a lot to tell, even if you assume that the reader already has some background and experience in real-mode interrupt handling. > Now you are asking ;). But seriously, I have yet to see a post or a query > pertaining to a isr that bombed because %ds was used. To see it bombing, you need to create a pending signal situation. Make your foreground task issue a DOS call (e.g., getc from stdin), then press Ctrl-Break, then press a key (for `getc' to return) and see it blow. Or something around these lines. > > Barring that, anybody who wants to futz with hardware interrupts, needs to > > take a very good lookat the few handlers built into DJGPP (the keyboard > > handler for generating SIGINT on ^C and the timer handler for profiling). > > If they do, they will see the DS alias used all over the place. > > Could you point me to the pertinent files please. I would be very > interested. From djlsr201.zip: src/libc/crt0/crt0.s, src/libc/go32/dpmiexcp.c, src/libc/go32/exceptn.s, src/libc/posix/signal/itimer.c.