Compass
Control Data Corporation released COMPASS, short for COMPrehensive ASSembler, as a family of macro assembly languages. This software served the 3000 series mainframes and the massive 60-bit CDC 6000 series machines. It also supported the 7600 and Cyber 70 and 170 series computers that defined the company's output in the 1970s. While these computer architectures differed vastly from one another, their macro and conditional assembly facilities remained similar. Two distinct flavors existed on the 60-bit machines to handle different processing tasks. COMPASS CP functioned as the language for the Central Processor running user programs. COMPASS PP handled the Peripheral Processor which ran only operating system code.
The Central Processor hardware maintained twenty-four operational registers named A0 to A7, X0 to X7, and B0 to B7. Registers X0 through X7 measured sixty bits long and held data while registers B0 to B7 measured eighteen bits. The major purpose of the B registers was to hold addresses or serve as indexing registers except that B0 always stayed zero. Programming conventions often placed positive one into register B1 or register B7. Each A register paired with its corresponding X register to manage memory operations. When an address entered any of the A1 to A5 registers, the data at that location loaded into the matching X register. Setting an address into A6 or A7 stored data from X6 or X7 back to that memory location. A0 could hold any address without affecting the contents of register X0. Instructions like SA1 A0+B1 denoted setting address register A1 to the sum of address register A0 and index register B1. The hardware then initiated a memory load from the computed address into register X1.
Peripheral processor instructions differed completely from CPU instructions in their design and function. Peripheral processor hardware remained simpler than its central counterpart. It possessed an 18-bit A accumulator register alongside a 12-bit Program Address register. A 12-bit Q register existed but remained invisible to programmers. A 22-bit R register accomplished address relocation during central memory read and write instructions on Cyber 180 systems. No special job validation required assembly for peripheral processor programs. To execute such programs, developers needed to install them into the operating system via special system editing commands. This distinct architecture created a unique environment for low-level system code development.
COMPASS served as the foundation for Control Data Corporation's mainframe software ecosystem throughout the 1970s. CDC's operating systems were written almost entirely in COMPASS assembly language. The family of languages evolved across the CDC 3000 series machines before expanding to the Cyber 170 series. Ralph Grishman published Assembly Language Programming for the Control Data 6000 Series through Algorithmics Press in 1972. This text documented the specific techniques used by engineers working with these complex systems. The two-pass assembler generated full listings showing both source assembly code and generated machine code in octal format. These documents provided the necessary reference material for maintaining legacy hardware infrastructure.
External links preserve information about COMPASS versions for various CDC systems including the 24-bit models. Specific documentation exists for the CDC3100, 3200, 3300, and 3500 machines that utilized this language. A dedicated section covers COMPASS for the CDC3600 48-bit system which required different handling. Another resource details COMPASS version 3 for CDC CYBER systems used in later decades. Surviving technical literature allows modern researchers to study the continued impact of this legacy assembly language. These archives ensure that the history of macro assembly facilities remains accessible to future generations of computer historians.
Common questions
What is COMPASS and which Control Data Corporation machines did it support?
COMPASS stands for COMPrehensive ASSembler and served the 3000 series mainframes as well as the massive 60-bit CDC 6000 series machines. It also supported the 7600 and Cyber 70 and 170 series computers that defined the company's output in the 1970s.
How many operational registers did the Central Processor hardware maintain and what were their names?
The Central Processor hardware maintained twenty-four operational registers named A0 to A7, X0 to X7, and B0 to B7. Registers X0 through X7 measured sixty bits long while registers B0 to B7 measured eighteen bits.
When was Ralph Grishman's book on Assembly Language Programming for the Control Data 6000 Series published?
Ralph Grishman published Assembly Language Programming for the Control Data 6000 Series through Algorithmics Press in 1972. This text documented the specific techniques used by engineers working with these complex systems.
Which CDC models had external documentation preserved for COMPASS versions including the 48-bit system?
Specific documentation exists for the CDC3100, 3200, 3300, and 3500 machines that utilized this language. A dedicated section covers COMPASS for the CDC3600 48-bit system which required different handling.