# General > Application Testing >  Pure VB6 8086 PC emulator!

## miker00lz

Hello, I've been working on this 8086 PC emulator written completely in pure VB6, called vb8086. Thought it would kind of fun and something not seen before (afaik) in VB6. There's a good reason for that, VB6 sucks for this type of thing but it was fun to do. Not everything will run perfectly yet, I believe there is a bug in emulation of the 16-bit IMUL/IDIV instructions.

So basically, this emulator supports the basics of the old 8086 style PC hardware platforms. The CPU instructions are totally emulated, minus the bug I mentioned. The i8253 timer chip is emulated, as well as the i8259 interrupt controller. Disk functionality is emulated for both floppy and hard drives through interrupt 13h calls. Many games run very well in it right now, but some are crippled by the IMUL/IDIV bug. One in particular that runs awesomely is Ultima 6. I've beaten the whole game inside my emulator without any issues. Ms Pacman runs well too, and a lot of other older ones. The PC speaker is emulated kind of poorly, but it's there.

As far as video emulation support, it supports the CGA video and text modes, as well as 320x200 8-bit VGA/MCGA mode.

So, I'm providing all of the source code as well as a few data files with the font and BIOS. I didn't include the .EXE to comply with the forum rules, but you can easily compile it yourself. Just load the vb8086.vbp file and compile. If you get any errors compiling or running, run the resreg.bat file with will register dx8vb.dll and comdlg32.ocx with Windows and try again.

I also included a blank 20 MB hard drive image to use in the emulator with the bare files for booting DOS 6.22. Use a utility like WinImage to insert files for DOS applications or games into the file drive0.raw, so that you can run them in the emulator.

I'd love feedback. Being VB6, it's not very fast. You'll want at least a 3 GHz CPU.

Here are all the files: http://s000.tinyupload.com/index.php...25203733885475 (about a 1.4 MB download, expands to over 20 MB mostly just from the blank hard drive image)

Here are some screenshots of it running just to give an idea of what it looks like and can do:

----------


## mjohnlq

Very interesting!

----------


## miker00lz

Thank you! I've written a much more complete emulator in C over the last couple of years (called Fake86), but I used to be a VB6 fanatic. I still like VB6 in some ways, and I thought this would be fun to put together.  :Smilie:

----------


## miker00lz

The problems in the IDIV/IMUL seem to come from me not being able to use an unsigned 32-bit variable to work things out with, I'll have to figure a way around that. The same CPU code works fine in FreeBASIC with unsigned values.

----------


## Nightwalker83

Cool! I've always wondered how to write an emulator.

----------


## miker00lz

It's probably a good one to learn about it from by checking out the source code! It boils down to knowing how to implement the CPU, other components, and "connect" them all together. When I first wrote the code for this stuff, there was a LOT of reading of datasheets and other docs about the chips.

----------


## Joacim Andersson

Hmmm.... By just looking at the screenshots you posted I must say that there must be something wrong with your emulator. If it truly emulated the 8086 processor then it would be impossible for you to run Windows 3.1 since it required 80286 to run in standard mode and 80386 to run in extended mode (taking advantage of virtual memory assignment).  :Smilie:

----------


## miker00lz

> Hmmm.... By just looking at the screenshots you posted I must say that there must be something wrong with your emulator. If it truly emulated the 8086 processor then it would be impossible for you to run Windows 3.1 since it required 80286 to run in standard mode and 80386 to run in extended mode (taking advantage of virtual memory assignment).


That's Windows 3.0 in the screenshot actually, which still worked even on the 8086/8088 processors.

----------


## miker00lz

*duplicate post* sorry

----------


## Lord Orwell

it thought it was a windows 2 screenshot.  Looks like the OS the tandy computers came with.

----------


## Joacim Andersson

> it thought it was a windows 2 screenshot.  Looks like the OS the tandy computers came with.


No, Windows 2 didn't have the Program Manager and the File Manager, it had something called the MS-DOS Executive.

----------


## Al_Capwn

I'm amazed this thread doesn't have more posts, this is extremely impressive. Who would have thought we'd ever see a PC emulator in VB6??? And fairly fast in EXE form! Fantastic work.

----------

