X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f From: "Rod Pemberton" Newsgroups: comp.os.msdos.djgpp Subject: Is int86() designed and implemented correctly? Date: Sat, 15 Feb 2014 05:16:29 -0500 Organization: Aioe.org NNTP Server Lines: 29 Message-ID: NNTP-Posting-Host: CNsg4fVcCsvs3UaOgZtQCw.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit X-Complaints-To: abuse AT aioe DOT org User-Agent: Opera Mail/12.16 (Linux) X-Notice: Filtered by postfilter v. 0.8.2 Bytes: 2070 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com For interrupts other than Int 21h, int86() calls _int86 in assembly which generates an interrupt in PM. For many, but not all, Int 21h sub-functions, int86() does the same. Supposedly, this is to allow installed PM interrupt routines to execute. However, there are thirteen Int 21h sub-functions which have been extended for setting up pointers, transfer buffer, return values etc within int86(). These thirteen sub-functions *do not* call the _int86 assembly routine which generates a PM interrupt. Instead, int86() calls __dpmi_int() for them. __dpmi_int() calls the DPMI host's simulate real mode interrupt DPMI API call, thereby generating a RM interrupt, instead of a PM interrupt. Shouldn't these extended Int 21h sub-functions have been designed to call int86() to generate a PM interrupt? Using __dpmi_int() would seem to *bypass* installed PM ISR routines for those Int 21h sub-functions, calling RM instead. Is this correct? Since it seems these sub-functions can't be called in PM via DJGPP, how does someone call installed custom ISRs for the thirteen Int 21h sub-functions? Does assembly need to be used to generate a PM Int 21h interrupt directly? Or, am I missing something, like these get reflected back to PM somewhere, somehow? Rod Pemberton