====== Apollo DN3000/3500/5500 (1988/1989/1991) ======


===== Features =====

  * MC68030 microprocessor CPU at 25 MHz
  * MC68882 floating-point coprocessor FPU at 25 MHz)
  * DMA controller
  * Interrupt controller
  * Boot PROM
  * System timer
  * System clock and calendar with battery backup
  * Three full-duplex, programmable ports for serial I/O in the DN3500.
  * One full-duplex, programmable serial port for the keyboard
  * The system status LEDs
  * RAM: 16 MB (up to 32 MB)
  * ROM: 64KB
  * Graphic Modes: 1280x1024 monochrome (19"), 1024x800 monochrome (15")
  * Sound: keyboard beeper
  * 3COM 3C505 Ethernet controller
  * OMTI 8621 controller with up to two disk drives (156 MB resp. 348 MB MAXTOR or Micropolis)
  * Archive SC499 Cartridge Tape Controller for 45/60MB 1/4-inch cartridge tapes
  * 5 1/4 floppy drive with 1.2 MB

== Variants ==

  * **DN3000** is the predecessor of the DN3500 build with a CPU MC68020 at 12MHz, a MC68881 FPU, a MC68851 MMU and a maximum of 8 MB RAM
  * **DSP3500** is a DN3500 w/o display and keyboard to be used as Domain Service Processor
  * **DSP3000** is a DN3000 w/o display and keyboard to be used as Domain Service Processor
  * **DN5500** and **DSP5500** are the latest Apollo systems build with a CPU MC68040 at 25MHz and a maximum of 64 MB RAM

===== Usage =====

MESS will emulate one of the following Apollo workstations and servers:

^ System        ^ Apollo  ^ Monitor        ^
| dn3500        | DN3500  | 19" Monochrome |
| dn3500_15i    | DN3500  | 15" Monochrome |
| dsp3500       | DSP3500 | Terminal       |
| dn3000        | DN3000  | 19" Monochrome |
| dn3000_15i    | DN3000  | 15" Monochrome |
| dsp3000       | DSP3000 | Terminal       |
| dn5500        | DN5500  | 19" Monochrome |
| dn5500_15i    | DN5500  | 15" Monochrome |
| dsp5500       | DSP5500 | Terminal       |

To run an Apollo emulation start MESS with one system and additional command line options, e.g.

  $ ./mess dn3500 -mouse -log -disk1 <pathname>.awd -flop <pathname>.afd

Useful command line options:

  * ''-mouse'' - grab mouse input (for acceptable mouse emulation; use this option only for the DN3x00 emulation)
  * ''-nosound'' - turn off the keyboard beeper
  * ''-log'' - error messages will be logged in error.log
  * ''-disk1 <pathname>.awd'' - to specify an Apollo Winchester Disk image file
  * ''-disk2 <pathname>.awd'' - to specify the second Apollo Winchester Disk image file
  * ''-flop <pathname>.afd'' - to specify an Apollo Floppy Disk image file
  * ''-ct <pathname>.act'' - to specify a cartridge tape image file

Be sure to set the following options in mess.ini or as command line option

^ Option      ^ Value    ^
| video       | opengl   |
| window      | 1        |
| maximize    | 0        |

== Driver Configuration ==

The Apollo Driver Configuration menu has the following entries

|Service/NormalMode|select Service mode or Normal Mode|
|German Keyboard|select German Apollo keyboard|
|20 Years Ago ...|set default date in the RTC back by 20 years to omit the Nov 2, 1997 problem of Domain/OS software releases before SR 10.4.1|
|Node ID from Disk|set node ID to value from the logical volume label of the first logical disk volume; without this option the default node ID 12345 is used|
|Idle Sleep|add sleep calls in the Idle Loop of Domain/OS to reduce the CPU usage of the emulation; should be used only for DSP|
|Trap Trace|trace all Domain/OS SVC traps in the error log file|
|FPU Trace|trace all FPU operations in the error log file|
|Disk Trace|trace disk I/O in the error log file|
|Network Trace|trace network packets in the error log file|

''20 Years Ago ...'' and ''Node ID from Disk'' should normally be on, all others should be off.

== Keyboard ==

Function Keys

^  F1  ^  F2  ^  F3  ^  F4  ^ ^ F5   ^  F6   ^  F7  ^  F8   ^ ^  F9  ^ F10  ^ F11  ^ F12  ^
| SHELL| CUT  | UNDO | MOVE | | INS  | LINE  | CHAR |       | |      | SAVE | ABORT| HELP |
| CMD  | COPY | PASTE| GROW | | MARK | DEL   | DEL  | AGAIN | | READ | EDIT | EXIT | HOLD |

Set Num Lock to use the Function keys F1 - F9 and F10 = F0 without Apollo mapping.

Other Keys

^PC Keyboard   ^ Apollo Keyboard ^
| Insert       | NEXT WINDOW |
| Delete       | POP |
| Right Window | NEXT WINDOW |
| Menu         | POP |

Cursor keys and Pad scroll keys have been mapped to the numeric keypad too.

== BIOS options ==

The Apollo emulation will use the following ROM image files:
  * 3500_boot_12191_7.bin
  * 3000_boot_8475_7.bin
  * 5500_boot_a1631-80046_1-30-92.bin
  * 3000_3c505_010728-00.bin

== RAM options ==

RAM is currently configured with fixed size in MESS

  * 16 MB for DN3500 and DSP3500
  * 8 MB for DN3000 and DSP3000
  * 32 MB for DN5500 and DSP5500

== Controllers ==

MESS supports the emulation of the DN3500, DN3000, DN5500, DSP3500, DSP3000 and DSP5500 with

  * 1280x1024 (19"), 1024x800 (15") or no monochrome display
  * a 3COM 3C505 Ethernet Adapter and a NETMAN emulation
  * an OMTI 8621 controller with one or two 156 MB (or 348 MB) Micropolis disk image file
  * an Archive SC499 Cartridge Tape Controller with one 1/4-inch cartridge tape image file
  * a floppy drive with a 1.2 MB image file

===== Known Issues =====

== Apollo Emulation ==

  * memory size is not configurable (currently fixed at 16MB for DN3500 resp. 8 MB for DN3000 and 32 MB for DN5500).  Needs to be adapted to use MESS's RAM device and -ramsize parameter.
  * netserver base directory is not configurable (currently hardcoded as <rompath>/apollo resp. roms/apollo)
  * hard disk image file is hard to create (should provide cpdisk to make disk image files similar to /systest/ssr_util/cpflp, see also rwvol)
  * German keyboard mapping is incomplete (ALT GR is ignored)
  * the cartridge tape emulation won't trim the image file while writing to tape (i.e. a new or an empty ctape image file must be used to run wbak)
  * the 3c505 emulation doesn't implement the operations 0x17, 0xf8, 0xf9, 0xfa (not needed for SR10.2; may come from SR10.4 microcode)
  * the network interface of the emulation does not yet use MESS's core Ethernet functionality and is disabled in official builds.
  * the serial support for the keyboard does not yet use MESS's core serial functionality and is disabled in official builds.

== M68K Emulation ==

  * M68K FPU is only partially implemented
  * M68K needs cycle-by-cycle emulation (planned by Olivier Galibert, but the current implementation suffices to boot e.g. NeXTStep 68k and Domain/OS).
  * M68040 MMU not completely implemented (ex domain_os will crash with Segmentation fault for DN5500)

== dex ==

  * cpu.dex (run test with all Apollo Driver Configuration switches set to Off!)
    * cpu.dex Test 302 (SIO keyboard port test) will fail for DSP3x00 (behavior is ok, run test with option -nokb)
    * cpu.dex Test 604, 605 and 606 will fail for DN3000, if floppy disk has been accessed before (wrong DMA page register used)
    * interrupts not implemented for calendar MC146818 (simulated for DN3000 in driver/apollo.c)
    * cpu.dex Test 675 (IO Protect PGA Test) will fail (DN5500 only, I/O Protection Map is not implemented)
  * ctape
    * ctape.dex Test 190 (Write/Read/Verify Single Record) will fail on first pass for DN3000, if floppy disk has been accessed before (wrong DMA page register used)
  * disp.dex
    * disp.dex Test 20 (Video SYNC Gen. Add. Test) will fail (not implemented)
  * ether.dex (test runs w/o errors, but log file has multiple entries)
    * pc=01041e90: ROM dword write to 00000000 = 08001e80 & ffffffff (seems to occur on real DN3500 as well)
  * fpu.dex
    * fpu.dex will fail very often (TODO: add missing FPU operations and operands in src/emu/cpu/m68000/m68kfpu.c)
  * mem.dex
    * mem.dex Test 140: Parity Checker Test (Testing the Failing Address Register) will fail (implementation won't allow more the 40 parity error tests)
  * win.dex
    * win.dex Test 100: Force ECC Error Test will fail (not implemented)
    * win.dex Test 103: Format Bad Track Test will fail (not implemented)
    * win.dex Test 3/4/... (Format Disk) may fail for DN5500, retry will succeed (Badspot checksum error) - probably fbs has not been run on a new disk image

== sax ==

  * "/systest/sax -error c -only cpu" fails with: CPU is faster than expected (DN3000, Actual 2.1493 vs. 2.0000)
  * "/systest/sax -error c -only cpu" fails with: CPU is slower than expected (DN3500, Actual 4.4285 vs. 4.5800)
  * "/systest/sax -error c -only fpu" fails with some rounding errors (Single Precision Whetstone and Vector Instructions)

===== History and Trivia =====

refer to

  * http://en.wikipedia.org/wiki/Apollo_Computer
  * http://en.wikipedia.org/wiki/Apollo/Domain

===== Links =====

  * [[http://www.umich.edu/~archive/apollo/|University of Michigan Apollo Archive]]
  * [[http://www.hunkler.com/aegis.htm|Apollo Workstations Support and Advice]]
  * [[http://www.bitsavers.org/pdf/apollo/|many Apollo documents]]
    * http://www.bitsavers.org/pdf/apollo/brochures/Apollo_Series_3500_Brochure_Jul88.pdf
    * http://www.bitsavers.org/pdf/apollo/005488-02_DOMAIN_System_Users_Guide_Jan87.pdf
    * http://www.bitsavers.org/pdf/apollo/008778-03_DOMAIN_Series_3000_4000_Technical_Reference_Aug87.pdf
  * http://www.bitsavers.org/bits/Apollo/firmware/
  * http://www.bitsavers.org/bits/Apollo/SR10.4/
  * http://www.supervinx.com/Retrocomputer/Apollo/DN3500/01/

===== Other Emulators =====

   * [[http://www.mvts.com/products/ltx_trillium_master_mv_master.aspx|MVMaster software tools (commercial Software emulation of HP/Apollo computer running DomainOS)]]
   * [[http://jim.rees.org/computers/otterlator.html|emulator for the Apollo dn3000 and dn3500 based on the Musashi 68000 emulator.]]
   * [[http://mess.redump.net/sysinfo:x68000|MESS emulator for the Sharp X68000]]

{{tag>sysinfo}}

