SysShim.def 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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 freadline (h : ADDRESS; VAR buf : ARRAY OF CHAR;
  17. max : CARDINAL) : CARDINAL;
  18. (* Reads one line (the newline is dropped) into buf; buf's length is
  19. set to the number of bytes stored, which is also returned. *)
  20. PROCEDURE fputc (h : ADDRESS; c : CHAR);
  21. PROCEDURE fputs (h : ADDRESS; VAR s : ARRAY OF CHAR);
  22. PROCEDURE fwriteln (h : ADDRESS);
  23. PROCEDURE fwriteintw (h : ADDRESS; v : INTEGER; wid : CARDINAL);
  24. PROCEDURE stdin () : ADDRESS;
  25. PROCEDURE stdout () : ADDRESS;
  26. PROCEDURE stderr () : ADDRESS;
  27. PROCEDURE ftell (h : ADDRESS) : INTEGER;
  28. (* Byte offset of the current position (-1 on error). *)
  29. PROCEDURE fseek (h : ADDRESS; pos : INTEGER) : BOOLEAN;
  30. (* Seek to absolute byte offset pos; FALSE on failure. *)
  31. PROCEDURE fgetc (h : ADDRESS) : CHAR;
  32. (* Reads one byte from h; 0C at end of file. *)
  33. PROCEDURE freadint (h : ADDRESS) : INTEGER;
  34. (* Reads a signed decimal integer from h, skipping leading blanks. *)
  35. PROCEDURE fwriteint (h : ADDRESS; v : INTEGER);
  36. (* Writes v in decimal to h (no field width). *)
  37. PROCEDURE argc () : CARDINAL;
  38. (* Number of command-line words, including the program name. *)
  39. PROCEDURE arg (i : CARDINAL; VAR s : ARRAY OF CHAR;
  40. cap : CARDINAL) : BOOLEAN;
  41. (* Copies command-line argument i into s (capacity cap); FALSE when
  42. no such argument. *)
  43. END SysShim.