The ROM Dumping Project
Why and how
Saving the system firmware is one of the standard tasks with vintage computer systems. The reasons are threefold:
- ROMs generally suffer from aging. The average ROM lifetime of early ROMs is probably anything between 20 and 40 years, even when not in use. Sooner or later they have to be replaced in order to preserve a functioning system.
- System capabilities often depend on firmware revisions or firmware add-ons. Sometimes there is the need to upgrade/downgrade or expand a system's firmware, e.g. for extended peripheral support, bug-fixing or additional command sets.
- For a deeper understanding on how a system works, a copy of the firmware code is essential. Generally it is necessary to transfer the firmware to a PC, where it can be analyzed.
The 9845 system ROMs tend to fail really often. Most of the systems which are completely 'dead' or boot up by chance suffer from bad system ROMs, sometimes with intermittent failures. If this is the case for your 9845, you'll need a replacement. This can either be a working ROM from a spare system, or an EEPROM based solution. Look at the ROM Board Project for how that can be done.
All ROMs hold machine code, so if you like to analyze the code by yourself, please look at the 9845 Assembler Project, there is a combined assembler/disassembler for 9845 assembly language available for download.
The standard procedure for most vintage systems is to draw the ROMs from their sockets and read them out with a suitable EPROM-programmer - ideally before they're loosing their content. This is generally no problem for systems designed after 1980, since they normally use standard ROMs. At the design time of the HP 9845 the thing looked different. There were many different ROM designs, and for the 9845, HP decided to make it even better, so they included a latch logic into their ROM packages in order to require less supporting chips for the address/data bus multiplexing. This did work well, but makes ROM saving and especially ROM replacement not easier.
Fortunately HP decided to place their system ROMs into sockets, so they can be safely removed and exchanged. Actually, firmware upgrades were part of the concept, and some add-ons like the 512-kByte-RAM-boards required to upgrade the firmware by replacing up to four ROM chips. Unfortunately, so-called option ROMs (like the Advanced Programming ROM, the I/O ROM or the Mass Storage ROM) were firmly suited into plastic packages bonded directly onto a PCB layer, so dumping via EPROM programmer fails for those option ROMs.
However, there are at least two ways how ROMs can be saved:
Alternative | Prerequisites | Advantages | Disadvantages |
EPROM-Programmer | EPROM-programmer with adaptor | Fast, versatile, reliable. Works even with 'dead' 9845 systems. | Adaptor must be assembled. Doesn't work with option ROMs. |
ROM Readout Program on the 9845 | Functional HP 9845 plus Assembly Execution or Assembly Execution and Development ROM plus either working mass storage device or connection to PC | Doesn't need additional hardware. Only way to read out option ROMs. | Needs an Assembly Execution or Assembly Execution and Development ROM. Doesn't work with a non-functional HP 9845. |
See the ROM Dumping Tutorial on how to dump ROMs on your own.
9845B/C ROMs Released by Hewlett Packard
The following table is derived from the ROMREV program on the second 9845B/C System Exerciser Rev. E tape. It shows the part numbers, a short content description, a revision number, the systems they belong to, the number of 10K-ROMs that belong to a complete set, a checksum, the memory address and the memory block where the ROM data is located, and a download link for the ROM data if it has already been dumped.
The system information is encoded as follows:
B = 9845B with standard monochrome graphics option
T = 9845B with fast monochrome graphics option
C = 9845C with color graphicsStd. LPU = standard hybrid LPU
Fast LPU = bit slice LPU
Note that the address information and the block ID are both in octal notation. 10K (octal) stands for 8 kWords or 16 kBytes decimal. The checksum is always a decimal integer between -32768 and +32767.
Below are all 9845B/C system ROMs released be HP. 9845A system ROMs were built as ROM modules instead of ROM chips, and are listed in the OS Software section. All option ROMs are available in the Option ROMs Software section.
The above system ROMs can be downloaded here as complete archive: 9845-System-ROM-Dumps-081019.zip
Other ROMs
A future section may contain additional ROMs, e.g. the firmware which controls the bit slice processor, the thermal printer firmware or firmwares of peripheral devices.