home *** CD-ROM | disk | FTP | other *** search
/ Jason Aller Floppy Collection / 273.img / VP30-04.ZIP / POSTSCPT / PERMVP.EFF < prev    next >
Encoding:
Text File  |  1990-03-15  |  16.8 KB  |  415 lines

  1. %!PS-Adobe-1.0
  2. %%Title: GEM Permanent Special Effects Prologue
  3. %%Creator: GEM
  4. %%EndComments
  5.  
  6. userdict /gemdict known{stop}if
  7.  
  8. %%BeginExitServer: 000000
  9. 000000 serverdict begin exitserver
  10. %%EndExitServer
  11.  
  12. /gemdict 300 dict def
  13.  
  14. % Copyright (C) Digital Research, Inc. 1986-1988. All rights reserved.
  15. systemdict /setpacking known
  16. {/svp currentpacking def true setpacking}if
  17. gemdict begin
  18.  
  19. /bd{bind def}bind def
  20. /ed{exch def}bind def
  21.  
  22. % Special effects definitions and procedures.
  23. /MNEFF 5 def
  24. /MXEFF 7 def
  25. /P_GT[{CCWGT}bind{CWGT}bind{OGT}bind]def
  26. /P_ET[{CCWET}bind{CWET}bind{OET}bind]def
  27. /P_JT[{CCWJT}bind{CWJT}bind{OJT}bind]def
  28. /P_FET[{CCWFET}bind{CWFET}bind{OFET}bind]def
  29. /P_FJT[{CCWFJT}bind{CWFJT}bind{OFJT}bind]def
  30. /SAVSTATE{/EFrgb [ currentrgbcolor ] def /EFfont currentfont def
  31.     /EFlwid currentlinewidth def /EFlcap currentlinecap def
  32.     /EFljoin currentlinejoin def
  33.     /EFdash currentdash /EFdashoff ed def}bd
  34. /RESSTATE{EFfont setfont EFlwid setlinewidth
  35.     EFlcap setlinecap EFljoin setlinejoin EFdash EFdashoff setdash}bd
  36. /SAVCLIP{clippath pathbbox EFclip astore pop gr gs 0 0 0 setrgbcolor}bd
  37. /RESCLIP{EFclip aload pop /uy ed /rx ed /ly ed /lx ed
  38.     np lx ly lx uy rx uy rx ly mto lto lto lto clip np
  39.     EFrgb aload pop setrgbcolor}bd
  40. /EF_ET{VdiCol MNEFF lt VdiCol MXEFF gt or{ETEXT}{P_ET VdiCol MNEFF sub
  41.     get SAVSTATE SAVCLIP RESSTATE exec RESCLIP}ifelse}bd
  42. /EF_JT{VdiCol MNEFF lt VdiCol MXEFF gt or{JTEXT}{P_JT VdiCol MNEFF sub
  43.     get SAVSTATE SAVCLIP RESSTATE exec RESCLIP}ifelse}bd
  44. /EF_FET{VdiCol MNEFF lt VdiCol MXEFF gt or{FET}{P_FET VdiCol MNEFF sub
  45.     get SAVSTATE SAVCLIP RESSTATE exec RESCLIP}ifelse}bd
  46. /EF_FJT{VdiCol MNEFF lt VdiCol MXEFF gt or{FJT}{P_FJT VdiCol MNEFF sub
  47.     get SAVSTATE SAVCLIP RESSTATE exec RESCLIP}ifelse}bd
  48.  
  49. % "Graphic" text will not print with any special effects applied unless
  50. % the following line is replaced with the two commented out below it.
  51. /EF_GT{GTEXT}bd
  52. %/EF_GT{VdiCol MNEFF lt VdiCol MXEFF gt or{GTEXT}{P_GT VdiCol MNEFF sub
  53. %    get SAVSTATE SAVCLIP RESSTATE exec RESCLIP}ifelse}bd
  54.  
  55. % Special effects definitions and procedures: outline characters.
  56. /OLindex 7 def
  57. /Ostring 80 string def
  58. /Odict 7 dict def
  59. /EFclip 4 array def
  60. /MKOLF{Odict begin /nf Oname def /bf fonts tface get findfont def
  61.     /num bf maxlength 1 add def
  62.     /uid bf /UniqueID known{bf /UniqueID get 1 add}{/num num 1 add def 1}
  63.     ifelse def /of num dict def
  64.     bf{exch dup /FID ne{exch of 3 1 roll put}{pop pop}ifelse}forall
  65.     of /FontName nf put of /PaintType 2 put
  66.     of /StrokeWidth 1000 36 div put
  67.     of /UniqueID uid put nf of definefont end}bd
  68. /SETOLF{fonts tface get Ostring cvs 0 (OL) putinterval /Oname Ostring cvn def
  69.     FontDirectory Ostring known{Oname findfont}{MKOLF}ifelse
  70.     txscale scalefont setfont}bd
  71. /OGT{/cf currentfont def SETOLF GTEXT cf setfont}bd
  72. /OET{/cf currentfont def SETOLF ETEXT cf setfont}bd
  73. /OJT{/cf currentfont def SETOLF JTEXT cf setfont}bd
  74. /OFET{/cf currentfont def SETOLF FET cf setfont}bd
  75. /OFJT{/cf currentfont def SETOLF FJT cf setfont}bd
  76.  
  77. % Special effects definitions and procedures: rotated text.
  78. /CWindex 6 def
  79. /CCWindex 5 def
  80.  
  81. /ROTGT{/EFtrot trotate def trotate add /trotate ed
  82.     GTEXT /trotate EFtrot def}bd
  83. /CCWGT{90 ROTGT}bd
  84. /CWGT{-90 ROTGT}bd
  85.  
  86. /ROTET{/EFtrot trotate def trotate add /trotate ed
  87.     ETEXT /trotate EFtrot def}bd
  88. /CCWET{90 ROTET}bd
  89. /CWET{-90 ROTET}bd
  90.  
  91. /ROTJT{/EFtrot trotate def trotate add /trotate ed
  92.     JTEXT /trotate EFtrot def}bd
  93. /CCWJT{90 ROTJT}bd
  94. /CWJT{-90 ROTJT}bd
  95.  
  96. /ROTFET{/EFtrot ed gs translate EFtrot rotate 0 0 FET gr}bd
  97. /CCWFET{90 ROTFET}bd
  98. /CWFET{-90 ROTFET}bd
  99.  
  100. /ROTFJT{/EFtrot ed 5 -2 roll gs translate EFtrot rotate 0 0 5 2 roll
  101.     FJT gr}bd
  102. /CCWFJT{90 ROTFJT}bd
  103. /CWFJT{-90 ROTFJT}bd
  104.  
  105. % User defined Start of Page procedure:  this operator will be
  106. % executed at the beginning of each page output through GEM
  107. % and is provided to allow user-defined page initialization.
  108. /UserSoP{}bd
  109.  
  110. % Halftone screen spot function procedure array: this array is indexed
  111. % into as follows: 0 = dot screen, 1 = line screen, 2 = ellipse screen,
  112. % 3 = custom (user-definable) screen.
  113. /ScreenProc[
  114.     { % Dot screen
  115.         abs exch abs 2 copy add 1 gt{
  116.             1 sub dup mul exch 1 sub dup mul add 1 sub}{
  117.             dup mul exch dup mul add 1 exch sub}ifelse}bind
  118.     { % Line screen
  119.         pop}bind
  120.     { % Ellipse screen
  121.         dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub}bind
  122.     { % Custom screen
  123.         dup mul exch dup mul add sqrt 1 exch sub}bind
  124.     ]def
  125.  
  126. /GEMINISUB{pop pop pop pop pop}bd
  127. /GEMINIDOC{3 -1 roll settray
  128.     dup userdict exch known{cvx exec}{pop}ifelse
  129.     /#copies ed
  130.     statusdict /setpageparams known
  131.     {statusdict begin 0 1 setpageparams end}{pop pop}ifelse}bd
  132. /geminit{np 1 setlinejoin /mpf true def
  133.     /cmat matrix def /smat matrix def /rmat matrix def
  134.     /encstr 80 string def /patname null def /patbits null def gs}bd
  135. /GEMMATSUB{pop pop pop pop gr 72 300 div exch div dup scale gs}bd
  136. /GEMMATINI{/landscape ed /p3 ed /p2 ed /p1 ed
  137.     gr 72 300 div exch div dup scale clippath pathbbox
  138.     exch /prx ed exch dup /ply ed sub 1 add p3 sub 2 div ply
  139.     add /ty ed dup prx exch sub 1 add p2 sub 2 div add
  140.     landscape{p1 add}if ty translate landscape{90 rotate}if gs}bd
  141. /gr /grestore load def
  142. /np /newpath load def
  143. /cp /currentpoint load def
  144. /gi /getinterval load def
  145. /lto /lineto load def
  146. /mto /moveto load def
  147. /cto /curveto load def
  148. /clw /currentlinewidth load def
  149. /gs /gsave load def 
  150. /greset{gr gs}bd
  151. /settray{dup 0 lt mf dup 0 ge{tray}{pop}ifelse}bd
  152. /mf{statusdict /manualfeed known
  153.     {statusdict begin /manualfeed ed end}{pop}ifelse}bd
  154. /tray{statusdict begin true
  155.     product(Dataproducts LZR 1260)eq{not exch dup 2 gt{pop 0}if
  156.         dup 0 eq{pop defaultpapertray}if setpapertray}if
  157.     product(QMS-PS 1200)eq product(Silentwriter)eq or{not exch dup 1 gt
  158.         {pop 0}if defaultpapertray exch 0 ne{3 exch sub}if
  159.         setpapertray}if
  160.     product(IBM Personal Page Printer II)eq{
  161.         statusdict /defaultpapertray known
  162.         statusdict /setpapertray known and
  163.             {not exch dup 2 gt{pop 0}if
  164.             dup 0 eq{pop defaultpapertray}
  165.             {dup defaultpapertray ge{1 add}if}ifelse
  166.             setpapertray}if}if
  167.     product dup(PrintServer 40)eq exch(QMS-PS 2400)eq or{
  168.         not exch dup 2 gt{pop 0}if
  169.         dup 0 eq{pop defaultpapertray}
  170.         {dup defaultpapertray ge{1 add}if}ifelse setpapertray}if
  171.     {statusdict /defaultpapertray known statusdict /setpapertray known and
  172.         {defaultpapertray exch 0 ne{1 exch sub}if setpapertray}
  173.         {pop}ifelse}if end}bd
  174. /R{findfont begin currentdict dup maxlength dict begin
  175.     {1 index /FID ne{def}{pop pop}ifelse}forall
  176.     /FontName ed dup length 0 ne{
  177.         /Encoding Encoding 256 array copy def 0 exch
  178.         {dup type /nametype eq{
  179.             Encoding 2 index 2 index put pop 1 add}
  180.             {exch pop}ifelse}forall}if pop
  181.     currentdict dup end end /FontName get exch definefont pop}bd
  182. /gemenvec[8#200 /Ccedilla 8#201 /udieresis 8#202 /eacute 8#203 /acircumflex
  183.     8#204 /adieresis 8#205 /agrave 8#206 /aring 8#207 /ccedilla
  184.     8#210 /ecircumflex 8#211 /edieresis 8#212 /egrave 8#213 /idieresis
  185.     8#214 /icircumflex  8#215 /igrave 8#216 /Adieresis 8#217 /Aring
  186.     8#220 /Eacute 8#221 /ae 8#222 /AE 8#223 /ocircumflex 8#224 /odieresis
  187.     8#225 /ograve 8#226 /ucircumflex 8#227 /ugrave 8#230 /ydieresis
  188.     8#231 /Odieresis 8#232 /Udieresis 8#233 /cent 8#234 /sterling
  189.     8#235 /yen 8#236 /currency 8#237 /florin 8#240 /aacute 8#241 /iacute
  190.     8#242 /oacute 8#243 /uacute 8#244 /ntilde 8#245 /Ntilde
  191.     8#246 /ordfeminine 8#247 /ordmasculine 8#250 /questiondown
  192.     8#251 /quotedblleft 8#252 /quotedblright 8#253 /guilsinglleft
  193.     8#254 /guilsinglright 8#255 /exclamdown 8#256 /guillemotleft
  194.     8#257 /guillemotright 8#260 /atilde 8#261 /otilde 8#262 /Oslash
  195.     8#263 /oslash 8#264 /oe 8#265 /OE 8#266 /Agrave 8#267 /Atilde
  196.     8#270 /Otilde 8#271 /section 8#272 /daggerdbl 8#273 /dagger
  197.     8#274 /paragraph
  198.     8#300 /quotedblbase 8#301 /ellipsis 8#302 /perthousand 8#303 /bullet
  199.     8#304 /endash 8#305 /emdash 8#306 /ring 8#307 /Aacute
  200.     8#310 /Acircumflex 8#311 /Egrave 8#312 /Ecircumflex 8#313 /Edieresis
  201.     8#314 /Igrave 8#315 /Iacute 8#316 /Icircumflex 8#317 /Idieresis
  202.     8#320 /Ograve 8#321 /Oacute 8#322 /Ocircumflex 8#323 /Scaron
  203.     8#324 /scaron 8#325 /Ugrave 8#326 /Uacute 8#327 /Ucircumflex
  204.     8#330 /Ydieresis 8#331 /germandbls 8#332 /Zcaron 8#333 /zcaron
  205.     8#334 /fraction 8#335 /space 8#336 /space 8#337 /space 8#340 /grave
  206.     8#341 /acute 8#342 /circumflex 8#343 /tilde 8#344 /dieresis
  207.     8#345 /ring 8#346 /cedilla 8#347 /caron
  208.     version(23.0)eq{8#275 /space 8#276 /space 8#277 /space}
  209.     {8#275 /copyright 8#276 /registered 8#277 /trademark}ifelse]def
  210. /addfont{fonts exch fpt exch put /fpt fpt 1 add def}bd
  211. /encfont{gemenvec exch fonts exch get dup encstr cvs length 1 sub encstr
  212.     exch 1 exch getinterval cvn R}bd
  213. /dpath{mto{lto}repeat}bd
  214. /path{np dpath}bd
  215. /addpath{lto{lto}repeat}bd
  216. /rxy{.25 sub round .25 add}bd
  217. /rpt{transform rxy exch rxy exch itransform}bd
  218. /fa{np rpt mto 3{rpt lto}repeat}bd
  219. /circle{np 0 0 1 0 360 arc}bd
  220. /deflin{0 0 0 setrgbcolor []0 setdash 1 setlinewidth}bd
  221. /dot{gs np 2 copy mto lto 1 setlinecap stroke gr}bd
  222. /rend{gs 1 setlinecap np mto cp 0.1 add lto stroke gr}bd
  223. /rl{gs 1 setlinecap stroke gr}bd
  224. /vl{dup /st ed dup apath exch get tx sub dup mul
  225.     exch 1 add apath exch get ty sub dup mul add sqrt}bd
  226. /doarrow{/rot ed /ty ed /tx ed 6 array currentmatrix
  227.     tx ty translate clw 4 lt{4}{clw}ifelse dup scale rot rotate np
  228.     0 0 mto -3 1.5 lto -3 -1.5 lto fill setmatrix}bd
  229. /arpath{np apath 0 get apath 1 get mto 2 2 points 1 sub
  230.     {dup apath exch get exch 1 add apath exch get lto}for}bd
  231. /arrowline{/apath ed /lend ed /lbeg ed /len clw 3 mul def
  232.     /points apath length def lbeg
  233.     {apath 0 get dup /tx ed /x1 ed apath 1 get dup
  234.         /ty ed /y1 ed true 2 2 points 1 sub
  235.         {vl len ge{pop false exit}if}for
  236.         {/lbeg false def /lend false def}
  237.         {apath 2 apath st points st sub gi putinterval /r1 y1
  238.             apath 3 get sub x1 apath 2 get sub atan def apath 0
  239.             x1 r1 cos len mul sub put apath 1 y1 r1 sin len mul
  240.             sub put /points points st 2 sub sub def}ifelse}if
  241.     lend{apath points 2 sub get dup /tx ed /x2 ed
  242.         apath points 1 sub get dup /ty ed /y2 ed
  243.         true points 4 sub -2 0
  244.         {vl len ge{pop false exit}if}for
  245.         {/lbeg false def /lend false def}
  246.         {/r2 y2 apath st 1 add get sub x2 apath st get sub
  247.             atan def /st st 2 add def apath st x2 r2 cos len mul
  248.             sub put apath st 1 add y2 r2 sin len mul sub put
  249.             /points st 2 add def}ifelse}if
  250.     lbeg{x1 y1 r1 doarrow}if lend{x2 y2 r2 doarrow}if arpath}bd
  251. /ac{6 array currentmatrix xt yt translate xs ys scale}bd
  252. /shorten{dup mul exch dup mul add sqrt clw 150 mul exch div}bd
  253. /xang{dup 360 ge{360}{0}ifelse exch dup sin xs mul exch cos ys mul atan
  254.     dup 360 lt{add}{exch pop}ifelse}bd
  255. /arrowarc{/eang ed /bang ed /ys ed /xs ed /yt ed
  256.     /xt ed /lend ed /lbeg ed ac np 0 0 1 bang xang
  257.     eang xang arc setmatrix cp /y2 ed /x2 ed ac np 0 0 1 bang
  258.     xang dup arc setmatrix cp /y1 ed /x1 ed lbeg
  259.     {/bang bang xs ys shorten add def}if
  260.     lend{/eang eang xs ys shorten sub def}if ac np 0 0 1 bang xang eang
  261.     xang arc setmatrix gs stroke gr
  262.     lend{x2 y2 cp y2 exch sub exch x2 exch sub atan doarrow}if
  263.     lbeg{ac np 0 0 1 bang xang dup arc setmatrix x1 y1 cp y1 exch sub
  264.         exch x1 exch sub atan doarrow}if}bd
  265. /rbox{/ury ed /urx ed /lly ed /llx ed urx llx sub
  266.     4 div dup 50 gt{pop 50}if /radius ed ury lly sub 4 div dup
  267.     radius gt{pop radius}if /radius ed np urx radius sub ury mto llx
  268.     ury llx lly radius arcto 4{pop}repeat llx lly urx lly radius arcto
  269.     4{pop}repeat urx lly urx ury radius arcto 4{pop}repeat urx ury llx ury
  270.     radius arcto 4{pop}repeat}bd
  271. /marker{1 sub mdef exch get /mproc ed 32 div /msize ed
  272.     {gs np translate msize dup scale mproc stroke gr}repeat}bd
  273. /mdef[{0 0 0.5 0 360 arc}bind
  274.     {-16 0 mto 16 0 lto 0 -16 mto 0 16 lto}bind
  275.     {0 -16 mto 0 16 lto 13.9 8 mto -13.9 -8 lto 13.9 -8 mto
  276.         -13.9 8 lto}bind
  277.     {16 16 mto -16 16 lto -16 -16 lto 16 -16 lto closepath}bind
  278.     {16 16 mto -16 -16 lto -16 16 mto 16 -16 lto}bind
  279.     {16 0 mto 0 16 lto -16 0 lto 0 -16 lto closepath}bind
  280.     {0 0 16 0 360 arc}bind
  281.     {0 13.86 mto -16 -13.86 lto 16 -13.86 lto closepath}bind]def
  282. /bon{2 mul exch dup 3 1 roll 8 idiv add pstr exch get
  283.     exch 8 mod 7 exch sub 1 exch bitshift and 0 ne}bd
  284. /bpsf{1 add 8 mul cvi exch 1 add 8 mul cvi exch bon
  285.     {/onb onb 1 add def 1}{/ofb ofb 1 add def 0}ifelse}bd
  286. /frs{72 0 rmat defaultmatrix dtransform dup mul exch dup mul add sqrt}bd
  287. /sus{/m cmat currentmatrix def /sm 32 dup smat scale def sm m m concatmatrix
  288.     pop 1 0 m dtransform dup abs 0.1 gt{exch 90}{0}ifelse exch pop exch
  289.     dup 0 lt{exch 180 add exch neg}if frs exch div exch /bpsf load
  290.     setscreen}bd
  291. /setpat{/onb 0 def /ofb 0 def sus{}settransfer ofb ofb onb add div setgray}bd
  292. /ellpie{/pie ed /eang ed /bang ed /ys ed /xs ed
  293.     /yt ed /xt ed 6 array currentmatrix xt yt translate xs ys
  294.     scale np pie{0 0 mto}if 0 0 1 bang xang eang xang arc setmatrix}bd
  295. /roundarc{gs 1 setlinecap cp np mto cp lto stroke gr}bd
  296. /ss{currentscreen /scp ed /sca ed /scf ed
  297.     dup 0 lt{pop}{ScreenProc exch get /scp ed}ifelse
  298.     dup 0 lt{pop}{/sca ed}ifelse
  299.     dup 0 le{pop}{/scf ed}ifelse
  300.     scf sca /scp load setscreen}bd
  301. /grayimg{{vrep 0.1 gt{/vrep vrep 1 sub def}{
  302.             {currentfile token pop 0 eq
  303.                 {currentfile scan readhexstring pop pop exit}
  304.                 {/vrep currentfile token pop def}ifelse
  305.             }loop}ifelse scan}image}bd
  306. /fstimg{{vrep 0.1 gt{/vrep vrep 1 sub def}{
  307.             {currentfile token pop 0 eq
  308.                 {currentfile scan readhexstring pop pop exit}
  309.                 {/vrep currentfile token pop def}ifelse
  310.             }loop}ifelse scan}imagemask}bd
  311. /decode{/patstring patlen string def /bonestr 1 string def
  312.     {vrep 0.1 gt{/vrep vrep 1 sub def scan}
  313.         {/spos 0 def
  314.             {currentfile token pop currentfile token pop
  315.                 exch imop exch get exec spos smax ge
  316.                 {scan exit}if}loop}ifelse}imagemask}bd
  317. /imop[{<ff> psc}bind
  318.     {<00> psc}bind
  319.     {currentfile patstring readhexstring pop psc}bind
  320.     {1 exch 1 exch
  321.         {pop currentfile bonestr readhexstring pop scan exch
  322.             spos exch 0 get put /spos spos 1 add def}for}bind
  323.     {1 sub /vrep ed}bind]def
  324. /psc{dup length /plen ed exch -1 1
  325.     {pop dup scan exch spos exch putinterval /spos spos plen add def}for
  326.     pop}bd
  327. /nf{/svf currentflat def 10 setflat}bd
  328. /rf{svf setflat}bd
  329. /GTEXT{gs /msg ed /ty ed /tx ed tx ty translate trotate
  330.     rotate nf horz halign get exec
  331.     vert valign get exec np tx ty mto rf msg show tunder
  332.     {cp cp extents pop pop 5 div dup neg setlinewidth [] 0 setdash 1.5 mul
  333.         ty add /ty ed pop np pop ty mto tx ty lto stroke np mto}if
  334.     gr}bd
  335. /gtext{VdiCol MNEFF ge{EF_GT}{GTEXT}ifelse}bd
  336. /ETEXT{gs translate trotate rotate /tx 0 def /ty 0 def
  337.     {tx add dup /tx ed np ty mto show}repeat gr}bd
  338. /etext{VdiCol MNEFF ge{EF_ET}{ETEXT}ifelse}bd
  339. /JTEXT{/msg ed /sps ed /dx ed /ty ed /tx ed
  340.     gs tx ty translate trotate rotate nf
  341.     jhorz halign get exec vert valign get exec
  342.     msg stringwidth pop dx exch sub sps 0 eq{pop 0}{sps div}ifelse
  343.     /xsp ed rf msg jo gr}bd
  344. /jtext{VdiCol MNEFF ge{EF_JT}{JTEXT}ifelse}bd
  345. /FET{gs translate /tx 0 def /ty 0 def
  346.     {tx add dup /tx ed np ty mto show}repeat gr}bd
  347. /fet{VdiCol MNEFF ge{EF_FET}{FET}ifelse}bd
  348. /FJT{/msg ed /sps ed /dx ed /ty ed
  349.     gs ty translate nf /tx 0 def /ty 0 def
  350.     msg stringwidth pop dx exch sub sps 0 eq{pop 0}{sps div}ifelse
  351.     /xsp ed rf msg jo gr}bd
  352. /fjt{VdiCol MNEFF ge{EF_FJT}{FJT}ifelse}bd
  353. /tsel{tszabs{dup /FontBBox get aload pop exch pop dup 3 1 roll exch sub
  354.     exch dup 0 eq{pop pop 1.25}{div}ifelse exch pop}{1}ifelse}bd
  355. /sf{fonts tface get findfont tsel dup txscale mul exch tyscale mul
  356.     matrix scale makefont setfont}bd
  357. /jo{xsp exch 0 exch 32 exch np tx ty mto widthshow tunder
  358.     {cp cp extents pop pop 5 div dup neg setlinewidth 1.5 mul ty add
  359.     /ty ed []0 setdash pop np pop ty mto tx ty lto stroke np mto}if}bd
  360. /horz[{/tx 0 def}bind
  361.     {msg stringwidth pop -2 div /tx ed}bind
  362.     {msg stringwidth pop neg /tx ed}bind]def
  363. /extents{(_)bbox pop pop msg stringwidth pop (])bbox 3{exch pop}repeat}bd
  364. /bbox{np 0 0 mto false charpath flattenpath pathbbox np}bd
  365. /vert[{/ty 0 def}bind
  366.     {extents -2 div /ty ed pop pop pop}bind
  367.     {extents neg /ty ed pop pop pop}bind
  368.     {extents pop pop neg /ty ed pop}bind]def
  369. /jhorz[{/tx 0 def}bind
  370.     {/tx dx -2 div def}bind
  371.     {/tx dx neg def}bind]def
  372. /symindex 12 def
  373. /CR{/ah 0 def}bd
  374. /LF{0 -50 translate}bd
  375. /atext{gs np ah av mto
  376.     show tunder{cp cp (_)bbox pop pop exch pop 5 div dup neg
  377.     setlinewidth 1.5 mul add dup ah exch [] 0 setdash np mto lto
  378.     stroke np mto}if cp pop /ah ed gr}bd
  379. /colmap[
  380.     [1 1 1]
  381.     [0 0 0]
  382.     [1 0 0]
  383.     [0 1 0]
  384.     [0 0 1]
  385.     [0 1 1]
  386.     [1 1 0]
  387.     [1 0 1]
  388.     [.5 .5 .5]
  389.     [0 0 0]
  390.     [.5 0 0]
  391.     [0 .5 0]
  392.     [0 0 .5]
  393.     [0 .5 .5]
  394.     [.5 .5 0]
  395.     [.5 0 .5]
  396.     ]def
  397. /sci{dup /VdiCol ed colmap exch get aload pop setrgbcolor
  398.     /tcolor currentgray def}bd
  399. /stint{/tint ed currentrgbcolor
  400.     3{dup 0 eq{pop tint}if 3 1 roll}repeat setrgbcolor}bd
  401.  
  402. end
  403. /vpdict 1 dict def
  404. systemdict /setpacking known{svp setpacking}if
  405. %%EndProlog
  406.  
  407. save
  408.     /Times-Roman findfont 12 scalefont setfont newpath 72 700 moveto
  409.     (GEM PostScript preamble loaded.)show
  410.     newpath 72 680 moveto vmstatus exch sub 10 string cvs show
  411.     ( bytes of VM available.)show showpage pop
  412. restore
  413.  
  414. %%EOF
  415.