HP 64000

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
An HP64000 system photographed in 1987.

The HP 64000 Logic Development System, introduced 17 September 1979, is a tool for developing hardware and software for products based on commercial microprocessors from a variety of manufacturers. The systems assisted software development with assemblers and compilers for Pascal and C, provided hardware for in-circuit emulation of processors and memory, had debugging tools including logic analysis hardware, and a programmable read-only memory (PROM) chip programmer. A wide variety of optional cards and software were available tailored to particular microprocessors. When introduced the HP 64000 had two distinguishing characteristics. First, unlike most microprocessor development systems of the day, such as the Intel Intellec and Motorola EXORciser, it was not dedicated to a particular manufacturer's microprocessors, and second, it was designed such that up to six workstations would be connected via the HP-IB (IEEE-488) instrumentation bus to a common hard drive and printer to form a tightly integrated network.

Models[edit]

  • 64100A, introduced in 1979. It was a desktop workstation which contained ten expansion slots for various optional cards. The initial offering of this workstation required an external hard disk for all disk storage, although the disk could be shared by up to six workstations via the HP-IB (IEEE-488) instrumentation bus.[1] Later, a dual floppy drive option was added so that a workstation could be used without the shared hard drive. This workstation used the same custom HP 16-bit microprocessor found in the HP 9845C workstation. Software and hardware was offered to develop 8-bit and 16-bit microprocesors.
  • 64110A, a more portable workstation with five card slots, was introduced in 1983.[2] It used the same HP processor as the 64100A.
  • 64120A card cage introduced in 1986.[3] It fit the same option cards as the 64100A and 64110A, and was connected via an IEEE-488 bus to a standard HP 9000 Series 300 workstation running the HP-UX operating system rather than using a specially designed workstation such as the 64100A and 64110A. The name "HP 64000-UX Microprocessor Development Environment" was used with these systems. Software and hardware was introduced for development of 32-bit microprocessors.
  • 64700A card cage was introduced in 1988.[4] It was marketed as a lower cost development system (compared to the 64120A) that could be operated with a personal computer rather than a workstation.[5] Cards for this system carried the numbers 647xx, and were not compatible with the other systems.

Description[edit]

HP 64000 functional block diagram

Terminology[edit]

As shown in the block diagram to the right, a 64000 system consisted of a number of components whose names had specific definitions:

  • Mainframe is the physical workstation or card cage holding the option cards.
  • Host is the processor that operates the mainframe. In the 64100A and 64110A the Host Bus is the workstation processor's address, data, input/output and control buses, which also connect to the cards in the card cage.
  • User system is the microprocessor system being developed. The terms user processor and user memory describe those components in the system being developed.
  • Emulation or Emulator refers to optional cards and other hardware that are connected to the mainframe via the plug-in cards and can replace the processor and/or memory in the user system. Emulation and analysis cards are interconnected with an Emulation Bus that is completely separated from the Host Bus.

Software Development[edit]

The 64000 provided a file system and text editor for writing software. There was a generic assembler / linker (manual Bitsavers), Pascal compiler (manual Bitsavers), and C compiler (manual Bitsavers), which were supplemented with add-on cross-assemblers and cross-compilers for each particular microprocessor. A list of these by product number is:

Microprocessor Assembler Product # Assembler Manual Pascal Compiler Product # Pascal Compiler Manual C Compiler Product # C Compiler Manual
Motorola 6800/1/2/3/8 64841A Bitsavers 64811A Bitsavers 64821A
Motorola 6809 64844A Bitsavers 64813A (Disk image at HPCM) Bitsavers 64822A (Disk image at HPCM) Bitsavers
Motorola 68000/08/10 64845A (Disk image at HPCM*) Bitsavers 64815A (Disk image at HPCM) Bitsavers 64819A Bitsavers
Intel 8048 64846A (Disk image at HPCM) Bitsavers none none
Intel 8051 64855A (Disk image at HPCM) none none
Intel 8080/8085 64840A 64810A Bitsavers 64826A
Intel 8086/87/88/186/188 64853A (Disk image at HPCM) 64814A (Disk image at HPCM) 64818A (Disk image at HPCM)
Zilog Z80 64842A (Disk image at HPCM) Bitsavers 64823A (Disk image at HPCM) 64824A (Disk image at HPCM)
Zilog Z8 64850A none none
Zilog Z8000 64854A none none
RCA 1802 64848A none none
MOS Technology 6501/6505 64843A none none
Texas Instruments TMS9900 64847A none none
Texas Instruments TMS320 64858A none none
Fairchild F8 64849A none none
MIL-STD-1750A 64857A none none

* HPCM is the Hewlett Packard Computer Museum

In addition, there was a Pascal "Host Compiler", product number 64817A manual at Bitsavers, disk image at HPCM, which could be used to write programs to execute on the workstation host processor.

In-Circuit Emulation[edit]

HP64100A Logic Development System emulating a microprocessor

The 64000 system, through the use of optional cards and software, could perform in-circuit emulation of a variety of microprocessors and their memory[1][2]. A complete emulation system typically consisted of:

  • A microprocessor emulator controller card, specific to each microprocessor.
  • An emulation "pod" or "probe", which contained interface electronics and was an external module to the mainframe. The processor in the user system was removed from its socket, and a cable from the emulation pod was connected in its place. The emulation pod contained a copy of the user processor that ran program code just as the user processor would, and it appeared to the user system as the normal processor.
  • An emulation memory controller card and one or more emulation memory cards. The emulation memory could be used to substitute for memory in the user system so that, for instance, user program code could be placed in the emulation memory and executed rather than needing to program ROM chips.
  • An "internal" analyzer card, which was a logic analyzer that monitored the operation of the emulated processor and memory.
  • Emulator software that allowed the operator to start and stop the emulated processor, examine the contents of memory and register locations, measure signal timing, observe program flow, and so on.

The photo at right shows a 64100A workstation emulating the processor of a user system via an emulator pod. The photo also shows a data acquisition pod for an "external" logic analyzer card in the 64100A that was measuring additional digital signals in the user system.

Microprocessor Emulator Controller Card Product # Manual Emulation Pod Product # Manual Emulation Software Product # Manual
Motorola 6800 64211A Bitsavers 64212A Bitsavers 64210A Bitsavers
Motorola 6801/6803 64256A 64255A 64256A
Motorola 6802/6808 64211A Bitsavers 64213A Bitsavers 64210A Bitsavers
Motorola 6805 64191A Bitsavers 64192A/64193A Bitsavers 64192A (Disk image at Bitsavers)
Motorola 6809 64214A Bitsavers 64215A/64216A Bitsavers 64215A (Disk image at Bitsavers) Bitsavers
Motorola 68000/68008 64243A/64244A 64243A/64244A 64243A (Disk image at HPCM) Bitsavers
Motorola 68010 64271A 64249A 64249A
Intel 8048 64261A 64262A 64262A (Disk image at HPCM)
Intel 8051 64263A 64264A 64264A
Intel 8080 64201A 64202A 64202A
Intel 8085 64201A 64203A 64203A
Intel 8086 64271A 64222A 64222A (Disk image at HPCM)
Intel 8088 64271A 64226A 64226A
Intel 80186 64223A 64224A Bitsavers 64224A
Intel 80188 64223A 64225A 64225A
Zilog Z80 64251A 64252A 64252A (Disk image at HPCM)
Zilog Z8001/8002 64271A 64232A/64233A 64232A/64233A

* HPCM is the Hewlett Packard Computer Museum

Emulator control boards connected to both the host (mainframe) bus and the emulation bus. They acted to pass control signals and data between the host and emulated systems. Depending on the model, the control board might also contain hardware to flag illegal opcodes or memory accesses or to act as an internal logic analyzer.


Memory Emulation allows RAM and/or ROM in the user system to be replaced by memory in the 64000 system. Two emulation memory controller boards were offered:

  • 64151A Emulation Memory Controller (manual at Bitsavers), which had 16 address lines so could address 64KB of memory, and
  • 64155A Wide Address Memory Controller (manual at Bitsavers), which had 24 address lines so could address 16MB of memory.

Memory maps for the user system could be specified in terms of RAM, ROM and protected memory. Attempted writes to ROM or accessing of protected memory was detected by the memory controller and could trigger actions such as program breakpoints.

Memory cards of various capacities of static RAM were offered. The 64152B, 53B and 54B cards provided 32KB, 16KB and 8KB, respectively, and the 64161A, 62A and 63A cards (manual at Bitsavers) provided 128KB, 64KB and 32KB, respectively. They could each be configured for 8-bit or 16-bit data buses. Memory cards were connected together and to the memory controller through an emulation memory bus. Accesses to emulation memory by either the host or user systems was through the controller card.

Once the emulated processor and memory took the place of the processor and memory in the user system, the designer could write and compile program code, load it into emulation memory and start the user system, running the program in the emulated processor.

Analysis[edit]

A 64000 system could act as a logic analyzer to measure digital signals within the user system. Two types of logic analysis cards were offered, "internal" analyzers which measured signals directly off the emulation bus within the mainframe, and "external" analyzers which used separate probes to physically connect to elements of the user system. Similar to the processor and memory emulation products, analysis functions were often divided into controller cards and data acquisition cards. Some of the emulation processor controller cards offered internal analysis functions without separate hardware.

Logic analysis hardware was also divided into state analyzers and timing analyzers. The former measured signals in synchronization with a system clock and could, for example, record the states of the address, data and control buses in the user system at each CPU cycle. This data was normally presented as a trace, showing the value on each bus for each CPU cycle. For many microprocessors, an "inverse assembler" was available that would convert values measured on the data bus to Opcodes for the user processor.

The second form of logic analysis was timing analysis. A timing, or asynchronous logic, analyzer measured digital signals at specified time intervals, not necessarily synchronized to the user system clock. Such analysis could be used to find glitches or verify digital signals had proper timings.

In addition to these logic analyzer functions, "software analysis" options were available. These tools acted as what are now commonly called debuggers and profilers.

A list of analysis products is:

Product Number Description Manual
64300A Internal Logic Analyzer
64302A Internal Wide Logic Analyzer Bitsavers
64310A Software Performance Analyzer Bitsavers
64331A 68000 High Level Software Analyzer
64601A Timing/Hardware Analyzer Controller Bitsavers
64602A 8 Channel Timing Acquisition Bitsavers
64604A 8 Channel Timing Probe Bitsavers
64621A State/Software Analyzer Controller Bitsavers
64622A 40 Channel State Acquisition Bitsavers
64623A 20 Channel State Acquisition Bitsavers
64635A 20 Channel State Data Probe
64636A 8 Channel State Clock Probe

Similar to the way the emulation hardware used "pods" with interface hardware tailored to each microprocessor, the analysis hardware used preprocessors to act as an interface to the microprocessor. Aside from the 64304A Emulation Bus Preprocessor (manual at Bitsavers), each of the CPU specific preprocessor interfaces was a circuit board that fit within the 64650A General Purpose Preprocessor module (manual at Bitsavers). That, in turn, connected to the logic analyzer card cables.

Product Number Description
64304A Emulation Bus Preprocessor
64653A 8086/8088 Preprocessor Interface
64655A 8085 Preprocessor Interface
64657A 80286 Preprocessor Interface
64658A 80186/80188 Preprocessor Interface
64670A 68000 Preprocessor Interface
64671A 6809 Preprocessor Interface
64672A 6800/6802 Preprocessor Interface
64673A 68008 Preprocessor Interface
64674A 68000/68010 Preprocessor Interface
64680A Z8001 Preprocessor Interface
64681A Z8002 Preprocessor Interface
64683A Z80 Preprocessor Interface
64690A NSC800 Preprocessor Interface

PROM Programmer[edit]

The 64100A has a space to the right of the keyboard that can accept a PROM programmer module. A common PROM programmer control card, the 64500A (manual at Bitsavers), was installed in the card cage. At least 11 programmer modules, numbered from 64502A to 64520A were available for a variety of PROM and programmable microcontroller chips from different manufacturers.

MAME Emulator[edit]

An emulation of the 64100A workstation is part of the MAME (Multiple Arcade Machine Emulator) system, under Manufacturer HP and titled "HP 64000". The emulator is open source and the source code is available.

References[edit]

  1. ^ a b Saponas, Thomas A.; Kerr, Brian W. (October 1980). "Logic Development System Accelerates Microcomputer System Design" (PDF). Hewlett Packard Journal. 31 (10): 3–12. Retrieved 14 July 2018. 
  2. ^ a b Davis, Michael W.; Scharrer, John A.; Wickliff, Robert G. (March 1983). "Extensive Logic Development and Support Capability in One Convenient System," (PDF). Hewlett Packard Journal. 34 (3): 3–5. Retrieved 14 July 2018. 
  3. ^ HP Computer Museum entry for 64120A.
  4. ^ HP Computer Museum entry for 64700A.
  5. ^ Hewlett Packard Catalog (PDF). The Hewlett Packard Archive. 1989. pp. 625–626. Retrieved 14 July 2018. 

External links[edit]