summaryrefslogtreecommitdiff
path: root/emulators
AgeCommit message (Collapse)AuthorFilesLines
2022-07-20emulators/free42: explicitly include fenv.h on platforms that use itdbj2-6/+10
second attempt to fix NetBSD build breakage thanks @gdt for pointing out that fenv.h wasn't being included when expected
2022-07-19emulators/free42: fix fenv.h inclusion detection on NetBSDdbj2-4/+9
2022-07-14Bump everything affected by the jpeg.buildlink3.mk fix.dholland2-4/+4
2022-07-14remove redundant file installdbj1-3/+1
2022-07-14emulators/free42: update to version 3.0.13dbj8-102/+64
2022-06-16: release 3.0.13 * Fixed handling of invalid number keys in BINM and OCTM modes. * Windows and Linux versions: Fixed handling of non-ASCII separator characters. 2022-06-14: release 3.0.12 * 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. 2022-05-05: release 3.0.11a (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-05-01: release 3.0.11 * 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 Linux versions: Now support fractional display scaling. 2022-01-27: release 3.0.10 * 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. 2021-12-29: release 3.0.9a (Windows only) * Fixed crash when launching without state 2021-12-26: release 3.0.9 * Fixed handling of single-character strings in programs. This was broken in the previous release. 2021-12-23: release 3.0.8 * 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. 2021-11-07: release 3.0.7 * 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. 2021-07-27: release 3.0.6 * Added string and list functions. See the Free42 web site for details. * Added lowercase letters to the menu font. 2021-07-01: release 3.0.5 * 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. 2021-06-10: release 3.0.4 * 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. 2021-04-28: release 3.0.3 * 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. 2021-03-29: release 3.0.2 * 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. 2021-03-04: release 3.0.1 * 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. 2021-02-22: release 3.0 * 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. 2021-02-02: release 2.5.25 * Fixed pasting of zero. This was broken in 2.5.21. 2021-01-17: release 2.5.24a (Android only) * Fixed screen rotation issue with Android 11. 2021-01-13: release 2.5.24 * 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. 2021-01-06: release 2.5.23 * 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. 2020-11-24: release 2.5.22a (Android only) * The previous release was crashing on a lot of devices; apparently the NDK version I used to build it, r21b, is incompatible with certain older devices. Going back to r19c for now. 2020-11-23: release 2.5.22 * 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. 2020-10-24: release 2.5.21 * 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. 2020-09-20: release 2.5.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. 2020-07-05: release 2.5.19 * Fixed stack lift behavior with GETKEY. 2020-04-11: release 2.5.18 * 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. 2020-02-27: release 2.5.17b (Android only) * Removing the n-key rollover and swipe-to-switch that were introduced in the previous release; 2.5.17a suffers from missed keystrokes and erratic swipe detection, caused by the new logic. Since I appear to be unable to do proper testing on these features with my own phone, I am scrapping them and have no plans to re-introduce them. (I am not removing them from the iOS version, since they appear to be working fine there.) 2020-02-22: release 2.5.17a (Android and iOS) * Android version: Can now switch between the calculator and print-out by swiping sideways. This feature is experimental and may not work on all phones. * Android version: Implemented n-key rollover. * iOS version: 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. 2020-02-13: release 2.5.17 (iOS, Windows, MacOS, and Linux) * 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. 2020-02-08: release 2.5.16b (iOS only) * Can now switch between the calculator and print-out by swiping sideways. 2020-02-02: release 2.5.16a (iOS only) * Fixed file import from the Files app. 2020-01-25: release 2.5.16 * Fixed GETKEY behavior with skins that use direct command mapping. * Fixed GETKEY behavior with physical keyboards in ALPHA mode. 2020-01-18: release 2.5.15 * 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. 2020-01-11: release 2.5.14 * Some fixes to Paste to improve compatibility with HP-41 text. 2020-01-11: release 2.5.13a (Linux only) * Another thin-dark-line fix, this time for GDK_SCALE > 1 on certain platforms, including Raspbian 10. 2020-01-09: release 2.5.13 * When REGS was shared, ASTO nn could store the character data into the wrong copy of the matrix. Fixed. 2020-01-07: release 2.5.12c (Linux only) * When the print-out area was still growing, i.e. hadn't reached its maximum height of 30,000 pixels yet, it was not being repainted in a timely manner. Bug introduced by the switch to GTK 3; did not affect early GTK 3 versions but became apparent in Ubuntu 18.04 and 19.10. Fixed. 2020-01-03: release 2.5.12b (Linux only) * Made repaint logic more efficient, also making it work under Wayland. 2019-12-01: release 2.5.12a (Linux only) * In scaled mode (GDK_SCALE greater than 1), bitmap smoothing causes drawing of the display bitmap to bleed outside the display rectangle, and this can lead to thin dark lines being left behind around the display, and that looks ugly. A similar problem exists in the Android version, and I implemented a similar fix here, namely, to always repaint the entire display when the core updates it, and to update a slightly larger rectangle than the display itself. Because this fix can cause programs to run slower on older systems, I added an option to Preferences to switch back to using the old logic. 2019-11-28: release 2.5.12 (Windows and Linux) * Linux version: Switched from GTK 2 to 3, for HiDPI support. * 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. 2019-10-25: release 2.5.11 * 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. 2019-10-11: release 2.5.10 * 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. 2019-10-05: release 2.5.9b (Android and iOS) * Android version: Could launch with the wrong screen orientation under certain circumstances. Fixed. * iOS version: Greater range of key click volume levels. * iOS version: Added sanity check for raw files imported using Copy to Free42. 2019-09-28: release 2.5.9a (Android only) * Several changes in file handling. No longer associates itself with all files, so Free42 won't be offered to open files of any types other than raw and f42. Unfortunately, this also means that opening f42 files directly from email attachments no longer works; state files will now need to be downloaded, then opened using the file selection boxes, using More -> Import in the States view. Cumbersome, but it's the best I can do given Android's lack of file extension filtering for email attachments. * Added a slider for the key click volume; now offers nine levels plus silence. * Changed the haptic feedback slider to a logarithmic scale, adding a lot more resolution to the weaker end of the scale, for those with devices that are capable of it and fingers sensitive enough to feel it. 2019-09-21: release 2.5.9 * Importing programs would insert the programs at the current location, instead of at the end of memory. Bug introduced in 2.5 or one of the subsequent revisions. Now 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. 2019-09-20: release 2.5.8 * 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. * Android and iOS versions: Fixed a couple of import-related crashes. 2019-09-16: release 2.5.7 * 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 was 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. 2019-09-09: release 2.5.6a (iOS only) * iOS version: Made the app single-threaded. Interim version, to deal with the mysterious crashes in [CalcView drawRect:]. 2019-09-08: release 2.5.6 * 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. 2019-09-06: release 2.5.5 * 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. * 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. 2019-09-02: release 2.5.4 (iOS only) * 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. 2019-09-01: release 2.5.3 * 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. 2019-08-31: release 2.5.2 * 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. * 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. 2019-08-28: release 2.5.1 * Fixed bug in 2.5 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. * iOS 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. 2019-08-25: release 2.5 * 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. 2019-07-12: release 2.4.2 * 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, iOS, and MacOS 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 iOS 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. * iOS 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. 2019-07-03: release 2.4.1 * Fixed several bugs in BWRAP mode. 2019-07-01: release 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. * Android, iOS, and MacOS versions: 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. 2019-06-25: release 2.3.1a (Android only) * Adding -mfpu=vfp to compilation flags when building the Intel library for armv7. Apparently, with NDK r19c, Neon is enabled by default, but Neon is not supported on all armv7 Android devices, so this setting is causing 2.3.1 to crash on certain phones. (2.2.1b and earlier were built with r4b, which did not have this problem.) 2019-06-25: release 2.3.1 * Android version: Implemented the 2.3 features, with the exception of Copy Print-Out as Image. (Apparently Android doesn't support images on the clipboard.) * MacOS version: Copy Print-Out as Image didn't handle wrap-around in the image buffer correctly. Fixed. * Windows and Linux version: Implemented Paper Advance, Copy Print-Out as Text, and Copy Print-Out as Image. * iOS 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 iOS at the time, probably because the iOS version didn't support landscape mode then. 2019-06-15: release 2.3.0a (iOS only) * Added the 2.3 features. This should have been called version 2.3 as well, but a mistake with the release build forced me to use the next higher version number instead. 2019-06-12: release 2.3 (MacOS only) * 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 Print-Out as Text and Copy Print-Out as Image. 2019-05-29: release 2.2.1d (source code only) * Migrated the Android project from Eclipse with ADT to Android Studio. Also building the native code for x86 and x86_64 now. Not sure if I should release that, but it is convenient for testing in the Android Emulator, now that Google no longer releases ARM system images for the emulator. The minimum Android API level requirement went from 8 to 14 (2.2 to 4.0), but that seems like an acceptable price to pay. 2019-05-24: release 2.2.1c (iOS only) * Fixed crash in Paste when clipboard contained no text. 2019-05-20: release 2.2.1b (Android only) * Made the app explicitly single-instance (by adding launchMode="singleInstance" to Free42Activity in the app manifest). This should eliminate the remaining null-pointer crashes in the native code, and also prevent State File Corrupt scenarios. 2019-05-19: release 2.2.1a (Android only) * Added 64-bit native code. 2019-05-11: release 2.2.1 * 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 MacOS versions. * MacOS Dashboard version: Didn't recognize comma as decimal key. Fixed. 2019-04-07: release 2.2 * 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, MacOS, 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. 2019-03-27: release 2.1.1 (Android only) * The "Maintain skin aspect ratio" setting didn't stick when the app was exited and restarted. Fixed. 2019-03-26: release 2.1 * 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 iOS 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. * iOS version: The "Maintain skin aspect ratio" and "Print to text" options in the Preferences were switched. Fixed. * iOS version: Fixed handling of announcements in the status bar (audio recording, active call, active GPS). * iOS version: Turned optimization back on. It looks like the optimizer bug (see release notes for 2.0.21a) has been fixed. 2019-03-18: release 2.0.24h (Android only) * The screen update logic in the previous version was incorrect and caused the app to appear unresponsive on many devices. Fixed. 2019-03-17: release 2.0.24g (Android, iOS, and MacOS) * Android, iOS, and MacOS versions: Enabled non-integral display scaling. * Android and iOS versions: 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. * iOS version: Implemented support for landscape orientation. * iOS version: Fixed alignment of "Done" buttons. 2019-03-08: release 2.0.24f (iOS only) * Added Haptic Feedback setting in Preferences. 2019-03-03: release 2.0.24e (Android only) * Fixed crash when calling ON or OFF from a program. * Fixed a bug that could leave a corrupted state file under certain circumstances. 2019-02-28: release 2.0.24d (Android only) * Fixed crashes while printing. 2019-02-26: release 2.0.24c (Android and iOS) * Android version: Removed all restrictions on file selection dialogs, and instead added a "Home" button, so you can always navigate back to /sdcard/Android/data/com.thomasokken.free42 if you get stuck somewhere. * iOS version: Fixed the white bar that was showing up above the skin on iPads running iOS 12. 2019-02-25: release 2.0.24b (Android only) * Made file selection dialogs full-screen. * Fixed file selection behavior for Import Programs and Select Skin. It now starts in the writable storage directory, but does allow navigation out of it. 2019-02-25: release 2.0.24a (Android and MacOS) * Android version: Lifted file selector directory restriction for Import Programs and skin selection, keeping it in place for Export Programs and selecting print-out files. * MacOS version: The previous release broke Import Programs. Fixed. 2019-02-24: release 2.0.24 * 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). * iOS version: Added Key Clicks setting in Preferences. * Windows and MacOS 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. 2019-02-18: release 2.0.23c (iOS only) * The previous release calculated the skin scale incorrectly for certain skins, causing them to be displayed too small. Fixed. 2019-02-17: release 2.0.23b (iOS only) * 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. 2019-02-11: release 2.0.23a (iOS only) * Replaced iPhone X skin with a more screen-filling one. 2019-02-09: release 2.0.23 * 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. * iOS version: Added basic iPhone X support. 2019-01-26: release 2.0.22c (Android only) * New Main Menu. This should be compatible with all Android versions, including Amazon Fire HD tablets and other devices that sabotaged the old menu after it started targeting Android 8. * Added code to request storage and GPS access when needed. 2019-01-13: release 2.0.22b (Android only) * Another fix for invisible overflow menu items. 2019-01-12: release 2.0.22a (Android only) * Fixed invisible overflow menu items. 2019-01-12: release 2.0.22 * 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 ▲ and ▼, 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 iOS versions: OFF now turns off "continuous on" mode. 2018-11-24: release 2.0.21b (Windows only) * Fixed Alt-Tab behavior. 2018-07-03: release 2.0.21a (iOS only) * Turned off all optimization for release builds; the latest iOS developer tools appear to have a buggy optimizer, and it is causing number display in OCT and HEX modes to misbehave -- they show numbers with unwanted leading zeroes, for a total number of digits that would be appropriate for BIN mode, so 1=>1, 2=>02, 3=>03, 4=>004, etc. 2018-06-24: release 2.0.21 * 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. 2018-03-12: release 2.0.20 * MATA, MATB, and MATX should exhibit the same stack lift behavior as EDIT and EDITN, but didn't. Fixed. 2018-03-10: release 2.0.19 * 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. 2018-03-09: release 2.0.18 * EDIT, EDITN, and GOTO Row/Column should disable stack lift, but they didn't. Fixed. 2018-03-02: release 2.0.17 * 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. 2018-02-22: release 2.0.16 * 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, ΣREG, 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. 2018-02-17: release 2.0.15 * 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. 2018-02-10: release 2.0.14 * 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. 2018-02-06: release 2.0.13 * Paste didn't handle numbers with negative exponents correctly. Fixed. 2018-02-02: release 2.0.12d (iOS only) * Fixed crash in GIF printing. 2018-01-30: release 2.0.12c (Android only) * Another fix for crash on orientation change while printing. 2018-01-29: release 2.0.12b (Android only) * Switching between portrait and landscape modes, while printing was in progress, could cause a crash. Fixed. 2018-01-28: release 2.0.12a (Android only) * Fixed handling of state files that were corrupted in a way that caused persistent crashes on the first keystroke. 2018-01-27: release 2.0.12 * Fixed pasting of SIZE lines. * When pasting numbers, spaces are now allowed as thousands separators. * MacOS and MacOS Dashboard versions: Are now 64-bit. * MacOS and Linux versions: Fixed Caps Lock handling, so Caps Lock + Esc no longer exits. * Android and iOS versions: Implemented "continuous on" mode (ON function, flag 44). 2018-01-26: release 2.0.11a (Android only) * Removed the cleanup of variables in core_quit(); it looks like this was responsible for the failure mode where the app would crash at the first keystroke, consistently, forcing uninstall/reinstall. * Pasting numbers that ended in CRLF, as when copying a single cell from Excel, didn't work; they were interpreted as strings. Fixed. 2018-01-14: release 2.0.11 * 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. * Android version: Printing lots of output quickly, for example, by running a program in TRACE mode, would cause the user interface to become sluggish or even unresponsive on some devices. Fixed by posting UI updates less aggressively. 2018-01-07: release 2.0.10 * 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. 2018-01-07: release 2.0.9 * 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. * All versions except MacOS Dashboard: 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. * MacOS version: Implemented battery checker. * Linux version: Added /sys/class/power_supply support in battery checker. 2017-12-26: release 2.0.8 * 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. 2017-12-21: release 2.0.7c (Windows only) * Decimal: SIN and COS of 45 degrees or 50 grads returned an inaccurate result, correct to only 16 digits. Fixed. 2017-12-18: release 2.0.7b (Android only) * The "Always Paint Entire Display" setting, introduced in the previous version, didn't stick after app restart. Fixed. 2017-12-17: release 2.0.7a (Android only) * Added "Always Paint Entire Display" option. This prevents display glitches with certain combinations of devices and skins. 2017-11-19: release 2.0.7 * 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 ▼▲ 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, MacOS, and MacOS Dashboard 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. * iOS version: Painting the display could be glitchy if either or both of its coordinates were odd. Fixed by forcing them to be even. 2017-08-12: release 2.0.6 * 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. 2017-07-30: release 2.0.5 * 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 ▲ and ▼ keys would perform BST and SST, which should be blocked. Fixed. * Testing flag 75 would turn on the programmable menu. Fixed. * iOS version: Fixed a few display alignment issues with the built-in 4" skin. 2017-05-29: release 2.0.4 * Implemented special-case code for pure real and pure imaginary numbers in all the complex logarithmic, trigonometric, and hyperbolic functions. 2017-05-28: release 2.0.3 * 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. * iOS 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. 2017-04-28: release 2.0.2 * 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). 2017-04-23: release 2.0.1 (beta) * 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. * MacOS Dashboard version: Fixed multi-line pasting. 2017-04-22: release 2.0 (beta) * Copy & Paste now handle matrices, ALPHA mode, and PRGM mode. 2017-04-01: release 1.5.15 * 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. 2017-03-11: release 1.5.14 * 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. * Linux 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). 2017-01-22: release 1.5.13 * 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. 2016-10-03: release 1.5.12 * Android version: Fixed UTF-8 printing, which was broken in 1.5.11. * All versions: When printing to text, up-arrow now looks like an up-arrow, instead of a caret. 2016-10-01: release 1.5.11 * 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. * Android version: Didn't save the "raw text" print setting. Fixed. * Android version: Added landscape skin; made it the default for landscape mode in new installs. 2016-09-04: release 1.5.10 (Android, Windows, MacOS, and Linux) * Fixed AGRAPH bug with complex number in X. 2016-09-04: release 1.5.9 (Android, Windows, MacOS, and Linux) * 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. 2016-04-26: release 1.5.8f (Android only) * Rolled back 8e, which was a disaster; it didn't fix the remaining black line issues, but it did cause crashes everywhere. 2016-04-26: release 1.5.8e (Android only) * The previous fix for the thin-black-line problem didn't do the job on some devices. Here's another fix that should do a better job. 2016-04-25: release 1.5.8d (Android only) * Fixed the thin black lines that would sometimes appear around the display. * In full-screen mode, swiping down from the top would post the menu, because the initial touch would be in the same area that Free42 watches as the menu trigger. I changed the code so that the trigger only fires if the user lifts their finger while still inside that critical area, which will only happen if the downward swipe is very short. * 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 skin. 2016-04-24: release 1.5.8c (Android only) * Implemented true full-screen mode. This hides the navigation bar as well the status bar, on devices running Android 4.4 (KitKat) or later. 2016-04-23: release 1.5.8b (Android only) * Print-Out is now scaled to make better use of available screen width. * Fixed key clicks. * Implemented Reverse Portrait (upside-down) mode. 2016-04-17: release 1.5.8a (Android only) * Tapping in the top half of the display now brings up the app's option menu. 2016-04-17: release 1.5.8 * 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 MacOS Dashboard version; the display repaint logic now supports Yosemite (10.10) and later. 2016-03-19: release 1.5.7a (Android only) * Made the action/title bar optional. * Added full-screen mode (removes action/title bar and status bar). * Added installLocation=auto to the manifest, so the app can now be installed on an SD card. 2016-02-28: release 1.5.7 * 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). 2014-12-21: release 1.5.6 * iOS version: Implemented Copy and Paste. * iOS 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. 2014-11-12: release 1.5.5 * Decimal version: Entering a number with an empty exponent (e.g. 1E or 1E-) would yield <Not a Number>. Fixed. * iOS 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. 2014-11-08: release 1.5.4a (Android only) * Fixed crash on startup in Android 5.0 (Lollipop). * Printing to text would truncate the file whenever it was reopened, opening it for writing rather than appending. Fixed. 2014-09-23: (no new code release) * Added nova1_1096 skin, for iPhone 5, to the Free42iPhoneSkins package. Contributed by Keith Carangelo. 2014-09-06: release 1.5.4a (iOS only) * Fixed keyboard handling in the Preferences and Select File dialogs. * Fixed scrolling behavior (in 1.5.4, windows were sized 20 pixels beyond the bottom of the screen, making the bottommost bit of scroll views drop off the screen). * Added 4" skin for iPhone 5, and added code to select the best-fitting built- in skin on first launch. 2014-07-22: release 1.5.4 * Decimal version: Fixed ACOS. It would return 0 for acos(-1). This bug was introduced in release 1.5. 2014-06-21: release 1.5.3a (Android only) * Made GPS optional. When I added the ACCESS_FINE_LOCATION permission in 1.4.78, that had the side effect of making GPS a requirement. In 1.5.3a, the app manifest explicitly states that the GPS is not required. 2014-05-25: release 1.5.3 * Fixed crash in SIMQ if any of MATA, MATB, or MATX already existed and was a scalar or string. 2014-05-10: release 1.4.78 (Android only) * Fixed the LOCAT function, by adding the ACCESS_FINE_LOCATION permission. 2014-03-16: release 1.5.2 * 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). 2014-03-15: release 1.5.1 * 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. 2014-03-09: release 1.5 * 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).
2022-07-13sameboy: update to 0.15.1nia2-6/+6
The SDL frontend now allows switching between audio drivers, rather than defaulting to the "best" supported driver
2022-07-10qemu: Fix typo in assignmentryoon1-2/+2
2022-07-10qemu: does not support python 2wiz1-4/+5
2022-07-07sameboy: update to 0.15nia4-9/+10
SameBoy v0.15 New/Improved Features * Improved UI for the VRAM Viewer's palette and object views * The bundled register names symbol file now correctly names several undocumented registers * Improved performance by better utilizing Link-Time Optimizations * The Memory Viewer, as well as the debugger examine command, no longer trigger side effects when reading from memory * Introducing PPU "fast paths", improving performance by up to 34% with not accuracy losses * Removed the use of slow floating point arithmetics in the APU code to improve performance * Introducing lazy APU output generation, improving performance by up to 17% * Link-Time Optimizations are now enabled for Windows build, significantly improving performance on Windows * A new dma debugger command * New icon, minor visual refresh across both the Cocoa and SDL frontends * The debugger apu commands now display a single channel * Audio recording is now available in both the Cocoa and SDL frontends * The SDL frontend now uses XAudio2 on Windows, when available * The more common rX hardware symbol naming scheme now replaces the IO_X scheme; the latter remains supported * General code optimizations for overall performance improvements Accuracy Improvements/Fixes * The Game Boy Pocket/Light is now available for emulation * Every CGB revision is now available for emulation, adding CGB revisions 0, A, B and D * An option to select the CGB revision is now available in the SDL port * Added MBC7 support * The mouse, as well as a joystick, can be used for motion controls * Accurate timing of clearing bits in the IF register * Improved accuracy of LY change timings * Improved accuracy of the LY=LYC condition in revisions prior to CGB-D * Improved emulation of a glitch that makes channel 3 use the CPU's address bus as an index to the wave sample buffer * Fixed an incorrectly emulated theorized glitch where writing to VRAM in certain timings would corrupt data * Improved emulation of the TILE_SEL glitch * Major improvements to DMA, HDMA, and GDMA, including timings, revision differences, interaction with halt/stop, and all sorts of bus conflicts * This allows pixel-perfect emulation of certain demos, such as It Came from Planet Zilog * Improved IR modelling, fixes Gen 2 Pokémon Mystery Gift * Added MMM01 support, including Mani carts * Improved emulation of channel 1/2 "zombie stepping" * Improved serial accuracy * Correct emulation of how SCX prolongs mode 3 * Including emulation of "SCX banging", which can disrupt the PPU state machine and, on a real device, damage the LCD * Improved emulation of object timings where X=0 * Fixed a regression where MBC5's initial ROM bank was not 1 * Improved emulation of the Game Boy Camera MBC * Improved HuC-1 emulation, fixes a Robopon Japanese Prototype ROM Bug Fixes * Fixed a bug where certain writes, when emulating CGB-C, would corrupt the emulator state * Fixed a bug where the SDL fronted did not correctly load the palette setting * Fixed a bug where the debugger undo command was available while not stopped * Fixed GDMA being used incorrectly in SameBoot * Fixed a bug where the obscured object indicator did not function correctly in the VRAM Viewer's object view * Fixed the Preserve Waveforms setting, now it behaves as intended * Fixed SDL crashes on certain Linux systems * Fixed UI issues on OS X Mavericks * Fixed achievement supports in the Libretro frontend * Fixed the 16x16 cartridge icon in both Cocoa and FreeDesktop * Fixes audio glitches during the SGB jingle * Visual fixes for the GBS player on macOS Big Sur and newer Misc Internal Changes * Improvements to the input hints API * Added safe memory read API * New memory write callback API * New API to determine DMG-mode CGB * Improved APIs to handle input * New execution callback API * New LCD line callback API * An API for adjusting the RTC speed, for TAS verifications * An API for detecting lag frames * The direct access API now supports accessing the CPU registers * An API for allowing illegal directional inputs * General preparation for future support of different AGB revisions
2022-07-02PC6001VX: update to 3.9.0.tsutsui3-9/+8
pkgsrc changes: - switch to ffmpeg5 Upstream changes: 3.9.0 2022/06/27 * Updated PC-6001 compatible basic ROMs to 0.7.5. * Updated PC-6001mk2/6601 compatible basic ROMs to 0.4. * PC-6001mk2/6601 compatible CGROM now covers semi-graphic characters. * (Windows,64bit)Fixed issue in opening long replay file.
2022-07-02*: Recursive revbump from audio/pulseaudioryoon12-23/+24
2022-07-02qemu: update HOMEPAGEadam1-2/+2
2022-07-01mame: update to 0.245.wiz4-8/+27
The highly-anticipated release of MAME 0.245 has finally arrived! As I’m sure many of you are already aware, we’ve added support for two elusive arcade games that didn’t see widespread release: Megumi Rescue and Marble Madness II, and the Konami Polygonet system has finally come to life. But before we get to that, there are some changes to MAME’s user interface that you should be aware of. Input options have been moved off the main menu to a submenu of their own. Depending on the system, there can be quite a few of them, and they weren’t all grouped. There’s also a new option to see the input devices recognised by MAME, which should help with diagnosing issues. Megumi Rescue was exhibited at a trade show, but apparently never sold as an arcade game. A home system port was released, but only in Japan. The original arcade game uses a vertically-oriented monitor, and lacks the life bar system and vertical scrolling found in the home version. Despite the arcade version remaining unreleased, and the home version never being widespread, the game was widely copied for TV game systems. It’s nice to see the original preserved all these years later. Marble Madness II was considered a failure on location test. It demonstrates Atari’s complete failure to understand what Mark Cerny got right when he made the mid ’80s classic. A few examples survived in the hands of collectors, but the game was never seen widely. The Polygonet system was Konami’s first foray into 3D arcade games. It was quite apparent that their in-house system wasn’t able to compete toe-to-toe with offerings from Sega and Namco. Polygonet Commanders was added to MAME almost twenty years ago, and saw sporadic progress for a few years after that. Regular contributor Ryan Holtz has written an engaging blog post about his adventures bringing it up to a playable state this month. The two games haven’t been promoted to working yet as they haven’t been extensively tested, but we’d love it if you try them out and post your experiences, good or bad. We’ve got more complete emulation for three Mac NuBus video cards this month: the Apple Macintosh Display Card, the SuperMac Spectrum/8 Series III, and the SuperMac Spectrum PDQ. The Macintosh Display card, which MAME uses by default for the Mac II, now supports configuring the amount of video RAM installed, as well as a selection of monitors with correct resolutions, refresh rates and colour profiles. The SuperMac Spectrum/8 Series III supports on-screen resolutions up to 1024×768, and virtual desktop resolutions up to a massive 4096×1536 in Black & White mode. Virtual desktop panning and desktop zoom are hardware-accelerated. The Spectrum PDQ supports resolutions up to 1152×870, with hardware acceleration for things like moving windows in 256-colour modes. Please be aware that MAME currently has trouble with some combinations of Mac video cards – if you want to use multiple monitors on your emulated Mac, it’s best to stick with the Macintosh Display Card or Radius ColorBoard. If you’re you’re just looking to jump into Mac emulation, there’s some helpful information to get you started on our wiki. Thanks in large part to the efforts of Ignacio Prini and Manuel Gomez Amate, the ZX Spectrum cassette software list now includes the Spanish MicroHobby magazine cover tape and type-in program collection. A number of prototypes cartridges have been added for the Game Boy, Super NES and other consoles. Commodore 64 tapes, Apple II floppies, and game music rips in VGM format have each seen a batch of additions.
2022-06-30*: Revbump packages that use Python at runtime without a PKGNAME prefixnia11-20/+22
2022-06-30nono: Fix pkglint warnings.nia2-6/+6
2022-06-30update COMMENT:jun1-2/+2
"OMRON LUNA-I/LUNA-88K (and SHARP X68030) emulator runs on NetBSD and etc."
2022-06-28*: recursive bump for perl 5.36wiz16-31/+32
2022-06-25nono: add fsharp-license, to support NetBSD/x68kjun1-2/+3
2022-06-18nono: update to 0.4.0jun3-7/+9
0.4.0 (2022-06-18) vm(New): "Implement FDC/FDD on X68030 and 2HD/2HC floppies." vm(New): "Implement a BUSY state on OPM Registers on X68030." vm(New): "Implement DMAC more." vm(New): "Support to specify external image path for X68030 ROM." vm(New): "Implement X68030 ROM30 Emulation. It can boot NetBSD/x68k but not Human68k." vm(New): "Warn if an external CGROM image doesn't contain 6x12 font on X68030." vm(New): "Implement power LED and power off on X68030." vm(New): "Implement an option that synchronize RAM size field in SRAM and actual RAM size on X68030." vm(New): "Implement keyboard monitor and TVRAM monitor." vm(Update): "SRAM.DAT"." vm(Update): "Change configuration keyname of FPU to fpu-type." vm(Update): "Add some registers to CRTC monitor on X68030." vm(Fix): "Fix timing and destination address of TVRAM raster copy on X68030." vm(Fix): "Fix register access on SCC on X68030." vm(Fix): "Fix to allow SCC bit rate to be set for each channel on X68030." vm(Fix): "Fix reversed mouse buttons." vm(Fix): "Change SCSI ID to be fixed to 7 on X68030." vm(Update): "Implement resynchronizing time." m68k(Fix): "Fix timing that MPU checks interrupts." GUI(New): "Implement zoom in feature for LUNA Frame buffer/X68030 TVRAM monitor." GUI(Fix): "Fix the maximum window size of LUNA Frame buffer/X68030 TVRAM monitor window." GUI(Fix): "Fix an abnormal termination on vector monitor." GUI(Fix): "Fix drawing when update rate is low." debugger(Fix): "Fix m68k step execution when a reset exception occurs since 0.3.0." debugger(Fix): "Fix m88k instruction pointer on step execution since 0.3.0" debugger(Update): "Implement a ct command." app(Fix): "Fix a problem that application may not be able to be terminated since 0.2.6" app(Fix): "Fix an abnormal termination when mouse capture is released."
2022-06-12qemu: Permit to use `-cpu host' with NVMMleot4-2/+52
PKGREVISION++
2022-06-11qemu: correct pthread_setname_np invocation on macOSbsiegert2-5/+7
From kflu in PR NetBSD/pkgsrc#107. Note that I did not test a macOS build due to a lack of access to a Mac.
2022-06-06emulators/simh: add notes re license, simh3, open-simh.rhialto2-1/+9
2022-06-06Add open-simh and simh3.rhialto1-1/+3
2022-06-06Add emulators/open-simh.rhialto5-0/+462
The fork from emulators/simh due to licensing issues.
2022-06-06Add emulators/simh3.rhialto5-0/+145
The "original" Bob Supnik-maintained series.
2022-06-02ckmame: require GCC 9 for std::filesystemwiz1-2/+2
GCC 8 might work, but "GCC 8.x requires linking with -lstdc++fs" and I don't want to complicate this.
2022-05-31ckmame: update to 2.0.wiz3-10/+8
2.0 (2022-05-31) ================= * Support for configuration file and multiple sets. * Overhaul command line options. * Automatically update ROM DB. * Speed up ROM sets with many files shared among many games. * Improve parse error reporting, don't create mamedb for dats with errors, fix inconsistencies in dat. * Improve detector support.
2022-05-26qemu: remove patch that was removed from distinfo during last updatewiz1-24/+0
2022-05-25mame: update to 0.244.wiz3-7/+8
Given how many exciting updates have gone into MAME 0.244, it’s hard to believe it’s only been a month since the last release! Only one disk has been added to the Apple II software lists, but it comes with a very engaging story involving physically damaged media and manual data repairs. The Zilog Z80 CPU has had a bit of an overhaul this month, allowing more accurate memory access timings for the ZX Spectrum family. This fixes a lot of broken visual effects and other glitches. The HP 9000/300 series computers have had the necessary floppy disk image formats hooked up, allowing them to mount floppy disks from their software list. MAME’s driver for JPM’s first CPU-based fruit machine platform, dating all the way back to the late 1970s, has been almost completely rewritten this month. Four games are now playable, albeit with minimal internal artwork. Colour video output has been implemented for Zilec’s Vortex. Don’t get too excited, though – while the approach they used to produce colourful graphics without adding any video memory is technically interesting, the results are very ugly and don’t make a bad game any better. Other improvements in arcade emulation include: Score display and diorama control outputs have been hooked up for Bubble Trouble (this means you’ll need updated artwork for Golly! Ghost! as well). Layer offsets in Slap Fight and Alcon should be fixed, and cocktail mode now works for the original sets. The communication board for Super Street Fighter II: The Tournament Battle is now supported, allowing it to actually run in eight-player tournament mode. SDL builds (the default for Linux and macOS) now detect game controller reconnection. Note that due to limitations of SDL itself, MAME may confuse similar controllers, potentially causing issues if multiple controllers are disconnected at the same time. Issues using MIDI input or output with 64-bit Windows builds should be fixed.
2022-05-19qemu: Update to 7.0.0ryoon4-21/+37
CHangelog: == System emulation == === Incompatible changes === Consult the [https://qemu-project.gitlab.io/qemu/about/removed-features.html 'Removed features' ] page for details of suggested replacement functionality === New deprecated options and features === Consult the [https://qemu-project.gitlab.io/qemu/about/deprecated.html "Deprecated Features"] chapter of the QEMU System Emulation User's Guide for further details of the deprecations and their suggested replacements. Additional note: The QEMU project currently considers to drop the slirp submodule in future releases, i.e. the QEMU tarball won't embed the code for user mode networking in the future anymore, so that an external libslirp installation is required. Most OS distribution already ship a libslirp package nowadays (except for OpenBSD which is already known and hopefully will be fixed soon), but if you are still using another OS distribution that does not provide a libslirp package yet, please send a note to the [[Contribute/MailingLists|qemu-devel mailing list]] and ask your OS vendor to include such a package in the next release. === 68k === === Alpha === === Arm === * The virt board has gained a new control knob to disable passing a RNG seed in the DTB (dtb-kaslr-seed) * The AST2600 SoC now supports a dummy version of the i3c device * The virt board can now run guests with KVM on hosts with restricted IPA ranges * The virt board now supports virtio-mem-pci * The virt board now supports specifying the guest CPU topology * On the virt board, we now enable PAuth when using KVM or hvf and the host CPU supports it * xlnx-versal-virt now emulates the PMC SLCR * xlnx-versal-virt now emulates the OSPI flash memory controller * xlnx-zynqmp now models the CRF and APU control * The Arm GICv3 ITS now emulates the previously missing MOVI and MOVALL commands * New board model: mori-bmc * We now support emulating FEAT_LVA * We now support emulating FEAT_LPA * We now support emulating FEAT_LPA2. (Note that this is disabled by default for the 'virt' board's versioned machine types prior to 7.0 (ie 'virt-6.2', 'virt-6.1', etc) because Linux kernels prior to v5.12 have a bug which means they will not boot on a CPU which has LPA2.) === AVR === === Hexagon === === HPPA === * Support up to 16 virtual CPUs * Improved artist graphics driver for HP-UX VDE, HP-UX CDE and Linux framebuffer * Mouse cursor focus and positioning now works much better under HP-UX X11 * Emulated TOC button can be triggered with "nmi" in the qemu monitor * Added support for Qemu SCSI boot order option * Possibility to change system HOSTID for HP-UX and Linux * Added firmware 16x32 pixel bitmap font for use on HDPI screens * Ability to choose serial or graphical console as default firmware console === Microblaze === === MIPS === === Nios2 === === OpenRISC === ==== Machines ==== * Support up to 4 cores up from 2 on the OpenRISC sim machine * Support loading an external initrd image on the OpenRISC sim machine * OpenRISC sim machine now automatically generates a device tree and passes it to the kernel === PowerPC === * Updates of PowerNV and pSeries documentation ==== Machines ==== * Deprecation of taihu machine * Large rework of PPC405 machine * General cleanup for Mac machines * PowerNV PHB3/4 cleanups * PowerNV XIVE improvements * Extension of the powernv10 machine with XIVE2 ans PHB5 models * New SLOF for PPC970 and POWER5+ * ppc: nested KVM HV for spapr virtual hypervisor * spapr: nvdimm: Introduce spapr-nvdimm device ==== Extensions/removal==== * Removal of 401/403 CPUs * Removal of 601/602 CPUs * Removal of SoftTLBs support for PPC74x CPUs * Initial support for PMU * PMU EBB support * Rework of powerpc exception handling * Support for new ISA31 instructions * Large cleanup of FPU implementation ==== Fixes ==== * Fixes for ivshmem * Fixes for POWER5+ pseries * Fixes for FPU exceptions * Fixes for exception models in MPCx and 60x CPUs * Fix for e6500 CPU * Fixes for the 7448 CPU * Exception and TLB fixes for the 405 CPU * 603 CPUs fixes * Book-E exception fixes * Clang fixes * VOF installation * Radix MMU fixes === Renesas RX === === Renesas SH === === RISC-V === ==== Extensions ==== * Add support for ratified 1.0 Vector extension * Support for the Zve64f and Zve32f extensions * Drop support for draft 0.7.1 Vector extension * Support Zfhmin and Zfh extensions * RISC-V KVM support * Mark Hypervisor extension as non experimental * Enable Hypervisor extension by default * Support for svnapot, svinval and svpbmt extensions * Experimental support for 128-bit CPUs * Initial support for XVentanaCondOps custom extension * stval and mtval support for illegal instructions * Support for the UXL field in xstatus * Add support for zfinx, zdinx and zhinx{min} extensions ==== Machines ==== * OpenSBI binary loading support for the Spike machine * Improve kernel loading for non-Linux platforms * SiFive PDMA 64-bit support * Support 32 cores on the virt machine * Add AIA support for virt machine ==== Fixes ==== * Fix illegal instruction when PMP is disabled * Corrections for the Vector extension * Fixes for OpenTitan timer * Correction of OpenTitan PLIC stride length * Removal of OpenSBI ELFs * Fix trap cause for RV32 HS-mode CSR access from RV64 HS-mode * Fixup OpenTitan SPI address === s390x === * Support Linux kernel command line length of more than 896 bytes (if the guest kernel supports it, too) * Emulate the instructions from the "Miscellaneous-Instruction-Extensions Facility 3" (a z15 extension) * Fixes for various emulated instructions (SLDA, SRDA, SLAG, BRASL, BRCL) === SPARC === === Tricore === === x86 === * Support for Intel AMX. ==== KVM ==== ==== x86_64 ==== ==== AMD SEV ==== === Xtensa === === Device emulation and assignment === ==== ACPI / SMBIOS ==== * advertise i8042 in FADT if it is present (5334bf5703) * new ''acpi-erst'' device, for logging guest evens using standard ACPI ERST interface (0ef0506e559) * added support for new ''processor-id'' SMBIOS option (cb5fb04fe6) * fixed SMBIOS memory handles overlap for large VMs (8Tb and more) (a379d4550c4) * added 'SMBIOS 3.0' support in SeaBIOS, in QEMU it's opt-in feature, use ''-machine smbios-ep=3-0'' option to enable it * fixed regression in ACPI table headers where OEM ID and OEM Table ID weren't padded correctly (748c030f360) * fixed QEMU crash when started with user provided SLIC table (8cdb99af45) * arm/virt: add VIOT table to describe virtio-iommu (cf1a5cc935c) * x86: 'pc' machine type: fixed acpi-index not being migrated which might result in NIC name change if migration happens when guest is asking QEMU for it. Migration should work properly since 7.0 and newer machine types, for older machine types migration of acpi-index is broken and can't be fixed for compatibility reasons. ==== Audio ==== ==== Block devices ==== ==== Graphics ==== ==== I2C ==== ==== Input devices ==== ==== IPMI ==== ==== Multi-process QEMU ==== ==== Network devices ==== ==== NVDIMM ==== ==== NVMe ==== ===== Emulated NVMe Controller ===== ==== PCI/PCIe ==== * Q35: fix PCIe device becoming disabled after migration when ACPI based PCI hotplug is used (6b0969f1ec) * initial bits of SR/IOV support (250346169) * arm/virt: fixed PXB interrupt routing (e609301b45) * arm/virt: support for virtio-mem-pci (b1b87327a9) ==== SCSI ==== ==== SD card ==== ==== SMBIOS ==== ==== TPM ==== ==== USB ==== ==== VFIO ==== ==== virtio ==== ==== Xen ==== ==== fw_cfg ==== ==== 9pfs ==== * [https://gitlab.com/qemu-project/qemu/-/commit/e64e27d5cb103b7764f1a05b6eda7e7fedd517c5 Fixed 9p server crash] ([https://gitlab.com/qemu-project/qemu/-/issues/841 issue #841]) that happened on some host systems due to incorrect (system dependant) handling of struct dirent size. * [https://gitlab.com/qemu-project/qemu/-/commit/f45cc81911adc7726e8a2801986b6998b91b816e Added support for macOS hosts]. ==== virtiofs ==== * Fix for CVE-2022-0358 - behaviour with supplementary groups and SGID directories * Improved security label support * The virtiofsd in qemu is now starting to be deprecated; please start using and contributing to [https://gitlab.com/virtio-fs/virtiofsd Rust virtiofsd] ==== Semihosting ==== * We now generate sane numbers for SYS_HEAPINFO under system emulation === Audio === === Character devices === === Crypto subsystem === === Authorization subsystem === === GUI === * a new [https://www.qemu.org/docs/master/interop/dbus-display.html "-display dbus"] option to export the display for external processes. A [https://gitlab.com/marcandre.lureau/qemu-display/ gtk4-rs based widget] is in the works (for future Boxes, virt-viewer etc). Potential other users include remote desktop protocols. === GDBStub === === TCG Plugins === * new coverage plugin in contrib which support drcov format traces === Host support === === Memory backends === === Migration === === Monitor === ==== QMP ==== ==== HMP ==== === Network === === Block device backends and tools === * Fleecing backup has been made more flexible: Fleecing backup means exposing a temporary snapshot of an actively used image, and having the copy-before-write (CBW) filter (or historically the backup block job) copy data there from areas written by the guest to the active image, before they are overwritten, so that the snapshot keeps representing the point-in-time state of the disk when the snapshot was created. This snapshot can then be read (either by qemu itself using the backup or mirror block jobs, or by outside users e.g. via an NBD export) to create a backup. As of qemu 7.0, instead of reading the snapshot image directly, it can also be accessed through the new snapshot-access block driver, by installing such a node on top of the CBW filter. Doing so has some advantages over accessing the snapshot image directly; for example, the image can then be in any format (not just COW formats like qcow2), because the CBW filter keeps track of its allocation bitmap. Once an area has been backed up, users can send a discard request to mark it as done, so that the CBW filter will not potentially copy it to the snapshot image on a subsequent guest write. Furthermore, the CBW filter now has a bitmap parameter that allows limiting its scope as specified by the bitmap at the time the CBW filter node is created. * A bug in caching block status has been fixed that was causing over-eager treatment of a format layer as all data rather than detecting holes, if an earlier block status query had merely been checking for which portions of the backing chain were allocated. While the bug did not affect guest-visible data, it caused some performance regressions, particularly noticeable and easy to trigger when using 'qemu-nbd --allocation-depth'. * The ''qemu-nbd'' program has gained a new ''--tls-hostname'' parameter to allow TLS validation against a different hostname, such as when setting up TLS through a TCP tunnel, and now supports TLS over Unix sockets. * The SSH driver supports sha256 fingerprints with pre-blockdev command line configuration syntax. * The SSH driver will print the actual fingerprint and its type when failing to validate a host key. === Tracing === === Miscellaneous === * The -sandbox 'spawn' filter, will now correctly block use of the clone syscall for spawnnig processes, while allowing thread creation * The -sandbox 'spawn' filter, will now entirely block use of the clone3 syscall entirely since there is no way to access its flags parameter from seccomp to distinguish thread vs process creation * The -sandbox 'spawn' filter, will now block setns, unshare and execveat syscalls since they are not desired. == User-mode emulation == * fixed a bug that caused issues mapping the ARM commpage on 32 bit builds === binfmt_misc === === Hexagon === == TCG == User-mode emulation (linux-user, bsd-user) will enforce guest alignment constraints and raise SIGBUS to the guest program as appropriate. === ARM === Support for for ARMv4 and ARMv5 hosts has been dropped. These older Arm versions do not have support for misaligned memory access; such support was added to ARMv6. Since ARMv5 is quite old, it is presumed that such systems do not have sufficient RAM to even run QEMU, and so practically speaking no systems are impacted. == Guest agent == * Support Windows 11 for <code>guest-get-osinfo</code> command * Fix memory leaks in Windows <code>guest-get-fsinfo</code> command == Build Information == === Python === === GIT submodules === === Container Based Builds === * a large number of containers are now updated by lcitool * TESTS and IMAGES environment variables can be used filter again when building against all docker targets === VM Based Builds === === Build Dependencies === * xfs libraries are not needed anymore for build, since the only ioctl used by qemu which was defined there got local implementation. With this, --enable-xfsctl configure option is also gone. === Windows === === Testing and CI ===
2022-05-15[libretro-]stella: update to 6.6nia4-11/+10
This is a new semi-major release, with the following changes: Added preliminary PlusROM support for saving high scores. Added preliminary support for 'MVC' bankswitching scheme by Rob Bairos. Added web links for many games. Added dead zone and linearity settings for analog controllers. Added 'Check for Update' button to Help dialog. Added different mask patterns for scanline emulation. Fixed MindLink controller. Fixed SaveKey not working with QuadTari. Added TIA randomization on startup option. Added different debug color luminances for player and missile copies. Added hotkeys for TV roll speed and toggling 'Developer settings' sets. Debugger: enhanced prompt's auto complete and history. Debugger: added optional logging of breaks and traps. Debugger: added Thumb cycle counting.
2022-05-08emulators/simh: update to 2022-05-01.rhialto2-7/+7
* e1ce9f4f sim_imd: Check for EOF when reading IMD track headers * d3f1ee09 CONSOLE: Set console input WAIT time to reflect console speed
2022-05-07wine: Explicitly disable LDAP support, the base ldap from NetBSD 9.99.xnia1-2/+4
being coincidentally detected is causing build failures.
2022-05-05wine: Use OPSYS_VERSION to numerically compare NetBSD versionsnia1-2/+2
2022-05-03dosbox-x: update to 0.83.25nia2-6/+6
New in This Version * XGA: Do not register XGA I/O ports unless emulating S3 chipset (such as machine=svga_s3) (joncampbell123) * Menu options "Force scaler" and "Print text screen" can now be assigned to keyboard shortcuts from the Mapper Editor. (Wengier) * Allowed to boot from Toshiba DOS image file for the Toshiba J-3100 emulation. (nanshiki) * Default S3 machine types now support XGA/SXGA VText in DOS/V, in addition to svga_et4000. (nanshiki) * Added "j3100backcolor" and "j300textcolor" config options (in [dosv] section) to specify background and text colors in J-3100 mode. (nanshiki) * Added config option "aspect_ratio" (in [render] section) which when set will force the specified aspect ratio (e.g. 16:9 or 3:2) in the aspect ratio correction mode (i.e. aspect=true). A menu group "Aspect ratio" is added to "Video" menu for users to select or set an aspect ratio, including an original ratio option. (Wengier) * Added config option "show recorded filename" (in [dosbox] section) which when set to true (default) will show message boxes with recorded filenames when making audio or video captures. (Wengier) * Added config option "allow quit after warning" (in [dosbox] section) which when set to false DOSBox-X will disallow the quit option after displaying a warning message. (Wengier) * Added config option "turbo last second" (in [cpu] section) which allows to stop the Turbo function after specified number of seconds. (Wengier) * Updated FLAC, MP3, and WAV decoder libraries to the latest versions (v0.12.38, v0.6.32, and v0.13.6) respectively; per David Reid). (Wengier) * Added support for upper case characters (A-Z) for AUTOTYPE command. (kcgen) * Added /T option for CHOICE command to set a default choice as in DOS, e.g. CHOICE /T:Y,3 (Wengier) * Added Korean language option in Windows installer. Also, language option page will be shown regardless of the output option selected. (Wengier) * Add stub INT 10h handler at F000:F065 if machine=vgaonly and using a VGA ROM BIOS image. The IBM VGA ROM BIOS image points INT 42h at that fixed address and calls it for any function it does not understand. (joncampbell123) * Set int33 event status bit 8 when passing absolute mouse coordinates, which is useful in emulation or virtualization environments where the mouse may be integrated with the host cursor. (javispedro) * Added support for Pentium Pro hinting NOPs and related multi-byte NOPs. (Jookia) * Updated HX DOS Extender to latest version 2.19 for HX-DOS builds. (Wengier) * DOSBox-X returns 1 instead of 0 when E_Exit occurs or unit tests fail. (Wengier) * Fixed built-in IPX and Modem emulation unavailable in MinGW builds. (Wengier) * Fixed -machine command-line option (as listed by "INTRO USAGE" command) not working. (Wengier) * Fixed lockup in classic Jumpman. (maron2000) * Fixed color in some modes under x86-64 macOS SDL2 builds. (myon98) * Fixed extra INT 10h call during BIOS screen. The extra call caused crashes when combined with a ROM image of the stock IBM VGA BIOS. (joncampbell123) * Fixed fscale FPU operation and updated FPU status word. Also fixed FPU stack value log messages on x86-based builds. (cimarronm) * Fixed bug that OpenGL Voodoo window may not appear correctly if the DOSBox-X window was previously in full-screen mode in some builds. DOSBox-X will now ensure a switch to window mode (or maximized window mode) in this case. Also fixed some menu options including rebooting DOSBox-X while Voodoo emulation is currently active. (Wengier) * Fixed crash when switching to dynamic_rec core from menu when dynamic_x86 is also available. Also fixed the dynamic_rec core may not be displayed correctly in the menu when a language file is used. (Wengier) * Fixed Windows resource information. (Wengier) * Fixed a buffer overflow when launching a program. (Jookia) * Fixed bug where DOS IOCTL would call device control channel on devices which did not advertise support for IOCTL. (cimarronm) * Clean up of DOS device and attribute flag usage (cimarronm) * Integrated commits from mainline (Allofich) - Use real pointer with font data for reading characters. Also ignore page number for modes with only one page.
2022-05-03[libretro-]snes9x[-gtk]: update to 1.61nia11-92/+101
- Restructured tile.cpp tile renderer from heavy macros into C++ templates, significantly lowering compile time. (yoffy) - MichaelBuckley provided a brand new MacOS port that is completely rewritten based on newer, supported APIs. - Fixed an out-of-bound memory access in sound DSP. (Sour, byuu) - Revert default SFX2 clock speed increase. - Added a render position hack. Fixes glitches in several games. - Allow an SRAM mapping up to 128KB. Gtk: - Added an option to show time. (taimoorgit) - Use a submodule for glslang, because it doesn't guarantee API stability. - Switched to GTK's C++ interface, gtkmm3. This effectively drops GTK+ 2.0 support. - Joysticks can now be hotplugged. (jraby) Unix: - Added audio output threading. (yoffy) - Added screensaver prevention on joystick use. (greg-kennedy) - Fix YUY2 conversion. (greg-kennedy) - Add alsa output support. (cjacker) - Add I420 conversion. (cjacker)
2022-05-02mame: update to 0.243.wiz3-8/+9
Another month has passed, and it’s time for another MAME release! MAME 0.243 has a few fairly big internal changes, and while we’re working towards making MAME more future-proof, there will likely be some regressions in the short term. The most noticeable regression that we’re aware of is that rhythm games using DVD media on Konami’s Firebeat platform are now very unhappy with our lack of proper DVD drive emulation. If you find any other regressions, please report them – it’s a lot easier to fix things when we know they’re broken. Remember the unreleased arcade version of Rise of the Robots, running on the RasterSpeed platform? This month sees support added for another game on the same hardware: Football Crazy. In a clear demonstration of the benefits of MAME’s modular architecture, this provides test cases yielding fixes for the CPU, serial controller and SCSI controller used in the system. Numerous games and computer systems using the same devices stand to benefit. MAME’s floppy drive emulation system has had an overhaul this month. We think we’ve finally nailed down and fixed the issues that were causing bad data to be written by the Apple IIgs. Of course, it’s still a good idea to back up your precious disk images. There are lots of nice fixes for NES/Famicom cartridge support, making a whole lot of Chinese-language games playable. The driver for the NEC PC-8801 family has had an overhaul this month, giving more expansion options and better software compatibility. Also, several more early Rockwell electronic calculators are now emulated. As always, there were plenty of bugs squashed this month, including Midway Seattle and Vegas stability issues, graphical glitches in The Karate Tournament, erratic joystick movement on the Apple IIgs, missing sounds in Looping, and quite a few incorrectly labelled DIP switches.
2022-05-01nono: update 0.3.0jun2-6/+6
0.3.0 (2022/04/30) m88k(Update): "Improve performance of m88200." m88k(New): "Implement M bus snooping of m88200." m88k(Fix): "Fix a problem that some BATC flags were not reflected." m68k(Fix): "Adjust minor interrupt timings." m68k(Fix): "Implement double bus fault, which occurs when a reset exception fetches odd address PC. (However, it does not usually occur)" vm(Update): "Rewrite VM scheduler and how to drive CPU completely." vm(Update): "Reset virtual time when VM is reset." vm(New): "Implement FDC and OPM a bit. Now NetBSD/x68k kernel can pass probing fdc, and Human68k can be booted from HD." vm(New): "Implement DMA transfer to/from SPC. Now NetBSD/x68k can be booted from CD." vm(New): "Implement an access mask of TVRAM." vm(Fix): "Revive horizontal scroll of frame buffer (text screen) which is not worked since ver 0.2.6." debugger(Fix): "Fix a problem that register values are not updated if trace modifier is specified." host(Fix): "Address a problem that libkqueue does not automatically remove closed descriptors from kevent." build(New): "configure now supports --without-gui option." debugger(Update): "Change debugger console to HostCOM feature." vm(Update): "Remove --force-rtc-fixed option and add --perf option for developpers."
2022-04-25qemu: use external rather than internal libslirpnia1-2/+3
requested by brad
2022-04-25sys161: honour PKGMANDIRtnn1-2/+5
2022-04-18revbump for textproc/icu updateadam11-21/+22
2022-04-17dosbox-x: update to 0.83.24nia2-7/+6
New in This Version 1. Notable New Features * Support for resizable OpenGL 3Dfx Voodoo window The 3Dfx Voodoo window is now resizable when running in OpenGL mode. Drag the Voodoo window borders or click the maximize window button to adjust the window size. With this you can now play 3Dfx Voodoo games in OpenGL mode with a much larger window than before, including maximized window, although you cannot switch to full-screen in this mode. * Support for CuteMouse wheel mouse extension API The CuteMouse wheel mouse extension DOS API is now supported so that DOS programs that natively support this function (such as DOS Navigator 2) can make use of it. The function is enabled when the mouse wheel movement conversion is currently disabled (i.e. with "mouse_wheel_key = 0" in config file or "Do not convert to arrow keys" in "Main" menu => "Mouse wheel movements"). * VMware mouse support for seamless mouse integration in Windows 3.1 DOSBox-X now implements basic support for the VMware mouse protocol so that when used together with e.g. VMware mouse driver for Windows 3.1, the mouse will be seamlessly integrated with the host system and can enter/exit the DOSBox-X window without having to be captured or released. No VMware emulation software needed. Config option "vmware" is added (in [dos] section) which allows to disable VMware mouse guest integration in DOSBox-X. * Improved support for S3 video handling including new chips Support for the S3 video handling has been improved in various ways in this version, including added S3 Vision964 and Vision968 based on existing support for the Vision864/868 chips, revised S3 Trio64 XGA line drawing code so that the Windows drivers can better draw polygon line segments, and new S3 ViRGE accelerated XGA line drawing function so that Windows 3.1/9x can now draw lines with hardware acceleration. * Improved support for APM power management Support for APM BIOS has been notably improved in this version. An APM power button has been added, available from both "Main" menu and in the mapper. A suspended or standby mode will be emulated when the guest calls the APM BIOS to go into either mode, and Windows 98 no longer complains about the inability to suspend or go to standby. * Improved support for keyboard layouts The built-in EGA?.CPX and KEYBOARD.SYS/KEYBRD?.SYS files have been upgraded to the latest version from FreeDOS, which has improved the keyboard layouts in several ways. The EGA?.CPX files now appear in CPI directory of Z drive, which can be also replaced by files provided by users. The supported country list has also been expanded. 2. Notable Usability Improvements * Improved handling of TTF color schemes Handling of TTF color schemes has been improved in several ways. The "colors" config setting now accepts a leading "+" character to stay the specified color scheme when switching from another output, and SETCOLOR command allows a syntax like "SETCOLOR 1 +" to return the specified color number to the value as specified by "colors" setting. DOSBox-X will also dim the topmost line when the window is inactive in full-screen or menuless mode. * Allow to mount multiple images files with wildcards IMGMOUNT command now accepts wildcards (* or ?) when mounting disk or CD images, allowing you to mount all images files matching the given pattern, such as IMGMOUNT A disk*.img. * Allow to automatically map keyboard layouts to country code DOSBox-X will now try to map the keyboard layout to country number for different date/time/decimal formats when the country number is not specified and cannot be obtained from the host system. * Allow to search for FONT.ROM in resources directory for PC-98 system For the PC-98 system, DOSBox-X will now search for FONT.ROM in resources directory in addition to the working directory, for more flexible support of font file locations. * Allow to toggle more TTF/CJK options via keyboard shortcuts Menu options "CJK: Switch between DBCS/SBCS modes", CJK: Auto-detect box-drawing characters", and "Reset color scheme" (in "Video" -> "TTF options") are now assignable in Mapper Editor, allowing you to toggle such options dynamically via keyboard shortcuts, including when the TTF output is not currently active. * Allow to toggle logging output dynamically Menu option "Disable logging output" has been added to "Debug" menu, allowing you to disable or enable logging output at run-time. Command-line option "-nolog" is also added which allows to disable logging output at start. 3. Bugfixes and Other Improvements There are also many bugfixes and other improvements, including fixes and improvements to some existing features (e.g. fixing lockup when printing in dBase IV, fixing crash/restart when running Wing Commander with EMS memory enabled, FPU enhancements, etc) and ported recent DOSBox SVN commits. Please see the full changelogs for more information.
2022-04-03Don't forget the PLIST...rhialto1-1/+5
2022-04-03emulators/simh: update to 4.0.0.2022-04-01rhialto3-26/+25
- adds PDP10-KS emulator - adds SEL32 emulator - adds IMLAC emulator - adds TT2500 emulator - various coverity fixes and many more small things.
2022-04-02mame: update to 0.242.wiz3-8/+12
Today is a bittersweet day. After a quarter of a century, we’ve decided that it’s no longer in our best interests to distribute MAME as Open Source/Free Software. Wait, that’s not the right announcement… After many fruitful years, we’ve come to realise MAME has achieved everything it can. The project is now in maintenance mode, and there will be no new functionality or regular releases. Hang on, that can’t be right, either! Happy April Fools’ day! We have an interesting release today in several ways. Yes, the rumours are true, after many years, we’ve added support for another LaserDisc-based arcade system. It’s a system that only ran a single game: Time Traveler, created by Rick Dyer at Virtual Image Productions, starring Stephen Wilber, and published by Sega. This full-motion video game consists of a near-constant stream of quick time events, utilising a mixture of live action video and computer-generated imagery. Although re-living the early ’90s corniness is pretty awesome, this is a milestone because it’s the first LaserDisc arcade game preserved using the Domesday86 Project toolchain. In short, this involves the use of custom hardware to record the raw radio frequency signal from a LaserDisc player’s laser pickup, and then decoding it in software. This frees you from the limitations of LaserDisc player demodulators and video capture devices. As well as better, more consistent video quality, this opens up possibilities like combining multiple captures to overcome disc degradation and laser pickup dropout. In another first for emulation, MAME 0.242 adds support for systems based on Rockwell B5000 family microcontrollers. This includes several electronic toys from Mattel, and calculators from Rockwell themselves. You’ll also find the first working game based on a Sharp SM530 microcontroller: the Star Fox game watch from Nelsonic. There are plenty of software list updates this month, including recently-released prototype dumps for Mega Drive, NES and Super NES, all the latest Apple II dumps, and some more of the steady stream of Commodore 64 cassettes. You’ll also see that a big batch of Amiga software has been promoted to working – that’s because the Amiga family has had an overhaul this month, and it’s paid off with substantial improvements in compatibility. There’s lots more going on, in fact this was a record month for pull requests, with over a hundred and thirty merged, including quite a few from first-time contributors, as well as some regulars. It’s great to have you all with us! There are dozens of reported bugs fixed, too, with a particular emphasis on fixing up DIP switch labelling.
2022-03-28{c,d,e}*/*: revbump(1) for libsndfiletnn36-65/+72
2022-03-27qemu: fix PLIST on SunOStnn2-4/+12
2022-03-15dosbox-x: remove non-patches from distinfonia1-3/+1
2022-03-15dosbox-x: properly fix non-posix iconv casenia2-6/+8
2022-03-11xnp2: Use SDL2ryoon1-7/+5
There is no conflict between SDL_mixer and SDL2_mixer anymore. Bump PKGREVISION.