Repost
This
is a repost of a basic program for the HP 71B. I received an email
from Kenneth who pointed out that line 145 lead to an error. In
further testing, this lead to the input routine not working
correctly. The following code in today’s repost is a corrected
algorithm. Edited lines are in blue (lines 5,
125, and 145).
The
original entry, posted on August 29, 2016, will be deactivated.
HP
71B Program: BASIC
The
program RPNBASIC puts the HP 71B into RPN mode with arithmetic
functions, power, square root, and π. The program
contains room for one independent memory and a four level stack that
works like the classic Hewlett Packard RPN calculators.
I
have the array S set up for six slots:
Slot
1: X stack (display)
Slot
2: Y stack
Slot
3: Z stack
Slot
4: T stack
Slot
5: Independent memory stack
Slot
6: (temporary memory)
For
an idea of how RPN works, check out this
tutorial: http://edspi31415.blogspot.com/2011/09/rpn-basics.html
As a
note, this program requires you to press the equals key [ = ] before
you enter a number to the stack.
Example: 2
+ 3 + 9 = 14
Keys:
[ =
], 2, [END LINE]
[ =
], 3, [END LINE], [ + ],
[ =
], 9, [END LINE], [ + ]
The
keys available during RPNBASIC:
[ =
] Input
[ +
] Add: Y + X
[ –
] Subtract: Y – X
[ *
] Multiplication: Y * X
[ /
] Divide: Y/X
[ g
] [ / ] (^) Exponent: Y^X
[ Q
] Square Root √X
[ P
] Enter π to the stack
[ M
] Store X in independent memory
[ R
] Recall memory
[ C
] Clear X stack to 0
Stack
operations:
[ S
] Swap with X and Y
[ D
] Roll stack down, result { Y, T, Z, X }
Exit
the program: press [ E ]
HP
71B Program: RPNBASIC (828 bytes)
5
! SIMPLE RPN, EWS 5/12/2024
10
DESTROY S, K$
15
DIM K$, S(6)
20
OPTION BASE 1
25
DISP “RPN BASIC” @ WAIT 1
30
DELAY 0,0
35
DISP S(1)
40
K$=KEY$
50
IF K$=”+” THEN S(6)=S(1)+S(2) @ GOTO 100
52
IF K$=”-” THEN S(6)=S(2)-S(1) @ GOTO 100
54
IF K$=”*” THEN S(6)=S(1)*S(2) @ GOTO 100
56
IF K$=”/” THEN S(6)=S(2)/S(1) @ GOTO 100
58
IF K$=”=” THEN 140
60
IF K$=”M” THEN S(5)=S(1) @ GOTO 35
62
IF K$=”R” THEN S(6)=S(5) @ GOTO 120
64
IF K$=”P” THEN S(6)=PI @ GOTO 120
66
IF K$=”C” THEN S(1)=0 @ GOTO 35
68
IF K$=”S” THEN 160
70
IF K$=”D” THEN 180
72
IF K$=”Q” THEN S(1)=SQR(S(1)) @ GOTO 35
74
IF K$=”^” THEN S(6)=S(2)^S(1) @ GOTO 100
76
IF K$=”E” THEN 200 ELSE 40
100
! 2 STACK OPERATION
105
S(1)=S(6) @ S(2)=S(3) @ S(3)=S(4)
110
GOTO 35
120
! PI/RCL/INPUT
125
S(4)=S(3) @ S(3)=S(2) @ S(2)=S(1) @ S(1)=S(6)
130
GOTO 35
140
! INPUT NUMBER
145
INPUT “NUMBER:”;S(6)
150
GOTO 120
160
! SWAP
165
S(6)=S(1) @ S(1)=S(2) @ S(2)=S(6)
170
GOTO 35
180
! ROLL
185
S(6)=S(1)
190
S(1)=S(2) @ S(2)=S(3) @ S(3)=S(4) @ S(4)=S(6)
195
GOTO 35
200
STOP
Examples:
Remember
the order of operations!
Example
1:
22.5
– 12.3 * 3.3 = -18.09
[ =
], 12.3, [ END LINE ],
[ =
], 3.3, [ END LINE ], [ * ],
[ =
] 22.5, [ END LINE ], [ S ], [ – ]
Example
2: (5^2 + 1.4^3)/2 = 13.872
[ =
], 5, [ END LINE ], [ = ], 2, [ END LINE ], [ g ], [ / ] (^)
[ =
], 1.4, [ END LINE ], [ = ], 3, [ END LINE ], [ g ], [ / ] (^), [ + ]
[ =
], 2, [ END LINE ], [ / ]
Example
3: π * 3.12^2 + (3.12 * 1.99) = 36.7903195271
Store
3.12 in memory.
[ =
], 3.12, [ END LINE ], [ M ],
[ =
], 2 , [ END LINE ], [ g ], [ / ] (^),
[ P
], [ * ],
[ R
], [ = ], 1.99, [ END LINE ], [ * ], [ + ]
Enjoy!
Note:
this program can be expanded to include additional functions and
calculations.
All
original content copyright, © 2011-2024. Edward Shore.
Unauthorized use and/or unauthorized distribution for commercial
purposes without express and written permission from the author is
strictly prohibited. This blog entry may be distributed for
noncommercial purposes, provided that full credit is given to the
author.