• Please review our updated Terms and Rules here

A new 486 PC emulator (PCulator)

Mike Chambers

Veteran Member
Joined
Sep 2, 2006
Messages
2,657
I had talked about this a little bit in the 386/486 forum when trying to work through some early issues, but it's probably not the right place for it since this is about an emulator rather than real hardware. Even this section might not be, should this go in off-topic?

I've been developing this 486 PC emulator in C. It's still early and there is plenty of work to do, but it'll run a couple of 486 BIOSes, boot DOS and play a lot of DOS4GW games. It'll also boot Debian 2.2 Potato without any issues.

The code needs a lot of clean up and there are still plenty of bugs to smash. It's not particularly fast, either. It's an interpreter CPU engine, and an unoptimized one at that. I'm focusing on functionality first, I'll tackle optimization eventually. It runs about like a mid-tier 486 on a good modern PC. Maybe on par with a DX2/66 or a bit better on my i9-13900KS?

Hardware emulated:

- 486 CPU
- x87 FPU
- CGA and VGA video cards
- Sound Blaster + OPL3
- NE2000 network card
- Standard Microsoft serial mouse

Testers and contributors welcome!

Code: https://github.com/mikechambers84/pculator/tree/dev

Build: https://github.com/mikechambers84/pculator/releases/tag/v0.25.6.19

It builds for Windows only for now. The build comes with a small Debian 2.2 hard disk image to get you started with something fast. The root password is pculator and there's a user named pculator with the same password.

I'd eventually like it to handle up to the Pentium Pro/686 instruction set so that more, later OSes can run.
 
Last edited:
Any plans to add emulation for the Western Digital WD8003? It was probably the most ubiquitous NIC for XENIX and UNIX System V/386 operating systems.

I actually was looking at that yesterday. I'll probably add it. It's good to have options for the NIC.

NE2000 seemed like a good first card, it was popular with wide support among OSes.
 
Just wanted to share since I've been working really hard on this since the last post.

It runs Windows NT 4.0. 😀

My virtual 8086 mode being extremely broken was the big issue stopping it. It requires that to work correctly even for something as basic as putting the system into graphics mode on boot.

I've fixed tons and tons of bugs, and have also added the i430FX an i430HX chipsets, ATAPI CD-ROM support, BusLogic SCSI, PCI bus, and it's now at a Pentium (non-MMX) baseline, minus a few minutiae.

A functional 386+ PC emulator has been a bucket list goal for like... 20 years. It's really getting there.

It even runs UT99! (At 0.5 FPS)

Speed-wise it's only about like a mid to high-end 486 depending on the guest code running, and that's on a pretty modern fast host CPU. It's still a fully interpreted CPU core. I'm not sure if I want to dip my toes into dynamic recompilation. It seems like a bit of a nightmare for x86.


pculator-bios.png

pculator-ut99.png

pculator-vogons.png
 
Last edited:
Back
Top