COMPASS
| Company type | Software |
|---|---|
| Industry | Computer software |
| Products | Macro assembly languages for CDC 3000, 6000, 7600, and Cyber series mainframes |
COMPASS, an acronym for COMPrehensive ASSembler, represents a suite of macro assembly languages crafted for Control Data Corporation's 3000 series as well as the 60-bit CDC 6000 series, 7600, and Cyber 70 and 170 series mainframe computers. Although these assemblers operate on different architectures, they maintain consistent macro and conditional assembly functionalities.
COMPASS on 60-bit systems
On 60-bit platforms, two primary variants are available:
- COMPASS CP, designed for the CP (Central Processor) responsible for executing user-level programs (CDC 6600 CP architecture).
- COMPASS PP, tailored for the PP (Peripheral Processor), which handles operating system tasks (CDC 6600 PP architecture).
As a traditional two-pass assembler, COMPASS supports macro processing and conditional assembly, generating output listings that include both the source code and the corresponding machine code in octal notation. The majority of CDC's operating system software was developed using COMPASS.
The CP architecture incorporates 24 registers divided into three groups: A0 through A7, X0 through X7, and B0 through B7. The X registers (X0–X7) are 60 bits wide and hold data, whereas the B registers (B0–B7), each 18 bits in size, primarily serve as memory address or index registers; notably, B0 is fixed at zero. By convention, either B1 or B7 contains the constant value one.
Each A register, sized at 18 bits, corresponds with an X register. Assigning an address to any of A1 to A5 results in loading data from memory into the paired X register. Conversely, placing an address into A6 or A7 causes data from X6 or X7 to be stored back into memory. Register A0 can store any address without influencing X0.
Instructions executed by the CP utilize a clear syntax—for instance, "SA1 A0+B1" sets register A1 to the sum of addresses in A0 and B1, which initiates loading data into X1 from memory.
In contrast, PP instructions differ markedly from those of the CP. The PP’s simpler hardware includes an 18-bit accumulator (A), a 12-bit Program Address register, a hidden 12-bit Q register, and on Cyber 180 models, a 22-bit R register used for address relocation. Programs written for the peripheral processor do not require special assembly validation but must be integrated into the operating system through system editing commands prior to execution.
Further reading
- "Assembly Language Programming for the Control Data 6000 Series" by Ralph Grishman, Algorithmics Press, 1972.