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

1.3 KiB

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

FUNCTION "Block_compare" : 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_OUTPUT
  mDifference : Bool;
END_VAR

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

BEGIN

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

  // --- BEGIN STL Network 1 ---
   
     	CLR
     	=	"mDifference"
     
     	L	"DB_source"
     	T	"DBNUM_Source"
     	L	"DB_dest"
     	T	"DBNUM_Dest"
     
     	L	P#0.0
     	L	"Start_source"
     	SLD	3
     	ADD_D
     	T	"Pointer_Source"
     
     	L	P#0.0
     	L	"Start_dest"
     	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]
     	L	DBB[AR2,P#0.0]
     	NE_I
     	ADDAR1	P#1.0
     	ADDAR2	P#1.0
     	JC	diff
     	L	"Loop_Count"
     	LOOP	m001
     	JU	end
     diff:   		SET
     	=	"mDifference"
     end:    		NOP_0
   
  // --- END STL Network 1 ---

END_FUNCTION