Operating System

9845B/C OS ROMs

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.

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-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-081019.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).

9845A OS 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.

Part No. (UB/LB) Description Rev. Checksum Addr
(oct)
Block
(oct)
D/L
09845-65540 SYSTEM PPU 1 ? ????? 0K 3  
09845-65541 SYSTEM PPU 2 ? ????? 20K 3  
09845-65542 SYSTEM PPU 3 ? ????? 40K 3  
09845-65543 SYSTEM PPU 4 ? ????? 60K 3  
09845-65544 SYSTEM LPU 1 ? ????? 0K 5  
09845-65545 SYSTEM LPU 2 ? ????? 20K 5  
09845-65546 SYSTEM LPU 3 ? ????? 40K 5  
09845-65547 SYSTEM LPU 4 ? ????? 60K 5  

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.