Name that calculator - from the program listing...
11-11-2018, 07:58 PM (This post was last modified: 11-11-2018 08:00 PM by Ángel Martin.)
Post: #1
 Ángel Martin Senior Member Posts: 1,254 Joined: Dec 2013
Name that calculator - from the program listing...
Here's a reverse puzzle for the eagle-eyed amongst the audience:

Upon ocular inspection (i.e. eye-balling it) name the calculator on which the program below runs

Code:
01  LBL "COUNT" 01  CLX 02  DO 03    1 04    + 05    VIEW X 06    "X#5" 07  WHILE 08  END

Not really sure, you say? Here's a second listing example that may (or may not) help:

Code:
01  LBL "BLIP" 02  "X=5" 03  IF 04    TONE 4 05  ELSE 06    BEEP 07  ENDIF 08  END

So what say you, is this fictitious or a real case?

;-)

Spoiler: The solution soon at a TOS near you, believe it or not...
11-11-2018, 08:16 PM (This post was last modified: 11-11-2018 08:17 PM by Massimo Gnerucci.)
Post: #2
 Massimo Gnerucci Senior Member Posts: 2,351 Joined: Dec 2013
RE: Name that calculator - from the program listing...
(11-11-2018 07:58 PM)Ángel Martin Wrote:  Here's a reverse puzzle for the eagle-eyed amongst the audience:

Upon ocular inspection (i.e. eye-balling it) name the calculator on which the program below runs

Code:
01  LBL "COUNT" 01  CLX 02  DO 03    1 04    + 05    VIEW X 06    "X#5" 07  WHILE 08  END

Not really sure, you say? Here's a second listing example that may (or may not) help:

Code:
01  LBL "BLIP" 02  "X=5" 03  IF 04    TONE 4 05  ELSE 06    BEEP 07  ENDIF 08  END

So what say you, is this fictitious or a real case?

;-)

Spoiler: The solution soon at a TOS near you, believe it or not...

What module did you devised this time Ángel?
Looks intriguing!

Greetings,
Massimo

-+×÷ ↔ left is right and right is wrong
11-11-2018, 08:17 PM
Post: #3
 mfleming Senior Member Posts: 744 Joined: Jul 2015
RE: Name that calculator - from the program listing...
HP41! So, a High Level Language module? Which syntax is it modeled on, BASIC or Pascal? Looks similar enough to RPL to make certain members' head explode

~Mark

Remember kids, "In a democracy, you get the government you deserve."
11-11-2018, 08:18 PM
Post: #4
 JurgenRo Member Posts: 176 Joined: Jul 2015
RE: Name that calculator - from the program listing...
(11-11-2018 07:58 PM)Ángel Martin Wrote:  Here's a reverse puzzle for the eagle-eyed amongst the audience:

Upon ocular inspection (i.e. eye-balling it) name the calculator on which the program below runs

Code:
01  LBL "COUNT" 01  CLX 02  DO 03    1 04    + 05    VIEW X 06    "X#5" 07  WHILE 08  END

Not really sure, you say? Here's a second listing example that may (or may not) help:

Code:
01  LBL "BLIP" 02  "X=5" 03  IF 04    TONE 4 05  ELSE 06    BEEP 07  ENDIF 08  END

So what say you, is this fictitious or a real case?

;-)

Spoiler: The solution soon at a TOS near you, believe it or not...

It is real for sure and it's the HP41C equipped with the 41CL board and a new amazing module by Ángel :-)))
11-12-2018, 12:43 AM
Post: #5
 Sylvain Cote Senior Member Posts: 1,708 Joined: Dec 2013
RE: Name that calculator - from the program listing...
Another jewel from Ángel the magician!
HP-41 of course!
I would assume CL is not mandatory for this one, using alpha to hold enter/exit condition is brilliant.
• DO ... "condition" WHILE
• "condition" IF ... THEN ... ENDIF
Some questions ...
• did you also include the loop : "condition" WHILE ... WEND ?
• will it it support a control decision/loop inside another control decision/loop ?
Sylvain
11-12-2018, 08:00 AM (This post was last modified: 11-12-2018 08:25 AM by Ángel Martin.)
Post: #6
 Ángel Martin Senior Member Posts: 1,254 Joined: Dec 2013
RE: Name that calculator - from the program listing...
(11-12-2018 12:43 AM)Sylvain Cote Wrote:  Another jewel from Ángel the magician!
HP-41 of course!
I would assume CL is not mandatory for this one, using alpha to hold enter/exit condition is brilliant.
• DO ... "condition" WHILE
• "condition" IF ... THEN ... ENDIF
Some questions ...
• did you also include the loop : "condition" WHILE ... WEND ?
• will it it support a control decision/loop inside another control decision/loop ?

You're all correct - but let's not set up expectations too high though:

- These extensions will be released in a forthcoming revision of the Formula_Evaluation Module, revision 1G.

- At the heart of the implementation lies the EVAL? function (which actually is a FOCAL routine, if you need to know). Both WHILE and IF perform some housekeeping with the RTN addresses, foreseeing both a TRUE and a FALSE contingency, and then launch EVAL? for a Boolean evaluation of the test condition stated in ALPHA. Depending on the result the RTN addresses are re-arranged so the program flow responds to the desired scheme.

- DO/WHILE supports up to three levels of nested calls, but IF.ELSE.ENDIF currently does not. However, it's possible to have and IF.ELSE.ENDIF structure within a DO/WHILE loop; and vice-versa.

Here's a couple of examples to whet you appetite (BTW, the mathematicians out there can provide some real-life application to try?)

The code below increments the value in Y until reaching 10, which (showing off the most inefficient way to do it) is tested using the value of its decimal LOG. This shows that the test condition can be *anything* supported by EVAL?

Code:
01  LBL "YLO10" 02  5.1 03  DO 04    VIEW Y 05    ISG  Y 06    "LG(IP(Y))#1" 07  WHILE 08  "DONE" 09  AVIEW 10  END

The next example shows the Fibonacci numbers between 1 and 100:

Code:
01  LBL "FIB$" 02 1 03 ENTER^ 04 DO 05 "X+Y" 06 EVAL$ 07    "L" 08    EVALY 09    VIEW X 10    PSE 11    "X<100" 12  WHILE 13  END

Exciting times in the ASDL, a.k.a "Archeological Software Development Lab ;-)

ÁM
11-12-2018, 10:17 AM (This post was last modified: 11-12-2018 12:13 PM by Ángel Martin.)
Post: #7
 Ángel Martin Senior Member Posts: 1,254 Joined: Dec 2013
RE: Name that calculator - from the program listing...
Here's an example using the IF.ELSE.ENDIF structure to calculate the roots of a second degree equation, a.x^2 + b.x + c = 0

The program is *not* optimized for size; the purpose of the example is to show the strings more clearly in the respective branches. Feel free to improve on it, for instance by calculating the value of the discriminant beforehand and reusing it in the appropriate sections.

Code:
01     LBL “QRT” 02     “00XYZT” 03     SHFL 04     “b^2-4*a*c>=0” 05     IF 06       “#(b+Q(b^2-4*a*c” 07       “|- ))/2/a” 08       EVALY 09       “(Q(b^2-4*a*c)-b" 10        "|- )/2/a” 11     ELSE 12       "Q(4*a*c-b^2)/2/” 13       “|- a” 14       EVALY 15       “#b/2/a” 16     ENDIF 17     EVAL$18 END On entry the coefficients a,b,c are expected in (Z, Y, X} respectively. On exit the roots are placed in {Y,X} if real (F4 set), or the Imaginary and real parts of the complex conjugate roots (F4 clear). Example: try it for x^2 = 1, that is a=1, b=0, and c=-1 Result: x1= 1, x2 = -1 and to exercise the complex branch, how about x^2 + x + 1 = 0 resulting Re(z) = -0.5 ; Im(z) = 0.866025404 Cheers, ÁM 11-12-2018, 03:20 PM (This post was last modified: 11-12-2018 03:23 PM by Ángel Martin.) Post: #8  Ángel Martin Senior Member Posts: 1,254 Joined: Dec 2013 RE: Name that calculator - from the program listing... ok, to put this one to bed - below is the optimized code for the same example. It uses one intermediate calculation for the discriminant, which saves a ton of bytes in the strings: Code: 01 LBL "QRT" 02 "00XYZ" 03 SFHL 04 "b^2-4*a*c" 05 EVAL$ 06  "X<0" 07  IF 08    "Q(#X)/2/a" 09    EVALY 10    "#b/2/a" 11  ELSE 12    "#(Q(X)+b)/2/a" 13    EVALY 14    "(Q(X)-b)/2/a" 15  ENDIF 16  EVAL\$ 17  END

ÁM
11-14-2018, 09:59 AM
Post: #9
 derekamos Member Posts: 54 Joined: Jan 2015
RE: Name that calculator - from the program listing...
Hi Angel, you have reached LISPyness in profundus.
DA
11-14-2018, 01:54 PM
Post: #10
 Eddie W. Shore Senior Member Posts: 1,236 Joined: Dec 2013
RE: Name that calculator - from the program listing...
My guess is the HP 42S.
11-14-2018, 05:38 PM
Post: #11
 Ángel Martin Senior Member Posts: 1,254 Joined: Dec 2013
RE: Name that calculator - from the program listing...
(11-14-2018 09:59 AM)derekamos Wrote:  Hi Angel, you have reached LISPyness in profundus.
DA

I long time ago I read that LISP stands for "Lots of Insidious Superfluous Parentheses" ;-)
11-14-2018, 05:40 PM
Post: #12
 Ángel Martin Senior Member Posts: 1,254 Joined: Dec 2013
RE: Name that calculator - from the program listing...
(11-14-2018 01:54 PM)Eddie W. Shore Wrote:  My guess is the HP 42S.

Not quite! - add this to the list of "things the 41 can do that are not possible on the 42"
Not such a big deal anyway, the 42 has plenty of other ways to get the task done.... but not this one!
11-14-2018, 11:26 PM
Post: #13
 derekamos Member Posts: 54 Joined: Jan 2015
RE: Name that calculator - from the program listing...
Angel wrote: "Lots of Insidious Superfluous Parentheses".

Ah, but my angle is the Lisp-ability to write macros for code/functions that don't exist, I.E surpassing the 41's RPN with other needed functions, no need for insidious "((()))" there.
DA
 « Next Oldest | Next Newest »

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