Releases: bxparks/rpn83p
Releases · bxparks/rpn83p
1.1.1 - fix regression of STO and Y^X for Complex numbers
- 1.1.1 (2025-11-14)
- Bug Fix: Fix regression of
Y^X,XROOTY, and2^Xfunctions when
CRESis active andXis Real (not Complex). - Bug Fix: Fix regression of
STO {op} nnwhen storing Complex numbers
or record objects.
- Bug Fix: Fix regression of
v1.1.0 - reimplement UNIT; reorganize DATE, BASE; fix RPN stack handlinglift
- 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.1D30M2Sfor
DR{1,0,30,2}.- Obsoletes the "Duration Colon Modifier" entry form
{nn}:{modifier}. Currently retained for backwards
compatibility.
- Obsoletes the "Duration Colon Modifier" entry form
- incremental building of Duration components using the
DAY>,
HR>,MIN>, andSEC>menu functions
- compact string form,
- 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
- add convenience menu function that inserts the Date-type prefix
- Remove
DOPSfolder, 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
- Support additional method of entry of Duration objects:
- HMS functions
- New Add
HMS+andHMS-menu functions underCONVmenu folder. - Bug Fix: Add normalization to
>HMSconversion function to
prevent bug that caused[1.32] [1.32] [HMS+]to return3.0360
instead of3.04. - Validate
mmandssfields ofhh.mmssand throwErr:Invalidif
greater than than 60.
- New Add
- 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.
- Pressing a UNIT menu converts a Real number to a Denominate number
- 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.
- Reimplement the underlying architecture using a workflow similar to
- 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
- move most menu functions under 5 new subfolders: LOGI, ROTS, BITS,
- 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
LASTXduringCLST(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
STOwhich consumesXbut 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.
- Bug Fix: Fix incorrect stack lift behavior for functions that
- 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.
- Update all functions and menu navigation to avoid input termination
- Key bindings (New)
- Add
2ND vas a shortcut toUVALmenu function underUNIT. Allows
quick extraction of the value part of a Denominate object.
- Add
- 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.
- Pass along most button keys to the main command processor so that
- 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)
,EEorEE,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
- Lost
- DATE (Major UI Change)
1.0.0 - graduate from beta; improve speed of PRIM by 2.4X; improve TVM for small I%/YR
- 1.0.0 (2024-07-19)
- RPN83P is now out of beta!
- Documentation
- add "Troubleshooting" section to
USER_GUIDE.md
- add "Troubleshooting" section to
- User Interface
CLEARbutton 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)
- if the cursor is at the beginning or the end of the input buffer,
- Variables
- print 'Err: Archived' error message if
STOorRCLacts on
a variable (A-Z,Theta) that is archived
- print 'Err: Archived' error message if
- TVM
- Change the criteria for using the small-i approximation to the
following: N*i <~ 6e-5.
- Change the criteria for using the small-i approximation to the
- Improve performance of
PRIMby 2.4X- convert
modOP1ByBC()to use theIXregister 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
Aregister instead ofDregister 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 themodHLIXByBC()algorithm
- convert
- 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
- set Trig, Floating Display, and Display Digits settings to a known
- 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
CLDcommand on the HP-42S
- add
- 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
- add
- car tire pressure
- add
>kPa: convert psi (pounds per square inch) to kPa
(kiloPascal) - add
>psi: convert kPa to psi
- add
- land area
- add
>ha: convert acre to hectare - add
>acr: convert hectare to acre
- add
- car fuel consumption
0.12.0 - TVM improvements
- 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
- prevented comma insertion when the cursor was scrolled into the
- 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
}
- comma now allowed only inside an open left-brace
- some internal routines were still looking at the last character in the
- 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, andTMAXmenu items - add
C/YRmenu (number of compoundings per year)- uses the same variable as the
C/Yvariable of the "Finance" app
in TI-OS - supports
2ND C/YRto retrieve its value, just like2ND P/YR - setting
P/YRalso setsC/YR(consistent with the behavior of
the "Finance" app in TI-OS - setting
C/YRdoes not changeP/YR(same as "Finance" app)
- uses the same variable as the
- add a dot to
P/YRandC/YRif 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
IYR1to-50%to support negative interest
rates by default- keep default value of
IYR2at100%
- keep default value of
- synchronize the
BEG/ENDflag of RPN83P with theBEGIN/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
- reduce rounding errors when
- docs
- simplify pandoc processing pipeline
- change PDF font to FreeSerif and FreeMono to render the U+2220 (angle)
symbol properly
- Bug Fix: update logic that determines when the comma
0.12.0-rc3: TVM improvements
- 0.12.0-rc3 (2024-06-21)
- TVM
- reduce rounding errors when
PYR==CYR, the most common case in the US
at least
- reduce rounding errors when
- 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
- prevented comma insertion when the cursor was scrolled into the
- 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
}
- comma now allowed only inside an open left-brace
- some internal routines were still looking at the last character in the
- TVM
0.12.0-rc2: TVM improvements
- 0.12.0-rc2 (2024-06-19)
- TVM
- improve logic for appending the "overridden" dot after the
IYR1,
IYR2, andTMAXmenu items
- improve logic for appending the "overridden" dot after the
- TVM
0.12.0-rc1: TVM improvements
- 0.12.0-rc1 (2024-06-18)
- TVM
- add
C/YRmenu (number of compoundings per year)- uses the same variable as the
C/Yvariable of the "Finance" app
in TI-OS - supports
2ND C/YRto retrieve its value, just like2ND P/YR - setting
P/YRalso setsC/YR(consistent with the behavior of
the "Finance" app in TI-OS - setting
C/YRdoes not changeP/YR(same as "Finance" app)
- uses the same variable as the
- add a dot to
P/YRandC/YRif 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
IYR1to-50%to support negative interest
rates by default- keep default value of
IYR2at100%
- keep default value of
- synchronize the
BEG/ENDflag of RPN83P with theBEGIN/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
- add
- docs
- simplify pandoc processing pipeline
- change PDF font to FreeSerif and FreeMono to render the U+2220 (angle)
symbol properly
- TVM
v0.11.0 - menu folder icons; scrollable cursor; resizable stack; resizable storage registers
- 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 > RSIZcommand supports a minimum of 25 to a maximum of 100MODE > RSZ?returns the current size of storage registers- size of the
RPN83REGappVar varies:- 500 bytes at RSIZ=25
- 1925 bytes at RSIZ=100
- support resizing the RPN stack size
MODE > SSIZcommand supports a minimum of 4 to a maximum of 8MODE > SSZ?returns the current size of stack- size of the
RPN83STKappVar 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
ENTERwithout
disabling the stack-lift) - already implemented in the code, just exposing the functionality
to the user
- lifts the stack by one, duplicating X (similar to
- button
2ND u- bound to the
RollUpfunctionality, same as the existingRollUp
soft menu item - becomes useful when the stack size
SSIZis greater than 4
- bound to the
- soft menu
- 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
- move RTC (hardware clock) menus and TZ config menus under new CLK
- 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)
- simplify DATE menu hierarchy
- STAT
- extract the 13 STAT registers (R11-R23) from regular storage registers
(appVarRPN83REG) into its own registers (appVarRPN83STA) - add
Σ(Sigma) menu folder containing variousΣXXXmenu items to
recall the 13 stat registers (essentially the same as the Plus42 app) - See USER_GUIDE_STAT.md
- extract the 13 STAT registers (R11-R23) from regular storage registers
- 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
LEFTandRIGHTarrow keys- support
2ND LEFT(beginning of line) and2ND 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
- support
- 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
- allows additional RpnObjects in the future without violating the
- update storage format of the TIOS appVars (RPN83SAV, RPN83STA,
RPN83STK, RPN83REG)- makes adding additional appVar types in the future easier
- encode RpnObject type field using 2 bytes instead of 1 byte
- Bug Fix More robust data validation for appVars
- add
schemaVersionfield for RpnElementList - add
rpnVarTypefield, to allow future appVar types - validate size of RpnElementList appVar has no extraneous bytes
- add
- Bug Fix Validate Duration objects entered through colon-modifier
syntax- prevents entry of things like
61:Sor25:H
- prevents entry of things like
- 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.
- If the floating point number is negative, the validation for
- Warning: Previously saved RPN stack and storage registers are
v0.11.0-dev - early preview release of v0.11.0 to show upcoming UI/UX changes
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
- 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 to0. - The previous code set the mantissa digits correctly, but incorrectly
set the exponent to$7For some other value depending on the
position of the decimal point relative to the0digits. - It made almost no difference because various floating point routines
seem to canonicalize the exponent to the correct$80before
continuing. - However, in an upcoming feature, the validation
CkPosInt()is called
before canonicalization can take place, theCkPosInt()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().
- The canonical internal representation of 0.0 in TI-OS has an exponent
- Bug Fix Validate data type for
STATfunctions- allow only Real numbers for
Sigma+andSigma-
- allow only Real numbers for
- Bug Fix Validate data type for
TVMfunctions- allow only Real numbers for TVM functions
- Bug Fix Validate data type for
%function- allow only Real numbers for
XandY
- allow only Real numbers for
- Bug Fix Validate data type when storing to
ANSupon app exit- allow only Real or Complex numbers to stored to
ANS
- allow only Real or Complex numbers to stored to
- Bug Fix Support real arguments for
CPLXmenu functions (REAL,
IMAG,CONJ,CABS,CANG)- fixes Issue#16
- 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
- works with TI-Nspire with the TI-84 keyboard emulates the Z80
- 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}, andRCL{op}to accept a
single-letter in addition to digits (e.g.STO ALPHA A,RCL+ ALPHA B)
- TI-OS supports 27 single-letter variables (A-Z, Theta) for real and
- Add
RNDF,RNDN,RNDGrounding functionsRNDF: round to current FIX/SCI/ENG digitsRNDN: round to user-specifiedNdigits (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:DomaintoErr:DataType
- when a function does not accept a complex number, an error message is
- Add
MODEoption to invert the behavior of,and2ND EEbutton- previously, both the
,button and2ND EEbutton 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
MODEmenu:,EEcauses the button to behave as labeled (default)EE,inverts the mapping, so that,invokes theEEfunction,
and2ND EEinvokes the,function
- allows the end user to select the most convenient behavior.
- previously, both the
- 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%
- Bug Fix Fix broken