123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 |
- ORGANIZATION_BLOCK OB 100
- BEGIN
- // Check DB/DI register assignments
- __ASSERT== __DBR 1, 0
- __ASSERT== __DBR 2, 0
- AUF DB 1
- __ASSERT== __DBR 1, 1
- __ASSERT== __DBR 2, 0
- AUF DB 2
- __ASSERT== __DBR 1, 2
- __ASSERT== __DBR 2, 0
- AUF DI 1
- __ASSERT== __DBR 1, 2
- __ASSERT== __DBR 2, 1
- AUF DI 2
- __ASSERT== __DBR 1, 2
- __ASSERT== __DBR 2, 2
- // Check initial DB 1 values
- AUF DB 1
- L DBW 0
- __ASSERT== __ACCU 1, 1337
- L DBD 2
- __ASSERT== __ACCU 1, DW#16#DEADBEEF
- L DBW 6
- __ASSERT== __ACCU 1, W#16#0102
- L DBB 8
- __ASSERT== __ACCU 1, 3
- L DBB 9
- __ASSERT== __ACCU 1, 0
- L DBW 10
- __ASSERT== __ACCU 1, 42
- // Check initial DB 2 values
- AUF DB 2
- L DBW 0
- __ASSERT== __ACCU 1, 123
- L DBW 2
- __ASSERT== __ACCU 1, 456
- L DBB 4
- __ASSERT== __ACCU 1, 1
- L DBB 5
- __ASSERT== __ACCU 1, 0
- L DBD 6
- __ASSERT== __ACCU 1, DW#16#77777777
- // Check direct DB fetch
- AUF DB 2
- __ASSERT== __DBR 1, 2
- L DB1.DBW 0
- __ASSERT== __DBR 1, 1
- __ASSERT== __ACCU 1, 1337
- L DB1.DBD 2
- __ASSERT== __DBR 1, 1
- __ASSERT== __ACCU 1, DW#16#DEADBEEF
- L DB1.DBW 6
- __ASSERT== __DBR 1, 1
- __ASSERT== __ACCU 1, W#16#0102
- L DB1.DBB 8
- __ASSERT== __DBR 1, 1
- __ASSERT== __ACCU 1, 3
- L DB1.DBB 9
- __ASSERT== __DBR 1, 1
- __ASSERT== __ACCU 1, 0
- L DB1.DBW 10
- __ASSERT== __DBR 1, 1
- __ASSERT== __ACCU 1, 42
- AUF DB 1
- __ASSERT== __DBR 1, 1
- L DB2.DBW 0
- __ASSERT== __DBR 1, 2
- __ASSERT== __ACCU 1, 123
- SET
- = M 0.0
- END_ORGANIZATION_BLOCK
- ORGANIZATION_BLOCK OB 1
- BEGIN
- // OB 100 execution sanity check
- __ASSERT== M 0.0, 1
- // Modify the DB 1
- AUF DB 1
- L 9876
- T DBW 6
- L 5432
- T DBW 10
- CLR
- = DBX 8.0
- SET
- = DBX 8.2
- // Check the DB 1 values
- L DBW 0
- __ASSERT== __ACCU 1, 1337
- L DBD 2
- __ASSERT== __ACCU 1, DW#16#DEADBEEF
- L DBW 6
- __ASSERT== __ACCU 1, 9876
- L DBB 8
- __ASSERT== __ACCU 1, 6
- L DBB 9
- __ASSERT== __ACCU 1, 0
- L DBW 10
- __ASSERT== __ACCU 1, 5432
- // Check direct DB store
- AUF DB 2 // DB 2 on purpose
- L 2244
- T DB1.DBW 6
- L L#1008901
- T DB1.DBD 2
- SET
- = DB1.DBX 8.0
- L 42
- T DB1.DBB 9
- L DB1.DBW 6
- __ASSERT== __ACCU 1, 2244
- L DB1.DBD 2
- __ASSERT== __ACCU 1, L#1008901
- U DB1.DBX 8.0
- __ASSERT== __STW VKE, 1
- L DB1.DBB 9
- __ASSERT== __ACCU 1, 42
- // FB 1 call test
- CLR
- = M 18.0
- CALL FB 1, DB 2 (
- INPUT_VAR := 8877,
- OUTPUT_VAR := LW 16,
- INOUT_VAR := M 18.0
- )
- __ASSERT== LW 16, 4433
- __ASSERT== M 18.0, 1
- // FC 1 call test
- L 1616
- T LW 16
- L 2020
- T MW 20
- CALL FC 1 (
- INPUT_WORD := LW 16,
- INPUT_FC := FC 2,
- INPUT_FB := FB 1,
- INPUT_DB := DB 1,
- OUTPUT_BOOL0 := M 18.0,
- OUTPUT_BOOL1 := M 18.1,
- INOUT_INT := MW 20
- )
- __ASSERT== M 18.0, 1
- __ASSERT== M 18.1, 0
- // Check DB/DI register assignments around FC/FB calls
- AUF DB 12
- AUF DI 13
- __ASSERT== __DBR 1, 12
- __ASSERT== __DBR 2, 13
- CALL FC 10
- __ASSERT== __DBR 1, 12
- __ASSERT== __DBR 2, 13
- CALL FB 11, DB 11
- __ASSERT== __DBR 1, 11
- __ASSERT== __DBR 2, 13
- // Check DBNO, DINO, DBLG and DILG operators
- AUF DB 1
- AUF DI 2
- L DBNO
- __ASSERT== __ACCU 1, 1
- L DINO
- __ASSERT== __ACCU 1, 2
- L DBLG
- __ASSERT== __ACCU 1, 12
- L DILG
- __ASSERT== __ACCU 1, 10
- CALL SFC 46 // STOP CPU
- END_ORGANIZATION_BLOCK
- FUNCTION FC 1: VOID
- VAR_INPUT
- INPUT_WORD : WORD;
- INPUT_FC : BLOCK_FC;
- INPUT_FB : BLOCK_FB;
- INPUT_DB : BLOCK_DB;
- END_VAR
- VAR_OUTPUT
- OUTPUT_BOOL0 : BOOL;
- OUTPUT_BOOL1 : BOOL;
- END_VAR
- VAR_IN_OUT
- INOUT_INT : INT;
- END_VAR
- VAR_TEMP
- TEMP0 : INT;
- TEMP1 : BOOL;
- TEMP2 : INT;
- END_VAR
- BEGIN
- L #INPUT_WORD
- __ASSERT== __ACCU 1, 1616
- L #INOUT_INT
- __ASSERT== __ACCU 1, 2020
- SET
- = #OUTPUT_BOOL0
- CLR
- = #OUTPUT_BOOL1
- L 4343
- T #TEMP0
- SET
- = #TEMP1
- L 6565
- T #TEMP2
- __ASSERT== LW 0, 4343
- __ASSERT== L 2.0, 1
- __ASSERT== LW 4, 6565
- // Check the passed-in DB
- AUF #INPUT_DB
- L DBW 0
- __ASSERT== __ACCU 1, 1337
- END_FUNCTION
- FUNCTION_BLOCK FB 1
- VAR_INPUT
- INPUT_VAR : INT;
- END_VAR
- VAR_OUTPUT
- OUTPUT_VAR : INT;
- END_VAR
- VAR_IN_OUT
- INOUT_VAR : BOOL;
- END_VAR
- VAR
- STAT_VAR : DWORD;
- END_VAR
- BEGIN
- L #INPUT_VAR
- __ASSERT== __ACCU 1, 8877
- L 4433
- T #OUTPUT_VAR
- U #INOUT_VAR
- __ASSERT== __STW VKE, 0
- SET
- = #INOUT_VAR
- L #STAT_VAR
- __ASSERT== __ACCU 1, DW#16#77777777
- END_FUNCTION_BLOCK
- FUNCTION FC 10 : VOID
- BEGIN
- __ASSERT== __DBR 1, 12
- __ASSERT== __DBR 2, 13
- AUF DB 1
- AUF DI 2
- __ASSERT== __DBR 1, 1
- __ASSERT== __DBR 2, 2
- END_FUNCTION
- FUNCTION_BLOCK FB 11
- BEGIN
- __ASSERT== __DBR 1, 13
- __ASSERT== __DBR 2, 11
- AUF DB 1
- AUF DI 2
- __ASSERT== __DBR 1, 1
- __ASSERT== __DBR 2, 2
- END_FUNCTION_BLOCK
- DATA_BLOCK DB 1
- TITLE = global DB
- STRUCT
- VARIABLE0 : INT;
- VARIABLE1 : DWORD;
- VARIABLE2 : WORD;
- VARIABLE3 : BOOL;
- VARIABLE4 : BOOL;
- VARIABLE5 : BOOL;
- VARIABLE6 : INT;
- END_STRUCT;
- BEGIN
- VARIABLE0 := 1337;
- VARIABLE1 := DW#16#DEADBEEF;
- VARIABLE2 := B#(1, 2);
- VARIABLE3 := True;
- VARIABLE4 := True;
- VARIABLE5 := False;
- VARIABLE6 := 42;
- END_DATA_BLOCK
- DATA_BLOCK DB 2
- TITLE = instance DB for FB 1
- FB 1
- BEGIN
- INPUT_VAR := 123;
- OUTPUT_VAR := 456;
- INOUT_VAR := True;
- STAT_VAR := DW#16#77777777;
- END_DATA_BLOCK
- DATA_BLOCK DB 11
- TITLE = instance DB for FB 11
- FB 11
- BEGIN
- END_DATA_BLOCK
- DATA_BLOCK DB 12
- TITLE = global data block 12
- STRUCT
- foo : INT;
- END_STRUCT;
- BEGIN
- foo := 12;
- END_DATA_BLOCK
- DATA_BLOCK DB 13
- TITLE = global data block 13
- STRUCT
- bar : INT;
- END_STRUCT;
- BEGIN
- bar := 13;
- END_DATA_BLOCK
|