86box (PC emulator)

86box is a low level x86 emulator that runs older operating systems
and software designed for IBM PC systems and compatibles from 1981
through fairly recent system designs based on the PCI bus.

Features:

- Easy to use interface inspired by mainstream hypervisor software.
- Low level emulation of 8086-based processors up to the Mendocino-era
  Celeron with focus on accuracy.
- Great range of customizability of virtual machines.
- Many available systems, such as the very first IBM PC 5150 from 1981,
  or the more obscure IBM PS/2 line of systems based on the Micro
  Channel Architecture.
- Lots of supported peripherals including video adapters, sound cards,
  network adapters, hard disk controllers, and SCSI adapters.
- MIDI output to Windows built-in MIDI support, FluidSynth, or emulated
  Roland synthesizers.
- Supports running MS-DOS, older Windows versions, OS/2, many Linux
  distributions, or vintage systems such as BeOS or NEXTSTEP, and
  applications for these systems.

The package includes the ROM images required for emulation.

Full documentation is available at:
https://86box.readthedocs.io/en/latest/index.html

Dynamic recompilation: On x86_64 and aarch64, 86box's CPU emulation
can make use of dynamic recompilation, for a speed boost. By
default, the "old" dynamic recompilation is used. You can export
NEW_DYNAREC=yes in the environment to try the "new" code (possibly
faster but less well-tested). On 32-bit x86, dynamic recompilation is
not supported at all.

Optional dependency: rtmidi (autodetected). If rtmidi is installed
at build time, 86box will be built with support for it. If you have
rtmidi installed but want to build without it, export RTMIDI=no in the
environment. MIDI will still work without rtmidi.

Optional dependency: gamemode. This is a runtime dependency, so it can
be installed at any time without having to rebuild 86box.

Note: Starting with version 5.0, 86box requires SSE2 extensions to run
on 32-bit x86. Unless your CPU is over 20 years old, this shouldn't
cause a problem. It's still possible to *build* 86box on a system
that lacks SSE2, but not *run* it (you could install the package on a
different machine that has SSE2 and it would work).
