|
What's new in RPN-38 CX
Due to the limited hardware capabilities available to engineers in the late 70's, a number of compromises had to be applied to the design of the HP-38.
For example, since storage area was especially scarce in those days, users had to choose between many registers and only a few program lines, or vice versa.
For every 7 lines of program one register had to be sacrificed.
Editing a program was cumbersome, to put it mildly. To insert a missing line, a branch to an unused line had to be entered,the line just overwritten had to be re-entered at the target location, followed by the
missing line, followed by a branch back to the line after the original branch. Since branches always addressed line numbers, changing a program usually involved fixing various
branch commands.
Deleting a line was not supported. You replaced the line to be deleted by a GTO command to the following line instead.
RPN-38 CX fixes the most glaring shortcomings of the HP-38
MEMORY |
HP-38 |
RPN-38 CX |
Allocation |
Storage registers share memory with program lines |
20 registers and 99 program lines available at all times |
Registers |
STO register arithmetic limited to registers 0...6. |
STO and RCL register arithmetic supported by all 20 registers, including ∑+ (R2 and R4).
Also works with LASTx, e.g. RCL + ENTER |
Indirect Addressing |
Not available |
Yes, via I register |
|
|
|
FUNCTIONS |
|
|
GSB, RTN |
Not available |
Subroutine support |
NOM, EFF |
Not available |
Nominal and effective rate |
RAND |
Not available |
Create random number |
x≷I, DSE, ISG |
Not available |
Loop control |
x=y, x<y, x>y,
x≠y, x≤y, x≥y
(double-tap to switch sets) |
x≤y only |
Full complement of comparisons x with y |
x=0, x<0, x>0,
x≠0, x≤0, x≥0
(long-press to use 0 instead of y) |
x=0 only |
Full complement of comparisons x with 0 |
x², LOG, NOP |
Not available |
More functions |
F?, SF, CF |
Not available |
10 flags (test, set, clear) |
|
|
|
PROGRAMMING |
|
|
Program notes |
Not available |
Title, description, date |
Editing |
Overwrite next line only |
Insert, delete line with automatic branch correction
Bulk line deleting |
Storing |
Not available |
Quickly store and retrieve any number of programs |
Sharing |
Not available |
E-mail, print, Dropbox, and more |
|
|
|
USER INTERFACE |
|
|
Prefix keys |
Active if pressed |
Active if pressed. Deactivated if pressed again. Indicators show state. |
Register view |
Not available |
All registers shown on single screen including formatted display.
Run/Stop and single-step program without leaving register view. |
Program view |
Not available |
Entire program including title and description. Supports deleting any line by swiping. |
Shortcut keys |
Not available. Two key presses required for commands like SST, GTO, P/R. |
Available for P/R, SST, BST, GTO, DEL, NOM, and EFF. |
Decimal Point, Thousands separator |
Fixed to "." Thousands separator shown as comma |
User-selectable representations |
Command display |
Not available |
In program mode or while single-stepping, current command is shown as text below display |
Current step display |
Not available |
Current program step is shown below display |
Program memory fill status |
Not available |
Red progress bar shows amount of program memory filled |
Clock display |
Not available |
By tapping f (12-hr) or g (24-hr), then P/R. |
Haptic feedback |
Of course |
Set by the action of storing 1939010X in R0 (where X = 0..3 = level) |
The value π
π (3.141592654) was replaced by NOP in version 3.2.
To use π in a program, two options are available:
1. Store the value in any register and load the program with registers.
2. Paste the text 00 28 into the display in programming mode.
Optional programming and extra functions keys:
After double-tapping x=y:
With f prefix key active:
After double-tapping x<y:
With g prefix key active:
After double-tapping x>y:
|
Additional Features
More features only RPN-38 CX offers:
- MEM
The Memory Map key, used to describe the current allocation of memory, has no function in RPN-38 CX. The key has been reassigned to the DEL function (delete program line.)
- Calendar
The calendar ranges from January 1, 0001 to December 31, 9999, as opposed to October 15, 1582 to November 25, 4046. Julian dates are denoted by a negative weekday number.
- DATE
DATE adds the integer value in X to the date in Y, resulting in a new date. If Y is 0 and X is between 1583 and 4099, the Gregorian Easter date of the year X is returned.
If X is outside this range, or if Y is an invalid date, the current date is used as Y.
Examples:
- To get today's date and weekday, tap 0 ENTER f DATE.
- To get the Easter date of 2016: 0 ENTER 2016 f DATE.
- Live Mode switch
If a date is displayed, the mode switch will swap day and month in real-time.
- NOM and EFF
Easily convert between nominal and effective annual interest rates. Simply enter one percentage and the compounding periods,
then get the other percentage.
Example:
6.7 NOM 4 n EFF → 6.87
- Program instruction names
In programming mode, or with SST depressed in run mode, the name of the current instruction is shown as text below the display.
- Program step number
In run mode, the current program step number is shown below the display. Tap the number to turn it off or on.
- Find last program line
Entering GTO . . in both programming and run mode addresses the line of the last user instruction.
- Program memory full alert
While inserting lines into a program, if the program memory uses up all 99 steps, a warning appears in the display. No more lines are accepted at this point.
- Selectable decimal point
Decimal point and thousands separator symbols may be swapped.
- Low-battery indicator
If the iPhone's battery charge drops below 10%, the regular HP-38 battery warning (red dot above minus sign) lights up.
|
|
|
|
|
|
Getting data into RPN-38 CX |
|
|
|
|
|
You can preset RPN-38's registers with data created externally without having to type them in. |
|
|
Simply prepare the data in text format in any app that can handle text, like Notes, Mail any many others. Then copy the text and paste it into RPN-38's display in Run mode. |
|
|
|
|
|
The data format looks like this: |
|
|
Memory registers:
Rn or R.n value count
where n = 0…9
value is the number to be stored
count is the optional cash-flow count
|
|
|
Top-row registers: fn value
where fn = n or i or PV or PMT or FV
value is the number to be stored
|
|
|
Cash-flow 20:
FV value count
where
value is the number to be stored for CF20
count is the optional cash-flow count for CF20
Alternatively, the count may set by:
N20 value
|
|
|
|
|
|
Example:
To set R1 = 4.5, R6 = 6.28E-7, R.3 = 439, PV = 1000, and i = 5 prepare your data like this: |
|
|
R1 4.5
R6 6.28e-7
R.3 439
pv 1000
i 5
|
|
|
Select all of the text and paste. |
|
|
|
|
|
Notes:
Upper-/lower-case is ignored.
One or more blanks or tabs may follow the register number.
M may be used in place of R.
R.n may also be written as R1n, e.g. R.3 is the same as R13.
The order of the registers is irrelevant.
Unlisted registers are left untouched.
|
|
|
Extra Functions |
|
|
|
|
|
GTO, GSB, RTN |
|
|
GTO nn Continue program execution at step nn.
GSB nn Continue program execution at step nn, remembering step nn+1.
RTN Continue program execution at latest step remembered by GSB.
Up to 4 return addresses may be pending.
Step arguments nn of GTO and GSB are automatically adjusted when inserting or deleting steps. |
|
|
|
|
|
RAND |
|
|
x ≤ 0: creates an integer random number in the range 0…2^32–1.
x > 0: creates an integer random number less than x, but no larger than 2^32–1. |
|
|
|
|
|
x≷I, DSE, ISG |
|
|
The functions DSE (Decrement and Skip if Equal or Less) and ISG (Decrement and Skip if Greater)
provide looping control by counting a value up or down, skipping the
next step when a predetermined limit value has been reached.
The loop control value must be stored in internal register I, using this format:
nnnnn.xxxyy
The integer part nnnnn (up to 5 digits) is the counter value being decremented or incremented.
The fractional part xxx (exactly 3 digits) is the limit value being compared to the counter value.
The fractional part yy (exactly 2 digits) determines the amount by which the counter is incremented/decremented.
x≷I exchanges x with the loop control register I.
DSE decrements nnnnn by yy. If the result is equal to xxx (or less than xxx), the next step is skipped.
ISG increments nnnnn by yy. If the result is greater than xxx, the next step is skipped.
Note that xxx defaults to 000, while yy defaults to 01.
For example, the DSZ command (Decrement and Skip if Zero) found in other calculators may be emulated by simply storing the counter value n in register I.
|
|
|
|
|
|
TOP, MID, END |
|
|
These keys quickly set the current step to convenient values.
TOP
Selects step 00
MID
Selects the step halfway through the program
END
Selects the last program step
|
|
|
|
|
|
F?, SF, CF |
|
|
10 flags (F0…F9) are available to be set, cleared, or tested.
Their state may be viewed in register view:
The register numbers display the state of same-numbered flags. If the flag is set, the number is highlighted.
F? n
Tests flag n. If it's set, program execution continues, otherwise the next step is skipped.
SF n
Set flag n.
CF n
Clear (reset) flag n.
F3 is auto-set by numeric user input.
F2 and F3 are auto-cleared on test.
In addition, F3 is cleared by RTN keyed in by user,
TOP, GTO 00, CLP, or by changing the P/R mode.
All flags are cleared by executing CLEAR ALL.
Flags are stored along with the program.
|
|
|
|
|
|
Comparisons |
|
|
RPN-32 and RPN-38 are the only
HP-simulators before the HP-15C to offer all 12 possible comparisons.
Basic:
x=y, as well as x<y, x>y (using f and g)
Extended:
Double-tap the operator to access additional comparisons:
x≠y, x≤y, x≥y
Single-tap the operator to select it.
Long-press the operator to replace y with 0 and select it. |
|