My full review of VirtualBox 4.x is coming, but for now I can confirm the upper memory bug for PC DOS still exists. Guess I'll be using VMWare Fusion and/or QEMU for proc-control stuff for a while yet :(
Bill Gates infamously quipped that nobody would ever need more than 640KiB of memory, and that's exactly how DOS sees it. Regardless of how much RAM your computer has, many DOS applications will never see more than the first 640KiB. This area is referred to as Conventional Memory.
Over time power users worked around this limitation by using so-called expanded and extended memory managers which allowed applications and drivers (that supported it!) to load themselves "high" or above this 640KiB memory area. This means extra RAM in systems could be used, and it also kept as much Conventional Memory free for older software, games and drivers that demanded it.
Unfortunately, using UMB (upper memory blocks) was always a bit of a voodoo science, and even today some software has issues with it. QEMU, VMWare software and Connetix Virtual PC (RIP) allow full UMB access, however even the latest versions of VirtualBox still have severe stability issues when used with upper memory managers.
The EMM386 expanded memory manager that was bundled with several DOS-based versions of Windows and later versions of DOS. If it is loaded in
CONFIG.SYS in its default form like this:
DOS=HIGH,UMB DEVICE=C:\DOS\HIMEM.SYS DEVICE=C:\DOS\EMM386.EXE /VERBOSE
… it results in the following error upon boot:
WARNING Unable to set page frame based address–EMS unavailable
While undesirable, on machines where this capability is unavailable the
NOEMS flag can be used:
DOS=HIGH,UMB DEVICE=C:\DOS\HIMEM.SYS DEVICE=C:\DOS\EMM386.EXE NOEMS /VERBOSE
This allows the machine to boot, and does allow drivers and applications I defined in
CONFIG.SYS to be loaded high.
Unfortunately, if you attempt to mount any CD-ROM or floppy disk images in the VirtualBox virtual machine, EMM386 halts the system with this same error.
EMM386 has detected error #13 in an application at memory address 0048:061F. To minimize the chance of data loss, EMM386 has halted your computer. To restart your computer, press ENTER.
Needless to say, having a virtual machine that only partly works and only if no media is mounted is a deal breaker.
Those of you who've kept up to date with DOS developments of late know about this brilliant alternative to EMM386 that was first featured in Germany's c't magazine and now lovingly maintained to this day by Uwe Sieber. The primary advantage
UMBPCI.SYS it has over EMM386 is it uses a fraction of the memory, which is obviously A Good Thing.
UMBPCI.SYS plays brilliantly with QEMU and VMware, VirtualBox fails to load it at all upon boot if its defined in place of EMM386 in
No unused memory block found
DOS is still a more commonly used system than I think many people appreciate, but I also acknowledge the limited resources a free software project like VirtualBox has to maintain support for so many different client OSs. I can appreciate that.
For now, if I want to run this DOS software l'll be continuing to use QEMU on my OS X, FreeBSD and Linux boxes for DOS. Which is a shame, because having a high performance cross-platform VM tool to rule them all would sure make my life easier.
Finally, people like to pick apart my posts as of late, so here are some points that before I wouldn't have bothered with ;). I am aware of DOSBox and FreeDOS. They do a great job. Unfortunately the software I need to run is not compatible with either one. PC DOS 2000 is still the most broadly compatible DOS distribution I've ever used, and have a lot of time invested in it. QEMU and VMware run it just fine, so I'll have to stick with them.
Oh and I'm aware that icon is of MS-DOS-Tan and NOT PC DOS, but one has to make do with the resources at hand!