The HP67 card reader contains two instructions that control a “default functions” flag.
The card reader integrated circuit is a Mostek MK6250N. That connects to the Arithmetic, Control and Timing (ACT) chip and actions a number of instructions that the ACT doesn’t understand. Instructions are 10 bits long. For this article the ones we are interested in are:
01000 = Set the Default Functions flag, and
01100 = Test the Default Functions flag.
The Default Functions flag controls what happens when you press the [A] through [E] keys. If it is set then [A] through [E] do the default functions ([A]=1/x, [B]=sqrt(x), [C]=y^x, [D]=R dn, [E]=x<->y). If it is clear then [A] through [E] run user-created subroutines that start with “f LBL A” through “f LBL E”.
Loading a magnetic card clears the flag. Interestingly, this is the case even if you’ve loaded a data card and there are no user-created subroutines at all.
The 01000 (set-dflt) instruction appears in the HP67 roms as follows:
01013: CRC 1000
; this seems to be initialization. it is amongst a lot of “clear data registers”
; and setting defaults (angle, FIX, DSP 2) in register s14 (internal)
01065: CRC 1000
; this is probably in CL PRGM
; as it includes code (load constant 2; jsb 01047) to clear prog 001-112
; and code (load constant 1; jsb 01047) to clear prog 113-224
01700: CRC 1000
; this happens after test/clearing the flag if it was set
; see below
01670: 0 -> s 3
01671: CRC 1100
01672: if 1 = s 3
01673: then go to 01676
…
01676: load constant 4
01677: p <- 1
01700: CRC 1000
The 01100 (test-dflt) instruction sets s 3 if the Default Functions flag was set. The instruction also clears the flag after testing it. It appears as follows:
00344: CRC 1100
; appears to be just clearing it
; perhaps if there are program steps
01671: CRC 1100
; as above: test, if was set then set it again
13665: CRC 1100
; clear it