1980s Vintage Computers
The Basic on the HP Series 80 machines is extendable through a series of ROMs. The standard HP ones are described on the Agilent Overview page, but there are a few others. It is also possible to develop binary programs with the Assembler and store these as 2764 type EPROMs. I devised a method to read ROMs then transfer the data to EPROMs, as some ROMs in particular are hard to find. Note that all Series 80 machines will require either the Programmable ROM module (HP 82929A or HP 89050A) or a clone such as the PRM-85 module to use EPROMs.
nb The HP-9915 (the industrial version of the HP-85) has built in support for 2716 and 2732 EPROMs, but these are for user programs and not for this type of ROM.
I became interested in this topic after I had read through some of the HP-85 Assembler ROM manual. This describes how the Series 80 option ROMs are paged into the microprocessors 64K address range between 24K and 32K, ie an 8K window. Each ROM has a number (from 1 to 254) to identify it, and to page it in (there is also a system ROM in this space numbered 0). The ROM number is also used for error messages. The Assembler ROM has a MEM command, which dumps memory contents to the screen. A simplification of the syntax for the HP-85 is:
MEM address (in octal): ROM number (in decimal), number of bytes (in octal)
So to dump all of ROM number 40 (the Assembler ROM) the command is:
MEM 60000:40, 20000
as 60000 = 24576 (dec) and 20000 = 8192.
On the HP-87 the syntax is slightly different and the command is:
MEM 60000:50, 20000
This is because the ROM number field was changed to octal.
The output of the MEM command in ASCII shows at the beginning all of the key words in the ROM, and then any text messages that it could output.
Having extracted the contents of the ROM I then bought a Programmable ROM Module and burned the ROM image to EPROM. Once the EPROM was plugged in the module, and the module plugged into my HP-85, the machine behaved exactly as though the original ROM was installed.
This method can also be used to view the contents of the system ROMs. Extracts of these were used to develop the Series 80 emulators.
Here is a list of ROMs, together with ROM numbers (in decimal). The ROM number is needed to set-up the switches in the Programmable ROM or PRM-85 module. See below for information on the image files of these ROMs.
The HP-85B has a built-in Mass Storage ROM (number 208) and EDISK ROM (number 209). This version of the Mass Storage ROM is different to the plug-in version of the ROM above, to allow for hooks into the EDISK ROM, so that the two ROMs act as a pair. These ROMs are also needed by the Extended Mass Storage (EMS) ROM, as this was designed to work on the HP-85B. If you have a HP-85A and a Programmable ROM Module or a PRM-85, then using the HP-85B versions of the Mass Storage and EDISK ROMs allows the EMS ROM to work, and also adds the GET and SAVE commands.
nb HP 86/87 has a built in Mass Storage ROM (number 208) and the built in Basic also uses ROM number 1, which I think is used for graphics routines. The HP 86B also has a language ROM (number 30), to support international keyboard layouts and error messages in other languages.
Below is a ZIP file for most ROMs, either for studying their contents or to provide a copy on a 8K byte EPROM (type 2764). Each ZIP file contains 3 files with the following extensions:
Thanks to vp at www.series80.org for extracting all of his ROMs to binary, and thanks to Glen Bear for the HP-85 EMS image!
Here are zip files for most of the HP-85 ROMs:
HP-85 Assembler: 85ASM.ZIP (35147
The System ROM is built in to the machine:
Here are zip files for some key HP-87 ROMs:
HP-85 / HP-87 Forth ROM: HP_Series_80_Forth.zip (146k bytes)
André Koppel wrote some utilities for the HP-87 called SYSEXT, which he transferred to a ROM. This can be downloaded together with a manual in German from http://www.akso.de/index.php?id=hp_series_80&L=1. Also on André's site are the system ROMs for the HP-86/87 and various manuals.
There are some further ROM downloads available from www.series80.org/Images
This requires the Assembler ROM for your machine, plus the serial module if you wish to transfer the ROM to EPROM. Here are the steps.
1. Determine the ROM number for the ROM to be read. You may have this anyway (as it is used for error messages). For this example assume the ROM number is 40. To check the ROM is readable run the following command on an HP 85 / 9915:
or on the HP 87 due to the slightly different syntax (ROM number must be in octal) run:
This should display
This shows this is a HP-85 ROM as the first two bytes of the ROM are the ROM number followed by the complement of the ROM number (in this case 377-50=327 using octal maths). I have noticed for the HP-87 ROMs the second byte is 1 higher, eg for the EMS ROM the first two bytes are 317 061 so the second byte is 400-317=61 in octal. The MEM command then outputs the ASCII equivalents. I have been informed the HP-87 MEM outputs a minimum of 8 bytes.
If the ROM number is incorrect then you need to try other numbers in the MEM command from 1 to 254 until you have found all the ROMs on the system (the Assembler ROM which contains the MEM command is 40 decimal so this will always be found) eg:
10 CRT IS 10
nb on the HP-87 change line 40 to:
40 MEM 60000:OCT(I),2
Line 10 sends the output to serial, can remove this line if you don't want to capture the results on a PC.
2. Once the ROM number is known connect up a PC to the serial port and capture the output from the HP 85.
CRT IS 10
- to redirect output to PC.
This dumps 8192 bytes + text to the PC. Then if I haven't listed the EPROM below send me the file on e-mail and I will run a conversion program (fb 1.5) to make it into binary, I can then send you the binary + Intel hex file version to blow onto a 2764 EPROM.
5. To use the EPROM the Programmable ROM module (and similarly the PRM-85 module) has to have switches set to show the ROM number.
I will post the resulting files here on my website, to allow anyone to have a copy.
Please can anyone with any other ROM e-mail me, as I hope to find further ROM based software and include it here.
This page was last revised on: 13/2/16