Application variables, or AppVars, are variables that assembly programs and the TI-OS can use to store ANY kind of data!
These are often used to store information that is to be used later in some shape or form.
While it is easy to make them using the C(++) toolchain, sometimes you might want that an external program be used to create data that one of your programs can use.
This guide is here to help you do that!
This guide is here so that there is no ambiguity on how you and your program should read and write to an AppVar file.
The following sections are provided to make your life easier:
".8xv" is the extension used for TI-84 variable files. This file type can hold many kinds of variables, including AppVars!
In order to read from it, you have to know how the data is arranged, which the table below will show you.
All 2-byte values are stored in Intel-style little-endian notation, which just means that they're stored from least significant to most significant.
Example: 0x2949 would be stored as 49 29.
Offset | Length | Description |
---|---|---|
0 | 8 bytes | File signature. This is always **TI83F* |
8 | 3 bytes | Further signature. This is always 0x1A, 0x0A, and 0x00 (26,10,0). |
11 | 42 bytes | File comment. Padded with null characters if it takes up less than 42 bytes. |
53 | 2 bytes | Length in bytes of the data section. This is 57 bytes less than the total file size (not of the data section!). |
55 | n bytes | The data section. In an AppVar file this contains all of the AppVar data. |
55+n | 2 bytes | File checksum. This is basically the lower 16 bits of the sum of all the bytes in the data section. |
Don't forget that the data section has its own specification!
Don't make the mistake I made and forget that the data here needs to be formatted too!
Your AppVar file will not work if you just dump your data in here. (You have to look at some more info before you can just do that!)
Anyway, every variable in an .8xv file is contained in this section. For us, we will be fitting one AppVar into this file,
so we shouldn't worry about figuring out how to put multiple variables in here.
Each variable entry is formatted like this:
Offset | Length | Description |
---|---|---|
0 | 2 bytes | Storage type? Always has a value of 0x0B (11) or 0x0D (13). |
2 | 2 bytes | Length in bytes of the variable data (Should be the length of the entire data secion minus 17). |
4 | 1 byte | Variable type ID byte. The type ID for an AppVar is 0x15 (21) |
5 | 8 bytes | Variable name as it shows up on your calculator. Padded with null characters on the right. |
13 | 1 byte | Version. Normally set to 0. This parameter exists if "Storage type" is 0x0D (13). |
14 | 1 byte | Flag. Set to 0x80 (128) if archived, otherwise 0. Exists if "Storage type" is 0x0D (13). |
15 | 2 bytes | Length in bytes of the variable data (this is a copy of offset 2). |
17 | n bytes | Entry data. Specified below. |
Offset | Length | Description |
---|---|---|
0 | 2 bytes | Length of the entry data |
2 | n bytes | The data. |
And that's that! I hope this guide helps you all learn how to create and read AppVar files on your computer!
Thanks go to Merthsoft for providing information about .8xv files!