SysShim.LST 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. Listing:
  2. 1 IMPLEMENTATION MODULE SysShim;
  3. 2 (* Binds the C shim (shim.c) directly. *)
  4. 3
  5. 4 FROM SYSTEM IMPORT ADDRESS;
  6. 5
  7. 6 PROCEDURE m2fopenread (VAR name : ARRAY OF CHAR) : ADDRESS;
  8. 7 EXTERNAL;
  9. 8 PROCEDURE m2fopenwrite (VAR name : ARRAY OF CHAR) : ADDRESS;
  10. 9 EXTERNAL;
  11. 10 PROCEDURE m2fclose (h : ADDRESS);
  12. 11 EXTERNAL;
  13. 12 PROCEDURE m2fread (h : ADDRESS; VAR buf : ARRAY OF CHAR;
  14. 13 max : CARDINAL) : CARDINAL;
  15. 14 EXTERNAL;
  16. 15 PROCEDURE m2fputc (h : ADDRESS; c : CHAR);
  17. 16 EXTERNAL;
  18. 17 PROCEDURE m2fputs (h : ADDRESS; VAR s : ARRAY OF CHAR);
  19. 18 EXTERNAL;
  20. 19 PROCEDURE m2fwriteln (h : ADDRESS);
  21. 20 EXTERNAL;
  22. 21 PROCEDURE m2fwriteintw (h : ADDRESS; v : INTEGER; wid : CARDINAL);
  23. 22 EXTERNAL;
  24. 23 PROCEDURE m2stdout () : ADDRESS;
  25. 24 EXTERNAL;
  26. 25 PROCEDURE m2stderr () : ADDRESS;
  27. 26 EXTERNAL;
  28. 27 PROCEDURE m2arg (i : CARDINAL; VAR s : ARRAY OF CHAR;
  29. 28 cap : CARDINAL) : BOOLEAN;
  30. 29 EXTERNAL;
  31. 30
  32. 31 PROCEDURE fopenread (VAR name : ARRAY OF CHAR) : ADDRESS;
  33. 32 BEGIN
  34. 33 RETURN m2fopenread(name)
  35. 34 END fopenread;
  36. 35
  37. 36 PROCEDURE fopenwrite (VAR name : ARRAY OF CHAR) : ADDRESS;
  38. 37 BEGIN
  39. 38 RETURN m2fopenwrite(name)
  40. 39 END fopenwrite;
  41. 40
  42. 41 PROCEDURE fclose (h : ADDRESS);
  43. 42 BEGIN
  44. 43 m2fclose(h)
  45. 44 END fclose;
  46. 45
  47. 46 PROCEDURE fread (h : ADDRESS; VAR buf : ARRAY OF CHAR;
  48. 47 max : CARDINAL) : CARDINAL;
  49. 48 BEGIN
  50. 49 RETURN m2fread(h, buf, max)
  51. 50 END fread;
  52. 51
  53. 52 PROCEDURE fputc (h : ADDRESS; c : CHAR);
  54. 53 BEGIN
  55. 54 m2fputc(h, c)
  56. 55 END fputc;
  57. 56
  58. 57 PROCEDURE fputs (h : ADDRESS; VAR s : ARRAY OF CHAR);
  59. 58 BEGIN
  60. 59 m2fputs(h, s)
  61. 60 END fputs;
  62. 61
  63. 62 PROCEDURE fwriteln (h : ADDRESS);
  64. 63 BEGIN
  65. 64 m2fwriteln(h)
  66. 65 END fwriteln;
  67. 66
  68. 67 PROCEDURE fwriteintw (h : ADDRESS; v : INTEGER; wid : CARDINAL);
  69. 68 BEGIN
  70. 69 m2fwriteintw(h, v, wid)
  71. 70 END fwriteintw;
  72. 71
  73. 72 PROCEDURE stdout () : ADDRESS;
  74. 73 BEGIN
  75. 74 RETURN m2stdout()
  76. 75 END stdout;
  77. 76
  78. 77 PROCEDURE stderr () : ADDRESS;
  79. 78 BEGIN
  80. 79 RETURN m2stderr()
  81. 80 END stderr;
  82. 81
  83. 82 PROCEDURE arg (i : CARDINAL; VAR s : ARRAY OF CHAR;
  84. 83 cap : CARDINAL) : BOOLEAN;
  85. 84 BEGIN
  86. 85 RETURN m2arg(i, s, cap)
  87. 86 END arg;
  88. 87
  89. 88 END SysShim.
  90. 0 errors