%!IBM Personal Pageprinter (4216) Adapter Program V1.0
%%DocumentFonts: Times-Roman
%%Creator: Axiom
%%CreationDate: today
%%Pages: 1
%%processing (hard) limit: 250 pts or 500 values for the operand stack.
%%EndComments

%------------------------------- prologue -------------------------------%
%-------------------------- support procedures --------------------------%

%--------- first create user dictionary with 100 entries max ------------%
%          (number can be changed to accomodate definitions)             %

100	dict	begin		%% using 100 entries in top level dictionary

/FontHeight     12 def

/inch
        {       72 mul }
        def

% yVal and hVal are necessary because the Xwindow display origin
% is at the upper left corner, while the postscript display
% origin is at the lower left hand corner.

/yVal		%% get Y value -- make upper left corner origin
        {       maxY sub abs }	%% maxY is viewWindow height
        def

/hVal		%% get H value -- used for displaying title text
        {       maxH sub abs }	%% maxH is viewWindow height+titleWindow height
        def

% loads in the font

/loadFont
        {       /Times-Roman findfont FontHeight scalefont setfont }
        def

% draws a rectangle with input operand: 
%		height
%		width
% notice that this function does not "draw" or ink the rectangle.
/drawRect
	{	1 index 1 add 0 rlineto		%% draw first side
                0 exch 1 add neg rlineto	%% draw second side
                1 add neg 0 rlineto		%% draw third side
                closepath }			%% draw fourth side
        def

% create a rectangle with input operand in the view window: 
%		y
%		x
%		height
%		width
% notice that this function does not "draw" or ink the rectangle.
/rectangle
        {       yVal moveto			%% set currentpoint for line
		drawRect }			%% draws the rectangle
        def

% These are global variables that every draw procedure uses
% THe operand should be as follows:
%		viewWindow width
%		viewWindow height
%		title height
/setDim
        {       /maxX exch def			%% width of display
                /maxY exch def			%% height of display
		/titleH exch def		%% height of title
		/maxH maxY titleH add def	%% height of display + title
        } def

%-------------------------- major procedures --------------------------%

/title		%% draws a rectangle around the title of picture
	{	gsave
		newpath
		moveto				%% lower left of title
                titleH 1 add 0 exch rlineto	%% draw first side
                1 add 0 rlineto			%% draw second side
                1 add neg 0 exch rlineto
		begin installGC stroke end	%% draw third side
		grestore }
	def

/drawFrame      %% draw display frame
        {	gsave
                newpath
                maxX maxY 0 0 rectangle
		begin installGC stroke end
                grestore }
        def

% updates the foreground color of existing graphics-context dictionary:
%		foreground color
%		dictionary name
/setForeground
	{	/FGcolor exch put }
	def

% updates the background color of existing graphics-context dictionary:
%		background color
%		dictionary name
/setBackground
	{	/BGcolor exch put }
	def

% updates the line width, line style, cap style, join style of
% existing graphics-context dictionary:
%		dictionary name
%		join style
%		cap style
%		line width
/setLineAttributes
	{	begin
		/JoinStyle exch def
		/CapStyle  exch def
		/LineWidth exch def
		end }
	def

% creates a graphics context dictionary with the following information:
%		/dictionary name
%		foreground color
%		background color
%		line width
%		cap style
%		join style
% this creates different graphical contexts for different drawing functions.
/makeDict
	{	5 dict 2 copy def begin	pop %% with dict name on top of stack
		/FGcolor   exch def	%% define drawing attributes
		/BGcolor   exch def	%% not heavily used
		/LineWidth exch def
		/CapStyle  exch def
		/JoinStyle exch def
		end }
	def

% makes the current dictionary attributes effective
% this function takes the values in the current dictionary to set the context
% these are the values currently being used: foreground, cap, join, and width
/installGC
	{
		FGcolor currentgray ne
		{FGcolor setgray} if		%% foreground color
		CapStyle currentlinecap ne
		{CapStyle setlinecap} if	%% cap style
		JoinStyle currentlinejoin ne
		{JoinStyle setlinejoin} if	%% join style
		LineWidth currentlinewidth ne
		{LineWidth setlinewidth} if }	%% line width
	def

% operand stack configuration in order to use psDrawLine:
%		psDrawLine
%		y0
%		x0
%		y1
%		x1
%		graphics-context dictionary
% this draws a line from (x0, y0) to (x1, y1).

/psDrawLine
        {	gsave
                newpath
                yVal moveto
                yVal lineto
		begin installGC stroke end
		grestore }
        def

% operand stack configuration in order to use psFillArc:
%		psFillArc
%		y center of rectangle
%		x center of rectangle
%		angle2
%		angle1
%		width
%		height
%		y
%		x
%		graphics-context dictionary
% this draws and fills an arc whose origin is at x, y, and whose width
% and height specifies the rectangle which encases the arc.
% Origin is at upper left corner of rectangle.
% This function uses "scale" to make cricles and ellipses.
/psFillArc
        {	gsave
                newpath
		yVal moveto
                /sfactor 4 index 4 index div def
                1 sfactor scale
                6 5 roll			%%	 x on top of stack
                3 index 2 div add               %% define x origin
                6 5 roll			%%	 y on top of stack
                6 5 roll			%%	 h on top of stack
                2 div add yVal sfactor div      %% define y origin
                5 4 roll			%%	 w on top of stack
                2 div                           %% define radius
                5 3 roll			%%	 a1 a2 now on top
                1 index add
                arcn                            %% draw clockwise arc
                begin installGC fill end	%% fills with foreground color
                grestore }
        def

%-------------------------- script --------------------------%

% 1 inch 1 inch translate

   mark					%% mark bottom of our stack

	0	0	1
	1072693248	0	/globalGC1	makeDict
	0	0	1
	1072693248	0	/globalGC2	makeDict
	0	0	1
	1072693248	0	/trashGC	makeDict
	0	0	1
	1072693248	0	/globGC	makeDict
	0	0	1
	1072693248	0	/anotherGC	makeDict
	0	0	1
	1072693248	0	/graphGC	makeDict
	0	0	1
	1072693248	0	/unitGC	makeDict

    gsave	% save graphics state for clipping path

	24	259	256	setDim
	maxX maxY	0 0	rectangle	clip	% set clip path

	globalGC1	256	129	0	129	psDrawLine
	globalGC1	127	259	127	0	psDrawLine
	globalGC1	11 147	3 3	0 360	12 148	psFillArc
	globalGC1	12	148	12	148	psDrawLine
	globalGC1	11 147	3 3	0 360	12 148	psFillArc
	globalGC1	17	149	12	148	psDrawLine
	globalGC1	16 148	3 3	0 360	17 149	psFillArc
	globalGC1	22	150	17	149	psDrawLine
	globalGC1	21 149	3 3	0 360	22 150	psFillArc
	globalGC1	27	151	22	150	psDrawLine
	globalGC1	26 150	3 3	0 360	27 151	psFillArc
	globalGC1	32	152	27	151	psDrawLine
	globalGC1	31 151	3 3	0 360	32 152	psFillArc
	globalGC1	36	153	32	152	psDrawLine
	globalGC1	35 152	3 3	0 360	36 153	psFillArc
	globalGC1	41	154	36	153	psDrawLine
	globalGC1	40 153	3 3	0 360	41 154	psFillArc
	globalGC1	46	156	41	154	psDrawLine
	globalGC1	45 155	3 3	0 360	46 156	psFillArc
	globalGC1	51	157	46	156	psDrawLine
	globalGC1	50 156	3 3	0 360	51 157	psFillArc
	globalGC1	56	159	51	157	psDrawLine
	globalGC1	55 158	3 3	0 360	56 159	psFillArc
	globalGC1	60	161	56	159	psDrawLine
	globalGC1	59 160	3 3	0 360	60 161	psFillArc
	globalGC1	65	164	60	161	psDrawLine
	globalGC1	64 163	3 3	0 360	65 164	psFillArc
	globalGC1	70	167	65	164	psDrawLine
	globalGC1	69 166	3 3	0 360	70 167	psFillArc
	globalGC1	75	170	70	167	psDrawLine
	globalGC1	74 169	3 3	0 360	75 170	psFillArc
	globalGC1	80	174	75	170	psDrawLine
	globalGC1	79 173	3 3	0 360	80 174	psFillArc
	globalGC1	84	179	80	174	psDrawLine
	globalGC1	83 178	3 3	0 360	84 179	psFillArc
	globalGC1	89	184	84	179	psDrawLine
	globalGC1	88 183	3 3	0 360	89 184	psFillArc
	globalGC1	94	192	89	184	psDrawLine
	globalGC1	93 191	3 3	0 360	94 192	psFillArc
	globalGC1	99	201	94	192	psDrawLine
	globalGC1	98 200	3 3	0 360	99 201	psFillArc
	globalGC1	104	212	99	201	psDrawLine
	globalGC1	103 211	3 3	0 360	104 212	psFillArc
	globalGC1	108	227	104	212	psDrawLine
	globalGC1	107 226	3 3	0 360	108 227	psFillArc
	globalGC1	113	244	108	227	psDrawLine
	globalGC1	112 243	3 3	0 360	113 244	psFillArc
	globalGC1	118	243	113	244	psDrawLine
	globalGC1	117 242	3 3	0 360	118 243	psFillArc
	globalGC1	123	53	118	243	psDrawLine
	globalGC1	122 52	3 3	0 360	123 53	psFillArc
	globalGC1	127	35	123	53	psDrawLine
	globalGC1	126 34	3 3	0 360	127 35	psFillArc
	globalGC1	132	205	127	35	psDrawLine
	globalGC1	131 204	3 3	0 360	132 205	psFillArc
	globalGC1	137	15	132	205	psDrawLine
	globalGC1	136 14	3 3	0 360	137 15	psFillArc
	globalGC1	142	14	137	15	psDrawLine
	globalGC1	141 13	3 3	0 360	142 14	psFillArc
	globalGC1	147	31	142	14	psDrawLine
	globalGC1	146 30	3 3	0 360	147 31	psFillArc
	globalGC1	151	46	147	31	psDrawLine
	globalGC1	150 45	3 3	0 360	151 46	psFillArc
	globalGC1	156	57	151	46	psDrawLine
	globalGC1	155 56	3 3	0 360	156 57	psFillArc
	globalGC1	161	66	156	57	psDrawLine
	globalGC1	160 65	3 3	0 360	161 66	psFillArc
	globalGC1	166	74	161	66	psDrawLine
	globalGC1	165 73	3 3	0 360	166 74	psFillArc
	globalGC1	171	79	166	74	psDrawLine
	globalGC1	170 78	3 3	0 360	171 79	psFillArc
	globalGC1	175	84	171	79	psDrawLine
	globalGC1	174 83	3 3	0 360	175 84	psFillArc
	globalGC1	180	88	175	84	psDrawLine
	globalGC1	179 87	3 3	0 360	180 88	psFillArc
	globalGC1	185	91	180	88	psDrawLine
	globalGC1	184 90	3 3	0 360	185 91	psFillArc
	globalGC1	190	94	185	91	psDrawLine
	globalGC1	189 93	3 3	0 360	190 94	psFillArc
	globalGC1	195	97	190	94	psDrawLine
	globalGC1	194 96	3 3	0 360	195 97	psFillArc
	globalGC1	199	99	195	97	psDrawLine
	globalGC1	198 98	3 3	0 360	199 99	psFillArc
	globalGC1	204	100	199	99	psDrawLine
	globalGC1	203 99	3 3	0 360	204 100	psFillArc
	globalGC1	209	102	204	100	psDrawLine
	globalGC1	208 101	3 3	0 360	209 102	psFillArc
	globalGC1	214	104	209	102	psDrawLine
	globalGC1	213 103	3 3	0 360	214 104	psFillArc
	globalGC1	219	105	214	104	psDrawLine
	globalGC1	218 104	3 3	0 360	219 105	psFillArc
	globalGC1	223	106	219	105	psDrawLine
	globalGC1	222 105	3 3	0 360	223 106	psFillArc
	globalGC1	228	107	223	106	psDrawLine
	globalGC1	227 106	3 3	0 360	228 107	psFillArc
	globalGC1	233	108	228	107	psDrawLine
	globalGC1	232 107	3 3	0 360	233 108	psFillArc
	globalGC1	238	109	233	108	psDrawLine
	globalGC1	237 108	3 3	0 360	238 109	psFillArc
	globalGC1	243	110	238	109	psDrawLine
	globalGC1	242 109	3 3	0 360	243 110	psFillArc

    grestore	% restore graphics state


   cleartomark					%% clearing operand stack

end		%% pops mainDict from dictionary stack

showpage

%-------------------------- end --------------------------%