# GRAPHCAP -- Graphics device capabilities.
#
# 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 rsh (i.e. they assume unix) to print
# on remote devices. To use rsh like this you'll need to put the remote
# machine in your .rhosts file at the remote end. Note that the name of the
# machine is in $1, the name of the printer is in $2 (if required)
#
default|The default device:\
	:tc=tek4012:
#
# STDGRAPH devices.
#
# A tek4012 without cursor saving (see hard4012)
#
tek4010|tek4012|TEK4010|TEK4012|tektronix 4010/2:\
	:ch#.0294:cw#.0125: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=^](2#12-!2)%t^_:VS=^_^]:\
	:xr#1024:XY=%t:yr#780:

pericom|gterm|GTERM|PERICOM|Pericom:\
	:GE=^]:TB=^](2#7-!2)%t^_:GD=^X:\
	:tc=tek4012:
kermit|kermit v2.3 tektronix emulator:\
	:GE=^[[?38h:GD=^[[?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=^]:TB=^](2#7-!2)%t^_: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:TB=^](2#30-!2)%T^_:\
	: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:\
	: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:\
	:TB=^](2#10-!2)%t^_:\
	:tc=hirez:

xterm|XTERM|Xterm tektronix emulator:\
	: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=^](2#30-!2)%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=(#5!7#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-7-)%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
#
tst|just a test:\
	:co#80:li#35:xr#100:yr#100:\
	:CT=^[C(1$0)6($1)7($2)0($3)4($4)1($D)5($$):\
	:CS=(:\
	:DC=red:
TST|	:CS=Setting up (1%d) colours\n(#0!9:\
	:CO=C[(9%d9#1+!9)] -> (1%d) (2%d) (3%d)\n:\
	:CT=Colours (1%d) (2%d) (3%d)\n:DC=red:\
	:LW=weight (1%d)\n:ML=type (1%d)\n:lt=0123:\
	:OW=Init string\n:RC=prompt:
#
# Use the generic raster device
#
test480|new EPSON Dot Matrix at 480 bits per 8" line; makes 8" square:\
        :RA: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=/u/teuben/smongo/rasterise -r $0 $F $1:
#        :SY=/u/teuben/smongo/rasterise -r $0 $F $1;cat $1 > /dev/rawlp:
dm480|EPSON Dot Matrix at 480 bits per 8" line; makes 8" square:\
	:RA: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=/home/hale/lupton/sm/rasterise -r $0 $F - | lpr -Ptiger:
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:\
	:RA: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=/usr/local/bin/rasterise -r $0 $F - | lp -oraw -onb -opr:
laserjet2|LASERJET2|HP laserjet II (very high resolution, landscape):\
        :RA:xr#3000:yr#2448:OW=*t300R&l26A*r0A:\
        :BR=^[*b306W:\
	:SY=rasterise -r -R $0 $F - | lp -oraw -onb -opr:tc=hprr:
laserjet|LASERJET|HP laserjet (high resolution) (untested):\
	:RA: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:\
	:LR=#100!9: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),(29-%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:\
	:RA: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=(/usr6/ifa/lupton/sm/rasterise -r $0 $F - | lpr)&:
printronix_remote|PRINTRONIX_REMOTE|DEC printronix printer (xr#792 seems to fail):\
	:SY=(cat $F|rsh $1 /usr/mko/lupton/sm/rasterise $0 - -"|"lpr;rm $F)&:\
	:tc=printronix:
printronixl|PRINTRONIXL|landscape printronix (rotated 90deg and long):\
	:yr#780:xr#1560:\
	:SY=/usr6/ifa/lupton/sm/rasterise -rR $0 $F - | lpr&:\
	:tc=printronix:
screen80|A *** plot on the screen (width 80):\
	:RA:xr#80:yr#48:OF=ras_XXXXXX:BP=*:EP= :ER=\n:\
	:SY=/usr6/ifa/lupton/sm/rasterise -r $0 $F $1:
screenr80|Screen 80 rotated through 90 degrees:\
	:xr#48:yr#80:SY=/usr6/ifa/lupton/sm/rasterise -Rr $0 $F $1:\
	:tc=screen80:
screen132|A *** plot on the screen (width 132):\
	:xr#132:tc=screen80:
versatec|VERSATEC|Versatec plotter (untested):\
	:RA:xr#2112:yr#1700:BP=\200\100\040\020\010\004\002\001:\
	:OF=vers_XXXXXX:SY=rasterise -r $0 $F - | lpr -Pversatec -v -h &:
#
# Now for some laser printers
#
# Note that we use registers 7,8,9 in postscript
# 9 is used in TB to offset text
# 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\nshowpage\n:\
	:DE=L\n(7#1+!778<#28;#0!7)currentpoint stroke M\n:\
	:OW='%!\ninitmatrix\n72 300 div dup scale\n\
	1 setlinejoin 1 setlinecap 80 600 translate\n\
	/Helvetica findfont 55 scalefont setfont \
	/B { stroke newpath } def /F { moveto 0 setlinecap} def\n\
	/L { lineto } def /M { moveto } def\n\
	/P { moveto 0 1 rlineto stroke } def\n\
	/T { 1 setlinecap show } def\n\
        errordict /nocurrentpoint { pop 0 0 M currentpoint } put\n:\
	:LR=(#22!9#300!8#0!7:ME=P\n:\
	:VE=M :XY=(1%d) (2%d) :lt=01234:\
	:FS=(#0!7)B\n:FE=currentpoint fill M\n:FD=(1%d) (2%d) L\n:\
	:CO= 1 (1%d) 10 div sub setgray\n:\
	:TB=(1%d) (29-%d) F '(:TE=') T\n:\
	:ML=currentpoint stroke (1$0)[]($1)[6 12]($2)[32 24]($3)[80 24]\
		   		($4)[6 12 32 12]($$) 0 setdash M\n:\
	:LW=currentpoint stroke M (1%d) 0.5 add setlinewidth\n:OF=ps_XXXXXX:\
	:SY=lpr -r -P$1 $F:
#	:SY=mv $F $F.ps\n/u/trq/bin/vaxprint 12 $F.ps:
post_remote|postscript_remote|Some postscript laser writer:\
	:SY=cat $F | rsh $1 lpr -P$2 ; rm $F:tc=postscript:
postport|POSTPORT|Postscript for portrait mode full page plots:\
	:yr#3200:xr#2390:\
	:OW='%!\ninitmatrix\n72 300 div dup scale\n\
	1 setlinejoin 1 setlinecap 80 50 translate\n\
	/Helvetica findfont 55 scalefont setfont \
	/B { stroke newpath } def /F { moveto 0 setlinecap} def\n\
	/L { lineto } def /M { moveto } def\n\
	/P { moveto 0 1 rlineto stroke } def\n\
	/T { 1 setlinecap show } def\n 0 0 M\n:tc=postscript:
postport_remote|POSTPORT_REMOTE:\
	:SY=cat $F | rsh $1 lpr -P$2 ; rm $F:tc=postport:
postland|POSTLAND|Postscript driver for landscape plots compress y-axis:\
        :xr#3200:yr#2390:cw#.0168:ch#.0229:\
	:OW='%!\ninitmatrix\n72 300 div dup scale\n\
	1 setlinejoin 1 setlinecap 2470 50 translate 90 rotate\n\
	/B { stroke newpath } def\n\
	/F { moveto /Helvetica findfont 55 scalefont setfont 0 setlinecap} def\n\
	/L { lineto } def /M { moveto } def\n\
	/P { moveto 0 1 rlineto stroke } def\n\
	/T { 1 setlinecap show } def\n0 0 M\n:\
        :tc=postscript:
postland_remote|Some landscape postscript laser writer on uhifa:\
	:SY=cat $F | rsh $1 lpr -P$2 ; rm $F:tc=postland:
#
# Any "LABEL _RHL stuff" commands will appear as "stuff" in the postscript file
#
posttst|Just make a postscript file, no printing:\
	:SY=sed -e '/stroke \\\\[\\\\] 0 setdash/N' -e '/.*\\\\n.*_RHL/N' \
	-e '/.*\\\\n.*_RHL/s/.*\\\\n*.*_RHL \\\\(.*\\\\)) T\\\\n.*/\\\\1/' \
	$F > $F~;echo $F~ is done:tc=postland:
# The following added by
# Joe Harrington <jh@athena.mit.edu> Fri Jul 27 17:29:25 EDT 1990
# to allow printing to a default printer (using either the local unix host's
# default entry in printcap or the user's PRINTER environment variable,
# and to dump a plain, unedited file.
#
post_default|postscript_default|Unix default postscript printer:\
      :SY=lpr -r $F:tc=postscript:
postport_default|Unix default postscript printer in portrait mode:\
      :SY=lpr -r $F:tc=postport:
postland_default|Unix default postscript printer in landscape mode:\
      :SY=lpr -r $F:tc=postland:
psdump|Just make the postscript file we would have printed, no printing:\
      :SY=echo $F is done:tc=postscript:
postport_dump|Portrait-mode postscript file, no printing:\
      :SY=echo $F is done:tc=postport:
postland_dump|Landscape-mode postscript file, no printing:\
      :SY=echo $F is done:tc=postland:
#
#
# 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$0#2!9$D1#1-#2*#3+!9$$9#10/%d).(9#10&%d);:\
        :OF=hp_XXXXXX:SY=lpr -r -P$1 $F:
#
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:
#
imagen|IMAGEN|im|IM|Imagestation/Imageserver:\
	:xr#3328:yr#2500:OF=im_XXXXXX:DT=imagen:lt=0:\
	:SY=ipr -r -D"prerasterization on" $F:
#	:SY=mv $F $F.imp\n/u/trq/bin/vaxprint $1 $F.imp:
imsq|IMSQ|Imagestation/Imageserver square plots:\
	:xr#2500:yr#2500:tc=imagen:
#
# 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:


