RPN-38 Extended — Making the HP-38 user-friendly

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



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.
Also works with LASTx, e.g. RCL + ENTER
Indirect Addressing Not available Yes, via I register
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
(double-tap to switch sets)
x≤y only available 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 available Full complement of comparisons x with 0
x², LOG, π Not available Math functions
F?, SF, CF Not available 10 flags (test, set, clear)
Program notes Not available Title, description, date
Editing Overwrite next line only Insert, delete line with automatic branch correction
Storing Not available Quickly store and retrieve any number of programs
Sharing Not available E-mail, print, Dropbox, and more
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

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:

    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
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
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.
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 nn
Continue program execution at step nn.
GSB nn
Continue program execution at step nn, remembering step nn+1.
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.
    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:

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.
    These keys quickly set the current step to convenient values.

Selects step 00
Selects the step halfway through the program
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.

F2 and F3 are auto-cleared on test.
In addition, F3 is auto-set by numeric user input.
All flags are cleared by executing CLEAR ALL.
    RPN-32 and RPN-38 are the only HP-simulators before the HP-15C to offer all 12 possible comparisons.
x=y, as well as x<y, x>y (using f and g)
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.

Copyright © 2019. All rights reserved.
Apple and the Apple logo are trademarks of Apple Inc., registered in the U.S. and other countries. iPad is a trademark of Apple Inc.