Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
COMPASS
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{other uses|Compass (disambiguation)}} '''COMPASS''', '''''COMP''rehensive ''ASS''embler''',<ref>{{cite web |url=http://foldoc.org/COMPASS |title=compass - FOLDOC - Computing Dictionary}}</ref> is any of a family of [[Macro (computer science)#Assembly language|macro]] [[assembly language]]s for [[Control Data Corporation]]'s [[CDC 3000|3000 series]], and for the 60-bit [[CDC 6000 series]], [[CDC 7600|7600]] and [[CDC Cyber|Cyber 70 and 170 series]] [[mainframe computer]]s. While the architectures are very different, the macro and conditional assembly facilities are similar. ==COMPASS for 60-bit machines== There are two ''flavors'' of COMPASS on the 60-bit machines: * COMPASS CP is the assembly language for the CP (Central Processor), the processor running user programs. See [[CDC 6600#Central Processor .28CP.29|CDC 6600 CP architecture]]. * COMPASS PP is the assembly language for the PP (Peripheral Processor), only running [[operating system]] code. See [[CDC 6600#Peripheral Processors .28PPs.29|CDC 6600 PP architecture]]. COMPASS is a classical [[two-pass assembler]] with [[Macro (computer science)|macro]] and conditional assembly features, and generates a full listing showing both the source assembly code and the generated [[machine code]] (in [[octal]]). CDC's [[operating system]]s were written almost entirely in COMPASS assembly language. Central processor (CP or CPU) hardware maintains 24 operational [[Processor register|registers]], named A0 to A7, X0 to X7 and B0 to B7. Registers X0 to X7 are 60 bits long and are used to hold data, while registers B0 to B7 <!-- used to say "B0 to B17" --> are 18 bits long and their major purpose is to hold either [[memory address|addresses]] or be used as [[Index register|indexing registers]], except that B0 is always zero. As a programming convention, B1 (or B7) often contains positive 1. A or [[Memory address register|address registers]] are also 18 bits long. Each A register pairs with the corresponding X register. Whenever an address is set into any of A1 to A5 registers, the data at that memory location (address) is loaded into the corresponding X register. Likewise, setting an address into one of A6 or A7 registers stores the data held in the corresponding X6 or X7 register to that memory location. However, A0 can be used to hold any address without affecting the contents of register X0. CP [[instruction (computer science)|instruction]]s are written in a particularly user-friendly form: "SA1 A0+B1" denotes ''set address register A1 to the sum of address register A0 and index register B1''. The hardware then initiates a memory load from the computed address into register X1. Peripheral processor (PP or PPU) instructions are completely different from CPU instructions. Peripheral processor hardware is simpler; it has an 18-bit A ([[accumulator (computing)|accumulator]] register, a 12-bit Program Address register, a 12-bit Q register (not programmer-visible), and 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 to be executed, such programs were required to installed into the operating system via special system editing commands. ==Further reading== * "Assembly Language Programming for the Control Data 6000 Series" by [[Ralph Grishman]], Algorithmics Press, 1972.<ref>cited in http://cholla.mmto.org/computers/firstcdc.html</ref> ==References== {{Reflist}} ==External links== *[http://www.bitsavers.org/pdf/cdc/3x00/24bit/languages/60184200_COMPASS_Programming_Training_Manual_May67.pdf COMPASS for 24-bit systems CDC3100, 3200, 3300, and 3500] *[http://www.bitsavers.org/pdf/cdc/3x00/48bit/60052500C_COMPASS_Ref_Dec67.pdf COMPASS for CDC3600 48-bit system] *[http://www.bitsavers.org/pdf/cdc/cyber/lang/compass/ COMPASS for CDC6000 and 7000 60-bit systems] *[https://web.archive.org/web/20060221000702/http://static.cray-cyber.org/Documentation/COMPASS/ COMPASS version 3 for CDC CYBER systems] {{Control Data Corporation}} [[Category:Assembly languages]] [[Category:Control Data Corporation mainframe software]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite web
(
edit
)
Template:Control Data Corporation
(
edit
)
Template:Other uses
(
edit
)
Template:Reflist
(
edit
)