(*******************************************************************)
(** Release history:                                              **)
(**    17th January 1985   version 1.0.0 First port to new world  **)
(*******************************************************************)
IMPLEMENTATION MODULE rawPLOT;
FROM SysStreams IMPORT sysOut;
FROM Streams IMPORT Flush;
FROM TextIO IMPORT WriteCHAR;
(*------------------------------------------------------------------------*)
PROCEDURE char(C: CHAR);
BEGIN
  WriteCHAR(sysOut, C)
END char;

PROCEDURE val(I: INTEGER);
BEGIN
  IF I < 0 THEN
    I := I + 65536
  END (* if *);
  char(CHAR((I DIV 256) MOD 256));
  char(CHAR(I MOD 256))
END val;

PROCEDURE string(S: ARRAY OF CHAR);
VAR I: INTEGER;
BEGIN
  FOR I := 0 TO HIGH (S) DO
    char(S [I])
  END (* for *);
END string;

PROCEDURE newline;
BEGIN
  char(CHAR(10))
END newline;

  (*------------------------------------------------------------------------*)

PROCEDURE openpl();
BEGIN
  (* open output file ??? *)
END openpl;

PROCEDURE erase();
BEGIN
  char("e")
END erase;

PROCEDURE label(s: ARRAY OF CHAR);
BEGIN
  char("t"); string(s); newline
END label;

PROCEDURE line(x1, y1, x2, y2: INTEGER);
BEGIN
  char("l"); val(x1); val(y1); val(x2); val(y2)
END line;

PROCEDURE circle(x, y, r: INTEGER);
BEGIN
  char("c"); val(x); val(y); val(r)
END circle;

PROCEDURE arc(x, y, x0, y0, x1, y1: INTEGER);
BEGIN
  char("a");
  val(x); val(y);
  val(x0); val(y0);
  val(x1); val(y1)
END arc;

PROCEDURE move(x, y: INTEGER);
BEGIN
  char("m"); val(x); val(y)
END move;

PROCEDURE cont(x, y: INTEGER);
BEGIN
  char("n"); val(x); val(y)
END cont;

PROCEDURE point(x, y: INTEGER);
BEGIN
  char("p"); val(x); val(y)
END point;

PROCEDURE linemod(s: ARRAY OF CHAR);
BEGIN
  char("f"); string(s); newline
END linemod;

PROCEDURE space(x0, y0, x1, y1: INTEGER);
BEGIN
  char("s");
  val(x0); val(y0);
  val(x1); val(y1)
END space;

PROCEDURE closepl();
BEGIN
  (* Close output file ??? *)
  Flush(sysOut)
END closepl;

END rawPLOT.
