IMPLEMENTATION MODULE SysShim; (* Binds the C shim (shim.c) directly. *) FROM SYSTEM IMPORT ADDRESS; PROCEDURE m2fopenread (VAR name : ARRAY OF CHAR) : ADDRESS; EXTERNAL; PROCEDURE m2fopenwrite (VAR name : ARRAY OF CHAR) : ADDRESS; EXTERNAL; PROCEDURE m2fclose (h : ADDRESS); EXTERNAL; PROCEDURE m2fread (h : ADDRESS; VAR buf : ARRAY OF CHAR; max : CARDINAL) : CARDINAL; EXTERNAL; PROCEDURE m2fputc (h : ADDRESS; c : CHAR); EXTERNAL; PROCEDURE m2fputs (h : ADDRESS; VAR s : ARRAY OF CHAR); EXTERNAL; PROCEDURE m2fwriteln (h : ADDRESS); EXTERNAL; PROCEDURE m2fwriteintw (h : ADDRESS; v : INTEGER; wid : CARDINAL); EXTERNAL; PROCEDURE m2stdout () : ADDRESS; EXTERNAL; PROCEDURE m2stderr () : ADDRESS; EXTERNAL; PROCEDURE m2stdin () : ADDRESS; EXTERNAL; PROCEDURE m2fgetc (h : ADDRESS) : CHAR; EXTERNAL; PROCEDURE m2fwriteint (h : ADDRESS; v : INTEGER); EXTERNAL; PROCEDURE m2argc () : CARDINAL; EXTERNAL; PROCEDURE m2arg (i : CARDINAL; VAR s : ARRAY OF CHAR; cap : CARDINAL) : BOOLEAN; EXTERNAL; PROCEDURE fopenread (VAR name : ARRAY OF CHAR) : ADDRESS; BEGIN RETURN m2fopenread(name) END fopenread; PROCEDURE fopenwrite (VAR name : ARRAY OF CHAR) : ADDRESS; BEGIN RETURN m2fopenwrite(name) END fopenwrite; PROCEDURE fclose (h : ADDRESS); BEGIN m2fclose(h) END fclose; PROCEDURE fread (h : ADDRESS; VAR buf : ARRAY OF CHAR; max : CARDINAL) : CARDINAL; BEGIN RETURN m2fread(h, buf, max) END fread; PROCEDURE fputc (h : ADDRESS; c : CHAR); BEGIN m2fputc(h, c) END fputc; PROCEDURE fputs (h : ADDRESS; VAR s : ARRAY OF CHAR); BEGIN m2fputs(h, s) END fputs; PROCEDURE fwriteln (h : ADDRESS); BEGIN m2fwriteln(h) END fwriteln; PROCEDURE fwriteintw (h : ADDRESS; v : INTEGER; wid : CARDINAL); BEGIN m2fwriteintw(h, v, wid) END fwriteintw; PROCEDURE stdout () : ADDRESS; BEGIN RETURN m2stdout() END stdout; PROCEDURE stderr () : ADDRESS; BEGIN RETURN m2stderr() END stderr; PROCEDURE stdin () : ADDRESS; BEGIN RETURN m2stdin() END stdin; PROCEDURE fgetc (h : ADDRESS) : CHAR; BEGIN RETURN m2fgetc(h) END fgetc; PROCEDURE fwriteint (h : ADDRESS; v : INTEGER); BEGIN m2fwriteint(h, v) END fwriteint; PROCEDURE argc () : CARDINAL; BEGIN RETURN m2argc() END argc; PROCEDURE arg (i : CARDINAL; VAR s : ARRAY OF CHAR; cap : CARDINAL) : BOOLEAN; BEGIN RETURN m2arg(i, s, cap) END arg; END SysShim.