//Byte 0 of ANY pointer is the HEADER which is always B#16#10 for S7
L B#16#10 //Load the Byte Sytax ID B#16#10 into ACUM1
T LB 0 //Transfer ACUM1 to Local Byte 0 of Temp Variable: #SourceAny Local ANY POINTER)
//Byte 1 is for DATA TYPE:
//Types: 01=Bool, 02=Byte, 03=Char, 04=Word, 05=Int, 06=Dword, 07=Dint, 08=Real, 09=Date, 0A=TOD, 0B=Time, 0C=S5Time
L B#16#1 //Load the Byte data type BOOL(hex01)into ACUM1.
T LB 1 //Transfer ACUM1 to Local Byte 1 of Temp Variable: #SourceAny (Type Local ANY POINTER)
//Word 2 is REPETITION FACTOR - how many items to be moved
L W#16#1 //Load the Word Quantity 1(hex01)into ACUM1.
T LW 2 //Transfer ACUM1 to Local Word 2 of Temp Variable: #SourceAny (Type Local ANY POINTER)
//Word 4 is DB NUMBER or 0 for none
L W#16#0 //Load the Word Data Block Number 0 (Hex 0)into ACUM1
T LW 4 //Transfer ACUM1 to Local Word 4 of Temp Variable: #SourceAny (Type Local ANY POINTER)
//Byte 8 and 3LSBs of 7 are BYTE address
L #ByteAddress //Load ByteAddress from HMI into ACUM1
SLD 3 //Shift Left Double 3 places to make room for bit level
L #BitAddress //Load BitAddress from HMI int ACUM1
+D //Add 2 together to get BYTE.BIT formate
T LD 6 //Transfer ACUM1 to Local Double-Word 6 of Temp Variable: #SourceAny (Type Local ANY POINTER)
//Byte 6 is MEMORY TYPE
// b#16#80=I/O area, 81=Input area, 82=Output area, 83=Bit memory area, 84=Data block, 85=Instance data block, 86=Local data (L stack), 87=Previous local data
//HMI is used to select memory type then adds hex80 to put in correct format
L #MemType //Load Memory type entered on HMI
L B#16#80 //Load hex 80
+I //Add 2 together to be proper format
T LB 6 //Transfer ACUM1 to Local Word 6 of Temp Variable: #SourceAny (Type Local ANY POINTER)