SysShim.mod 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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 m2fgetc (h : ADDRESS) : CHAR;
  31. EXTERNAL;
  32. PROCEDURE m2freadint (h : ADDRESS) : INTEGER;
  33. EXTERNAL;
  34. PROCEDURE m2fwriteint (h : ADDRESS; v : INTEGER);
  35. EXTERNAL;
  36. PROCEDURE m2argc () : CARDINAL;
  37. EXTERNAL;
  38. PROCEDURE m2arg (i : CARDINAL; VAR s : ARRAY OF CHAR;
  39. cap : CARDINAL) : BOOLEAN;
  40. EXTERNAL;
  41. PROCEDURE fopenread (VAR name : ARRAY OF CHAR) : ADDRESS;
  42. BEGIN
  43. RETURN m2fopenread(name)
  44. END fopenread;
  45. PROCEDURE fopenwrite (VAR name : ARRAY OF CHAR) : ADDRESS;
  46. BEGIN
  47. RETURN m2fopenwrite(name)
  48. END fopenwrite;
  49. PROCEDURE fclose (h : ADDRESS);
  50. BEGIN
  51. m2fclose(h)
  52. END fclose;
  53. PROCEDURE fread (h : ADDRESS; VAR buf : ARRAY OF CHAR;
  54. max : CARDINAL) : CARDINAL;
  55. BEGIN
  56. RETURN m2fread(h, buf, max)
  57. END fread;
  58. PROCEDURE freadline (h : ADDRESS; VAR buf : ARRAY OF CHAR;
  59. max : CARDINAL) : CARDINAL;
  60. BEGIN
  61. RETURN m2freadline(h, buf, max)
  62. END freadline;
  63. PROCEDURE fputc (h : ADDRESS; c : CHAR);
  64. BEGIN
  65. m2fputc(h, c)
  66. END fputc;
  67. PROCEDURE fputs (h : ADDRESS; VAR s : ARRAY OF CHAR);
  68. BEGIN
  69. m2fputs(h, s)
  70. END fputs;
  71. PROCEDURE fwriteln (h : ADDRESS);
  72. BEGIN
  73. m2fwriteln(h)
  74. END fwriteln;
  75. PROCEDURE fwriteintw (h : ADDRESS; v : INTEGER; wid : CARDINAL);
  76. BEGIN
  77. m2fwriteintw(h, v, wid)
  78. END fwriteintw;
  79. PROCEDURE stdout () : ADDRESS;
  80. BEGIN
  81. RETURN m2stdout()
  82. END stdout;
  83. PROCEDURE stderr () : ADDRESS;
  84. BEGIN
  85. RETURN m2stderr()
  86. END stderr;
  87. PROCEDURE stdin () : ADDRESS;
  88. BEGIN
  89. RETURN m2stdin()
  90. END stdin;
  91. PROCEDURE fgetc (h : ADDRESS) : CHAR;
  92. BEGIN
  93. RETURN m2fgetc(h)
  94. END fgetc;
  95. PROCEDURE freadint (h : ADDRESS) : INTEGER;
  96. BEGIN
  97. RETURN m2freadint(h)
  98. END freadint;
  99. PROCEDURE fwriteint (h : ADDRESS; v : INTEGER);
  100. BEGIN
  101. m2fwriteint(h, v)
  102. END fwriteint;
  103. PROCEDURE argc () : CARDINAL;
  104. BEGIN
  105. RETURN m2argc()
  106. END argc;
  107. PROCEDURE arg (i : CARDINAL; VAR s : ARRAY OF CHAR;
  108. cap : CARDINAL) : BOOLEAN;
  109. BEGIN
  110. RETURN m2arg(i, s, cap)
  111. END arg;
  112. END SysShim.