-
Oct 30th, 2012, 06:20 PM
#1
Thread Starter
Member
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.
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:


Last edited by miker00lz; Jun 24th, 2015 at 11:07 AM.
-
Oct 30th, 2012, 07:19 PM
#2
Junior Member
Re: Pure VB6 8086 PC emulator!
-
Oct 30th, 2012, 09:13 PM
#3
Thread Starter
Member
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.
-
Oct 30th, 2012, 09:17 PM
#4
Thread Starter
Member
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.
-
Oct 30th, 2012, 11:57 PM
#5
Re: Pure VB6 8086 PC emulator!
Cool! I've always wondered how to write an emulator.
when you quote a post could you please do it via the "Reply With Quote" button or if it multiple post click the "''+" button then "Reply With Quote" button.
If this thread is finished with please mark it "Resolved" by selecting "Mark thread resolved" from the "Thread tools" drop-down menu.
https://get.cryptobrowser.site/30/4111672
-
Oct 31st, 2012, 12:06 AM
#6
Thread Starter
Member
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.
-
May 15th, 2013, 04:47 PM
#7
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).
-
Jul 13th, 2013, 04:14 AM
#8
Thread Starter
Member
Re: Pure VB6 8086 PC emulator!
 Originally Posted by 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). 
That's Windows 3.0 in the screenshot actually, which still worked even on the 8086/8088 processors.
-
Jul 13th, 2013, 12:08 PM
#9
Thread Starter
Member
Re: Pure VB6 8086 PC emulator!
Last edited by miker00lz; Feb 13th, 2016 at 12:38 AM.
-
Jan 6th, 2014, 07:57 PM
#10
Re: Pure VB6 8086 PC emulator!
it thought it was a windows 2 screenshot. Looks like the OS the tandy computers came with.
-
Jan 6th, 2014, 08:37 PM
#11
Re: Pure VB6 8086 PC emulator!
 Originally Posted by Lord Orwell
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.
-
May 4th, 2015, 01:25 PM
#12
New Member
Re: Pure VB6 8086 PC emulator!
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.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|