Common questions about Compass

Short answers, pulled from the story.

What was COMPASS assembly language used for in the 1960s and 1970s?

COMPASS assembly language served as the foundational tool for Control Data Corporation's 3000 series and the 60-bit CDC 6000 series mainframes. It powered the most powerful supercomputers of the 1960s and 1970s including the 7600 and Cyber 70 and 170 series. CDC's own operating systems were written almost entirely in COMPASS assembly language.

How did COMPASS CP and COMPASS PP differ in the CDC 6000 series architecture?

COMPASS CP was the assembly language for the Central Processor responsible for running user programs and handling computation. COMPASS PP was the assembly language for the Peripheral Processor dedicated solely to running operating system code and managing input and output operations. This division allowed the Central Processor to focus on complex calculations while the Peripheral Processor handled data movement between memory and external devices.

What were the register specifications for the Central Processor in COMPASS assembly language?

The Central Processor hardware maintained 24 operational registers named A0 to A7, X0 to X7, and B0 to B7. Registers X0 to X7 were 60 bits long and used to hold data while registers B0 to B7 were 18 bits long and held addresses or served as indexing registers. The A registers were 18 bits long and each paired with the corresponding X register to facilitate data movement.

How did COMPASS instructions simplify memory operations for programmers?

COMPASS instructions used a user-friendly form that abstracted the complexity of the underlying hardware. A command like SA1 A0+B1 denoted setting address register A1 to the sum of address register A0 and index register B1. This high-level syntax allowed programmers to express complex memory operations in a single line of code.

What were the register specifications for the Peripheral Processor in COMPASS assembly language?

The Peripheral Processor hardware featured an 18-bit A register, a 12-bit Program Address register, and a 12-bit Q register that was not visible to the programmer. It also included a 22-bit R register used to accomplish address relocation during central memory read and write instructions on Cyber 180 systems. No special job validation was required to assemble peripheral processor programs but they required installation into the operating system via special system editing commands.