Bill asked me about the self-test feature of the Spice series calculators (HP-3xE/C, such as HP-33C). I used the self-test to dump the ROMs by passively monitoring the bus. The processor has a single instruction to compute some kind of check over 1K*10 of ROM, but it seems to only produce a pass/fail result, and it is not clear exactly what kind of check it is.
I tried computing simple additive checksums with and without end-around carry, and that didn’t produce consistent results among the various 1K blocks. Since the architecture is bit-serial, they could have implemented a CRC quite efficiently, though they could have used almost any CRC width and polynomial.
I’m considering writing a program to try a brute-force search of all CRC polynomials of orders from 1 to 20 bits. There’s probably little chance of the polynomial being of order less than 8, but it doesn’t take long to test all the short ones.