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:

  1. 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.
  2. 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.
  3. 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 graphics

Std. 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.

Part No. Pos. Description Std. LPU Fast LPU Checksum Low/High Addr
(oct)
Block
(oct)
D/L
B T C B T C
** CE1-UB  TOPS PPU       * *   * * 18428/16343  0K 5  
** CE1-LB  TOPS PPU       * *   * * 18428/16343  0K 5  
1818-0823A CE1-UB  SYSTEM LPU   * * *       -31763/20277  0K 3  
1818-0823B CE1-UB  SYSTEM LPU   * * *       -31763/30746  0K 3 download
1818-0824A CE2-UB  SYSTEM LPU   * * *       -13342/-3596 20K 3 download
1818-0824B CE2-UB  SYSTEM LPU   * * *       -15049/-3596 20K 3 download
1818-0825A CE3-UB  SYSTEM LPU   * * *       -30613/23513 40K 3  
1818-0825B CE3-UB  SYSTEM LPU   * * *       -30613/22252 40K 3 download
1818-0826A CE4-UB  SYSTEM LPU   * * *       15053/13098 60K 3  
1818-0826B CE4-UB  SYSTEM LPU   * * *       0/0 60K 3  
1818-0826C CE4-UB  SYSTEM LPU   * * *       -30909/4138 60K 3 download
1818-0827A CE1-LB  SYSTEM LPU   * * *       -31763/20277  0K 3  
1818-0827B CE1-LB  SYSTEM LPU   * * *       -31763/30746  0K 3 download
1818-0828A CE2-LB  SYSTEM LPU   * * *       -13342/-3596 20K 3 download
1818-0828B CE2-LB  SYSTEM LPU   * * *       -15049/-3596 20K 3 download
1818-0829A CE3-LB  SYSTEM LPU   * * *       -30613/23513 40K 3  
1818-0829B CE3-LB  SYSTEM LPU   * * *       -30613/22252 40K 3 download
1818-0830A CE4-LB  SYSTEM LPU   * * *       15053/13098 60K 3  
1818-0830B CE4-LB  SYSTEM LPU   * * *       0/0 60K 3  
1818-0830C CE4-LB  SYSTEM LPU   * * *       -30909/4138 60K 3 download
1818-0831A CE1-UB  TOPS PPU     *     *     32378/18563  0K 5 download
1818-0832A CE2-UB  KBD PPU AMER * * * * * * 0/0 20K 5  
1818-0832B CE2-UB  KBD PPU AMER * * * * * * 29948/5368 20K 5  
1818-0832C CE2-UB  KBD PPU AMER * * * * * * -27377/13834 20K 5 download
1818-0833A CE3-UB  SYSTEM PPU   * * * * * * -19266/-13355 40K 5  
1818-0833B CE3-UB  SYSTEM PPU   * * * * * * -17438/-978 40K 5  
1818-0833C CE3-UB  SYSTEM PPU   * * * * * * -17438/-12693 40K 5 download
1818-0833D CE3-UB  SYSTEM PPU   * * * * * * -21628/15323 40K 5 download
1818-0834A CE4-UB  SYSTEM PPU   * * * * * * 0/0 60K 5  
1818-0834B CE4-UB  SYSTEM PPU   * * * * * * 0/0 60K 5  
1818-0834C CE4-UB  SYSTEM PPU   * * * * * * -20550/26075 60K 5 download
1818-0834D CE4-UB  SYSTEM PPU   * * * * * * -26531/26075 60K 5 download
1818-0835A CE1-LB  TOPS PPU     *     *     32378/18563  0K 5 download
1818-0836A CE2-LB  KBD PPU AMER * * * * * * 0/0 20K 5  
1818-0836B CE2-LB  KBD PPU AMER * * * * * * 29948/5368 20K 5  
1818-0836C CE2-LB  KBD PPU AMER * * * * * * -27377/13834 20K 5 download
1818-0837A CE3-LB  SYSTEM PPU   * * * * * * -19266/-13355 40K 5  
1818-0837B CE3-LB  SYSTEM PPU   * * * * * * -17438/-978 40K 5  
1818-0837C CE3-LB  SYSTEM PPU   * * * * * * -17438/-12693 40K 5 download
1818-0837D CE3-LB  SYSTEM PPU   * * * * * * -21628/15323 40K 5 download
1818-0838A CE4-LB  SYSTEM PPU   * * * * * * 0/0 60K 5  
1818-0838B CE4-LB  SYSTEM PPU   * * * * * * 0/0 60K 5  
1818-0838C CE4-LB  SYSTEM PPU   * * * * * * -20550/26075 60K 5 download
1818-0838D CE4-LB  SYSTEM PPU   * * * * * * -26531/26075 60K 5 download
1818-0839D CE2-UB  KBD  FRENCH  * * * * * * -27377/-21021 20K 5  
1818-0840D CE2-UB  KBD  SPANISH * * * * * * -27377/8284 20K 5  
1818-0841C CE2-UB  KBD  GERMAN  * * * * * * -27377/10399 20K 5 download
1818-0841D CE2-UB  KBD  GERMAN  * * * * * * 29948/5851 20K 5 download
1818-0842D CE2-UB  KBD KATAKANA * * * * * * -27377/29024 20K 5  
1818-0843D CE2-UB  KBD SWED/FIN * * * * * * -27377/12328 20K 5  
1818-0844D CE2-LB  KBD  FRENCH  * * * * * * -27377/-21021 20K 5  
1818-0845D CE2-LB  KBD  SPANISH * * * * * * -27377/8284 20K 5  
1818-0846C CE2-LB  KBD  GERMAN  * * * * * * 29948/5851 20K 5 download
1818-0846D CE2-LB  KBD  GERMAN  * * * * * * -27377/10399 20K 5 download
1818-0847D CE2-LB  KBD KATAKANA * * * * * * -27377/29024 20K 5  
1818-0848D CE2-LB  KBD SWED/FIN * * * * * * -27377/12328 20K 5  
1818-1208A CE1-LB  TOPS PPU         *     * 0/0  0K 5  
1818-1208B CE1-LB  TOPS PPU         *     * 11177/11040  0K 5 download
1818-1209A CE1-UB  TOPS PPU         *     * 0/0  0K 5  
1818-1209B CE1-UB  TOPS PPU         *     * 11177/11040  0K 5 download
1818-1502A CE1-UB  SYS Fast LPU       * * * 12129/-18777  0K 3 download
1818-1503A CE2-UB  SYS Fast LPU       * * * -7811/-17224 20K 3 download
1818-1504A CE3-UB  SYS Fast LPU       * * * -13271/32482 40K 3 download
1818-1505A CE4-UB  SYS Fast LPU       * * * 15872/7116 60K 3 download
1818-1506A CE2-LB  SYS Fast LPU       * * * 12129/-18777  0K 3 download
1818-1507A CE2-LB  SYS Fast LPU       * * * -7811/-17224 20K 3 download
1818-1508A CE3-LB  SYS Fast LPU       * * * -13271/32482 40K 3 download
1818-1509A CE4-LB  SYS Fast LPU       * * * 15872/7116 60K 3 download
1818-1591A CE1-LB  TOPS PPU       * *   * * 9499/-19861  0K 5  
1818-1591B CE1-LB  TOPS PPU       * *   * * 13541/-19861  0K 5 download
1818-1592A CE1-UB  TOPS PPU       * *   * * 9499/-19861  0K 5  
1818-1592B CE1-UB  TOPS PPU       * *   * * 13541/-19861  0K 5 download
1818-1898A CE4-LB  SYSTEM PPU   * * * * * * -26531/24270 60K 5 download
1818-1899A CE4-UB  SYSTEM PPU   * * * * * * -26531/24270 60K 5 download

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.