La tabella variabili (VARS) è composta da un numero di definizioni (VAR) contigue, ognuna delle quali contiene tutte le informazioni su uno specifica variabile definita dall'utente: in questa tabella non sono presenti le variabili predefinite.
La posizione (relativa al file) e il numero di elementi della tabella delle variabili di programma sono specificate rispettivamente nei seguenti campi, a seconda di dove utilizzata
•dai campi HEADER.VARSOFF e HEADER.VARSCNT se utilizzati in intestazione file;
•dai campi STRUCT.VARSOFF e STRUCT.VARSCNT se utilizzati in definizione struttura;
•dai campi LIVECMD.VARSOFF e LIVECMD.VARSCNT se utilizzati in definizione comando.
Definizione variabile
Una variabile (VAR) è composta dalle seguenti informazioni:
Nome |
Offset |
Tipo |
Descrizione |
---|---|---|---|
ID |
+0 |
U32 |
ID variabile (#2) Nota: solo valori 0x00010000-0xFFFFFFFE; il valore 0xFFFFFFFF è un ID a significato speciale; i valori 0x00000001-0x0000FFFF sono riservati per le variabili predefinite. |
TYPEID |
+4 |
U32 |
ID tipo variabile Nota: può essere un tipo predefinito oppure definito dall'utente. |
|
+8 |
U8[2] |
(riservati, uso runtime) |
FLAGS |
+10 |
U16 |
Impostazioni della variabile: 0x0001 Campo TEXT non compresso (NCF0). 0x0002 Campo BITTEXT non compresso (NCF1) 0x0004 Campo MODIFIER non compresso (NCF2) |
NAME |
+12 |
U32 |
Offset nome della variabile (relativo a stringhe). |
TEXT |
+16 |
U32 |
Offset descrizione della variabile (relativo a stringhe compresse, o stringhe se NCF0). |
BITTEXT |
+20 |
U32 |
Offset descrizioni dei bit variabili, ovvero sequenza di stringhe relative ad ogni singolo bit separate dal carattere ascii 0xFF (relativo a stringhe compresse, o stringhe se NCF0). (#2) |
DIM0 |
+24 |
U32 |
1a dimensione array (0=non specificata) (#1) o indice 0 per Alias (TYPEID = 0x0000000F). |
DIM1 |
+28 |
U32 |
2a dimensione array (0=non specificata) (#1) o indice 1 per Alias (TYPEID = 0x0000000F). |
DIM2 |
+32 |
U32 |
3a dimensione array (0=non specificata) (#1) o indice 2 per Alias (TYPEID = 0x0000000F). |
ALIASID |
+36 |
U16 |
ID tipo alias (#2) |
ALIASBIT |
+38 |
U16 |
N. di bit per alias (dipende dal tipo di ID alias)(#2) |
SIZE |
+40 |
U32 |
Dimensione della variabile. (#3) |
SRCID |
+44 |
U32 |
Identificativo sorgente della variabile.(#2,#4) |
VALUE |
+48 |
U32 |
Offset valore iniziale della variabile (relativo a stringhe, 0=nessun valore). |
ATTRIB |
+52 |
U32 |
Attributi variabile: 0x00000001 La variabile può essere scritta (WRITE) 0x00000002 La variabile può essere letta (READ) 0x00000004 La variabile può essere forzata (FORCE) 0x00000008 La variabile può essere rilasciata (RELEASE) 0x00000010 La variabile è costante (CONST) 0x00000020 La variabile non ha accesso a bit (NOBITS) |
MODIFIER |
+56 |
U32 |
Offset modificatori della variabile (relativo a stringhe compresse, o stringhe se NCF2). |
DIM0L |
+60 |
U32 |
Offset etichetta per 1a dimensione array (relativo a stringhe). (#5) |
DIM1L |
+64 |
U32 |
Offset etichetta per 2a dimensione array (relativo a stringhe). (#5) |
DIM2L |
+68 |
U32 |
Offset etichetta per 3a dimensione array (relativo a stringhe). (#5) |
(#1) Sebbene i campi ARRAYn siano a 32bit, nella versione attuale di SW la dimensione massima va comunque considerata solo a 16bit (ovvero massimo indice 0xFFFF).
(#2) Campo non utilizzato (valore 0) se utilizzata in definizione struttura
(#3) Campo non utilizzato (valore 0) se utilizzato definendo un Alias (TYPEID = 0x0000000F)
(#4) Campo non utilizzato (valore 0) se utilizzata in definizione comando live.
(#5) Per etichetta si intende nome di una variabile (a valore costante) oppure la rappresentazione ascii di un valore numerico, ovvero un offset alla tabella stringhe .