From: gsm77 AT aol DOT com (GSM77) Newsgroups: comp.os.msdos.djgpp Subject: Re : keyboard handler... Lines: 32 NNTP-Posting-Host: ladder01.news.aol.com X-Admin: news AT aol DOT com Date: 05 Feb 1999 08:16:01 GMT References: <796eor$ja$1 AT pedraforca DOT cesca DOT es> Organization: AOL, http://www.aol.fr X-Newsreader: AOL Offline Reader Message-ID: <19990205031601.08686.00000533@ngol02.aol.com> To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com is05562 AT salleURL DOT edu wrote : >OK then... I think that I knew then what an iret_wrapper was, (it's "more or >less the same that adding the interrupt" keyword in borland for example ). Ok , Just smalls precisions on the "interrupt" of Borland and the wrapper of DJGPP... "interrupt" in Borland mean that this function will be able to be call by an Interrupt mecanism. so at the start of the function, the compiler add piece of code to save the registers. And a the end of the function (and at every "return") it add a piece of code for restore any registers it saved, and return with the "IRET" assembly instruction. The wrapper in DJGPP is the REAL interrupt handler, it'll be the only one to be call when the interrupt occur. It saved the registers, and make the environnement back to the C++ normal flow and then , call your function. After your function returned, it restore the registers to protected normal flow. But DJGPP need one Wrapper for any interrupt Handler, so you add to allocate it ( and deallocate it ) by yourself ... Hope thats help ... KAMY