SysShim.mod 2.4 KB

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