ATTENZIONE: le presenti informazioni fanno riferimento ad una precedente versione del formato delle modifiche live (versione 1.1).
La tabella comandi live (LIVECMDS) è composta da un numero di definizioni (LIVECMD) contigue, ognuna delle quali contiene tutte le informazioni su uno specifico comando live.
La posizione (relativa al file) e la dimensione della tabella sono specificate rispettivamente dai campi LIVEHEADER.ITEMSOFF e LIVEHEADER.ITEMSSIZE.
Definizione comando live
I comandi live (LIVECMD) hanno una parte iniziale comune, quindi un'area dati specifica per ogni tipo di elemento. La parte comune è la seguente:
Nome |
Offset |
Tipo |
Descrizione |
---|---|---|---|
CODE |
+0 |
U16 |
Codice del comando |
SIZE |
+2 |
U32 |
Dimensione completa del comando (tutti i campi). |
DATA |
+6 |
... |
Dati specifici del comando (opzionali). |
I comandi attualmente previsti sono:
•Comando 0x0001 - Inserimento circuito
•Comando 0x0002 - Modifica circuito
•Comando 0x0003 - Rimozione circuito
•Comando 0x0004 - Inserimento struttura
•Comando 0x0005 - Inserimento variabile
Comando 0x0001 - Inserimento circuito
Questo comando permette di inserire un circuito in un dato blocco, in una certa posizione. I dati del comando, sono i seguenti:
Nome |
Offset |
Tipo |
Descrizione |
---|---|---|---|
CODE |
+0 |
U16 |
0x0001 |
SIZE |
+2 |
U32 |
32 + ITEMSSIZE |
BLOCKID |
+6 |
U32 |
ID blocco contenitore |
RUNGID |
+10 |
U32 |
ID del circuito interessato (và in stato Inserting) |
REFID |
+14 |
U32 |
ID del circuito di riferimento (solo per locazioni inserimento #1, altrimenti 0) |
IFLAGS |
+18 |
U16 |
Impostazioni di inserimento: 0x000F = Locazione di inserimento: 0x0 = Prima del circuito con ID REFID (#1) 0x1 = Dopo il circuito con ID REFID (#1) 0x2 = Come primo circuito del blocco 0x3 = Come ultimo circuito del blocco |
FLAGS |
+20 |
U16 |
Impostazioni del circuito: 0x0001 (ignorato in modifiche live) |
ITEMSOFF |
+22 |
U32 |
Offset della tabella elementi circuito (relativo al file) |
ITEMSSIZE |
+26 |
U32 |
Dimensione della tabella elementi circuito |
TEXT |
+30 |
U32 |
Offset descrizione del circuito ((relativo a stringhe) |
ATTENZIONE: la tabella elementi circuito deve comunque essere accodata al comando live stesso.
Comando 0x0002 - Modifica circuito
Questo comando permette di inserire un circuito modificato, rimuovendo quello vecchio, in un dato blocco. I dati del comando, sono i seguenti:
Nome |
Offset |
Tipo |
Descrizione |
---|---|---|---|
CODE |
+0 |
U16 |
0x0002 |
SIZE |
+2 |
U32 |
32 + ITEMSSIZE |
BLOCKID |
+6 |
U32 |
ID blocco contenitore |
RUNGID |
+10 |
U32 |
ID del circuito interessato (va in stato Inserting) |
REFID |
+14 |
U32 |
ID del circuito precedente da rimuovere (va in stato Dropping) |
|
+18 |
U16 |
(riservato) |
FLAGS |
+20 |
U16 |
Impostazioni del circuito: 0x0001 (ignorato in modifiche live) |
ITEMSOFF |
+22 |
U32 |
Offset della tabella elementi circuito (relativo al file) |
ITEMSSIZE |
+26 |
U32 |
Dimensione della tabella elementi circuito |
TEXT |
+30 |
U32 |
Offset descrizione del circuito (relativo a stringhe) |
Comando 0x0003 - Rimozione circuito
Questo comando permette di rimuovere un circuito esistente. I dati del comando, sono i seguenti:
Nome |
Offset |
Tipo |
Descrizione |
---|---|---|---|
CODE |
+0 |
U16 |
0x0003 |
SIZE |
+2 |
U32 |
14 |
BLOCKID |
+6 |
U32 |
ID blocco contenitore |
RUNGID |
+10 |
U32 |
ID del circuito da rimuovere (va in stato Deleting) |
Comando 0x0004 - Inserimento struttura
Questo comando permette di creare una nuova struttura. I dati del comando, sono i seguenti:
Nome |
Offset |
Tipo |
Descrizione |
---|---|---|---|
CODE |
+0 |
U16 |
0x0004 |
SIZE |
+2 |
U32 |
32 + (VARSCNT * sizeof (VAR)) |
TYPEID |
+6 |
U32 |
ID tipo struttura utente Nota: solo valori 0x0001000-0xFFFFFFFE; i valori 0 e 0xFFFFFFFF sono ID a significato speciale. |
FLAGS |
+10 |
U16 |
Impostazioni struttura: 0x0001 (ignorato in modifiche live) |
NAME |
+12 |
U32 |
Offset nome della struttura (relativo a stringhe) |
TEXT |
+16 |
U32 |
Offset descrizione della struttura (relativo a stringhe) |
VARSOFF |
+20 |
U32 |
Offset della tabella variabili (relativa al file) (#1) |
VARSCNT |
+24 |
U32 |
Dimensione della tabella variabili |
SIZE |
+28 |
U32 |
Dimensione della struttura [byte] |
(#1) La definizione di struttura usa una normale tabella di definizione variabili per definire i propri elementi. In questo caso gli ID delle variabili non hanno senso e dovrebbero essere sempre a 0.
Comando 0x0005 - Inserimento variabile
Questo comando permette di creare una nuova variabile. I dati del comando, sono i seguenti:
Nome |
Offset |
Tipo |
Descrizione |
---|---|---|---|
CODE |
+0 |
U16 |
0x0005 |
SIZE |
+2 |
U32 |
48 |
VARID |
|
U32 |
ID univoco della variabile utente Nota: solo valori 0x0001000-0xFFFFFFFE; i valori 0 e 0xFFFFFFFF sono ID a significato speciale. |
TYPEID |
|
U32 |
ID tipo dato variabile Nota: può essere un tipo predefinito oppure definito dall'utente. |
FLAGS |
|
U16 |
Impostazioni della variabile: 0x0001 (ignorato in modifiche live) 0x0002 (ignorato in modifiche live) |
NAME |
|
U32 |
Offset nome della variabile (relativo a stringhe) |
TEXT |
|
U32 |
Offset descrizione della variabile (relativo a stringhe) |
BITTEXT |
|
U32 |
Offset descrizioni dei bit variabili, ovvero sequenza di stringhe relative ad ogni singolo bit separate dal carattere ascii 0xFF (relativo a stringhe). |
ARRAY0 |
|
U32 |
N. di indici 1o livello (0=Nessun array) (#1) o indice 0 per Alias. |
ARRAY1 |
|
U32 |
N. di indici 2o livello (0=Nessun array) (#1) o indice 1 per Alias. |
ARRAY2 |
|
U32 |
N. di indici 3o livello (0=Nessun array) (#1) o indice 2 per Alias. |
ALIASID |
|
U16 |
ID tipo alias |
ALIASBIT |
|
U16 |
N. di bit per alias (dipende dal tipo di ID alias) |
SIZE |
|
U32 |
Dimensione della variabile. Se Alias, la dimensione è 0. |
(#1) Sebbene i campi ARRAYn siano a 32bit, nella versione attuale di SW l'indice massimo comunque va considerato solo a 16bit (ovvero massimo indice 0xFFFF).