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



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:

     
    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.
 
 


Copyright © 2020. 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.