HP 9872T Trouble Shooting
|
03-01-2023, 07:27 AM
Post: #15
|
|||
|
|||
RE: HP 9872T Trouble Shooting
After many many years, the riddle has been solved.
I strongly believe that there is nothing wrong with the printer itself, but the program ROM has failed. The 9872C and its companion 7220C have a 16bit multiplexed address/data bus, so it needs two 8-bit x 8096 ROMs to store the control program (actually the 7220C has two more ROMs as it needs an additional 2K words of program memory). Both plotters have a very similar architecture and internal layout, but the main PCB is different (one has the HP-IB interface, the other has RS232). The ROMs are predictably different as well, but as we shall see not *very* different. In the problematic 9872C, the MSB ROM is totally flaky. For some locations it returns different values each time it is read, and for others the returned value may be corrupted. I am looking for the binary images of 9872C ROMs to replace the failed ROMs. In the mean time I had a look at the code , comparing the code in the 7220C ROMs with what I could read from the 9872C ROMs. The CPU is a custom HP processor (predictably) consisting of the BPC unit from the famous hybrid processor used in the 9825 calculator. The part in the two plotters is identified as the 1818-2500 and it has the 15-bit version of the BPC. Fortunately the manual for the NMOSS-II hybrid is available on the bitsavers archive, so I could write a quick and dirty disassembler for the BPC. The BPC uses the first 32 words of memory (0000 - 001F) as "registers", so the code starts at address 0020 hex. Looking at the 7220C startup code Code:
and here is the code I extracted from the broken 9872C ROMs (note that this code is corrupted). Code:
So the code looks more or less the same, initializing the HP-IB control register and checking for the state of the test switch. But in this case we see that the instruction at 0x0020 has changed from a CMA to an SBP 0020 which is a conditional branch instruction. If the contents of Register B are non-zero (i.e. bit 15 is zero) then jump to address 0x0020. Voila! Since the BPC has been reset, the B Register is zero and the SBP 0020 jumps to ... 0020, i.e. to itself, looping for ever. Great, so the printer stays in reset state with large chunks of its logic uninitialized, which is probably what causes the Y-axis motor to hum loudly. I am waiting for some parts to allow me to swap the boot ROMs with EEPROMs so that I can carry out more testing of the unit. Ultimately I hope to be able to load working code into the EEPROMs and hopefully this will get the 9872C working again. Keep fingers crossed. Vassilis http://www.series80.org |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 1 Guest(s)