FUNCTION FC 1 : VOID BEGIN L W#16#1234 T MW 0 CALL FC 2 END_FUNCTION FUNCTION FC 2 : VOID BEGIN L W#16#6789 T MW 0 L 10 T LB 0 END_FUNCTION FUNCTION FC 3 : VOID BEGIN L 1 T LB 0 CALL FC 2 __ASSERT== LB 0, 1 END_FUNCTION FUNCTION FC 4 : VOID VAR_INPUT INPVAR : INT END_VAR BEGIN L #INPVAR __ASSERT== __ACCU 1, 9976 END_FUNCTION FUNCTION FC 5 : VOID VAR_INPUT INPVAR2 : INT END_VAR BEGIN CALL FC 4 ( INPVAR := #INPVAR2, // This is a parameter ) END_FUNCTION FUNCTION FC 6 : VOID BEGIN // Only check OV and OS bits __ASSERT== __STW OV, 1 __ASSERT== __STW OS, 0 L 1 L 1 +I __ASSERT== __STW OV, 0 __ASSERT== __STW OS, 0 END_FUNCTION FUNCTION FC 7 : VOID BEGIN // Trigger an overflow __ASSERT== __STW OV, 0 __ASSERT== __STW OS, 0 L 30000 L 30000 +I __ASSERT== __STW OV, 1 __ASSERT== __STW OS, 1 END_FUNCTION ORGANIZATION_BLOCK OB 1 BEGIN CALL FC 1 __ASSERT== MW 0, W#16#6789 L 0 T MW 0 __ASSERT== MW 0, 0 UC FC 1 __ASSERT== MW 0, W#16#6789 L 0 T MW 0 __ASSERT== MW 0, 0 SET CC FC 1 __ASSERT== MW 0, W#16#6789 L 0 T MW 0 __ASSERT== MW 0, 0 CLR CC FC 1 __ASSERT== MW 0, 0 // Test localdata stack L 255 T LB 0 __ASSERT== LB 0, 255 CALL FC 3 __ASSERT== LB 0, 255 CALL FC 5 ( INPVAR2 := 9976, ) // Test OV/OS bits over call boundaries __STWRST L 30000 L 30000 +I __ASSERT== __STW OV, 1 __ASSERT== __STW OS, 1 CALL FC 6 __ASSERT== __STW OV, 0 __ASSERT== __STW OS, 0 __STWRST CALL FC 7 __ASSERT== __STW OV, 1 __ASSERT== __STW OS, 0 END_ORGANIZATION_BLOCK