Android version: * Sometimes, the app saves the state file after reinitialize_globals(). How is this possible, and how to prevent it? N.B. This is one cause, and quite possibly the only one, of the native-code crash in vartype2string() called from display_y(); it's dereferencing reg_y while it is NULL, leading to a segmentation fault. * Sometimes, with some skins, a one-pixel horizontal line appears above the display. Off-by-one error in the blitting call? * The key click is flaky on some devices. Why? * Add android:installLocation property to the manifest, to support installing the app on external memory (SD card) under Android 2.2 or later. See http://developer.android.com/guide/appendix/install-location.html * Support arbitrary skin scaling and positioning. * Add support for physical keyboards. * Implement pop-up keyboard for ALPHA mode text entry. * Scale print-out (the current 2:1 scaling is a bit small on large screens) * Implement better visual feedback for which key is pressed. iPhone version: * Preferences looks a bit ugly in iOS 7, because the now-much-smaller switches no longer line up with the right margin. How do I create a settings screen that looks more like the iOS Settings app? * Suppress too-large skins from the Select Skin view. * Add option to disable key click. * Haptic feedback option. * Implement pop-up keyboard for ALPHA mode text entry. * Implement copy & paste. * Implement URL decoding for HTTP requests (filenames with spaces, etc.) * Support iPad, and iPad mini (screen size issues, and take advantage of big screens to show the calculator and print-out side-by-side). * Support arbitrary skin scaling and positioning. * Support landscape mode. * When the app is suspended while the HTTP server is active, shut down the HTTP server. I think this is the one remaining issue that causes the server port to be unavailable on HTTP server startup. * Implement better visual feedback for which key is pressed. * In the HTTP server view, make it clearer that it can't be used if there's no WiFi. Don't show a URL containing some bogus 3G hostname or whatever. Also, deal with the possibility of WiFi becoming active or inactive while Free42 is running. Windows version: * The "Calculator Key" option should probably set \HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\18\ShellExecute, not \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\18\ShellExecute. Easy enough to fix, but make sure that the new code restores the HKEY_LOCAL_MACHINE key so that people won't have to use regedit to get rid of the old Free42 mapping! * Press a key with the mouse, then move the mouse outside of the window, then release the mouse button. The key stays pressed; apparently the mouse-up is not handled in this case. * Another "Calculator Key" issue: it doesn't seem to work in multi-language installs. Some other registry key overriding the obvious one, it seems. But maybe that'll be fixed by dealing with the issue above. Mac version: * When you resize the print-out window, the bottom of the print-out doesn't get updated, until you either print something or bouce the app. * Modify the file selection dialogs so they have a file type menu, and add extensions to file names automagically when appropriate. All versions: * When a "State File Corrupt" occurs, make a copy of the unloved state file, so it doesn't get nuked on exit. * Change state file format to something forward- and cross-platform-compatible. * Fix behavior of TAN and TANH for large complex arguments. Currently, those return NaNs, because infinities are divided by infinities. It looks like the real 42S simply pretends Inf/Inf == 1 for those cases. * Add an option or magic keystroke to make SHOW show full precision when there is a real number in X -- i.e., 16 digits for binary and 34 for decimal. * It would be nice if we would handle the shell_milliseconds() wrap-around. This function is only used for flying the goose and updating the progress report when the solver is running interactively; all it would take is for those two places in the code to detect unlikely values of (startTime - shell_milliseconds()) and assume the nearest likely alternative, a la Y2K. * Display "decimal" or "binary" in the About box, with the version number. The "Wouldn't It Be Nice" Department: * Add a feature for importing and exporting variables from and to CSV files. * Algebraic equations. * Units, like on the HP-48G, where units are attached to values.