Releases: bxparks/rpn83p
Releases · bxparks/rpn83p
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
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)
- if the cursor is at the beginning or the end of the input buffer,
- Variables
- print 'Err: Archived' error message if
STO
orRCL
acts 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
PRIM
by 2.4X- convert
modOP1ByBC()
to use theIX
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 ofD
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 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
CLD
command 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
, andTMAX
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 like2ND P/YR
- setting
P/YR
also setsC/YR
(consistent with the behavior of
the "Finance" app in TI-OS - setting
C/YR
does not changeP/YR
(same as "Finance" app)
- uses the same variable as the
- add a dot to
P/YR
andC/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
at100%
- keep default value of
- synchronize the
BEG
/END
flag 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
, andTMAX
menu 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/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 like2ND P/YR
- setting
P/YR
also setsC/YR
(consistent with the behavior of
the "Finance" app in TI-OS - setting
C/YR
does not changeP/YR
(same as "Finance" app)
- uses the same variable as the
- add a dot to
P/YR
andC/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
at100%
- keep default value of
- synchronize the
BEG
/END
flag 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 > RSIZ
command supports a minimum of 25 to a maximum of 100MODE > 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 8MODE > 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
- lifts the stack by one, duplicating X (similar to
- button
2ND u
- bound to the
RollUp
functionality, same as the existingRollUp
soft menu item - becomes useful when the stack size
SSIZ
is 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ΣXXX
menu 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
LEFT
andRIGHT
arrow 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
schemaVersion
field for RpnElementList - add
rpnVarType
field, 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:S
or25: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$7F
or some other value depending on the
position of the decimal point relative to the0
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, 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
STAT
functions- allow only Real numbers for
Sigma+
andSigma-
- allow only Real numbers for
- 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
andY
- allow only Real numbers for
- Bug Fix Validate data type when storing to
ANS
upon 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
CPLX
menu 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
,RNDG
rounding functionsRNDF
: round to current FIX/SCI/ENG digitsRNDN
: round to user-specifiedN
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
toErr:DataType
- when a function does not accept a complex number, an error message is
- Add
MODE
option to invert the behavior of,
and2ND EE
button- previously, both the
,
button and2ND 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 theEE
function,
and2ND EE
invokes 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
0.9.0 - complex numbers
- 0.9.0 (2024-01-06)
- Breaking: Change names and internal formats of various appVars
STK
list variable replaced withRPN83STK
REGS
list variable replaced withRPN83REG
RPN83SAV
remains unchanged- the old
STK
andREGS
variables can be manually removed - see TI-OS Interaction for more
details
- Breaking: Add
CPLX
menu at the previous location ofCONV
CPLX
menu seemed most convenient on row 1 of theROOT
menu where
the oldCONV
was locatedCONV
got pushed to row 2, where theUNIT
menu was previously
locatedUNIT
got pushed to row 3, into an empty slot- the RPN83P home menu row now has exactly the same items as the
MATH
menu on the TI-OS:- RPN83P:
MATH
,NUM
,PROB
,CPLX
- TI-OS:
MATH
,NUM
,CPX
,PROB
- RPN83P:
- Support more than 14 digits during edit/input
- When more than 14 digits are entered, the left most digits scroll off
to the left, with the left most digit replaced with an ellipsis
character indicates existence of extra digits. - Normal mode:
- accepts maximum of 20 digits, which supports entering all 14
digits encoded by the TI-OS floating point number format
- accepts maximum of 20 digits, which supports entering all 14
- Complex mode:
- accepts maximum of 41 digits to allow 2 floating point numbers
BASE BIN
mode- accepts up to 32 digits, to allow a 32-bit binary number when the
WSIZ
is 32.
- accepts up to 32 digits, to allow a 32-bit binary number when the
- see Input Limits and Long
Numbers for more
details
- When more than 14 digits are entered, the left most digits scroll off
PROB
- Expand range of
COMB(n,r)
andPERM(n,r)
arguments ton,r<=65535
fromn,r<=255
. - Improve performance of
COMB(n,r)
whenr>(n-r)
by taking advantage
of the symmetry ofCOMB(n,r)==COMB(n,n-r)
. - Eliminate floating point round-off errors in computing
COMB(n,r)
by
incrementing the divisor from 1 tor
, instead of decrementing it
fromr
to 1.
- Expand range of
- Complex Numbers
- redesign RPN stack and storage registers to support both real and
complex numbers - extend arithmetic, algebraic, transcendental handlers to support
complex numbers - add explicit CPLX menu group with: REAL, IMAG, CONJ, CABS, CANG
- support RRES (real result) and CRES (complex result) menu settings
- support RECT (rectangular), PRAD (polar radian), PDEG (polar degree)
menu settings - display complex numbers in RPN stack in rect and polar modes
- support complex numbers in SHOW in rect and polar modes
- support Linking/Unlinking a complex number and its 2 real components
using 2ND LINK (equivalent to COMPLEX button on the HP-42S) - support entry of complex numbers on a single line in RECT, PRAD, and
PDEG modes using the2ND i
and2ND ANGLE
keys. - see Complex Numbers for more
details.
- redesign RPN stack and storage registers to support both real and
- Save and restore app MODE settings independently from the TI-OS settings
- decouple the TI-OS MODE settings from the RPN83P MODE settings
- the TI-OS MODE settings are saved upon app start, and restored upon
app exit - the app MODE settings are saved and restore independently
- for example, it is now possible to set the TI-OS to FIX(2) and DEG,
while setting RPN83P to SCI(4) and RAD and the 2 settings are managed
separately, even though there is only a single set of global OS
settings
- Bug Fix: Render 3-digit EE exponents correctly in
SHOW
mode.- 3-digit exponents can only be shown for complex numbers, so the bug
was latent until complex numbers were added
- 3-digit exponents can only be shown for complex numbers, so the bug
- Bug Fix: Fix overflow in rectangular to polar conversion
>POL
- the built-in TI-OS
RToP()
function has a bug which throws an
exception whenx^2+y^2
becomes>=1e100
, which can happen forx
ory
as low as7.07e49
. - reimplement using a custom
rectToPolar()
without the scaling bug
- the built-in TI-OS
- Breaking: Change names and internal formats of various appVars
0.8.0 - increase performance by 2.5X on 83+SE/84+/84+SE; add SHOW command
- 0.8.0 (2023-12-03)
- Breaking: Flip the order of polar-rectangular conversion menu function
(>POL
and>REC
) so that they are consistent with the HP-42S. I don't
know why I had them reversed.Y
register holds they
ortheta
value, entered first, andX
register holds thex
orr
value, entered second.
- Breaking: Flip the order of
(X, Y)
coordinates of theATN2
menu
function, so that they are consistent with the>POL
function.Y
register holds they
value, which is entered first, thenX
register holds thex
value, which is entered second.
- Breaking: Change
WSIZ
to prompt the user for the base word size
usingWSIZ _ _
prompt, instead of using the value in theX
register.- Solves a major usability problem where the user was forced to enter
the word size using the currently selected base mode (e.g.HEX
or
BIN
). For example, the word size16
was required to be entered as
10000
inBIN
mode, which was too confusing. - See Base Word Size for more details.
- Solves a major usability problem where the user was forced to enter
- Bug Fix: Tweak the stack-lift logic so that certain operations
(RollDown, RollUp, X<>Y) enable stack lift even if the previous command
was aCLEAR
orCLX
.- The
rpnFlagsLiftEnabled
was not set properly for RollDown, RollUp,
X<>Y and potentially other commands. - So a
CLEAR RollDown RollDown RollDown RollDown
followed by a number
would overwrite theX
register, instead of doing a stack lift.
- The
- Increase execution speed by 2.5X on 83+SE, 84+, 84+SE
- set CPU speed to 15 MHz when supported by hardware
- remain at 6 MHz on the 83+
SHOW
display mode- implement "Show" function using
2ND
ENTRY
on TI keyboard - displays all 14 internal digits of the TI-OS floating point number
- if integer < 10^14: display as integer
- otherwise: display in scientific notation
BASE
mode variationBIN
mode: displayWSIZ
digits in groups of 4, using up to 4
display lines- all other
BASE
modes: display underlying floating point number
- see SHOW Mode for details
- implement "Show" function using
BASE
input limit- limit the number of digits that can be entered in
BASE
mode to a
maximum that is appropriate for the selectedWSIZ
and the baseNumber
selected byHEX
,DEC
,OCT
andBIN
- for example, selecting
HEX
andWSIZ
16 will allow only 4 hex
digits to be entered - see Base Input Digit Limit for
details
- limit the number of digits that can be entered in
- HELP pages
- Add page for
CONV
functions to show order of (x, y, r, theta)
variables on RPN stack - Add page for
STAT
functions - Add page for
NUM
functions - Add page for various display MODEs
- Add page for
- Breaking: Flip the order of polar-rectangular conversion menu function