Pure VB6 8086 PC emulator!-VBForums
Results 1 to 11 of 11

Thread: Pure VB6 8086 PC emulator!

  1. #1

    Thread Starter
    Junior Member
    Join Date
    Jan 2010
    Posts
    25

    Pure VB6 8086 PC emulator!

    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. I am working on it.

    So basically, this emulator supports the basics of the old 8086 style PC hardware platforms. The CPU instructions are totally emulated, minus the bugs 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. Some games run very well in it right now, but many are crippled by the IMUL/IDIV bugs. 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 I'm working on that too.

    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. This stuff is all legal to distribute, I carefully checked that out. 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 BASIC FILES for booting DOS 6.22. Only the ones MS allows to be freely distributed. command.com, io.sys and msdos.sys. 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. Runs great on my eight-core FX-8150 (using only one core of course)... runs just about as well on my older 3 GHz Pentium 4. It runs like CRAP on my 1.66 GHz Intel Atom netbook. Don't even bother with something that slow, you'll be disappointed.

    Here are all the files: http://rubbermallet.org/vb8086.zip (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:






  2. #2
    Junior Member
    Join Date
    Aug 2011
    Posts
    28

    Re: Pure VB6 8086 PC emulator!

    Very interesting!

  3. #3

    Thread Starter
    Junior Member
    Join Date
    Jan 2010
    Posts
    25

    Re: Pure VB6 8086 PC emulator!

    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.
    Last edited by miker00lz; Oct 30th, 2012 at 09:20 PM.

  4. #4

    Thread Starter
    Junior Member
    Join Date
    Jan 2010
    Posts
    25

    Re: Pure VB6 8086 PC emulator!

    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.

  5. #5
    Web developer Nightwalker83's Avatar
    Join Date
    Dec 2001
    Location
    Adelaide, Australia
    Posts
    12,519

    Re: Pure VB6 8086 PC emulator!

    Cool! I've always wondered how to write an emulator.
    If this thread is finished with please mark it "Resolved" by selecting "Mark thread resolved" from the "Thread tools" drop-down menu.
    Please consider giving me some rep points if I help you a lot.
    Links to my code examples can now be found on my website: My websites
    Please rate my post if you find it helpful!
    Technology is a dangerous thing in the hands of an idiot! I am that idiot.

  6. #6

    Thread Starter
    Junior Member
    Join Date
    Jan 2010
    Posts
    25

    Re: Pure VB6 8086 PC emulator!

    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.

  7. #7
    Super Moderator Joacim Andersson's Avatar
    Join Date
    Jan 1999
    Location
    Sweden
    Posts
    14,433

    Re: Pure VB6 8086 PC emulator!

    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).
    Joacim Andersson
    If anyone's answer has helped you, please show your appreciation by rating that answer.
    I'd rather run ScriptBrix...
    Joacim's view on stuff.

    MVP

  8. #8

    Thread Starter
    Junior Member
    Join Date
    Jan 2010
    Posts
    25

    Re: Pure VB6 8086 PC emulator!

    Quote Originally Posted by Joacim Andersson View Post
    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.

  9. #9

    Thread Starter
    Junior Member
    Join Date
    Jan 2010
    Posts
    25

    Re: Pure VB6 8086 PC emulator!

    BTW, this emulator is actually based on a much more full-featured one (serial mouse, Sound Blaster, Adlib, ethernet emulated among other stuff) that I've written in C. It's way faster, and doesn't have any CPU bugs as far as I can tell. This VB6 version was just for kicks and to see how fast it would be.

    C version: http://sourceforge.net/projects/fake86

  10. #10
    Cyberman Lord Orwell's Avatar
    Join Date
    Feb 2001
    Location
    Elberfeld, IN
    Posts
    7,480

    Re: Pure VB6 8086 PC emulator!

    it thought it was a windows 2 screenshot. Looks like the OS the tandy computers came with.
    John Lord, Evansville Indiana

  11. #11
    Super Moderator Joacim Andersson's Avatar
    Join Date
    Jan 1999
    Location
    Sweden
    Posts
    14,433

    Re: Pure VB6 8086 PC emulator!

    Quote Originally Posted by Lord Orwell View Post
    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.
    Joacim Andersson
    If anyone's answer has helped you, please show your appreciation by rating that answer.
    I'd rather run ScriptBrix...
    Joacim's view on stuff.

    MVP

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Featured


Click Here to Expand Forum to Full Width

Survey posted by VBForums.