What causes the HP-65 display to flash? What triggers it, how is it done in the microcode, and how does it get out of it again?
According to the manual, “The display blinks when any of several improper operations are attempted. Pressing any key stops the blinking without otherwise performing the key function.”
It goes on to list the improper operations. These include the obvious “0 1/x” and “5 CHS √” but also “Magnetic card read – Blank card; bit or word dropped during reading”.
The error routine is at 00451:
00451 c + 1 -> c[xs] ; C= 00000000000101 00452 0 -> s10 00453 if s5 = 0 00454 goto 00750 00455 c + 1 -> c[x] ; C= 00000000000102 00456 goto 00451
It loops through that 100 times then it flashes the display:
00457 goto 00732 00732 disptoggle ; flash display 00733 goto 00622
Address 00622 takes us back to the error routine:
00622 12 -> p 00623 if s0 = 0 00624 goto 00452 00452 ... (we're back in the delay loop)
The way out of the flashing display error routine is to press any key. That sets s0 to 1 and the “00623 if s0 = 0” progresses to 00625 which looks like:
00625 p + 1 -> p ; P= 13 00626 if p # 12 00627 goto 00625 ; P= 14, 15, 0, 1, 2, ..., 11, 12 00630 0 -> s0 00631 if s10 = 0 00632 goto 00641 00641 if s5 = 0 00642 goto 00734 00643 goto 00737 00737 1 -> f3 ; f= ...3.5.. 00740 clearstatus ; S= ............ 00741 goto 00620 00620 if s8 = 0 ; if not running 00621 goto 00531 display: 00531 ...
The whole thing is triggered by s5 = 1. This makes s5 the “error” flag.
You can see s5 being set in:
65-0-a.txt, and
65-5-chs-f-root.txt.