diff --git a/changelog b/changelog
index 1a080a5..20620f7 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,8 @@
+20090811 tpd src/axiom-website/patches.html 20090811.01.tpd.patch
+20090811 tpd src/interp/Makefile move dq.boot to dq.lisp
+20090811 tpd src/interp/debugsys.lisp change astr.clisp to dq.lisp
+20090811 tpd src/interp/dq.lisp added, rewritten from dq.boot
+20090811 tpd src/interp/dq.boot removed, rewritten to dq.lisp
 20090810 tpd src/axiom-website/patches.html 20090810.03.tpd.patch
 20090810 tpd src/interp/Makefile move astr.boot to buildom.lisp
 20090810 tpd src/interp/debugsys.lisp change buildom.clisp to buildom.lisp
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 08fd6ef..bbdc3e9 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -1772,6 +1772,8 @@ alql.lisp rewrite from boot to lisp<br/>
 astr.lisp rewrite from boot to lisp<br/>
 <a href="patches/20090810.03.tpd.patch">20090810.03.tpd.patch</a>
 buildom.lisp rewrite from boot to lisp<br/>
+<a href="patches/20090811.01.tpd.patch">20090811.01.tpd.patch</a>
+dq.lisp rewrite from boot to lisp<br/>
 
  </body>
 </html>
diff --git a/src/interp/Makefile.pamphlet b/src/interp/Makefile.pamphlet
index 5dcf83c..57303ea 100644
--- a/src/interp/Makefile.pamphlet
+++ b/src/interp/Makefile.pamphlet
@@ -424,7 +424,6 @@ DOCFILES=${DOC}/as.boot.dvi \
 	 ${DOC}/c-util.boot.dvi ${DOC}/daase.lisp.dvi \
 	 ${DOC}/database.boot.dvi \
 	 ${DOC}/define.boot.dvi \
-	 ${DOC}/dq.boot.dvi \
 	 ${DOC}/fname.lisp.dvi \
 	 ${DOC}/foam_l.lisp.dvi \
 	 ${DOC}/format.boot.dvi ${DOC}/fortcall.boot.dvi \
@@ -5687,44 +5686,26 @@ ${DOC}/ptrop.boot.dvi: ${IN}/ptrop.boot.pamphlet
 
 @
 
-\subsection{dq.boot}
+\subsection{dq.lisp}
 <<dq.o (OUT from MID)>>=
-${OUT}/dq.${O}: ${MID}/dq.clisp 
-	@ echo 525 making ${OUT}/dq.${O} from ${MID}/dq.clisp
-	@ if [ -z "${NOISE}" ] ; then \
-	   echo '(progn (compile-file "${MID}/dq.clisp"' \
+${OUT}/dq.${O}: ${MID}/dq.lisp
+	@ echo 531 making ${OUT}/dq.${O} from ${MID}/dq.lisp
+	@ ( cd ${MID} ; \
+	  if [ -z "${NOISE}" ] ; then \
+	   echo '(progn  (compile-file "${MID}/dq.lisp"' \
              ':output-file "${OUT}/dq.${O}") (${BYE}))' | ${DEPSYS} ; \
 	  else \
-	   echo '(progn (compile-file "${MID}/dq.clisp"' \
+	   echo '(progn  (compile-file "${MID}/dq.lisp"' \
              ':output-file "${OUT}/dq.${O}") (${BYE}))' | ${DEPSYS} \
              >${TMP}/trace ; \
-	  fi
+	  fi )
 
 @
-<<dq.clisp (MID from IN)>>=
-${MID}/dq.clisp: ${IN}/dq.boot.pamphlet
-	@ echo 526 making ${MID}/dq.clisp from ${IN}/dq.boot.pamphlet
+<<dq.lisp (MID from IN)>>=
+${MID}/dq.lisp: ${IN}/dq.lisp.pamphlet
+	@ echo 532 making ${MID}/dq.lisp from ${IN}/dq.lisp.pamphlet
 	@ (cd ${MID} ; \
-	  ${TANGLE} ${IN}/dq.boot.pamphlet >dq.boot ; \
-	  if [ -z "${NOISE}" ] ; then \
-	   echo '(progn (boottran::boottocl "${MID}/dq.boot") (${BYE}))' \
-                | ${BOOTSYS}  ; \
-	  else \
-	   echo '(progn (boottran::boottocl "${MID}/dq.boot") (${BYE}))' \
-                | ${BOOTSYS} >${TMP}/trace ; \
-	  fi ; \
-	  rm dq.boot )
-
-@
-<<dq.boot.dvi (DOC from IN)>>=
-${DOC}/dq.boot.dvi: ${IN}/dq.boot.pamphlet 
-	@echo 527 making ${DOC}/dq.boot.dvi from ${IN}/dq.boot.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/dq.boot.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} dq.boot ; \
-	rm -f ${DOC}/dq.boot.pamphlet ; \
-	rm -f ${DOC}/dq.boot.tex ; \
-	rm -f ${DOC}/dq.boot )
+	   ${TANGLE} ${IN}/dq.lisp.pamphlet >dq.lisp )
 
 @
 
@@ -6955,8 +6936,7 @@ clean:
 <<define.boot.dvi (DOC from IN)>>
 
 <<dq.o (OUT from MID)>>
-<<dq.clisp (MID from IN)>>
-<<dq.boot.dvi (DOC from IN)>>
+<<dq.lisp (MID from IN)>>
 
 <<fname.o (OUT from MID)>>
 <<fname.lisp (MID from IN)>>
diff --git a/src/interp/debugsys.lisp.pamphlet b/src/interp/debugsys.lisp.pamphlet
index 8d91800..7eb950f 100644
--- a/src/interp/debugsys.lisp.pamphlet
+++ b/src/interp/debugsys.lisp.pamphlet
@@ -98,7 +98,7 @@ loaded by hand we need to establish a value.
       (thesymb "/int/interp/cparse.clisp")
       (thesymb "/int/interp/cstream.clisp")
       (thesymb "/int/interp/database.clisp")
-      (thesymb "/int/interp/dq.clisp")
+      (thesymb "/int/interp/dq.lisp")
       (thesymb "/int/interp/fname.lisp")
       (thesymb "/int/interp/format.clisp")
       (thesymb "/int/interp/g-boot.clisp")
diff --git a/src/interp/dq.boot.pamphlet b/src/interp/dq.boot.pamphlet
deleted file mode 100644
index 1346ecc..0000000
--- a/src/interp/dq.boot.pamphlet
+++ /dev/null
@@ -1,100 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/interp dq.boot}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
--- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
--- All rights reserved.
---
--- Redistribution and use in source and binary forms, with or without
--- modification, are permitted provided that the following conditions are
--- met:
---
---     - Redistributions of source code must retain the above copyright
---       notice, this list of conditions and the following disclaimer.
---
---     - Redistributions in binary form must reproduce the above copyright
---       notice, this list of conditions and the following disclaimer in
---       the documentation and/or other materials provided with the
---       distribution.
---
---     - Neither the name of The Numerical ALgorithms Group Ltd. nor the
---       names of its contributors may be used to endorse or promote products
---       derived from this software without specific prior written permission.
---
--- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
--- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
--- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
--- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
--- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
--- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
--- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
--- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
--- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
--- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
--- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-@
-<<*>>=
-<<license>>
-
-)package "BOOT"
-
--- Dequeue functions
- 
--- dqUnit makes a unit dq i.e. a dq with one item, from the item
- 
--- dqUnitCopy copies a unit dq
- 
--- dqAppend appends 2 dq's, destroying the first
- 
--- dqConcat concatenates a list of dq's, destroying all but the last
- 
--- dqToList transforms a dq to a list
- 
-dqUnit s==(a:=[s];CONS(a,a))
- 
-dqUnitCopy s== dqUnit(CAAR s)
- 
-dqAppend(x,y)==
-    if null x
-    then y
-    else if null y
-         then x
-         else
-              RPLACD (CDR x,CAR y)
-              RPLACD (x,    CDR y)
-              x
- 
-dqConcat ld==
-    if null ld
-    then nil
-    else if null rest ld
-         then first ld
-         else dqAppend(first ld,dqConcat rest ld)
- 
-dqToList s==if null s then nil else CAR s
- 
-dqAddAppend(x,y)==
-    if null x
-    then nil
-    else if null y
-         then nil
-         else
-              RPLACD (CDR x,CAR y)
-              RPLACD (x,    CDR y)
-              x
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/dq.lisp.pamphlet b/src/interp/dq.lisp.pamphlet
new file mode 100644
index 0000000..40202fc
--- /dev/null
+++ b/src/interp/dq.lisp.pamphlet
@@ -0,0 +1,107 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\title{\$SPAD/src/interp dq.lisp}
+\author{The Axiom Team}
+\maketitle
+\begin{abstract}
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+<<*>>=
+
+(IN-PACKAGE "BOOT")
+
+;-- Dequeue functions
+ 
+;dqUnit s==(a:=[s];CONS(a,a))
+
+;-- dqUnit makes a unit dq i.e. a dq with one item, from the item
+ 
+(DEFUN |dqUnit| (|s|)
+ (PROG (|a|)
+  (RETURN
+   (PROGN
+    (SETQ |a| (LIST |s|))
+    (CONS |a| |a|)))))
+
+;dqUnitCopy s== dqUnit(CAAR s)
+
+;-- dqUnitCopy copies a unit dq
+
+(DEFUN |dqUnitCopy| (|s|)
+ (PROG NIL
+  (RETURN (|dqUnit| (CAAR |s|)))))
+
+;-- dqAppend appends 2 dq's, destroying the first
+ 
+;dqAppend(x,y)==
+;    if null x
+;    then y
+;    else if null y
+;         then x
+;         else
+;              RPLACD (CDR x,CAR y)
+;              RPLACD (x,    CDR y)
+;              x
+ 
+(DEFUN |dqAppend| (|x| |y|)
+ (PROG NIL
+  (RETURN
+   (COND
+    ((NULL |x|) |y|)
+    ((NULL |y|) |x|)
+    ((QUOTE T) (RPLACD (CDR |x|) (CAR |y|)) (RPLACD |x| (CDR |y|)) |x|)))))
+
+;dqConcat ld==
+;    if null ld
+;    then nil
+;    else if null rest ld
+;         then first ld
+;         else dqAppend(first ld,dqConcat rest ld)
+
+;-- dqConcat concatenates a list of dq's, destroying all but the last
+ 
+(DEFUN |dqConcat| (|ld|)
+ (PROG NIL
+  (RETURN
+   (COND
+    ((NULL |ld|) NIL)
+    ((NULL (CDR |ld|)) (CAR |ld|))
+    ((QUOTE T) (|dqAppend| (CAR |ld|) (|dqConcat| (CDR |ld|))))))))
+
+;dqToList s==if null s then nil else CAR s
+ 
+(DEFUN |dqToList| (|s|)
+ (PROG NIL
+  (RETURN
+   (COND
+    ((NULL |s|) NIL)
+    ((QUOTE T) (CAR |s|))))))
+
+;dqAddAppend(x,y)==
+;    if null x
+;    then nil
+;    else if null y
+;         then nil
+;         else
+;              RPLACD (CDR x,CAR y)
+;              RPLACD (x,    CDR y)
+;              x
+
+;-- dqAddAppend transforms a dq to a list
+
+(DEFUN |dqAddAppend| (|x| |y|)
+ (PROG NIL
+  (RETURN
+   (COND
+    ((NULL |x|) NIL)
+    ((NULL |y|) NIL)
+    ((QUOTE T) (RPLACD (CDR |x|) (CAR |y|)) (RPLACD |x| (CDR |y|)) |x|)))))
+@
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}
