SysShim.mod 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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 m2fputc (h : ADDRESS; c : CHAR);
  14. EXTERNAL;
  15. PROCEDURE m2fputs (h : ADDRESS; VAR s : ARRAY OF CHAR);
  16. EXTERNAL;
  17. PROCEDURE m2fwriteln (h : ADDRESS);
  18. EXTERNAL;
  19. PROCEDURE m2fwriteintw (h : ADDRESS; v : INTEGER; wid : CARDINAL);
  20. EXTERNAL;
  21. PROCEDURE m2stdout () : ADDRESS;
  22. EXTERNAL;
  23. PROCEDURE m2stderr () : ADDRESS;
  24. EXTERNAL;
  25. PROCEDURE m2arg (i : CARDINAL; VAR s : ARRAY OF CHAR;
  26. cap : CARDINAL) : BOOLEAN;
  27. EXTERNAL;
  28. PROCEDURE fopenread (VAR name : ARRAY OF CHAR) : ADDRESS;
  29. BEGIN
  30. RETURN m2fopenread(name)
  31. END fopenread;
  32. PROCEDURE fopenwrite (VAR name : ARRAY OF CHAR) : ADDRESS;
  33. BEGIN
  34. RETURN m2fopenwrite(name)
  35. END fopenwrite;
  36. PROCEDURE fclose (h : ADDRESS);
  37. BEGIN
  38. m2fclose(h)
  39. END fclose;
  40. PROCEDURE fread (h : ADDRESS; VAR buf : ARRAY OF CHAR;
  41. max : CARDINAL) : CARDINAL;
  42. BEGIN
  43. RETURN m2fread(h, buf, max)
  44. END fread;
  45. PROCEDURE fputc (h : ADDRESS; c : CHAR);
  46. BEGIN
  47. m2fputc(h, c)
  48. END fputc;
  49. PROCEDURE fputs (h : ADDRESS; VAR s : ARRAY OF CHAR);
  50. BEGIN
  51. m2fputs(h, s)
  52. END fputs;
  53. PROCEDURE fwriteln (h : ADDRESS);
  54. BEGIN
  55. m2fwriteln(h)
  56. END fwriteln;
  57. PROCEDURE fwriteintw (h : ADDRESS; v : INTEGER; wid : CARDINAL);
  58. BEGIN
  59. m2fwriteintw(h, v, wid)
  60. END fwriteintw;
  61. PROCEDURE stdout () : ADDRESS;
  62. BEGIN
  63. RETURN m2stdout()
  64. END stdout;
  65. PROCEDURE stderr () : ADDRESS;
  66. BEGIN
  67. RETURN m2stderr()
  68. END stderr;
  69. PROCEDURE arg (i : CARDINAL; VAR s : ARRAY OF CHAR;
  70. cap : CARDINAL) : BOOLEAN;
  71. BEGIN
  72. RETURN m2arg(i, s, cap)
  73. END arg;
  74. END SysShim.