Skip to content
cqb13 edited this page Aug 4, 2024 · 13 revisions

TI Tools is a CLI tool designed for converting 8xp files (used by TI-83 and TI-84 calculators) to text files and vice versa. It also supports various other features for working with 8xp files.

Acknowledgments

This project would not be possible without the help of the following:

Installation

Build from Source

Clone the repository and build the project using Cargo:

git clone https://github.com/cqb13/ti-tools.git
cd ti-tools
cargo build --release
# The binary will be located at target/release/ti-tools

To add the binary to your PATH, run:

cargo install --path .

Pre-built Binaries

Pre-built binaries are available for Windows, macOS, and Linux on the releases page.

Usage

    ti-tools [COMMAND] [OPTIONS]

Commands

    help - Prints help information
        command       <COMMAND>                     (optional) The command you want help with

    version - Prints version information

    convert - Converts between 8xp/83p/82p, json, and txt
        input         <INPUT>                       (required) The input path to an 8xp, 83p, 82p, json or txt file
        -o            --output       <OUTPUT>                  The output path to an 8xp, 83p, json, or txt file
        -d            --display-mode <DISPLAY_MODE>            The characters to translate the tokens to [pretty, accessible, ti] | Default: accessible
        -e            --encode-mode  <ENCODE_MODE>             The mode used to parse tokens [min, max, smart] | Default: smart
        -c            --content                                Display the content of the input file
        -p            --preview                                Display the decoded output
        -m            --mass                                   Changes input required from file to directory for mass file decoding

    rename - Renames the program name in a 8xp/82p/83p file
        input         <INPUT>                       (required) The input path to an 8xp/82p/83p file
        -n            --name         <NAME>                    The new program name (8 or less alphabetic characters)
        -f            --new-file     <NEW_FILE>                Save the renamed program to a new file
        -d            --delete-old                             Delete the old file

    comment - Write a custom comment to an 8xp/82p/83p file
        input         <INPUT>                       (required) The input path to an 8xp/82p/83p file
        -c            --comment      <COMMENT>                 The new program comment (42 or less characters)
        -f            --new-file     <NEW_FILE>                Save the program with the updated comment to a new file
        -d            --delete-old                             Delete the old file

    lock - Lock an 8xp/82p/83p file
        input         <INPUT>                       (required) The input path to an 8xp/82p/83p file
        -f            --new-file     <NEW_FILE>                Save the locked program to a new file
        -d            --delete-old                             Delete the old file

    unlock - unlock an 8xp/82p/83p file
        input         <INPUT>                       (required) The input path to an 8xp/82p/83p file
        -f            --new-file     <NEW_FILE>                Save the unlocked program to a new file
        -d            --delete-old                             Delete the old file

    archive - Set the program to be sent to Archive
        input         <INPUT>                       (required) The input path to an 8xp/82p/83p file
        -f            --new-file     <NEW_FILE>                Save the archived program to a new file
        -d            --delete-old                             Delete the old file

    unarchive - Set the program to be sent to RAM
        input         <INPUT>                       (required) The input path to an 8xp/82p/83p file
        -f            --new-file     <NEW_FILE>                Save the un-archived program to a new file
        -d            --delete-old                             Delete the old file

    details - Displays information about an 8xp/82p/83p file
        input         <INPUT>                       (required) The input path to an 8xp/82p/83p file

    models - Prints the supported TI calculator models

Examples

Decode

ti-tools convert ./tests/programs/TOCCATA.8xp -p -c -o ./TOCCATA.txt
ti-tools convert ./tests/programs -o ./programs --mass

Encode

ti-tools convert ./TOCCATA.txt -p -c -o ./TOCCATA.8xp
ti-tools convert ./programs -o ./programs-other --mass

Troubleshooting

Mismatch between decoded and encoded programs

  • If you decoded the program into pretty tokens, encoding may not work correctly as there are duplicate pretty tokens.

    • To fix this, decode the program into accessible tokens and then encode it.
  • If you decoded a program from a different source, and the encoded version does not match the original, try using a different encoding mode.

    • The smart encoding mode is used by default by this program but not all programs do.
    • List of other programs and their encoding modes:
      • SourceCoder: max
      • TokenIDE: max
      • TI Connect CE: smart
      • TI Planet Project Builder: smart
      • ti_vars_lib_cpp: smart
      • ti_vars_lib_py: smart
    • If you are still having issues, please open an issue with the decoded and encoded programs.

Error loading program

  • If there is any error loading the program, ensure that you are using a valid file type, 8xp, 83p or 82p when decoding and txt or json when encoding.

  • If there is an error encoding the program, ensure that the file matches the formatting detailed in txt File Structure.

  • If you are still having issues, please open an issue with the program that is causing the error.

Syntax error when running on calculator

  • If you are getting a syntax error when running the program on the calculator, ensure that you used the correct model when encoding the program.

  • If you are still having issues, please open an issue with the program that is causing the error.

Contributing

Contributions are welcome! Feel free to fork this repository and submit pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.