diff --git a/changelog b/changelog
index 69b830a..d4509ba 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20091114 tpd src/axiom-website/patches.html 20091114.02.tpd.patch
+20091114 tpd src/input/unit-macro.input add macro test cases
+20091114 tpd src/input/Makefile add unit-macro
 20091114 tpd src/axiom-website/patches.html 20091114.01.tpd.patch
 20091114 tpd books/bookvol10.3 clean up bootstrap lisp code format
 20091112 tpd src/axiom-website/patches.html 20091112.04.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 6d631b2..84b8935 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2257,5 +2257,7 @@ bookvol5 tree shake nci and osyscmd functions<br/>
 src/interp/nci.lisp merge and remove osyscmd.lisp<br/>
 <a href="patches/20091114.01.tpd.patch">20091114.01.tpd.patch</a>
 books/bookvol10.3 clean up bootstrap lisp code format<br/>
+<a href="patches/20091114.02.tpd.patch">20091114.02.tpd.patch</a>
+src/input/unit-macro unit test macro commands<br/>
  </body>
 </html>
diff --git a/src/input/Makefile.pamphlet b/src/input/Makefile.pamphlet
index 88b0ef9..1f4500c 100644
--- a/src/input/Makefile.pamphlet
+++ b/src/input/Makefile.pamphlet
@@ -397,7 +397,7 @@ REGRES= algaggr.regress algbrbf.regress  algfacob.regress alist.regress  \
     triglim.regress   tsetcatvermeer.regress            tutchap1.regress \
     typetower.regress void.regress      uniseg.regress \
     unittest1.regress unittest2.regress unittest3.regress unittest4.regress \
-    unit-i-funsel.regress zimmbron.regress
+    unit-i-funsel.regress unit-macro.regress zimmbron.regress
 
 IN=     ${SRC}/input
 MID=	${INT}/input
@@ -721,7 +721,7 @@ FILES= ${OUT}/algaggr.input  ${OUT}/algbrbf.input    ${OUT}/algfacob.input \
        ${OUT}/typo.input     \
        ${OUT}/uniseg.input   ${OUT}/up.input         ${OUT}/unittest1.input \
        ${OUT}/unittest2.input ${OUT}/unittest3.input ${OUT}/unittest4.input \
-       ${OUT}/unit-i-funsel.input \
+       ${OUT}/unit-i-funsel.input ${OUT}/unit-macro.input \
        ${OUT}/vector.input   ${OUT}/vectors.input    ${OUT}/viewdef.input \
        ${OUT}/void.input     ${OUT}/wiggle.input   \
        ${OUT}/wutset.input \
diff --git a/src/input/unit-macro.input.pamphlet b/src/input/unit-macro.input.pamphlet
new file mode 100644
index 0000000..e898b79
--- /dev/null
+++ b/src/input/unit-macro.input.pamphlet
@@ -0,0 +1,172 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\title{\$SPAD/src/input unit-macro.input}
+\author{Timothy Daly}
+\maketitle
+\begin{abstract}
+Test modifications to the $pfMacros internal state variable
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+\begin{chunk}{*}
+)set break break
+)sys rm -f unit-macro.output
+)spool unit-macro.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 9
+)lisp (trace |clearParserMacro| |displayMacro| |getParserMacroNames|)
+--R 
+--RValue = (|clearParserMacro| |displayMacro| |getParserMacroNames|)
+--E 1
+
+--S 2 of 9
+a ==> 3
+--R 
+--R                                                                   Type: Void
+--E 2
+
+--S 3 of 9
+a ==> 4
+--R 
+--R                                                                   Type: Void
+--E 3
+
+--S 4 of 9
+b ==> 7
+--R 
+--R                                                                   Type: Void
+--E 4
+
+--S 5 of 9
+)d macros
+--R 
+--R  1> (|getParserMacroNames|)
+--R  <1 (|getParserMacroNames| (|b| |a|))
+--R
+--RUser-defined macros:
+--R   b ==> 7
+--R   a ==> 4
+--R
+--RSystem-defined macros:
+--R  1> (|displayMacro| |%e|)
+--R   macro %e () == exp(1)
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| |%i|)
+--R   macro %i () == complex(0,1)
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| |%infinity|)
+--R   macro %infinity () == infinity()
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| |%minusInfinity|)
+--R   macro %minusInfinity () == minusInfinity()
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| |%pi|)
+--R   macro %pi () == pi()
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| |%plusInfinity|)
+--R   macro %plusInfinity () == plusInfinity()
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| SF)
+--R   macro SF () == DoubleFloat()
+--R  <1 (|displayMacro| NIL)
+--E 5
+
+--S 6 of 9
+)clear prop a
+--R 
+--R  1> (|getParserMacroNames|)
+--R  <1 (|getParserMacroNames| (|b| |a|))
+--R  1> (|clearParserMacro| |a|)
+--I  <1 (|clearParserMacro| ((|b| |mbody| ((|integer| (|posn| (0 "b ==> 7" 9 9 "/tmp/i.input") . 6)) . "7")) (|a| |mbody| ((|integer| (|posn| (0 "a ==> 3" 7 7 "/tmp/i.input") . 6)) . "3"))))
+--E 6
+
+--S 7 of 9
+)d macros
+--R 
+--R  1> (|getParserMacroNames|)
+--R  <1 (|getParserMacroNames| (|b| |a|))
+--R
+--RUser-defined macros:
+--R   b ==> 7
+--R   a ==> 3
+--R
+--RSystem-defined macros:
+--R  1> (|displayMacro| |%e|)
+--R   macro %e () == exp(1)
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| |%i|)
+--R   macro %i () == complex(0,1)
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| |%infinity|)
+--R   macro %infinity () == infinity()
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| |%minusInfinity|)
+--R   macro %minusInfinity () == minusInfinity()
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| |%pi|)
+--R   macro %pi () == pi()
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| |%plusInfinity|)
+--R   macro %plusInfinity () == plusInfinity()
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| SF)
+--R   macro SF () == DoubleFloat()
+--R  <1 (|displayMacro| NIL)
+--E 7
+
+--S 8 of 9
+)clear prop a
+--R 
+--R  1> (|getParserMacroNames|)
+--R  <1 (|getParserMacroNames| (|b| |a|))
+--R  1> (|clearParserMacro| |a|)
+--I  <1 (|clearParserMacro| ((|b| |mbody| ((|integer| (|posn| (0 "b ==> 7" 9 9 "/tmp/i.input") . 6)) . "7"))))
+--E 8
+
+--S 9 of 9
+)d macros
+--R 
+--R  1> (|getParserMacroNames|)
+--R  <1 (|getParserMacroNames| (|b|))
+--R
+--RUser-defined macros:
+--R   b ==> 7
+--R
+--RSystem-defined macros:
+--R  1> (|displayMacro| |%e|)
+--R   macro %e () == exp(1)
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| |%i|)
+--R   macro %i () == complex(0,1)
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| |%infinity|)
+--R   macro %infinity () == infinity()
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| |%minusInfinity|)
+--R   macro %minusInfinity () == minusInfinity()
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| |%pi|)
+--R   macro %pi () == pi()
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| |%plusInfinity|)
+--R   macro %plusInfinity () == plusInfinity()
+--R  <1 (|displayMacro| NIL)
+--R  1> (|displayMacro| SF)
+--R   macro SF () == DoubleFloat()
+--R  <1 (|displayMacro| NIL)
+--E 9
+
+)spool
+)lisp (bye)
+ 
+\end{chunk}
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}
