Hi Paul,

> I was thinking... I think DOSEMU2 execute program in VM86 mode.

Only if it is a real mode program. If it is a protected
mode program, it uses protected mode. DOSEMU2 has DPMI.

> That way, direct IN/OUT generate an interrupt that
> can be intercepted to emulate hardware.

Yes. This is how most emulators emulate hardware, because
you would not want your emulator to mess up your real VGA.

Actually even MS EMM386 has an interface to register
for notification when IN/OUT happens. This is used by
some "SoundBlaster compatible" PCI soundcards to trap
attempts to access a classic SoundBlaster 16 and let
some driver shipped with the PCI soundcards create an
illusion of having an ISA soundcard. Unfortunately,
JEMM386 does not yet support that interface, but some
drivers can use VM86 themselves to simulate a SB16,
without needing help from MS EMM386. In all cases,
EMM386 puts DOS inside a VM86 task, because it has
to run in protected mode itself (to "simulate" EMS,
which originally was an ISA add-on hardware, and UMB)
which is why some games only run if EMM386 is NOT on.

> It is a bit unclear how QEMU/VirtualBox works... I have
> read, that newer CPU emulate a full CPU.

Emulators for complete computers such as QEMU and VirtualBox
indeed tend to emulate the full CPU, so apps can believe that
they could do whatever they want. However, this STILL allows
you to catch IN/OUT attempts and simulate hardware :-)

You can also do this with CPU virtualization assistance,
but again, emulators ALWAYS emulate part of your hardware.

If they have DOS users as target audience, the hardware will
include VGA and SoundBlaster 16 and similar. If the goal is
to run Windows 10 inside a window on your Apple, then your
emulator is NOT likely to emulate things needed by DOS games.

Eric



_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to