Skip to content

tari/tihle

Repository files navigation

tihle (pronounced like "tile") is a freely usable emulator of the TI-83 Plus graphing calculator, and maybe other calculators in the future.

A screencapture of tihle running Phoenix

Try the in-browser demo to see what it can do, download a release to get a copy to run on your computer, read more about why it exists, or continue on in this document to learn how to use or modify it.

Usage

tihle currently supports loading 8xp program images, which get loaded into RAM and executed directly. You can specify the path to a file on the command line when launching it (tihle phoenix.8xp) or drag-and-drop a file onto the display window after launching the emulator.

You can control logging by setting the RUST_LOG environment variable, which can set what messages are printed to the console. A value like RUST_LOG=warn will show only warnings and errors; refer to the logging library documentation for details.

Key bindings

Not all of the calculator keys are currently bound to key bindings so you can press them on your keyboard, but the basics are configured. The arrow keys are mapped to the arrows on the calculator, Shift is 2nd and Ctrl is Alpha. Numbers, +, - *, / and digits are mapped to the keyboard keys with those labels (they're pretty obvious), as is Enter (or Return) mapped to the calculator's enter key. Backspace is mapped to Clear.

Building

Compiling tihle requires a Rust toolchain, C toolchain (for building the CPU core), and spasm (to build the OS image).

Use cargo to build the program; in the simplest form:

cargo build --bins

will emit a binary to target/debug/ that you can run.

You can also turn on features in some of the libraries that the program uses, particularly around getting a copy of SDL. Unless you're developing tihle, it may also be useful to create a release build with more optimizations (though this compiles slower too). Try this invocation to make a binary with no external dependency on SDL and optimizations:

cargo build --bins --release --features=sdl2/static-link,sdl2/bundled

This binary will be output to target/release.