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 from | Example | Where it appears | |
|---|---|---|---|
| Address | the project id | snake | Roost URLs, dependency lists, the API |
| Variable name | inside the built file | SNAKE | the calculator's program list |
| LibLoad name | the library manifest | DEMO | the 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#
Something the calculator runs. ASM/C projects and TI-BASIC projects publish these.
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.
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.The transfer file
The body plus a header describing it: a signature, the variable name, the type and a checksum. This is the
.8xpor.8xva 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.
Where that check belongs in the procedure.
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-Checksumheader on a download.