fc9_eq_dt.awl 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. DATA_BLOCK DB 1
  2. STRUCT
  3. DT1 : DATE_AND_TIME := DT#1990-1-1-0:0:0.000;
  4. DT2 : DATE_AND_TIME := DT#1990-1-1-0:0:0.000;
  5. DT3 : DATE_AND_TIME := DT#1990-1-1-0:0:0.000;
  6. END_STRUCT;
  7. BEGIN
  8. DT1 := DT#1990-1-1-0:0:0.000;
  9. DT2 := DT#1990-1-1-0:0:0.000;
  10. DT3 := DT#1990-1-1-0:0:0.000;
  11. END_DATA_BLOCK
  12. FUNCTION FC 1 : VOID
  13. VAR_TEMP
  14. DBNR : INT;
  15. END_VAR
  16. BEGIN
  17. AUF DB 1
  18. LAR1 P#DBX 0.0
  19. // Rotate DB1.DT1 one bit to the left
  20. L D [AR1,P#4.0]
  21. UD DW#16#80000000
  22. L D [AR1,P#0.0]
  23. RLDA
  24. T D [AR1,P#0.0]
  25. L D [AR1,P#4.0]
  26. RLDA
  27. T D [AR1,P#4.0]
  28. // Rotate DB1.DT2 one bit to the left
  29. L D [AR1,P#12.0]
  30. UD DW#16#80000000
  31. L D [AR1,P#8.0]
  32. RLDA
  33. T D [AR1,P#8.0]
  34. L D [AR1,P#12.0]
  35. RLDA
  36. T D [AR1,P#12.0]
  37. // Clobber DB and DI registers
  38. L 0
  39. T #DBNR
  40. AUF DB [#DBNR]
  41. AUF DI [#DBNR]
  42. // Compare DB1.DT1 to DB1.DT2
  43. // Should be equal
  44. CALL "EQ_DT" (
  45. DT1 := DB1.DT1,
  46. DT2 := DB1.DT2,
  47. RET_VAL := M 0.0,
  48. )
  49. U M 0.0
  50. __ASSERT== __STW VKE, 1
  51. // Clobber DB and DI registers
  52. L 0
  53. T #DBNR
  54. AUF DB [#DBNR]
  55. AUF DI [#DBNR]
  56. // Compare DB1.DT1 to DB1.DT3
  57. // Should be not equal
  58. CALL "EQ_DT" (
  59. DT1 := DB1.DT1,
  60. DT2 := DB1.DT3,
  61. RET_VAL := M 0.1,
  62. )
  63. U M 0.1
  64. __ASSERT== __STW VKE, 0
  65. // Decrement the test counter.
  66. // Stop test, if it reaches zero.
  67. AUF DB 1
  68. U DBX 0.0
  69. ZR Z 0
  70. U Z 0
  71. SPB m003
  72. CALL SFC 46 // Stop CPU
  73. m003: NOP 0
  74. END_FUNCTION
  75. ORGANIZATION_BLOCK OB 1
  76. BEGIN
  77. CALL FC 1
  78. END_ORGANIZATION_BLOCK
  79. ORGANIZATION_BLOCK OB 100
  80. BEGIN
  81. AUF DB 1
  82. LAR1 P#DBX 0.0
  83. // Initialize DB1.DT1 (one bit set)
  84. L 1
  85. T D [AR1,P#0.0]
  86. L 0
  87. T D [AR1,P#4.0]
  88. // Initialize DB1.DT2 (one bit set)
  89. L 1
  90. T D [AR1,P#8.0]
  91. L 0
  92. T D [AR1,P#12.0]
  93. // Initialize DB1.DT3 (all bits clear)
  94. L 0
  95. T D [AR1,P#16.0]
  96. L 0
  97. T D [AR1,P#20.0]
  98. // Initialize the test counter.
  99. // Run 10 test loops.
  100. L C#10
  101. CLR
  102. S Z 0
  103. SET
  104. S Z 0
  105. END_ORGANIZATION_BLOCK