86Box v3.11
November 26, 2022 - written by richardg867This is the November 2022 update to 86Box, bringing folder mounting through CD-ROMs, new hardware, bugfixes across the board, and big improvements to network emulation truly making this the 86Box for Workgroups release. As always, you can download 86Box v3.11 from GitHub.
Folders as CDs
We are very often asked for ways to ease file transfer between the host system and emulated machines. Truth is, there aren’t many good solutions for that; the Shared Folders feature present on virtualizers requires purpose-built software to be installed within the emulated machine, which goes against our spirit of being a full system emulator, and network-based solutions such as FTP or SMB require the machine to be set up with a network connection, potentially adding complexity to your setup for something you might not need otherwise.
This release’s headline feature is the ability to mount a folder from your host system as if it were a CD-ROM image. Any files and subfolders (along with metadata such as modification dates) are passed through to the virtual image, with filenames automatically converted to short names for DOS, Joliet long names for Windows, and Rock Ridge long names for Linux and other systems. There is no size limit for the folder; we’ve successfully tested folders containing tens of gigabytes of data, though 32-bit builds of 86Box may run out of memory if you have this much data across many small files. It’s worth noting only the directory structure and metadata is stored in the host’s RAM; file contents are read on demand as the emulated machine accesses files, which are not cached in memory by 86Box.
The virtual disc does have some limitations you should keep in mind:
- The UDF filesystem (used by real DVDs) is not supported, and therefore, individual files are limited to under 4 GiB in size;
- Avoid making any changes to the mounted folder or the files contained within while the disc is inserted, as its contents are not automatically refreshed (this may change in the future);
- Being a standard CD-ROM (though without a size limit), the disc is naturally read only.
We plan on adding support for custom file structures through VirtualBox VISO files in the future, as well as the ability to generate discs in the High Sierra format or without long filenames; High Sierra is important for replicating the early CD-ROM experience, and in a somewhat related note, pre-ATAPI CD-ROM drives are also in our roadmap.
But why CDs?
Some of you may see that last limitation as a dealbreaker and ask: what is the point in making a file sharing system that only goes one way? 86Box emulates magneto-optical and Zip disks, which are both writable removable media formats with significant data capacities, so why not use those instead?
It turns out emulating a writable filesystem is a significantly more difficult job, which involves sector ordering, file renaming and other inherent complexities in keeping track of how the filesystem allocation tables and sectors map to the underlying host files. The only attempt at a writable virtual filesystem we’ve seen so far is QEMU’s VVFAT feature, which leaves a lot to be desired; your writer has managed to confuse it into corrupting files or hitting an assertion failure in more than one occasion. We’ve definitely thought about porting VVFAT from QEMU, or maybe even rolling our own virtual filesystem implementation, but the latter would be a monumental task for a potentially mediocre result.
While there are common methods to create freely-writable optical discs, such as DVD-RAM and Packet Writing (the latter relates to the Windows “what do you want to do with this disc?” prompt that anyone old enough to have used recordable CDs or DVDs will remember), these methods run on top of two features we don’t implement, but are in our ever so large “maybe do it one day” list: CD/DVD writing and the UDF filesystem. Even then, the aforementioned complexities in keeping track of a writable filesystem come into play, and they would only be avoidable by limiting ourselves to Packet Writing on a CD-R or DVD-R.
Changelog
Emulator
- Added Vulkan renderer through MoltenVK for most Metal-capable macOS hosts running 10.14 and newer (non-Metal Macs and 10.13 are still supported)
- Added
-I/--image <letter>:<path>
command line option to automatically mount a floppy disk image in the specified drive - Added more display scaling factors (up to 8x)
- Fixed incorrect full screen scaling
- Fixed Keyboard requires capture option being ignored in full screen mode
- Fixed emulator crash with
nvr_load()
message when a machine’s CMOS file (.nvr
) is not readable - Fixed Discord integration causing high CPU usage even if disabled
- Fixed white screen when switching to the Qt (OpenGL) renderer
- Fixed Vulkan renderer showing up as an option on hosts without Vulkan capability
- Changed mouse capture back-end on Linux hosts with XInput 2.1+ capability, please let us know if you have mouse-related issues!
- Changed default full screen stretch mode to 4:3
- Updated AppImage runtime for Linux hosts
- Improved mouse input responsiveness on all hosts
- Improved performance of the alternate evdev mouse mode on Linux hosts
- Slightly improved performance of the Qt (OpenGL) renderer
User interface
- Added a list of recently used images for floppy and CD-ROM drives
- Added icons to help identify recently used images and folders on the CD-ROM menu
- Added translation: 🇹🇼 Chinese (Taiwan) by kzmidze
- Fixed incorrect hard disk image sizes when creating images larger than 4 GB or with more than 16 heads
- Fixed hard disk image size (in MB) changing itself while a new size is being typed in
- Fixed keyboard shortcuts for sending Ctrl+Alt+Del and taking screenshots in full screen mode
- Fixed pause button icon behavior
- Fixed missing AppImage icon on some Linux desktop environments
- Fixed missing menu separators on macOS
- Changed keyboard shortcut for pausing to
Left Alt + Right Alt + Pause
- Updated translations: German, Portuguese (Brazil)
Machines
- Added Pravetz-16 / IMKO-4 and Micoms XL-7 Turbo Bulgarian XT clones
- Added Packard Bell PB8810 XT clone
- Added Epson Equity LT portable XT clone
- Added V20 XT clone
- Added MSI MS-5124 Socket 7 motherboard
- Added real time clock to the Olivetti M21/24/24SP and M240
- Fixed DTK PKM-0038S E-2 hanging on the memory test during POST
- Fixed integrated mouse not working on the Amstrad PPC512/640
- Fixed any mouse not working on the Olivetti M21/24/24SP and M240
- Fixed keyboard not working properly on the Amstrad PC20(0), Olivetti M21/24/24SP and M240
- Fixed IBM PCjr displaying
ERROR D
after a hard reset - Fixed secondary IDE channel on the PC Partner MB500N and QDI FMB
- Fixed PCI device IRQs on the Azza PT-5IV
- Fixed Fn key (mapped to Right Ctrl) on Toshiba machines
- Fixed Vendex HeadStart Turbo 888-XT, Compaq Portable and other XT clones misdetecting the amount of installed floppy drives
- Fixed ADI 386SX BIOS setup hang when editing the user-defined hard disk type 48
- Fixed Olivetti M21/24/24SP and M240 floppy drive type detection
- Fixed on-board IDE controller incorrectly enabled and causing errors on the Samsung SPC-6000A
- Fixed PS/2 mouse incorrectly enabled on the Gigabyte GA-586IP and QDI FMB
- Fixed BCM GT694VA filed on the wrong category (now Slot 1)
Hardware
- Core
- Added NEC V20 and V30 CPUs for 8088 and 8086 machines respectively
- Added missing Extended 3DNow instructions to the AMD K6-2+ and K6-III+
- Fixed Windows protection error when booting Windows 95 or 98 FE on higher-clocked Pentium II and Celeron CPUs
- Fixed AAM CPU instruction issues with Microsoft Flight Simulator 98 and potentially other applications
- Fixed XT keyboard not working on applications which modify the keyboard enable flag
- Fixed PCI device IRQs on machines with the OPTi PCI bridge
- Fixed emulator crash with
Over limit!
message on the dynamic recompiler for x64 builds - Fixed specific issues with CPU exception handling
- Fixed incorrect CPUID behavior on AMD K6-2 and K6-III CPUs
- Fixed console output noise produced by some emulation modules
- Improved performance of a few internal components such as timers and I/O ports
- Changed 8088/8086 parity flag emulation to offload calculation to the host CPU
- Display
- Added Pravetz VDC-2 ISA video card (CGA clone with Cyrillic support)
- Added Tseng ET3000AX ISA video card
- Added NEC SV9000 (Trident TVGA 9000B) ISA video card
- Added 3dfx Velocity 200, Voodoo3 1000 and 3500 AGP video cards (Voodoo3 1000 also available as PCI)
- Attempted fix for texture glitching on the Voodoo and Voodoo 2
- Fixed Voodoo Banshee/3 crashing the emulator with
banshee_do_screen_to_screen_blt: unknown srcFormat
message on full motion video applications - Fixed Voodoo 2 crashing the emulator with
CMDFIFO2: Not Banshee
message - Fixed 2D glitching and lack of RAM selection on the MSI MS-6168 / Packard Bell Bora Pro on-board Voodoo 3
- Fixed IBM XGA BIOS loading issues resulting in POST failures
- Fixed a few issues with certain Windows applications on the IBM XGA
- Fixed Cirrus Logic video cards glitching with generic drivers on Windows 3.1x
- Fixed S3 86C801 and 86C805 text corruption with specific drivers
- Fixed OS/2 cursor glitching on S3 cards
- Fixed Kasan Hangulmadang-16 VGA Korean font mode not working
- Fixed Trident TGUI cards hanging the emulated system on specific accelerated applications
- Fixed Image Manager 1024 running too fast
- Improved Voodoo Banshee/3, S3 ViRGE and ATI Mach64 stability on ARM hosts (including Apple Silicon)
- Improved performance of VGA emulation in specific cases
- Slightly improved performance of the Voodoo dynamic recompiler on x86 and x64 hosts
- Input
- Added five-button PS/2 mouse option
- Fixed middle click incorrectly sending a simultaneous left and right click on three-button PS/2 mice
- Fixed Windows and Menu keys not working on some Linux hosts
- Sound
- Added AcerMagic S20 Sound Blaster Pro and Windows Sound System compatible ISA sound card based on the OPTi 82C929 chipset
- Added miroSOUND PCM10 ISA sound card (also SB Pro and WSS compatible OPTi 82C929) with integrated Yamaha OPL4 synthesizer
- Added Tandy PSSJ clone and TNDY ISA Tandy sound cards for non-Tandy machines
- Added Roland MT-32 ROM 2.04 and CM-32LN MIDI synthesizers
- Fixed Sound Blaster 2.0 crashing the emulator when its OPL2 is accessed
- Fixed AdLib MCA not being detected by the emulated machine
- Fixed Ensoniq AudioPCI legacy DOS drivers
- Fixed FluidSynth not working on macOS hosts
- Network
- Reworked network emulation to improve performance and stability
- Added support for up to 4 network cards per machine
- Added 3Com 3C501 ISA network card (based on VirtualBox)
- Added network cable connection and disconnection through the status bar and Media menu
- Fixed AMD PCnet-FAST III speed being capped to 10 instead of 100 Mbps, though not all host systems can reach higher speeds
- Fixed Settings window crashing if too many PCap interfaces are present on the host (particularly on macOS hosts)
- Ports
- Fixed ESC/P and PostScript printers not working on macOS hosts
- Fixed serial port resource allocation issue on later ALi chipsets
- Storage
- Added virtual ISO for mounting host folders on CD-ROM drives
- Added option to switch ATAPI and SCSI CD-ROM drive identification between an earlier drive (the default on previous 86Box versions) and a newer one (the new default)
- Added Olivetti M21/24/24SP, M240, Victor V86P and Toshiba T1200 integrated hard disk controllers
- Added Western Digital WD1004 RLL hard disk controllers
- Fixed hard disks being removed if the image file is in use
- Fixed IDE controller resource allocation issue on later ALi chipsets
- Fixed Tekram DC-390 SCSI controller unable to boot from some bootable CDs
- Fixed CD-ROM images with Unicode characters in the file path not working on some Windows hosts
- Fixed ATAPI drives (CD-ROM, MO and ZIP) being detected 8 times over or as a hard disk by some software
- Fixed ATAPI CD-ROM not working with specific DOS drivers from Acer, Mitsumi and TEAC
- Fixed emulator crash with
esdi_read
message with the IBM ESDI MCA disk controller - Changed CD-ROM drive model on the Sony Vaio PCV-90 to make its recovery disc work