Post Reply 
Classic, Woodstock and Spice Emulators
06-17-2016, 08:27 AM (This post was last modified: 06-17-2016 09:06 AM by Harald.)
Post: #29
RE: Classic, Woodstock and Spice Emulators
(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]
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
RE: Classic, Woodstock and Spice Emulators - Harald - 06-17-2016 08:27 AM



User(s) browsing this thread: 1 Guest(s)