Post Reply 
Classic, Woodstock and Spice Emulators
06-20-2016, 07:38 AM
Post: #49
RE: Classic, Woodstock and Spice Emulators
Ok, sorry for the confusion. I really shouldn't write in a hurry and then comment from my mobile phone without checking what I have actually writenn...

Apparently I made a copy and paste mistake when quoting the code I used for Bernhards emulator. The correct code is:
Code:

HP67

PROGRAM

LBL 0    ; LBL 0    31 25 00
CLREG    ; CLRG     31 43
P<>S     ; P<>S     31 42
CLREG    ; 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

MODE DEG FIX 2 0 0 0 0

If the MODE section is now changed to
Code:

MODE DEG FIX 2 1 0 0 1

everything works fine.


The comments in the code are
A) the code for Willis Simulator (sorry for confusing it with an emulator before, which it cant be if it displays different results from the real calculator)
B) the key codes
and then below the actual program
C) Willis text regarding the program running on his simulator (which by the way is very nice too, and I used frequently until I dropped my ipad and the screen broke)

And here is my interpretation of Willis comment on the rounding:
The mathematically correct result would be rounded to a 9 in the last digit. The real calculator cannot do that as it has no extra digits and therefore no information on how to round the last digit.
So the result is both correct as in it is the best the calculator can do given its limitations, and at the same time incorrect if you were to look at the mathematically correct result.
Willis Simulator overcomes those limitations by adding extra internal digits and therefore displays the mathematically correct result.
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-20-2016 07:38 AM



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