You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a living document which will be updated periodically as new info becomes available. This describes the requirements and implementation details of calling TI-BASIC programs from inside the RPN83P app.
Motivation
There are a number of advanced calculator features which are already implemented in the TI-OS which are not yet implemented in RPN83P. The FUTURE.md document describes some of these, but one of the more obvious missing features of RPN83P compared to modern HP calculators is the support for keystroke programming. It may be implemented eventually but it is expected to take a LOT of time and effort.
An alternative to keystroke programming within RPN83P may be to build on top of the existing programming feature of the TI-OS through its TI-BASIC. If RPN83P could call out to these TI-BASIC programs, it may satisfy much (but not all) of the need for keystroke programming within RPN83P. Native keystroke programming in RPN83P would still be needed for features which exist only in RPN83P. I suspect that eventually, we would want to implement both types of programming (TI-BASIC and native RPN83P keystroke).
Another set of frequently requested features by readers on the RPN83P thread on MoHPC are:
Numerical root solver (implemented as Solver... under the MATH menu in TI-OS)
Numerical integrator (implemented as fnInt( under the MATH menu in TI-OS)
These 2 features are hallmarks of HP scientific calculators since the early 1980s (since the HP-15C?) and they would be useful additions to the RPN83P app. In addition to implementing the actual Solve or Integrate algorithms, which is expected to be a substantial amount of work (to meet the expectations of HP calculator users), both features require a mechanism for user-defined functions, either as a keystroke program, or an algebraic equation string which needs to be parsed. The TI-OS already has these features. If they can be made accessible to RPN83P, we may be able to avoid reimplementing these them within RPN83P itself.
Requirements:
Here are some requirements how RPN83P should call out to TI-BASIC programs:
user should see the available TI-BASIC or assembly programs
user can select a program, and perform operations on it:
user can execute the program
user can delete the program
user can rename the program
user can archive to flash memory or unarchive to volatile RAM
the external program can send results back to RPN83P
storage variables A-Z,Theta are implemented in v0.10.0, which may be sufficient for single-valued results
do we need to support lists?
delegate the creation and editing of programs to TI-OS
the user interface is already there, so perhaps we can just reuse it
figure out how to call out to Solve... and fnInt( features of the TI-OS
(these functions are not exposed through the TI-83+ SDK, so I'm skeptical that there is easy access to these features)
Implementation Notes:
We know that a flash app (like RPN83P) has the ability to call another assembly program or a TI-BASIC program because there are programs for the TI calculators called "shells" which do exactly this. The 3 examples that I am aware of are:
Of these, I have limited experience with the DoorsCS, which seems to be the most recent and most sophisticated. It has the ability to execute a program which is stored in either volatile RAM, or is archived in flash memory. Normally, the TI-OS forces an archived program to be unarchived into RAM before it will execute it. But DoorsCS somehow gets around that limitation and allows the program to run while it is archived. This is a very convenient feature, one that we would like to implement in RPN83P.
I am not familiar with either MirageOS or Ion, but I think Ion is the only one of the 3 which comes with source code. DoorsCS and Mirage seem to be closed-source, which prevents us from learning how these shells work internally. The author of DoorsCS is the webmaster of https://www.cemetech.net/, so it may be possible to get more technical information about this feature from the Forums there. I have not pursued this, because I have not had any time to work on this feature, so it would have been premature for me to start that inquiry, without being able to follow up on any answers I get there.
The text was updated successfully, but these errors were encountered:
This is a living document which will be updated periodically as new info becomes available. This describes the requirements and implementation details of calling TI-BASIC programs from inside the RPN83P app.
Motivation
There are a number of advanced calculator features which are already implemented in the TI-OS which are not yet implemented in RPN83P. The FUTURE.md document describes some of these, but one of the more obvious missing features of RPN83P compared to modern HP calculators is the support for keystroke programming. It may be implemented eventually but it is expected to take a LOT of time and effort.
An alternative to keystroke programming within RPN83P may be to build on top of the existing programming feature of the TI-OS through its TI-BASIC. If RPN83P could call out to these TI-BASIC programs, it may satisfy much (but not all) of the need for keystroke programming within RPN83P. Native keystroke programming in RPN83P would still be needed for features which exist only in RPN83P. I suspect that eventually, we would want to implement both types of programming (TI-BASIC and native RPN83P keystroke).
Another set of frequently requested features by readers on the RPN83P thread on MoHPC are:
Solver...
under theMATH
menu in TI-OS)fnInt(
under theMATH
menu in TI-OS)These 2 features are hallmarks of HP scientific calculators since the early 1980s (since the HP-15C?) and they would be useful additions to the RPN83P app. In addition to implementing the actual Solve or Integrate algorithms, which is expected to be a substantial amount of work (to meet the expectations of HP calculator users), both features require a mechanism for user-defined functions, either as a keystroke program, or an algebraic equation string which needs to be parsed. The TI-OS already has these features. If they can be made accessible to RPN83P, we may be able to avoid reimplementing these them within RPN83P itself.
Requirements:
Here are some requirements how RPN83P should call out to TI-BASIC programs:
Solve...
andfnInt(
features of the TI-OSImplementation Notes:
We know that a flash app (like RPN83P) has the ability to call another assembly program or a TI-BASIC program because there are programs for the TI calculators called "shells" which do exactly this. The 3 examples that I am aware of are:
Of these, I have limited experience with the DoorsCS, which seems to be the most recent and most sophisticated. It has the ability to execute a program which is stored in either volatile RAM, or is archived in flash memory. Normally, the TI-OS forces an archived program to be unarchived into RAM before it will execute it. But DoorsCS somehow gets around that limitation and allows the program to run while it is archived. This is a very convenient feature, one that we would like to implement in RPN83P.
I am not familiar with either MirageOS or Ion, but I think Ion is the only one of the 3 which comes with source code. DoorsCS and Mirage seem to be closed-source, which prevents us from learning how these shells work internally. The author of DoorsCS is the webmaster of https://www.cemetech.net/, so it may be possible to get more technical information about this feature from the Forums there. I have not pursued this, because I have not had any time to work on this feature, so it would have been premature for me to start that inquiry, without being able to follow up on any answers I get there.
The text was updated successfully, but these errors were encountered: