|
1 | | -# rpn83p |
2 | | -RPN calculator app for TI-83 Plus and TI-84 Plus inspired by HP42S |
| 1 | +# RPN83P |
| 2 | + |
| 3 | +RPN calculator app for the TI-83 Plus and TI-84 Plus inspired by the HP-42S. |
| 4 | + |
| 5 | +**Version**: 0.1 (2023-08-13) |
| 6 | + |
| 7 | +**Changelog**: [CHANGELOG.md](CHANGELOG.md) |
| 8 | + |
| 9 | +**User Guide**: [USER_GUIDE.md](USER_GUIDE.md) |
| 10 | + |
| 11 | +## Table of Contents |
| 12 | + |
| 13 | +- [Installation](#Installation) |
| 14 | +- [Quick Examples](#QuickExamples) |
| 15 | + - [Example 1](#Example1) |
| 16 | + - [Example 2](#Example2) |
| 17 | +- [Supported Hardware](#SupportedHardware) |
| 18 | +- [User Guide](#UserGuide) |
| 19 | +- [Compiling from Source](#Compiling) |
| 20 | +- [Tools and Resources](#ToolsResources) |
| 21 | +- [License](#License) |
| 22 | +- [Feedback](#Feedback) |
| 23 | +- [Author](#Author) |
| 24 | + |
| 25 | +<a name="Installation"></a> |
| 26 | +## Installation |
| 27 | + |
| 28 | +RPN83P is a flash application (it no longer small enough to create as an |
| 29 | +assembly language program). Detailed instructions are given in the [RPN83P User |
| 30 | +Guide](USER_GUIDE.md), but here is the quick version: |
| 31 | + |
| 32 | +- Copy the `rpn83p.8xk` file to the TI-83/TI-84 calculator. Use one of following |
| 33 | + link programs: |
| 34 | + - Windows: [TI Connect](https://education.ti.com/en/products/computer-software/ti-connect-sw) |
| 35 | + - Linux: [tilp](https://github.com/debrouxl/tilp_and_gfm) |
| 36 | +- Run the program using the `APPS`: |
| 37 | + - Press `APPS` |
| 38 | + - Scroll down to the `RPN83P` entry |
| 39 | + - Press `ENTER` |
| 40 | +- Exiting: |
| 41 | + - Quit app: `2ND` `QUIT` |
| 42 | + - Turn off device: `2ND` `OFF` |
| 43 | + |
| 44 | +As a flash app, the RPN83P does not consume precious RAM space, and it is |
| 45 | +preserved when the RAM is cleared (either purposefully or accidentally). |
| 46 | + |
| 47 | +<a name="QuickExamples"></a> |
| 48 | +## Quick Examples |
| 49 | + |
| 50 | +<a name="Example1"></a> |
| 51 | +### Example 1 |
| 52 | + |
| 53 | +When the RPN83P is started, it goes directly into the calculator mode, and looks |
| 54 | +like this: |
| 55 | + |
| 56 | +>  |
| 57 | +
|
| 58 | +Let's us compute the volume of a sphere of radius `2.1`. Recall that the volume |
| 59 | +of a sphere is `(4/3) pi r^3`. There are many ways to compute this in an RPN |
| 60 | +system, but I tend to start with the more complex, inner expression and work |
| 61 | +outwards. Enter the following keystrokes: |
| 62 | + |
| 63 | +- `2` |
| 64 | +- `.` |
| 65 | +- `1` |
| 66 | +- `x^2` |
| 67 | +- `2ND` `ANS` (invokes the `LastX` functionality) |
| 68 | +- `*` (`r^3` is now in the `X` register) |
| 69 | +- `2ND` `pi` (above the `^` button) |
| 70 | +- `*` (`pi r^3`) |
| 71 | +- `4` |
| 72 | +- `*` (`4 pi r^3`) |
| 73 | +- `3` |
| 74 | +- `/` (`4 pi r^3 / 3`) |
| 75 | + |
| 76 | +The `X` register should show `38.79238609` like this: |
| 77 | + |
| 78 | +>  |
| 79 | +
|
| 80 | +<a name="Example2"></a> |
| 81 | +### Example 2 |
| 82 | + |
| 83 | +Let's calculate the percentage change from `77` to `89`. Press the following: |
| 84 | + |
| 85 | +- `7` |
| 86 | +- `7` |
| 87 | +- `ENTER` |
| 88 | +- `8` |
| 89 | +- `9` |
| 90 | +- `WINDOW/F2` menu button to invoke the `NUM` item from |
| 91 | +  |
| 92 | +- `WINDOW/F2` menu button again to invoke the `%CH` item from |
| 93 | +  |
| 94 | + |
| 95 | +The display should show `15.58441558%` like this: |
| 96 | + |
| 97 | +>  |
| 98 | +
|
| 99 | +(The `Y` register remains at `77` because the `%CH` function does not modify it, |
| 100 | +unlike most functions that take 2 arguments. This allows additional calculations |
| 101 | +to continue using the original `77` base number.) |
| 102 | + |
| 103 | +Press: |
| 104 | + |
| 105 | +- `ON` (invokes the `ESC/EXIT` functionality) |
| 106 | + |
| 107 | +to go back to the previous menu bar: |
| 108 | + |
| 109 | +>  |
| 110 | +
|
| 111 | +<a name="SupportedHardware"></a> |
| 112 | +### Supported Hardware |
| 113 | + |
| 114 | +This app was designed for TI calculators using the Z80 processor: |
| 115 | + |
| 116 | +- TI-83 Plus |
| 117 | +- TI-83 Plus Silver Edition (verified) |
| 118 | +- TI-84 Plus |
| 119 | +- TI-84 Plus Silver Edition (verified) |
| 120 | + |
| 121 | +<a name="UserGuide"></a> |
| 122 | +## User Guide |
| 123 | + |
| 124 | +See the [RPN83P User Guide](USER_GUIDE.md). |
| 125 | + |
| 126 | +<a name="Compiling"></a> |
| 127 | +## Compiling from Source |
| 128 | + |
| 129 | +I use Ubuntu Linux 22.04 for my development. The following instructions have |
| 130 | +been verified only on my dev machine. |
| 131 | + |
| 132 | +- Clone this repo: |
| 133 | + - `$ git clone [email protected]:bxparks/rpn83p.git` |
| 134 | + - `develop` branch contains the active development |
| 135 | + - `master` branch contains the stable release |
| 136 | +- Install [spasm-ng](https://github.com/alberthdev/spasm-ng). |
| 137 | + - I use the static binary zip file, because the `.deb` file would not |
| 138 | + resolve dependencies. |
| 139 | + - Unpack the zip file so that the `spasm` directory is a *sibling* to the |
| 140 | + `rpn83` directory. (See the `SPASM_DIR` variable inside the `Makefile`). |
| 141 | +- `$ cd src` |
| 142 | +- `$ make` |
| 143 | +- Should produce a file named `rpn83p.8xk`. |
| 144 | + |
| 145 | +<a name="ToolsResources"></a> |
| 146 | +## Tools and Resources |
| 147 | + |
| 148 | +Here is the tools and resources that I use for development on Ubuntu Linux |
| 149 | +22.04: |
| 150 | + |
| 151 | +- spasm-ng Z80 assembler |
| 152 | + - https://github.com/alberthdev/spasm-ng |
| 153 | + - The `releases` section has various packages: |
| 154 | + - Debian/Ubuntu/Mint (`.deb`): could not get this to work |
| 155 | + - Linux (static, `tar.gz`): works for me |
| 156 | +- TILP2 |
| 157 | + - https://github.com/debrouxl/tilp_and_gfm |
| 158 | + - Data Link from Linux to TI Calculator |
| 159 | + - `$ apt install tilp2` |
| 160 | +- tilem2 |
| 161 | + - https://www.ticalc.org/archives/files/fileinfo/372/37211.html |
| 162 | + - TI calculator emulator for Linux |
| 163 | + - `$ apt install tilem` |
| 164 | + - `$ apt install tilem-skinedit` |
| 165 | +- rom8x |
| 166 | + - https://www.ticalc.org/archives/files/fileinfo/373/37341.html |
| 167 | + - TI calculator ROM extractor |
| 168 | + - Download and extract the zip file. |
| 169 | + - Follow the instructions to copy 1 or 2 applications to the calculator, run |
| 170 | + them on the calculator to generate App Vars which contain the ROM image, |
| 171 | + copy them back to the Linux host machine, then run `rom8x.exe` to generate |
| 172 | + the ROM image using Wine (see next item). |
| 173 | +- Wine |
| 174 | + - https://www.winehq.org/ |
| 175 | + - `$ apt install wine`, or download directly from winehq.com |
| 176 | + - Needed to run `rom8x.exe` (a Windows executable) on a Linux box. |
| 177 | +- GNU Make |
| 178 | + - https://www.gnu.org/software/make/ |
| 179 | + - Should already be installed on Ubuntu Linux. |
| 180 | + - `$ apt install make` to install manually. |
| 181 | +- Python 3 |
| 182 | + - The `python3` interpreter should already be installed on your Linux box. |
| 183 | + - Required to run the [compilemenu.py](tools/compilemenu.py) script that |
| 184 | + compiles the [menudef.txt](src/menudef.txt) file into the |
| 185 | + [menudef.asm](src/menudef.asm) file. |
| 186 | +- TI-83 SDK docs |
| 187 | + - https://archive.org/details/83psdk/83psysroutines/ |
| 188 | +- Learn TI-83 Plus Assembly in 28 Days |
| 189 | + - https://taricorp.gitlab.io/83pa28d/ |
| 190 | + - https://gitlab.com/taricorp/83pa28d/ |
| 191 | +- Hot Dog's Ti-83+ Z80 ASM for the Absolute Beginner |
| 192 | + - https://www.ticalc.org/archives/files/fileinfo/437/43784.html |
| 193 | + - https://www.omnimaga.org/hot-dog's-ti-83-z80-asm-for-the-absolute-beginner |
| 194 | + - Most of this book is aimed at an assembly language beginner. |
| 195 | + - However, Appendix A (_Creating Flash Applications with SPASM_) is the only |
| 196 | + place that I know which explains how to generate a flash app using the |
| 197 | + `spasm-ng` assembler. |
| 198 | + |
| 199 | +<a name="License"></a> |
| 200 | +## License |
| 201 | + |
| 202 | +[MIT License](https://opensource.org/licenses/MIT) |
| 203 | + |
| 204 | +<a name="Feedback"></a> |
| 205 | +## Feedback and Support |
| 206 | + |
| 207 | +If you have any questions, comments, or feature requests for this library, |
| 208 | +please use the [GitHub |
| 209 | +Discussions](https://github.com/bxparks/rpn83p/discussions) for this project. |
| 210 | +If you have bug reports, please file a ticket in [GitHub |
| 211 | +Issues](https://github.com/bxparks/rpn83p/issues). Feature requests should go |
| 212 | +into Discussions first because they often have alternative solutions which are |
| 213 | +useful to remain visible, instead of disappearing from the default view of the |
| 214 | +Issue tracker after the ticket is closed. |
| 215 | + |
| 216 | +Please refrain from emailing me directly unless the content is sensitive. The |
| 217 | +problem with email is that I cannot reference the email conversation when other |
| 218 | +people ask similar questions later. |
| 219 | + |
| 220 | +<a name="Author"></a> |
| 221 | +## Author |
| 222 | + |
| 223 | +Created by Brian T. Park ( [email protected]). |
0 commit comments