IMPLEMENTATION MODULE M2makeOS; (* V3 (self-hosted M2) implementation: binds the descriptor (_d) half of m2make_os.c plus the shared m2osBye/m2osClose via EXTERNAL. Compiled only by the V3 M2 driver (staged as M2makeOS.mod). *) FROM SYSTEM IMPORT ADDRESS; PROCEDURE m2osExistD(VAR s: ARRAY OF CHAR): BOOLEAN; EXTERNAL; PROCEDURE m2osMtimeD(VAR s: ARRAY OF CHAR; VAR t: LONGINT): BOOLEAN; EXTERNAL; PROCEDURE m2osSystemD(VAR s: ARRAY OF CHAR): INTEGER; EXTERNAL; PROCEDURE m2osBye(code: INTEGER); EXTERNAL; PROCEDURE m2osOpenreadD(VAR s: ARRAY OF CHAR): ADDRESS; EXTERNAL; PROCEDURE m2osArgcD () : CARDINAL; EXTERNAL; PROCEDURE m2osArgD(i: CARDINAL; VAR s: ARRAY OF CHAR; cap: CARDINAL): BOOLEAN; EXTERNAL; PROCEDURE m2osReadlineD(h: ADDRESS; VAR buf: ARRAY OF CHAR; cap: CARDINAL): BOOLEAN; EXTERNAL; PROCEDURE m2osClose(h: ADDRESS); EXTERNAL; PROCEDURE FileExists(VAR name: ARRAY OF CHAR): BOOLEAN; BEGIN RETURN m2osExistD(name) END FileExists; PROCEDURE FileMTime(VAR name: ARRAY OF CHAR; VAR t: LONGINT): BOOLEAN; BEGIN RETURN m2osMtimeD(name, t) END FileMTime; PROCEDURE ExecCmd(VAR cmd: ARRAY OF CHAR): INTEGER; BEGIN RETURN m2osSystemD(cmd) END ExecCmd; PROCEDURE ExitNow(code: INTEGER); BEGIN m2osBye(code) END ExitNow; PROCEDURE OpenRead(VAR name: ARRAY OF CHAR): RdFile; BEGIN RETURN m2osOpenreadD(name) END OpenRead; PROCEDURE ArgCount () : CARDINAL; BEGIN RETURN m2osArgcD() END ArgCount; PROCEDURE GetArg(i: CARDINAL; VAR s: ARRAY OF CHAR; cap: CARDINAL): BOOLEAN; BEGIN RETURN m2osArgD(i, s, cap) END GetArg; PROCEDURE ReadLine(h: RdFile; VAR buf: ARRAY OF CHAR; cap: CARDINAL): BOOLEAN; BEGIN RETURN m2osReadlineD(h, buf, cap) END ReadLine; PROCEDURE CloseRead(h: RdFile); BEGIN m2osClose(h) END CloseRead; END M2makeOS.