PLOTTER "DATAGRAPH",3,7,511,241,25.0,16.5;
COLORS "000999900029490000990751";
LET csi = ""27"[?";
PROC datagraph palette:
INT VAR coln, rgb;
REAL VAR anteil;
FOR coln FROM 0 UPTO colors - 1 REP
rgb := color (coln);
IF rgb <> maxint
THEN out (csi + text (coln) + ";");
anteil := real (rgb DIV 100) / 9.0;
out (text (int (7.0 * anteil + 0.5)) + ";");
anteil := real ((rgb MOD 100) DIV 10) / 9.0;
out (text (int (7.0 * anteil + 0.5)) + ";");
anteil := real (rgb MOD 10) / 9.0;
out (text (int (3.0 * anteil + 0.5)) + "m");
FI
PER
END PROC datagraph palette;
PROC prepare:
break(quiet);
REP
disable stop;
continue (channel(plotter));
clear error;
enable stop;
IF NOT online
THEN pause (300)
FI
UNTIL online PER
END PROC prepare;
PROC clear:
out (csi + "2D");
foreground (1)
END PROC clear;
PROC initplot:
out (csi + "1a");
out (csi + "0j");
out (csi + "3j");
out (csi + "4j")
END PROC initplot;
PROC endplot:
pause;
out (csi + "0a");
out (csi + "3;7;5;1m");
out (csi + "0;0;0;0m");
out (""27"[33m")
END PROC endplot;
PROC home:
move to (0,0);
END PROC home;
PROC moveto (INT CONST x,y):
out (csi + "1;"+text(y)+";"+text(x)+"C")
END PROC moveto;
PROC drawto (INT CONST x,y):
out (csi + "0V");
out (csi + "1V");
out (csi + "3;"+text(y)+";"+text(x)+"V")
END PROC drawto;
PROC setpixel (INT CONST x,y):
out (""27"[?0;"+text(y)+";"+text(x)+"P")
END PROC setpixel;
PROC foreground (INT VAR type):
IF type >= 0 AND type <= 7
THEN out (csi + text (type) + ";f")
ELSE type := 1;out (csi + "1;f")
FI
END PROC foreground;
PROC background (INT VAR type):
IF color (type) <> maxint
THEN set color (0,color (type))
ELSE type := 0;set color (0,000)
FI;
set palette
END PROC back ground;
PROC set palette:
datagraph palette
END PROC set palette;
PROC circle (INT CONST x,y,rad,from,to):
move to (x, y);
IF from = 0 AND to = 360
THEN out (csi + "0;" + text(y) + ";" + text (x) + ";" +
text (y) + ";" + text (x+rad) + "K")
ELSE out (csi + "2;" + text (y) + ";" + text (x+rad) +"C");
out (csi + "2;" + text (to-from) + "S")
FI
END PROC circle;
PROC box (INT CONST x1,y1,x2,y2,pattern):
move to (x1, y1);
out (csi + text (pattern + 3 * sign(pattern)) + ";" +
text (y1) + ";" + text (x1) + ";" +
text (y2) + ";" + text (x2) + "R")
END PROC box;
PROC fill (INT CONST x,y,pattern):
move to (x,y);
IF pattern > 6 OR pattern = 0
THEN out (csi + "0I")
ELSE out (csi + text (pattern+3) + "I")
FI
END PROC fill;