PERQemu: A PERQ 1 emulator

About

After acquring my PERQ 1A in the summer of 2006, I thought it'd be a challenging undertaking to attempt to write a PERQ emulator, since it seemed that no one had previously attempted to do so. Little did I know exactly how challenging this project would be. Just to give you a basic idea, here are a few of the more interesting parts of the PERQ architecture:

Fortunately, a lot of very good documentation is available covering the microcode and CPU hardware, thanks mostly to the invaluable CPU Technical Reference available on Bitsavers. There is far less documentation regarding most of the other hardware, but I've found Pascal and microcode sources for most of POS and the system's boot ROMs, which have made reverse-engineering the system considerably easier. Additionally, I have received immeasurable help on this project from Tony Duell, who is well known in the PERQ-hacking community (and many other hardware-hacking communities, for that matter) for his in-depth knowledge of the hardware. Without his help, I would have given up on this long ago. Thanks also to Steve Clark, a former 3RCC engineer who helped immensely in filling holes in the video hardware and hardware cursor emulation.

My goal for the present is to emulate a PERQ 1A system with a 16K CPU, and eventually extend the emulation to cover the PERQ 2. I still have much left to learn and much left to finish coding before I'm done, but I'm confident that I will eventually succeed with these goals.

Current Status (v 0.25)

As of Version 0.25, PERQemu is currently capable of booting POS, and almost running Accent!

Requirements

You'll need a Windows machine with .NET 2.0 or higher, or a Linux/UNIX/Mac OS machine with Mono installed to run PERQemu. It helps to have a nice fast computer, but currently even the fastest machine I've run it on (Quad core AMD Phenom 9950) just barely manages to run a bit faster than the real thing (still, progress is being made...) A screen resolution of 1280x1024 or greater is recommended, since the PERQ's display is 768x1024.

Download

Grab v0.25 here. Check out the readme for details on getting it running and using it (should be pretty straightforward.) The source is available here. E-mail me if you have any questions/comments/complaints/donuts for me.

Screenshots:

Now that PERQemu can boot and run an OS, there's actually some things to look at!

The PERQ playing a nice game of chess. Dare you put the PERQ to the test?
And of course the most important thing: The PERQ plays a mean game of Pac-Man.
Editing the boot PROM microcode source in POS's basic editor utility.
The CursDesign utility, editing one of the many cursor files that come with POS.
Scavenger running on the "user" partition of the hard disk. Scavenger is used to recover lost files and repair damaged filesystems and displays a somewhat graphical progress display (really just a visual representation of Scavenger's memory!) and a "vulture" cursor that moves from top to bottom and from left to right to indicate progress.
FontEditor editing the current POS font.
A picture of four unknown gentlemen displayed as part of the PERQ demo installed on the f1.img. I have no idea who these people are, my hunch is that they're ICL guys but this is mere speculation. Do you know who these gents are? Drop me a line!
"Peter's Picture Puzzle" showing the famous "Lena" image as part of a 15-puzzle played with the mouse. Scandalous!

 

Back to Projects