Interrupt Vector Table changes on INKEY or SLEEP

DOS specific questions.
Post Reply
jamjamason
Posts: 20
Joined: Jul 17, 2012 18:51

Interrupt Vector Table changes on INKEY or SLEEP

Post by jamjamason »

I've written a com port interrupt handler, and it loads and works as expected UNTIL my program uses either INKEY or SLEEP (there may be others; those are the only two I've found). If I examine the interrupt vector address after either of those two statements using

Code: Select all

_go32_dpmi_get_protected_mode_interrupt_vector(&h0C, @TempSegInfo)
I find that the offset has changed! Curiously, it does not go back to the original offset for the interrupt before I changed it, but to a new one. Putting a SLEEP or INKEY in the code before I set my interrupt handler address doesn't work; the address is still changed after a later SLEEP or INKEY.

For now, I'm avoiding SLEEP and writing my own keyboard interrupt handler (just found the one written by lasser, that will help greatly!), unless some knowledgeable soul here has any suggestions or insights into this odd behavior.

Thanks,
Jerry
Post Reply