BasicBox is an x86 PC emulator written entirely in Visual Basic 6. Emulated CPU support is at a 486 baseline, but includes a few later opcodes such as CMOV and RDTSC.
It can run Windows NT 4.0, Linux and DOS. Slowly. You are going to want a very modern CPU with high IPC and high clock speed. My i9-13900KS runs things okay. My Ryzen 7 4800H laptop, much less so.
Why would I write an x86 emulator in VB6? It seemed like a fun project. I grew up with VB6, and I still like to do stupid stuff like this in it sometimes. This is really a port of my other emulator, PCulator, which is written in C.
It's fairly functional. Tested working OSes are Windows NT 4.0, various older Debian GNU/Linux distributions, and DOS. It can run many DOS games as well. Again, slowly. Games that needed a real 486 are not generally going to be very playable in BasicBox, if at all. This whole project is really more of a proof-of-concept, showing that it's at least possible to emulate a full PC in VB6.
There are two sample hard disk images available in the release section along with the pre-built BasicBox release.
There is a FreeDOS sample, and a Debian Potato 2.2 sample. Unzip them into the same folder where you put BasicBox.exe, navigate to that folder in a command prompt and type either run-FreeDOS.bat or run-potato.bat
The root password for the Debian sample is "basicbox"
- BasicBox currently requires you to configure the guest machine from the command line. Launch with -h for a list of options. I plan to have a GUI configuration utility soon.
- Click in the window or press Ctrl-F11 to "grab" the mouse. Ctrl-F11 releases the grab.
- Ctrl-F12 injects a Ctrl-Alt-Delete sequence to the guest OS.
- Windows NT 4.0 doesn't like my IDE controller, it blue screens during startup unless using a SCSI hard disk. DOS and Linux seem to work fine with IDE.
- There is a "-video et4000" option but it's buggy and has issues, so I don't recommend using it yet. Stick with the default "stdvga" card for now.
- It uses a real 486 era BIOS, so just like back in the day you need to configure IDE disks in BIOS setup.
- Have a lot of patience. :)
- Emulated NE2000 is at IO port 0x300, IRQ 7. (If enabled)
- Emulated BusLogic SCSI default IO port is 0x334. (If enabled)
- Emulated Sound Blaster is at IO port 0x220, IRQ 5, DMA 1.
- To configure an empty-on-boot SCSI CD drive, for example on SCSI ID 1, use: "-scsi-cd 1 ." then you can change ISOs on the fly from the UI.
- 486 CPU (plus a few extra instructions... let's just call it an "enhanced 486" for now)
- 387-class FPU (ported from Tiny386)
- ATA/IDE controller
- BusLogic BT-545S SCSI controller with both hard disk and CD ISO support (ported from 86Box)
- Floppy controller (A bit broken, works in DOS. Linux and NT 4 don't really like it.)
- VGA graphics
- Microsoft-compatible serial mouse
- NE2000 network card (ported from Bochs) -- requires winpcap/npcap to be installed.
- Sound Blaster (my implementation) + OPL3 (NukedOPL ported to VB6)
- SPEED OPTIMIZATION! As much as possible at least. Start with seeing how much improvement there is switching from function calls for opcodes to a huge Select Case.
- Get Windows 2000 working.
- Fix IDE issues.
- Finish user-mode networking module so pcap isn't required.
- Get ET4000 working correctly.
- Some GUI config tool.
- Fix some bits of very ugly code.
- Fix various other bugs








