KernelUtils.Mos 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. MODULE KernelUtils;
  2. (* ----------------------------------------------------------------------------------------------------------------------- *)
  3. (* SYSTEM and KERNEL ACCESS FROM THE APPLICATION LAYER GO THROUGH THIS MODULE *)
  4. (* ----------------------------------------------------------------------------------------------------------------------- *)
  5. IMPORT SYSTEM, Bit, Clocks;
  6. VAR
  7. tickDivisor : REAL;
  8. PROCEDURE IsValidSetParameter*( CONST value : LONGINT ) : BOOLEAN;
  9. VAR
  10. res : BOOLEAN;
  11. BEGIN
  12. res:=TRUE;
  13. IF ( value < 0 ) OR ( value > 31 ) THEN
  14. res:=FALSE;
  15. END;
  16. RETURN res
  17. END IsValidSetParameter;
  18. PROCEDURE GetSetAsInteger*( CONST value : SET ): LONGINT;
  19. VAR
  20. res : LONGINT;
  21. BEGIN
  22. res:=0;
  23. res:=SYSTEM.VAL( LONGINT, value );
  24. RETURN res
  25. END GetSetAsInteger;
  26. PROCEDURE GetIntegerAsSet*( CONST value : LONGINT ): SET;
  27. VAR
  28. res : SET;
  29. BEGIN
  30. res:={};
  31. res:=SYSTEM.VAL( SET, value );
  32. RETURN res
  33. END GetIntegerAsSet;
  34. PROCEDURE GetIntegerAsChar*( CONST value : LONGINT ): CHAR;
  35. VAR
  36. c : CHAR;
  37. BEGIN
  38. c:=0X;
  39. c:=SYSTEM.VAL(CHAR, value);
  40. RETURN c
  41. END GetIntegerAsChar;
  42. PROCEDURE GetCharAsSet*( CONST value : CHAR ) : SET;
  43. VAR
  44. s : SET;
  45. BEGIN
  46. s:={};
  47. s:=SYSTEM.VAL(SET, value);
  48. RETURN s
  49. END GetCharAsSet;
  50. PROCEDURE GetSetAsChar*( CONST value : SET ): CHAR;
  51. VAR
  52. c : CHAR;
  53. BEGIN
  54. c:=0X;
  55. c:=SYSTEM.VAL(CHAR, value);
  56. RETURN c
  57. END GetSetAsChar;
  58. PROCEDURE GetOsTimer*() : LONGINT;
  59. BEGIN
  60. (*
  61. TODO
  62. *)
  63. RETURN 0;
  64. END GetOsTimer;
  65. PROCEDURE Ticks2Micros*( CONST ticks : LONGINT ) : LONGINT;
  66. VAR
  67. res : LONGINT;
  68. BEGIN
  69. RETURN ENTIER( ticks/tickDivisor );
  70. END Ticks2Micros;
  71. PROCEDURE GetTime*() : LONGINT;
  72. BEGIN
  73. (*
  74. TODO
  75. *)
  76. RETURN 0;
  77. END GetTime;
  78. PROCEDURE GetMem32*( CONST adr : LONGINT; VAR mem : LONGINT );
  79. BEGIN
  80. SYSTEM.GET( adr, mem );
  81. END GetMem32;
  82. PROCEDURE GetSetMem32*( CONST adr : LONGINT; VAR mem : SET );
  83. BEGIN
  84. SYSTEM.GET( adr, mem );
  85. END GetSetMem32;
  86. PROCEDURE PutMem32*( CONST adr : LONGINT; CONST mem : LONGINT );
  87. BEGIN
  88. SYSTEM.PUT( adr, mem );
  89. END PutMem32;
  90. PROCEDURE GetIntAsReal*( CONST i : LONGINT ): REAL;
  91. BEGIN
  92. RETURN SYSTEM.VAL(REAL,i)
  93. END GetIntAsReal;
  94. PROCEDURE GetIntLittleEndian*( CONST input : LONGINT; VAR output : ARRAY OF CHAR; VAR result : LONGINT );
  95. VAR i, tmpdata: LONGINT;
  96. BEGIN
  97. tmpdata:=input;
  98. IF ( LEN(output) = 4 ) THEN
  99. FOR i:=0 TO 3 DO
  100. output[i] := CHR( tmpdata );
  101. tmpdata := tmpdata DIV 100H;
  102. END;
  103. result:=0;
  104. ELSE
  105. result:=-1;
  106. END;
  107. END GetIntLittleEndian;
  108. BEGIN
  109. tickDivisor := Clocks.GetTimerClock() / 1000000;
  110. END KernelUtils.
  111. (* ----------------------------------------------------------------------------------------------------------------------- *)
  112. (* END OF MODULE *)
  113. (* ----------------------------------------------------------------------------------------------------------------------- *)