v86 monitors (was Re: Re: DRL updated! -- please stop that INT discuss
Bart Oldeman <[email protected]>
| Newsgroups | gmane.os.freedos.devel |
|---|---|
| Message-ID | <[email protected]> |
On Wed, 23 Oct 2002, tom ehlert wrote: > Eric Auer wrote: > > The only interrupt that causes troubles for emm386 type v86 monitors is > > int 67h ($67, 0x67, as you like :-)), and for this, there is the elegant > > solution mentioned above already implemented in almost all emm386 > drivers. > 'almost all' -> it worked in MS-EMM386, so it was used by *some* guy, > so it had to be supported by the other EMM's, too. It's a fairly widely used technique. DOSEMU uses an interrupt vector "trampoline" like this too, for *all* interrupts that it services. Alternatively, the vector at 0:4*67h can point to a HLT instruction, so that the v86 monitor just needs to recognize the cs:ip where GP(0) occurred. On a related subject, newer CPUs (Pentiums) have special virtual mode extensions in which an INT-n can be *really* equivalent (using a controlling 32-byte bitmap in the TSS) to PUSHF CLI CALL FAR 0:n*4 (assuming that the trap flag is clear) see this series of articles by Robert Collins http://www.ddj.com/documents/ddj9801o/ http://www.ddj.com/documents/ddj9803p/ http://www.ddj.com/documents/ddj9805q/ Bart