SysShim.def 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. DEFINITION MODULE SysShim;
  2. (* Low-level bridge from V3 Modula-2 to the C runtime shim
  3. (runtime/syslib/shim.c). Descriptor-aware: ARRAY OF CHAR is
  4. passed as its descriptor address, matching V3's string layout.
  5. This is the self-hosted counterpart of the host FileIO. *)
  6. FROM SYSTEM IMPORT ADDRESS;
  7. PROCEDURE fopenread (VAR name : ARRAY OF CHAR) : ADDRESS;
  8. (* Opens name for reading; NIL on failure. *)
  9. PROCEDURE fopenwrite (VAR name : ARRAY OF CHAR) : ADDRESS;
  10. (* Creates/truncates name for writing; NIL on failure. *)
  11. PROCEDURE fclose (h : ADDRESS);
  12. PROCEDURE fread (h : ADDRESS; VAR buf : ARRAY OF CHAR;
  13. max : CARDINAL) : CARDINAL;
  14. (* Reads up to max bytes into buf; buf's length is set to the
  15. number read, which is also returned. *)
  16. PROCEDURE fputc (h : ADDRESS; c : CHAR);
  17. PROCEDURE fputs (h : ADDRESS; VAR s : ARRAY OF CHAR);
  18. PROCEDURE fwriteln (h : ADDRESS);
  19. PROCEDURE fwriteintw (h : ADDRESS; v : INTEGER; wid : CARDINAL);
  20. PROCEDURE stdin () : ADDRESS;
  21. PROCEDURE stdout () : ADDRESS;
  22. PROCEDURE stderr () : ADDRESS;
  23. PROCEDURE fgetc (h : ADDRESS) : CHAR;
  24. (* Reads one byte from h; 0C at end of file. *)
  25. PROCEDURE fwriteint (h : ADDRESS; v : INTEGER);
  26. (* Writes v in decimal to h (no field width). *)
  27. PROCEDURE argc () : CARDINAL;
  28. (* Number of command-line words, including the program name. *)
  29. PROCEDURE arg (i : CARDINAL; VAR s : ARRAY OF CHAR;
  30. cap : CARDINAL) : BOOLEAN;
  31. (* Copies command-line argument i into s (capacity cap); FALSE when
  32. no such argument. *)
  33. END SysShim.