Now pre-populating state name for States -> More -> Rename.
Implemented GETKEYA. This works like GETKEY, except that it will not wait for a keystroke if no keystrokes are in the keyboard queue, returning 0 instead in that case.
Fixed crash with relative file imports.
Fixed crash for certain unrecognized key codes from Bluetooth keyboards.
Now recognizing comment delimiters '@' and ';' for program pasting.
More accurate complex ASIN/ASINH.
Direct command mapping now supports alternate mappings for ALPHA mode.
Fixed file access for Android >= 11.
CSLD? did not handle intervening XEQ/RTN. Fixed.
FUNC did not detect previous FUNC/LNSTK/L4STK. Fixed.
INPUT would crash if R/S was pressed while the stack was empty, in NSTK mode. Fixed.
ANUM would consider a decimal point or comma by itself as zero, instead of ignoring it. Fixed.
EDIT, EDITN, and INDEX didn't clear flags 76 and 77 (matrix edge wrap and end wrap), while they should. Fixed.
Decimal version: In HMS+ and HMS-, fixed handling of cases where either or both of the arguments has a number of minutes or seconds >= 60. (The binary version did not have this bug.)
Changed Σ+/Σ- so that, in NSTK mode, they will accept a single real argument, assuming Y=0 in that case.
Tuned TONE frequencies to A440 scale.
Fixed crash in RTNERR when switching back to NSTK mode after FUNC/L4STK.
Fixed ASSIGN "" in programs.
Added PRREG to the PRINT menu.
NN→S now ignores the display mode and always acts like ALL mode is active. The idea being that if you care about the display mode, you'll probably be using N→S, and you only need NN→S if you specifically want to see full internal precision.
Fixed a couple of bugs in Paste of scalars in BINM, OCTM, and HEXM modes.
Fixed pasting of U+22A2 and U+22A6 ('append' characters used by i41CX and Emu42).
Fixed (re,im) complex pasting. This was broken by localized copy & paste.
Special cases for pure real and pure imaginary in SQRT.
Fixed handling of invalid number keys in BINM and OCTM modes.
Added →LIST, LIST→, SKIP, CPXMAT?, and TYPE? functions, and changed the name of PRMVAR to PGMVAR. See the Free42 web site for details.
INPUT caused incorrect printer output in NORM and TRACE modes. Fixed.
Escape sequences for undefined characters in Copy and Paste and printer output.
When the Y register contains a string or list, in RUN mode, the + key now performs APPEND.
Fixed handling of single-character strings in programs. This was broken in the previous release.
Release 3.0.8:
Auto-repeat for XSTR, and ALPHA arguments in general.
Fixed blurry print-out on certain devices.
Bug fixes.
Auto-repeat for XSTR, and ALPHA arguments in general.
Android version: Fixed blurry print-out on certain devices.
Bug fixes.
A2LINE now handles strings that start with characters 127-255 better. Also, added A2+LINE function for generating appended strings.
More accurate complex TAN and TANH.
RND did not handle large numbers correctly, failing to round off as many digits as necessary in certain cases. Fixed.
Σ+ and Σ- always wanted two arguments, even in NSTK mode, when X contained a real matrix. Fixed.
Copy and Paste now handle list objects.
Added string and list functions. See the Free42 web site for details.
Added lowercase letters to the menu font.
L4STK could crash, due to an incorrect LNSTK fix in 3.0.2. Fixed.
Fixed a couple of skin macro bugs: Failure to start program execution when EXIT was pressed during VARMNU1, and UI freeze when starting program execution in some cases.
Fixed bug that could cause incorrect results in complex INVRT, DET, and matrix division.
FUNC and RTN now save and restore ERRMSG and ERRNO along with flag 25.
Added RCOMPLX and PCOMPLX functions. These work like COMPLEX, except they always work in rectangular or polar, respectively, ignoring flag 73.
MENU and VARMNU1 tweaks: Cancel MENU, and cancel EXIT trapping in VARMNU1, when the RTN stack is cleared.
Paste fixes: Clear leftover messages; set flags 22 or 23 when appropriate.
Implemented VARMNU1: Improved VARMENU, with immediate variable selection and EXIT trapping.
Implemented X2LINE and A2LINE: Insert contents of X or ALPHA into a program.
INDEX or EDITN on a local matrix now preserve IJ if a matrix was already indexed.
RTNERR now accepts string arguments, so arbitrary error messages can be raised.
Implemented ERRNO and ERRMSG: Return the error number or message, for the last error caught by flag 25.
Implemented XSTR: Create string directly in the X register.
Fixed pasting of zero. This was broken in 2.5.21.
Fixed screen rotation issue with Android 11.
Implemented support for user-defined function semantics: stack preservation, RTN with skip, RTN with error. See the Free42 web site for details.
Better handling of number lines: the visual difference between equivalent representations of a number is now preserved, so 1000 stays 1000 and is not turned into 1E3, for example.
Implemented FMA (Fused Multiply-Add).
In programs, now handles pasting FIX/SCI/ENG with 1-digit argument, for HP-41 compatibility.
2.5.22a:
Fixed crash on certain older devices.
2.5.22:
Pre-populating file names in file selection dialogs now.
Implemented LASTO. This is related to LSTO like ASTO is related to STO.
Implemented No-Operation (NOP) function.
GETKEY didn't halt on Shift-EXIT. Fixed.
Implemented GETKEY1 function. This works like the regular GETKEY, except it only halts on R/S.
STOFLAG didn't update the G and RAD annunciators when flags 42 or 43 were changed. Fixed.
Implemented range option for STOFLAG.
Implemented ANUM, X<>F, RCLFLAG, and STOFLAG functions. See the Free42 web site for details.
Implemented "stack trace" mode when flags 15 and 16 are both set.
Pasting long numbers could return incorrect results if many leading zeroes were present. Fixed.
Real/complex and complex/complex division could return Not a Number for certain inputs. Fixed. Also applied a similar fix to complex 1/X.
Complex matrix division, INVRT, and DET would return incorrect results for large matrices. Fixed.
Fixed INTEG behavior when integrand returns non-real.
Fixed DATE+, DDAYS, and DOW when flags 31 and 67 are both set.
Fixed garbage in SHOW when BIN overflows to HEX.
During TRACE, print blank line before LBL, like the HP-41.
When ISG reached zero, the loop control variable would end up having the wrong sign. Fixed.
Added [FIND], [MAX], and [MIN] to the FCN catalog.
Fixed spurious Out of Range in COMB.
ISG and DSE with a named variable would crash if that variable did not exist. Fixed.
Fixed stack lift behavior with GETKEY.
Fixed pasting of 1/X and 10^X without line number.
Updated HEADING implementation so it works on phones that no longer provide the old compass API.
Temporarily removing the n-key rollover and swipe-to-switch that were introduced in the previous release; 2.5.17a suffers from missed keystrokes, apparently caused by the new logic. The features will be restored once the keyboard problem has been diagnosed and fixed.
Fixed GETKEY behavior with skins that use direct command mapping.
During number entry, if you backspaced over a negative number until only the minus sign remained, that minus would not be parsed correctly, and you could get . For example, 1 +/- <- ENTER.
The index range check in R<>R was faulty, allowing a row index equal to the number of rows + 1 to be used, which in turn would cause memory corruption. Fixed.
When renaming the currently active state, the state name was not updated in memory, with the result that upon exit, the state would still be saved under the old name, and at the next launch, would also be loaded under the old name. The net effect of all this was that instead of ending up with a renamed state, you'd end up with a copy.
App could launch with the wrong screen orientation under certain circumstances. Fixed.
SOLVE would not always return the best function value in Z, or the second-best guess in Y. Fixed.
Changed haptic feedback preference setting to a four-level slider, to allow stronger feedback.
Reduced the GPS update interval for LOCAT from 60 seconds to 5 seconds.
Sharing an empty print-out would crash. Fixed; now it pops up a message instead.
Fixed crashes when importing state files from email attachments.
Added state file manager, for loading, saving, and switching between, calculator states. The state files are in a platform-neutral format, so they can be exchanged between Free42 instances running on different devices.
Fixed crash in RTN when a local variable was hiding the indexed matrix.
Added "share" option for Print-Out view.
Added "share" option for programs in raw format.
When loading a skin in the skin browser, it now forces an un-cached load, so skin fixes can actually be loaded by users without delay, and without having to resort to side-loading.
Changed default landscape skin, from desktop/42ct to android/SGS-L. The old skin had keys below the display that didn't line up with the menus; you really have to have Σ+ 1/x √x LOG LN XEQ below the display for a consistent user interface.
2.3.1a: Changed compiler settings to prevent it from generating Neon instructions, which are incompatible with some devices, causing the app to crash.
Added Load Skins feature, for downloading and installing skins from the Internet.
Added Delete Skins feature.
Added Paper Advance for Print-Out window.
Added Copy for Print-Out window.
Added Load Skins feature, for downloading and installing skins from the Internet. (You may notice Android asking you to grant Internet access to Free42; this feature is the reason. Note that Free42 does not access the Internet for any reason other than loading skins.)
Added Delete Skins feature.
Added Paper Advance for Print-Out window.
Added Copy for Print-Out window.
Made the app explicitly single-instance (by adding launchMode="singleInstance" to Free42Activity in the app manifest). This should eliminate the remaining null-pointer crashes in the native code, and also prevent State File Corrupt scenarios.
Fixed crash when calling ON or OFF from a program.
Fixed a bug that could leave a corrupted state file under certain circumstances.
SOLVE now tries harder when secant extrapolation gets stuck due to the secant being excessively steep.
0^0 now returns Invalid Data, not 1, for all combinations of real and complex arguments. The rationale for returning 1 was mathematically questionable, and Invalid Data is what the real HP-42S returns.
New Main Menu. This should be compatible with all Android versions, including Amazon Fire HD tablets and other devices that sabotaged the old menu after it started targeting Android 8.
Added code to request storage and GPS access when needed (external skins, program loading and saving, printing to files, LOCAT function).
Fixed complex SQRT so it returns exact results when Re(x) = 0 and Im(x)/2 is a perfect square.
VARMENU would step through rows of multi-line menus in the wrong order. (You needed a function with 13 or more MVARs to notice this.) Fixed.
When printing to GIF, changing the filename did not cause the GIF numbering sequence to restart at 1. Fixed.
When printing to GIF, output files are now flushed and closed immediately when they reach their maximum height.
MATA, MATB, and MATX should exhibit the same stack lift behavior as EDIT and EDITN, but didn't. Fixed.
Inserting or deleting an END would not always clear cached local GTO or XEQ targets, potentially causing local GTO or XEQ commands to jump to the wrong locations. Fixed, and also added code to repair such damage in existing state files.
0 SEED initialized the random seed incorrectly, wasting one digit of randomness. Fixed.When importing raw files, E and -E are now recognized as 1 and -1, for compatibility with HP-41 raw files with synthetic numbers.When importing raw files, synthetic instructions are now handled more like the real HP-42S handles them. Arguments 112-116 are always stack registers, even when that makes no sense; 102-111 and 123-127 are only considered as A-J and a-e in LBL, GTO, and XEQ.
POSA would not find the search string if its only occurrence was at the very end of the alpha register. Fixed.Tweaked handling of low-battery indicator.
In Export Programs, removed the hard-coded buffer size for the list of programs, so you should now see all your programs in the list, no matter how many there are.When Pasting complex numbers in a+bi notation, the imaginary unit must now be either i or j; the alternative spellings I and J are no longer recognized.
Paste didn't handle numbers with negative exponents correctly. Fixed.
Another fix for crash on orientation change while printing.
Copy now ignores flag 29 (thousands separators) and always copies numbers without separators. This fixes certain surprising / undesirable behaviors when pasting numbers into spreadsheets or programs.When entering a program line in NORM or TRACE modes, the line would be printed, even when printing was disabled. Fixed.MATA and MATB, in the SIMQ menu, would crash if the MATA or MATB variables were missing. Fixed.Fixed UI freeze during large-volume printing.
Program Paste no longer requires line numbers. (This had a bug in 2.0.9.)CUSTOM command no longer turns off the CUSTOM menu.DIM?, EDIT, and EDITN didn't print X in TRACE mode. Fixed.Selecting the already-active menu now forces repaint, removing messages.Made the print annunciator linger for one second after printing stops. This makes it more noticeable, so printing is less likely to go unnoticed on fast devices.
MENU (activating the programmable menu) while in ALPHA mode didn't turn off the alpha_mode flag, leading to bad behavior or even crashes if any menu keys were subsequently pressed.
The "Always Paint Entire Display" setting, introduced in the previous version, didn't stick after app restart. Fixed.
Added "Always Paint Entire Display" option. This prevents display glitches with certain combinations of devices and skins.
Changed the RAN and SEED functions to match the behavior of the real HP-42S. The previous implementation used the algorithm from the HP-41C Standard Pac, which produced numbers with only 6 significant digits.The up/down annunciator (multi-row menu) did not get updated correctly when VARMENU was activated, including in the solver and integrator. Fixed.The menu icons for Copy, Paste, and Print-Out were displayed too large, overlapping the menu item labels on some devices. Fixed.
Fixed ISG and DSE for values >= 2^63 (9.2e18).Fixed a couple of bugs in how changes to internal SOLVE and INTEG data structures are handled.
Fixed INTEG termination condition. It would return inaccurate results in certain cases.Fixed importing numbers with exponent but no mantissa, e.g. E3, -E-5, etc. This got broken in 1.5.Fixed crash when trying to allocate ridiculously large matrices.While entering a numeric argument, the up-arrow and down-arrow keys would perform BST and SST, which should be blocked. Fixed.Testing flag 75 would turn on the programmable menu. Fixed.
2.0.4Implemented special-case code for pure real and pure imaginary numbers in all the complex logarithmic, trigonometric, and hyperbolic functions.2.0.3Fixed a few edge cases in complex functions.On cold start, now clearing flags 21 (printer enable) and 55 (printer existence), to match the behavior of the real HP-42S.Removed "raw text" print option; it has been obsolete since the introduction of UTF-8 printing in 1.5.11, since Unicode can represent the HP-42S character set directly.[...]