diff --git a/changelog b/changelog
index 72812f4..e9e93ba 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20120118 tpd src/axiom-website/patches.html 20120118.01.tpd.patch
+20120118 tpd src/input/pasta.input graphics test cases
 20120113 rhx src/axiom-website/patches.html 20120113.01.rhx.patch
 20121113 rhx src/input/Makefile add i2e.input
 20120113 rhx src/input/i2e.input demo InputForm to Expression(Integer)
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 4765769..544ce7f 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3763,5 +3763,7 @@ books/bookvol9 treeshake compiler<br/>
 books/bookvol9 treeshake compiler<br/>
 <a href="patches/20120113.01.rhx.patch">20120113.01.rhx.patch</a>
 src/input/i2e.input demo InputForm to Expression(Integer)<br/>
+<a href="patches/20120118.01.tpd.patch">20120118.01.tpd.patch</a>
+src/input/pasta.input graphics test cases<br/>
  </body>
 </html>
diff --git a/src/input/pasta.input.pamphlet b/src/input/pasta.input.pamphlet
new file mode 100644
index 0000000..cf534b1
--- /dev/null
+++ b/src/input/pasta.input.pamphlet
@@ -0,0 +1,471 @@
+\documentclass{article}
+\usepackage{axiom}
+\setlength{\textwidth}{400pt}
+\begin{document}
+\title{\$SPAD/src/input pasta.input}
+\author{Timothy Daly}
+\maketitle
+\begin{abstract}
+These images and equations are from the book "Pasty by Design" by
+George L. Legendre.
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+\begin{chunk}{*}
+)set break resume
+)spool pasta.output
+)set message test on
+)set message auto off
+)clear all
+
+\end{chunk}
+\section{Agnolotti}
+These shell-like ravioli from Piedmont, northern italy, are fashioned
+from small pieces of flattened dough made of wheat flour and egg, and
+are often filled with braised veal, port, vegetables or cheese. The
+true agnolotto should feature a crinkled edge, cut using a fluted
+pasta wheel. Recommended with melted butter and sage
+
+\begin{chunk}{*}
+--S 1 of 33
+X(i,j) == (10*sin((i/120)*%pi)^(0.5) + _
+           (1/400)*sin(((3*j)/10)*%pi)) * _
+          cos(((19*j)/2000)*%pi+0.03*%pi)
+--R 
+--R                                                                   Type: Void
+--E 1
+
+--S 2 of 33
+Y(i,j) == (10*sin((i/120)*%pi) + _
+           (1/400)*cos(((30*j)/10)*%pi)) * _
+          sin(((19*j)/2000)*%pi+0.03*%pi)
+--R 
+--R                                                                   Type: Void
+--E 2
+
+--S 3 of 33
+Z(i,j) == 5*cos((i/120)*%pi)^5 * sin((j/100)*%pi) - _
+          5*sin((j/100)*%pi) * cos((i/120)*%pi)^200
+--R 
+--R                                                                   Type: Void
+--E 3
+
+--S 4 of 33
+draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..60,j=0..100,_
+     style=="smooth",title=="Agnolotti")
+--R 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function %EJ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Compiling function %EL with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Compiling function %EN with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Agnolotti"
+--R                                               Type: ThreeDimensionalViewport
+--E 4
+
+)clear all
+ 
+\end{chunk}
+\section{Cappelletti}
+This pasta is customarily served as the first course of a traditional
+north Italian Christmas meal, dished up in a chicken brodo
+(broth). Typically, it is the children of a houseold who prepare the
+cappelletti (little hats) on Christmas Eve, filling the pasta parcels
+(made from wheat flour and fresh eggs) with mixed meats or soft
+cheeses, such as ricotta.
+\begin{chunk}{*}
+
+--S 5 of 33
+X(i,j) == (0.1 + sin(((3*i)/160)*%pi)) * cos(((2.3*j)/120)*%pi)
+--R 
+--R                                                                   Type: Void
+--E 5
+
+--S 6 of 33
+Y(i,j) == (0.1 + sin(((3*i)/160)*%pi)) * sin(((2.3*j)/120)*%pi)
+--R 
+--R                                                                   Type: Void
+--E 6
+
+--S 7 of 33
+Z(i,j) == 0.1 + (1/400.)*j + (0.3 - 0.231*(i/40.)) * cos((i/20.)*%pi)
+--R 
+--R                                                                   Type: Void
+--E 7
+
+--S 8 of 33
+draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..40,j=0..120,_
+     style=="smooth",title=="Cappelletti")
+--R 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function %EP with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Compiling function %ER with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Compiling function %ET with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Cappelletti"
+--R                                               Type: ThreeDimensionalViewport
+--E 8
+
+)clear all
+ 
+\end{chunk}
+\section{Fagottini}
+A notable member of the pasta ripiena (filled pasta) family, fagottini
+(little purses) are made from circles of durum wheat dough. A spoonful
+of ricotta, steamed vegetables or even stewed fruit is placed on the
+dough, and the corners are then pinched together to form a bundle. 
+These packed dumplings are similar to ravioli, only larger.
+\begin{chunk}{*}
+
+--S 9 of 33
+A(i,j) == (0.8 + sin(i/100*%pi)^8 - 0.8 * cos(i/25*%pi))^1.5 + _
+           0.2 + 0.2 * sin(1/100*%pi)
+--R 
+--R                                                                   Type: Void
+--E 9
+
+--S 10 of 33
+B(i,j) == (0.9 + cos(i/100*%pi)^8 - 0.9 * cos(i/25*%pi + 0.03*%pi))^1.5 + _
+           0.3 * cos(i/100*%pi)
+--R 
+--R                                                                   Type: Void
+--E 10
+
+--S 11 of 33
+C(i,j) == 4 - ((4*j)/500)*(1+cos(i/100*%pi)^8 - 0.8*cos(i/25*%pi))^1.5
+--R 
+--R                                                                   Type: Void
+--E 11
+
+--S 12 of 33
+X(i,j) == cos(i/100*%pi) * _
+          (A(i,j) * sin(j/100*%pi)^8 + _
+           0.6 * (2 + sin(i/100*%pi)^2) * sin(j/50*%pi)^2)
+--R 
+--R                                                                   Type: Void
+--E 12
+
+--S 13 of 33
+Y(i,j) == sin(i/100*%pi) * _
+          (B(i,j) * sin(j/100*%pi)^8 + _
+           0.6 * (2 + cos(i/100*%pi)^2) * sin(j/50*%pi)^2)
+--R 
+--R                                                                   Type: Void
+--E 13
+
+--S 14 of 33
+Z(i,j) == (1 + sin(j/100*%pi - 0.5*%pi)) * _
+           (C(i,j) * ((4*j)/500) * _
+            (1 + sin(i/100*%pi)^8 - 0.8 * cos(i/25*%pi))^1.5)
+--R 
+--R                                                                   Type: Void
+--E 14
+
+--S 15 of 33
+draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..200,j=0..50,_
+     style=="smooth",title=="Fagottini")
+--R 
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function C with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function %EV with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Compiling function %EX with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Compiling function %EZ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (7)  ThreeDimensionalViewport: "Fagottini"
+--R                                               Type: ThreeDimensionalViewport
+--E 15
+
+)clear all
+ 
+\end{chunk}
+\section{Fusilli Lunghi Bucati}
+A distinctive member of the extended fusilli clan, fusilli lunghi
+bucati (long pierced fusilli) originated in Campania, southern Italy,
+and have a spring-like profile. Like all fusilli they are traditionally 
+consumed with a meat-based ragu, but may also be combined with thick 
+vegetable sauces and baked in the oven.
+\begin{chunk}{*}
+
+--S 16 of 33
+A(i,j) == 10 + cos(i/10*%pi) + 2*cos((j+10)/10*%pi) + 10*cos((j+140)/160*%pi)
+--R 
+--R                                                                   Type: Void
+--E 16
+
+--S 17 of 33
+B(i,j) == 20 + cos(i/10*%pi) + 2*cos((j+10)/10*%pi)
+--R 
+--R                                                                   Type: Void
+--E 17
+
+--S 18 of 33
+C(i,j) == (j+10)/10*%pi
+--R 
+--R                                                                   Type: Void
+--E 18
+
+--S 19 of 33
+D(i,j) == i/10*%pi
+--R 
+--R                                                                   Type: Void
+--E 19
+
+--S 20 of 33
+E(i,j) == C(i,j) + 20*sin((j-20)/160*%pi)
+--R 
+--R                                                                   Type: Void
+--E 20
+
+--S 21 of 33
+F(i,j) == 70. * (0.1 - (j-180.)/200.)
+--R 
+--R                                                                   Type: Void
+--E 21
+
+--S 22 of 33
+X(i,j) == if ((20 <= j) and (j <= 180)) _
+           then A(i,j) _
+            else if (j <= 20) _ 
+                  then (cos(D(i,j)) + 2*cos(C(i,j))) _
+                   else B(i,j)
+--R 
+--R                                                                   Type: Void
+--E 22
+
+--S 23 of 33
+Y(i,j) == if ((20 <= j) and (j <= 180)) _
+           then (sin(D(i,j)) + 2*sin(C(i,j))) _
+            else (sin(D(i,j)) + 2*sin(C(i,j)))
+--R 
+--R                                                                   Type: Void
+--E 23
+
+--S 24 of 33
+Z(i,j) == if ((20 <= j) and (j <= 180)) _
+           then E(i,j) _
+            else if (j <= 20) _
+                  then (C(i,j)*j)/20 _
+                   else F(i,j)
+--R 
+--R                                                                   Type: Void
+--E 24
+
+--S 25 of 33
+draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..20,j=0..200,_
+     style=="wire",title=="Fusilli Lunghi Bucati")
+--R 
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function D with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function C with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function E with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function F with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function %FB with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Compiling function %FD with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Compiling function %FF with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (10)  ThreeDimensionalViewport: "Fusilli Lunghi Bucati"
+--R                                               Type: ThreeDimensionalViewport
+--E 25
+
+)clear all
+ 
+\end{chunk}
+\section{Quadrefiore}
+An uncommon variety of pasta corta (short pasta), quadrefiori (square
+flowers) are sturdy, with rippled edges running down their
+lengths. Francis Ford Coppola, the maker and distributor, uses antique
+bronze moulds and wooden drying racks to achieve an authentic form
+and consistency.
+\begin{chunk}{*}
+
+--S 26 of 33
+X(i,j) == 2*cos((i/250.)*%pi)*(sin((3.*i)/250.*%pi))^20 + _
+           (0.6 + 0.9*sin(j/50*%pi)) * cos(i/250*%pi) + _
+           0.2*cos((4*j)/25*%pi)
+--R 
+--R                                                                   Type: Void
+--E 26
+
+--S 27 of 33
+Y(i,j) == 2*sin((i/250.)*%pi)*(sin((3.*i)/250.*%pi))^20 + _
+           (0.6 + 0.9*sin(j/50*%pi)) * sin(i/250*%pi) + _
+           1.5*sin(j/50*%pi)
+--R 
+--R                                                                   Type: Void
+--E 27
+
+--S 28  of 33
+Z(i,j) == (3*j)/10
+--R 
+--R                                                                   Type: Void
+--E 28
+
+--S 29 of 33
+draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..500,j=0..50,_
+     style=="smooth",title=="Quadrefiore")
+--R 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Fraction Integer 
+--R   Compiling function %FH with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Compiling function %FJ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Compiling function %FL with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Quadrefiore"
+--R                                               Type: ThreeDimensionalViewport
+--E 29
+
+)clear all
+ 
+\end{chunk}
+\section{Scialatielli}
+Hailing from the Amaifi coast in the province of Naples, scialatielli
+are a rustic pasta lunga (long pasta) similar in appearance to
+fettuccine and tagliatelle. When they are made, milk and eggs can be
+added to the durum wheat flour to lend it a golden color. Scialatielli
+are best paired with seafood, or a ragu of pork or veal.
+\begin{chunk}{*}
+
+--S 30 of 33
+X(i,j) == 0.1*cos(i/75*%pi) + 0.1*cos((i+7.5)/75*%pi)^3 + 0.1*sin(j/50*%pi)
+--R 
+--R                                                                   Type: Void
+--E 30
+
+--S 31 of 33
+Y(i,j) == 0.1*cos(i/75*%pi) + 0.2*sin(i/75*%pi)^3 + 0.1*sin(j/50*%pi)
+--R 
+--R                                                                   Type: Void
+--E 31
+
+--S 32 of 33
+Z(i,j) == (3*j)/50.
+--R 
+--R                                                                   Type: Void
+--E 32
+
+--S 33 of 33
+draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..50,_
+     style=="shade",title=="Racchette")
+--R 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function %FN with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Compiling function %FP with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Compiling function %FR with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Racchette"
+--R                                               Type: ThreeDimensionalViewport
+--E 33
+
+)clear all
+ 
+\end{chunk}
+\section{Galletti}
+According to their maker, Barilla, the origin of galletti (small
+cocks) is uncertain, but their shape recalls that of the chifferi with
+the addition of an undulating crest. Galletti are usually served in
+tomato sauces, but combine equally well with a boscaiola (woodsman's)
+sauce of mushrooms.
+\begin{verbatim}
+--f(x:FLOAT):FLOAT == ((1. + sin(x*%pi + 1.5*%pi))/2.0)^5
+--
+--A(i,j) == if (i = 35) _
+--           then 0.00001 _
+--            else 0.4 * sin(f(i/140.)*%pi + 0.5*%pi)^1000 * cos(j/70*%pi) 
+--
+--C(i,j) == 0.4*cos(f(i/140.)*%pi)^1000 * sin(j/70*%pi)
+--
+--B(i,j) == 0.15 * sin(f(i/140.)*%pi + 0.5*%pi)^1000 * cos(j/C(i,j)*%pi)
+--
+--X(i,j) == (0.5 + 0.3*cos(f(i/140.)*2*%pi)) * cos(j/70*%pi) + _
+--          0.15 * (j/70)^10 * cos(f(i/140.)*2*%pi)^3 + A(i,j)
+--
+--Y(i,j) == 0.35*sin(f(i/140.)*2*%pi) + 0.15*(j/70)*sin(f(i/140.)*2*%pi) + B(i,j)
+--
+--Z(i,j) == (0.4 + 0.3*cos(f(i/140.)*2*%pi))*sin(j/70*%pi) + C(i,j)
+--
+--draw(surface(X(i,j),Y(i,j),Z(i,j)),i=1..139,j=1..69,_
+--     style=="solid",title=="Galletti")
+\end{verbatim}
+
+\section{Racchette}
+Usually served in salads, racchette (rackets) suit crunchy pine nuts,
+sliced asparagus and presh peas. Alternatively, the addition of diced
+watermelon or pomegranate seeds can create a light-tasting snack.
+
+\begin{chunk}{*}
+)spool 
+)lisp (bye)
+ 
+\end{chunk}
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}
