2024-12-22: release 1.1.17

* Fixed pasting of GETMI, PUTMI, GETLI, and PUTLI.
* Added ALPHA mapping from Y^X to '↑'.
* Fixed crash with circular unit definitions.

2024-12-18: release 1.1.16

* The CUSTOM menu now supports unit assignments.

2024-12-13: release 1.1.15

* Added option to show the active keyboard map superimposed on the skin. The
  desktop versions have this in the Help menu, and the mobile versions have it
  in the About dialog.
* Added functions for direct access to matrix and list elements: GETMI, PUTMI,
  GETLI, and PUTLI. See the Free42 web site for details.
* iOS and MacOS versions: Improved Dark Mode support.
* In compatibility mode, VIEW(G(A)) would recall the global A to the stack, but
  view the local A. Fixed.

2024-11-14: release 1.1.14

* I%YR fixes for values close to zero.
* Now pre-populating state name for States -> More -> Rename.

2024-10-27: release 1.1.13

* 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.
* Android version: Fixed crash with relative file imports.

2024-05-28: release 1.1.12

* Fixed handling of °C and °F return values in numeric solver.
* Android version: Fixed crash for certain unrecognized key codes from
  Bluetooth keyboards.

2024-05-21: release 1.1.11

* Implemented LL(NAME:VALUE:EXPR). This creates a local variable and executes
  one or more expressions while the local variable is in scope.
* Fixed parameter visibility issues in Σ() and ∫().

2024-05-15: release 1.1.10a (Android, iOS, and MacOS)

* PSE could halt program execution if it was used right after TONE or BEEP.
  Fixed.

2024-04-24: release 1.1.10

* Fixed ALPHA pasting during command entry.
* Fixed MODES and DISP menus in EQN list view.
* Equation editor: fixed handling of direct-mapped "%" and "PI".

2024-03-30: release 1.1.9

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

2024-03-26: release 1.1.8

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

2024-03-25: release 1.1.7

* EDIT and EDITN, when editing lists, would not display the current element
  index correctly in 1LINE mode. Fixed.

2024-03-22: release 1.1.6b (iOS, Windows, and MacOS)

* Windows version: Fixed display flicker using buffered painting.
* iOS and MacOS versions: Changed skin loader to use WKWebView.

2024-03-21: release 1.1.6a (Windows only)

* Reduced display blurriness when the main window is resized.

2024-03-18: release 1.1.6

* Fixed keyboard mapping bug in the equation editor. This bug was caused by the
  alternate direct command mapping changes in 1.1.5.

2024-03-07: release 1.1.5

* Direct command mapping now supports alternate mappings for ALPHA mode.
* Fixed source highlighting glitch when tracing N+U in equations.
* Windows version: Fixed a couple of display glitches.

2024-03-04: release 1.1.4e (Windows, MacOS, and Linux)

* Windows, MacOS, and Linux versions: Constraining print-out window height to
  multiples of 18 pixels, that is, to a whole number of lines.
* Windows version: Fixed skin rendering problem in Windows Vista.
* Linux version: Resizable main window.
* Linux version: Ctrl-D shortcut for Clear Print-Out.

2024-02-28: release 1.1.4d (iOS and MacOS)

* iOS version: Fixed crash when sharing on iPad.
* MacOS version: Fixed crash when making the main window too small.

2024-02-27: release 1.1.4c (Windows only)

* Resizable main window.
* Ctrl-D shortcut for Clear Print-Out.

2024-02-21: release 1.1.4b (MacOS only)

* Resizable main window.
* Command-D shortcut for Clear Print-Out.

2024-02-14: release 1.1.4a (iOS only)

* iPad support.

2024-02-09: release 1.1.4

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

2024-01-24: release 1.1.3a (Android only)

* Fixed crash in File Management Menu.
* Fixed crash when importing or exporting to cloud storage.

2024-01-17: release 1.1.3

* Added C.LN1+X and C.E^X-1 functions. These are complex-capable versions of
  LN1+X and E^X-1.
* 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.

2023-12-21: release 1.1.2c (Android only)

* Export State used f42 file extension instead of p42. Fixed.

2023-12-18: release 1.1.2b (Android only)

* Fixed file access for Android >= 11.

2023-12-12: release 1.1.2a (iOS and MacOS)

* Fixed startup crash, caused by a bug in Apple's latest compiler.

2023-12-06: release 1.1.2

* Fixed a bug that could cause a crash on startup.

2023-12-01: release 1.1.1

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

2023-11-29: release 1.1

* Full-screen matrix and list editing (EDIT & EDITN)
* Added option to show LASTX at the top of the stack display area: DISP→LTOP
* Added option to show ALPHA at the top of the stack display area: DISP→ATOP
* Added option to show the state of flags 0-10 in the header: DISP→HFLAGS
* Added option to show an indicator for POLAR mode in the header: DISP→HPOLAR
* 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.

2023-08-17: release 1.0.21

* Added string and list functions to the equation language. The new functions
  have been added to the FLAGS menu and CATALOG->FCN in the equation editor.
  List literals have the format {A:B:C}. List elements may be any type,
  including lists or matrices.
* Equations: Fixed stack access within matrix literals.
* Fixed LASTX option in the equation editor's stack menu (R↓ key).
* Fixed Y^X with units where X is a negative reciprocal.
* →LIST and LIST→ didn't print in TRACE mode. Fixed.

2023-08-11: release 1.0.20

* Added 1LINE and NLINE functions, to select 1-line or n-line mode. 1-line mode
  forces matrices and lists to be displayed in compact format, even if the
  display has more than 2 lines; n-line mode is the multi-line matrix and list
  display that was introduced in 1.0.17. The latter remains the default.
* 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.
* Added UNIT? to the UNIT.FCN menu.
* If an error occurs while evaluating an equation, which does not exist in the
  EQN list, going to EQN mode and pressing R/S will now add the equation to the
  EQN list, and then start editing with the cursor on the site of the error.
  This used to work only for equations that were in the EQN list beforehand.
* Added LASTX for equations, to work alongside REGX/REGY/REGZ/REGT, for
  read-only access to the RPN stack.
* 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.

2023-05-05: release 1.0.19

* Fixed the definition of the 'ton' unit (U.S. short ton). It was 10^10 times
  too large, due to a missing sign in the units definition table.
* Equations like [1:2:3]=A, when entered without a name, weren't parsed
  correctly, because the part before the first colon would be incorrectly
  interpreted as a name. Fixed.
* When an error occurs while evaluating an equation, and that equation exists
  in the EQN list, pressing R/S in the EQN list view will now start editing
  that equation, with the cursor on the part of the equation where the error
  occurred.

2023-04-17: release 1.0.18

* Fixed crash when loading state, when the current program is an equation that
  is only referenced by SOLVE/INTEG internal variables.
* Changed Σ+/Σ- so that, in NSTK mode, they will accept a single real argument,
  assuming Y=0 in that case.
* Added STOP() function for equation debugging.
* In the equation editor, the named-equation catalog could select items from
  the wrong row.
* Fixed handling of LCLV of indexed matrix. It used to leave any pushed indexed
  matrix in limbo until RTN. With this change, the pushed indexed matrix is
  popped immediately.
* Tuned TONE frequencies to A440 scale.

2023-04-10: release 1.0.17a (iOS and MacOS)

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

2023-04-05: release 1.0.17

* Matrices and lists in the X register are now shown in full, or as much of
  them as will fit anyway, when the display size is set to more than 2 rows.
* SOLVE in PLOT now provides more informative feedback for Extremum, Sign
  Reversal, and results from the direct solver.
* 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.

2023-03-17: release 1.0.16

* 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.
* Equation editor: now inserts spaces around logical AND, OR, XOR, and NOT.
* 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.
* PRP and LIST in TRACE mode now print line numbers for all lines that are
  targets of GTOL or XEQL, like it already did for LBL lines.
* Fixed pasting of GTOL and XEQL.

2022-12-14: release 1.0.15

* 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) and U+00B7 ('bullet' character used by Emu42).

2022-11-19: release 1.0.14

* Added support for new SI prefixes: R (ronna, 10^27), Q (quetta, 10^30), r
  (ronto, 10^-27), and q (quecto, 10^-30).

2022-11-12: release 1.0.13

* Fixed crash with one-arg RADIUS, ANGLE, XCOORD, and YCOORD.

2022-10-27: release 1.0.12

* 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.
* When returning to the equation editor after a parse error, the text could be
  positioned incorrectly on the screen, and the editor could even crash, in
  some cases. Fixed.
* Added Boolean operators to the equation editor's PGM.FCN menu.
* Made I%YR solver a bit more robust.
* BASE: complex numbers and numbers with units were being copied or shown in
  non-decimal bases in some cases.
* Better HEXM and 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 LINE PLOT.M SPFV SPPV TVM USFV USPV to CATALOG->MISC.
* →PAR now produces more helpful output in TRACE mode.
* Windows, Mac, and Linux versions: added Alt-1 through Alt-6 as mappings for
  the second row of the keyboard.

2022-10-01: release 1.0.11

* 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 UBASE and UVAL to the equation parser.
* PLOT: Fixed coordinate rounding at the top of the display.
* Raised precedence of _ operator, so expressions like 40000_"km"/1_"d" can now
  be written without parentheses.
* The direct solver now converts the solution to match the units of the
  previous value of the variable being solved for, if it existed already and
  had compatible units. In all other cases, the variable is overwritten, as
  before.
* iOS version: Added Calculator / Print-Out swipe direction configuration
  option to Preferences.
* Android, iOS, and MacOS ARM versions: Fixed incorrect Out of Range error
  returned by BASE functions in certain cases, e.g. BRESET 64 WSIZE 1 ENTER
  BASE÷.

2022-08-13: release 1.0.10

* Fixed crash in PARSE when parsing ITEM().
* Fixed (re,im) complex pasting. This was broken by localized copy & paste.
* Special cases for pure real and pure imaginary in SQRT.

2022-06-19: release 1.0.9

* SGN() didn't evaluate its parameter, and instead consumed the value from
  level 1. Fixed.
  Note that this was a code generator bug; any expressions containing SGN()
  will have to be re-parsed in order to eliminate the effects of this bug.
* SOLVE in PLOT, when used with a function with X:<STK>, would create an
  extraneous variable named "". Fixed.

2022-06-18: release 1.0.8

* I%YR iteration robustness improvements.
* Localized Copy & Paste.
* Fixed handling of invalid number keys in BASE.
* Setting AMORT->TABLE parameters to 1 initially.
* Fixed #P parameter check so it doesn't allow 0.
* iOS and MacOS versions: Fixed skin rendering for iOS 16 and MacOS 13.

2022-06-11: release 1.0.7

* Fixed crash in variable catalog.
* I%YR robustness improvements.

2022-06-08: release 1.0.6

* Fixed I%YR when PMT=0 (broken in 1.0.5)

2022-06-08: release 1.0.5

* TVM: PMT returned incorrect results in BEGIN mode. Fixed.
* TVM: In some cases, I%YR could return inaccurate results because of poor
  starting guesses for the iteration. Fixed.
* More accurate complex ACOS and ACOSH.
* Android version: Now removes itself from the task list if exited using OFF.

2022-05-17: release 1.0.4

* TVM: Fixed error checks in N.

2022-05-13: release 1.0.3

* 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.
* PLOT now detects <Not a Number> in XMIN/XMAX/YMIN/YMAX and reports Invalid
  Data, instead of freezing.

2022-05-09: release 1.0.2

* Added code to prevent freeze in PLOT under certain circumstances.

2022-05-09: release 1.0.1a (Android only)

* Fix for crash on startup with Android versions before 4.3.

2022-05-05: release 1.0.1

* DIM "X", when X existed but was not a matrix, would cause a crash. Fixed.
* Equations: NOT was broken, not recognized as Boolean operator. Fixed.
* Equations: Added TYPE? and UNIT? functions.

2022-05-05: release 1.0a (Windows and Linux)

* More efficient display updating, so long-running programs that update the
  display a lot don't waste a lot of CPU time repainting the display faster
  than the human eye can see, and spend more time actually running the program
  instead. Note that this update is for Windows and Linux only, because the
  Android, iOS, and MacOS versions already worked this way.

2022-04-27: release 1.0

* Based on Free42 3.0.11, with the addition of: a larger and resizable display,
  algebraic equations, attached units, directories, time value of money and
  amortization schedules, and function plotting.
