WP43 Alternative key layout --> C43

This area is for discussion about these families of custom high-end Scientific Calculator applications for SwissMicros devices.
rprosperi
Posts: 1703
Joined: Mon Apr 24, 2017 7:48 pm
Location: New York

Re: WP43 Alternative key layout --> C43

Post by rprosperi »

PierreMengisen wrote:
Mon Dec 05, 2022 1:44 pm
Jaymos wrote:
Mon Dec 05, 2022 1:24 am

The latest version of C43 is now available for download at the usual place. You will find version 108_08g in yellow and ready for download.
It's very strange, this last version does not appear if I use "Safari".
I have to search for it with "Firefox" and there it appears !!!
That;s probably due to cache in Safari. Flush the cache and revisit the page in Safari and it will likely be OK.
--bob p

DM42: β00071 & 00282, DM41X: β00071 & 00656, DM10L: 071/100
User avatar
BINUBALL
Posts: 46
Joined: Fri Jan 28, 2022 3:48 am
Location: South Korea

Re: WP43 Alternative key layout --> C43

Post by BINUBALL »

PRN does not work as expected. Only leaving empty "20221215-22171200.REGS.TSV" on drive.
S.Korean / HP-50G | fx-570EX | fx-570CW | HP-200LX
User avatar
Jaymos
Posts: 1635
Joined: Sun Nov 04, 2018 7:03 pm
Location: Cape Town

Re: WP43 Alternative key layout --> C43

Post by Jaymos »

BINUBALL wrote:
Thu Dec 15, 2022 2:21 pm
PRN does not work as expected. Only leaving empty "20221215-22171200.REGS.TSV" on drive.
What did you try print?

Can you provide the example and I will fix it.
Jaco Mostert
Elec Eng, South Africa
https://47calc.com C47 (s/n 03818 & 06199), WP43 (0015). In box: HP42S, HP32Sii, WP34S&C, HP28C, HP35s, EL-506P, EL-W506, PB700; ex: FX702P, 11C, HP67 & HP85; iOS: 42s Byron, Free42+, WP31S/34S, HCalc.
User avatar
Jaymos
Posts: 1635
Joined: Sun Nov 04, 2018 7:03 pm
Location: Cape Town

Re: WP43 Alternative key layout --> C43

Post by Jaymos »

From dlachieze review on the WP43 page:
dlachieze wrote:
Sat Dec 10, 2022 3:24 pm
AGRAPH: on the 42S it draws a series of 8-pixel vertical columns where each column binary value is specified by a character in the Alpha register. 8 pixels being the height of one line on the 42S screen it’s easy to create user characters defined by an Alpha string and to display them with a single AGRAPH instruction. On the WP43 AGRAPH draws a 64-pixel column based on the binary value contained in a register (any register can be used). The problem is that this is not the size of a text line on the WP43 nor a multiple so it cannot be used to create custom characters as on the 42S. Drawing anything with AGRAPH requires countless RPN instructions and values and I have yet to find any useful usage for this instruction
Example of a custom character on the 42S display for the element type (from the Electrical Engineering Solutions):

So what I miss on the WP43 are some graphic primitives that would allow to really take advantage of the display:
  • Line, Circle, Triangle, Rectangle …
  • a way to print a text string anywhere on the display
  • a way to create custom text characters
  • a way to create axes for graphic prints
  • plus a simple Clear Display instruction as on the 42S (I don't want to disturb the stack just to clear the display)
It needs a bit of thinking to expand the specification for this. And I cannot talk for WP43 - the below is written for the C43 (hence in this sub-forum) but is free for all to take ;-)

This is not a spec, it is the start of a couple of easily achievable ideas for public participation to get to a spec to make the graphics primitives more useful. Either way, here my ideas around AGRAPH:

1. Regarding the AGRAPH use case: It may be a reasonable solution to provide a setting rGRAPH (meaning range of AGRAPH) (of between 1 and 64) to specify a graphic word size to control the number of pixels on screen to be used.

Example: 8 rGRAPH is then set for 8 pixels (the 8 least significant bits) which means that the screen pixels for bit numbers 8 to 63 are not changed whether they are 1 or 0 it does not matter. That means the vertical range is restricted to 8.

2. The graphic command AGRAPH can work differently if the associated register is of the differing input types, i.e. if the register parameter is:

2a. an nx2 matrix [[x,y]...n], it plots the list of relative coordinates to be drawn with straight lines.

Example: R00 is

Code: Select all

[02,02]
[02,12]
[12,12]
[12,02]
[02,02]
and then 10 10 GRAPH 00 plots a square starting in this case at 12,12.

2b. a string, it prints the text string at coords x, y

2c. a long integer, it displays the wrapped binary equivalent of a rGRAPH pixel high character, built from the long integer.

Example: If rGRAPH is 16, then it forms a 16 pixel high character and to have a 10 pixel wide character you need the binary equivalent of 10x 16 bit numbers.

Example: If a 10 wide x 16 high character with a single horizontal line at the top of the character is required:
You would need 10 x 16-bit words of 0x80 (lower word is the left 16 pixel vertical line) 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 (higher word is the right 16 pixel high line) = 730761969208194504061926369092044891860617953280 and if you store this in R00 then 20 20 AGRAPH 00 will produce the required 10x16 character at 20, 20.

2d. If r00 is a 4x1 matrix [xinterval,xmax,yiinterval,ymax]T, then AGRAPH draws an x and y axis starting at coords x,y, with tick marks every xi and yi (intervals) up to x+xm and y+ym (maxima).

2e. The old traditional use for this will then be if the register is a short integer.

2f. if any other type, AGRAPH just ignores it.


3. I would need to think about the clear screen some more as it is more complicated. Either it needs a full screen mode where the clock and status bars are not updated, or it needs a reduced screen as all apps in the calculator, allowing the status bar to operate. I prefer the latter, that means the new command is no full screen clear.

4. Last point is the screen updating. It may be prudent to have a manual refresh command so the user's loop refreshes the screen exactly when needed and not always.


Any comments or improvements (that fits the internal structure:- the comments above do not require major changes in the code, only additions)?
Last edited by Jaymos on Thu Dec 15, 2022 6:55 pm, edited 1 time in total.
Jaco Mostert
Elec Eng, South Africa
https://47calc.com C47 (s/n 03818 & 06199), WP43 (0015). In box: HP42S, HP32Sii, WP34S&C, HP28C, HP35s, EL-506P, EL-W506, PB700; ex: FX702P, 11C, HP67 & HP85; iOS: 42s Byron, Free42+, WP31S/34S, HCalc.
User avatar
PierreMengisen
Posts: 305
Joined: Wed Nov 29, 2017 1:38 pm
Location: Neuchâtel CH

Re: WP43 Alternative key layout --> C43

Post by PierreMengisen »

Same problem here with the Windows version: PRN printing of the X-register gives only empty files.
TSV_File.png
TSV_File.png (116.44 KiB) Viewed 1952 times
Pierre
[TI59 with PC100C; TI-84 Plus CE-T; HP41CV with HP IL loop & 2*82161A DCD & 82162 TP; HP15C; HP28S; DM41; DM41L; DM42; DM41X]
User avatar
Jaymos
Posts: 1635
Joined: Sun Nov 04, 2018 7:03 pm
Location: Cape Town

Re: WP43 Alternative key layout --> C43

Post by Jaymos »

PierreMengisen wrote:
Thu Dec 15, 2022 6:15 pm
Same problem here with the Windows version: PRN printing of the X-register gives only empty files.
TSV_File.png
I assumed the bug report from BINUBALL was on DM42. Sorry.

I confirmed it works on my Mac simulator. I confirmed it works on my hardware DM42. I confirmed it does not work on my Windows 10.

I will find it - at least we know where the Windows related bug is.
Jaco Mostert
Elec Eng, South Africa
https://47calc.com C47 (s/n 03818 & 06199), WP43 (0015). In box: HP42S, HP32Sii, WP34S&C, HP28C, HP35s, EL-506P, EL-W506, PB700; ex: FX702P, 11C, HP67 & HP85; iOS: 42s Byron, Free42+, WP31S/34S, HCalc.
dlachieze
Posts: 613
Joined: Thu May 04, 2017 12:20 pm
Location: France

Re: WP43 Alternative key layout --> C43

Post by dlachieze »

\(\)
Jaymos wrote:
Thu Dec 15, 2022 6:07 pm

This is not a spec, it is the start of a couple of easily achievable ideas for public participation to get to a spec to make the graphics primitives more useful. Either way, here my ideas around AGRAPH:
  1. Regarding the AGRAPH use case: It may be a reasonable solution to provide a setting rGRAPH (meaning range of AGRAPH) (of between 1 and 64) to specify a graphic word size to control the number of pixels on screen to be used.

    Example: 8 rGRAPH is then set for 8 pixels (the 8 least significant bits) which means that the screen pixels for bit numbers 8 to 63 are not changed whether they are 1 or 0 it does not matter. That means the vertical range is restricted to 8.
    • The graphic command AGRAPH can work differently if the associated register is of the differing input types, i.e. if the register parameter is:
      1. an nx2 matrix [[x,y]...n], it plots the list of relative coordinates to be drawn with straight lines.

        Example: R00 is

        Code: Select all

        [02,02]
        [02,12]
        [12,12]
        [12,02]
        [02,02]
        
        and then 10 10 GRAPH 00 plots a square starting in this case at 12,12.
        • a string, it prints the text string at coords x, y
          • a long integer, it displays the wrapped binary equivalent of a rGRAPH pixel high character, built from the long integer.

            Example: If rGRAPH is 16, then it forms a 16 pixel high character and to have a 10 pixel wide character you need the binary equivalent of 10x 16 bit numbers.

            Example: If a 10 wide x 16 high character with a single horizontal line at the top of the character is required:
            You would need 10 x 16-bit words of 0x80 (lower word is the left 16 pixel vertical line) 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 (higher word is the right 16 pixel high line) = 730761969208194504061926369092044891860617953280 and if you store this in R00 then 20 20 AGRAPH 00 will produce the required 10x16 character at 20, 20.
            • If r00 is a 4x1 matrix [xinterval,xmax,yiinterval,ymax]T, then AGRAPH draws an x and y axis starting at coords x,y, with tick marks every xi and yi (intervals) up to x+xm and y+ym (maxima).
              • The old traditional use for this will then be if the register is a short integer.
                • if any other type, AGRAPH just ignores it.
                • I would need to think about the clear screen some more as it is more complicated. Either it needs a full screen mode where the clock and status bars are not updated, or it needs a reduced screen as all apps in the calculator, allowing the status bar to operate. I prefer the latter, that means the new command is no full screen clear.
                  • Last point is the screen updating. It may be prudent to have a manual refresh command so the user's loop refreshes the screen exactly when needed and not always.

                  Any comments or improvements (that fits the internal structure:- the comments above do not require major changes in the code, only additions)?
                  1) & 2) Expanding AGRAPH usage is very interesting, this seems to cover most of the use cases, allowing to draw lines, triangles, squares and generally polygons.

                  What is missing is a way to fill the drawn figures (a dedicated fGRAPH flag?), a way to draw circles (via a complex number in the associated register to provide the radius?), and possibly a way to draw arcs (with a 3x1 matrix: [radius+i*0, angle1, angle2] ?).

                  3) Do you mean that there would be two clear screen commands? The current one that clear the whole display but requires 0 in X and Y, and a new one without parameters but clearing only a part of the display?

                  4) Agreed, a manual updating gives control to the program about when and how often screen refresh should occur. For reference, the DM42 has several refresh modes that can be selected via the RefLCD virtual variable.
                  DM42: 00425 - DM41X: β00066 - WP43: 00042
                  synopsis
                  Posts: 3
                  Joined: Wed Jul 07, 2021 6:23 pm

                  Re: WP43 Alternative key layout --> C43

                  Post by synopsis »

                  I want to thank you for all the work and dedication you are showing in this beautiful project
                  User avatar
                  Jaymos
                  Posts: 1635
                  Joined: Sun Nov 04, 2018 7:03 pm
                  Location: Cape Town

                  Re: WP43 Alternative key layout --> C43

                  Post by Jaymos »

                  .
                  C43 update

                  We updated various issues in C43 and I have the last update for 2022 available here.



                  1. Updated look and feel of UNIT conversions by improving the labels;

                  1a. Rearranged menus; added Misc: menu
                  1b. Added a few conversions;

                  2. Thanks to Robbert we added the first drafts of our new documentation and included some doc files in the release ZIP file.

                  2a. Technical settings manual listing every setting in the calculator (21 menus screens on 21 pages)
                  2b. Alphabetical settings index (5 pages)
                  2c. REGS, FLAG and KEYMAP browser images (1 page each)
                  2d. Menu hierarchy / tree (1)
                  2e. Keyboard layout

                  3. Thanks to Jaco and Pauli, we changed the Σn & Πn functions to take triadic input and also added iΣn and iΠn (which are the longinteger-only versions). The input now is simply from Z-register, to Y-register in steps of X as follows:

                  \(\displaystyle\sum_{n=Z} ^{Y, step X} f(n)\) where X, Y & Z are the standard stack registers.

                  Example of a non-standard sum starting not at zero and with step size of a decimal value: With the following program:

                  Code: Select all

                  LBL AA x^2 RTN 
                  
                  the command

                  Code: Select all

                  6 ENTER 13.5 ENTER 2.5 Σn AA

                  results in 411.5

                  4. We refined and bug fixed the manual SAVE/LOAD functions and autosave/autoload. Also, the procedure was optimised:

                  File names are still C43auto.sav for the automatically saved file and C43.sav for the manually saved file. The autosave is performed when SYSTEM is called and autoloaded when the calculator restarts. CLR.CLBKUP clears both backup files (C43.sav and C43auto.sav). Autoload occurs when it restarts if a valid C43auto file is present. The CLR.RESET command does not autoload or autosave.

                  The previous version’s autosaved files will not load on this new version due to bugs that were in all previous save files. Manual loading of older files can be attempted at your own risk - LOAD will probably crash the calculator and the other sections could too. It is expected that LOADP (to load the programs) may work from old versions. It is intended that future C43 releases will read older files from this current new version on.

                  5. Bug fixes

                  Many bug fixes and improvements are under the hood - if you are interested, look at the Gitlab issues page of C43 ;-)

                  These do include

                  - DATE to JD bug that was reported.

                  - PRN printing fixed

                  6. There always has been a list of interesting but arbitrary registers contents (see Robbert's REGS.pdf file) and we now added a new register 34, which is the long integer equivalent of ROUNDI(𝞹 . 10^100), essentially the first 101 digits of pi in integer form. What is the use? No use. Just because I like 𝞹.

                  7. Assigned key browser: The KEYS.KEYMAP browser was added to make sense of and view your assigned keys.
                  .
                  20230101-00245394.bmp
                  20230101-00245394.bmp (12.31 KiB) Viewed 1308 times
                  - See KEYMAP.PDF.

                  - KEYS.KEYMAP in the above example shows the entire keyboard's primary (non-shift) keys in grey, with the assigned key in white. Of course Dn and Up change to screens for the f-keys and g-keys.

                  8. Here in the KEYS menu:

                  - on this menu note the new commands A-, M- and K-RESET. We found the need to be able to separately clear My𝑎 menu, MyMenu and Keys. With these you can bulk clear the related items.

                  - g[1]) the KEYMAP browser can be seen on g[F3].

                  - Also, (simulator only) a whole host of preset layouts can be seen, such as (from left to right in the f-line) C43, D43, E43, N43 & V43. Apart from C43, these layouts are works in progress on layouts involving two shift keys. Worth mentioning are my favourites D43 and N43. Apart from C43, these receive a lot of attention and are efforts to determine the optimal layouts.

                  The additional layouts have been in the KEYS menus for years and the development has been ongoing for years. A recent change to the layout management is that we started categorising and focussing on existing hardware from SM. As said this is a work in progress.
                  .
                  BMP1.png
                  BMP1.png (7.9 KiB) Viewed 1308 times
                  .
                  9. There was a discussion on another thread on UI issues and whether the longpress cycles are equally appreciated by all. We developed customisation for the long presses, in settings M124, M1234 etc. Effectively you can control or even switch off the menu cycling.

                  We liked the possibilities of this, and even changed the default behaviour: The default longpress behaviour for the math keys for full longpress cycle: from primary (1), then the f function (2), then the g function (3), then NOP (4). This is coded as M1234.

                  For the function keys, we default to F124 meaning from primary (1) to f function (2) then directly to NOP (4). The reason for this difference is that g can more easily be reached by double pressing the f-key.

                  The details are illustrated in this post - scroll down to the last post where I illustrate these settings.
                  .
                  20230101-00340719.bmp
                  20230101-00340719.bmp (12.31 KiB) Viewed 1308 times
                  I'm sure I am forgetting to mention some things - do try it out and find us some more bugs to fix !

                  Thanks to the whole team who contributed to this release!!
                  Last edited by Jaymos on Sun Jan 01, 2023 4:49 pm, edited 8 times in total.
                  Jaco Mostert
                  Elec Eng, South Africa
                  https://47calc.com C47 (s/n 03818 & 06199), WP43 (0015). In box: HP42S, HP32Sii, WP34S&C, HP28C, HP35s, EL-506P, EL-W506, PB700; ex: FX702P, 11C, HP67 & HP85; iOS: 42s Byron, Free42+, WP31S/34S, HCalc.
                  User avatar
                  Dan Simpson
                  Posts: 104
                  Joined: Wed Mar 18, 2020 3:29 pm
                  Location: Arizona

                  Re: WP43 Alternative key layout --> C43

                  Post by Dan Simpson »

                  Thanks for the wonderful new year's gift!
                  Update completed successfully. I am now proceeding to explore...
                  My Collection: HP-55, HP-67 (Teenix Mod), HP-15C, HP-16C, HP-41CV, HP-41CX, SY41-CL, DM41X, DM42, HP-42S, HP-48G, HP-71B, HP-75C, HP-86B.
                  Post Reply