Operating System

9845B/C OS Firmware ROMs

The following table is mostly 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.

Example:

Part No. (UB/LB) Description Rev. Std. LPU Fast LPU Rom
Set
Checksum Addr
(oct)
Block
(oct)
D/L
B T C B T C
1818-0823/27 SYSTEM LPU A * * *       2 -31763 0K 3  
" " "               20277 10K 3  
1818-0823/27 SYSTEM LPU B * * *       2 -31763 0K 3 download
" " "               30746 10K 3 download
1818-1502/06 SYS Fast LPU A       * * * 2 12129 0K 3 download
" " "               -18777 10K 3 download
1818-0824/28 SYSTEM LPU A * * *       2 -13342 20K 3 download
" " "               -3596 30K 3 download
1818-0824/28 SYSTEM LPU B * * *       2 -15049 20K 3 download
" " "               -3596 30K 3 download
1818-1503/07 SYS Fast LPU A       * * * 2 -7811 20K 3 download
" " "               -17224 30K 3 download
1818-0825/29 SYSTEM LPU A * * *       2 -30613 40K 3  
" " "               23513 50K 3  
1818-0825/29 SYSTEM LPU B * * *       2 -30613 40K 3 download
" " "               22252 50K 3 download
1818-1504/08 SYS Fast LPU A       * * * 2 -13271 40K 3 download
" " "               32482 50K 3 download
1818-0826/30 SYSTEM LPU A * * *       2 15053 60K 3  
" " "               13098 70K 3  
1818-0826/30 SYSTEM LPU B * * *       2 0 60K 3  
" " "               0 70K 3  
1818-0826/30 SYSTEM LPU C * * *       2 -30909 60K 3 download
" " "               4138 70K 3 download
1818-1505/09 SYS Fast LPU A       * * * 2 15872 60K 3 download
" " "               7116 70K 3 download
1818-0831/35 TOPS PPU A *     *     2 32378 0K 5 download
" " "               18563 10K 5 download
** TOPS PPU Q3   * *   * * 2 18428 0K 5  
" " "               16343 10K 5  
1818-1209/08 TOPS PPU A     *     * 2 0 0K 5  
" " "               0 10K 5  
1818-1209/08 TOPS PPU B     *     * 2 11177 0K 5 download
" " "               11040 10K 5 download
1818-1592/91 TOPS PPU A   * *   * * 2 9499 0K 5  
" " "               -19861 10K 5  
1818-1592/91 TOPS PPU B   * *   * * 2 13541 0K 5 download
" " "               -19861 10K 5 download
1818-0832/36 KBD PPU AMER A * * * * * * 2 0 20K 5  
" " "               0 30K 5  
1818-0832/36 KBD PPU AMER B * * * * * * 2 29948 20K 5  
" " "               5368 30K 5  
1818-0832/36 KBD PPU AMER C * * * * * * 2 -27377 20K 5 download
" " "               13834 30K 5 download
1818-0833/37 SYSTEM PPU A * * * * * * 2 -19266 40K 5  
" " "               -13355 50K 5  
1818-0833/37 SYSTEM PPU B * * * * * * 2 -17438 40K 5  
" " "               -978 50K 5  
1818-0833/37 SYSTEM PPU C * * * * * * 2 -17438 40K 5 download
" " "               -12693 50K 5 download
1818-0833/37 SYSTEM PPU D * * * * * * 2 -21628 40K 5 download
" " "               15323 50K 5 download
1818-0834/38 SYSTEM PPU A * * * * * * 2 0 60K 5  
" " "               0 70K 5  
1818-0834/38 SYSTEM PPU B * * * * * * 2 0 60K 5  
" " "               0 70K 5  
1818-0834/38 SYSTEM PPU C * * * * * * 2 -20550 60K 5 download
" " "               26075 70K 5 download
1818-0834/38 SYSTEM PPU D * * * * * * 2 -26531 60K 5 download
" " "               26075 70K 5 download
1818-1899/98 SYSTEM PPU A * * * * * * 2 -26531 60K 5 download
" " "               24270 70K 5 download
1818-0841/46 KBD GERMAN C * * * * * * 2 29948 20K 5 download
" " "               5851 30K 5 download
1818-0843/48 KBD SWED/FIN C * * * * * * 2 29948 20K 5 download
" " "               13285 30K 5 download
1818-0841/46 KBD GERMAN D * * * * * * 2 -27377 20K 5 download
" " "               10399 30K 5 download
1818-0839/44 KBD FRENCH D * * * * * * 2 -27377 20K 5  
" " "               -21021 30K 5  
1818-0840/45 KBD SPANISH D * * * * * * 2 -27377 20K 5  
" " "               8284 30K 5  
1818-0843/48 KBD SWED/FIN D * * * * * * 2 -27377 20K 5  
" " "               12328 30K 5  
1818-0842/47 KBD KATAKANA D * * * * * * 2 -27377 20K 5  
" " "               29024 30K 5  

The above OS ROMs can be downloaded here as complete archive: 9845-OS-ROM-Readouts-210808.zip

OS Disassemblies

Different ROM sets are available for several HP9845 configurations. Each ROM set covers one complete CPU firmware. Each system needs two ROM sets, one for the LPU and one for the PPU. The following sets are provided for the most common configurations, all with complete firmware disassemblies. Please combine the appropriate LPU ROM set with the proper PPU ROM set, depending on your configuration:

System firmware disassemblies with cross reference, hexdump and string analysis for 4 selected system configurations and two keyboard layouts (U.S. and German). Including firmware object code: System-ROM-listings.zip

In case you like to do a code analysis:

After power-up or CONTROL-STOP both processors start executing at address hex 20 (octal 40) in the PPU ROM block (block 5), which in general is an indirect jump to the initialization routine at address hex 200 (octal 400) where LPU and PPU first check for RAM presence at address hex FFFE and then each branches into its own firmware code. Branching is performed for the 9845B/C depending on the HLT signal (which is grounded on the LPU and driven by vertical retrace on the PPU) utilizing the SHC instruction.

Actually, the indirect jump is located at address hex 21 (octal 41). First an (either invalid or undocumented) hybrid processor instruction with op code hex 7A65 (octal 75145) is executed.

Whereas the PPU continues executing with an indirect jump over vector hex 10C to address hex 7A1E in the PPU firmware, the LPU switches to the LPU firmware at ROM block 3 and continues execution there with a jump to the LPU initialization routine at address hex 200. Here the PPU RAM (block 1) is selected for base page access and being checked for presence before an indirect jump via vector hex 160 to address hex 3CCF in the LPU firmware is performed.

Note: The ROM space below hex 20 is unused (overlaps with processor registers) and the address range from hex 22 to hex 200 is used for constants (frequently used numbers and OS vectors).

9835A/B OS ROMs

All the 9835A/B ROMs (both the operating system ROMs and the option ROMs) are provided as pluggable ROM modules. Note the address 'hole' between 10K and 30K, which was filled by the Mass Storage Option ROMs.

Part No.* Description Rev. Checksum Addr
(oct)
Block
(oct)
D/L
1818-2800 MF#0 (SYSTEM LPU 1) B/D 27646 0K 3 download
1818-2801 MF#1 (SYSTEM LPU 2) B -26833 10K 3  
1818-2801 MF#1 (SYSTEM LPU 2) C -19234 10K 3 download
1818-2802 MF#2 (SYSTEM LPU 3) B -27496 20K 3 download
1818-2802 MF#2 (SYSTEM LPU 3) C 6126 20K 3 download
1818-2802 MF#2 (SYSTEM LPU 3) D -12827 20K 3 download
1818-2803 MF#3 (SYSTEM LPU 4) A -8992 30K 3  
1818-2803 MF#3 (SYSTEM LPU 4) B 25297 30K 3 download
1818-2804 MF#4 (SYSTEM LPU 5) B -32385 40K 3 download
1818-2805 MF#5 (SYSTEM LPU 6) B -5942 50K 3  
1818-2805 MF#5 (SYSTEM LPU 6) C 13229 50K 3 download
1818-2806 MF#6 (SYSTEM LPU 7) A 24638 60K 3  
1818-2806 MF#6 (SYSTEM LPU 7) B/D -31944 60K 3  
1818-2806 MF#6 (SYSTEM LPU 7) E -4963 60K 3 download
1818-2807 MF#7 (SYSTEM LPU 8) A/B -12843 70K 3  
1818-2807 MF#7 (SYSTEM LPU 8) C -29896 70K 3 download
1818-2808 MF#8 (SYSTEM PPU 1) A -586 0K 5  
1818-2808 MF#8 (SYSTEM PPU 1) A/B(2820) 476 0K 5 download
1818-2808 MF#8 (SYSTEM PPU 1) B 24780 0K 5 download
1818-2809 MF#9 (SYSTEM PPU 2) A(2872) 14781 30K 5  
1818-2809 MF#9 (SYSTEM PPU 2) A(2871) 14781 30K 5 download
1818-2809 MF#9 (SYSTEM PPU 2) A(2870) 30415 30K 5  
1818-2809 MF#9 (SYSTEM PPU 2) A(2869) 15519 30K 5  
1818-2809 MF#9 (SYSTEM PPU 2) A(2825) -32259 30K 5  
1818-2809 MF#9 (SYSTEM PPU 2) A/B(2824) 13284 30K 5  
1818-2809 MF#9 (SYSTEM PPU 2) A(2823) 12339 30K 5  
1818-2809 MF#9 (SYSTEM PPU 2) A(2822) 14404 30K 5  
1818-2809 MF#9 (SYSTEM PPU 2) A 24228 30K 5  
1818-2809 MF#9 (SYSTEM PPU 2) B/C -981 30K 5  
1818-2809 MF#9 (SYSTEM PPU 2) D -3985 30K 5 download
1818-2809 MF#9 (SYSTEM PPU 2) E -31999 30K 5 download
1818-2810 MF#10 (SYSTEM PPU 3) B -32439 40K 5 download
1818-2811 MF#11 (SYSTEM PPU 4) A 12008 50K 5  
1818-2811 MF#11 (SYSTEM PPU 4) B -21390 50K 5  
1818-2811 MF#11 (SYSTEM PPU 4) C 16428 50K 5 download
1818-2811 MF#11 (SYSTEM PPU 4) E -1956 50K 5 download
1818-2812 MF#12 (SYSTEM PPU 5) A/C 9047 60K 5 download
1818-2812 MF#12 (SYSTEM PPU 5) D -13919 60K 5 download
1818-2813 MF#13 (SYSTEM PPU 6) B/C -14738 70K 5 download

*The relation between the part number and the ROM is only estimated, since there is currently no product data available on the 9835 ROMs.

The above OS ROMs can be downloaded here as complete archive: 9835-OS-ROM-Readouts-090627.zip

9845A OS ROMs

Like the 9835 ROMs, all the 9845A ROMs (both the operating system ROMs and the option ROMs) are provided as pluggable ROM modules. The ROM drawer of the 9845A is different than that of the 9845B/C, and both types can't be exchanged.

Like the 9835A/B OS ROMs the 9845A ROMs do their own address decoding. Please note that the address space leaves some 'holes' for option ROMs (Mass Storage ROM and I/O PPU ROM for PPU block 1). The address hole in the LPU block actually isn't used by any of the released 9845A option ROMs.

Part No. Description Rev. Checksum Addr
(oct)
Block
(oct)
D/L
09845-65540-43 SYSTEM PPU 1-4 A n/a 0-67777 1) 1 download
09845-65544-47 SYSTEM LPU 1-4 A n/a 0-77777 2) 3 download

1) Option ROM hole between octal 46000 and 65777. Dump includes Mass Storage ROM at 46000-57777 and I/O PPU Option ROM at 60000-65777.
2) Option ROM hole between octal 70000 and 75777.

PDS 45 Program Development System

PDS 45 from International Electronic Machinary (IEM) is a program development environment for the HP 9845 desktop computer. It provides the ability to write programs in a multi-language environment by supplying a toolset totally independent from the BASIC environment of the HP desktop computer systems. With the first release of the PDS 45 package in 1980, Pascal and 9845 assembler were supported, later support for FORTRAN77 was added.

Here are the main features of the PDS 45 system:

PDS 45 was distributed by Hewlett-Packard under the HP PLUS program.