Obsidean_VM/04-SIDEL/00 - MASTER/Source/source/Block_move.md

1.3 KiB

// Block Type: FC
// Block Number: 60
// Original Network Languages: STL

FUNCTION "Block_move" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1

VAR_INPUT
  DB_source : Int;
  DB_dest : Int;
  Start_source : Int;
  Start_dest : Int;
  Nr_byte : Int;
END_VAR

VAR_TEMP
  DBNUM_Source : Word;
  DBNUM_Dest : Word;
  Pointer_Source : DWord;
  Pointer_Dest : DWord;
  mSource_Dint : DInt;
  mDest_Dint : DInt;
  Loop_Count : Int;
END_VAR

BEGIN

  // Network 1: Byte Transfert (Original Language: STL)

  // --- BEGIN STL Network 1 ---
   
     	L	"Start_source"
     	T	"mSource_Dint"
     
     	L	"Start_dest"
     	T	"mDest_Dint"
     
     	L	0
     	T	"Loop_Count"
     
     	L	"DB_source"
     	T	"DBNUM_Source"
     	L	"DB_dest"
     	T	"DBNUM_Dest"
     
     	L	P#0.0
     	L	"mSource_Dint"
     	SLD	3
     	ADD_D
     	T	"Pointer_Source"
     
     	L	P#0.0
     	L	"mDest_Dint"
     	SLD	3
     	ADD_D
     	T	"Pointer_Dest"
     
     	LAR1	"Pointer_Source"
     	LAR2	"Pointer_Dest"
     	L	"Nr_byte"
     m001:   		T	"Loop_Count"
     	AUF	DBB[AR?,P#0.0]
     	L	DBB[AR1,P#0.0]
     	AUF	DBB[AR?,P#0.0]
     	T	DBB[AR2,P#0.0]
     	ADDAR1	P#1.0
     	ADDAR2	P#1.0
     	L	"Loop_Count"
     	LOOP	m001
   
  // --- END STL Network 1 ---

END_FUNCTION