Mail Archives: djgpp/1997/06/06/08:40:08
> I want to trap writes to certain or all I/O ports.
In V86 16-bit mode, or in 32-bit protected mode?
> I want to write a DPMI compliant driver that can run in DOS, without
> Windows being loaded, that allows this.
If you just want this behavior in 32-bit protected mode, you can easily
hack this into CWSDPMI by modifying the TSS length, values, and IOPL.
> #1. Do QEMM, 386MAX, and other DPMI servers, by default, place the chip
> in V86 while running DOS?
If you have an EMM present, you will almost always run in V86 mode. Since
QEMM and 386MAX are EMM providers, you end up in V86 mode, yes. But I don't
think you have access to the V86 control structures to allow you to
mess with the IO permissions or capture the exceptions.
> I noticed in the DPMI 0.9 spec that this is
> only an OPTION for DPMI servers, but they can also run in real mode.
CWSDPMI actually does BOTH. If you are running under HIMEM (or bare)
CWSDPMI will leave the machine in real mode when running DOS (since I
didn't want to bother writing a V86 monitor). If you are running under
an EMM, CWSDPMI uses the V86 provided.
> #2. How do I set the I/O map for the V86 session in a way that DPMI
You can't. This is a very low level function (below DPMI).
> Basically, I want to virtualize some hardware unbeknownst to DOS programs.
Check comp.lang.asm.x86 (if you can tolerate the flamewars) - I have seen
some custom V86 monitor urls posted there which allow you to watch ports.
People use them to reverse engineer what's happening on dongle writes to
LPT ports, etc.
- Raw text -