So maybe you’ve decided you want to check out the good old days of computing, possibly by following this guide from LegRoom.net. If you don’t have a suitable old PC lying around, you’ll probably try something like VirtualBox. For the most part, it’ll work great, but there are some caveats to be aware of when running DOS in a virtual machine.
The easiest way to move files between your host computer and the DOS virtual machine is to create the virtual machine with a VHD (Virtual Hard Disk) hard drive instead of the default VDI format. In Windows, you can mount VHDs using Disk Management and simply copy files over in Explorer. Make sure the virtual machine is off, though, or you risk corrupting data. The process for mounting VHDs in Linux and macOS is a little more involved, so I won’t cover it here. Once you get the network up and running, you can use FTP, SFTP, or shared network folders to transfer files instead.
In addition to creating a VHD disk as mentioned above, you’ll also want to make sure the processor execution cap for the virtual machine is set at 40% (the lowest VirtualBox will go without complaining). This is because, without additional utilities like DOSIDLE, DOS doesn’t throttle the CPU when idle. Without the cap, VirtualBox will take up all the processing power of the host machine while the DOS virtual machine is running. DOS won’t miss the extra power anyways.
VirtualBox’s suggested 32 MB of RAM should be fine. DOS can only make use of a maximum of 64 MB in any case.
When enabling EMM386 memory management in config.sys, I found that the guide’s setting wouldn’t work with VirtualBox. It’ll give you the error “Unable to set page frame base address–EMS unavailable” when EMM386 is loaded during boot.
Instead, try:
DEVICEHIGH=c:\dos\emm386.exe ram i=b000-b7ff i=c900-efff frame=e000
This sets the page frame manually for EMM386 and tells it to make use of some memory areas used by VirtualBox ROMs so you don’t get an error about an option ROM being detected within the page frame. This configuration may break between major VirtualBox revisions, though.
If you get errors about the Intel PXE Boot ROM, try this alternate configuration:
DEVICEHIGH=c:\dos\emm386.exe ram x=e200 i=b000-b7ff i=c900-e100 i=e300-efff frame=cc00
It excludes the memory space occupied by the ROM and moves the page frame lower to account for that. Isn’t memory management fun?
When you set up a DOS virtual machine in VirtualBox, it gives you an AMD PCnet-Fast III ethernet card by default. It’s well-supported under DOS, but you’ll need the right drivers to get it to work (direct download links):
When loading the packet driver, the correct syntax in autoexec.bat is:
loadhigh c:\dos\pcntpk.com INT=0x60
Also, the NDIS driver comes in a self-extracting EXE that won’t run in DOS. On your host computer, you can open the EXE as an archive with 7-Zip and extract the contents to transfer over to the virtual machine. You’ll need the .INF and .DOS files.
The suggested Toshiba CD/DVD-ROM driver doesn’t work with VirtualBox. Instead, I had success with FreeDOS’s UDVD2 driver.
That should be all you need to know to get MS-DOS 6.22 working in VirtualBox, but if I missed anything, or you have problems not covered here, let me know.