123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- DATA_BLOCK DB 1
- STRUCT
- DT1 : DATE_AND_TIME := DT#1990-1-1-0:0:0.000;
- DT2 : DATE_AND_TIME := DT#1990-1-1-0:0:0.000;
- DT3 : DATE_AND_TIME := DT#1990-1-1-0:0:0.000;
- END_STRUCT;
- BEGIN
- DT1 := DT#1990-1-1-0:0:0.000;
- DT2 := DT#1990-1-1-0:0:0.000;
- DT3 := DT#1990-1-1-0:0:0.000;
- END_DATA_BLOCK
- FUNCTION FC 1 : VOID
- VAR_TEMP
- DBNR : INT;
- END_VAR
- BEGIN
- AUF DB 1
- LAR1 P#DBX 0.0
- // Rotate DB1.DT1 one bit to the left
- L D [AR1,P#4.0]
- UD DW#16#80000000
- L D [AR1,P#0.0]
- RLDA
- T D [AR1,P#0.0]
- L D [AR1,P#4.0]
- RLDA
- T D [AR1,P#4.0]
- // Rotate DB1.DT2 one bit to the left
- L D [AR1,P#12.0]
- UD DW#16#80000000
- L D [AR1,P#8.0]
- RLDA
- T D [AR1,P#8.0]
- L D [AR1,P#12.0]
- RLDA
- T D [AR1,P#12.0]
- // Clobber DB and DI registers
- L 0
- T #DBNR
- AUF DB [#DBNR]
- AUF DI [#DBNR]
- // Compare DB1.DT1 to DB1.DT2
- // Should be equal
- CALL "EQ_DT" (
- DT1 := DB1.DT1,
- DT2 := DB1.DT2,
- RET_VAL := M 0.0,
- )
- U M 0.0
- __ASSERT== __STW VKE, 1
- // Clobber DB and DI registers
- L 0
- T #DBNR
- AUF DB [#DBNR]
- AUF DI [#DBNR]
- // Compare DB1.DT1 to DB1.DT3
- // Should be not equal
- CALL "EQ_DT" (
- DT1 := DB1.DT1,
- DT2 := DB1.DT3,
- RET_VAL := M 0.1,
- )
- U M 0.1
- __ASSERT== __STW VKE, 0
- // Decrement the test counter.
- // Stop test, if it reaches zero.
- AUF DB 1
- U DBX 0.0
- ZR Z 0
- U Z 0
- SPB m003
- CALL SFC 46 // Stop CPU
- m003: NOP 0
- END_FUNCTION
- ORGANIZATION_BLOCK OB 1
- BEGIN
- CALL FC 1
- END_ORGANIZATION_BLOCK
- ORGANIZATION_BLOCK OB 100
- BEGIN
- AUF DB 1
- LAR1 P#DBX 0.0
- // Initialize DB1.DT1 (one bit set)
- L 1
- T D [AR1,P#0.0]
- L 0
- T D [AR1,P#4.0]
- // Initialize DB1.DT2 (one bit set)
- L 1
- T D [AR1,P#8.0]
- L 0
- T D [AR1,P#12.0]
- // Initialize DB1.DT3 (all bits clear)
- L 0
- T D [AR1,P#16.0]
- L 0
- T D [AR1,P#20.0]
- // Initialize the test counter.
- // Run 10 test loops.
- L C#10
- CLR
- S Z 0
- SET
- S Z 0
- END_ORGANIZATION_BLOCK
|