[Moving the original post to its own thread for clarity]
I've finally released RCL-57 for the iPhone:
https://apps.apple.com/us/app/rcl-57/id1621959742 or search for "RCL-57" within the App Store.
If you have any issue, please send me a PM or reply directly in this thread. Thanks!
Congrats! And thanks for making it a freebie!
Any chance of an expanded mode with 10 registers and 100 program steps?
Outstanding! I had bought a HP-25 in mid 1977 shortly before the TI-57, 58 and 59 were available and mostly stayed with HP models for school/work after that. I now enjoy catching up on programmable calculator models that I missed out on over the years.
I seem to have found two different manuals for the TI-57. A 94 page version named "TI-Programmable 57 Introduction to Programming" and a much longer 244 page version titled "Making Tracks into Programming". They are both copyright 1977. The latter one is mentioned in the TI-57 pamphlet from TI so I assume that is the more common one that initially came with the calculator. Maybe someone could shed some light on why there were two manuals. Perhaps the smaller manual was used with the later TI-57s as the selling price when down over time.
http://www.datamath.org/Sci/MAJESTIC/TI-57.htm
RCL-57 works really well on my phone and has a great set of features. I am having a log of fun learning with it. Thank you, Pauln
Oh, interesting note about the two very different manuals. My TI-57, bought in the UK, came with the shorter version. Both manuals, I note, have a space in the front pages for the owner to record the serial number - so I think one or other would have been shipped with each calculator. Both are copyright 1977, but I'd hazard that the shorter one would have been a cost-reduced development, perhaps for non-US markets.
The longer one can be read online here
https://archive.org/details/Makingtracks...d/mode/1up
(08-11-2022 09:50 PM)Matt Agajanian Wrote: [ -> ]Congrats! And thanks for making it a freebie!
Thanks and you're welcome!
(08-11-2022 09:50 PM)Matt Agajanian Wrote: [ -> ]Any chance of an expanded mode with 10 registers and 100 program steps?
I was thinking about it earlier in this project. But when I started writing a few sample programs such as Lunar Lander or Biorhythms, I realized that much of the fun of the TI-57 was the challenge of fitting these programs within those 50 steps.
I would be very interested in finding out what other programs can be written for the TI-57... Some programs for the HP-25 are quite impressive...
(08-12-2022 03:33 AM)Steve Simpkin Wrote: [ -> ]Outstanding! I had bought a HP-25 in mid 1977 shortly before the TI-57, 58 and 59 were available and mostly stayed with HP models for school/work after that. I now enjoy catching up on programmable calculator models that I missed out on over the years.
That's great! One of my goals is to explore more in depth the early HP calculators such as the HP-25 and HP-41C.
(08-12-2022 03:33 AM)Steve Simpkin Wrote: [ -> ]RCL-57 works really well on my phone and has a great set of features. I am having a log of fun learning with it. Thank you, Pauln
You're welcome!
Here are four extended precision programs, sorry for the "formatting", it's IBM's DCF/Script, but I'm sure you can make sense of it, it's a bit html-like, and at some stage I'll put it in the as yet unpublished calculator pages of my website.
Code:
.if SYSPAGE = ODD .pa
.pn pref D-
.pn 1
:h1.Appendix D: A few programs for the TI-57
:p.This appendix gives a short description of a few extended precision
programs for the TI-57 [The old LED-display version!]
:p.The programs included in this appendix are:
:dl tsize=9
:dt.EPF57-I
:dd.Extended Precision Factorials I
.br
This program can calculate factorials up to 34!
:dt.EPF57-II
:dd.Extended Precision Factorials II
.br
This program can calculate factorials up to 52!
:dt.EPe57-I
:dd.Extended Precision e I
.br
This program calculates e to 32 places.
:dt.EPe57-II
:dd.Extended Precision e II
.br
This program calculates e to 48 places.
:edl
.sk;.pa
:h2.Extended Precision Factorials I
:h3.About the program
:p.This program can calculate factorials up to 34!, using more or less
the same method as in the TI-58/59/66 versions. The main difference is
the fact that this program cannot avoid multiplications with zero!
:p.The execution time of the program for 34! is about 2'45".
:h4.User Instructions
:p.The instructions for this program are:
:ol
:li.Enter the program.
:li.Initialise the program by pressing :hp1.RST\INV\CT:ehp1..
:li.Enter the number you want to "factorialize".
:li.Start the program by pressing :hp1.R/S:ehp1..
:li.When the program has finished, you can find the result in R5\[MSD]
through R1\[LSD].
:eol
:h4.Listing of EPF57-I
.fo off
00 66 X=T 17 -49 IINT 34 25 1/X
01 01 1 18 38 2 EXC 2 35 86 1 LBL 1
02 32 0 STO 0 19 61 2 SBR 2 36 39 1 PRD 1
03 08 8 20 34 3 SUM 3 37 39 2 PRD 2
04 84 +/- 21 33 3 RCL 3 38 39 3 PRD 3
05 -18 ILOG 22 -49 IINT 39 39 4 PRD 4
06 32 1 STO 1 23 38 3 EXC 3 40 39 5 PRD 5
07 32 6 STO 6 24 61 2 SBR 2 41 00 0
08 86 0 LBL 0 25 34 4 SUM 4 42 -61 ISBR
09 33 0 RCL 0 26 33 4 RCL 4 43 86 2 LBL 2
10 61 1 SBR 1 27 -49 IINT 44 49 INT
11 33 1 RCL 1 28 38 4 EXC 4 45 42 EE
12 -49 IINT 29 61 2 SBR 2 46 08 8
13 38 1 EXC 1 30 34 5 SUM 5 47 84 +/-
14 61 2 SBR 2 31 56 DSZ 48 -42 IEE
15 34 2 SUM 2 32 51 0 GTO 0 49 -61 ISBR
16 33 2 RCL 2 33 33 6 RCL 6
.fo on
:p.It should be noted that :hp1.all:ehp1. arithmetic in this program is
done by means of the registers!!
.pa
:h2.Extended Precision Factorials II
:h3.About the program
:p.This program can calculate factorials up to 52!, using more or less
the same method as in the TI-58/59/66 versions. Just as
:hp1.EPF57-I:ehp1.,
this program cannot avoid multiplications with zero!
:p.The extended range, compared to :hp1.EPF57-I:ehp1., is obtained by
using a rotating stack with wrap-around. A disadvantage of this method
is a severe increase in execution time!
:p.The execution time of the program for 52! is about 8'20".
:h4.User Instructions
:p.The instructions for this program are:
:ol
:li.Enter the program.
:li.Initialise the program by pressing :hp1.RST\INV\CT:ehp1..
:li.Enter the number you want to "factorialize".
:li.Start the program by pressing :hp1.R/S:ehp1..
:li.When the program has finished, you can find the result in all 7
registers, but the format may need some clarification:
:ul
:li.Your entry is less than or equal to 44:
:p.The result can be found in R1 [LSD] through R7 [MSD].
:li.Your entry is between 45 and 49 (inclusive):
:p.The result can be found in R1 [Most MSD] and R7 [Next MSD] through
R2\[LSD], that is, the most significant digits overlay the trailing
zeroes in R1. [Factorials of numbers between 45 and 49 have ten
trailing zeroes]
:li.Your entry is 50, 51 or 52:
:p.These three numbers have 12 trailing zeroes, so the MSD extend into
the last four digits of R2!
:eul
:eol
.pa
:p.Some examples, leading zeroes are indicated by a .:
.sk;.fo off
48! 50! 52!
R7: 15592536 .1713378 43878571
R6: .7267086 .4361260 66063685
R5: 22890473 81660647 64037669
R4: 73375083 68844377 75289505
R3: 52148635 64156896 44088327
R2: 46777600 .5120003 78248065
R1: 124139 .4140932 81751709
.fo on
:p.The above indicates that the actual values of 48!, 50! and 52! are:
:ul
.fo off
:li.48! = 1241391559 ..... 8635467776 E+10.
:li.50! = 3041409320 ..... 1568960512 E+12.
:li.52! = 8065817517 ..... 0883277824 E+12.
.fo on
:eul
:h4.Listing of EPF57-II
.fo off
00 66 X=T 17 49 INT 34 32 0 STO 0
01 01 1 18 42 EE 35 56 DSZ
02 32 0 STO 0 19 08 8 36 51 0 GTO 0
03 08 8 20 84 +/- 37 08 8
04 84 +/- 21 -42 IEE 38 -18 ILOG
05 -18 ILOG 22 38 1 EXC 1 39 86 2 LBL 2
06 32 1 STO 1 23 38 7 EXC 7 40 39 1 PRD 1
07 86 0 LBL 0 24 38 6 EXC 6 41 39 2 PRD 2
08 43 ( 25 38 5 EXC 5 42 39 3 PRD 3
09 07 7 26 38 4 EXC 4 43 39 4 PRD 4
10 38 0 EXC 0 27 38 3 EXC 3 44 39 5 PRD 5
11 75 + 28 38 2 EXC 2 45 39 6 PRD 6
12 61 2 SBR 2 29 34 1 SUM 1 46 39 7 PRD 7
13 86 1 LBL 1 30 56 DSZ 47 00 0
14 33 1 RCL 1 31 51 1 GTO 1 48 -61 ISBR
15 -49 IINT 32 00 0
16 38 1 EXC 1 33 44 )
.fo on;.pa
:h2.Extended Precision e I
:h3.About the program
:p.This program calculates "e" to 32 places, using the same method as
used in the TI-58/59/66 versions.
:p.The execution time of the program is about 3"20', which translates
to about 6" per digit.
:h4.User Instructions
:p.The instructions for this program are:
:ol
:li.Enter the program.
:li.Start the program by pressing :hp1.SBR\0:ehp1..
:li.When the program has finished, you can find the result in R2\[MSD]
through R5\[LSD].
:eol
:h4.Listing of EPe57-I
.fo off;.tr $ 4E
00 43 ( 17 32 5 STO 5 34 86 2 LBL 2
01 00 0 18 44 ) 35 55 &ML
02 61 2 SBR 2 19 86 1 LBL 1 36 33 0 RCL 0
03 33 2 RCL 2 20 07 7 37 44 )
04 61 3 SBR 3 21 -18 ILOG 38 43 (
05 32 2 STO 2 22 34 2 SUM 2 39 -42 IEE
06 61 2 SBR 2 23 56 DSZ 40 42 EE
07 33 3 RCL 3 24 71 RST 41 08 8
08 61 3 SBR 3 25 -39 2 IPRD 2 42 75 $
09 32 3 STO 3 26 15 CLR 43 -61 ISBR
10 61 2 SBR 2 27 -61 ISBR 44 86 3 LBL 3
11 33 4 RCL 4 28 86 0 LBL 0 45 65 -
12 61 3 SBR 3 29 -19 ICT 46 32 1 STO 1
13 32 4 STO 4 30 03 3 47 89 |x
14 61 2 SBR 2 31 00 0 48 49 INT
15 33 5 RCL 5 32 32 0 STO 0 49 -61 ISBR
16 61 3 SBR 3 33 51 1 GTO 1
.fo on;.tr;.pa
:h2.Extended Precision e II
:h3.About the program
:p.This program calculates "e" to 48 places, using the same method as
used in the TI-58/59/66 versions. The extended capability, compared to
the program on the previous page, is obtained by using a rotating stack,
which allows repeated calculations to be performed on one single
register. The disadvantage is once again a much longer execution time!
[7'40", or almost 10" per digit]
:h4.User Instructions
:p.The instructions for this program are:
:ol
:li.Enter the program.
:li.Start the program by pressing :hp1.SBR\0:ehp1..
:li.When the program has finished, you can find the result in R1\[MSD]
through R6\[LSD].
:eol
:h4.Listing of EPe57-II
.fo off
00 06 6 17 65 - 34 86 2 LBL 2
01 38 0 EXC 0 18 89 |x 35 32 0 STO 0
02 22 X:T 19 49 INT 36 07 7
03 43 ( 20 55 x 37 -18 ILOG
04 00 0 21 38 6 EXC 6 38 34 1 SUM 1
05 55 x 22 38 5 EXC 5 39 56 DSZ
06 86 1 LBL 1 23 38 4 EXC 4 40 71 RST
07 33 0 RCL 0 24 38 3 EXC 3 41 -39 1 IPRD 1
08 22 X:T 25 38 2 EXC 2 42 15 CLR
09 32 0 STO 0 26 38 1 EXC 1 43 -61 ISBR
10 44 ) 27 33 0 RCL 0 44 86 0 LBL 0
11 -42 IEE 28 22 X:T 45 -19 ICT
12 42 EE 29 32 0 STO 0 46 04 4
13 08 8 30 56 DSZ 47 00 0
14 34 1 SUM 1 31 51 1 GTO 1 48 51 2 GTO 2
15 43 ( 32 44 )
16 33 1 RCL 1 33 22 X:T
.fo on
Finally, just a question, is this emulator based on the actual TI-57 microcode?
(08-18-2022 04:26 PM)prino Wrote: [ -> ]Here are four extended precision programs, sorry for the "formatting", it's IBM's DCF/Script, but I'm sure you can make sense of it, it's a bit html-like, and at some stage I'll put it in the as yet unpublished calculator pages of my website.
Code:
.if SYSPAGE = ODD .pa
.pn pref D-
.pn 1
:h1.Appendix D: A few programs for the TI-57
:p.This appendix gives a short description of a few extended precision
programs for the TI-57 [The old LED-display version!]
:p.The programs included in this appendix are:
:dl tsize=9
:dt.EPF57-I
:dd.Extended Precision Factorials I
.br
This program can calculate factorials up to 34!
:dt.EPF57-II
:dd.Extended Precision Factorials II
.br
This program can calculate factorials up to 52!
:dt.EPe57-I
:dd.Extended Precision e I
.br
This program calculates e to 32 places.
:dt.EPe57-II
:dd.Extended Precision e II
.br
This program calculates e to 48 places.
:edl
.sk;.pa
:h2.Extended Precision Factorials I
:h3.About the program
:p.This program can calculate factorials up to 34!, using more or less
the same method as in the TI-58/59/66 versions. The main difference is
the fact that this program cannot avoid multiplications with zero!
:p.The execution time of the program for 34! is about 2'45".
:h4.User Instructions
:p.The instructions for this program are:
:ol
:li.Enter the program.
:li.Initialise the program by pressing :hp1.RST\INV\CT:ehp1..
:li.Enter the number you want to "factorialize".
:li.Start the program by pressing :hp1.R/S:ehp1..
:li.When the program has finished, you can find the result in R5\[MSD]
through R1\[LSD].
:eol
:h4.Listing of EPF57-I
.fo off
00 66 X=T 17 -49 IINT 34 25 1/X
01 01 1 18 38 2 EXC 2 35 86 1 LBL 1
02 32 0 STO 0 19 61 2 SBR 2 36 39 1 PRD 1
03 08 8 20 34 3 SUM 3 37 39 2 PRD 2
04 84 +/- 21 33 3 RCL 3 38 39 3 PRD 3
05 -18 ILOG 22 -49 IINT 39 39 4 PRD 4
06 32 1 STO 1 23 38 3 EXC 3 40 39 5 PRD 5
07 32 6 STO 6 24 61 2 SBR 2 41 00 0
08 86 0 LBL 0 25 34 4 SUM 4 42 -61 ISBR
09 33 0 RCL 0 26 33 4 RCL 4 43 86 2 LBL 2
10 61 1 SBR 1 27 -49 IINT 44 49 INT
11 33 1 RCL 1 28 38 4 EXC 4 45 42 EE
12 -49 IINT 29 61 2 SBR 2 46 08 8
13 38 1 EXC 1 30 34 5 SUM 5 47 84 +/-
14 61 2 SBR 2 31 56 DSZ 48 -42 IEE
15 34 2 SUM 2 32 51 0 GTO 0 49 -61 ISBR
16 33 2 RCL 2 33 33 6 RCL 6
.fo on
:p.It should be noted that :hp1.all:ehp1. arithmetic in this program is
done by means of the registers!!
.pa
:h2.Extended Precision Factorials II
:h3.About the program
:p.This program can calculate factorials up to 52!, using more or less
the same method as in the TI-58/59/66 versions. Just as
:hp1.EPF57-I:ehp1.,
this program cannot avoid multiplications with zero!
:p.The extended range, compared to :hp1.EPF57-I:ehp1., is obtained by
using a rotating stack with wrap-around. A disadvantage of this method
is a severe increase in execution time!
:p.The execution time of the program for 52! is about 8'20".
:h4.User Instructions
:p.The instructions for this program are:
:ol
:li.Enter the program.
:li.Initialise the program by pressing :hp1.RST\INV\CT:ehp1..
:li.Enter the number you want to "factorialize".
:li.Start the program by pressing :hp1.R/S:ehp1..
:li.When the program has finished, you can find the result in all 7
registers, but the format may need some clarification:
:ul
:li.Your entry is less than or equal to 44:
:p.The result can be found in R1 [LSD] through R7 [MSD].
:li.Your entry is between 45 and 49 (inclusive):
:p.The result can be found in R1 [Most MSD] and R7 [Next MSD] through
R2\[LSD], that is, the most significant digits overlay the trailing
zeroes in R1. [Factorials of numbers between 45 and 49 have ten
trailing zeroes]
:li.Your entry is 50, 51 or 52:
:p.These three numbers have 12 trailing zeroes, so the MSD extend into
the last four digits of R2!
:eul
:eol
.pa
:p.Some examples, leading zeroes are indicated by a .:
.sk;.fo off
48! 50! 52!
R7: 15592536 .1713378 43878571
R6: .7267086 .4361260 66063685
R5: 22890473 81660647 64037669
R4: 73375083 68844377 75289505
R3: 52148635 64156896 44088327
R2: 46777600 .5120003 78248065
R1: 124139 .4140932 81751709
.fo on
:p.The above indicates that the actual values of 48!, 50! and 52! are:
:ul
.fo off
:li.48! = 1241391559 ..... 8635467776 E+10.
:li.50! = 3041409320 ..... 1568960512 E+12.
:li.52! = 8065817517 ..... 0883277824 E+12.
.fo on
:eul
:h4.Listing of EPF57-II
.fo off
00 66 X=T 17 49 INT 34 32 0 STO 0
01 01 1 18 42 EE 35 56 DSZ
02 32 0 STO 0 19 08 8 36 51 0 GTO 0
03 08 8 20 84 +/- 37 08 8
04 84 +/- 21 -42 IEE 38 -18 ILOG
05 -18 ILOG 22 38 1 EXC 1 39 86 2 LBL 2
06 32 1 STO 1 23 38 7 EXC 7 40 39 1 PRD 1
07 86 0 LBL 0 24 38 6 EXC 6 41 39 2 PRD 2
08 43 ( 25 38 5 EXC 5 42 39 3 PRD 3
09 07 7 26 38 4 EXC 4 43 39 4 PRD 4
10 38 0 EXC 0 27 38 3 EXC 3 44 39 5 PRD 5
11 75 + 28 38 2 EXC 2 45 39 6 PRD 6
12 61 2 SBR 2 29 34 1 SUM 1 46 39 7 PRD 7
13 86 1 LBL 1 30 56 DSZ 47 00 0
14 33 1 RCL 1 31 51 1 GTO 1 48 -61 ISBR
15 -49 IINT 32 00 0
16 38 1 EXC 1 33 44 )
.fo on;.pa
:h2.Extended Precision e I
:h3.About the program
:p.This program calculates "e" to 32 places, using the same method as
used in the TI-58/59/66 versions.
:p.The execution time of the program is about 3"20', which translates
to about 6" per digit.
:h4.User Instructions
:p.The instructions for this program are:
:ol
:li.Enter the program.
:li.Start the program by pressing :hp1.SBR\0:ehp1..
:li.When the program has finished, you can find the result in R2\[MSD]
through R5\[LSD].
:eol
:h4.Listing of EPe57-I
.fo off;.tr $ 4E
00 43 ( 17 32 5 STO 5 34 86 2 LBL 2
01 00 0 18 44 ) 35 55 &ML
02 61 2 SBR 2 19 86 1 LBL 1 36 33 0 RCL 0
03 33 2 RCL 2 20 07 7 37 44 )
04 61 3 SBR 3 21 -18 ILOG 38 43 (
05 32 2 STO 2 22 34 2 SUM 2 39 -42 IEE
06 61 2 SBR 2 23 56 DSZ 40 42 EE
07 33 3 RCL 3 24 71 RST 41 08 8
08 61 3 SBR 3 25 -39 2 IPRD 2 42 75 $
09 32 3 STO 3 26 15 CLR 43 -61 ISBR
10 61 2 SBR 2 27 -61 ISBR 44 86 3 LBL 3
11 33 4 RCL 4 28 86 0 LBL 0 45 65 -
12 61 3 SBR 3 29 -19 ICT 46 32 1 STO 1
13 32 4 STO 4 30 03 3 47 89 |x
14 61 2 SBR 2 31 00 0 48 49 INT
15 33 5 RCL 5 32 32 0 STO 0 49 -61 ISBR
16 61 3 SBR 3 33 51 1 GTO 1
.fo on;.tr;.pa
:h2.Extended Precision e II
:h3.About the program
:p.This program calculates "e" to 48 places, using the same method as
used in the TI-58/59/66 versions. The extended capability, compared to
the program on the previous page, is obtained by using a rotating stack,
which allows repeated calculations to be performed on one single
register. The disadvantage is once again a much longer execution time!
[7'40", or almost 10" per digit]
:h4.User Instructions
:p.The instructions for this program are:
:ol
:li.Enter the program.
:li.Start the program by pressing :hp1.SBR\0:ehp1..
:li.When the program has finished, you can find the result in R1\[MSD]
through R6\[LSD].
:eol
:h4.Listing of EPe57-II
.fo off
00 06 6 17 65 - 34 86 2 LBL 2
01 38 0 EXC 0 18 89 |x 35 32 0 STO 0
02 22 X:T 19 49 INT 36 07 7
03 43 ( 20 55 x 37 -18 ILOG
04 00 0 21 38 6 EXC 6 38 34 1 SUM 1
05 55 x 22 38 5 EXC 5 39 56 DSZ
06 86 1 LBL 1 23 38 4 EXC 4 40 71 RST
07 33 0 RCL 0 24 38 3 EXC 3 41 -39 1 IPRD 1
08 22 X:T 25 38 2 EXC 2 42 15 CLR
09 32 0 STO 0 26 38 1 EXC 1 43 -61 ISBR
10 44 ) 27 33 0 RCL 0 44 86 0 LBL 0
11 -42 IEE 28 22 X:T 45 -19 ICT
12 42 EE 29 32 0 STO 0 46 04 4
13 08 8 30 56 DSZ 47 00 0
14 34 1 SUM 1 31 51 1 GTO 1 48 51 2 GTO 2
15 43 ( 32 44 )
16 33 1 RCL 1 33 22 X:T
.fo on
Finally, just a question, is this emulator based on the actual TI-57 microcode?
Quite a feat with only 50 steps and no indirect register!
Attached a screenshot from running the 4th program (48 digits of e) on RCL-57. (Takes ~1 second in Turbo Mode).
(And yes, RCL-57 is based on the actual TI-57 microcode).
[
attachment=10997]
Will there be an Android port of this? Or does RCL-58 run all programs a TI-57 can run?
(08-24-2022 12:03 PM)johanw Wrote: [ -> ]Will there be an Android port of this? Or does RCL-58 run all programs a TI-57 can run?
I don't plan to write an Android port anytime soon but the code is publicly available:
https://github.com/n3times/rcl57. A full port would take some time but a barebones version (just the calculator without the other screens) should be relatively straightforward.
By the way I believe there are already 2 TI-57 emulators for Android: pockemul and go57c. The first one is free (I think), in case you want to take a look.
Programs for the TI-57 can be ported to the TI-58 but typically they need to be slightly modified.
(08-11-2022 09:39 PM)pauln Wrote: [ -> ][Moving the original post to its own thread for clarity]
I've finally released RCL-57 for the iPhone:
https://apps.apple.com/us/app/rcl-57/id1621959742 or search for "RCL-57" within the App Store.
If you have any issue, please send me a PM or reply directly in this thread. Thanks!
Thanks for the RCL-57 app!
I installed it and used it with joy!
But i wonder, how do you make such an app?
"But i wonder, how do you make such an app? "
This is a really open ended question.
Do you mean who do you make an iPhone App?
If you mean how to code an emulator, there are three ways. You can build up the interface and hand code all the functions using the underlying math functions as they are. It looks OK, but not very accurate.
You can use the underlying math functions and jigger the output to match the target. More fidelity, but you need extensive knowledge of the target.
You use the original ROMS from the calculator to perform the functions, easier than re-jiggering the native code and the best fidelity, bugs and all.
Good question. This was my first time writing a hardware based emulator so it wasn't obvious for me either.
How To Write a Computer Emulator by Marat Fayzullin gives a good overview of the general process.
For RCL-57, I used
Patent US4125901A which describes carefully the instruction set. Here is my translation of this patent into C code:
https://github.com/n3times/rcl57/blob/ma...ine/ti57.c.
This should be enough to write an accurate but barebones emulator.
In my opinion, an emulator is much more fun to use if it gives information about the state of the calculator. For example the list of steps in readable form, the trigonometric mode, the log of operations etc. To do this one needs to understand the internal state of the calculator.
The TI-57 memory map by Claus Buchholz covers some of it and is a good starting point. See
https://github.com/n3times/rcl57/blob/ma.../state57.c for my own code and more of the internal state deciphered.
What I have described until now is what I call the engine. For RCL-57, it is standard C code that can be easily packaged into a library and used to write a TI-57 emulator for most common platforms (iOS, Android, ...).
(08-25-2022 09:10 PM)pauln Wrote: [ -> ]Good question. This was my first time writing a hardware based emulator so it wasn't obvious for me either.
Wow, thats way beyond my knowledge! Thanks for explaining, i was thinking making an CASIO fx-4000P app, cuz thats my fav. calculator. But i realize know that i newer can do it
(08-26-2022 06:02 AM)Dan C Wrote: [ -> ]Wow, thats way beyond my knowledge! Thanks for explaining, i was thinking making an CASIO fx-4000P app, cuz thats my fav. calculator. But i realize know that i newer can do it
Good taste, it's a beauty :-)
Don't let the perceived complexity stop you.
If you are a beginner, start small. Try to write a simple four-banger, without any operator precedence. Think about its state: maybe it could be represented by just two numbers (regX = the number on the display, lastX = the previous one) and one character/symbol for the operation (+ - * /) the two. Now each key press changes the state. How? Draft a graph or table of the changes. Implement with a simple UI. Yay, your first calculator!
What about adding an independent memory? Probably a new number in the state, regM. More keys that usually go with it. Let's rethink the graph/table ("state transitions" in the lingo). Implement.
Operator precedence. Does it need new data in the state? What it means for the state transitions?
After a short while, with the experience growing, the previous comments will start to make sense to you. You'll be in the position to decide what you actually want to achieve. An fx-4000P lookalike that behaves similarly but not precisely the same (e.g. different precision)? A bug-to-bug same-precision faithful simulator (not doubt more complicated state)? An emulator, a somewhat different beast (you "implement" the HW and then let it run the firmware copied from the calculator)?
I hope now it sounds much less scary :-) Good luck!
v.