Hewlett-Packard 21xx/1000 and 3000 Simulators

Introduction

This is the home of the Computer History Simulators (SIMH) for the Hewlett-Packard 21xx/1000 and 3000 computer systems. These simulators run on common PC and Mac platforms running Windows, Linux, FreeBSD, or macOS. They provide sufficient capability to run the original HP operating systems.

These simulators are based on Bob Supnik's SIMH Version 3. Any simulator reporting itself as "V4.x" is not authorized and not supported by the HP maintainer. Regression testing with the original HP diagnostics suites is performed only on the simulators available from this site. See the Note on SCP Version 4 below for more details.

Internally, a SIMH simulator consists of a common front end, designated the Simulation Control Program (SCP), and a machine-specific back end, designated the virtual machine. SCP is responsible for the command interface to configure the simulated CPU and devices provided by the virtual machine. The back end provides all of the machine-specific personality. Simulators for the HP 2116, 2115, 2114, 2100, 1000 M/E/F-Series, and 3000 computer systems are supported here.

The HP 21xx/1000 Simulator

Hewlett-Packard sold the HP 21xx/1000 family of real-time computers from 1966 through 2000. There are three major divisions within this family: the 21xx core-memory machines, the 1000 (originally 21MX) M/E/F-Series semiconductor-memory machines, and the 1000 L/A-Series distributed-I/O machines. All machines are 16-bit accumulator-oriented CISC machines running the same base instruction set. A wide range of operating systems run on these machines, from a simple 4 K word paper-tape-based monitor to a megaword multi-user, multiprogramming disc-based system and a multi-user time-shared BASIC system.

Within each division, several distinct models were produced:

All of the machines support a 15-bit logical address space, addressing a maximum of 32 K words, divided into 1 K-word pages. Memory-referencing instructions in the base set can directly address the 1024 words of the base page (page 0) or the 1024 words of the current page (the page containing the instruction). The instructions in the extended set directly address the 32768 words in the full logical address space.

This implementation is a simulator for the HP 2116/15/14, 2100, and 1000 M/E/F-Series machines (hereafter referred collectively as the HP 2100 simulator). A large variety of CPU options, device interface cards, and peripherals are provided.

This simulator does not model the 1000 L/A-Series machines. While these machines use the same base instruction set, the I/O structure is entirely different, and the interfaces are not interchangeable with those of the 21xx/1000 machines. Moreover, the peripherals provided by this simulator are, with few exceptions, not supported on the L/A-Series.

The HP 3000 Simulator

Hewlett-Packard sold the HP 3000 family of general-purpose business computers from 1972 through 2001. There are two major divisions within this family: the classic 16-bit, stack-oriented CISC machines, and the Precision Architecture 32-bit, register-oriented RISC machines that succeeded them. All machines run versions of MPE, the Multiprogramming Executive operating system.

Within the classic division, there are two additional subdivisions, based on the method used for peripheral connections: the original SIO machines, and the later HP-IB machines. The I/O interfacing hardware differs between the two types of machines, as do the privileged I/O machine instructions. The user instruction sets are identical, as are the register sets visible to the programmer. The I/O drivers are different to account for the hardware differences, and therefore they run slightly different versions of MPE.

This implementation is a simulator for the classic SIO machines. This group consists of the 3000 CX, the Series I, Series II, and the HP 3000 Series III that is simulated here. The CX and the Series I, which is a repackaged CX, are essentially subsets of the Series II/III - a smaller instruction set, limited memory size, and lower-precision floating-point instructions. Simulation of these machines may be added in the future. Future simulation of the HP-IB machines (the Series 30 through 70) is desirable, as the latest MPE versions run only on these machines, but documentation on the internals of the HP-IB hardware controllers is nonexistent.

The CX and Series I support 64 K 16-bit words of memory. The Series II supports up to 256 K, divided into four banks of 64 K words each, and the Series III extends this to 1024 K words using 16 banks. Memory is divided into variable-length code and data segments, with the latter containing a program's global data area and stack.

Memory protection is accomplished by checking program, data, and stack accesses against segment base and limit registers, which can be set only by MPE. Bounds violations cause automatic hardware traps to handler routines within MPE. Some violations may be permitted; for example, a Stack Overflow trap may cause MPE to allocate a larger stack and then restart the interrupted instruction. Memory references are position-independent, so moving segments to accommodate expansion requires only resetting of the segment registers to point at the new locations. Code segments are fully reentrant and shareable, and both code and data are virtual, as the hardware supports absent code and data segment traps.

The classic 3000s are stack machines. Most of the instructions operate on the value on the top of the stack (TOS) or on the TOS and the next-to-the-top of the stack (NOS). To improve execution speed, the 3000 has a set of hardware registers that are accessed as the first four locations at the top of the stack, while the remainder of the stack locations reside in main memory. A hardware register renamer provides fast stack pushes and pops without physically copying values between registers.

Supported Hardware

The HP 2100 simulator provides the following hardware simulations:

The HP 3000 simulator provides the following hardware simulations:

All devices except the CPUs may be selectively included or excluded from the simulation.

Supported Software

The HP 2100 simulator has been tested with and supports the following operating systems:

In addition, the simulator generally passes the HP 24396 Stand-Alone Diagnostics suite.

The HP 3000 simulator has been tested with and supports the following operating systems:

In addition, the simulator generally passes the HP 32230 Stand-Alone Diagnostics suite.

Compiling

The simulators are provided in source form and are written in portable C.

The simulator source distributions consist of single ZIP archive files. The archive structure consists of a root directory and an SCP subdirectory containing the source files for the Simulation Control Program. Within the SCP directory is an HP2100 or HP3000 subdirectory containing the source files for the specific simulator, and a doc subdirectory containing the user's guides and release notes for the simulators in PDF and text formats, respectively. This directory structure must be preserved when the distribution archive is unpacked.

To build the simulator, first unpack the archive into a blank directory. Then follow the build instructions given in Section 1 of the SIMH User's Guide Supplement that is present as simh_supplement.pdf in the doc subdirectory. No additional libraries are needed.

Release Notes

A simulator release is made when one or more major changes have been incorporated. Each release is documented in the hp2100_release.txt or hp3000_release.txt file included with the distribution that describes the changes (new features and corrected errors) that have occurred since the prior release. A revised HP Simulator User's Guide document accompanies every release where user-visible changes were made.

A release update is made to fix minor errors that do not affect normal user operation. Examples of updates might be expansion or correction of source file comments, minor algorithm improvements, or rewording of error messages. Updates are not documented here, although every change is reported in the change logs that appear at the beginning of all source files.

The current HP 2100 simulator is Release 29 and adds the following features to the prior release:

The current HP 3000 simulator is Release 8 and adds the following features over the prior release:

Downloads

The current simulator source distributions are available here:

Current simulator binary distributions containing precompiled 32-bit simulator executables for Windows XP and later Windows platforms and applicable documentation are available here:

Support for the simulators is available as mentioned in the release notes accompanying the distributions.

Documentation

These simulator application notes are available:

Simulator documentation is provided in PDF format in the source distribution archives in the doc subdirectory. The current versions of the user's manuals are also provided here as a convenience:

PDF files of the original HP 21xx/1000 and 3000-series hardware and software manuals are available from these repositories:

Software Kits

The following ready-to-run software kits for the HP 2100 simulator are provided under the terms of the HP 1000 and HP21XX SOFTWARE AGREEMENT between Hewlett-Packard Company and the Computer History Museum:

The Computer History Museum has graciously arranged with HP to offer the HP 1000 Software Collection with a sublicense for non-commercial use by private individuals. The Collection is hosted by Bitsavers and contains more than 75,000 source and binary files for the HP 21xx/1000-Series machines..

The following ready-to-run software kits for the HP 3000 simulator are derived from the FOS tape image available from Bitsavers:

A Note on SCP Version 4

As noted in the introduction, a SIMH simulator consists of the Simulator Control Program (SCP) front end, and the HP 2100 or HP 3000 machine-specific back end. SCP provides the simulator prompt, console commands such as ATTACH and RUN, and common library modules for magnetic tape, terminal, and other device support. SCP manages command file execution, cooperates with the back end to configure the CPU and I/O devices, and relinquishes control to the back end to execute machine instructions when a RUN command is entered.

The SIMH project was created and led by Bob Supnik through SCP version 3.9. Mark Pizzolato then assumed stewardship and substantially extended SCP for version 4.0. Recently, Bob has produced SCP version 3.10, which adopts some, but not all, of the new features provided with version 4.0. It also has a markedly simpler internal structure compared to 4.0.

The HP 3000 simulator had been written for SCP 4.0, and the HP 2100 simulator had been migrated from SCP 3.9 to 4.0, but the rapid SCP development cycle and greatly increased complexity introduced a number of errors and incompatibilities that made it very difficult to ensure stable HP simulator operation. Regression testing became problematic; often the SCP would change between simulator testing and code release. This has led to an untenable support situation.

Therefore, starting with HP 2100 Release 29 and HP 3000 Release 8, the simulators have been retargeted to SCP 3.10 and its successors, which will be used for all future releases. This does not affect machine execution, i.e., once a RUN command is given, but it does have consequences for user-written command files, as SCP 3.10 does not implement some of the new-for-4.0 commands.

The HP simulators provide a superset of the SCP 3.10 commands. These are documented in the SIMH User's Guide Supplement that is provided in PDF format in the doc subdirectory of the distribution archive. Those with existing user-written command files should consult this document for the potential ramifications of the SCP transition.