Skip to content

Calculator variables

What a program actually is on the calculator, and the difference between an address, a variable name and a file.

Everything Roost serves ends up as a variable on a TI-84 Plus CE. Understanding what that means removes most of the confusion around the three download routes.

The three names#

Comes fromExampleWhere it appears
Addressthe project idsnakeRoost URLs, dependency lists, the API
Variable nameinside the built fileSNAKEthe calculator's program list
LibLoad namethe library manifestDEMOthe linker, LibLoad at runtime

Nothing forces them to agree, and they often do not. Only the address is chosen in the console.

Two variable types#

program.8xp

Something the calculator runs. ASM/C projects and TI-BASIC projects publish these.

appvar.8xv

Data, or a LibLoad library body. Not run directly; loaded by something else.

var_type on a program record says which, and it decides the extension on the transfer file.

Archived or not#

archived says whether the program wants to live in archive memory rather than RAM.

Archive memory is flash: it survives a RAM clear and there is far more of it, but it cannot be written to as freely. Most published programs and every library want to be archived.

A client should honour the flag rather than deciding for itself, because a program that expects to be archived and is not may not survive the first crash the calculator has.

Body versus file#

This is the distinction behind the download routes.

  1. The variable body

    The bytes of the variable itself. This is what lives on the calculator and what a client writes. Served at /d/{slug}/raw.

  2. The transfer file

    The body plus a header describing it: a signature, the variable name, the type and a checksum. This is the .8xp or .8xv a computer sends. Served at /d/{slug}.

Size#

size is the length of the variable body in bytes, and size_text is the same number rendered for a person.

A calculator has limited RAM, and the free-space check a client does before installing should add up the sizes from the requirements list plus the program itself.

Installing with dependencies

Where that check belongs in the procedure.

Read on

Checksum#

A digest of the variable body. It is the identity of the bytes, and it appears in four places so that a client never has to download something to find out whether it needs it:

  • on the program record;
  • on every entry in the requirements list;
  • in the bulk version check;
  • in the X-CEagle-Checksum header on a download.
CEagle documentation