Die Familie der Capricorn-(Steinbock-)Mikroprozessoren wurde von Hewlett-Packard in den späten 1970er-Jahren für die wissenschaftlichen Mikrocomputer der HP Serie 80 entwickelt. Capricorn wurde erstmals im HP-85-Desktop-BASIC-Computer eingesetzt, der im Januar 1980 auf den Markt kam. Steve Wozniak hatte die Idee, den Apple vergleichbar zu einem Computer wie dem HP 9830 zu bauen. 1976 bot er HP die Rechte für einen solchen Apple-Computer an. Allerdings lehnte HP das Konzept ab. Als die HP-Taschenrechner-Division mit der Entwicklung eines 8-Bit-Computer-Projekts startete, erhielt die CPU die Entwicklungsbezeichnung „Capricorn“. Wozniak wurde nicht gestattet, an dem Projekt mitzuarbeiten; daraufhin kündigte er bei HP.[1][2]
Die Capricorn-CPU ist eine mikroprogrammierte CPU mit 64 acht-Bit-Registern, einer arithmetisch logischen Einheit (ALU), einem Shifter und Kontroll-Logik. Die 64 Register wurden mit logischen Grenzen separiert. Für die ersten 32 Register gab es alle zwei Byte eine logische Grenze. Diese Register waren als 8- oder 16-Bit-Register ansprechbar. Die verbleibenden 32 Register hatten alle acht Byte eine logische Grenze. Diese Register konnten in Schritten von 8 Bit mit jeweils einem einzelnen Befehl angesprochen werden (so waren 64-Bit-Anweisungen möglich). Jede Low-Level-Anweisung modifizierte die Daten beginnend beim adressierten Register bis zur nächsten logischen Grenze. Dieses Design resultierte in einem sehr kompakten Binärcode. Der Programmierer bestimmte selbständig, wie viele Bytes er mit einer Anweisung bearbeiten wollte.
Die ersten 32 Register wurden oft für Adress-Manipulationen verwendet, die verbleibenden 32 Register in der Regel für Gleitkommaoperationen. Da es vier Sets von 8-Byte-Registersätzen gab (32–63), konnten die meisten Gleitkommaberechnungen direkt in den Registern durchgeführt werden, ohne dass auf den Speicher zugegriffen werden musste. Von den ersten 32 Registern wurde ein Paar für den Programm-Zähler und ein weiteres Paar für den Stapelzeiger verwendet. Ein weiteres Paar wurde in der Regel als Index für interne Operationen verwendet. Es gab keinen dedizierten Akkumulator – jedes allgemeine Register konnte für die ALU als Quell- und Ergebnisregister verwendet werden, da für die ersten 32 Register bis zu zwei Schreib-Lese-Operationen pro Anweisung und für die nächsten 32 Register bis zu acht Schreib-Lese-Operationen zulässig waren. Jedes Registerpaar konnte als 16-Bit-Indexregister verwendet werden.
Die ALU konnte im Binärformat oder im BCD-Modus arbeiten. Da die Anweisungen aufgrund der Architektur eine variable Länge hatten, konnten in den oberen 32 Registern Entitäten von 1 bis 8 Byte – nach freier Wahl des Programmierers – verarbeitet werden. So war es zum Beispiel möglich, zwei 8-Byte-Werte (z. B. die Mantisse einer Gleitkommazahl) mit einer einzigen Anweisung zu addieren. Dieses Feature reduzierte die Anzahl der notwendigen Rechenschritte bei Gleitkommaoperationen erheblich.
Die CPU hatte einen Interrupt-Mechanismus mit 127 Vektoren. Für den Speicherdirektzugriff (DMA) konnte die CPU von externen Geräten angehalten werden.
Die Capricorn-CPU wurde als Silicium-Gatter in NMOS-Logik aufgebaut (4,93 × 4,01 mm) in einem 28-Pin Dual-Inline-Paket, daran angeschlossen war ein externer, gemultiplexter 8-Bit-Bus. Die CPU verbrauchte 330 mW bei 625 kHz.
Das CPU-Timing wurde durch einen Zeitgeber mit 200 Nanosekunden und einem 200-Nanosekunden-Spacing getaktet. Insgesamt ergab sich dadurch ein Taktzyklus von 1,6 Mikrosekunden, das entsprach einer Taktfrequenz von 625 kHz.
Das gesamte System enthielt Unterstützungs-Chips, wie den Dynamic-Memory-Controller, den Tastatur-Controller, Controller für Zeitgeber, Drucker und Bildschirm. Ein spezieller Puffer-Chip verband den Bus mit den externen Erweiterungs-Anschlüssen.