Skip navigation

What’s Next for the 3B2 Simulator?

Monday, September 30 2019 at 12:56 PM

It’s been a minute, hasn’t it! I’d like to talk about the state of the 3B2 Simulator and get everyone up to speed with where we are, and where we’re going.

In The Beginning

Way back in 2014, I set out on this adventure to build a 3B2/400 simulator because I wanted to play with a 3B2, but I couldn’t find one. Believe it or not, I knew very little about them at first. I eventually picked the 3B2/400 for my target because I could only find documentation for the 3B2/310 and 3B2/400 (which are, after all, exactly the same computer in slightly different boxes). The operating system source code I could find was for the 3B2/400. The processor manual on Bitsavers was for the 3B2/400. So, that’s what I went with.

Five years later, the 3B2/400 simulator is pretty darn complete. It does everything I want it to do. It runs SVR 2 and SVR 3 very well and I reguarly leave a simulator up and running for weeks at a time. (OK, there are still two very small bugs I’m hunting down, but apart from that…)

What’s Next

But the 3B2 line didn’t stop at the 3B2/400. In later years, the 3B2 line was expanded to a whole new family based around the Revision 3 system boards and bus.

Revision 3, which includes the 3B2/500, 3B2/600, 3B2/700, and 3B2/1000, is a whole different beast from Revision 2, which was the 3B2/300, 3B2/310, and 3B2/400.

The specific system board I’ve chosen to implement as the next step is the CM518B. This system board was used in the 3B2/622, 3B2/700, and the 3B2/1000-70 (these model numbers are case style and marketing distinctions, but they’re all functionally equivalent). As for why, well, it’s simply that this is the system board that I have the most documentation for. It’s also the system board that only uses a single MMU, as opposed to the CM518C system board, which uses two MMUs, and for which I have no useful documentation.

To get the CM518B system board working in the simulator, I’m going to need to do at least the following tasks:

  • Build in support for the new Revision 3 firmware ROM, which I may need to reverse engineer for more information.
  • Add support for the WE32200 chipset, which includes:
    • The WE32200 CPU
    • The WE32201 MMU
    • The WE32206 MAU
  • Support the new memory map and Programmed I/O layout of the Revision 3 system board.
  • Support for new System Board peripheral chips that differ from the Revision 2 System Board:
    • Intel 82C54 Timer IC
    • AT&T 1034A CSR Chip
    • TC5565L NVRAM
    • National Semiconductor MM58274 Real-Time Clock
    • AM2960 Error Correcting IC
    • WD FD1793 Floppy Controller
  • Support SCSI I/O expansion cards.
  • Support the 120MB SCSI tape drive, including boot support.

That’s a lot of work! In short, it’s not going to be coming any time soon. I’m guessing this is at least a year of work, since emulator development isn’t a full time job for me.

The biggest challenge is likely going to be SCSI support. I have firmware for two different revisions of SCSI card, but it has not been disassembled, so I have no idea how those cards work.

Additionally, getting SCSI supported is going to be a Chicken-and-Egg problem, because while the 3B2/400 does technically support SCSI cards, I do not have any software that supports SCSI on the 3B2/400. That means I can’t just use the existing simulator to develop SCSI support, I actually need to get the new system board working before I can implement SCSI. But, since I need to try to boot System V Release 3.2.3 off the SCSI tape drive in order to test the new system board… well, you can see where that’s going.


I have a lot to do. This is going to be a slow, tedious, ongoing project, but by the end of 2020, I really do want to see a working 3B2/1000-70 emulator getting tested out in the wild.

Wish me luck!