# GRAPHCAP -- Graphics device capabilities.
#
# You should NOT modify this file! Rather create a local graphcap file
# and include it first in the system .sm file. For example:
#	+graphcap		/usr/lib/sm/graphcap.local
#	graphcap		/usr/lib/sm/graphcap
# This will save you much grief.
#
# NOTE: Changes to this file may not take effect immediately.  The entries
# for selected devices are precompiled.  For a list of devices for which
# the graphcap entry is precompiled see "cacheg.dat" in the devices source
# directory
#
# Various of the hardcopy devices use ssh (i.e. they assume unix) to print
# on remote devices. To use ssh like this you'll need to provide some
# authentication (e.g. an ssh identity or (shudder) .rhosts file).
# Note that the name of the machine is in $1, the name of the printer
# is in $2 (if required)
#
# First any macro definitions for SY:
#
IMAGEN = imagen			# this should really be in graphcap.local
#
# Next the compiled devices:
#
nodevice|null|The null device:\
	:DV=nodevice:
rs6000|risc6000|ibm6000|RISC 6000 using SGI's GL. Not tested:\
	:DV=sgi:
sgi|Silicon Graphics Iris using the GL:\
	:DV=sgi:
sunwindows|Sunwindows - needs gfxtool:\
	:DV=sunwindows:
sunview|SunView:\
	:DV=sunview:
svga|SVGA|svgalib:\
	:DV=svgalib:
upc|An AT&T 3B1:\
	:DV=upc:
xwindows|X10|x10|X10R4:\
	:DV=xwindows:
x11|X11|X11R4:\
	:DV=x11:ch#1:cw#1:TB=OK:
bgi|Borland Graphics Interface:\
	:DV=bgi:
win|msw|Microsoft Windows API:\
	:DV=msw:
vaxuis|VAXUIS|VAX/VMS UIS driver:\
	:DV=vaxuis:
os2pm|pm|IBM OS/2 Presentation Manager:\
	:DV=os2pm:
#
# STDGRAPH devices.
#
# A tek4012 without cursor saving (see hard4012)
#
tek4010|tek4012|TEK4010|TEK4012|tektronix 4010/2:\
	:ch#.0285:cw#.0135:co#80:li#35:\
	:MC=^M:CL=^[^L:CN#6:GD=^[2:GE=^[1^]:\
	:ML=^[(1$0)`($1)a($2)c($3)d($4)b($D)`($$):lt=01234:\
	:MS=^\:ME=^]:RC=^[^Z:SC=(,!3, & *, &+!1, & *, &+!2:\
	:TB=^]%t^_:VS=^_^]:\
	:xr#1024:XY=%t:yr#780:

pericom|gterm|GTERM|PERICOM|Pericom:\
	:GE=^]:GD=^X:\
	:tc=tek4012:
# Kermit color selection is by escape sequence ^[[Pn;Pn;Pn m
# Parameters Pn are
#  0 - dim
#  1 - bold
#  3x - foreground color x
#  4x - background color x
# Recognized colors are
#  0 - black   (bold black is gray)
#  1 - red
#  2 - green
#  3 - yellow
#  4 - blue
#  5 - magenta
#  6 - cyan
#  7 - white
# Text and graphics screen colors are independent; commands seem to
# apply to whichever screen is active when received.
kermit|kermit v3.0x tektronix emulator:\
	:DC=white:CS=8:CO= :\
	:CT=^[[1;40;3(1$0)7($1)7($2)0($3)1($4)2($5)4($6)6($7)5($8)3($$)m:\
	:GE=100^[[?38h:GD=100^[[?38l:tc=tek4010:
inversekermit|kermit v 3.0x tektronix emulator with inverse video graphics:\
	:CT=^[[1;47;3(1$0)0($1)7($2)0($3)1($4)2($5)4($6)6($7)5($8)3($$)m:\
	:DC=black:tc=kermit:
noswitch|kermit without switching away from graphics screen:\
	:GD=^M^[[0H^[[K:yr#700:tc=kermit:
kermit2.3|kermit v2.3 tektronix emulator:\
	:GE=100^[[?38h:GD=100^[[?38l:tc=tek4010:
televideo|televideo912|TELEVIDEO|TELEVIDEO912|912cy|Televideo 912:\
	:GD=^_^X:tc=tek4012:
ansigraph|atari|ANSIGRAPH|ATARI|AnsiGraf tektronics emulator on Atari ST:\
	:GE=^]:GD=^X:lt@:\
	:tc=tek4012:

falco|FALCO|falco 5220e:\
	:yr#733:GD=^[[<1a:GE=^[[<2a:XY=(2#15+!2)%t:tc=tek4012:

graphon|GRAPHON|graphon GO-250 (with erase):\
	:xr#4096:XY=%T:yr#3168:\
	:OW=^[P1;1'%|251/q^[\\^[P1;1'%|253/p^[\\^[P1;1'%|255/e^[\\^[1^]^[2:\
	:SC=(,!3, & *, &+^D*!1, & *, &+^D*!2:\
	:lt=01234\:;:CW=^[1^]^[^A^[2:TB=^]%T^_:\
	:ML=^_^[(1$0)`($1)a($2)c($3)d($4)b($\:)`^[^P($;)^[^A($$:\
	:GD=^[2:GE=^[1^]:RH=^[1^]^[2:tc=selanar:
sqgrap|SQGRAP|graphon set up to be square:\
	:xr#3168:cw#.0164:tc=graphon:

selanar|hirez|SELANAR|HIREZ|selanar hirez 100xl:\
	:co#74:li#35:\
	:GD=^[2^[8:GE=^[7^[1^]:lt=014:\
	:ML=^_^[(1$0)`($1)a($2)c($3)d($4)b($5)x($$):\
	:OW=^[7^[1^[O^[L^L^O\377\377^L^O\377\377^[1^]^_:VS=^]:\
	:tc=tek4012:

decpro|DECPRO|DecPro in tek mode (use termtype dumb):\
	:ch#0.03:cw#0.02:CL=^_^[H^[J:GD=^_(#10!!)^[^N:GE=^[^P^]:tc=tek4012:

em4010|EM4010|PC 4010 emulator:\
	:GE@:tc=tek4010:
em4010d|EM4010D|PC 4010 emulator with 1s delay on entry to graphics:\
	:GE=^[2(#1000!!:tc=hirez:

esprit|ESPRIT|Executive 10/102:\
	:tc=hirez:

xterm|XTERM|Xterm tektronix emulator:\
	:ch#0.025:cw#0.015:\
	:GE=^[[?38h:GD=^[^C:MC=?????:CN#-5:lt@:\
	:tc=tek4012:

macvt|versaterm|MACVT|VERSATERM|Macintosh VersaTerm Tek4014:\
	:lt=01234:GD=^[2:GE=^]:\
	:ML@:\
	:tc=tek4012:

vt640|vt640g|VT640|VT640G|vt100 with Retrographics:\
	:CL=50^]^[^L:GD=^X:RC=^]^["54g:\
	:tc=tek4012:

tek4014|TEK4014|tektronix 4014:\
	:OW=^[^O^[9:SC=(,!3, & *, &+^D*!1, & *, &+^D*!2:\
	:xr#4096:XY=%T:yr#3168:TB=^]%T^_:\
	:tc=tek4012:

vt240|vt125|VT240|VT125|vt240 or vt125 in ReGIS mode (use termtype dumb):\
	:ch#.02:cw#.0125:li#23:co#80:\
	:xr#767:yr#479:OW=^[PpP[400,230]S'(C0'):CW=^[\134^[[0;0H^[[0J:\
	:LR=(#478!6:GE=^[Pp:GD=^[\134^[[0;0H:CL=^[\134^[[J^[PpS'(E'):\
	:VS=^[PpP:DS=V:XY=[(1)%d,(62-)%d]:\
	:TB=P[(1)%d,(62-)%d]T":TE=";:\
	:RC=^[PpR'(P'(I')');:CN#-6:MC=?[#*,#*]^M:\
	:SC=(#0!1#0!2,!3,#0!8,#48-!99$0-91#10*9+!1#1!8$$8#1=#-39;\
	    #0!8,#48-!99$0-92#10*9+!2#1!8$$8#1=#-39;62-!2):

hard4010|hard4012|HARD4010|HARD4012|a real tektronix 4010/2:\
	:CL=(#32!9)^[^L:CW=(#682!2#0!1)^]%t^_:\
	:GD=(9#1-!99$0#31!9$$9#22*!2#0!1)^]%t^_:GE=^]^_:LR=(#32!9:\
	:tc=tek4012:
#
# Various pseudo-terminals
#
# Use the generic raster device
#
# First some pseudo-raster devices such as bitmap files
#
screen80|A *** plot on the screen (width 80):\
	:DV=raster:xr#80:yr#48:OF=ras_XXXXXX:BP=*:EP= :ER=\n:\
	:SY=${BIN}/rasterise -r $0 $F $1:
screenr80|Screen 80 rotated through 90 degrees:\
	:xr#48:yr#80:SY=${BIN}/rasterise -Rr $0 $F $1:\
	:tc=screen80:
screen132|A *** plot on the screen (width 132):\
	:xr#132:tc=screen80:
tty|plot with *'s on a dumb text-only tty:\
	:DC=black:\
	:yr#23:SY=${BIN}/rasterise -r $0 $F - | unexpand -a:tc=screen80:
pbm|PBM|Portable BitMap (raw), 512x512:\
	:DV=raster:xr#512:yr#512:\
	:OW=P4 512 512\n:\
	:BP=\200\100\040\020\010\004\002\001:\
	:OF=pbm_XXXXXX:SY=${BIN}/rasterise -r $0 $F $1:
ppm|PPM|Portable PixelMap (raw), 512x512:\
	:DV=raster:xr#512:yr#512:CL:\
	:EP=\001:OW=P6 512 512 255\n:\
	:OF=ppm_XXXXXX:SY=${BIN}/rasterise -r $0 $F $1:
blackppm|BLACKPPM|Portable PixelMap (raw), black background, 512x512:\
	:EP=\002:DC=white:tc=ppm:
smallppm|SMALLPPM|Portable PixelMap (raw), 256x256:\
	:xr#256:yr#256:\
	:OW=P6 256 256 255\n:tc=ppm:
bigppm|BIGPPM|Portable PixelMap (raw), 1024x1024:\
	:xr#1024:yr#1024:\
	:OW=P6 1024 1024 255\n:tc=ppm:
bigblackppm|BIGBLACKPPM|Portable PixelMap (raw), black background, 1024x1024:\
	:EP=\002:DC=white:tc=bigppm:
gif|GIF|GIF via PPM (using ppmtogif), 512x512:\
	:SY=${BIN}/rasterise -r $0 $F - | ppmtogif > $1:\
	:tc=ppm:
smallgif|SMALLGIF|small gif (using ppmtogif) 256x256:\
	:SY=${BIN}/rasterise -r $0 $F - | ppmtogif > $1:\
	:tc=smallppm:
blackgif|BLACKGIF|GIF via PPM (using ppmtogif), black bkgd, 512x512:\
	:SY=${BIN}/rasterise -r $0 $F - | ppmtogif > $1:\
	:tc=blackppm:
bigblackgif|BIGBLACKGIF|GIF via PPM (using ppmtogif), black bkgd, 1024x1024:\
	:SY=${BIN}/rasterise -r $0 $F - | ppmtogif > $1:\
	:tc=bigblackppm:
blackgif_remote|A black-background GIF $2 on a remote machine $1:\
	:SY=${BIN}/rasterise -r $0 $F - | ssh $1 ppmtogif ">" $2:tc=blackgif:
tif|tiff|TIF|TIFF|TIFF via PPM (using pnmtotiff), 512x512:\
	:SY=${BIN}/rasterise -r $0 $F - | pnmtotiff > $1:\
	:tc=ppm:
blacktiff|blacktif|BLACKTIFF|BLACKTIF|black background TIF via PPM (using pnmtotiff), 512x512:\
	:SY=${BIN}/rasterise -r $0 $F - | pnmtotiff > $1:\
	:tc=blackppm:
sunraster|Sunraster file, 512x512:\
	:DV=raster:xr#512:yr#512:\
	:OW=(#89.#166.#106.#149.)(#0.#0.#1.#128.)(#0.#0.#2.#0.)\
	(#0.#0.#0.#1.)(#0.#0.#96.#0.)(#0.#0.#0.#1.)(#0.#0.#0.#0.)\
	(#0.#0.#0.#0.):\
	:BP=\200\100\040\020\010\004\002\001:\
	OF=sunrast_XXXXXX:SY=${BIN}/rasterise -r $0 $F $1:
#
# And some real printers
#
test480|new EPSON Dot Matrix at 480 bits per 8" line; makes 8" square:\
        :DV=raster:xr#480:yr#576:OF=rdm_XXXXXX:MR:\
        :OW=\033\063\030\015\012:CW=\033\062\015\012:\
        :BR=\033\113\340\001:ER=\015\012:\
        :SY=${BIN}/rasterise -r $0 $F $1:
#        :SY=${BIN}/rasterise -r $0 $F $1;cat $1 > /dev/rawlp:
dm480|EPSON Dot Matrix at 480 bits per 8" line; makes 8" square:\
	:DV=raster:MR:nb#1:xr#480:yr#576:OF=rdm_XXXXXX:\
	:OW=\033\063\030\015\012:CW=\033\062\015\012:\
	:BR=^[K\340^A:ER=^M^J:\
	:SY=${BIN}/rasterise -r $0 $F - | lpr -P${PRINTER}:
dm960|IBM/EPSON at 960 bits per 8" line:\
	:xr#960:BR=^[L\300^C:tc=dm480:
dm480_full|IBM/EPSON full page (8" by 11.5"):\
	:yr#792:tc=dm480:
dm960_full|IBM/EPSON full page (8" by 11.5"):\
	:yr#792:tc=dm960:
hprr|HPRR|HP RuggedWriter 480:\
	:DV=raster:xr#1224:yr#1000:OW=^[*t90R^[*r1224S^[*r0A:CW=^[*rB:\
	:BR=^[*b153W:BP=\200\100\040\020\010\004\002\001:\
	:OF=hp_XXXXXX:\
	:SY=${BIN}/rasterise -r $0 $F - | lp -oraw -onb -opr:
hprrfile|HP Rugged Writer to a file:\
	:SY=move $F $1:TC=hprr:
#
# Note that the Deskjet cannot be used in 300 dpi mode under dos/win 3.1,
# as rasterise doesn't use an extender, and cannot handle such a big plot area
#
deskjet|Deskjet 520 in 150 dpi mode; highest DOS resolution:\
	:tc=deskjet-150:
deskjet-300|DeskJet 520, 300 dpi (not usable with DOS) printing to a file:\
	:DV=raster:xr#2400:yr#2400:OW=^[*t300R^[*r2400S^[*r2Q^[*r0A:\
	:CW=^[*rbC^[&l0H:\
	:BR=^[*b300W:BP=\200\100\040\020\010\004\002\001:\
	:OF=hp_XXXXXX:\
	:tc=hprrfile:
deskjet-150|DeskJet 520, in 150 dpi mode, printing to a file:\
	:DV=raster:xr#1200:yr#1200:OW=^[*t150R^[*r1200S^[*r2Q^[*r0A:\
	:BR=^[*b150W:\
	:tc=deskjet-300:
deskjet-100|DeskJet 520, in draft mode at 100dpi, printing to a file:\
	:DV=raster:xr#800:yr#800:OW=^[*t100R^[*r800S^[*r1Q^[*r0A:\
	:BR=^[*b100W:\
	:tc=deskjet-300:
deskjet-75|DeskJet 520, in draft mode at 75dpi, printing to a file:\
	:DV=raster:xr#600:yr#600:OW=^[*t75R^[*r600S^[*r1Q^[*r0A:\
	:BR=^[*b75W:\
	:tc=deskjet-300:
laserjet2|LASERJET2|HP laserjet II (very high resolution, landscape):\
        :DV=raster:xr#3000:yr#2448:OW=300R&l26A0A:\
        :BR=^[*b306W:\
	:SY=${BIN}/rasterise -r -R $0 $F - | lp -oraw -onb -opr:tc=hprr:
laserjet|LASERJET|HP laserjet (high resolution) (untested):\
	:DV=raster:xr#1280:yr#640:CW=^[*rB:OW=^[*r1280^[*rA:BR=^[*b160W:\
	:tc=hprr:
llaserjet|LLASERJET|HP laserjet (low resolution) (untested):\
	:xr#640:OW=^[*r640^[*rA:BR=^[*b80W:tc=hprr:
hppl|HP Plotter 7475A|HP 1/1.3:\
	:xr#7500:yr#10000:ch#0.03:cw#0.02:\
	:CW=SP0;\n:\
	:OW=IN;PA1000,500;\n\033.I81;;17\072\n\033.N;19\072\n:\
	:DC=black:CS=7:CO= :CT=SP(1$0)1($1)0($2)1($3-71#1-%d$8-9)1($$);\n:\
	:DS=PAPD:TB=PAPU(1%d),(2%d);LB :TE=^C\n:VS=PAPU:\
	:XY=(1%d),(2%d)\n:\
	:OF=hppl_XXXXXX:SY=/u/bin/lpplot $F ; rm $F\n:
# /u/bin/lpplot sets up the printer, and sends the plot
hppl2|hpplot|hpplotter|HP Plotter 7475A|HP 1.4/1:\
	:xr#10000:yr#7175:tc=hppl:
# xr792 seems to fail in printronix
printronix|PRINTRONIX|DEC printronix printer:\
	:DV=raster:xr#780:yr#780:CW=^L:OW=^L:BR=@:ER=^E^J:\
	:BP=\001\002\004\010\020\040:EP=\100:\
	:OF=pr_XXXXXX:\
	:SY=(${BIN}/rasterise -r $0 $F - | lpr)&:
printronix_remote|PRINTRONIX_REMOTE|DEC printronix printer (xr#792 seems to fail):\
	:SY=(cat $F|ssh $1 ${BIN}/rasterise $0 - -"|"lpr;rm $F)&:\
	:tc=printronix:
printronixl|PRINTRONIXL|landscape printronix (rotated 90deg and long):\
	:yr#780:xr#1560:\
	:SY=${BIN}/rasterise -rR $0 $F - | lpr&:\
	:tc=printronix:
versatec|VERSATEC|Versatec plotter (untested):\
	:DV=raster:xr#2112:yr#1700:BP=\200\100\040\020\010\004\002\001:\
	:OF=vers_XXXXXX:SY=rasterise -r $0 $F - | lpr -P${PRINTER} -v -h &:
#
# Now for some laser printers
#
# Note that we use registers 7,8 in postscript
# 7 and 8 are used to insert `stroke' every R8 XY's
#
postscript|POSTSCRIPT|Postscript for square plots (8 x 8in):\
	:xr#2390:yr#2390:ch#.0229:cw#.013:\
	:CW=stroke\ngrestore\nshowpage\nend\n:\
	:DE=L\n(7#1+!778<#11;#0!7)CS M\n:\
	:dE=l\n(7#1+!778<#11;#0!7)CS M\n:vE=m :\
	:OW='%!\ninitgraphics\n:\
	:OX=(#22!9#300!8#0!7) 20 dict begin\n72 300 div dup scale\n\
	1 setlinejoin 0 setlinecap\n\
	/Helvetica findfont 55 scalefont setfont \n\
	/B {CS newpath moveto} def\n\
	/F {moveto 0 setlinecap} def\n\
	/C {CS M 1 1 3 {pop 3 1 roll 255 div} for SET_COLOUR} def\n\
	/CS {currentpoint stroke} def\n\
	/CF {currentpoint eofill} def\n\
	/L {lineto} def /l {rlineto} def /M {moveto} def /m {rmoveto} def\n\
	/P {gsave 0 1 rlineto stroke grestore} def\n\
	/T {currentlinecap exch 1 setlinecap show setlinecap} def\n\
        errordict /nocurrentpoint {pop 0 0 M currentpoint} put\n:\
	:OY=/SET_COLOUR statusdict begin /processcolors where\n\
	'  {pop processcolors 1 gt} {false} ifelse\n\
	'  {'(setrgbcolor')} {'(pop pop pop')} ifelse cvx end def\n:\
	:OZ= 80 600 translate\ngsave\n:\
	:ME=P\n:\
	:PG=stroke showpage grestore gsave\n(#0!7:\
	:VE=M :XY=(1%d) (2%d) :FS=(#0!7)B\n:FE=CF M\n:FD=(1%d) (2%d) L\n:\
	:CT= (1%d) (2%d) (3%d) C\n:DC=black\
	:TB=(1%d) (2%d) F '(:TE=') T\n:\
	:lt=01234\:;:\
	:ML=CS (1$0)[]($1)[6 12]($2)[32 24]($3)[80 24]($4)[6 12 32 12]\
		($\:)currentrgbcolor 5 3 roll 1 1 1 setrgbcolor []\
		($;)M setrgbcolor CS []($$) 0 setdash M\n:\
	:LW=CS M (1|$0#1%d$D1%g) 100 mul 72 div($$) dup setlinewidth\n\
	/P [ /gsave cvx 0 5 -1 roll .05 add dup -2 div 0 exch \
	/rmoveto cvx /rlineto cvx /stroke cvx /grestore cvx ] cvx def\n:\
	:OF=ps_XXXXXX:\
	:SY=lpr -r $F:
post_remote|postscript_remote|Some postscript laser writer $2 on machine $1:\
	:SY=cat $F | ssh $1 lpr -P$2 ; rm $F:tc=postscript:
post_colour|post_color|Colour postscript printer:\
	:OY=/SET_COLOUR { setrgbcolor } def\n:\
	:SY=lpr -r -s -Pps_colour $F:\
	:tc=postscript:
postgray|postgrey|postscript with colours mapped to greyscale:\
	:OY=/SET_COLOUR statusdict begin /processcolors where\n\
	'  {pop processcolors 1 gt} {false} ifelse\n\
	'  {'(setrgbcolor')} {'(add add 3 div setgray')} ifelse cvx end def\n:\
	:TC=postscript:
postgrayfile|postgreyfile|postscript to file with colours mapped to greyscale:\
	:OY=/SET_COLOUR statusdict begin /processcolors where\n\
	'  {pop processcolors 1 gt} {false} ifelse\n\
	'  {'(setrgbcolor')} {'(add add 3 div setgray')} ifelse cvx end def\n:\
	:TC=postfile:
postscript_bg|blackpostscript|postscript w. coloured background (default black):\
	:LR=(#0!1#0!2#0!3:\
	:OY=/SET_COLOUR { setrgbcolor } def\n:\
	:OZ= 80 600 translate\n\
	(1%d) (2%d) (3%d) SET_COLOUR\n\
	0 0 M 0 2390 L 2390 2390 L 2390 0 L CF\n\
	255 255 255 SET_COLOUR\n\
	gsave\n:\
	:DC=white:\
	:tc=post_colour:
postfile_bg|blackpostfile|postscript to a file w. coloured background (default black):\
	:OW='%!PS-Adobe-3.0 EPSF-3.0\n\
	'%'%Creator\: SM\n\
	'%'%BoundingBox\: 18 144 592 718\n\
	'%'%DocumentNeededResources\: font Helvetica\n\
	'%'%LanguageLevel\: 1\n'%'%Pages\: 1\n\
	'%'%EndComments\n'%'%Page\: 1 1\n:\
	:SY=mv $F $1:tc=postscript_bg:
postfileCMYK|Postscript to a file with (bad) CMYK support:\
	:OY=/SET_COLOUR statusdict begin /processcolors where\n\
	'  {pop processcolors 1 gt} {false} ifelse\n\
	'  {'(1.0 exch sub 3 1 roll 1.0 exch sub 3 1 roll \n\
	'   1.0 exch sub 3 1 roll 0.0 setcmykcolor')} {'(pop pop pop')} \n\
	ifelse cvx end def\n:\
        :TC=postfile:
postport|POSTPORT|Postscript for portrait mode full page plots:\
	:yr#3200:xr#2390:\
	:OZ= 80 50 translate\ngsave\n:tc=postscript:
postport_remote|POSTPORT_REMOTE:\
	:SY=cat $F | ssh $1 lpr -P$2 ; rm $F:tc=postport:
postland|POSTLAND|Postscript driver for landscape plots compress y-axis:\
        :xr#3200:yr#2390:cw#.0097:ch#.0229:\
	:OZ= 2470 50 translate 90 rotate\ngsave\n:\
        :tc=postscript:
postland_remote|Some landscape postscript laser writer on a remote machine:\
	:SY=cat $F | ssh $1 lpr -P$2 ; rm $F:tc=postland:
postencap|encap|postfile|encapsulated postscript, written to file $1:\
	:OW='%!PS-Adobe-3.0 EPSF-3.0\n\
	'%'%Creator\: SM\n\
	'%'%BoundingBox\: 18 144 592 718\n\
	'%'%DocumentNeededResources\: font Helvetica\n\
	'%'%LanguageLevel\: 1\n'%'%Pages\: 1\n\
	'%'%EndComments\n'%'%Page\: 1 1\n:\
	:CW=stroke\ngrestore\nshowpage\nend\n'%'%Trailer\n'%'%EOF\n:\
	:SY=mv $F $1:tc=postscript:
postlandfile|postlandencap|encapsulated landscape postscript written to $1:\
	:OW='%!PS-Adobe-3.0 EPSF-3.0\n\
	'%'%Creator\: SM\n\
	'%'%BoundingBox\: 22 16 596 784\n\
	'%'%DocumentNeededResources\: font Helvetica\n\
	'%'%LanguageLevel\: 1\n'%'%Pages\: 1\n\
	'%'%EndComments\n'%'%Page\: 1 1\n:\
	:SY=mv $F $1:tc=postland:
postportfile|postportencap|encapsulated portrait postscript written to $1:\
	:OW='%!PS-Adobe-3.0 EPSF-3.0\n\
	'%'%Creator\: SM\n\
	'%'%BoundingBox\: 20 17 592 779\n\
	'%'%DocumentNeededResources\: font Helvetica\n\
	'%'%LanguageLevel\: 1\n'%'%Pages\: 1\n\
	'%'%EndComments\n'%'%Page\: 1 1\n:\
	:SY=mv $F $1:tc=postport:
postscript600|POSTSCRIPT600|Postscript for square plots (8 x 8in) at 600 dpi:\
	:xr#4780:yr#4780:\
	:OX=(#22!9#300!8#0!7) 20 dict begin\n72 600 div dup scale\n\
	1 setlinejoin 0 setlinecap\n\
	/Helvetica findfont 110 scalefont setfont \n\
	/B {currentpoint stroke newpath moveto} def\n\
	/F {moveto 0 setlinecap} def\n\
	/C {CS M 1 1 3 { pop 3 1 roll 255 div} for SET_COLOUR } def\n\
	/CS {currentpoint stroke} def\n\
	/CF {currentpoint eofill} def\n\
	/L {lineto} def /l {rlineto} def /M {moveto} def /m {rmoveto} def\n\
	/P {moveto 0 1 rlineto stroke} def\n\
	/T {currentlinecap exch 1 setlinecap show setlinecap} def\n\
        errordict /nocurrentpoint {pop 0 0 M currentpoint} put\n:\
	:OZ= 160 1200 translate\ngsave\n:\
	:TC=postscript:
#
# Postscript devices to produce postscript image files (can be smaller)
#
postimage|postimage300|postscript using the image command (8x8in, data in hex, 300dpi):\
	:DV=raster:RD=hex:xr#2400:yr#2400:\
	:OW='%!\n/buff 300 string def\n20 180 translate\n\
	8 72 mul dup scale\ngsave\n{ 1 exch sub } settransfer\n\
	2400 2400 1 [ 2400 0 0 -2400 0 2400 ]\n:\
	:OX={ currentfile buff readhexstring pop }\nimage\n:\
	:BP=\200\100\040\020\010\004\002\001:\
	:CW=\ngrestore\nshowpage\n:OF=psrast_XXXXXX:\
	:SY=${BIN}/rasterise -r $0 $F $1:
#	:SY=${BIN}/rasterise -r $0 $F - | ghostview -:
postimage200|postscript as an image to a file (8x8in, data in hex, 200dpi):\
	:xr#1600:yr#1600:\
	:OW='%!\n/buff 200 string def\n20 180 translate\n\
	8 72 mul dup scale\ngsave\n{ 1 exch sub } settransfer\n\
	1600 1600 1 [ 1600 0 0 -1600 0 1600 ]\n:tc=postimage300:
postimage100|postscript as an image to a file (8x8in, data in hex, 100dpi):\
	:xr#800:yr#800:\
	:OW='%!\n/buff 100 string def\n20 180 translate\n\
	8 72 mul dup scale\ngsave\n{ 1 exch sub } settransfer\n\
	800 800 1 [ 800 0 0 -800 0 800 ]\n:tc=postimage300:
postimageb|postscript using the image command (8x8in, data in binary, 300dpi):\
	:RD=:OX={ currentfile buff readstring pop }\nimage\n:tc=postimage:
#
# This actually for an HPGL emulator; in particular a real pen plotter
# probably won't understand the LW entry (It'll try to change pens??)
#
hpgl|HPGL driver:\
        :xr#1000:yr#720:OW=IN;IP;SC 0,999,0,719;\n:CW=^D\n:XY=(1%d),(2%d):\
        :DS=PD :DE=;:VS=PU :VE=;:\
        :LW=PT (1|!11$0#2!9$D1#1-#2*#3+!9$$9#10/%d).(9#10&%d);:\
        :OF=hp_XXXXXX:SY=lpr -r -P$1 $F:
realhpgl|mshpgl|A Real HPGL pen plotter. Probably the Microsoft Word version too:\
	:LW@:tc=hpgl:
#
qmsp|QMSP|qms laser printer (portrait):\
	:xr#7000:yr#9000:LR=(#9500!9:\
	:CW=\^IGE\^-\^PN\^-\n:GD@:OF=qms_out:OF=qms_XXXXXX:DT=qms:\
	:OW=\^PY\^-^M\^F\n\^IOP\^ISYNTAX00001\^IGV\^PW03\^V0\
		\^IMH0000008500\^IMV0000011000:\
	:RC@:\
	:ML=\^V(1$0)0($1)2($2)3($4)1($5)7($6)8($$:lt@=012456:\
	:MS=\^D:XY=(1%05d)\072(92-%05d:VS=\^U:DS=\^D:\
	:SY=echo 'file is $F':
#	:SY=print/delete/notify/passall/que=$1 $F.:
qms|qmsq|QMS|QMSQ|qms_square|qms laser printer, for square plots:\
	:xr#7000:yr#7000:LR=(#7500!9:\
	:tc=qmsp:
qmsl|QMSL|qms laser printer (landscape):\
	:xr#9500:yr#7500:LR=(#7500!9:\
	:OW=\^PY\^-^M\^F\n\^IOL\^ISYNTAX00001\^IGV\^PW03\^V0\
		\^IMH0000008500\^IMV0000011000:\
	:tc=qmsp:
#
ln03|LN03|high resolution driver for ln03:\
	:xr#4096:yr#3072:XY=%T:\
	:CW=^[[?38l:GD@:OF=ln03_XXXXXX:OW=^[[?38h:RC@:\
 	:SY=write sys$output "Submitting $F" \n print/delete/pass/que=$1 $F.:\
	:tc=tek4014:
#	:SY=lpr -r -P$1 $F:\
lln03|LLN03|low resolution driver for ln03:\
	:xr#1024:yr#768:tc=ln03:
#
# These work for an ImageStation 8/300 at least.
# In decoding the OW strings it might help to note that
#	\315 == SET_HV_SYSTEM, \207 == SET_ABS_H, \211 == SET_ABS_V
#	e.g. \211\002\356 == SET_ABS_V (02<<8 + 0356) (n.b. \377 == \0)
#
imagen|IMAGEN|imsq|IMSQ|im|IM|Imagestation/Imageserver 8/300 8"x8":\
	:DV=imagen:xr#2390:yr#2390:\
	:OW=\315\103\315\031\207\377\074\211\002\356\315\140:\
	:OF=im_XXXXXX:DT=imagen:lt=0:\
	:SY=ipr -r -D"prerasterization on" -D"jobheader onerr" -P${IMAGEN} $F:
#	:SY=cp $F \$HOME/imag.plot ; ipr -r -D"prerasterization on" -P$1 $F:
import|IMPORT|Imagen 8/300, full page portrait plots:\
	:DV=imagen:xr#2390:yr#3100:\
	:OW=\315\103\315\031\207\377\036\211\377\226\315\140:\
	:tc=imagen:
imland|IMLAND|Imagen 8/300, full page landscape plots:\
	:DV=imagen:xr#3100:yr#2390:\
	:OW=\325\315\031\207\377\226\211\377\036\315\140:\
	:tc=imagen:
imagen2|IMAGEN2|imsq2|IMSQ2|Imagen 7320 or 2308, 8"x8":\
	:OW=@document'(forceprerasterization on,language impress')<wrap>
	\315\103\315\031\207\377\074\211\002\356\315\140:\
	:SY=(echo Sending $F to pepap@cfa9, print by;\
	echo IMPRINT /LANGUAGE=TRANSPARENT /QUEUE=IMxx $F.;\
	netcp -u pepap -v $F cfa9\:\:d9a\:[pepap])&:tc=imagen:
import2|IMPORT2|Imagen 7320 or 2308, full page portrait plots:\
	:DV=xr#2390:yr#3100:\
	:OW=@document'(forceprerasterization on,language impress')<wrap>
	\315\103\315\031\207\377\036\211\377\226\315\140:\
	:tc=imagen2:
imland|IMLAND|Imagen 7320 or 2308, full page landscape plots:\
	:DV=imagen:xr#3100:yr#2390:\
	:OW=@document'(forceprerasterization on,language impress')<wrap>
	\325\315\031\207\377\226\211\377\036\315\140:\
	:tc=imagen2:
#
# Figures to go into documents; postencap could go here too
#
pic|the roff pic preprocessor; output on $1:\
	:xr#2500:yr#2500:ch#0.02:cw#0.005:\
	:OW=.PS\n:OX=scale=500:\
	:OY=\ndefine m X move to $1,$2 X\ndefine l X line to $1,$2 X\n:\
	:CW=.PE\n:\
	:OF=tex_XXXXXX:SY=mv $F $1.pic:\
	:TB=":TE="\n:LW=.ps (1|!11$0#1+!1$$1#8*%d)\n:\
	:DS=l(:DE=)\n:VS=m(:XY=(1%d),(2%d):VE=)\n:\
	:SY=mv $F $1:
tpic|pic processed through tpic for TeX; output on $1.tex:\
	:CW=.PE\n\\centerline{\\box\\graph}\\bye\n:\
	:SY=mv $F $1.pic; tpic $1.pic; rm $1.pic:tc=pic:
gpic|pic processed through gpic -t for TeX; output on $1.tex:\
	:LW@:SY=mv $F $1.pic; gpic -t $1.pic > $1.tex; rm $1.pic:tc=tpic:
#
# Here are various entries that I haven't had a chance to test. In particular,
# they may well have the wrong ltypes, and erase the screen at funny times.
#
televideo955|955cy|TELEVIDEO955|955CY|Televideo 955:\
	:xr#720:yr#336:OW=^[m1^]^_:CW=^[m0^[[24;0H^[[0K:\
	:GD=^[m0^[[24;0H^[[0K:GE=^[m0^[m1^]^_:\
 	:RC=150(^[m0)^[[24;75H^[m1^]^[^Z:CL=^[m0^[*^[m1^]^[^L:\
        :tc=tek4012:
tek4025|TEK4025|tektronix 2024/2025/4027:\
	:ch#.02857:co#80:cw#.01351:li#34:\
	:MC=^M:CL=`MON K\r`WOR 33 H\r`GRA 1,35\r`SHR\r`JUM 1\r:\
	:CN#6:CW=`MON K\r`WOR 33 H\r:\
	:GD=^_`JUM 34\r                                                    \r:\
	:ML=`LIN ($1)(1#48+.)($D)1($$\r:lt=12345678:\
	:OW=`MON K\r`WOR 33 H\r`GRA 1,35\r`SHR\r`JUM 1\r:\
	:RC=^_^[^Z:SC=(,!3, & *, &+!1, & *, &+!2:TB=^]%t^_:VS=^]:\
	:xr#1024:XY=%t:yr#800:

wyse|wyse1575|WYSE|WYSE1575|Cleveland Codonics Wyse 1575:\
	:OW=^[1XP512,400,LS0,ML0,^]:CW=^]^X^[[24;0H^[[0K:\
	:CL=^[1E^_:ML=^]^[/(1$0)1d^[`($1-5)0d^[(1_+.$D)0d^[`($$:lt=012345:\
	:GE=^]^_:GD=^[1,UMFFFFFFFFFFFFFFFF,ML1,M0,0,AR1023,21,ML0,^_:\
	:RC=^]^[^Z^[^X:xr#1024:yr#800:\
	:tc=tek4012:


414a|cit414a|414A|CIT414A|CIT-414a graphics terminal:\
	:RC=20^[1^[^Z:OW=20^[1:CW=50^[2(#20!!)^[[24;0H^[[K:\
	:GE=20^[1:GD=50^[2(#20!!)^[[24;0H^[[K:\
	:CL=50^]^[^L(#50!!)^[2(#20!!)^[[J:\
	:ML=^[(1$1-5)(1_+.$$:lt=12345:tc=tek4012:
