delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/10/05/20:30:19

From: "Peter Remmers" <Peter DOT Remmers AT t-online DOT de>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: strange interrupt chaining problem with keyboard interrupt
Date: Fri, 6 Oct 2000 02:21:07 +0200
Organization: T-Online
Lines: 36
Message-ID: <8rj5td$l0o$14$1@news.t-online.com>
References: <Pine DOT SUN DOT 3 DOT 91 DOT 1001005075606 DOT 3958E-100000 AT is> <8rhi12$4up$10$1 AT news DOT t-online DOT com> <9003-Thu05Oct2000231854+0300-eliz AT is DOT elta DOT co DOT il>
Mime-Version: 1.0
X-Trace: news.t-online.com 970791661 14 21528 320094726121-0001 001006 00:21:01
X-Complaints-To: abuse AT t-online DOT de
X-Sender: 320094726121-0001 AT t-dialin DOT net
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 5.50.4133.2400
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

"Eli Zaretskii" <eliz AT is DOT elta DOT co DOT il> schrieb...

> How about locking everything that the interrupt handler touches?  Did
> you do that?  The code you posted doesn't show.

I have a
int _crt0_startup_flags = _CRT0_FLAG_LOCK_MEMORY;
for starters, until everything works and I can care about locking.

> Did you try to disable the keyboard hooking in the DJGPP startup code?
> If so, did it change anything?

How do I do that? There's no _CRT0_FLAG_SOMETHING for that in crt0.h...

Meanwhile I got around it by writing my own wrapper in assembler.
I took some inspiration by looking at the allegro sources.
My C function returns a value that tells if the wrapper should chain
to the original ISR or not, which BTW works.

The problem with calling the old ISR directly from the C handler
still persists, however. More precisely, after setting up the
DJGPP execution environment (DS=ES=SS and setting up a new stack),
calling the old ISR has said effects.

Suggestion: integrate the idea of telling the wrapper with a return
value if it should chain or not into
_go32_dpmi_chain_protected_mode_interrupt_vector().
I think a lot of people would have a lot less trouble trying to
do such interrupt things...


Peter



- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019