(06-16-2016 09:28 PM)Harald Wrote: [ -> ]I'll post details tomorrow
Ok, here comes the "Factors and Primes" code for the Emulator:
Code:
HP67
PROGRAM
LBL A ; Factor integer n.
STO B ;
ENTER ;
INT ;
X!=Y? ; If non-integer, halt on Error.
GTO 5 ;
0 ;
STO D ; Initialize d.
X<>Y ;
X<=Y? ; If n<= 0, halt on Error.
GTO 5 ;
2 ;
EEX ;
9 ;
X<>Y ;
X>Y? ;
GTO 5 ; If n > 2 x 10^9, halt on Error.
CF 1 ; F1 clear for factors.
GSB a ; Find factors.
RTN ;
LBL B ; Lower bound for primes.
STO A ;
X<0? ; If negative, halt on Error.
GTO 5 ;
ENTER ; This routine finds smallest
INT ; potential prime >= user's
X=Y? ; input.
GTO 0 ;
1 ;
+ ;
LBL 0 ;
2 ; Handle 2 as a special case
X<>Y ; (only even prime).
X=Y? ;
GTO 0 ;
2 ;
/ ;
INT ;
2 ;
* ;
1 ;
+ ;
LBL 0 ;
STO B ; Store beginning prime L.
STO C ;
2 ;
EEX ; 2 x 10^9 is the default upper bound.
9 ;
STO E ;
X<=Y? ; If input >= 2 x 10^9, halt on Error.
GTO 5 ;
SF 1 ; Flag 1 set for primes.
RCL A ;
RTN ;
LBL C ;
STO A ; Upper bound for primes.
RCL B ;
- ;
X<0? ; If upper < lower, halt on Error.
GTO 5 ;
RCL A ;
INT ;
2 ; Handle 2 as a special case.
X<>Y ;
X=Y? ;
GTO 0 ;
2 ;
/ ; This routine finds the greatest potential
. ; prime <= user's input.
5 ;
+ ;
INT ;
2 ;
* ;
1 ;
- ;
LBL 0 ;
STO E ;
RCL A ; Store final prime U.
RTN ;
LBL D ; Routine to list primes.
0 ;
STO D ; Initialized d<-0
RCL B ;
2 ; If L = 2, print 2, add 1 and go.
X<>Y ;
X=Y? ;
GTO 0 ;
1 ; If L = 1, print 1, 2, add 1 and go.
X!=Y? ;
GTO 1 ;
GSB e ; If L != 1 and L != 2, go directly to LBL 1
+ ;
RCL E ;
X<>Y ;
X>Y? ;
GTO 4 ;
LBL 0 ;
GSB e ;
1 ; Output 2
GTO 8 ;
LBL 1 ;
GSB a ;
RCL B ; Begin main loop.
RCL C ; Check for factors of current n (RB).
X=Y? ; if RB = RC, n is prime.
GSB e ; Output n.
2 ;
LBL 8 ;
+ ;
STO C ; Set n to next potential prime.
STO B ;
RCL E ;
X<>Y ;
X>Y? ; If n > U, exit.
GTO 4 ;
0 ;
STO D ; Else loop again.
GTO 1 ;
LBL a ; Subroutine called from both A & D which
2 ; finds factors of n.
GSB 3 ;
X=0? ;
RTN ;
1 ; Check first if n is divisible by 2, 3, 5, or 7
GSB 3 ;
X=0? ; LBL 2 check for division by integers
RTN ; whose position in a cycle of 30 corresponds to
2 ; 11, 13, 17, 19, 23, 29, 31, or 37
GSB 3 ;
X=0? ;
RTN ;
2 ;
GSB 3 ;
X=0? ;
RTN ;
LBL 2 ;
4 ;
GSB 3 ; 11 (=7+4)
X=0? ;
RTN ;
2 ;
GSB 3 ; 13 (=11+2)
X=0? ;
RTN ;
4 ;
GSB 3 ; 17 (=13+4)
X=0? ;
RTN ;
2 ;
GSB 3 ; 19 (=17+4)
X=0? ;
RTN ;
4 ;
GSB 3 ; 23 (=19+4)
X=0? ;
RTN ;
6 ;
GSB 3 ; 29 (=23+6)
X=0? ;
RTN ;
2 ;
GSB 3 ; 31 (=29+2)
X=0? ;
RTN ;
6 ;
GSB 3 ; 37 (=31+6)
X=0? ;
RTN ; Loop again for next 30.
GTO 2 ;
LBL 3 ;
RCL D ; Test if d|n
+ ;
STO D ; d<- d + x
RCL B ; n
X<>Y ;
/ ; n/d
LastX ; d, n/d
X>Y? ; If d > n/d, then d > sqrt(n)
GTO 0 ; Exit.
X<>Y ;
INT ; [n/d] ::= INT(n/d)
LastX ; n/d, [n/d]
X!=Y? ; if non-integer, d does not
RTN ; divide n.
STO B ; Else n<- n/d
F1? ;
CLX ; If finding primes, exit.
F1? ;
RTN ;
RCL D ; If factoring, output d.
GSB e ;
0 ; Check for d a multiple factor.
GTO 3 ;
LBL 0 ; Coming here means n is prime.
F1? ; If finding primes, exit.
CLX ;
F1? ;
RTN ; Else output last n.
RCL B ;
GSB e ;
LBL 4 ;
CLX ; Exit displaying 0.
F0? ;
SPACE ;
RTN ;
LBL E ;
F0? ; Auto toggle.
GTO 0 ;
SF 0 ;
1 ;
RTN ;
LBL 0 ;
CF 0 ;
0 ;
RTN ;
LBL e ; Output routine.
F0? ; Print if AUTO.
-x- ;
F0? ;
RTN ;
R/S ; alt if not.
RTN ;
END
MODE DEG FIX 2 0 0 0 0
And here the code I used for the HP67E with new ACT:
Code:
HP67
PROGRAM 0
LBL A ; Factor integer n.
STO B ;
ENTER ;
INT ;
X!=Y ; If non-integer, halt on Error.
GTO 5 ;
0 ;
STO D ; Initialize d.
X<>Y ;
X<=Y ; If n<= 0, halt on Error.
GTO 5 ;
2 ;
EEX ;
9 ;
X<>Y ;
X>Y ;
GTO 5 ; If n > 2 x 10^9, halt on Error.
CF 1 ; F1 clear for factors.
GSB a ; Find factors.
RTN ;
LBL B ; Lower bound for primes.
STO A ;
X<0 ; If negative, halt on Error.
GTO 5 ;
ENTER ; This routine finds smallest
INT ; potential prime >= user's
X=Y ; input.
GTO 0 ;
1 ;
+ ;
LBL 0 ;
2 ; Handle 2 as a special case
X<>Y ; (only even prime).
X=Y ;
GTO 0 ;
2 ;
: ;
INT ;
2 ;
* ;
1 ;
+ ;
LBL 0 ;
STO B ; Store beginning prime L.
STO C ;
2 ;
EEX ; 2 x 10^9 is the default upper bound.
9 ;
STO E ;
X<=Y ; If input >= 2 x 10^9, halt on Error.
GTO 5 ;
SF 1 ; Flag 1 set for primes.
RCL A ;
RTN ;
LBL C ;
STO A ; Upper bound for primes.
RCL B ;
- ;
X<0 ; If upper < lower, halt on Error.
GTO 5 ;
RCL A ;
INT ;
2 ; Handle 2 as a special case.
X<>Y ;
X=Y ;
GTO 0 ;
2 ;
: ; This routine finds the greatest potential
. ; prime <= user's input.
5 ;
+ ;
INT ;
2 ;
* ;
1 ;
- ;
LBL 0 ;
STO E ;
RCL A ; Store final prime U.
RTN ;
LBL D ; Routine to list primes.
0 ;
STO D ; Initialized d<-0
RCL B ;
2 ; If L = 2, print 2, add 1 and go.
X<>Y ;
X=Y ;
GTO 0 ;
1 ; If L = 1, print 1, 2, add 1 and go.
X!=Y ;
GTO 1 ;
GSB e ; If L != 1 and L != 2, go directly to LBL 1
+ ;
RCL E ;
X<>Y ;
X>Y ;
GTO 4 ;
LBL 0 ;
GSB e ;
1 ; Output 2
GTO 8 ;
LBL 1 ;
GSB a ;
RCL B ; Begin main loop.
RCL C ; Check for factors of current n (RB).
X=Y ; if RB = RC, n is prime.
GSB e ; Output n.
2 ;
LBL 8 ;
+ ;
STO C ; Set n to next potential prime.
STO B ;
RCL E ;
X<>Y ;
X>Y ; If n > U, exit.
GTO 4 ;
0 ;
STO D ; Else loop again.
GTO 1 ;
LBL a ; Subroutine called from both A & D which
2 ; finds factors of n.
GSB 3 ;
X=0 ;
RTN ;
1 ; Check first if n is divisible by 2, 3, 5, or 7
GSB 3 ;
X=0 ; LBL 2 check for division by integers
RTN ; whose position in a cycle of 30 corresponds to
2 ; 11, 13, 17, 19, 23, 29, 31, or 37
GSB 3 ;
X=0 ;
RTN ;
2 ;
GSB 3 ;
X=0 ;
RTN ;
LBL 2 ;
4 ;
GSB 3 ; 11 (=7+4)
X=0 ;
RTN ;
2 ;
GSB 3 ; 13 (=11+2)
X=0 ;
RTN ;
4 ;
GSB 3 ; 17 (=13+4)
X=0 ;
RTN ;
2 ;
GSB 3 ; 19 (=17+4)
X=0 ;
RTN ;
4 ;
GSB 3 ; 23 (=19+4)
X=0 ;
RTN ;
6 ;
GSB 3 ; 29 (=23+6)
X=0 ;
RTN ;
2 ;
GSB 3 ; 31 (=29+2)
X=0 ;
RTN ;
6 ;
GSB 3 ; 37 (=31+6)
X=0 ;
RTN ; Loop again for next 30.
GTO 2 ;
LBL 3 ;
RCL D ; Test if d|n
+ ;
STO D ; d<- d + x
RCL B ; n
X<>Y ;
: ; n/d
LastX ; d, n/d
X>Y ; If d > n/d, then d > sqrt(n)
GTO 0 ; Exit.
X<>Y ;
INT ; [n/d] ::= INT(n/d)
LastX ; n/d, [n/d]
X!=Y ; if non-integer, d does not
RTN ; divide n.
STO B ; Else n<- n/d
F1? ;
CLX ; If finding primes, exit.
F1? ;
RTN ;
RCL D ; If factoring, output d.
GSB e ;
0 ; Check for d a multiple factor.
GTO 3 ;
LBL 0 ; Coming here means n is prime.
F1? ; If finding primes, exit.
CLX ;
F1? ;
RTN ; Else output last n.
RCL B ;
GSB e ;
LBL 4 ;
CLX ; Exit displaying 0.
F0? ;
SPACE ;
RTN ;
LBL E ;
F0? ; Auto toggle.
GTO 0 ;
SF 0 ;
1 ;
RTN ;
LBL 0 ;
CF 0 ;
0 ;
RTN ;
LBL e ; Output routine.
F0? ; Print if AUTO.
-x- ;
F0? ;
RTN ;
R/S ; alt if not.
RTN ;
END
This is the User Diagnostics code that works as advertised in the HP67E with new ACT:
Code:
PROGRAM 1
LBL 0 ; LBL 0 31 25 00
CL REG ; CLRG 31 43
P<>S ; P<>S 31 42
CL REG ; CLRG 31 43
RTN ; RTN 35 22
LBL a ; LBL a 32 25 11
RND ; RND 31 24
RC I ; RCL I 35 34
X!=Y ; X!=Y? 32 61
R/S ; R/S 84
LBL 2 ; LBL 2 31 25 02
DSZ ; DSZ I 31 33
LBL 5 ; LBL 5 31 25 05
RC I ; RCL I 35 34
RTN ; RTN 35 22
LBL c ; LBL c 32 25 13
RCL (i) ; RCL (i) 34 24
RC I ; RCL I 35 34
X!=Y ; X!=Y? 32 61
R/S ; R/S 84
STO + 0 ; ST +0 33 61 00
DSZ ; DSZ I 31 33
GTO c ; GTO c 22 31 13
3 ; 3 03
EEX ; EEX 43
2 ; 2 02
RCL 0 ; RCL 0 34 00
X!=Y ; X!=Y? 32 61
R/S ; R/S 84
RTN ; RTN 35 22
LBL e ; LBL e 32 25 15
1 ; 1 01
- ; - 51
RTN ; RTN 35 22
LBL A ; LBL A 31 25 11
5 ; 5 05
7 ; 7 07
GSB 0 ; GSB 0 31 22 00
PAUSE ; PSE 35 72
GSB e ; GSB e 32 22 15
ENTER ; ENTER 41
RDOWN ; Rdn 35 53
X<>Y ; X<>Y 35 52
RUP ; Rup 35 54
RUP ; Rup 35 54
X<>Y ; X<>Y 35 52
RUP ; Rup 35 54
X!=0 ; X!=0? 31 61
X!=Y ; X!=Y? 32 61
RTN ; RTN 35 22
GSB e ; GSB e 32 22 15
X>Y ; X>Y? 32 81
RTN ; RTN 35 22
GSB e ; GSB e 32 22 15
X=Y ; X=Y? 32 51
RTN ; RTN 35 22
GSB e ; GSB e 32 22 15
X<=Y ; X<=Y? 32 71
GTO 1 ; GTO 1 22 01
RTN ; RTN 35 22
LBL 1 ; LBL 1 31 25 01
GSB e ; GSB e 32 22 15
ST I ; STO I 35 33
RC I ; RCL I 35 34
X<>Y ; X<>Y 35 52
X!=Y ; X!=Y? 32 61
RTN ; RTN 35 22
GSB 2 ; GSB 2 31 22 02
X!=0 ; X!=0? 31 61
GTO 3 ; GTO 3 22 03
RTN ; RTN 35 22
LBL 3 ; LBL 3 31 25 03
GSB 2 ; GSB 2 31 22 02
X=0 ; X=0? 31 51
RTN ; RTN 35 22
GSB 2 ; GSB 2 31 22 02
X<0 ; X<0? 31 71
RTN ; RTN 35 22
GSB 2 ; GSB 2 31 22 02
X>0 ; X>0? 31 81
GTO 4 ; GTO 4 22 04
RTN ; RTN 35 22
LBL 4 ; LBL 4 31 25 04
DSZ ; DSZ I 31 33
F? 2 ; F2? 35 71 02
GTO 5 ; GTO 5 22 05
DSZ ; DSZ I 31 33
F? 1 ; F1? 35 71 01
GTO 5 ; GTO 5 22 05
DSZ ; DSZ I 31 33
F? 3 ; F3? 35 71 03
GTO 6 ; GTO 6 22 06
GTO 5 ; GTO 5 22 05
LBL 6 ; LBL 6 31 25 06
DSZ ; DSZ I 31 33
F? 0 ; F0? 35 71 00
GTO 7 ; GTO 7 22 07
GTO 5 ; GTO 5 22 05
LBL 7 ; LBL 7 31 25 07
SF 2 ; SF2 35 51 02
SF 1 ; SF1 35 51 01
CF 0 ; CF0 35 61 00
DSZ ; DSZ I 31 33
F? 3 ; F3? 35 71 03
GTO 5 ; GTO 5 22 05
DSZ ; DSZ I 31 33
F? 0 ; F0? 35 71 00
GTO 5 ; GTO 5 22 05
DSZ ; DSZ I 31 33
F? 2 ; F2? 35 71 02
GTO 8 ; GTO 8 22 08
GTO 5 ; GTO 5 22 05
LBL 8 ; LBL 8 31 25 08
DSZ ; DSZ I 31 33
F? 1 ; F1? 35 71 01
GTO 9 ; GTO 9 22 09
GTO 5 ; GTO 5 22 05
LBL 9 ; LBL 9 31 25 09
DSZ ; DSZ I 31 33
F? 2 ; F2? 35 71 02
GTO 5 ; GTO 5 22 05
GSB 2 ; GSB 2 31 22 02
DSP 7 ; DSP 7 23 07
DEG ; DEG 35 41
SIN ; SIN 31 62
SIN-1 ; SIN^-1 32 62
GSB a ; GSB a 32 22 11
COS ; COS 31 63
COS-1 ; COS^-1 32 63
GSB a ; GSB a 32 22 11
TAN ; TAN 31 64
TAN-1 ; TAN^-1 32 64
GSB a ; GSB a 32 22 11
R->P ; ->P 32 72
P->R ; ->R 31 72
GSB a ; GSB a 32 22 11
SIN ; SIN 31 62
H->H.MS ; ->HMS 32 74
H.MS->H ; HMS-> 31 74
SIN-1 ; SIN^-1 32 62
GSB a ; GSB a 32 22 11
LOG ; LOG 31 53
10^x ; 10^x 32 53
GSB a ; GSB a 32 22 11
LN ; LN 31 52
e^x ; e^X 32 52
GSB a ; GSB a 32 22 11
SQRT ; SQRT(X) 31 54
x^2 ; X^2 32 54
GSB a ; GSB a 32 22 11
ENTER ; ENTER 41
Y^X ; Y^X 35 63
LastX ; Lastx 35 82
1/X ; 1/X 35 62
y^x ; Y^X 35 63
GSB a ; GSB a 32 22 11
ENTER ; ENTER 41
+ ; + 61
LastX ; LastX 35 82
- ; - 51
GSB a ; GSB a 32 22 11
ENTER ; ENTER 41
* ; * 71
LastX ; LastX 35 82
: ; / 81
GSB a ; GSB a 32 22 11
SQRT ; SQRT(X) 31 54
FRAC ; FRC 32 83
LastX ; LastX 35 82
INT ; INT 31 83
+ ; + 61
x^2 ; X^2 32 54
GSB a ; GSB a 32 22 11
D->R ; D->R 32 73
R->D ; R->D 31 73
GSB a ; GSB a 32 22 11
EEX ; EEX 43
2 ; 2 02
X<>Y ; X<>Y 35 52
% ; % 31 82
GSB a ; GSB a 32 22 11
DSP 1 ; DSP 1 23 01
LBL b ; LBL b 32 25 12
RC I ; RCL I 35 34
STO (i) ; STO (i) 33 24
DSZ ; DSZ I 31 33
GTO b ; GTO b 22 31 12
2 ; 2 02
4 ; 4 04
X<>I ; X<>I 35 24
GSB c ; GSB c 32 22 13
GSB 0 ; GSB 0 31 22 00
LBL d ; LBL d 32 25 14
DSZ ; DSZ I 31 33
RC I ; RCL I 35 34
ABS ; ABS 35 64
STO (i) ; STO (i) 33 24
2 ; 2 02
4 ; 4 04
X!=Y ; X!=Y? 32 61
GTO d ; GTO d 22 31 14
ST I ; STO I 35 33
GSB c ; GSB c 32 22 13
9 ; 9 09
EEX ; EEX 43
8 ; 8 08
7 ; 7 07
1/x ; 1/X 35 62
8 ; 8 08
CHS ; CHS 42
* ; * 71
SF 0 ; SF0 35 51 00
CF 1 ; CF1 35 61 01
SF 3 ; SF3 35 51 03
RAD ; RAD 35 42
DSP 3 ; DSP 3 23 03
ENG ; ENG 35 23
-x- ; PRT X 31 84
SCI ; SCI 32 23
-x- ; PRT X 31 84
DSP 1 ; DSP 1 23 01
FIX ; FIX 31 23
-x- ; PRT X 31 84
R/S ; R/S
; This program can be used to test the calculator and diagnose calculator malfunctions. Simply insert the card and press A . After approximately two seconds, the calculator should pause displaying:
; 57.0
; If the calculator does not pause with this number, there is a malfunction in executing and returning from a subroutine, finding Label 0, program storage, the display, the magnetic card, the PAUSE command or the card reader.
; After the pause, the calculator should continue to run about one-and-one-half minutes more and then print the three lines shown:
; -888.9-90
; -8.889-88
; -8.888888888-88
; This output indicates that printing and display formatting are working correctIy. If the calculator stops before displaying -8.888888888-88, a code number corresponding to a function or operation malfunction will be displayed. For instance, if the calculator stopped with 36.0 in the display, an error in tangent or arctangent would be indicated. The sole exception is a failure in primary register 0. The calculator will stop execution of the program with the erroneous contents of R0 displayed.
; If error occurs: code indicating malfunction is shown. To run again after an error, set F0 and F3, clear F1 and F2. Or simply reload card.
; If no error, display shows
; -888.9-90
; -8.889-88
; -8.888888889-88
; (Note that a real HP-67 returns -8.888888888-88 since it doesn't round the last digit correctly.)
END
And here comes the "User Diagnostic" program for the emulator:
Code:
PROGRAM 1
LBL 0 ; LBL 0 31 25 00
CL REG ; CLRG 31 43
P<>S ; P<>S 31 42
CL REG ; CLRG 31 43
RTN ; RTN 35 22
LBL a ; LBL a 32 25 11
RND ; RND 31 24
RC I ; RCL I 35 34
X!=Y ; X!=Y? 32 61
R/S ; R/S 84
LBL 2 ; LBL 2 31 25 02
DSZ ; DSZ I 31 33
LBL 5 ; LBL 5 31 25 05
RC I ; RCL I 35 34
RTN ; RTN 35 22
LBL c ; LBL c 32 25 13
RCL (i) ; RCL (i) 34 24
RC I ; RCL I 35 34
X!=Y ; X!=Y? 32 61
R/S ; R/S 84
STO + 0 ; ST +0 33 61 00
DSZ ; DSZ I 31 33
GTO c ; GTO c 22 31 13
3 ; 3 03
EEX ; EEX 43
2 ; 2 02
RCL 0 ; RCL 0 34 00
X!=Y ; X!=Y? 32 61
R/S ; R/S 84
RTN ; RTN 35 22
LBL e ; LBL e 32 25 15
1 ; 1 01
- ; - 51
RTN ; RTN 35 22
LBL A ; LBL A 31 25 11
5 ; 5 05
7 ; 7 07
GSB 0 ; GSB 0 31 22 00
PAUSE ; PSE 35 72
GSB e ; GSB e 32 22 15
ENTER ; ENTER 41
RDOWN ; Rdn 35 53
X<>Y ; X<>Y 35 52
RUP ; Rup 35 54
RUP ; Rup 35 54
X<>Y ; X<>Y 35 52
RUP ; Rup 35 54
X!=0 ; X!=0? 31 61
X!=Y ; X!=Y? 32 61
RTN ; RTN 35 22
GSB e ; GSB e 32 22 15
X>Y ; X>Y? 32 81
RTN ; RTN 35 22
GSB e ; GSB e 32 22 15
X=Y ; X=Y? 32 51
RTN ; RTN 35 22
GSB e ; GSB e 32 22 15
X<=Y ; X<=Y? 32 71
GTO 1 ; GTO 1 22 01
RTN ; RTN 35 22
LBL 1 ; LBL 1 31 25 01
GSB e ; GSB e 32 22 15
ST I ; STO I 35 33
RC I ; RCL I 35 34
X<>Y ; X<>Y 35 52
X!=Y ; X!=Y? 32 61
RTN ; RTN 35 22
GSB 2 ; GSB 2 31 22 02
X!=0 ; X!=0? 31 61
GTO 3 ; GTO 3 22 03
RTN ; RTN 35 22
LBL 3 ; LBL 3 31 25 03
GSB 2 ; GSB 2 31 22 02
X=0 ; X=0? 31 51
RTN ; RTN 35 22
GSB 2 ; GSB 2 31 22 02
X<0 ; X<0? 31 71
RTN ; RTN 35 22
GSB 2 ; GSB 2 31 22 02
X>0 ; X>0? 31 81
GTO 4 ; GTO 4 22 04
RTN ; RTN 35 22
LBL 4 ; LBL 4 31 25 04
DSZ ; DSZ I 31 33
F? 2 ; F2? 35 71 02
GTO 5 ; GTO 5 22 05
DSZ ; DSZ I 31 33
F? 1 ; F1? 35 71 01
GTO 5 ; GTO 5 22 05
DSZ ; DSZ I 31 33
F? 3 ; F3? 35 71 03
GTO 6 ; GTO 6 22 06
GTO 5 ; GTO 5 22 05
LBL 6 ; LBL 6 31 25 06
DSZ ; DSZ I 31 33
F? 0 ; F0? 35 71 00
GTO 7 ; GTO 7 22 07
GTO 5 ; GTO 5 22 05
LBL 7 ; LBL 7 31 25 07
SF 2 ; SF2 35 51 02
SF 1 ; SF1 35 51 01
CF 0 ; CF0 35 61 00
DSZ ; DSZ I 31 33
F? 3 ; F3? 35 71 03
GTO 5 ; GTO 5 22 05
DSZ ; DSZ I 31 33
F? 0 ; F0? 35 71 00
GTO 5 ; GTO 5 22 05
DSZ ; DSZ I 31 33
F? 2 ; F2? 35 71 02
GTO 8 ; GTO 8 22 08
GTO 5 ; GTO 5 22 05
LBL 8 ; LBL 8 31 25 08
DSZ ; DSZ I 31 33
F? 1 ; F1? 35 71 01
GTO 9 ; GTO 9 22 09
GTO 5 ; GTO 5 22 05
LBL 9 ; LBL 9 31 25 09
DSZ ; DSZ I 31 33
F? 2 ; F2? 35 71 02
GTO 5 ; GTO 5 22 05
GSB 2 ; GSB 2 31 22 02
DSP 7 ; DSP 7 23 07
DEG ; DEG 35 41
SIN ; SIN 31 62
SIN-1 ; SIN^-1 32 62
GSB a ; GSB a 32 22 11
COS ; COS 31 63
COS-1 ; COS^-1 32 63
GSB a ; GSB a 32 22 11
TAN ; TAN 31 64
TAN-1 ; TAN^-1 32 64
GSB a ; GSB a 32 22 11
R->P ; ->P 32 72
P->R ; ->R 31 72
GSB a ; GSB a 32 22 11
SIN ; SIN 31 62
H->H.MS ; ->HMS 32 74
H.MS->H ; HMS-> 31 74
SIN-1 ; SIN^-1 32 62
GSB a ; GSB a 32 22 11
LOG ; LOG 31 53
10^x ; 10^x 32 53
GSB a ; GSB a 32 22 11
LN ; LN 31 52
e^x ; e^X 32 52
GSB a ; GSB a 32 22 11
SQRT ; SQRT(X) 31 54
x^2 ; X^2 32 54
GSB a ; GSB a 32 22 11
ENTER ; ENTER 41
Y^X ; Y^X 35 63
LastX ; Lastx 35 82
1/X ; 1/X 35 62
y^x ; Y^X 35 63
GSB a ; GSB a 32 22 11
ENTER ; ENTER 41
+ ; + 61
LastX ; LastX 35 82
- ; - 51
GSB a ; GSB a 32 22 11
ENTER ; ENTER 41
* ; * 71
LastX ; LastX 35 82
: ; / 81
GSB a ; GSB a 32 22 11
SQRT ; SQRT(X) 31 54
FRAC ; FRC 32 83
LastX ; LastX 35 82
INT ; INT 31 83
+ ; + 61
x^2 ; X^2 32 54
GSB a ; GSB a 32 22 11
D->R ; D->R 32 73
R->D ; R->D 31 73
GSB a ; GSB a 32 22 11
EEX ; EEX 43
2 ; 2 02
X<>Y ; X<>Y 35 52
% ; % 31 82
GSB a ; GSB a 32 22 11
DSP 1 ; DSP 1 23 01
LBL b ; LBL b 32 25 12
RC I ; RCL I 35 34
STO (i) ; STO (i) 33 24
DSZ ; DSZ I 31 33
GTO b ; GTO b 22 31 12
2 ; 2 02
4 ; 4 04
X<>I ; X<>I 35 24
GSB c ; GSB c 32 22 13
GSB 0 ; GSB 0 31 22 00
LBL d ; LBL d 32 25 14
DSZ ; DSZ I 31 33
RC I ; RCL I 35 34
ABS ; ABS 35 64
STO (i) ; STO (i) 33 24
2 ; 2 02
4 ; 4 04
X!=Y ; X!=Y? 32 61
GTO d ; GTO d 22 31 14
ST I ; STO I 35 33
GSB c ; GSB c 32 22 13
9 ; 9 09
EEX ; EEX 43
8 ; 8 08
7 ; 7 07
1/x ; 1/X 35 62
8 ; 8 08
CHS ; CHS 42
* ; * 71
SF 0 ; SF0 35 51 00
CF 1 ; CF1 35 61 01
SF 3 ; SF3 35 51 03
RAD ; RAD 35 42
DSP 3 ; DSP 3 23 03
ENG ; ENG 35 23
-x- ; PRT X 31 84
SCI ; SCI 32 23
-x- ; PRT X 31 84
DSP 1 ; DSP 1 23 01
FIX ; FIX 31 23
-x- ; PRT X 31 84
R/S ; R/S
; This program can be used to test the calculator and diagnose calculator malfunctions. Simply insert the card and press A . After approximately two seconds, the calculator should pause displaying:
; 57.0
; If the calculator does not pause with this number, there is a malfunction in executing and returning from a subroutine, finding Label 0, program storage, the display, the magnetic card, the PAUSE command or the card reader.
; After the pause, the calculator should continue to run about one-and-one-half minutes more and then print the three lines shown:
; -888.9-90
; -8.889-88
; -8.888888888-88
; This output indicates that printing and display formatting are working correctIy. If the calculator stops before displaying -8.888888888-88, a code number corresponding to a function or operation malfunction will be displayed. For instance, if the calculator stopped with 36.0 in the display, an error in tangent or arctangent would be indicated. The sole exception is a failure in primary register 0. The calculator will stop execution of the program with the erroneous contents of R0 displayed.
; If error occurs: code indicating malfunction is shown. To run again after an error, set F0 and F3, clear F1 and F2. Or simply reload card.
; If no error, display shows
; -888.9-90
; -8.889-88
; -8.888888889-88
; (Note that a real HP-67 returns -8.888888888-88 since it doesn't round the last digit correctly.)
END
It ends with error code 45.
Edit: this might help:
![[Image: error6obay.jpg]](https://abload.de/img/error6obay.jpg)