What does it do now? All it really does is load in the DN3500 boot ROM, and begin execution. There is no I/O, but its definitely executing 68k opcodes! Stay tuned for more updates.
Monday, February 22, 2010
Progress- February 22, 2010
I'm amazed at how fast this project is coming along! So far, I have it in a state where it compiles, using the ARAnyM CPU core! I chose this core because it is the only 68k emulation core that has FPU and MMU support, which is a major requirement for Domain/OS.
Saturday, February 20, 2010
Next Steps...
Where do we go next, now that the platform is identified? A good idea would be to get it capable of booting the system's firmware. Luckily, I have a copy of the revision 8.0 ROM, circa 1989, for the DN3500. Over the next few days, maybe even weeks, I honestly don't know, I will be dissecting the ROM, and seeing what it does. I plan to eventually provide a full commentary on the boot ROM, and how it works. Stay tuned!
What will I emulate?
Since Apollo manufactured a large variety of systems from 1981 until the early 1990s, we must pick a particular set of hardware to emulate, to make things easier for us. Through my research on Apollos, I have determined that a SAU7 machine is probably the best bet for what to emulate, particularly a system such as the DN3500.
Why should we use the DN3500?
One of the first reasons the DN3500 is a good bet is that it was one of Apollo's most popular products, and well supported by the last versions of Domain/OS. Additionally, Apollo's extensive use of ISA throughout the system allows those more familiar with PC hardware to work on Saturn V. I also have, right now, a dump of the DN3500 boot ROM, which is an excellent starting point for something to get running in Saturn V.
What will Saturn V emulate, at first?
In order to answer this question, we must first look at what a DN3500 has. A typical DN3500 system would have a configuration like this:
- Motorola 68030 CPU, at 25 MHz, with Motorola 68882 floating-point unit
- 4MB to 32MB of RAM, which is generous for Apollo systems (and anyone running Saturn V can have an Apollo DN3500 with 32 MB for free. Imagine that in 1989.)
- ISA-compatible expansion bus
- 170 or 380 MB ESDI hard disk, attached to an SMS OMTI 8621 ESDI controller
- Cartridge (QIC-24) tape controller and drive
- Some type of graphics board
- Apollo Token Ring or Ethernet interface, for networking
So what is a reasonable configuration for Saturn V to start out emulating? ESDI is a must, because otherwise, how will our "DN3500s" store data? Additionally, cartridge tape is also a must, as we need some way to get Domain/OS onto our "ESDI disks" in order for Saturn V to be of any use. We will also want graphics, since without DM, the full Apollo experience would not be possible. A reasonable start would be the 1280x1024 monochrome display board, as it is basically a dumb framebuffer. At some point, we will also want to emulate networking. I believe that Ethernet is our best bet, as we could then use Domain TCP/IP with Ethernet emulation to connect to the outside world with our "Apollos".
So what will the first release of Saturn V hopefully support? What are our goals for 1.0?
- DN3500 emulation
- Boots fully into Domain/OS
- 1280x1024 monochrome graphics support
- Ethernet support
- Support for ESDI disk storage
- Support for cartridge tape
Memory Maps...


A good place to start with emulation is to know your machine's memory layout. Fortunately, the layout is given for us in the Domain Series 3000/4000 Technical Reference. While this manual discusses the DN4000 primarily, to my knowledge, the hardware is close enough to where this map should be accurate for the most part. For your convenience, I have reproduced the layout here.
Apollo Technical Documentation
All of this is incredibly valuable to my work on Saturn V. Without the kindness of the individual(s) who scanned and PDFed these documents, my work would not be possible.
Here are the manuals I'm consulting presently (as of February 20, 2010):
Apollo Domain Engineering Handbook, Revision 04, January 1987
Introduction
Why would I write an emulator for a long-dead 1980s workstation platform? What's the point? What am I trying to prove? Will it be useful?
Personally, I think that Apollo's workstations were groundbreaking products, even today. But why are they so forgotten now? I guess a bit of background is in order, then. I'm a sophomore at an university in North Carolina, pursuing a degree in computer science, but yet... I've always been fascinated with the old, long-forgotten technology. Why did it die out? What did we learn from it? One of the things I never got was why, despite how groundbreaking Apollo's products were, lost to today's computing professionals. Nobody seems to know anything about Apollo anymore. I've been trying to get into Apollo systems, but I've been unable to actually locate one, but perhaps time will tell. What if everyone could have their own Apollo, and relive the wonders of 1980s distributed network computing? My goal with Saturn V is to allow people to have their very own personal Apollo workstation, to use anytime, anywhere.
In the coming months, I will be continually updating this blog with the progress of Saturn V, from start to completion. There will also be technical commentary about the intricacies of Apollo's hardware, because I want to preserve how I deciphered the mystery of their long-lost hardware, and how I implemented my emulation of it.
Subscribe to:
Posts (Atom)