Data General ECLIPSE S/230 microcode

(Swedish translation of this document)

The Data General ECLIPSE S/230 minicomputer, a competitor to the DEC PDP series, implemented its instruction set in microcode. That is, each assembly-language-level instruction was executed as a sequence of 56-bit microinstructions that were stored permanently in a special memory called the Control Store. The Control Store could accommodate 1024 microinstructions, organized into four pages of 256 microinstructions each. Pages 0 and 1 (read-only) were reserved for the standard ECLIPSE instruction set. Page 3 was reserved. Page 2 was allocated as a Writable Control Store that allowed end users to write and use their own sequence(s) of microinstructions. Up to 16 such microroutines could be accessed directly at the assembly-language level using the "XOP1 acs,acd,entry" instruction; here, acs specifies a source accumulator (one of four), acd specifies a destination accumulator (one of four), and entry specifies one of the 16 entry points in the Writable Control Store. The microinstructions themselves are pre-loaded into WCS using three I/O instructions: "DOA ac,WCS" to specify the control-store address followed by either "DOB ac,WCS" to load microcode into that address or by "DOC ac,WCS" to load a decode address (i.e., a microroutine entry point) for use by the DEC1 and DEC2 state-change micro-orders that examine the entry field in the XOP1 instruction. The DG-provided MICROASM utility converts user-written microprograms into an object file that the MICROLDR utility then loads into WCS.


The first microroutines used on the ECLIPSE S/230 data-acquisition computer deployed at the Princeton University Cyclotron in the late 1970s and early 1980s were written by Philip Nelson ("PCN" in the source code, now professor of biophysics at U Penn) to speed up certain data-acquisition and -sorting operations of the ACQUIRE program (written in FORTRAN and assembly language by Dr. Richard Kouzes, now at Pacific Northwest National Laboratory). This provided a dramatic reduction in the DAQ deadtime, resulting in reduced wall-clock time and/or higher stastistics for the experiments conducted at the Cyclotron. This initial work is described in an article entitled "An Application of Microprogramming to Nuclear Physics Data Acquisition" by Kouzes and Nelson in IEEE Transactions on Nuclear Science, NS-27 (1980) 1359-1361. Later, Leo Piilonen added new microroutines (unpublished work) to speed up the real-time processing of the data from many beta-decay experiments conducted by Frank Calaprice and his team at Princeton.

This version sped up data-acquisition, -sorting and -histogramming of generic experiments and beta-decay experiments (using, respectively, the "Singles Mode" and the "Beta Mode Sort" of the ACQUIRE data-acquisition program).

This version sped up data-acquisition, -sorting and -histogramming in Aksel Hallin's time-reversal-symmetry measurement in the beta decay of polarized neon-19 nuclei (using the "Aksel Mode" of the ACQUIRE data-acquisition program).

A description of one particular implementation for database-program performance enhancement is provided in an article by P.A. Dearnley of the University of East Anglia in EUROMICRO JOURNAL 4 (1978) 82-86. A micro-programmed P-CODE (Pascal) interpreter was implemented in WCS by J.A. Hall of the University of Lancaster, as described in this article.


The Technical Reference - Microprogramming with the ECLIPSE WCS Feature by the Data General Corporation (document 014-00050-00, 1974) describes microprogrammed control, architecture and operation, followed by the microinstruction format and micro-order set. The last section of this document provides guidance for use of the WCS feature.

The ECLIPSE computational logic consists of a 16-bit arithmetic-logic unit (ALU) with two inputs A and B and one output to the shifter that modifies the ALU output. By convention, the bits in a word in the ALU, shifter, and registers are numbered 0 (highest-order) to 15 (lowest-order). There is a separate hardware Floating Point Unit that handles computations with real numbers that can be managed (indirectly) by WCS microinstructions.

There are several registers visible to the microprogrammer:

Each 56-bit microinstruction contains several fields that appear in the heading of the two microcode programs referenced earlier:

A peculiarity of the ECLIPSE microcode is that microinstructions had to pulse the memory lines at regular intervals, whether a bona fide memory read/write was needed or not, to refresh (preserve) the contents of the magnetic-core memory. Another feature is that microinstructions had to enable direct-memory access (between the I/O hardware and memory) whenever possible; if a DMA request is pending under such circumstances, the microcode CPU clock freezes until the data-channel hardware completes its cycle (a "data-channel break"). If too many microcycles elapsed between such DMA enables, the ECLIPSE could crash.