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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.