i41cx on iPhone

Programs for HP-41

i41cx on iPhone

Postby arne.skaanes@acm.org » Sun Jun 27, 2010 3:43 pm

I feel stupid, but trying to access the CAS section in the iPhone version I only get "NONEXISTANT" as a result when I try "XQT CAS". I have entered "CASFILE" in the alpha register and loaded the MATH module in port 1. What do I do wrong?

regards
arne.skaanes@acm.org
.
.
 
Posts: 1
Joined: Sun Jun 27, 2010 3:37 pm

Re: i41cx on iPhone

Postby makbil » Mon Jul 05, 2010 2:40 pm

You might have better luck asking your question on the developer web site:
http://alsoftiphone.com/i41CXplus/
makbil
.
.
 
Posts: 3
Joined: Sun Apr 25, 2010 1:46 am

Re: i41cx on iPhone

Postby elzorro » Sun Jun 09, 2013 5:57 pm

AL Software has released a nice application. One has the power of both the HP 41 CX and Reduce at one's finger tips. I have started to work with the two and find that the combination has awesome possibilities.

I first "tasted" RPN with an HP15C and migrated to an HP28S during my university years. This last calculator had features like 32 K of memory, unit conversation, solver, matrices, alphanumeric, list, vectors, etc.. I had loyal services from this beastie well over 20 years. I was disappointed when the clamshell cabling gave way. I found an HP15C emulator for a PDA which was had it merits but the HP41C is yet on another level.

I am just a humble Chemical Engineer with some very basic calculations needs. Quantum Physics or circuit design are not high in my priority list. However it is refreshing to have the possibility to make a quick calculation without the need to turn-on the computer which takes ages to start compared to something like a smartphone. Spreadsheets have also taken some of the edge from handheld calculator but nothing beats a quick and simple result from a ""mini-computer" which, by the way, can also be used as a telephone.

I claim to be still discovering the power of both the 41CX+ and Reduce; nevertheless, I would like to share some of the programs developed to solve some simple tasks. When I have more free time I should look at Warren Furlow's compilation of HP manuals. Thanks to him, our world technical heritage is still alive.

It would be a pleasure to exchange experiences with other users of the 41CX+

Please find below solutions for the following:


• I have tried to be as frugal as possible with the code. I configured the emulator to have 99 storage registers while the rest of the memory is left for programs.

• Revised version of DOCAS to handle hard coded output/input files within calling programs. It can also be used directly as the original version of DOCAS code but the user has the choice of output and input file. Try keeping these to 6 characters to allow them to be stored in a single register.

• The user interface is in 41CX+ and "complex" calculations are made in CAS.

• Bernoulli's equation for a headbox speed calculation. The use of alphanumeric variables in Reduce is used to choose the corresponding coefficient. Keep in mind that we would like to display m/min.

• Statistic calculations with x or x & y data. If we have two variable, gnuplot package is used to plot and numeric package is used to determine the 2nd order polynomial regression for this data set. I must dig around the Reduce packages to find other statistical calculations; however, keep in mind that there is a STATS package module for the 41CX. Choices, choices!

Refined version of DOCAS

01 fLBL CLCAS; Branch to CAS environment
02 SF25
03 FC? 08
04 CASOUT?
05 AON ;XEQ
06 FC? 08
07 PROMT ;XEQ Prompt for output file
08 PURFL ;XEQ Purge
09 ASTO 08 ;Store Output file
10 FC? 08 ;
11 CASIN? ;Input file
12 FC? O8 ;
13 PROMPT ;XEQ Prompt for input file
14 FS? 08 ;
15 ARCL 09 ;Recall Input file
16 APPEND, ;
17 ARCL 08 ;Append Output file
18 AOFF ;XEQ
19 CF25
20 I41CXED ;launch
21 CAS
22 CLA ;Clear A Register
23 ARCL 08 ;Recall Output File
24 I41CXED
25 CF 08
26 END


Bernoulli's Equation
Enter

Wire Speed
Slice opening
Pressure

Result:
l ; Wire Speed
t ; Pressure Speed
z ; Jet Speed
y ; Rush Drag
x ; Jet/Wire Ratio
;

01 fLBL BERNOU;
02 CLST ;XEQ Clear stack
03 Wire? ;ALPHA
04 PROMPT ;XEQ
05 STO 4 ;Store Wire Speed
06 Slice? ;ALPHA
07 PROMPT ;XEQ
08 STO 5 ;
09 Pressure? ;ALPHA
10 PROMPT ;XEQ
11 STO 6
12 PA,KPA,MBAR;
13 AVIEW ;
14 R/S ;
15 MMH2O,CMH2O;
16 AON
17 PROMPT
18 ASTO 7 ;Store Pressure Unit
19 AOFF
20 SF 08 ; Give Input, Output file
21 BERIN;
22 ASTO 09; Store Input File
23 BEROUT;
24 CLCAS; XEQ
25 END

CAS CODE START

% Bernoulli Equation %
load_package(assist)$
on rounded$
define r=data_reg$
vel_c := 0.938$
hb_off := 0$
hb_height := 1000$
gc := {3.60123,3601.23,360.123,35.326,353.16}$
punitt := {"""PA""","""KPA""","""MBAR""","""MMH2O""","""CMH2O"""}$
wire := r(4)$
slice := r(5)$
pressure := r(6)$
punit :={r(7)}$
for k := 1:5 do <<
if not freeof (punit,part(punitt,k)) then j := k >>;
jet := vel_c*SQRT((2*part(gc,j) *(pressure+hb_off))/(1-(slice/hb_height)^2));
jw := jet/wire$
rd := jet-wire$
x_reg := jw$
y_reg := rd$
z_reg := jet$
t_reg := pressure$
l_reg := wire$
write "Wire (m/min) ",wire;
write "Slice (mm) ",slice;
write "Pressure ",punit," ",pressure;
write "Jet/Wire ",jw;
write "Rush Drag ",rd;

CAS CODE END

STATS Program
;Counter is in the form of iiii.fffcc
;iiii = Counter Current Value
;fff = Counter Test Value
;cc = increment value
;51.06001
;
;R11 Ó x
;R12 Ó x2
;R13 Ó y
;R14 Ó y2
;R15 Ó xy
;R16 Number of data points


01 fLBL STATS;
02 ÓREG 11; Set the 6 statistical registers from R11 through R16.
03 CLST ;XEQ Clear stack
04 CF 0 ;Clear Flag 0 Data Exists = 1
05 C ;ALPHA
06 ASTO 03 ;Store Clear Command
07 E ;ALPHA
08 ASTO 04 ;Store Entry Command
09 V ;ALPHA
10 ASTO 05 ;Store View Command
11 S ;ALPHA
12 ASTO 06 ;Store Stop Data Entry Command
13 Y ;
14 ASTO 07 ;Store Y Value Entry
15 50 ;Data Register Index
16 STO 00 ;Index = number of data points
17 RCL IND 00;Indirect Index Recall
18 INT ;Get integer portion
19 STO 1 ;
20 x <> y ;
21 - ;
22 x > 0 ? ;If x is greater than 0
23 SF 0 ;We have data
24 C, E, V? ;ALPHA
25 AON ;ALPHA mode On
26 PROMPT ;XEQ
27 ASTO 02 ;Store Command
28 AOFF ;ALPHA Off
29 RCL02 ;
30 RCL 03 ;Clear Registers
31 x = y? ;Are we clearing registers
32 GTO 00 ;Clear Counter
33 RCL 04 ;Enter Data
34 RCL 02 ;Recall Command
35 x = y? ;Are we entering data
36 GTO 01 ;Enter data
37 RCL 05 ;View Data
38 RCL 02 ;Recall Task
39 x = y ;View Data?
40 GTO 04 ;View Data
41 GTO 05 ;EXIT
;
42 fLBL 00 ;Clear Data CLRGX Clear regs. by X(bbb.eeeii).
43 RCL 01 ;Clear every ii-th reg from Rbbb through Reee
44 1000 ;
45 / ;
46 50.00001 ;
47 + ;Construct bbb.eeeii
48 CLRGX ; XEQ
49 CF 01 ;
50 GTO 05 ;Exit
;
51 fLBL 01 ;
52 SF 1 ;X Values only = 1, X & Y = 0
53 CLÓ ;Clear Statistical Registers
54 50 ;
55 STO 01 ;
56 Y ENTRY? ;ALPHA
57 AON ;ALPHA mode On
58 PROMPT ;XEQ
59 ASTO 02 ;
60 AOFF ;ALPHA Off
61 RCL 02 ;
62 RLC 07 ;Recall Y Entry
63 x=y? ;Will there be Y values?
64 CF 01 ;We have Y values
65 CLST ;Clear Stack
;
66 fLBL 02 ;
67 SF 02 ;Data pointer odd = 1; even = 0
68 S ENTRY ;ALPHA
69 PROMPT ;XEQ
70 ASTO 02 ;
71 RCL 02 ;
72 RCL 06 ;Recall S Entry
73 x=y ;Last Value?
74 GT0 05 ; Exit
75 RDN ;
76 RDN ;
77 1 ;
78 STO + 01 ;
79 RDN ;R Down
80 STO IND 01;Store Data
81 RCL 01 ;
82 2 ;
83 MOD ;
84 x=0 ;
85 CF 02 ;We have even data pointer
86 RDN ;
87 FS? 01 ;Only x values
88 GT0 03 ;
89 FS? 02 ;
90 GTO 02 ;
91 x <> y ;
92 fLBL03 ;
92 Ó+ ;Accumulate first data
93 0.05101 ;
95 RCL 01 ;
96 + ;
97 STO IND 00;
98 GTO 02 ;
;
99 fLBL04 ;
100 0.01001 ;
101 CLRGX ;
102 FC? 00 ;
103 GTO 05 ;
104 SF 08 ; Give Input, Output file name
105 STAIN;
106 ASTO 09; Store Input File
107 STAOUT;
108 CLCAS; XEQ
;
109 fLBL 05 ;
110 CF 0 ;Clear Flag
111 CF 2 ;Clear flag
112 END ;End Program

CAS CODE START

% Max, average, min and sum calcs%
% Curve fitting to 3rd polynomial%
% If Flag 01 is set, only x values%
load_package(gnuplot);
load_package(numeric);
define r=data_reg;
on rounded;
infox_sum := 0$
infoy_sum := 0$
info := {}$
infox := {}$
infoy := {}$
n := fix(r(50))$
x_only := flag_reg(1)$
if x_only=0 then
% We have both x & y values%
<< for k:=51 step 2 until n do
<<xi := r(k);
yi := r(k+1);
infox := xi.infox;
infox_sum := infox_sum + xi;
infoy := yi.infoy;
infoy_sum := infoy_sum + yi;
info := {xi,yi}.info >>;
write "Max X ",t_reg := max(infox);
write "Avg X ", z_reg := infox_sum/((n-50)/2);
write "Min X ",y_reg := min(infox);
write "Sum X ",x_reg := infox_sum;
write "Max Y ",max(infoy);
write "Avg Y ", infoy_sum/((n-50)/2);
write "Min Y ",min(infoy);
write "Sum Y ",l_reg := infoy_sum;
write num_fit(infoy,{1,x,x**2},x=infox);
plot(info,xlabel="X",ylabel="Y",title="Data Points")>>
else
% We have only x values %
<< for k:=51 step 1 until n do
<<xi := r(k);
infox := xi.infox;
infox_sum := infox_sum + xi >>;
write "Max X ",t_reg := max(infox);
write "Ave X ", z_reg := infox_sum/((n-50));
write "Min X ",y_reg := min(infox);
write "Sum X ",x_reg := infox_sum
>>;
CAS CODE END
elzorro
.
.
 
Posts: 1
Joined: Sun Jun 09, 2013 5:30 pm


Return to HP-41 Software

Who is online

Users browsing this forum: No registered users and 1 guest