The variable table (VARS) consists of a number of contiguous definitions (VARs), each of which contains all the information about a specific user-defined variable: there are no default variables in this table.
The location (relative to the file) and number of elements in the program variable table are specified in the following fields, respectively, depending on where used
•by the HEADER.VARSOFF and HEADER.VARSCNT fields if used in the file header;
•by the fields STRUCT.VARSOFF and STRUCT.VARSCNT if used in structure definition;
•by the fields LIVECMD.VARSOFF and LIVECMD.VARSCNT if used in command definition.
Variable definition
A variable (VAR) consists of the following information:
Name |
Offset |
Type |
Description |
---|---|---|---|
ID |
+0 |
U32 |
Variable ID (#2) Note: only values 0x00010000-0xFFFFFE; value 0xFFFFFF is a special meaning ID; values 0x000001-0x0000FFFF are reserved for default variables. |
TYPEID |
+4 |
U32 |
Variable type ID Note: Can be a default or user-defined type. |
|
+8 |
U8[2] |
(reserved, runtime use) |
FLAGS |
+10 |
U16 |
Variable settings: 0x0001 Uncompressed TEXT field (NCF0). 0x0002 BITTEXT field uncompressed (NCF1) 0x0004 Uncompressed MODIFIER field (NCF2) |
NAME |
+12 |
U32 |
Offset variable name (relative to strings). |
TEXT |
+16 |
U32 |
Offset variable description (relative to compressed strings, or strings if NCF0). |
BITTEXT |
+20 |
U32 |
Offset variable bit descriptions, i.e., sequence of strings related to each individual bit separated by the ascii character 0xFF (related to compressed strings, or strings if NCF0). (#2) |
DIM0 |
+24 |
U32 |
1st array size (0=unspecified) (#1) or index 0 for Alias (TYPEID = 0x00000F). |
DIM1 |
+28 |
U32 |
2nd array size (0=unspecified) (#1) or index 1 for Alias (TYPEID = 0x00000F). |
DIM2 |
+32 |
U32 |
3rd array size (0=unspecified) (#1) or index 2 for Alias (TYPEID = 0x00000F). |
ALIASID |
+36 |
U16 |
Alias type ID (#2) |
ALIASBIT |
+38 |
U16 |
No. of bits per alias (depends on the type of alias ID)(#2) |
SIZE |
+40 |
U32 |
Size of variable. (#3) |
SRCID |
+44 |
U32 |
Source identifier of the variable.(#2,#4) |
VALUE |
+48 |
U32 |
Offset initial value of variable (relative to strings, 0=no value). |
ATTRIB |
+52 |
U32 |
Variable attributes: 0x000001 Variable can be written (WRITE) 0x000002 The variable can be read (READ) 0x000004 The variable can be forced (FORCE) 0x000008 The variable can be released (RELEASE) 0x000010 The variable is constant (CONST) 0x000020 The variable has no bit access (NOBITS) |
MODIFIER |
+56 |
U32 |
Variable modifier offsets (related to compressed strings, or strings if NCF2). |
DIM0L |
+60 |
U32 |
Offset label for 1st array size (relative to strings). (#5) |
DIM1L |
+64 |
U32 |
Offset label for 2nd array size (relative to strings). (#5) |
DIM2L |
+68 |
U32 |
Offset label for 3rd array dimension (relative to strings). (#5) |
|
+72 |
U8[16] |
(reserved) |
(#1) Although ARRAYn fields are 32bit, in the current version of SW the maximum size should still be considered only 16bit (i.e., maximum index 0xFFFF).
(#2) Field not used (value 0) if used in structure definition.
(#3) Field not used (value 0) if used by defining an Alias (TYPEID = 0x00000F)
(#4) Field not used (value 0) if used in live command definition.
(#5) Label means the name of a variable (constant value) or the ascii representation of a numeric value, i.e., an offset to the string table.