Free42

3.1.7 for iPhone, iPad
Free
9.6

102 Ratings

Update Date

2024-03-31

Size

6.8 MB

Screenshots for iPhone

iPhone
Free42 Description
Free42 is a re-implementation of the HP-42S calculator and the HP-82240 printer.
It is a complete rewrite, not using any HP code, and it does not require an HP-42S ROM image.
Free42 is an Open Source project. The executables and source code are released under the terms of the GNU General Public License, version 2.
All third-party code used in Free42 is either in the public domain, or licensed under terms compatible with GPLv2, or used with the authors' permission.
Free42 3.1.7 Update
2024-03-31
Now recognizing comment delimiters '@' and ';' for program pasting.

More accurate complex ASIN/ASINH.
More Information
Price:
Free
Version:
3.1.7
Size:
6.8 MB
Genre:
Utilities
Update Date:
2024-03-31
Developer:
Thomas Okken
Language:
English
Developer Apps

Safe to Download

AppPure.com and the download link of this app are 100% safe. The download link of this app will be redirected to the official App Store site, thus the app is original and has not been modified in any way.

Got it
X
Share

Share this page with your friends if you find it useful

Facebook Linkedin Pinterest Tumblr Twitter Whatsapp Line
3.1.7 2024-03-31
Now recognizing comment delimiters '@' and ';' for program pasting.

More accurate complex ASIN/ASINH.
3.0.21 2023-08-11
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.)
3.0.20 2023-04-20
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.
3.0.19 2023-04-05
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.
3.0.18 2023-03-18
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.
3.0.17 2022-12-14
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).
3.0.15 2022-10-01
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.

Added Calculator / Print-Out swipe direction configuration option to Preferences.

Fixed incorrect Out of Range error returned by BASE functions in certain cases, e.g. BRESET 64 WSIZE 1 ENTER BASE÷
3.0.14 2022-08-13
Fixed (re,im) complex pasting. This was broken by localized copy & paste.

Special cases for pure real and pure imaginary in SQRT.
3.0.13a 2022-06-19
Fixed skin rendering for iOS 16.
3.0.12 2022-06-14
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.
3.0.11 2022-05-01
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. 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.
3.0.10 2022-01-27
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.
3.0.9 2021-12-26
Fixed handling of single-character strings in programs.
This was broken in the previous release.
3.0.6 2021-07-28
Added string and list functions. See the Free42 web site for details.

Added lowercase letters to the menu font.
2.5.23 2021-01-06
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). This simply exposes the underlying FMA function provided by the floating-point library.

In programs, now handles pasting FIX/SCI/ENG with 1-digit argument, for HP-41 compatibility.
2.5.22 2020-11-24
Now pre-populating file names in file selection dialogs.

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.

Fixed crash when saving print-out using Share -> Save Image.
2.5.21 2020-10-25
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.
2.5.20 2020-09-20
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.
2.5.19 2020-07-06
Fixed stack lift behavior with GETKEY.
2.5.18 2020-04-11
Fixed pasting of 1/X and 10^X without line number.
Fixed double-import, when loading Shared files.
2.5.17a 2020-02-22
Fixed initial print-out scroll position. Version 2.5.17 introduced a bug where it would not scroll all the way to the bottom initially.
2.5.17 2020-02-13
Implemented n-key rollover.
Fixed several minor bugs and inconsistencies in landscape mode.
2.5.16b 2020-02-08
Can now switch between the calculator and print-out by swiping sideways.
2.5.16a 2020-02-03
Fixed file import from the Files app.
2.5.16 2020-01-25
Fixed GETKEY behavior with skins that use direct command mapping.
2.5.15 2020-01-18
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.
2.5.14 2020-01-11
Some fixes to Paste to improve compatibility with HP-41 text.
2.5.13 2020-01-09
When REGS was shared, ASTO nn could store the character data into the wrong copy of the matrix. Fixed
2.5.11 2019-10-26
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] [+/-] [backspace] [ENTER].
2.5.10 2019-10-12
The index range check in R-swap-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.
2.5.9b 2019-10-05
Greater range of key click volume levels.

Added sanity check for raw files imported using Copy to Free42.
2.5.9 2019-09-25
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.

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.

Fixed a couple of import-related crashes.

Added support for Dark Mode in iOS 13.
2.5.7 2019-09-17
SOLVE did not always return the second-best guess in Y. Fixed.

Changed haptic feedback preference setting to a four-level slider, allowing heavier feedback settings.

Changed key clicks preference setting to a three-level slider, adding a louder setting at the top of the scale.

Making the single-threaded logic permanent; fixed the slow display updates.

Preferences view now expands to fill the width of the screen.
2.5.6a 2019-09-11
Fixed several bugs that were causing memory and state file corruption and crashes.

Moved the settings "Singular Matrix Error," "Matrix Out Of Range," and "Auto-Repeat" from the core state (the *.f42 files) to the shell state, so they are not affected by switching core states.

SOLVE would not always return the best function value in Z. Fixed.
2.5.4 2019-09-03
Fixed a crash when the States window was opened the very first time the app was run after a new install.

Fixed a bug that could cause the hostname lookup for the HTTP Server window to fail.
2.5.3 2019-09-02
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 programs were sometimes being created unnecessarily. Harmless but slightly annoying. Fixed.

Added "share" option for Print-Out view.

Added "share" option for programs in raw format.

Now importing raw files directly from email attachments and web links.

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.
2.5.1 2019-08-28
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. Unfortunately, state files affected by this bug cannot be recovered and will cause a State File Corrupt error when loaded.
2.5 2019-08-26
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.
2.4.2 2019-07-15
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 42ct to 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.

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.
2.4.1 2019-07-04
2.4.1:

Fixed several bugs in BWRAP mode.

2.4:

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.

Added some feedback in the skin loading window: 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.
2.4 2019-07-02
Implemented configurable word size for BASE functions (up to 64 bits), unsigned mode, and wrap mode. The new settings are all in a new row in the MODES menu.

Added some feedback in the skin loading window: 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.
2.3.1 2019-06-23
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.
2.3 2019-06-17
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 as Text and Copy as Image for Print-Out window.
2.2.1c 2019-05-25
Fixed crash in Paste when clipboard contained no text.
2.2.1 2019-05-12
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.
2.2 2019-04-09
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->"
2.1 2019-03-28
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 SSTv (Step Into), which is just an alias for SST. This allows creating a row in the CUSTOM menu with SSTv, SST->, and SST^, like in typical high-level language debuggers.

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.

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.
2.0.24g 2019-03-19
Enabled non-integral display scaling.

Added setting in Preferences to choose whether to stretch skins to fill the screen, or to stretch them only to fill the available width, while maintaining their original aspect ratio.

Implemented support for landscape orientation.

Fixed alignment of "Done" buttons.
2.0.24f 2019-03-09
Added Haptic Feedback setting in Preferences.
2.0.24c 2019-02-28
Fixed the white bar that was showing up above the skin on iPads running iOS 12.
2.0.24 2019-02-26
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).

Added Key Clicks setting in Preferences.
2.0.23c 2019-02-21
The previous release calculated the skin scale incorrectly for certain skins, causing them to be displayed too small. Fixed.
2.0.23b 2019-02-18
Enabled non-integral scaling for skins, so skins can fill the width of the screen on iPhone X series (X, XR, XS, XS Max) even if they were designed for older models with 3:4 or 9:16 screen aspect ratios.
2.0.23a 2019-02-13
Replaced Standard-X skin (for iPhone X, XR, XS, and XS Max) with one that uses the whole screen.
To select it, activate the main menu by tapping in the top half of the display, then tap Select Skin, and then choose Standard-X.
2.0.23 2019-02-10
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.

OFF now turns off "continuous on" mode.

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.

Added basic iPhone X support.
2.0.21a 2018-07-04
In 2.0.21, number display was broken in OCT and HEX modes, showing a number of digits that would be appropriate for BIN mode, padding out the number to that length with leading zeros. This was caused by a bug in the code optimizer in the latest iOS development tools. This release of Free42 fixes the problem by building with the optimizer turned off.
2.0.21 2018-06-25
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.
2.0.20 2018-03-14
MATA, MATB, and MATX should exhibit the same stack lift behavior as EDIT and EDITN, but didn't. Fixed.
2.0.19 2018-03-11
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, XswapY) 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.
2.0.18 2018-03-10
EDIT, EDITN, and GOTO Row/Column should disable stack lift, but they didn't. Fixed.
2.0.17 2018-03-04
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.
2.0.16 2018-02-23
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.
2.0.15 2018-02-18
POSA would not find the search string if its only occurrence was at the very end of the alpha register. Fixed.
2.0.14 2018-02-12
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.
2.0.13 2018-02-08
Paste didn't handle numbers with negative exponents correctly. Fixed.
2.0.12d 2018-02-04
Fixed crash in GIF printing.
2.0.12 2018-01-30
Fixed pasting of SIZE lines.

When pasting numbers, spaces are now allowed as thousands separators.

Implemented "continuous on" mode (ON function, flag 44).
2.0.11 2018-01-16
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.
2.0.10 2018-01-09
Program Paste no longer requires line numbers.
The CUSTOM command would toggle the CUSTOM menu, but that was wrong: it should only activate that menu, never deactivate it. Fixed.
DIM?, EDIT, and EDITN didn't print X in TRACE mode. Fixed.
Selecting the already-active menu did not cause the display to be repainted, even though it should: there might be a message, which should be removed in that case. Fixed.
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.
2.0.8 2017-12-30
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.