! EDWIN driver for the ERCC plotters (using GRAPHPACK) %dynamic %routine %spec DEFINE (%string (255) ST) %dynamic %routine %spec PLOTTER TYPE (%integer N) %dynamic %routine %spec OPEN PLOTTER (%integer ICHAN) %dynamic %routine %spec SET PLOT (%longreal XMIN,YMIN,XMAX,YMAX, %integer UNITS) %dynamic %routine %spec SCALE (%longreal XORIGIN,YORIGIN, XSCALE, YSCALE, THETA) %dynamic %routine %spec CLOSE PLOTTER %dynamic %routine %spec CHANGE PEN (%integer PENNO) %dynamic %routine %spec PLOT (%integer IPEN,%longreal TOX,TOY,DASH,GAP) %dynamic %routine %spec AREA FLAG (%string(3) S) %dynamic %routine %spec ANNOTATE (%longreal X,Y, SIZE, THETA) %dynamic %routine %spec PLOT SYMBOL (%integer ICODE) %dynamic %routine %spec PEN POSITION (%long %real %name X, Y) %external %integer %spec VIEWING, DEVICE %dynamic %routine C963 (%integer COM, X, Y) %const %integer ION = 16_E0, IOFF = 16_E1, TRUE = 0, FALSE = 1 ! Plotter control %own %integer IPEN=2, XO=0, XS=1500, YO=0, YS=1500, SX=0, SY=0 %own %integer TCS = 12, ITALICS = FALSE, TEXT MODE = FALSE, NEW FRAMED = FALSE %own %long %real MAXU = 0, DASH = 0, GAP = 0, UPC = 100, THETA = 0, PX, PY %const %real P WIDTH = 85.5 %long %real P SIZE X, P SIZE Y %string (31) DEVST %routine CHANGE ATTRIBUTE %switch AS(0:7) %return %if X>7 -> AS(X) AS(0): ! Colour change CHANGE PEN (Y) %return AS(1): ! Line style change Y=0 %unless 0<=Y<=4 %if Y=0 %then DASH=0 %and GAP=0 %and IPEN=2 %if Y=1 %then DASH=3 %and GAP=3 %and IPEN=0 %if Y=2 %then DASH=0 %and GAP=0 %and IPEN=2 %if Y=3 %then DASH=8 %and GAP=3 %and IPEN=0 %if Y=4 %then DASH=15 %and GAP=3 %and IPEN=0 %return AS(2): ! Character size change TCS = Y %return AS(3): ! Character orientation THETA = Y AS(4): ! Character quality AS(5): ! Character font %return AS(6): ! Character slant %if 09 %or (DEVICE#4 %and DEVICE#13) -> SW(COM) SW(0): ! Initialise PLOTTER TYPE (X) %if X=7220 %then UPC=400 %else UPC=100 AREA FLAG ("OFF") %if VIEWING=0 %start %if X=963 %or X=1051 %start DEVST = "80,.GP23" %finish %else %if X=7220 %start DEVST = "80,.GP15" %finish %else %if X=663 %start DEVST = "80,.GP14" %finish %else %start DEVST = "80,T#GP" %finish VIEWING = 80 %and DEFINE (DEVST); ! EMAS ! VIEWING = 1; ! VAX %finish OPEN PLOTTER (VIEWING) MAXU = 0 SX = 0; SY = 0 X=0; Y=1 CHANGE ATTRIBUTE; ! Colour to BLACK X=1; Y=0 CHANGE ATTRIBUTE; ! Line style normal X=2; Y=12 Y = Y * 4 %if UPC = 400; ! HP plotter CHANGE ATTRIBUTE; ! 12 unit characters TEXT MODE = FALSE %return SW(1): ! Terminate CLOSE PLOTTER %return SW(2): ! Update (ignored for C963 as user can't see it!) %return SW(3): ! New frame P SIZE X = (XS-XO)/UPC P SIZE Y = (YS-YO)/UPC %if MAXU+PSIZEY SW(COM) %if COM#3 %return SW(4): ! Move Abs SW(5): ! Line abs -> SW(3) %if NEWFRAMED # TRUE %if COM=5 %then COM=IPEN %else COM=1 PLOT (COM, X, Y, DASH, GAP) SX = X SY = Y TEXT MODE = FALSE %return SW(6): ! Character -> SW(3) %if NEWFRAMED # TRUE %if TEXT MODE = FALSE %start ANNOTATE (SX, SY, TCS/3*2, THETA) PLOT SYMBOL (ION) %if ITALICS = TRUE TEXT MODE = TRUE %finish PLOT SYMBOL (X) PEN POSITION (PX, PY) SX = INT (PX); SY = INT (PY) %return SW(7): ! Attribute change CHANGE ATTRIBUTE TEXT MODE = FALSE %return SW(8): ! Set lower limits of device window XO = X; YO = Y %return SW(9): ! Set upper limits of device window XS = X; YS = Y %return %end %end %of %file