DEFINITION MODULE Regis; (* ReGIS vector graphics (DEC VT125/VT240/VT340; xterm built with --enable-regis-graphics; contour). Grounding: VT330/VT340 Programmer Reference Manual Vol.2, via the contour ReGIS reference. Canvas 800x480, origin top-left, Y down. [x,y] absolute, signed [+-dx,+-dy] relative. Commands emitted uppercase (ReGIS is case-insensitive). Wrap pictures in Enter ... Exit (DCS ... ST). L (Load charset) intentionally omitted: recognised but not rendered by common emulators. *) PROCEDURE Enter; (* DCS 1 p : reset graphics state + clear canvas *) PROCEDURE EnterResume; (* DCS p : resume, keep previous state *) PROCEDURE Exit; (* ST : back to text mode *) PROCEDURE ScreenErase; (* S(E) *) PROCEDURE AddressWindow(x0, y0, x1, y1 : CARDINAL); (* S(A[x0,y0][x1,y1]) *) PROCEDURE MoveTo(x, y : CARDINAL); (* P[x,y] absolute, no drawing *) PROCEDURE MoveRel(dx, dy : INTEGER); (* P signed relative *) PROCEDURE LineTo(x, y : CARDINAL); (* V[x,y] *) PROCEDURE LineRel(dx, dy : INTEGER); (* V signed relative *) PROCEDURE Dot; (* V[] plot one dot *) PROCEDURE Rect(x0, y0, x1, y1 : CARDINAL); (* outline via P+V *) PROCEDURE Circle(edgeX, edgeY : CARDINAL); (* C[x,y], centre = cursor *) PROCEDURE CircleCenter(cx, cy : CARDINAL); (* C(C)[cx,cy] *) PROCEDURE Arc(degrees : INTEGER; x, y : CARDINAL); (* C(A deg)[x,y] *) PROCEDURE FillTriangle(x1, y1, x2, y2 : CARDINAL); (* F(V[x1,y1][x2,y2]), cursor is the first vertex *) PROCEDURE TextOut(s : ARRAY OF CHAR); (* T'...' ; avoid quotes in s *) PROCEDURE TextSize(n : CARDINAL); (* T(Sn), 0..16 *) PROCEDURE TextSizeWH(w, h : CARDINAL);(* T(S[w,h]) custom cell *) PROCEDURE TextDir(deg : CARDINAL); (* T(D..), 45-degree steps *) PROCEDURE TextSlant(deg : CARDINAL); (* T(I..) italic slant *) PROCEDURE UseColor(reg : CARDINAL); (* W(I reg), 0..15 *) PROCEDURE ColorName(c : CHAR); (* W(I(c)), D R G B C Y M W *) PROCEDURE SetRGB(reg, r, g, b : CARDINAL); (* S(M reg(R..G..B..)), 0..100 *) PROCEDURE SetHLS(reg, h, l, s : CARDINAL); (* S(M reg(H..L..S..)) *) PROCEDURE BgRegister(reg : CARDINAL); (* S(I reg) background *) PROCEDURE WriteOverlay; (* W(V) default *) PROCEDURE WriteReplace; (* W(R) *) PROCEDURE WriteComplement; (* W(C) *) PROCEDURE WriteErase; (* W(E) *) PROCEDURE Pattern(n : CARDINAL); (* W(P n), 0..9, 1 = solid *) PROCEDURE PatternBits(s : ARRAY OF CHAR); (* W(P bits), custom 0/1 string *) PROCEDURE LineWidth(n : CARDINAL); (* W(L n) pixels *) PROCEDURE PVMult(n : CARDINAL); (* W(M n) pixel-vector multiplier *) PROCEDURE ShadeOn; (* W(S1) *) PROCEDURE ShadeOff; (* W(S0) *) PROCEDURE ShadeRefY(y : CARDINAL); (* W(S[,y]) horizontal reference *) PROCEDURE MacroDef(name : CHAR); (* @:X ... *) PROCEDURE MacroEnd; (* @; *) PROCEDURE MacroRun(name : CHAR); (* @X *) PROCEDURE MacroClearAll; (* @. *) PROCEDURE ReportPosition; (* R(P) send-only; read reply unbuffered *) PROCEDURE ReportError; (* R(E) send-only *) PROCEDURE Unbuffered; PROCEDURE Buffered; END Regis.