83Plus:OS:Remote Program Execution
Remote Program Execution
You can execute a basic program remotely using the link port. In combination with silent linking you can make a calculator execute any basic program or any nostub ASM program.
To execute a basic program already stored on the calculator you have to do the following:
- Send the following bytes: the 23h machine byte, 89h command ID, the size of the data block, the data block itself and the checksum. The data block is made up as following: it starts with three bytes containing the value 05h followed by a zero terminated program name. The checksum is the default linking checksum and is calculated by summing all bytes in a 16 bit register (which means modulo 216)
- You should receive 8 bytes back as acknowledgement: 73,56,00,00,73,56,00,00
If you want to execute a basic program that isn't stored on the remote calculator you can silent link it to the remote calculator and afterwards execute it.
If you want to execute a nostub ASM program you have to silent link a basic program containing "Asm(prgmASMPROGNAME" and the nostub ASM program to the remote calculator. Then you can execute the basic program remotely and that basic program will then start your ASM program.
This can also be used to remotely run Flash applications. Instead of sending three 05h's, send three 24h's. Make sure you send the full application name padded with spaces (and also the zero to terminate it).
NOTE: Remote program execution doesn't work on a TI-83 Plus Silver Edition when Omnicalc RAM recovery is enabled. (I haven't checked the TI-84+ series but I guess you'll have the same problem when RAM recovery is enabled). This can be remedied by sending commands through the linkport that act as if they come from the TI-Keyboard. The program would type something such as "prgmABC" on the screen and then "press" enter. This would still leave a problem for TI-83 Plus Silver edition users with OS versions 1.13 or 1.14 who have the Omnicalc RAM recovery enabled, but that is very unlikely and therefore insignificant. I have not tried this, so I can give no further information.