The MPSI is a new (2014) plug-in I/O interface for the HP-9830 that provides for input and output to an external computer (referred to here as the host) over a simple clocked serial line. The MPSI implements 3 devices - that is, it responds to 3 select-codes from the 9830 - in one plug-in module:

  1. A General-Mode I/O device optionally enabled on select-code #15. This allows the external host to function as a 9866 printer simulator, allowing print output from the 9830 to be displayed and captured on the host.
  2. A General-Mode I/O device on a jumper-configurable select-code. This allows:
  3. A Fast-Mode device on another jumper-configurable select-code. This allows the host to appear to the 9830 as an external 9865 tape-drive, the 9830 can perform cassette-tape read and write operations (e.g. LOAD#,STORE#) on tape image files located on the host. In essence, the host functions as a file server for the 9830.

The data link between the MPSI and the host is a straight-forward clocked serial line, similar to an SIO interface, involving 5 wires including ground, at TTL or 3.3V signal levels. It is not RS-232 async, the DB-25 connector visible in the photo was used merely because such connectors are abundant in surplus today. The design intention was to keep the hardware requirements (cabling, buffers, signals) to a minimum. The link is expected to be quite short, it is not intended as a medium or long distance communication link.

Contents (this page): Resources:


To date, two host programs have been developed for use with the MPSI:

Both programs are written in C. See the Resource links above.

The External Host

We have been using a Raspberry Pi, running linux and programmed in C and python, as the host. The wiringPi library routines are used to access the GPIO pins of the RPi. Use of an RPi is not mandatory, any computer or controller with a few GPIO pins and adequate speed should be able to function as the host.

The paper tape and printing functions should function down to very slow clocking rates. The General-Mode I/O protocol HP used for these functions is fully ack'd and there are no response latency limitations. Python server programs are adequate here.

The tape-drive functions need clocking of the MPSI in the 1 MHz range and response latency in the tens-of-uS range. The RPi has been competent for the task even when manipulating the GPIO pins from C code running in userland, as long as there aren't any other tasks distracting the CPU/OS.


The MPSI is constructed from 15 standard 7400-series TTL ICs. The photos show two implementations. The prototype unit was built on common proto-board, the edge-connector pins were cut from a scrap circuit board. Some aluminum sheet pieces were formed for the covers, and some spacers and acrylic strips used to align all the elements to slide into the 9830 I/O plug-in slots. The main board and the edge connector are spaced at slightly different heights so the ICs face up when installed in the 9830.

The second unit was built on a proto-board with edge connector. The board was trimmed to fit into an original HP interface housing. In this instance the ICs face down, just as they do in original HP interfaces.

See the schematic (PDF).

(Unit #2 bottom view).

Technical Description

The I/O bus of the 9830 involves over 30 signals. The MPSI reduces the many signals of the 9830 bus to a clocked serial interface of just 4 signals (SDI/data-in, SDO/data-out, SCP/clock, CTL/control) for communication with the external host. The serialisation is implemented with two 16-bit registers in the MPSI:

The MPSI responds to 3 device select-codes; in the course of an operation, which of the 3 devices has been selected is indicated to the host via the MRR along with the output from the 9830. The MPSI also contains logic for dealing with a few requirements of the 9830 I/O semantics.


These are LS-TTL inputs to the MPSI with pull-ups and clamps. They are safe for, and can generally be driven by, 3.3V outputs.


Typically, the host will monitor the SDI signal, watching for it to be asserted. Because REQST is the first bit in the MRR, its state is normally present on the SDI line. When it is asserted the 9830 has initiated an I/O operation. The host takes CTL low to hold the contents of the MRR and clocks the MRR contents over to the host to obtain the operation data. At the end of the 16-bit clocking, REQST - and hence the SDI line - is deasserted.


See the schematic (new window) for reference.

Note that the MPSI PR and GP devices both operate in General-Mode, while the TP device uses Fast-Mode.

The 9830 patent specifies that I/O interfaces should only apply one TTL-input load to a given bus output signal. The nSIH signals feed more than one input in the MPSI, but these are LS-TTL inputs and in sum are less load than a single standard-TTL input.