Releases: bxparks/rpn83p
Releases · bxparks/rpn83p
0.7.0 - time value of money (TVM); multiple BASE word sizes
- 0.7.0 (2023-11-20)
STAT
- fix broken
Sigma+
andSigma-
whenY==0
- use alternate equation for
SLOP
(slope) which works when theY
data points are the same - fix "stack lift disable" feature of
Sigma+
andSigma-
which
probably got broken during an earlier refactoring - check for division by zero when calculating weighted mean
WMN
, and
show9.9999999999999E99
to indicate error, allowing weightedX (or
weightedY) to be evaluated even if the other is undefined
- fix broken
BASE
- implement
WSIZ
(set word size) restricted to 8, 16, 24, and 32
(inspired by HP-16C and Free42) - display appropriate number of digits for various
WSIZ
values, for
various base modes (HEX
,OCT
,BIN
) - display ellipsis character on left most digit in
BIN
mode if
the binary number cannot be fully displayed using 14 digits on the
screen - Breaking Change: change order of
BDIV
results inX
andY
registers- now
X=quotient=Y/X
andY=remainder=Y%X
- allows easier recovery of original
X
usingLastX
*
- now
- implement
MATH
: addLN1+
,E^X-
- implement
log(1+x)
ande^x-1
respectively - more accurate than their naive implementations when
x
is close to 0 - use mathematical identities involving hyperbolic
sinh()
and
asinh()
functions to avoid roundoff errors
- implement
TVM
- add TVM (time value of money) submenu hierarchy (inspired by HP-12C
and HP-30b) - implement relatively simple Newton-Secant root solver to calculate
theI%YR
from the other 4 TVM variables - significant performance and robustness improvements can probably be
made in the future
- add TVM (time value of money) submenu hierarchy (inspired by HP-12C
- add storage register arithmetic operations
STO+
,STO-
,STO*
,STO/
RCL+
,RCL-
,RCL*
,RCL/
- convert to multi-page flash application
- now consumes 2 flash pages (2 x 16 kiB)
CLEAR
multiple times to clear RPN stack- If
CLEAR
is pressed on an empty edit line (just a_
cursor), then
the message "CLEAR Again to Clear Stack" will be displayed. - If
CLEAR
is pressed again right after this message, the RPN stack is
cleared, invoking theROOT > CLR > CLST
menu function. - Provides a quick shortcut to the
CLST
function which can be
difficult to reach when the current menu item is deeply nested in
another part of the menu hierarchy. - The TI-OS does not support
2ND CLEAR
, it returns the same keycode as
CLEAR
. So invokingCLST
on multipleCLEAR
presses seemed like
the most reasonable workaround.
- If
- implement jumpBack for
MODE
button shortcut- When
ROOT > MODE
is reached through the hierchical menu, the
ON/EXIT/ESC
button goes back up the menu hierarchy to the parent,
theROOT
. - When
ROOT > MODE
is invoked through theMODE
button on the
keyboard, theON/EXIT/ESC
button jumps back to the previous menu
location, instead of going back up the menu tree. - This allows quick changes to the
FIX
,SCI
, andENG
display
modes, without losing one's place in the menu hierarchy.
- When
- fix incorrect handling of
DEL
after aFIX
,SCI
, orENG
mode- when the
DEL
(backspace) button is pressed after a 2-digit argument
of aFIX
(orSCI
etc), one of the digits of the 2-digit argument
remained in the input buffer - the fix now correctly clears the input buffer when transitioning into
edit mode from a normal mode
- when the
- Potential Breaking Change:
STO
,RCL
,FIX
,SCI
,ENG
argument
prompt is no longer saved and restored on QUIT or OFF- a new Command Arg parser was required to support storage register
arithmetics - it uses a secondary
GetKey()
parsing loop which implements its own
2ND QUIT
and2ND OFF
handlers - the state of the secondary
GetKey()
parsing loop is not saved and
restored
- a new Command Arg parser was required to support storage register
0.6.0 - save and restore app state; add carry flag; add BASE ops from HP-16C
- 0.6.0 (2023-09-22)
- save application state
- preserve app state into an appvar named
RPN83SAV
upon exit - reconstruct the app state upon restart
- preserve app state into an appvar named
- save
X
register to TI-OSANS
only on2ND QUIT
or2ND OFF
- previously saved to
ANS
every timeX
was changed - no user-visible change, but is more efficient internally
- previously saved to
- rename
P>R
to>REC
, andR>P
to>POL
- for consistency with other conversion functions, and for consistency
with HP-42S - I prefer the
P>R
andR>P
but the difference is not worth breaking
consistency
- for consistency with other conversion functions, and for consistency
- support custom MenuGroup handlers
- absorb
changeMenuGroup()
functionality into thedispatchMenuNode()
- add onExit events into
changeMenuGroup()
- add custom
mBaseHandler
forBASE
menu to activate or deactivate
thebaseNumber
upon entering or leaving theBASE
menu hierarchy
- absorb
BASE
mode- make all
BASE
operations useu32
integers, evenDEC
mode - add Carry Flag which is updated for arithmetic, shifting, rotating
operations- add
SCF
(set carry flag),CCF
(clear carry flag),CF?
(get
carry flag) - add
C
or-
display indicator
- add
- remove base number indicator (
DEC
,HEX
,OCT
,BIN
) from the
status line (top line)- no longer needed since those menu items show a "dot" when selected
- the base number is only relevant within the
BASE
menu hierarchy
- add
ASL
(arithmetic shift left),RLC
(rotate left through carry
flag),RRC
(rotate right through carry flag) - add
SLn
,SRn
,RLn
,RRn
,RLCn
,RRCn
(shift or rotateY
forX
times) - add
CB
(clear bit),SB
(set bit),B?
(get bit) - add
REVB
(reverse bits),CNTB
(count bits)
- make all
- add additional HELP pages
- CFIT Models
- BASE Ops
- save application state
0.5 - statistics and curve fit; menu selector dots
- 0.5.0 (2023-08-31)
USER_GUIDE.md
,README.md
- Update "Menu Indicator Arrows" section with latest screenshots which
changed the menu arrows. - rename 'Menu Strip' to 'Menu Row' for consistency with HP-42S
terminology.
- Update "Menu Indicator Arrows" section with latest screenshots which
BASE
- display just a bare
-
for negatives numbers inBASE
modes (instead
of...
which is now reserved for valid numbers which overflows the
number of digits supported by the display) - validate that the
X
andY
values are in the range of[0, 2^32)
when performing bitwise operations (e.g.B+
,AND
,XOR
, etc).
Floating point numbers are truncated tou32
integers before the
bitwise operations are performed.
- display just a bare
- Add menu selector dots
- Replicate HP-42S menu selector dots, where a menu item can be both an
action (e.g. selectDEG
) and a selection indicator. - display modes:
FIX
,SCI
,ENG
- trig modes:
RAD
,DEG
- base modes:
DEC
,HEX
,OCT
,BIN
- Replicate HP-42S menu selector dots, where a menu item can be both an
- Improve menu name centering algorithm.
- No change for strings which are even-number of pixels wide.
- Strings which are odd-number of pixels wide are now centered
perfectly, instead of being off-centered by one-px to the left. - Allows strings which are 17px wide to be rendered properly.
- Add
STAT
menu items- 1 or 2 variable statistics
Sigma+
(add data point),Sigma-
(remove data point)SUM
,MEAN
,WMN
(weighted mean)SDEV
(sample standard deviation),SCOV
(sample covariance)PDEV
(population standard deviation),PCOV
(population covariance)
- Add
CFIT
curve fit menu itemsY>X
(forcast X from Y)X>Y
(forcast Y from X)SLOP
(least square fit slope)YINT
(least square fit y-intercept)CORR
(correlation coefficient)LINF
(linear curve fit model)LOGF
(logarithmic curve fit model)EXPF
(exponential curve fit model)PWRF
(power curve fit model)BEST
(choose best curve fit model)
- Fix RPN stack lift logic for pending input
- Simplify stack lift logic to handle empty and non-empty pending input
consistently. - If the input buffer is empty (showing just a
_
cursor), then any
subsequent keystroke that generates a single value (e.g.PI
or
STAT:N
) replaces the emptyX
register. - If the input buffer is pending but not empty (i.e. has digits with a
trailing_
cursor), then subsequent keystrokes causes a stack lift,
preserving the pending input into theY
register. - If the subsequent keystroke is a function that consumes an
X
register, then the empty input buffer is assumed to be a0
value.
- Simplify stack lift logic to handle empty and non-empty pending input
- Allow data transfer between RPN83P and TI-OS through the
ANS
variable.- When the RPN83P app starts, the TI-OS
ANS
variable (if Real) is
available as theLastX
register. - When the RPN83P app exits, the most recent
X
register becomes
avaiable in TI-OS as theANS
variable.
- When the RPN83P app starts, the TI-OS
- Add
X Root Y
menu item underMATH
0.4 - more BASE function; improve speed of PRIM by 7x
- 0.4.0 (2023-08-16)
- More
BASE
menu functions:SL
(shift left),SR
(shift right),
RL(rotate left circular),
RR` (rotate right circular).B+
,B-
,B*
,B/
BDIV
(division with remainder)
- Map
+
,-
,*
, and/
buttons to their bitwise counterparts when in
HEX
,OCT
, orBIN
modes.- Too confusing to have floating point operations bound to the
easy-to-reach buttons while in HEX, OCT or BIN modes. - This is consistent with the HP-42S.
- Too confusing to have floating point operations bound to the
PRIM
(isPrime)- change result values:
- 1 if the number is a prime, or
- smallest prime factor (always greater than 1) if not prime.
- preserve the original
X
, and push it up toY
- allows the
/
button to be chained with additionalPRIM
to
calculate all prime factors - see Prime Factors for details
- allows the
- improve speed by 7X using u32 integer routines instead of floating
point routines
- change result values:
- More
0.3.3 - use pandoc to convert markdown to PDF files
- 0.3.3 (2023-08-14)
- Add
Makefile
targets for converting GitHub markdown files to PDF files. - Update some sections in
README.md
andUSER_GUIDE.md
. - No code change.
- Add
0.3.2 - add executive summary in README.md
- 0.3.2 (2023-08-13)
- Add executive summary of the app at the top of README.md.
- No code change.
0.3.1 - add animated GIFs of Examples 1 and 2
- 0.3.1 (2023-08-13)
- Add animated GIF to illustrate Examples 1 and 2 in README.md.
- No code change.
0.3 - rearrange some menu items for usability
- 0.3 (2023-08-13)
- Move
CLRG
from F1 position to F3. MoveCLX
to F1. If the F1
is accidentally hit twice when selecting theCLR
menu group, then
invokingCLX
is a lot less destructive than invokingCLRG
. - Move
IP,FP,...
menu strips before theABS,SIGN,...
menu strip. The
IP,FP
functions seem more frequently used than theABS,SIGN
functions.
- Move
Full Changelog: v0.2.1...v0.3
0.2.1 - update README.md, no code change
- 0.2.1 (2023-08-13)
- Update README.md. Test minor version number with new release.
- No code change.
Full Changelog: v0.2...v0.2.1
0.2 - update installation instructions to reference GitHub releases
- 0.2 (2023-08-13)
- Update downloading and installation instructions.