Skip to content

Releases: bxparks/rpn83p

1.1.1 - fix regression of STO and Y^X for Complex numbers

14 Nov 16:01
89896e6

Choose a tag to compare

  • 1.1.1 (2025-11-14)
    • Bug Fix: Fix regression of Y^X, XROOTY, and 2^X functions when
      CRES is active and X is Real (not Complex).
    • Bug Fix: Fix regression of STO {op} nn when storing Complex numbers
      or record objects.

v1.1.0 - reimplement UNIT; reorganize DATE, BASE; fix RPN stack handlinglift

07 Oct 21:44
6d0a158

Choose a tag to compare

  • 1.1.0 (2025-10-07)
    • DATE (Major UI Change)
      • Support additional method of entry of Duration objects:
        • compact string form, {dd}D{hh}H{mm}M{ss}S, e.g. 1D30M2S for
          DR{1,0,30,2}.
          • Obsoletes the "Duration Colon Modifier" entry form
            {nn}:{modifier}. Currently retained for backwards
            compatibility.
        • incremental building of Duration components using the DAY>,
          HR>, MIN>, and SEC> menu functions
      • Add MenuFolder for the 7 Date types: D, T, DT, TZ, DZ, DR,
        DW
        • add convenience menu function that inserts the Date-type prefix
          (i.e. "D{", "T{", "DT{", "TZ{", "DZ{", "DR{", "DW{"), to make
          entering Date-objects much easier
        • add complete list of polymorphic functions that apply to each
          Date-object under each menu folder
      • Remove DOPS folder, and scatter its functions (LEAP, DSHK,
        DEXD, DCUT, DLNK) under the 3 Date-object folders which support
        them: D, DT, DZ
      • Assume that DT (DateTime) is always in UTC timezone whenever its
        timezone is needed in a calculation
    • HMS functions
      • New Add HMS+ and HMS- menu functions under CONV menu folder.
      • Bug Fix: Add normalization to >HMS conversion function to
        prevent bug that caused [1.32] [1.32] [HMS+] to return 3.0360
        instead of 3.04.
      • Validate mm and ss fields of hh.mmss and throw Err:Invalid if
        greater than than 60.
    • UNIT menu (Complete Reimplementation)
      • Reimplement the underlying architecture using a workflow similar to
        the UNITS menu of the HP-19BII and TI-85
        • Pressing a UNIT menu converts a Real number to a Denominate number
          (i.e. a number with units).
        • Pressing a subsequent UNIT menu converts that Denominate number
          into the unit requested by the menu key.
      • Support misc Unit Functions (UFCN)
        • UVAL: return display value without units
        • UBAS: convert to its "base unit"
      • Increase number of supported units from 30 to 169.
        • Support all units in the HP-19BII and the TI-85.
      • Reorganize UNIT menus across 13 sub MenuFolders: UFCN, LENG, AREA,
        VOL, TEMP, MASS, FORC, PRES, ENER, TIME, SPD, PWR, FUEL.
      • Support basic arithmetic operations on units: CHS, +, -, *,
        /
      • Support most NUM operations on units: %, %CH, IP, FP,
        FLR,CEIL, NEAR, ABS, SIGN, MOD, MIN, MAX, RNDF,
        RNDN, RNDG (i.e. all NUM functions except GCD, LCM, and PRIM)
      • Support Storage Register arithmetics with UNIT objects.
    • BASE (UI Reorganization)
      • move most menu functions under 5 new subfolders: LOGI, ROTS, BITS,
        BFCN, BCFS ("Configs" or "Carry Flag and Word Size")
      • rename (B+ B- B* B/) to (BAS+ BAS- BAS* BAS/) for better
        self-documentation
      • no functional change
    • RPN Stack (Bug Fixes)
      • Bug Fix: Fix incorrect stack lift behavior for functions that
        produce a value without consuming the X register (e.g. PI, E, MEAN).
        Previously, these functions would ignore the 'disable stack lift'
        setting. Now, they will correctly interpret that flag and overwrite
        the existing X register.
      • Bug Fix: Preserve LASTX during CLST (Clear Stack), consistent
        with HP-42S.
      • Bug Fix: Handle an empty string input buffer correctly for all
        commands including the 'disable stack lift' behavior.
      • Handle edge case of STO which consumes X but spits back the same
        value. Input termination must occur and stack lift must be enabled.
      • Terminate input buffer and correctly enable stack lift for stack
        manipulation commands: DUP, Rollup, Rolldown, DROP, X<>Y.
    • Input Termination (Consistency)
      • Update all functions and menu navigation to avoid input termination
        for as long as it makes sense. See the new Input
        Termination
        section for
        full details.
    • Key bindings (New)
      • Add 2ND v as a shortcut to UVAL menu function under UNIT. Allows
        quick extraction of the value part of a Denominate object.
    • SHOW (Workflow)
      • Pass along most button keys to the main command processor so that
        their normal function are directly invoked from SHOW mode. Previously,
        all button presses were consumed by the SHOW mode. So to enter a new
        number from SHOW mode, the digit key (0-9) had to be pressed twice.
      • Preserve previous behavior for 4 buttons: DEL, CLEAR, ENTER,
        ON/EXIT. These buttons are consumed by the SHOW mode, and simply
        cause the SHOW mode to exit back to the normal mode. The user must
        press these buttons again in normal mode to invoke their normal
        function.
    • RPN83P application size
      • increase to 64kiB (4 flash pages) from 48kiB
    • WARNING Most MODE settings will be lost when upgrading from v1.0 to
      v1.1. Variables and registers will be preserved.
      • Lost
        • Pending entry in the input buffer
        • FIX, SCI, ENG selection
        • Trig modes (DEG, RAD)
        • Complex result (CRES,RRES)
        • Complex display modes (RECT, PRAD, PDEG)
        • ,EE or EE, selection
        • {..} or ".." selection
        • 'BASE > DEC|BIN|OCT|HEX' selection
        • 'BASE > WSIZ' selection
        • 'BASE > CF' flag
        • 'DATE > EPCH' selection and custom epoch date
        • 'DATE > CLK > ATZ' application timezone
        • 'DATE > CLK > CTZ' clock timezone
        • TVM Solver parameters: IYR1, IYR2, TMAX
      • Preserved
        • Storage registers (R00-R99)
        • Storage variables (A-Z,Theta)
        • RPN stack registers (X,Y,Z,T,A,B,C,D)
        • STAT registers (ΣX to ΣYLX)
        • TVM variables: N, I%YR, PV, PMT, FV, P/YR, C/YR, BEG, END

1.0.0 - graduate from beta; improve speed of PRIM by 2.4X; improve TVM for small I%/YR

19 Jul 21:06

Choose a tag to compare

  • 1.0.0 (2024-07-19)
    • RPN83P is now out of beta!
    • Documentation
      • add "Troubleshooting" section to USER_GUIDE.md
    • User Interface
      • CLEAR button clears only to the end of the line if the cursor is in
        the interior of the input buffer
        • if the cursor is at the beginning or the end of the input buffer,
          the entire buffer is cleared
        • identical to the CLEAR button on the TI-89/92+/Voyage 200
        • similar to 2ND CLEAR on HP-50g in Algebraic mode (but not in RPN
          mode)
    • Variables
      • print 'Err: Archived' error message if STO or RCL acts on
        a variable (A-Z,Theta) that is archived
    • TVM
      • Change the criteria for using the small-i approximation to the
        following: N*i <~ 6e-5.
    • Improve performance of PRIM by 2.4X
      • convert modOP1ByBC() to use the IX register instead of the stack
        (SP): 43-67% faster
      • use DEIX instead of HLIX: ~12% faster
      • process using in 8-bit chunks instead of 1-bit: ~18% faster
      • use A register instead of D register for chunks: ~5% faster
      • use nonrestoring division algorithm: ~11% faster
      • unroll the 8-bit division loop 8 times: ~11% faster
      • thanks go to the responders of this Cemetech
        thread
        for
        improving the modHLIXByBC() algorithm
    • MODE
      • set Trig, Floating Display, and Display Digits settings to a known
        state if the restoration of RPN83SAV fails, instead of inheriting the
        modes from the TI-OS
        • trig mode: RAD
        • floating display: FIX
        • display digits: floating
    • CLR folder
      • add CLD (clear display) menu item
        • clear the display and re-render everything
        • should almost never be needed, except during debugging
        • analogous to the CLD command on the HP-42S
    • UNIT
      • car fuel consumption
        • add >Lkm: convert mpg (miles per US gallon) to L/100km (liters
          per 100 km)
        • add >mpg: convert L/100km to mpg
      • car tire pressure
        • add >kPa: convert psi (pounds per square inch) to kPa
          (kiloPascal)
        • add >psi: convert kPa to psi
      • land area
        • add >ha: convert acre to hectare
        • add >acr: convert hectare to acre

0.12.0 - TVM improvements

24 Jun 16:39
f67044a

Choose a tag to compare

  • 0.12.0 (2024-06-24)
    • Bug Fix: update logic that determines when the comma , character can
      be inserted into the input buffer
      • some internal routines were still looking at the last character in the
        input buffer, instead of the character to the left of the current
        cursor
        • prevented comma insertion when the cursor was scrolled into the
          middle of the input buffer
        • updated to look at the char to the left of cursor
      • update logic that handles left and right braces { }
        • comma now allowed only inside an open left-brace {
        • comma no longer allowed after the last closing right-brace }
    • TVM
      • reduce rounding errors when PYR==CYR, the most common case in the US
        at least
      • improve logic for appending the "overridden" dot after the IYR1,
        IYR2, and TMAX menu items
      • add C/YR menu (number of compoundings per year)
        • uses the same variable as the C/Y variable of the "Finance" app
          in TI-OS
        • supports 2ND C/YR to retrieve its value, just like 2ND P/YR
        • setting P/YR also sets C/YR (consistent with the behavior of
          the "Finance" app in TI-OS
        • setting C/YR does not change P/YR (same as "Finance" app)
      • add a dot to P/YR and C/YR if they differ from their default value
        of 12, allows users to quickly see if those values are different from
        the default
      • make TVM Solver more robust under certain edge cases, especially near
        I%YR ~ 0%
      • change initial guess of IYR1 to -50% to support negative interest
        rates by default
        • keep default value of IYR2 at 100%
      • synchronize the BEG/END flag of RPN83P with the BEGIN/END
        flag of the "Finance" app provided by TI-OS
      • display status message 'TVM Calculated (Multiple)' if the TVM equation
        has 2 solutions, but only one of them was found
    • docs
      • simplify pandoc processing pipeline
      • change PDF font to FreeSerif and FreeMono to render the U+2220 (angle)
        symbol properly

0.12.0-rc3: TVM improvements

21 Jun 20:30

Choose a tag to compare

  • 0.12.0-rc3 (2024-06-21)
    • TVM
      • reduce rounding errors when PYR==CYR, the most common case in the US
        at least
    • Bug Fix: update logic that determines when the comma , character can
      be inserted into the input buffer
      • some internal routines were still looking at the last character in the
        input buffer, instead of the character to the left of the current
        cursor
        • prevented comma insertion when the cursor was scrolled into the
          middle of the input buffer
        • updated to look at the char to the left of cursor
      • update logic that handles left and right braces { }
        • comma now allowed only inside an open left-brace {
        • comma no longer allowed after the last closing right-brace }

0.12.0-rc2: TVM improvements

19 Jun 19:44

Choose a tag to compare

  • 0.12.0-rc2 (2024-06-19)
    • TVM
      • improve logic for appending the "overridden" dot after the IYR1,
        IYR2, and TMAX menu items

0.12.0-rc1: TVM improvements

18 Jun 16:46

Choose a tag to compare

Pre-release
  • 0.12.0-rc1 (2024-06-18)
    • TVM
      • add C/YR menu (number of compoundings per year)
        • uses the same variable as the C/Y variable of the "Finance" app
          in TI-OS
        • supports 2ND C/YR to retrieve its value, just like 2ND P/YR
        • setting P/YR also sets C/YR (consistent with the behavior of
          the "Finance" app in TI-OS
        • setting C/YR does not change P/YR (same as "Finance" app)
      • add a dot to P/YR and C/YR if they differ from their default value
        of 12, allows users to quickly see if those values are different from
        the default
      • make TVM Solver more robust under certain edge cases, especially near
        I/YR ~ 0%
      • change initial guess of IYR1 to -50% to support negative interest
        rates by default
        • keep default value of IYR2 at 100%
      • synchronize the BEG/END flag of RPN83P with the BEGIN/END
        flag of the "Finance" app provided by TI-OS
      • display status message 'TVM Calculated (Multiple)' if the TVM equation
        has 2 solutions, but only one of them was found
    • docs
      • simplify pandoc processing pipeline
      • change PDF font to FreeSerif and FreeMono to render the U+2220 (angle)
        symbol properly

v0.11.0 - menu folder icons; scrollable cursor; resizable stack; resizable storage registers

28 May 20:30
205579d

Choose a tag to compare

  • 0.11.0 (2024-05-28)
    • Warning: Previously saved RPN stack and storage registers are
      incompatible and are lost when upgrading to this version.
    • support resizing the number of storage registers
      • MODE > RSIZ command supports a minimum of 25 to a maximum of 100
      • MODE > RSZ? returns the current size of storage registers
      • size of the RPN83REG appVar varies:
        • 500 bytes at RSIZ=25
        • 1925 bytes at RSIZ=100
    • support resizing the RPN stack size
      • MODE > SSIZ command supports a minimum of 4 to a maximum of 8
      • MODE > SSZ? returns the current size of stack
      • size of the RPN83STK appVar varies:
        • 120 bytes at SSIZ=4
        • 196 bytes at SSIZ=8
    • add additional stack operators
      • soft menu DROP
        • drops the stack by one, duplicating the top register
        • already implemented in the code, just exposing the functionality
          to the user
      • soft menu DUP
        • lifts the stack by one, duplicating X (similar to ENTER without
          disabling the stack-lift)
        • already implemented in the code, just exposing the functionality
          to the user
      • button 2ND u
        • bound to the RollUp functionality, same as the existing RollUp
          soft menu item
        • becomes useful when the stack size SSIZ is greater than 4
    • DATE
      • simplify DATE menu hierarchy
        • move RTC (hardware clock) menus and TZ config menus under new CLK
          menu folder
        • move DSHK, DEXD, DCUT, DLNK menu items under new DOPS menu folder
      • support arithmetic operations on Offset
        • {Offset} + {hours}, {hours} + {Offset}
        • {Offset} - {hours}
        • {Offset} - {Offset} => {hours}
        • plus the same operations with {hours} replaced with an appropriate
          {Duration} (in multiples of 15 minutes)
    • STAT
      • extract the 13 STAT registers (R11-R23) from regular storage registers
        (appVar RPN83REG) into its own registers (appVar RPN83STA)
      • add Σ (Sigma) menu folder containing various ΣXXX menu items to
        recall the 13 stat registers (essentially the same as the Plus42 app)
      • See USER_GUIDE_STAT.md
    • BASE
      • format HEX numbers in groups of 2 digits for readability
      • format OCT numbers in groups of 3 digits for readability
      • format BIN numbers in groups of 4 digits using small font,
        allowing 16 digits to be displayed on a single line
      • no digit grouping for DEC numbers (no change)
      • move formatting routines to Flash Page 2
      • See USER_GUIDE_BASE.md
    • show MenuFolders using a file folder icon
      • fixes Issue#20
      • draw a small 5px wide line above the menu box if the menu is a folder
      • inspired by the menus on the HP-48 series calculators
      • change cursor to be rectangular block, instead of an underline, to
        avoid visual conflict with the short dash line of menu folders just
        below the editing line
    • support insertion cursor using LEFT and RIGHT arrow keys
      • support 2ND LEFT (beginning of line) and 2ND RIGHT (end of line)
        key bindings
      • update CHS (-) to change the sign of the interior number component
        identified by the cursor instead of the right most component in the
        inputBuf
      • this allows easier correction of typos during long input
    • storage formats
      • encode RpnObject type field using 2 bytes instead of 1 byte
        • allows additional RpnObjects in the future without violating the
          83 Plus SDK documentation
      • update storage format of the TIOS appVars (RPN83SAV, RPN83STA,
        RPN83STK, RPN83REG)
        • makes adding additional appVar types in the future easier
    • Bug Fix More robust data validation for appVars
      • add schemaVersion field for RpnElementList
      • add rpnVarType field, to allow future appVar types
      • validate size of RpnElementList appVar has no extraneous bytes
    • Bug Fix Validate Duration objects entered through colon-modifier
      syntax
      • prevents entry of things like 61:S or 25:H
    • Bug Fix Display error for negative numbers correctly for BASE mode
      when WSIZ < 32
      • If the floating point number is negative, the validation for
        determining if the WSIZ is exceeded was incorrectly handled. Which
        caused negative numbers to be displayed with ... instead of -, but
        the bug occurred only for WSIZ < 32.
      • Fixed so that - is correctly displayed for all WSIZ.

v0.11.0-dev - early preview release of v0.11.0 to show upcoming UI/UX changes

14 May 16:52

Choose a tag to compare

This is an early preview release of v0.11.0 to allow users to provide feedback on various upcoming UI/UX changes. Most users should use the last stable release v0.10.0.

Warning: This release will clear the previous RPN stack and storage registers on the calculator, because the underlying storage format has changed.

There are no Release Notes. Those will be created for the stable release. The CHANGELOG.md file is available for people who are really curious.

v0.10.0 - date, time, datetime, timezone, hardware clock

01 Apr 04:08
e947b19

Choose a tag to compare

  • 0.10.0 (2024-03-31)
    • Bug Fix Fix broken CLRG
      • broke when 'REGS' was replaced by 'RPN83REG'
    • Bug Fix Parse floating numbers equivalent to 0.0 more correctly.
      • The canonical internal representation of 0.0 in TI-OS has an exponent
        value of $80 (i.e. 0), with all mantissa digits set to 0.
      • The previous code set the mantissa digits correctly, but incorrectly
        set the exponent to $7F or some other value depending on the
        position of the decimal point relative to the 0 digits.
      • It made almost no difference because various floating point routines
        seem to canonicalize the exponent to the correct $80 before
        continuing.
      • However, in an upcoming feature, the validation CkPosInt() is called
        before canonicalization can take place, the CkPosInt() returns an
        incorrect result.
      • The fix correctly detects all variations of a 0.0 (e.g. an empty
        string "", "0.0", "000.0", "-000.000E1", "00.00E0") and correctly
        returns the canonical representation of 0.0 which works with
        CkPosInt().
    • Bug Fix Validate data type for STAT functions
      • allow only Real numbers for Sigma+ and Sigma-
    • Bug Fix Validate data type for TVM functions
      • allow only Real numbers for TVM functions
    • Bug Fix Validate data type for % function
      • allow only Real numbers for X and Y
    • Bug Fix Validate data type when storing to ANS upon app exit
      • allow only Real or Complex numbers to stored to ANS
    • Bug Fix Support real arguments for CPLX menu functions (REAL,
      IMAG, CONJ, CABS, CANG)
    • RPN83P now consumes 3 flash pages (48 kiB)
    • Verify compatibility with TI-Nspire with TI-84 Plus keyboard
      • works with TI-Nspire with the TI-84 keyboard emulates the Z80
        processor
    • Store and recall TI-OS single-letter variables
      • TI-OS supports 27 single-letter variables (A-Z, Theta) for real and
        complex numbers
      • extend STO, RCL, STO{op}, and RCL{op} to accept a
        single-letter in addition to digits (e.g. STO ALPHA A, RCL+ ALPHA B)
    • Add RNDF, RNDN, RNDG rounding functions
      • RNDF: round to current FIX/SCI/ENG digits
      • RNDN: round to user-specified N digits (0-9)
      • RNDG: round to 10 digits, removing guard digits
    • Change complex number type error to Err:DataType
      • when a function does not accept a complex number, an error message is
        shown
      • change the message from Err:Domain to Err:DataType
    • Add MODE option to invert the behavior of , and 2ND EE button
      • previously, both the , button and 2ND EE button were mapped to
        EE, to make entry of floating point numbers with exponents easier.
      • But the new Date/Time records require the , button for entry.
      • add 2 selectors into MODE menu:
        • ,EE causes the button to behave as labeled (default)
        • EE, inverts the mapping, so that , invokes the EE function,
          and 2ND EE invokes the , function
      • allows the end user to select the most convenient behavior.
    • Update menu compiler and menu routines to support more than 255 items.
      • move most menu routines into Flash Page 1.
    • add date functions
      • date, time, datetime, timezone, and hardware clock
      • add or subtract dates, times, datetimes
      • convert datetime to different timezones
      • convert between datetime and epochseconds
      • support alternate Epoch dates (Unix, NTP, GPS, TIOS, Y2K, custom)
      • set and retrieve datetime from the hardware clock (84+/84+SE only)
      • display time and date objects in RFC 3339 (ISO 8601) format
      • see RPN83P User Guide: DATE
    • increase performance of PRIM (prime factor) function by 40-50%.
    • update pandoc scripts that convert GitHub flavored Markdown to PDF
      • pandoc was generating images which were 33% too large
      • fixed by using ImageMagick to prescale the images to 75%