🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.postscript
Article #6157

Re: printing captured Mac PostScript files

#6157
From: Bengt Lidgard
Date: Thu, 30 May 1991 15:04
1472 lines
27347 bytes
In article <1991May28.173012.17306@magnus.acs.ohio-state.edu> jprice@magnus.acs.ohio-state.edu (Jeffrey R Price) writes:
>
>When the Command-F file prints I get the error:
>%%[ Error: undefined; OffendingCommand: md ]%%

md is a dictionnary

>I called Adobe and they werre no help.  PC support said "It won't work
>because of some 8-bit problem".  Mac support said "It should work".

It works! But Apples laserprep is very strange.... (bugs bugs & more bugs)

Send this file to the printer first. It will become resident.
All Cmd-F files shall work in the future.
This program is a modified laserprep from apple. Since their blasting
junk doesn't work I feel free to redistribute something that does.
BTW some comments will appear on your standard outputfile.
Tell me how things work out,

Bengt

------------------------- cut here ------------------------------------------
%!
%%BeginProcSet: "(AppleDict md)" 68 0
(Start\n) print flush
userdict /md known
	{
	(AppleDict already loaded\n) print (End\n) print flush stop
	}if
serverdict begin 0 exitserver
/sc 
	{
	60 45 
		{
		abs exch abs 2 copy add 1 gt
			{
			1.0 sub dup mul exch 1.0 sub dup mul add 1.0 sub
			}
			{
			dup mul exch dup mul add 1.0 exch sub
			}
		ifelse
		}setscreen
	} bind def statusdict begin product(LaserWriter II)anchorsearch end
	{
	pop pop/letter [/letter load /exec load /sc load /exec load]cvx def/legal [/legal load /exec load /sc load /exec load]cvx def/a4 [/a4 load /exec load /sc load /exec load]cvx def/b5 [/b5 load /exec load /sc load /exec load]cvx def
	/lettersmall [/lettersmall load /exec load /sc load /exec load]cvx def/a4small [/a4small load /exec load /sc load /exec load]cvx def/note [/note load /exec load /sc load /exec load]cvx def
	}
	{
	pop
	}ifelse
systemdict/currentpacking known
	{
	currentpacking true setpacking
	}if
/LW
	{
	save statusdict/product get(LaserWriter)anchorsearch
	exch pop
		{
		length 0 eq
			{
			1
			}
			{
			2
			}ifelse
		}
		{
		0
		}ifelse exch restore
	}bind def
/LW+
	{
	LW 2 eq
	}bind def
/ok
	{
	systemdict/statusdict known dup
		{
		LW 0 gt and
		}if
	}bind def
/md 250 dict def md begin
/av 0 def
/T true def/F false def/mtx matrix def/s75 75 string def/s8 8 string def/s1 ( ) def/pxs 1 def/pys 1 def
1 0 mtx defaultmatrix dtransform exch atan/pa exch def/nlw .24 def/ppr [-32 -29.52 762 582.48] def
/pgs 1 def/por true def/xb 500 array def/so true def/tso true def/fillflag false def/pnm 1 def/fmv true def
/sfl false def/ma 0 def/invertflag false def/dbinvertflag false def/xflip false def/yflip false def/noflips true def/scaleby96 false def/fNote true def/fBitStretch true def
/fg (Rvd\001\001\000\000\177) def
/bdf
	{
	bind def
	}bind def
/xdf
	{
	exch def
	}bdf
/xl
	{
	neg exch neg translate
	}bdf
/fp
	{
	pnsh 0 ne pnsv 0 ne and
	}bdf
/nop
	{
	}bdf/lnop[/nop load]cvx bdf
/vrb[
{fp{fg 6 get 0 ne{gsave stroke grestore}{gsave 1 setlinewidth pnsh pnsv scale stroke grestore}ifelse}if newpath}bind
(.) print flush	
/eofill load
dup
/newpath load
2 index
dup
{clip newpath}bind
{}bind
dup
2 copy
]def
currentscreen/spf xdf/rot xdf/freq xdf
/doop
	{
	vrb exch get exec
	}bdf
/psu
	{
	/tso xdf /fNote xdf/fBitStretch xdf/scaleby96 xdf/yflip xdf/xflip xdf
	/invertflag xdf/dbinvertflag invertflag statusdict begin version cvr 47.0 ge product (LaserWriter) eq not and end invertflag and 
		{
		not
		}if def
	xflip yflip or
		{
		/noflips false def
		}if
	/pgs xdf 2 index .72 mul exch div/pys xdf div .72 mul/pxs xdf ppr astore pop/por xdf sn and/so xdf
	}bdf
/tab
	{
	statusdict /11x17 known
		{
		statusdict begin /11x17 load end
		}
		{
		statusdict /setpage known
			{
			statusdict begin 792 1224 1 setpage end
			}
			{
			statusdict /setpageparams known
				{
				statusdict begin 792 1224 0 1 setpageparams end
				}if
			}ifelse
		}ifelse
	}bdf
/txpose
	{
	fNote
		{
		smalls
		}
		{
		bigs
		}ifelse pgs get exec pxs pys scale ppr aload pop por
		{
		noflips
			{
			pop exch neg exch translate pop 1 -1 scale
			}if
		xflip yflip and
			{
			pop exch neg exch translate 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg translate
			}if 
		xflip yflip not and
			{
			pop exch neg exch translate pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 translate
			}if yflip xflip not and
			{
			ppr 1 get neg ppr 0 get neg translate
			}if
		}
		{
		noflips
			{
			translate pop pop 270 rotate 1 -1 scale
			}if xflip yflip and
			{
			translate pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg translate
			}if
		xflip yflip not and
			{
			translate pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 translate
			}if yflip xflip not and
			{
			translate pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 exch translate
			}if
		}ifelse
	scaleby96
		{
		ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy translate .96 dup scale neg exch neg exch translate
		}if
	}bdf
(.) print flush	
/fr
	{
	4 copy ppr aload pop 3 -1 roll add 3 1 roll exch add 6 2 roll 3 -1 roll
	sub 3 1 roll exch sub 3 -1 roll exch div 3 1 roll div exch scale pop pop xl
	}bdf
/obl
	{
		{
		0.212557 mul
		}
		{
		pop 0
		}ifelse
	}bdf
/sfd
	{
	ps fg 5 -1 roll get mul 100 div 0 ps 5 -1 roll obl ps neg 0 0 6a astore makefont setfont
	}bdf
/fnt
	{
	findfont sfd
	}bdf
/bt
	{
	sa 3 1 roll 3 index and put
	}bdf
/sa(\000\000\000\000\000\000\000\000\000\000)def
/fs
	{
	0 1 bt 1 2 bt 2 4 bt 3 8 bt 4 16 bt 5 32 bt 6 64 bt 7 128 bt sa exch 8 exch put
	}bdf
/mx1 matrix def
/mx2 matrix def
/mx3 matrix def
/bu
	{
	currentpoint currentgray currentlinewidth currentlinecap currentlinejoin currentdash exch aload length
	fg 5 sfl
		{
		1
		}
		{
		0
		}ifelse put pnsv pnsh
	2t aload pop 3a aload pop mx2 aload pop mx1 aload pop mtx currentmatrix aload pop
	mx3 aload pop ps pm restore/ps xdf mx3 astore pop
	}bdf
/bn
	{
	/pm save def mx3 setmatrix newpath 0 0 moveto ct dup 39 get 0 exch getinterval cvx exec
	mtx astore setmatrix mx1 astore pop mx2 astore pop 3a astore pop
	2t astore pop/pnsh xdf/pnsv xdf gw
	/sfl fg 5 get 0 ne def array astore exch setdash setlinejoin setlinecap
	setlinewidth setgray moveto
	}bdf
/fc
	{
	save vmstatus exch sub 50000 lt
		{
		(%%[|0|]%%)=print flush
		}if pop restore
	}bdf
/tc
	{
	32768 div add 3 1 roll 32768 div add 2t astore pop
	}bdf
/3a [0 0 0] def
/2t 2 array def
/tp
	{
	3a astore pop
	}bdf
/tt
	{
	mx2 currentmatrix pop currentpoint 2 copy 2t aload pop qa 2 copy translate 3a aload pop exch dup 0 eq
		{
		pop
		}
		{
		1 eq
			{
			-1 1
			}
			{
			1 -1
			}ifelse scale
		}ifelse rotate pop neg exch neg exch translate moveto
	}bdf
/te
	{
	mx2 setmatrix
	}bdf
/th
	{
	3 -1 roll div 3 1 roll exch div 2 copy mx1 scale pop scale/sfl true def
	}bdf
/tu
	{
	1 1 mx1 itransform scale/sfl false def
	}bdf
/ts
	{
	1 1 mx1 transform scale/sfl true def
	}bdf
/fz
	{
	/ps xdf
	}bdf
/dv
	{
	dup 0 ne
		{
		div
		}
		{
		pop
		}ifelse
	}bdf
(.) print flush	
/pop4
	{
	pop pop pop pop
	}bdf
/it
	{
	sfl
		{
		mx1 itransform
		}if
	}bdf
/gm
	{
	exch it moveto
	}bdf/rm
	{
	it rmoveto
	}bdf
/lm
	{
	currentpoint sfl
		{
		mx1 transform
		}if exch pop sub 0 exch it rmoveto
	}bdf
/fm
	{
	statusdict/manualfeed known
	}bdf
/se
	{
	statusdict exch/manualfeed exch put
	}bdf
/mf
	{
	dup/ma exch def 0 gt
		{
		fm se/t1 5 st ok ma 1 gt and
			{
			/t2 0 st/t3 0 st
			statusdict/manualfeedtimeout 3600 put
			}if
		}if
	}bdf
/jn
	{
	dup (document:) search
		{
		pop pop (Printing:) print
		}if = flush
	/statusdict where exch pop
		{
		statusdict exch /jobname exch put
		}if
	}bdf
/pen
	{
	pnm mul/pnsh xdf pnm mul/pnsv xdf pnsh setlinewidth
	}bdf
/min
	{
	2 copy gt
		{
		exch
		}if pop
	}bdf
/max
	{
	2 copy lt
		{
		exch
		}if pop
	}bdf
/dh
	{
	fg 6 1 put array astore dup 
		{
		1 pxs div mul exch
		}forall astore exch pop exch pop exch setdash
	}bdf
/ih[currentdash]def
/rh
	{
	fg 6 0 put ih aload pop setdash
	}bdf
/dl
	{
	gsave nlw pys div setlinewidth 0 setgray
	}bdf
/dlin
	{
	exch currentpoint currentlinewidth 2 div dup
	translate newpath moveto lineto currentpoint stroke grestore moveto
	}bdf
/lin
	{
	fg 6 get 0 ne
		{
		exch lineto currentpoint 0 doop moveto
		}
		{
		exch currentpoint/pnlv xdf/pnlh xdf gsave newpath/@1 xdf/@2 xdf fp
			{
			pnlh @2 lt
				{
				pnlv @1 ge
					{
					pnlh pnlv moveto @2 @1 lineto pnsh 0 rlineto
					0 pnsv rlineto pnlh pnsh add pnlv pnsv add lineto pnsh neg 0 rlineto
					}
					{
					pnlh pnlv moveto pnsh 0 rlineto @2 pnsh add @1 lineto 0 pnsv rlineto
					pnsh neg 0 rlineto pnlh pnlv pnsv add lineto
					}ifelse
				}
				{
				pnlv @1 gt
					{
					@2 @1 moveto pnsh 0 rlineto pnlh pnsh add pnlv lineto 0 pnsv rlineto
					pnsh neg 0 rlineto @2 @1 pnsv add lineto
					}
					{
					pnlh pnlv moveto pnsh 0 rlineto
					0 pnsv rlineto @2 pnsh add @1 pnsv add lineto pnsh neg 0 rlineto
					0 pnsv neg rlineto
					}ifelse
				}ifelse
			closepath fill
			}if @2 @1 grestore moveto
		}ifelse
	}bdf
(.) print flush	
/gw
	{
	/pnm fg 3 get fg 4 get div def
	}bdf
/lw
	{
	fg exch 4 exch put fg exch 3 exch put gw pnsv pnsh pen
	}bdf
/barc
	{
	/@1 xdf/@2 xdf/@3 xdf/@4 xdf/@5 xdf
	/@6 xdf/@7 xdf/@8 xdf gsave
	@5 @7 add 2 div @6 @8 add 2 div translate newpath 0 0 moveto
	@5 @7 sub @6 @8 sub mtx currentmatrix pop scale @1
		{
		newpath
		}if
	0 0 0.5 @4 @3 arc @4 @3 sub abs 360 ge
		{
		closepath
		}if
	mtx setmatrix @2 doop grestore
	}bdf
/ar
	{
	dup 0 eq barc
	}bdf
/ov
	{
	0 exch 360 exch true barc
	}bdf
/rc
	{
	/@t xdf currentpoint 6 2 roll newpath 4 copy 4 2 roll exch moveto
	6 -1 roll lineto lineto lineto closepath @t doop moveto
	}bdf
/mup
	{
	dup pnsh 2 div le exch pnsv 2 div le or
	}bdf
/rr
	{
	/@1 xdf 2. div/@2 xdf 2. div/@3 xdf
	/@4 xdf/@5 xdf/@6 xdf/@7 xdf
	@7 @5 eq @6 @4 eq @2 mup or or
		{
		@7 @6 @5 @4 @1 rc
		}
		{
		@4 @6 sub 2. div dup @2 lt
			{
			/@2 xdf
			}
			{
			pop
			}ifelse
		@5 @7 sub 2. div dup @2 lt
			{
			/@2 xdf
			}
			{
			pop
			}ifelse
		@1 0 eq
			{
			/@2 @2 pnsh 2 div 2 copy gt
				{
				sub def
				}
				{
				0 pop4
				}ifelse
			}if
		currentpoint newpath
		@4 @6 add 2. div @7 moveto
		@4 @7 @4 @5 @2 arcto pop4
		@4 @5 @6 @5 @2 arcto pop4
		@6 @5 @6 @7 @2 arcto pop4
		@6 @7 @4 @7 @2 arcto pop4
		closepath @1 doop moveto
		}ifelse
	}bdf
/pr
	{
	gsave newpath/pl
		{
		exch moveto/pl
			{
			exch lineto
			}def
		}def
	}bdf
(.) print flush	
/pl
	{
	exch lineto
	}bdf
/ep
	{
	dup 0 eq
		{
			{
			moveto
			}
			{
			exch lin
			}
			{
			}
			{
			(%%[|1|]%%)= flush
			}pathforall
		pop grestore
		}
		{
		doop grestore
		}ifelse currentpoint newpath moveto
	}bdf
/gr
	{
	64. div setgray
	}bdf
/pat
	{
	s8 copy pop 9.375 pa por not
		{
		90 add
		}if
		{
		1 add 4 mul cvi s8 exch get exch 1 add 4 mul cvi 7 sub bitshift 1 and
		}setscreen gr
	}bdf
/sg
	{
	freq rot/spf load setscreen gr
	}bdf
/dc
	{
	transform round .5 sub exch round .5 sub exch itransform
	}bdf
/sn
	{
	userdict/smooth4 known
	}bdf
/x8
	{
	3 bitshift
	}bdf
/x4
	{
	2 bitshift
	}bdf
/d4
	{
	-2 bitshift
	}bdf
/d8
	{
	-3 bitshift
	}bdf
/rb
	{
	15 add -4 bitshift 1 bitshift
	}bdf
/db
	{
	/@7 save def/@1 xdf/@2 xdf/@3 xdf/@4 xdf/@5 xdf/@6 @5 @3 4 add mul def
	dc translate scale/xdbit 1 1 idtransform abs/ydbit exch def abs def
		{
		0 0 1 ydbit add 1 10 rc clip
		}if
	@1 0 eq @1 4 eq or
		{
		1 setgray ydbit 0 1 ydbit add 1 2 rc
		}if
	@1 3 eq @1 7 eq or
		{
		1
		}
		{
		0
		}ifelse setgray/@9 @1 0 eq @1 1 eq @1 3 eq or or dbinvertflag xor def/@13 @6 def
	@2 fBitStretch or
		{
		/@10 @4 x4 def/@11 @3 x4 def/@12 @10 rb def/@13 @12 @11 mul def/@15 1 1 dtransform abs/calcY 1 index def round cvi/@14 exch def
		abs/calcX 1 index def round cvi scaleby96 not
			{
			1 add
			}if def/@16 @15 rb def/@17 @16 @14 mul def
		}if
	sn @13 60000 lt and @2 fBitStretch or and
		{
		mtx currentmatrix dup 1 get exch 2 get 0. eq exch 0. eq and @17 60000 lt and fBitStretch and
			{
			@16 3 bitshift @14 @9 [calcX 0 0 calcY 0 0]
				{
				@17 string @13 string
				currentfile @6 string readhexstring pop 1 index @4 @3 @5 @12 @2 smooth4
				@10 @11 @12 dup string 5 index @15 @14 @16 dup string stretch
				}imagemask
			}
			{
			@12 x8 @11 @9 [@10 0 0 @11 0 0]
				{
				@13 string
				currentfile @6 string readhexstring pop 1 index @4 @3 @5 @12 @2 smooth4
				}imagemask
			}ifelse
		}
		{
		@5 3 bitshift @3 4 add @9 [@4 0 0 @3 0 2]
			{
			currentfile @6 string readhexstring pop
			}imagemask
		}ifelse
	@7 restore
	}bdf
(.) print flush	
/multibit
	{
	/mbdeep exch def/mbY exch def/mbX exch def
	save mbX mbY mbdeep[mbX 0 0 mbY 0 0]
		{
		currentfile picstr readhexstring pop
		}image
	restore
	}bdf
/wd 16 dict def
/mfont 14 dict def
/mdf
	{
	mfont wcheck not
		{
		/mfont 14 dict def
		}if mfont begin xdf end
	}bdf
/cf
	{
		{
		1 index/FID ne
			{
			def
			}
			{
			pop pop
			}ifelse
		}forall
	}bdf/rf
	{
	/@1 exch def/@2 exch def
	FontDirectory @2 known
		{
		cleartomark pop
		}
		{
		findfont dup begin dup length @1 add dict begin
		cf
			{
			/Encoding macvec def
			}
			{
			Encoding dup length array copy/Encoding exch def
			counttomark 2 idiv
				{
				Encoding 3 1 roll put
				}repeat
			}ifelse
		pop
		exec currentdict end end @2 exch definefont pop
		}ifelse
	}bdf
/bmbc
	{
	exch begin wd begin
	/cr xdf
	save
	CharTable cr 6 mul 6 getinterval
		{
		}forall
	/bitheight xdf/bitwidth xdf
	.96 div/width xdf
	Gkernmax add/XOffset xdf Gdescent add/YOffset xdf/rowbytes xdf
	rowbytes 255 eq
		{
		0 0 0 0 0 0 setcachedevice
		}
		{
		Gnormsize dup scale
		width 0 XOffset YOffset bitwidth XOffset add bitheight YOffset add
		setcachedevice
		rowbytes 0 ne
			{
			XOffset YOffset translate newpath 0 0 moveto
			bitwidth bitheight scale
			sn
				{
				/xSmt bitwidth x4 def
				/ySmt bitheight x4 def
				/rSmt xSmt rb def
				rSmt x8 ySmt true
				[xSmt 0 0 ySmt neg 0 ySmt]
					{
					rSmt ySmt mul string CharData cr get
					1 index bitwidth bitheight rowbytes rSmt tso smooth4
					}
				}
				{
				rowbytes 3 bitshift bitheight 4 add true
				[bitwidth 0 0 bitheight neg 0 bitheight 2 add]
					{
					CharData cr get
					}
				}ifelse
			imagemask
			}if
		}ifelse
	restore
	end end
	}bdf
(.) print flush	
/bb
	{
	.96 exch div/Gnormsize mdf 2 index
	/Gkernmax mdf 1 index/Gdescent mdf
	3 index div 4 1 roll
	2 index div 1. 5 2 roll
	exch div 4 1 roll
	4 array astore/FontBBox mdf
	}bdf
/cdf
	{
	mfont/CharData get 3 1 roll put
	}bdf
/bf
	{
	mfont begin
	/FontType 3 def
	/FontMatrix [1 0 0 1 0 0] def
	/Encoding macvec def
	/BuildChar/bmbc load def
	end
	mfont definefont pop
	}bdf
/wi LW 1 eq
	{
		{
		gsave 0 0 0 0 0 0 0 0 moveto lineto lineto lineto closepath clip stringwidth grestore
		}bind
	}
	{
	/stringwidth load
	}ifelse def
/aps
	{
	0 get 124 eq
	}bdf
/xc
	{
	s75 cvs dup
	}bdf
/xp
	{
	put cvn
	}bdf
/scs
	{
	xc 3 67 put dup 0 95 xp
	}bdf
/sos
	{
	xc 3 79 xp
	}bdf
/sbs
	{
	xc 1 66 xp
	}bdf
/sis
	{
	xc 2 73 xp
	}bdf
/sob
	{
	xc 2 79 xp
	}bdf
/sss
	{
	xc 4 83 xp
	}bdf
/dd
	{
	exch 1 index add 3 1 roll add exch
	}bdf
/smc
	{
	moveto dup show
	}bdf
/kwn
	{
	FontDirectory 1 index known
		{
		findfont exch pop
		}
	}bdf
/gl
	{
	1 currentgray sub setgray
	}bdf
/mm
	{
	/mfont 10 dict def mfont begin
	/FontMatrix [1 0 0 1 0 0] def
	/FontType 3 def
	/Encoding macvec def
	/df 4 index findfont def
	/FontBBox [0 0 1 1] def
	/xda xdf/mbc xdf
	/BuildChar
		{
		wd begin/cr xdf/fd xdf/cs s1 dup 0 cr put def fd/mbc get exec end
		}def
	exec end mfont definefont
	}bdf
(.) print flush	
/ac
	{
	dup scs kwn
		{
		exch findfont dup length 1 add dict begin
			{
			1 index/FID ne 2 index/UniqueID ne and
				{
				def
				}
				{
				pop pop
				}ifelse
			}forall
		fmv
			{
			/Encoding macvec def
			}if/StrokeWidth nlw 1000 mul pys div ps div dup 12 lt
			{
			pop 12
			}if def
		/PaintType 2 def currentdict end definefont
		}ifelse
	}bdf
/mb
	{
	dup sbs kwn
		{
		exch
			{
			pop
			}
			{
			bbc
			}
			{
			}mm
		}ifelse sfd
	}bdf
/mo
	{
	dup sos kwn
		{
		exch
			{
			pop
			}
			{
			boc
			}
			{
			}mm
		}ifelse sfd
	}bdf
/ms
	{
	dup sss kwn
		{
		exch
			{
			pop
			}
			{
			bsc
			}
			{
			}mm
		}ifelse sfd
	}bdf
/ou
	{
	dup sos kwn
		{
		exch dup ac pop
			{
			scs findfont /df2 xdf
			}
			{
			aoc
			}
			{
			}mm
		}ifelse sfd
	}bdf
/su
	{
	dup sss kwn
		{
		exch dup ac pop
			{
			scs findfont /df2 xdf
			}
			{
			asc
			}
			{
			}mm
		}ifelse sfd
	}bdf
/ao
	{
	/fmv true def ou
	}bdf/as
	{
	/fmv true def su
	}bdf
/vo
	{
	/fmv false def ou
	}bdf/vs
	{
	/fmv false def su
	}bdf
(.) print flush	
/bbc
	{
	/da .03 def fd/df get setfont
	gsave cs wi 1 index 0 ne
		{
		exch da add exch
		}if grestore setcharwidth
	cs 0 0 smc da 0 smc da da smc 0 da moveto show
	}bdf
/boc
	{
	/da 1 ps div def fd/df get setfont
	gsave cs wi 1 index 0 ne
		{
		exch da add exch
		}if grestore setcharwidth
	cs 0 0 smc da 0 smc da da smc 0 da smc gl da 2. div dup moveto show
	}bdf
/bsc
	{
	/da 1 ps div def
	/ds .05 def/da2 da 2. div def fd/df get setfont
	gsave cs wi 1 index 0 ne
		{
		exch ds add da2 add exch
		}if grestore setcharwidth
	cs ds da2 add .01 add 0 smc 0 ds da2 sub translate 0 0 smc
	da 0 smc da da smc 0 da smc gl da 2. div dup moveto show
	}bdf
/aoc
	{
	fd/df get setfont
	gsave cs wi grestore setcharwidth
	gl cs 0 0 smc fd/df2 get setfont gl 0 0 moveto show
	}bdf
/asc
	{
	/da .05 def fd/df get setfont
	gsave cs wi 1 index 0 ne
		{
		exch da add exch
		}if grestore setcharwidth
	cs da .01 add 0 smc 0 da translate gl 0 0 smc gl fd/df2 get setfont 0 0 moveto show
	}bdf
/st
	{
	1000 mul usertime add dup 2147483647 gt
		{
		2147483647 sub
		}if def
	}bdf
/the
	{
	usertime sub dup 0 lt exch -2147483648 gt and
	}bdf
/6a 6 array def
/2a 2 array def
/3q 3 array def
/qs
	{
	3 -1 roll sub exch 3 -1 roll sub exch
	}bdf
/qa
	{
	3 -1 roll add exch 3 -1 roll add exch
	}bdf
/qm
	{
	3 -1 roll 1 index mul 3 1 roll mul
	}bdf
/qn
	{
	6a exch get mul
	}bdf
/qA .166667 def/qB .833333 def/qC .5 def
/qx
	{
	6a astore pop
	qA 0 qn qB 2 qn add   qA 1 qn qB 3 qn add
	qB 2 qn qA 4 qn add   qB 3 qn qA 5 qn add
	qC 2 qn qC 4 qn add   qC 3 qn qC 5 qn add
	}bdf
/qp
	{
	6 copy 12 -2 roll pop pop
	}bdf
/qc
	{
	exch qp qx curveto
	}bdf
/qi
	{
		{
		exch 4 copy 2a astore aload pop qa .5 qm newpath moveto
		}
		{
		exch 2 copy 6 -2 roll 2 qm qs 4 2 roll
		}ifelse
	}bdf
/qq
	{
		{
		qc 2a aload pop qx curveto
		}
		{
		exch 4 copy qs qa qx curveto
		}ifelse
	}bdf
(.) print flush	
/pt
	{
	currentpoint newpath moveto
	}bdf
/qf
	{
	/fillflag true def
	}bdf
/ec
	{
	1 and 0 ne
		{
		0 doop
		}if grestore currentpoint newpath moveto/fillflag false def
	}bdf
/eu
	{
	currentpoint fp
		{
		0 ep
		}
		{
		grestore newpath
		}ifelse moveto/fillflag false def
	}bdf
/bp
	{
	currentpoint newpath 2 copy moveto
	}bdf
/ef
	{
	gsave fillflag
		{
		gsave eofill grestore
		}if
	}bdf
/sm
	{
	0 exch
		{
		@1 eq
			{
			1 add
			}if
		}forall
	}bdf
/lshow
	{
	4 1 roll exch/@1 exch def
		{
		1 index wi pop sub 1 index sm dv 0 @1 4 -1 roll widthshow
		}
		{
		1 index wi pop sub
		1 index dup sm 10 mul exch length 1 sub add dv dup 10. mul 0 @1 4 -1 roll 0 6 -1 roll awidthshow
		}ifelse
	}bdf
/setTxMode
	{
	sa 9 2 index put 3 eq
		{
		1
		}
		{
		0
		}ifelse setgray
	}bdf
/SwToSym
	{
		{
		}mark false/Symbol/|______Symbol 0 rf 0 sa 6 get 0 ne
		{
		pop 1
		}
		{
		sa 7 get 0 eq
			{
			pop 2
			}if
		}ifelse
	sa 1 get 0 ne/|______Symbol
	sa 4 get 0 ne
		{
		vs
		}
		{
		sa 3 get 0 ne
			{
			vo
			}
			{
			fnt
			}ifelse
		}ifelse
	}bdf
/mc
	{
	0 3 1 roll transform neg exch pop
	}bdf
/ul
	{
	dup 0 ne sa 2 get 0 ne and
		{
		gsave 0 0
		/UnderlinePosition kif
			{
			mc
			}
			{
			ps -10 div
			}ifelse/UnderlineThickness kif
			{
			mc
			}
			{
			ps 15 div
			}ifelse
		abs setlinewidth neg rmoveto
		sa 4 get 0 ne
			{
			gsave currentlinewidth 2. div dup rmoveto currentpoint newpath moveto
			2 copy rlineto stroke grestore
			}if
		sa 3 get sa 4 get or 0 ne
			{
			gsave gl 2 copy rlineto stroke grestore rlineto strokepath nlw pys div setlinewidth
			}
			{
			rlineto
			}ifelse
		stroke grestore
		}
		{
		pop
		}ifelse
	}bdf
(.) print flush	
/sgt
	{
	2 copy known
		{
		get true
		}
		{
		pop pop false
		}ifelse
	}bdf
/kif
	{
	currentfont dup/FontMatrix get exch/FontInfo sgt
		{
		true
		}
		{
		currentfont/df sgt
			{
			dup/FontInfo sgt
				{
				3 1 roll/FontMatrix get mtx concatmatrix exch true
				}
				{
				pop pop pop false
				}
			ifelse
			}
			{
			pop pop false
			}ifelse
		}ifelse
		{
		3 -1 roll sgt
			{
			exch true
			}
			{
			pop false
			}ifelse
		}
		{
		false
		}ifelse
	}bdf
(.) print flush	
/blank/Times-Roman findfont/CharStrings get/space get def
/macvec 256 array def
/NUL/SOH/STX/ETX/EOT/ENQ/ACK/BEL/BS/HT/LF/VT/FF/CR/SO/SI
/DLE/DC1/DC2/DC3/DC4/NAK/SYN/ETB/CAN/EM/SUB/ESC/FS/GS/RS/US
macvec 0 32 getinterval astore pop
macvec 32/Times-Roman findfont/Encoding get
32 96 getinterval putinterval macvec dup 39/quotesingle put 96/grave put
(.) print flush	
/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis/Udieresis/aacute
/agrave/acircumflex/adieresis/atilde
/aring/ccedilla/eacute/egrave
/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde/oacute
/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex/udieresis
/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
/registered/copyright/trademark/acute/dieresis/notequal/AE/Oslash
/infinity/plusminus/lessequal/greaterequal/yen/mu/partialdiff/summation
/product/pi/integral/ordfeminine/ordmasculine/Omega/ae/oslash
/questiondown/exclamdown/logicalnot/radical/florin/approxequal/Delta
/guillemotleft/guillemotright/ellipsis/blank/Agrave/Atilde/Otilde/OE/oe
/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide/lozenge
/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright/fi/fl
/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex/Idieresis
/Igrave/Oacute/Ocircumflex/apple/Ograve/Uacute/Ucircumflex/Ugrave/dotlessi
/circumflex/tilde/macron/breve/dotaccent/ring/cedilla/hungarumlaut/ogonek/caron
(.) print flush	
macvec 128 128 getinterval astore pop
	{
	}mark true/Courier/|______Courier 0 rf
	{
	/Metrics 21 dict begin/zero 600 def/one 600 def/two 600 def/three 600 def/four 600 def/five 600 def/six 600 def/seven 600 def/eight 600 def
	/nine 600 def/comma 600 def/period 600 def/dollar 600 def/numbersign 600 def/percent 600 def/plus 600 def/hyphen 600 def/E 600 def/parenleft 600 def/parenright 600 def/space 600 def
	currentdict end def currentdict/UniqueID known
		{
		/UniqueID 16#800000 def
		}if/FontBBox FontBBox 4 array astore def
	}mark true/Helvetica/|______Seattle 1 rf
(.) print flush	
/oldsettransfer/settransfer load def
/concatprocs
	{
	/proc2 exch cvlit def/proc1 exch cvlit def/newproc proc1 length proc2 length add array def
	newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx
	}def
/settransfer
	{
	currenttransfer concatprocs oldsettransfer
	}def
(.) print flush	
/PaintBlack
	{
		{
		1 exch sub
		}settransfer gsave newpath clippath 1 setgray fill grestore
	}def
(.) print flush	
/od
	{
	(Rvd\001\001\000\000\177) fg copy pop txpose
	1 0 mtx defaultmatrix dtransform exch atan/pa exch def
	newpath clippath mark
		{
		transform
			{
			itransform moveto
			}
		}
		{
		transform
			{
			itransform lineto
			}
		}
		{
		6 -2 roll transform 6 -2 roll transform 6 -2 roll transform
			{
			itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto
			}
		}
		{
			{
			closepath
			}
		}pathforall newpath counttomark array astore/gc xdf pop ct 39 0 put
	10 fz 0 fs 2 F/|______Courier fnt invertflag
		{
		PaintBlack
		}if
	}bdf
/cd
	{
	(\n) print (Finished!) = flush
	}bdf
/op
	{
	/sfl false def/pm save def
	}bdf
(.) print flush	
/pgcnt 0 def
/cp
	{
	not
		{
		userdict/#copies 0 put
		}if ma 0 gt
		{
			{
			t1 the
				{
				exit
				}if
			}loop
		}if
		{
		copypage
		}
		{
		showpage
		}ifelse pm restore
	pgcnt 1 add dup /pgcnt exch def = flush
	}bdf
/px
	{
	0 3 1 roll tp tt
	}bdf
/psb
	{
	/us save def
	}bdf
/pse
	{
	us restore
	}bdf
/ct 40 string def
/nc
	{
	currentpoint initclip newpath gc
		{
		dup type dup/arraytype eq exch/packedarraytype eq or
			{
			exec
			}if
		}
	forall clip newpath moveto
	}def
/kp
	{
	ct 0 2 index length 2 index 39 2 index put getinterval copy cvx exec mx3 currentmatrix pop
	}bdf
/av 68 def
end
LW 1 eq userdict/a4small known not and
	{
	/a4small
	[[300 72 div 0 0 -300 72 div -120 3381]
	280 3255
		{
		statusdict/jobstate (printing) put 0 setblink
		margins
		exch 196 add exch 304 add 8 div round cvi frametoroket
		statusdict/jobstate (busy) put
		1 setblink
		}
	/framedevice load
	60 45
		{
		dup mul exch dup mul add 1.0 exch sub
		}/setscreen load
		{
		}/settransfer load/initgraphics load/erasepage load]cvx
	statusdict begin bind end readonly def
	}if
md begin/bigs[lnop userdict/letter known{/letter load}{lnop}ifelse userdict/legal known{/legal load}{lnop}ifelse userdict/a4 known{/a4 load}{lnop}ifelse userdict/b5 known{/b5 load}{lnop}ifelse 
	lnop lnop lnop /tab load]def
/smalls[lnop userdict/lettersmall known{/lettersmall load}{userdict/note known{/note load}{lnop}ifelse}ifelse
	userdict/legal known{/legal load}{lnop}ifelse userdict/a4small known{/a4small load}{lnop}ifelse 
	userdict/b5 known{/b5 load}{userdict/note known{/note load}{lnop}ifelse}ifelse lnop lnop lnop /tab load]def end
systemdict/currentpacking known
	{
	setpacking
	}if
(\n) print flush	
(End\n) print flush
%%EndProcSet
%%EOF
Technical Details
Message-ID: <1991May30.150410.29769@kth.se>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sun-barr!lll-winken!uunet!europa.asd.contel.com!gatech!bloom-beacon!eru!hagbard!sunic!kth.se!news
References: <1991May28.173012.17306@magnus.acs.ohio-state.edu>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sun-barr!lll-winken!uunet!europa.asd.contel.com!gatech!bloom-beacon!eru!hagbard!sunic!kth.se!news
From: f85-bli@byse.nada.kth.se (Bengt Lidgard)
Newsgroups: comp.lang.postscript,comp.sys.mac.misc
Subject: Re: printing captured Mac PostScript files
Message-ID: <1991May30.150410.29769@kth.se>
Date: 30 May 91 15:04:10 GMT
References: <1991May28.173012.17306@magnus.acs.ohio-state.edu>
Organization: Royal Institute of Technology, Stockholm, Sweden
Lines: 1472