SysShim.mod 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. IMPLEMENTATION MODULE SysShim;
  2. (* Binds the C shim (shim.c) directly. *)
  3. FROM SYSTEM IMPORT ADDRESS;
  4. PROCEDURE m2fopenread (VAR name : ARRAY OF CHAR) : ADDRESS;
  5. EXTERNAL;
  6. PROCEDURE m2fopenwrite (VAR name : ARRAY OF CHAR) : ADDRESS;
  7. EXTERNAL;
  8. PROCEDURE m2fclose (h : ADDRESS);
  9. EXTERNAL;
  10. PROCEDURE m2fread (h : ADDRESS; VAR buf : ARRAY OF CHAR;
  11. max : CARDINAL) : CARDINAL;
  12. EXTERNAL;
  13. PROCEDURE m2freadline (h : ADDRESS; VAR buf : ARRAY OF CHAR;
  14. max : CARDINAL) : CARDINAL;
  15. EXTERNAL;
  16. PROCEDURE m2fputc (h : ADDRESS; c : CHAR);
  17. EXTERNAL;
  18. PROCEDURE m2fputs (h : ADDRESS; VAR s : ARRAY OF CHAR);
  19. EXTERNAL;
  20. PROCEDURE m2fwriteln (h : ADDRESS);
  21. EXTERNAL;
  22. PROCEDURE m2fwriteintw (h : ADDRESS; v : INTEGER; wid : CARDINAL);
  23. EXTERNAL;
  24. PROCEDURE m2stdout () : ADDRESS;
  25. EXTERNAL;
  26. PROCEDURE m2stderr () : ADDRESS;
  27. EXTERNAL;
  28. PROCEDURE m2stdin () : ADDRESS;
  29. EXTERNAL;
  30. PROCEDURE m2ftell (h : ADDRESS) : INTEGER;
  31. EXTERNAL;
  32. PROCEDURE m2fseek (h : ADDRESS; pos : INTEGER) : BOOLEAN;
  33. EXTERNAL;
  34. PROCEDURE m2fgetc (h : ADDRESS) : CHAR;
  35. EXTERNAL;
  36. PROCEDURE m2freadint (h : ADDRESS) : INTEGER;
  37. EXTERNAL;
  38. PROCEDURE m2fwriteint (h : ADDRESS; v : INTEGER);
  39. EXTERNAL;
  40. PROCEDURE m2argc () : CARDINAL;
  41. EXTERNAL;
  42. PROCEDURE m2arg (i : CARDINAL; VAR s : ARRAY OF CHAR;
  43. cap : CARDINAL) : BOOLEAN;
  44. EXTERNAL;
  45. PROCEDURE m2getenv (VAR name : ARRAY OF CHAR; VAR value : ARRAY OF CHAR;
  46. cap : CARDINAL) : BOOLEAN;
  47. EXTERNAL;
  48. PROCEDURE fopenread (VAR name : ARRAY OF CHAR) : ADDRESS;
  49. BEGIN
  50. RETURN m2fopenread(name)
  51. END fopenread;
  52. PROCEDURE fopenwrite (VAR name : ARRAY OF CHAR) : ADDRESS;
  53. BEGIN
  54. RETURN m2fopenwrite(name)
  55. END fopenwrite;
  56. PROCEDURE fclose (h : ADDRESS);
  57. BEGIN
  58. m2fclose(h)
  59. END fclose;
  60. PROCEDURE fread (h : ADDRESS; VAR buf : ARRAY OF CHAR;
  61. max : CARDINAL) : CARDINAL;
  62. BEGIN
  63. RETURN m2fread(h, buf, max)
  64. END fread;
  65. PROCEDURE freadline (h : ADDRESS; VAR buf : ARRAY OF CHAR;
  66. max : CARDINAL) : CARDINAL;
  67. BEGIN
  68. RETURN m2freadline(h, buf, max)
  69. END freadline;
  70. PROCEDURE fputc (h : ADDRESS; c : CHAR);
  71. BEGIN
  72. m2fputc(h, c)
  73. END fputc;
  74. PROCEDURE fputs (h : ADDRESS; VAR s : ARRAY OF CHAR);
  75. BEGIN
  76. m2fputs(h, s)
  77. END fputs;
  78. PROCEDURE fwriteln (h : ADDRESS);
  79. BEGIN
  80. m2fwriteln(h)
  81. END fwriteln;
  82. PROCEDURE fwriteintw (h : ADDRESS; v : INTEGER; wid : CARDINAL);
  83. BEGIN
  84. m2fwriteintw(h, v, wid)
  85. END fwriteintw;
  86. PROCEDURE stdout () : ADDRESS;
  87. BEGIN
  88. RETURN m2stdout()
  89. END stdout;
  90. PROCEDURE stderr () : ADDRESS;
  91. BEGIN
  92. RETURN m2stderr()
  93. END stderr;
  94. PROCEDURE stdin () : ADDRESS;
  95. BEGIN
  96. RETURN m2stdin()
  97. END stdin;
  98. PROCEDURE ftell (h : ADDRESS) : INTEGER;
  99. BEGIN
  100. RETURN m2ftell(h)
  101. END ftell;
  102. PROCEDURE fseek (h : ADDRESS; pos : INTEGER) : BOOLEAN;
  103. BEGIN
  104. RETURN m2fseek(h, pos)
  105. END fseek;
  106. PROCEDURE fgetc (h : ADDRESS) : CHAR;
  107. BEGIN
  108. RETURN m2fgetc(h)
  109. END fgetc;
  110. PROCEDURE freadint (h : ADDRESS) : INTEGER;
  111. BEGIN
  112. RETURN m2freadint(h)
  113. END freadint;
  114. PROCEDURE fwriteint (h : ADDRESS; v : INTEGER);
  115. BEGIN
  116. m2fwriteint(h, v)
  117. END fwriteint;
  118. PROCEDURE argc () : CARDINAL;
  119. BEGIN
  120. RETURN m2argc()
  121. END argc;
  122. PROCEDURE arg (i : CARDINAL; VAR s : ARRAY OF CHAR;
  123. cap : CARDINAL) : BOOLEAN;
  124. BEGIN
  125. RETURN m2arg(i, s, cap)
  126. END arg;
  127. PROCEDURE getenv (VAR name : ARRAY OF CHAR; VAR value : ARRAY OF CHAR;
  128. cap : CARDINAL) : BOOLEAN;
  129. BEGIN
  130. RETURN m2getenv(name, value, cap)
  131. END getenv;
  132. END SysShim.