Skip to content
cqb13 edited this page Jul 11, 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>    A command to help with
    version
        Prints version information
    decode
        Converts 8xp to txt
                                  <INPUT>      The input path to an 8xp file
        -o           --output     <OUTPUT>     The output path to a txt file
        -d           --display-mode <DISPLAY_MODE> The characters to translate the tokens to [pretty, accessible, ti] | Default: accessible
        -m           --model      <MODEL>      The model of calculator (use models command to see the supported models) | Default: latest
        -c           --content    <>           Display the content of the input file
        -p           --preview    <>           Preview the output file in the terminal
    encode
        Converts txt to 8xp
                                  <INPUT>      The input path to an 8xp file
        -o           --output     <OUTPUT>     The output path to a 8xp file
        -m           --model      <MODEL>      The model of calculator (use models command to see the supported models) | Default: latest
        -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    <>           Preview the output file in the terminal
    rename
        Renames the program name in a 8xp file
                                  <INPUT>      The input path to an 8xp file
        -n           --name       <NAME>       New program number (8 or less uppercase 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 file
                                  <INPUT>      The input path to an 8xp file
        -c           --comment    <COMMENT>    New program comment (42 or less characters)
        -f           --new-file   <NEW_FILE>   Save the program with a new comment to a new file
        -d           --delete-old <>           Delete the old file
    lock
        Lock an 8xp file
                                  <INPUT>      The input path to an 8xp 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 file
                                  <INPUT>      The input path to an 8xp file
        -f           --new-file   <NEW_FILE>   Save the unlocked program to a new file
        -d           --delete-old <>           Delete the old file
    archive
        Archive an 8xp file
                                  <INPUT>      The input path to an 8xp file
        -f           --new-file   <NEW_FILE>   Save the archived program to a new file
        -d           --delete-old <>           Delete the old file
    unarchive
        Unarchive an 8xp file
                                  <INPUT>      The input path to an 8xp 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 file
                                  <INPUT>      The input path to an 8xp file
    models
        Prints the supported TI calculator models

Examples

Decode

ti-tools decode ./src/tests/programs/TOCCATA.8xp -p -c -o ./TOCCATA.txt

Encode

ti-tools encode ./TOCCATA.txt -p -c -o ./TOCCATA.8xp

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 or .txt).

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

  • If there is an error decoding the program, ensure that you properly specified the model of the calculator.

  • 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.

Clone this wiki locally