Reply 20 of 25, by zb10948
Jo22 wrote on 2024-10-19, 21:25:That's right, but.. an hypervisor is also half an emulator in most cases.
Things like the motherboard, the sound card, and peripherals and video has to be emulated.
I mean yeah, half, 10%, 90%, but in that case we're using the term that conflates with the VM terminology.
It used to be, when this stuff came to PC, that emulators emulate the target CPU and VMs don't. Emulators can precisely emulate the behaviour of a real world physical device, VMs deal with standards only. You could say a VirtualBox emulates SVGA but, In my opinion, that's not correct since SVGA is a standard, and you can't emulate standards, you implement them. 86box does emulate specifics of a graphics device like memory access and additional registers and stuff like that. I believe there are cards there accurately emulated that IRL had broken VESA support and a bunch of old CGA/EGA addon modes. That is completely out of scope for what VM does.
However being under those rules, an AMD PC-net assigned NIC to VM could be seen as emulation, because there were no standards on how to make a generic NIC for PC back then. Maybe a NE2000 generic standard fits there, but it is not supported by modern VMs.
Jo22 wrote on 2024-10-19, 21:25:Virtual PC 7 on Macintosh was a full emulator with an x86 emulation core. […]
Virtual PC 7 on Macintosh was a full emulator with an x86 emulation core.
The only exception from this rule are hypervisors that emulate an modified guesr OS.
AndLinux for Windows 2000/XP is such a thing. It runs a virtualized Linux kernal on top of Windows NT, without emulating any PC hardware.Programs like Qemu were full emulators, too, but had an optional accelerator module that used the native host CPU to speed up things.
Same could be used for 86Box, in theory.
The dynamic recompiler (dynarec) is already being used for CPUs from 80486 onwards (optional on 486, required on 586 and up).
Going a step further and use an virtualization back-end wouldn't be that hard. AMD-V and Intel-VT are available to assist this. CPUs support them for 20 years now.Another example is Insignia SoftPC on Macintosh. It had been used as a basis to create SoftWindows later on.
Microsoft found it very good and licensed it, apparently.
The x86 emulation core of SoftPC had been used in the RISC versions of Windows NT 3.5x and NT4 (Alpha, MIPS, PowerPC).There, it was the basis for NTVDM, the DOS virtual machine. It's purpose was to run DOS applications and Windows on Windows (WoW).
Regular x86 CISC version of NT had used the native CPU and its V86 mode for same purpose.Edit: Also interesting, there was Windows Virtual PC, too. It's a mangled version of VPC 2007/VPC7 that runs Windows XP on Windows 7 ("XP-mode").
That copy of XP had been used to run old applications and hardware (such as USB scanners and printers).
The concept was similar to the Classic Environment on Mac OS X, which ran a copy of Mac OS 9.2 in a sandbox.
Yeah there is a ton more cases that may use a combination of approaches to give end user the best experience. I mean some Apple user doesn't care about technicalities, he wants to run the software. And if his host platform may be different to that target, then the suite will use both emu and VM approach.
Compatibility layers like NTVDM or Wine or FreeBSD-linuxlator are a third kind. Also I have a boxed SCO Server 3 that claims MS-DOS compatibility, never tried it tho.
On Windows itself we also have multiple official approaches in getting *nix compatibility. There was SFU which was an NT based subsystem like NTVDM, nowadays we have WSL which is a VM. Meanwhile there's also 3rd party Cygwin which is completely userland application and has no special interaction with OS kernel or the platform.
Btw for your question about VMs, what I usually do is try utilizing the default one I use for that too. If I'm on Linux I have some older versions of VMWare Workstation, on FreeBSD VirtualBox, on Windows Hyper-V. I'll try googling is it feasible to do the old OS in one of those. And if I'm not mistaken, all apart from Hyper-V should be basically usable for DOS->Win2K or old Linux. I have used both VMWare and VirtualBox to make DOS installations, and burn those raw disk images to CF and boot them on physical hardware, e.g. doing the old box installation without messing with phyisical floppies by utilizing the VM. Ofc I done this with 86box too.
I've tried to boot up a vbox with accelerated Windows 98 in it, but I remember I wasn't that thrilled about the results. I might try to do once more.