Free42 Changelog

What's new in Free42 3.1.8

Apr 24, 2024
  • Fixed ALPHA pasting during command entry.

New in Free42 3.1.7 (Mar 31, 2024)

  • Now recognizing comment delimiters '@' and ';' for program pasting.
  • More accurate complex ASIN/ASINH.

New in Free42 3.1.6 (Mar 27, 2024)

  • Accuracy improvements for C.LN1+X, and complex LN, ATAN, and ATANH.

New in Free42 3.1.5b (Mar 25, 2024)

  • Windows version: Fixed display flicker using buffered painting.

New in Free42 3.1.5a (Mar 22, 2024)

  • Reduced display blurriness when the main window is resized.

New in Free42 3.1.5 (Mar 7, 2024)

  • Direct command mapping now supports alternate mappings for ALPHA mode.
  • Windows version: Fixed a couple of display glitches.

New in Free42 3.1.4 (Feb 9, 2024)

  • Keyboard mapping fixes.
  • Android version: Support for external keyboards.
  • Linux version: Changed ALSA device from "plughw:0,0" to "default".

New in Free42 3.1.3 (Jan 17, 2024)

  • Added C.LN1+X and C.E^X-1 functions. These are complex-capable versions of LN1+X and E^X-1.
  • Fixed pasting of strings that start with E.
  • Binary version: When converting binary to decimal, only use 17 digits when actually needed. This prevents 0.1 from turning into 1.0000000000000001e-1, for example.
  • IOS version: Support for external keyboards.

New in Free42 3.1.2 (Dec 1, 2023)

  • CSLD? did not handle intervening XEQ/RTN. Fixed.
  • FUNC did not detect previous FUNC/LNSTK/L4STK. Fixed.

New in Free42 3.1.1 (Nov 29, 2023)

  • In the matrix / list editor (EDIT and EDITN), GOTO would prompt for a column even when editing a list, and any column number other than 1 would cause an error. Lists are one-dimensional, so the user should only be asked for a row.

New in Free42 3.1.0 (Nov 15, 2023)

  • EDIT, EDITN, and INDEX now support editing lists, nested lists, empty lists, and matrices within lists. See the Free42 web site for details.
  • FUNC now hides the caller's RPN stack, so user-defined functions can use functions like CLST and R↓ without causing side effects.
  • User-defined functions can now be made to support 'stack lift disable' properly. For functions using FUNC, this happens automatically, and other functions can use the new CSLD? function (Caller's Stack Lift Disabled?).
  • FNRM and UVEC, when called with very large parameters, could get incorrect results due to overflows in intermediaries. Fixed.
  • Fixed parameter bounds check in PIXEL.
  • Windows, MacOS, and Linux versions: Keyboard maps now support separate mappings for unshifted and shifted numeric keypad keys, and unshifted and shifted Space.

New in Free42 3.0.21 (Aug 11, 2023)

  • 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.)
  • Binary version: max digits for SHOW increased to 17. This was necessary
  • because 16 digits was actually never enough to begin with. For example, 5 1/X
  • and 5 SQRT X^2 1/X both returned a result that looked like 0.2 in SHOW, even
  • though they are different, as can be easily verified with X=Y? or by
  • subtracting them. It takes 17 decimal digits to ensure that different binary
  • numbers will always be rendered as different decimal numbers.

New in Free42 3.0.20 (Apr 19, 2023)

  • 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.

New in Free42 3.0.19a (Apr 11, 2023)

  • Copy in PRGM mode was dropping line 01, because of an optimizer bug in the latest compiler. Reduced optimization level from -Os to -O1 to work around this problem.

New in Free42 3.0.19 (Apr 6, 2023)

  • 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.

New in Free42 3.0.18 (Mar 18, 2023)

  • EDIT, EDITN, and INDEX now support lists, acting like they are 1-column
  • matrices. (Empty lists are not supported, they must have at least one
  • element. This limitation will be removed in a future release. Note that you
  • can create a new 1-element list by simply doing NEWLIST 0 +.)
  • This includes STOIJ, RCLIJ, STOEL, RCLEL, I+, I-, J+, J-, ←, ↑, ↓, →, INSR,
  • DELR, and DIM.
  • Added PRREG. Because PRV "REGS" is not a good substitute.
  • Added NN→S. This works like N→S (convert number to string on the stack), but
  • without the 12-digit mantissa length limit, so you get full precision in ALL
  • mode.
  • Fixed stack lift handling in DELR and STOFLAG.
  • Fixed pasting 1/X, 10^X, and 4STK, when pasted without line number and with
  • trailing space.

New in Free42 3.0.17 (Dec 14, 2022)

  • 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).

New in Free42 3.0.16 (Oct 30, 2022)

  • SOLVE does a better job of reporting Sign Reversal when a function changes
  • sign around a vertical asymptote, instead of reporting it as a root.
  • BASE: complex numbers displayed in non-decimal bases in some cases.
  • Better OCTM handling in SHOW.
  • Fixed number entry in PRGM mode when BINM/OCTM/HEXM active.
  • No longer setting flag 22 if number entry ends with DROP in NSTK mode.
  • Added WIDTH and HEIGHT to CATALOG->MISC; moved A...F from CATALOG->MISC to
  • CATALOG->BASE.

New in Free42 3.0.15 (Oct 2, 2022)

  • Fixed crash in SHOW for certain complex numbers.
  • Added A...F function. This allows programs to turn on HEXM mode with the
  • A...F menu activated.
  • IOS version: Added Calculator / Print-Out swipe direction configuration
  • option to Preferences.
  • Android, iOS, and MacOS versions: Fixed incorrect Out of Range error returned
  • by BASE functions in certain cases, e.g. BRESET 64 WSIZE 1 ENTER BASE÷
  • The problem is caused by an optimizer bug in the ARM compiler, and does not
  • affect the Windows and Linux versions, nor the MacOS version on Intel.

New in Free42 3.0.14 (Aug 14, 2022)

  • Fixed (re,im) complex pasting. This was broken by localized copy & paste.
  • Special cases for pure real and pure imaginary in SQRT.

New in Free42 3.0.13 (Jun 16, 2022)

  • Fixed handling of invalid number keys in BINM and OCTM modes.
  • Windows and Linux versions: Fixed handling of non-ASCII separator characters.

New in Free42 3.0.12 (Jun 14, 2022)

  • Localized Copy & Paste.
  • More accurate complex ACOS and ACOSH.
  • SOLVE now handles functions that are always positive or always negative a bit
  • better, reporting Extremum when the iteration appears to be bouncing around
  • without improving, instead of continuing indefinitely.
  • Added XVIEW function. This works like AVIEW, except it takes the string from
  • the X register instead of ALPHA, so it avoids the 44-character length limit.
  • Android version: Now removes itself from the task list if exited using OFF.

New in Free42 3.0.11 (May 1, 2022)

  • Implemented LCLV: CLV for local variables only. The regular CLV now works on global variables only.
  • RND in ALL mode now rounds like in SCI 11, instead of doing nothing.
  • HEAD, when applied to a string in a numbered register, would corrupt the string if it was 16 characters long before the call (8 characters in the binary version). Fixed.
  • Y^X accuracy improvements with integer X.
  • Fixed DUPN 2 in 4STK mode. It used to duplicate X into T and Y into Z. DUPN in NSTK mode was not affected by this bug.
  • Added WIDTH and HEIGHT functions. These always return 131 and 16, respectively; this may not seem very useful, but can be used in programs that are meant to work in both Free42 and Plus42, to allow them to take advantage of the larger display when running in Plus42.
  • L4STK didn't pad the stack to 4 levels when used without FUNC. Fixed.
  • Binary version: ROTXY and DATE+ rounded toward negative infinity instead of rounding toward zero. Fixed.
  • Windows version: comes in 64-bit and 32-bit versions now.
  • Windows and GTK versions: Now support fractional display scaling.

New in Free42 3.0.10 (Jan 27, 2022)

  • 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.

New in Free42 3.0.9 (Dec 26, 2021)

  • Fixed handling of single-character strings in programs. This was broken in the previous release.

New in Free42 3.0.8 (Dec 23, 2021)

  • Auto-repeat for XSTR, and ALPHA arguments in general.
  • Windows, MacOS, and Linux versions: Keyboard mapping for CursorLeft to ← Shift-CursorLeft to <← and ↑, CursorRight to →, Shift-CursorRight to →> and ↓, and Delete to DEL, in menus.
  • Android version: Fixed blurry print-out on certain devices.

New in Free42 3.0.7 (Nov 7, 2021)

  • A2LINE now handles strings that start with characters 127-255 in a more
  • sensible manner. Also, added A2+LINE function for generating appended
  • strings, since the old trick of using a string starting with character 127 no
  • longer works.
  • 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.

New in Free42 3.0.6 (Jul 27, 2021)

  • Added string and list functions. See the Free42 web site for details.
  • Added lowercase letters to the menu font.

New in Free42 3.0.5 (Jul 1, 2021)

  • 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.

New in Free42 3.0.4 (Jun 10, 2021)

  • Fixed bug in complex LU decomposition, which could lead to incorrect results in INVRT, DET, and matrix division with complex matrices.
  • 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 ignore flag 73 (POLAR mode) and instead always assume rectangular or polar mode, respectively. Also modified X2LINE so it uses RCOMPLX instead of COMPLEX when generating program lines for complex numbers, so the generated code is correct regardless of RECT/POLAR mode.
  • MENU and VARMNU1 tweaks: The programmable menu is now cancelled whenever an operation is performed that clears the RTN stack, such as BST, or GTO in RUN mode. And in VARMNU1, don't trap EXIT when the menu was activated in RUN mode, or when an operation was performed that cleared the RTN stack.
  • Binary version: Fixed WSIZE to allow word size of 53.
  • Paste fixes: In PRGM and ALPHA modes, Paste now clears any messages that may have been left in the display from previous operations. (In RUN mode, this was already the case.) Also, Paste now sets flag 22 when pasting real or complex scalars into X, and sets flag 23 when pasting in ALPHA mode.

New in Free42 3.0.3 (Apr 29, 2021)

  • Implemented VARMNU1. This is a variation on VARMENU, with two differences: It allows selecting a variable without having to press its menu button twice; and it catches EXIT, performing CLA RUN when it is pressed.
  • Implemented X2LINE and A2LINE functions. These non-programmable functions create program lines containing the current contents of the X or ALPHA registers, respectively.
  • When INDEX or EDITN are performed on a local matrix, while another matrix is already indexed, the IJ pointers are saved, and restored when the current function returns.
  • RTNERR now accepts a string instead of a numeric argument, so functions can raise error messages other than the eight standard ones.
  • Implemented ERRNO and ERRMSG functions. These return the error number and error message, respectively, for the last error caught by flag 25.
  • Implemented XSTR function, for creating strings directly in the X register.
  • Fixed memory leak in the parameterized comparison functions.

New in Free42 3.0.2 (Mar 30, 2021)

  • Fixed possible stack corruption or crash due to LNSTK, when big stack mode is already active.
  • Fixed DROPN crash in 4STK mode.
  • Fixed matrix editor's GOTO Row/Column when stack empty (big stack mode).
  • Fixed bounds check bug in AGRAPH. This could cause nothing to be drawn when the pattern was one pixel from being entirely off-screen.
  • Android version: Fixed filesystem access in Android 10.

New in Free42 3.0.1 (Mar 5, 2021)

  • Implemented a work-around for a bug in the decimal floating-point library that could cause inaccurate results for several complex functions.
  • Implemented PRMVAR function. This prints all the variables associated with the given LBL through MVAR declarations.
  • Implemented new comparison functions, for comparing arbitrary arguments to X or to zero: X=?, X<?, 0=?, etc.
  • Added error number 8 to RTNERR, to allow user-defined functions to raise the
  • Too Few Arguments error condition.
  • RTN from the keyboard, and other actions that cause the RTN stack to be
  • cleared, now restore the stack mode if it had been changed locally using LNSTK or L4STK.
  • Windows version: Fixed a bug that could cause programs with many ALPHA labels to show up as blank lines in the Export Programs dialog.

New in Free42 3.0.0 (Feb 23, 2021)

  • Added dynamic stack option. See the Free42 web site for details.
  • Added the date and time format options to the MODES menu.
  • Changed the RTNERR function to take the error number from a parameter, rather than from the X register. To prevent existing programs using the old parameter-less RTNERR from breaking, those RTNERRs are converted to the
  • equivalent new instruction, RTNERR IND ST X.
  • Added PGMMENU function. This shows a menu of ALPHA labels with MVAR
  • instructions, like the top-level menu presented by SOLVER and ∫f(x). It is
  • meant to be used by programs that aim to implement a similar behavior as
  • those built-in menus.
  • On cold start, now setting the date and time format accordig to the host
  • operating system's locale settings.
  • The Free42 extensions to the HP-42S instruction set are now shown in separate
  • sections in CATALOG, rather than at the end of the FCN catalog.
  • Added STRACE option to PRINT menu. This is the "Stack trace" option, i.e.
  • TRACE mode where the entire stack gets printed, not just X. The option itself
  • is not new, it was implemented in 2.5.21, but the STRACE function, that
  • allows you to set that mode without having to twiddle flags, is new.

New in Free42 2.5.25 (Feb 2, 2021)

  • Fixed pasting of zero. This was broken in 2.5.21.

New in Free42 2.5.24 (Jan 14, 2021)

  • Improved user-defined function support. The changes are rather substantial; please check the Free42 web site for details.
  • The previous release introduced a bug when pasting a program without line numbers, causing numbers to be mangled. Fixed.

New in Free42 2.5.23 (Jan 6, 2021)

  • 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, and numbers that are out of range for the current platform now cause an error message instead of being silently turned into the maximum representable number or zero.
  • Implemented FMA (Fused Multiply-Add). This simply exposes the underlying FMA function provided by the floating-point hardware or libraries.
  • In programs, now handles pasting FIX/SCI/ENG with 1-digit argument, for HP-41 compatibility.

New in Free42 2.5.22 (Nov 23, 2020)

  • Minor UI fixes and improvements: 'Close' menu item (Mac), Copy and Paste in
  • dialogs (Mac), Unicode support in file names (Windows), and pre-populating
  • file names in file selection dialogs (all versions).
  • Implemented LASTO. This is related to LSTO like ASTO is related to STO.
  • Implemented No-Operation (NOP) function. This function does nothing, as its
  • name suggests, and can be useful when using ISG for counting without an upper
  • bound, for instance. The function is encoded using the 0xF0 opcode, which is
  • sometimes used on the HP-41 for the same purpose.
  • On the real HP-42S, GETKEY halts program execution when R/S, EXIT, or Shift-
  • EXIT are pressed. In Free42, however, Shift-EXIT did not cause program
  • execution to halt. Fixed.
  • Implemented GETKEY1 function. This works like the regular GETKEY, except it
  • only halts on R/S, allowing programs to implement custom behaviors for EXIT
  • and Shift-EXIT.
  • STOFLAG didn't update the G and RAD annunciators when flags 42 or 43 were
  • changed. Fixed.
  • Implemented range option for STOFLAG: with the flags in Y and a number bb.ee
  • in X, only flags bb through ee are restored, while the others are untouched.
  • If ee is zero, only flag bb is restored. This mode of operation exists in the
  • HP-41 Extended Functions module and in the HP-41CX, but was missing in the
  • Free42 implementation.
  • Binary version: Changed maximum WSIZE from 52 to 53.
  • MacOS version: Building universal binary now, with Intel and ARM (Apple
  • Silicon) support.
  • IOS version: Fixed crash when saving print-out using Share -> Save Image.

New in Free42 2.5.21 (Oct 25, 2020)

  • 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, the printer prints in a variation of TRACE mode, printing not just X after every instruction, but the entire stack.
  • 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, e.g. 1e3200 ENTER COMPLEX ENTER /. Fixed. Also applied a similar fix to complex 1/X.
  • Complex matrix division, INVRT, and DET would return incorrect results for large matrices (20x20 or greater). Fixed.

New in Free42 2.5.20 (Sep 20, 2020)

  • Fixed INTEG behavior when integrand returns non-real. It used to treat such
  • Results as zero while it should raise an error instead.
  • Fixed DATE+, DDAYS, and DOW when flags 31 and 67 are both set.
  • This combination of flags is never set by the DMY, MDY, and YMD functions,
  • But it can happen when you execute YMD followed by SF 31.
  • 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. For example, -1.00001 ISG ST X => -0.00001, should be 0.00001.
  • Fixed.
  • Added [FIND], [MAX], and [MIN] to the FCN catalog. These are undocumented
  • Functions from the HP-42S that were previously not shown in the catalog, even
  • Though they did work.
  • COMB could return Out of Range in certain cases where the correct result was
  • Not, in fact, out of range. For example, 20408 ENTER 10204 COMB.
  • ISG and DSE with a named variable would crash if that variable did not exist.
  • Fixed.

New in Free42 2.5.19 (Jul 5, 2020)

  • Fixed stack lift behavior with GETKEY.

New in Free42 2.5.18 (Apr 11, 2020)

  • Fixed pasting of 1/X and 10^X without line number.
  • Android version: Updated HEADING implementation so it works on phones that no longer provide the old compass API.
  • iOS version: Fixed double-import, when loading Shared files.

New in Free42 2.5.17 (Feb 14, 2020)

  • Fixed minor memory leak in Paste.
  • iOS version: Implemented n-key rollover.
  • iOS version: Fixed several minor bugs and inconsistencies in landscape mode.
  • iOS and MacOS versions: Print-out now grows from the top down, rather than
  • from the bottom up, to be consistent with these types of UIs in general, and
  • specifically with Free42 on other platforms.

New in Free42 2.5.16 (Jan 25, 2020)

  • Fixed GETKEY behavior with skins that use direct command mapping.
  • Fixed GETKEY behavior with physical keyboards in ALPHA mode.

New in Free42 2.5.15 (Jan 18, 2020)

  • Some fixes to Paste to improve compatibility with Emu42 text.
  • Fixed Skin menu behavior: user-loaded skins now take priority over built-in
  • Ones, and built-in skins that are overridden by user-loaded ones are now shown grayed out in the menu.
  • Linux version: Implemented XDG Base Directory Specification compliance:
  • Moved Free42 directory from $HOME/.free42 to $XDG_DATA_HOME/free42, or
  • $HOME/.local/share/free42 in case XDG_DATA_HOME is unset or empty.
  • Also, now looking for skins in free42 and free42/shared under $XDG_DATA_DIRS,
  • Or under /usr/local/share:/usr/share if XDG_DATA_DIRS is unset or empty.
  • Skins will also still be looked for in the Free42 directory.

New in Free42 2.5.14 (Jan 12, 2020)

  • Some fixes to Paste to improve compatibility with HP-41 text.

New in Free42 2.5.13 (Jan 10, 2020)

  • When REGS was shared, ASTO nn could store the character data into the wrong copy of the matrix. Fixed.

New in Free42 2.5.12 (Nov 28, 2019)

  • Windows and Linux versions: Removed the "Single Instance" option. Both now always run in Single Instance mode; what was removed was the possibility to turn *off* Single Instance and allow multiple instances to run concurrently.
  • That never worked well, and in the Windows version, there was never any reason to allow it. In the GTK version, there was a reason, which was that
  • Single Instance was hard to implement and did not work well in all environments; with GTK 3, Single Instance is supported by the platform, and there is no longer any reason not to use it.

New in Free42 2.5.11 (Oct 26, 2019)

  • Windows version: Program export in "raw" format performed LF-to-CRLF translation on the output file, turning XEQ 10 into XEQ 13 LBL 09, among other things. Bug introduced in 2.5.
  • Decimal version: 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 <Not a Number>. For example, 1 +/- <- ENTER.

New in Free42 2.5.10 (Oct 12, 2019)

  • The index range check in R<>R was faulty, allowing a row index equal to the number of rows plus one to be used, which in turn would cause memory corruption. Fixed.
  • Android version: When renaming the currently active state, the state name was not updated in the shell settings, 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.

New in Free42 2.5.9 (Sep 22, 2019)

  • When importing a program while the last program in memory was empty, the imported program would be inserted at the current location, instead of being added at the end of memory. Fixed.
  • iOS version: Added support for Dark Mode in iOS 13.
  • Android version: Added file extension filtering for file, http, and https URL
  • schemes. This should make Free42 not appear in as many file selection contexts as before, without making it disappear from contexts where it should be offered as an option. N.B. File extension filtering is not supported with the content scheme, which means Free42 will still show up in all contexts where attachments are opened, and depending on the file manager used, also when opening files from file managers.

New in Free42 2.5.8 (Sep 20, 2019)

  • When loading a corrupted state file causes a crash, the state file is now renamed so that it won't be read again, and the app will start with Memory Clear the next time it is launched, instead of crashing again and again.

New in Free42 2.5.7 (Sep 17, 2019)

  • SOLVE did not always return the second-best guess in Y. Fixed.
  • Android version: Changed haptic feedback preference setting from on/off switch to a four-level slider, for off/light/medium/heavy feedback.
  • Android version: Reduced the GPS update interval for LOCAT from 60 seconds to
  • 5 seconds.
  • Android version: Sharing an empty print-out would crash. Fixed; now it pops up a message instead.
  • Android version: Fixed crashes in state file import activity: intents without data, and SecurityException and UnsupportedOperationException while trying to get attachment file names.
  • iOS version: Changed haptic feedback preference setting from on/off switch to a four-level slider, for off/light/medium/heavy feedback. Also, changed key clicks setting from on/off switch to a three-way slider, for off/standard/wav click sounds, where standard is the old system key click sound, and wav is a wav file that sounds a bit louder.
  • iOS version: Making the single-threaded logic permanent. The complexity of the multi-threaded event handling logic makes the code too hard to maintain, while the benefits in terms of performance are marginal. The only noticeable disadvantage of the single-threaded approach was poor performance in display- intensive code, and that can be mitigated simply by repainting less aggressively.
  • iOS version: Preferences view now expands to fill the width of the screen.
  • MacOS version: Making the app single-threaded. This is the same change as in the iOS version; the aim is to simplify the code, making it more robust, while sacrificing very little in terms of performance.

New in Free42 2.5.6 (Sep 9, 2019)

  • SOLVE:
  • Would not always return the best function value in Z.
  • Fixed:
  • iOS version: There have been crashes occurring in the display update logic, due to some not yet understood condition that appears to affect faster iPhones (8, X, XR, XS). I implemented a fix that appears to prevent these, but at a cost in terms of performance, i.e. the emulation is a bit slower now. I'm working on a proper fix, which will eliminate these problems and restore maximum performance.

New in Free42 2.5.5 (Sep 7, 2019)

  • Moved the settings "Singular Matrix Error," "Matrix Out Of Range," and "AutoRepeat" from the core state (the *.f42 files) to the shell state, so they are
  • not affected by switching core states.
  • Fixed a bug that caused State File Corrupt when reading a state containing a zero-length string.
  • iOS version: Fixed a couple of bugs that were causing memory and state file
  • corruption and crashes.
  • iOS and MacOS versions: Fixed a couple of bugs that were causing crashes in
  • the States window.
  • Android version: The States window would ask for confirmation to revert the
  • current state back to the last version saved, even when the user was trying to switch to a different state. Fixed.

New in Free42 2.5.3 (Sep 1, 2019)

  • Invalid state files (corrupt, or created by an incompatible newer version of Free42) are now renamed, so they are not lost when a new state is written, and can be retrieved for post-mortem analysis.

New in Free42 2.5.2 (Aug 31, 2019)

  • In the States window, renamed Reload to Revert, and added a confirmation dialog, since that is a potentially destructive action.
  • When programs were imported from raw files, empty progams were sometimes being created unnecessarily. Harmless but slightly annoying. Fixed.
  • Android and iOS versions: Added "share" option for Print-Out view.
  • Android and iOS versions: Added "share" option for programs in raw format.
  • Android and iOS versions: Now import raw files directly from email attachments and web links.

New in Free42 2.5.1 (Aug 28, 2019)

  • Fixed bug that caused string elements in real matrices (including the numbered registers) to be written incorrectly in the state file, leading to memory corruption and crashes when the state file was read back in.
  • iPhone version: Now makes sure that the current state shows up in the list in the States view, even if it is opened right after a fresh install or right after upgrading from a version before 2.5.

New in Free42 2.5 (Aug 25, 2019)

  • 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.

New in Free42 2.4.2.0 (Jul 13, 2019)

  • Windows version: The new Ctrl-A, Ctrl-I, and Ctrl-T shortcuts (Paper Advance,
  • Copy Print-Out as Image, and Copy Print-Out as Text) didn't work, because I hadn't updated the corresponding accelerator resources. Fixed.
  • Windows and Linux versions: All Ctrl-<Key> shortcuts now work even when the
  • Print-Out window is on top.
  • Android, iPhone, and Mac versions: When loading a skin in the skin browser, they now force an un-cached load, so skin fixes can actually be loaded by users without delay, and without having to resort to side-loading.
  • Android and iPhone versions: 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.
  • IPhone version: Changed Standard-X skin, from Ehrling42sl.X to Matt42X. The old skin was rather blurry; the new skin has nice and crisp text for all key labels.

New in Free42 2.4.1.0 (Jul 4, 2019)

  • Fixed several bugs in BWRAP mode.

New in Free42 2.4.0.0 (Jul 2, 2019)

  • Implemented configurable word size for BASE functions (up to 64 bits, or 52 in Free42 Binary), unsigned mode, and wrap mode. The new settings are all in a new row in the MODES menu.
  • Android, iPhone, and Mac versions: Added some feedback in the skin loadingwindow: the "Load" button changes to "..." while a page load is in progress; "Load" is enabled only when a GIF or layout file is being displayed, i.e. something that could actually be a skin, and therefore loadable; and finally, when Load is pressed to load a skin, an alert box is now shown to report success or failure.

New in Free42 2.3.1.0 (Jun 24, 2019)

  • Mac version: Copy Print-Out as Image didn't handle wrap-around in the image buffer correctly. Fixed.
  • Windows and GTK version: implemented Paper Advance, Copy Print-Out as Text, and Copy Print-Out as Image.
  • iPhone version: Fixed the top-of-screen menu trigger so that it no longer sabotages keys that are also in that area, as in the HP_Mega_42 and SGS-L skins. This is the same fix I made for Android in release 1.5.8d. I didn't think to fix this for iPhone at the time, probably because the iPhone version didn't support landscape mode then.

New in Free42 2.2.1.0 (May 11, 2019)

  • Added side margins to print-out window.
  • PRLCD is now supported in "Print to Text," using Unicode 2x2 block elements.
  • Flag 64 is now set or cleared to indicate the Shift state during the most recent key press. This can be used by MENU handlers to implement different behaviors for unshifted and shifted menu keys.
  • Windows version: changed sounds from using the Beep() function to playing wav sounds using the PlaySound() function, matching the way sounds are played in the Android, iOS, and Mac versions.
  • MacDashboard version: Didn't recognize comma as decimal key. Fixed.

New in Free42 2.2.0.0 (Apr 8, 2019)

  • Implemented YMD mode for date functions, using YYYY.MMDD as the numeric
  • format and YYYY-MM-DD as the display format. Programs can check whether this
  • mode is active by testing flag 67. If flag 67 is clear, the mode is indicated
  • by flag 31 (clear = MDY, set = DMY), as before.
  • Local variables. You create them with the new LSTO function, and they
  • disappear automatically when the current subroutine ends, by executing RTN or
  • END. If a local variable is created with a name that matches an already-
  • existing variable, the older variable is hidden until the local variable goes
  • away.
  • Dynamically growing RTN stack. It is not unlimited; in order to prevent
  • infinite recursion from eating up all memory, it maxes out at 1024 levels.
  • The new stack behaves a bit different than the old version (and the real
  • HP-42S): when an XEQ happens while the stack is full, the old version would
  • silently discard the oldest RTN, while with the new version, this returns a
  • "RTN Stack Full" error.
  • Added support for direct command mapping in skins. This is specified by
  • creating Macro: lines where the macro is not a sequence of keystrokes, but a
  • command name enclosed in double quotes, e.g., Macro: 40 "SST→"
  • Windows, Mac, and Linux versions: In skin layout files, they now look for
  • keymap entries tagged as "WinKey:", "MacKey:", or "GtkKey:", respectively.
  • This allows embedding keymaps for multiple platforms in one layout file.
  • This does mean that old-style keymap entries, with no identifying tags, are
  • no longer recognized. Out of all the skins in my collection, the only
  • affected skins are desktop/42ck and desktop/42ct. If you use these skins,
  • you'll want to download the updated layout files.

New in Free42 2.1.0.0 (Mar 27, 2019)

  • New functions: SST↑ (Step Out) and SST→ (Step Over). Step Out runs the program until the end of the current subroutine; Step Over executes one step, but if that step is an XEQ, SOLVE, or INTEG, it runs until the subroutine returns, or SOLVE or INTEG are done. When Step Out is performed in a function called by SOLVE or INTEG, the program runs until SOLVE or INTEG are done.
  • Added SST↓ (Step Into), which is just an alias for SST. This allows creating a row in the CUSTOM menu with SST↓, SST→, and SST↑, like in typical high-level language debuggers.
  • Android and iPhone versions: Improved "Maintain skin aspect ratio" option: it now chooses the largest scale where the skin still fits on the screen in its entirety, and centers the skin within the available space.
  • IPhone version: The "Maintain skin aspect ratio" and "Print to text" options in the Preferences were switched. Fixed.
  • IPhone version: Fixed handling of announcements in the status bar (audio recording, active call, active GPS).
  • IPhone version: Turned optimization back on. It looks like the optimizer bug (see release notes for 2.0.21a) has been fixed.

New in Free42 2.0.24 (Feb 25, 2019)

  • Made program pasting a bit more lenient: tabs are now treated as spaces, and the following command names are now recognized: x, RCL*, RCLx, RCL/, STOx, X#0?, X#Y?, X<>0?, and X<>Y? (in addition to all the alternate spellings that were recognized previously).
  • iPhone version: added Key Clicks setting in Preferences.
  • Windows and Mac versions: now refuse to export zero programs. (The other versions already did this.) Also tweaked the file selection dialogs a bit.
  • Android version: when running on 4.4 (KitKat) or later, now creates the storage directory, /sdcard/Android/data/com.thomasokken.free42, as soon as it has access. The file selection dialogs are now restricted to this directory and its subdirectories.

New in Free42 2.0.23 (Feb 10, 2019)

  • 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.
  • IPhone version: added basic iPhone X support.

New in Free42 2.0.22 (Jan 13, 2019)

  • Made pasting real scalars a bit more lenient: it is now permitted for there to be trailing non-numeric characters after the number, so pasting a number with an attached unit, say 50mm, yields the number 50, not the string "50mm".
  • INPUT should clear any message from the display before showing the prompt, but it didn't. Fixed.
  • When ALPHA mode is active on top of VARMENU, ASTO and ARCL should show the
  • regular variable menus, but they showed the VARMENU instead. Fixed.
  • During command entry, SST and BST should be disabled, but the code that tried to do this also prevented some legitimate uses of up-arrow and down-arrow, such as switching menu rows during FIX IND __.
  • While entering a numeric LBL, it should be possible to switch to ALPHA mode,
  • using Shift-ENTER, to switch from, say, LBL 3_ to LBL "3_ , as an alternative method of entering ALPHA labels that start with a digit. The HP-42S allows this, but Free42 didn't. Fixed.
  • Android and iPhone versions: OFF now turns off "continuous on" mode.

New in Free42 2.0.21 (Jun 25, 2018)

  • 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, the output file is now flushed and closed immediately if there is no more room for at least another 9 pixels after printing -- in other words, when no more printing to that file is possible anyway. It used to wait until the next print request, or app close, before flushing and closing in this situation. Also, the minimum height of a GIF output file is now 16 pixels, down from 32.

New in Free42 2.0.20 (Mar 13, 2018)

  • MATA, MATB, and MATX should exhibit the same stack lift behavior as EDIT and EDITN, but didn't. Fixed.

New in Free42 2.0.19 (Mar 11, 2018)

  • Another EDIT/EDITN fix: in the real HP-42S, EDIT and EDITN don't actually disable stack lift; they preserve the stack lift state, which you can observe if you do ENTER vs. a stack-lift-enabling operation (say, X<>Y) just before invoking them. This behavior is not really useful, but it needs to be emulated anyway, since not doing so risks breaking HP-42S programs. This does not affect GOTO Row/Column.

New in Free42 2.0.18 (Mar 10, 2018)

  • EDIT, EDITN, and GOTO Row/Column should disable stack lift, but they didn't. Fixed.

New in Free42 2.0.17 (Mar 3, 2018)

  • 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.

New in Free42 2.0.16 (Feb 23, 2018)

  • 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. Basically, any argument >= 100 that isn't a stack register and that isn't a local label is treated as numeric. Arguments 112-116 are always stack registers, even when that makes no sense (flags, SigmaREG, etc.); 102-111 and 123-127 are only considered as A-J and a-e in LBL, GTO, and XEQ.
  • Note that nothing very interesting happens as a result of these changes. They won't make synthetic HP-41C code work in Free42 any more than it does in the HP-42S; the behavior is just more like the real 42S now.

New in Free42 2.0.15 (Feb 17, 2018)

  • POSA would not find the search string if its only occurrence was at the very end of the alpha register. Fixed.
  • Android version: tweaked handling of low-battery indicator.

New in Free42 2.0.14 (Feb 11, 2018)

  • 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.

New in Free42 2.0.13 (Feb 7, 2018)

  • Paste didn't handle numbers with negative exponents correctly. Fixed.

New in Free42 2.0.12 (Jan 28, 2018)

  • Fixed pasting of SIZE lines.
  • When pasting numbers, spaces are now allowed as thousands separators.
  • Mac and MacDashboard versions: are now 64-bit
  • Mac and GTK versions: fixed Caps Lock handling, so Caps Lock + Esc no longer exits.
  • Android and iPhone versions: implemented "continuous on" mode (ON function, flag 44).

New in Free42 2.0.11 (Jan 15, 2018)

  • 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, and also cleaned up type checks in MATX.

New in Free42 2.0.10 (Jan 8, 2018)

  • Program Paste without line numbers didn't handle certain numbers, specifically, those that started with a digit and didn't consist of only digits. Fixed.

New in Free42 2.0.8 (Dec 27, 2017)

  • 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.

New in Free42 2.0.7c (Dec 22, 2017)

  • Decimal: SIN and COS of 45 degrees or 50 grads returned an inaccurate result,
  • correct to only 16 digits. Fixed.

New in Free42 2.0.7 (Nov 20, 2017)

  • 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.
  • Windows version: restored the Calculator key mapping option, which I had removed in 1.5.14. It turns out that keyboards with a dedicated Calculator key do still exist.
  • Android version: the menu icons for Copy, Paste, and Print-Out were displayed too large, overlapping the menu item labels on some devices. Fixed.
  • Windows, Linux, and Mac versions: added keyboard mappings g => GTO and p => PI. On existing installations, users must delete or rename the existing keymap and restart for this to take effect.

New in Free42 2.0.6 (Aug 14, 2017)

  • Decimal version: 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.

New in Free42 2.0.5 (Aug 14, 2017)

  • 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.
  • iPhone version: fixed a few display alignment issues with the built-in 4"
  • skin.

New in Free42 2.0.4 (May 30, 2017)

  • Implemented special-case code for pure real and pure imaginary numbers in all the complex logarithmic, trigonometric, and hyperbolic functions.

New in Free42 2.0.3 (May 29, 2017)

  • Fixed a few edge cases in complex functions.
  • The last digit in full-precision representation (SHOW, Copy) could be off by one in certain circumstances. Fixed.
  • 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.
  • iPhone version: LOCAT didn't work when its initial invocation happened from a program. Fixed.
  • In the About box, replaced the link to the Free42 discussion group with a link to the Alternative HP-42S/Free42 Manual

New in Free42 2.0.2 (Apr 28, 2017)

  • In Unicode-to-HP conversion, translate "LF" and "[LF]" to 10, not 138.
  • Character 138 only exists to *represent* LF, but isn't available in the ALPHA menu and therefore cannot appear in non-synthetic programs.
  • Unicode-to-HP conversion handles curly quotes now (U+2018, U+2019, U+201C, U+201D).

New in Free42 2.0.1 (Apr 25, 2017)

  • Change right-pointing triangle from Unicode U+25B6 (black right-pointing triangle) to U+25B8 (black right-pointing small triangle); the former gets rendered as an emoji in iOS, while the latter doesn't, plus, the smaller triangle looks better in listings anyway.
  • MacDashboard version: Fixed multi-line pasting.

New in Free42 2.0 Beta (Apr 25, 2017)

  • Copy & Paste now handle matrices, ALPHA mode, and PRGM mode.

New in Free42 1.5.15 (Apr 3, 2017)

  • Instead of being limited to 12 mantissa digits, full precision (34 digits in the Decimal version, 16 digits in Binary) is now supported for number entry, SHOW, Copy, and Paste.

New in Free42 1.5.14 (Mar 12, 2017)

  • Changed complex TAN and TANH to use more accurate formulae.
  • The Time Module functions used to keep track of MDY/DMY modes using an invisible flag. For better HP-41 compatibility, they now use flag 31.
  • Android version: Made state file writing more robust. If writing the state file fails, it now keeps the previous one, instead of leaving behind a partial or corrupt one.
  • GTK version, Free42 Binary only: Some (recent?) versions of GTK set the LC_NUMERIC locale, which Free42 expects to always be "C". This causes number entry and display to be messed up in locales where the decimal is not ".", including most of Europe. I added code to force LC_NUMERIC back to "C" after gtk_init(), fixing this problem.
  • Binary version: Fixed binary round-off problem in ADATE (for example, 10.102010 would be rendered as 10/10/2009).

New in Free42 1.5.13 (Mar 12, 2017)

  • When DIM, SIZE, or SIMQ resize the indexed matrix, and when CLV deletes the indexed matrix, IJ should be set to (1, 1); and when DIM, SIZE, or SIMQ try to resize the matrix currently being edited by EDITN, and when CLV tries to delete the matrix currently being edited by EDITN, they should return a "Restricted Operation" error. Neither happened, creating the potential for memory corruption if IJ ended up pointing outside the matrix' data array.
  • FIXED:
  • STO and STO* allowed the target to be the matrix under edit by EDITN. They should not allow this, but return "Restricted Operation" instead. Fixed.
  • CLALL didn't always exit all menus. Fixed.

New in Free42 1.5.12 (Oct 20, 2016)

  • All versions: when printing to text, up-arrow now looks like an up-arrow, instead of a caret.

New in Free42 1.5.11 (Oct 20, 2016)

  • EXITALL didn't always exit all menus. Fixed.
  • Print-to-text now emits UTF-8 encoded text, instead of ISO-8859-1.
  • Print-to-text now emits CRLF line separators on all platforms.

New in Free42 1.5.10 (Sep 6, 2016)

  • Fixed AGRAPH bug with complex number in X.

New in Free42 1.5.9 (Sep 6, 2016)

  • Now building the Intel Decimal Floating-Point Math Library from source for all targets. In terms of the end user, this makes no difference, but it will make life easier for people who want to port Free42 to platforms that I don't support myself (FreeBSD, Solaris, etc.); those platforms were left out in the cold when I started using the Intel library and only provided pre-built binaries for the supported platforms.
  • Implemented range reduction for more accurate TAN in DEG and GRAD modes.
  • Android version: now handles orientation change more efficiently.

New in Free42 1.5.8 (Sep 6, 2016)

  • Entering an END into a program using the CUSTOM menu would leave the program counter at an invalid value, leading to memory corruption, state file corruption, and crashes. Fixed.
  • Android version: changed haptic feedback code back to using the old API.
  • Android version: changed targetSdkVersion from 3.0 to 2.2. This should make the menu reliably accessible in all Android versions and with all display styles.
  • Resurrected the Mac OS X Dashboard version; the display repaint logic now supports Yosemite (10.10) and later.

New in Free42 1.5.7 (Sep 6, 2016)

  • INSR should disable stack lift, but didn't. Fixed.
  • Android version: added Action Bar, reluctantly embracing the reality of devices with no menu button (or hard-to-find menu buttons, like the "press and hold the task switch button" behavior on some devices).

New in Free42 1.5.6 (Sep 6, 2016)

  • iPhone version: implemented Copy and Paste.
  • iPhone version: fixed LOCAT for iOS 8.
  • All versions, on hard reset, now initializing flag 28 (decimal point/comma) to match the host's locale.
  • Paste didn't clear the message flags. Fixed.

New in Free42 1.5.5 (Nov 13, 2014)

  • Decimal version: entering a number with an empty exponent (e.g. 1E or 1E-) would yield . Fixed.
  • iPhone version: HTTP server: Fixed downloading individual programs from, and uploading zip files of programs to, the /memory directory. This got broken in release 1.4.77, while implementing local file download.
  • Android version: when the screen orientation was set to "automatic", it would not honor any system-wide orientation lock. Fixed.

New in Free42 1.5.4 (Jul 28, 2014)

  • Decimal version: Fixed ACOS. It would return 0 for acos(-1).

New in Free42 1.5.3 (May 26, 2014)

  • Fixed crash in SIMQ if any of MATA, MATB, or MATX already existed and was a scalar or string.

New in Free42 1.5.2 (Mar 17, 2014)

  • Decimal version: fixed Y^X for complex Y and negative integral X.
  • Decimal version: made Y^X and 10^X for real Y and integral X more accurate.
  • All versions: sin(45°) now equals cos(45°), and sin(50grad) = cos(50grad).

New in Free42 1.5.1 (Mar 17, 2014)

  • All versions: fixed ASIN, ACOS, and ATAN so they return exact results in DEG and GRAD modes for trivial parameters (asin(1), asin(-1), acos(0), atan(1), atan(-1), atan(infinity).
  • Now displaying signed zero as zero, so you won't see -0 any more.
  • Windows version: removed the "Free42 Directory" setting from the Preferences.
  • The application now looks for a file or directory named "portable" in the directory where Free42Decimal.exe or Free42Binary.exe itself is located; if it exists, the state.bin, print.bin, and keymap.txt files will be stored in this directory as well, and skins will only be loaded from this directory. If there is no "portable" item in the executable's directory, it will store state.bin, print.bin, and keymap.txt in %APPDATA%\Free42, and it will load skins from that directory, and from the executable's directory.

New in Free42 1.5 (Mar 10, 2014)

  • Decimal version: switched from BCD20 to Intel's Decimal Floating-Point Library v2.1.
  • Binary version: replaced the old binary-to-decimal and decimal-to-binary conversions with code that uses the standard C library's equivalent functionality. This fixes final-digit errors in the Binary version, and also final-digit errors when switching from the Decimal to the Binary version.
  • All versions: added angle reduction code to make SIN, COS, and ->REC more accurate in DEG and GRAD modes.
  • Windows version: now uses %APPDATA%\Free42 as the default Free42 directory (for storing state.bin, print.bin, and keymap.txt). This avoids permissions problems when people install the executable in a directory to which they don't have write access (like the popular choice C:\Program Files).

New in Free42 1.4.78 (Dec 10, 2013)

  • All versions except Android: while parsing macros in skin layout files, tab characters were not recognized as whitespace and caused parsing to fail.
  • GTK version did not repaint the skin when it was switched from one skin to another with the same width and height.
  • Windows version: downgraded my build environment from Visual C++ 2012 to 6.0. This means the Free42 build for Windows will run on older versions of Windows again.

New in Free42 1.4.77 (Jan 6, 2013)

  • All versions except iPhone: the links in the About boxes now actually work.

New in Free42 1.4.74 (Jan 3, 2013)

  • Decimal version: the overflow fix in 1.4.73 was incorrect. This one works.

New in Free42 1.4.73 (Jan 3, 2013)

  • Decimal version: overflows would return zero in some cases, i.e. 9E9999 ENTER +. Fixed.

New in Free42 1.4.71 (Jan 3, 2013)

  • HMS+ and HMS- would return results with the wrong sign under certain
  • circumstances: result < 0 and |result| < 59 seconds, or result < 0 and |result| > maximum integer. Fixed

New in Free42 1.4.70 (Jan 3, 2013)

  • Fixed several bugs in complex ASIN, ASINH, ACOS, and ACOSH