Skip to content

mikechambers84/BasicBox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

BasicBox: an x86 PC emulator written in Visual Basic 6

About

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.

Current status

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.

Sample hard disk images

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"

Usage notes:

  • 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.

Features

  • 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)

To do:

  • 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

Some screenshots

Windows NT Workstation 4.0

Windows NT Workstation 4.0

mIRC running in NT

VB6 running in NT

Debian GNU/Linux 2.2 Potato

DOOM

Mortal Kombat 3

NHL Hockey 96

Duke Nukem 3D

About

A 486-class PC emulator written entirely in Visual Basic 6

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

No contributors