|Re: unknown opcode in Voyager ROM|
Message #5 Posted by Eric Smith on 1 May 2004, 2:47 p.m.,
in response to message #4 by Monte Dalrymple
Thanks for the pointer to chapter XI of "Inside the HP-41", it's fascinating. I must confess that I'm somewhat skeptical of the claim that the processor runs code while in deep sleep mode; in deep sleep the processor clock is completely stopped. The author indicates that this information was provided by HP; I wonder whether it might not have been part of an emulation system used by HP engineers for development, rather than the actual Nut CPU chip. The fact that none of the instructions described in that chapter are listed in the 1LF5 specification
In the HP-16C ROM, this instruction occurs in the code sequenct that displays the flashing "running" during self test. The code does a bc ex w to save the C register, c=0 w, a series of lc (load constant digit), and write to register 9, followed by a similar sequence writing a different constant to register 10. These are the display registers, and the constants are the segment maps that form the "running". Then the code does another bc ex w to restore the original C register, the mysterious 0060 (octal) instruction, then a return.
For thousands of following cycles, there is no reference to the keyboard, and eventually when the keyboard flag is tested, it is not set. Thus I don't believe the 0060 is behaving as KEY=C. Instead, I think it is turning on the display blink mode. There's no corresponding mystery instruction to turn the blink off, so I suspect that is done by either the display off or display toggle instructions, as when the self-test is completed they do a sequency of those two instructions even though the display is already on.
Since the display blink is under user control on the HP-15C (flag 9), I should be able to confirm whether this is really what the 0060 instruction is doing the next time I have an HP-15C hooked up to the probulator.