Mail Archives: djgpp/2000/10/20/12:15:16
> From: "TeddyLam" <teddylam AT geocities DOT com>
> Newsgroups: comp.os.msdos.djgpp
> Date: Fri, 20 Oct 2000 22:33:04 +0800
>
> Since I've already replaced ISR of timer interrupt by my own, therefore I
> suppose DPMI can't do anything behind my back. Am I right?
No, you are wrong. What exactly is wrong depends on the DPMI server,
among other factors. The DJGPP startup code is also hooking the
keyboard interrupt, Int 9, and Int 75h, the co-processor interrupt.
> Turning on auto-EOI is not just so stright forward in DJGPP. I suscepts that
> the ICW2 (Vector base address?) is not 0x08h as usually should be set to.
> Every time after I set up the 8259, the program crash immediately, no matter
> whether I set or clear the auto-EOI bit.
I don't think the base address is the problem here. Please post the
code that crashes, and also the complete crash message printed when it
crashes.
> Another factor that prevents me from further increase the data rate, is that
> it seems when you issue EOI by writing 20h to 8259, the DPMI will thinks
> that the protect mode ISR fails, it then switch to real mode and
> call the real mode ISR routine.
This is not true, in general.
> I read this from the README of PCTIME14 program.
PCTIME14 says that this happens only on Windows, and is most probably
some misfeature of Windows. It doesn't happen with other DPMI
servers, AFAIK.
> I think except using Auto-EOI, there should
> be another method to prevent DPMI from calling the real mode ISR? isn't it?
The DPMI spec says that the interrupt is reflected to the real-mode
handler only if it is unhandled in protected mode. So this should not
happen, and does not happen, according to what I know, except on
Windows.
And no, I'm not aware of any way to prevent this from happening on
Windows.
- Raw text -