Post Reply 
RPN83P: RPN calculator for TI-83+ TI-84+ inspired by HP-42S
05-14-2024, 06:51 PM (This post was last modified: 05-14-2024 07:57 PM by bxparks.)
Post: #110
RE: RPN83P: RPN calculator for TI-83+ TI-84+ inspired by HP-42S
The next version (v0.11.0) of RPN83P is focused on improving the user interface and experience of the app. It will add very few mathematical or numerical features. Many of these UI/UX changes could have been made earlier, but I often have to implement a feature before I can figure out the best UI for it ("form should follow function" as they say).

But the other reason that these UI/UX changes were delayed is that I find UI programming difficult (compared to math functions, computer algorithms, storage formats, for example). It tends to involve intricate handling of lots of UI events from the user, which cause a combinatorial explosion of internal states, with tons of edge cases and error conditions, which must all be handled correctly, to prevent crashing the application (if I'm lucky), or corrupting of some unrelated data randomly exposed at a later time (if I am unlucky). An off-by-one bug seems to be lurking in every 2-3 lines of assembly code. I cannot tell you how many times an off-by-one error completely wiped the memory of the calculator and crashed my emulator during the development of this release.

Anyway, I think the best way to summarize the upcoming UI/UX changes is with this annotated screenshot:

   

I have mentioned some of these changes in my earlier posts, but here is a summary:
  • use new icon for menu folders, with a small dash to represent a folder tab
  • change cursor from an underscore to a blinking block, and support the following arrow keys (similar to the HP 48/49/50 series):
    • LEFT arrow: move the cursor left
    • RIGHT arrow: move the cursor right
    • 2ND LEFT: move to the beginning of line
    • 2ND RIGHT: move to the end of line
  • update the input modifier keys to behave reasonably
    • . (period): insert a decimal point, unless there is already one inserted
    • (-) (CHS): change the sign of the mantissa, exponent, or Record component (e.g. Date, Time, DateTime) appropriately
    • 2ND EE: insert an 'E', unless it has already been entered (this is different from the 48/49/50, mostly because I'm not entirely sure what the HP-50g is doing, and I ran out of energy to try to figure out my 50g)
  • new MODE > SSIZ: resize the RPN stack, supports 4 to 8 levels
    • new annunciators on the top status line (4STK, 5STK, 6STK, 7STK, 8STK)
    • compress the top status line, to squeeze in the 'xSTK' annunciator
    • (if you are wondering, an infinite NSTK feature, similar to Free42 is *not* planned for RPN83P, mostly because the memory management functionality of the underlying TIOS seems too primitive to implement this reasonably, and because I don't find an infinite stack to be particularly useful in an RPN system)
  • new MODE > RSIZ: resize the storage registers, supports 25 to 100 registers
    • NOTE: This is called SIZE on an HP-42S (and Free42), but I have always found this to be confusing because there are other "SIZE" commands: WSIZ (word size), SSIZ (stack size), and RSIZ (register size). I named this RSIZ to avoid that confusion.
    • On RPN83P, the WSIZ, SSIZ, and RSIZ commands all behave exactly the same. They prompt for the size value. And there exist the corresponding WSZ?, SSZ? and RSZ? functions to retrieve the current values.
  • extract the 13 STAT registers (R11-R23) into their own separate set of registers (using a new TIOS appVar named RPN83STA)
    • all storage registers R00-R99 are now available for end-users, with no conflicts with the STAT functions
    • add new STAT > SIGMA folder: contains functions to retrieve each of the 13 STAT registers (e.g. SigmaX, SigmaX2), following the convention used by the Plus42 app
  • add new RPN stack operators
    • "2ND u" button (above the 7 button): implement the Rup (RollUp) function on the keypad. This seems to be an important function when the RPN stack size is increased beyond 4. (I could not think of any better alternative button to bind the Rup functionality. You can think of the "u" as a mnemonic for "up")
    • STK > DUP menu function: duplicate X (similar to ENTER, without the complicated logic with "disable stack lift")
    • STK > DROP menu function: delete X
    • (the DUP and DROP functions are more relevant for keystroke programming, but these functions were already implemented internally, so I decided to just expose them in the UI with only a handful lines of code)
  • update storage format of various appVars (RPN83REG, RPN83STK, RPN83STA) to allow future migrations without losing data

If you have made it this far in this post, you have the opportunity to send me feedback about the various UI/UX changes by installing the preview version of RPN83P (v0.11.0-dev) from here: https://github.com/bxparks/rpn83p/releas...0.11.0-dev . I would appreciate such feedback, before I spend ~2 weeks updating most of the screenshots of my various documents.

WARNING: v0.11.0-dev changes the storage format of the RPN stack and storage registers. They will be cleared if you install and run the new version of RPN83P.
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
RE: RPN83P: RPN calculator for TI-83+ TI-84+ inspired by HP-42S - bxparks - 05-14-2024 06:51 PM



User(s) browsing this thread: 5 Guest(s)