diff --git a/changelog b/changelog
index 7ef506c..8ce345e 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,8 @@
+20090810 tpd src/axiom-website/patches.html 20090810.01.tpd.patch
+20090810 tpd src/interp/Makefile move alql.boot to alql.lisp
+20090810 tpd src/interp/debugsys.lisp change alql.clisp to alql.lisp
+20090810 tpd src/interp/alql.lisp added, rewritten from alql.boot
+20090810 tpd src/interp/alql.boot removed, rewritten to alql.lisp
 20090809 tpd src/axiom-website/patches.html 20090809.03.tpd.patch
 20090809 tpd src/interp/Makefile remove unlisp.lisp
 20090809 tpd src/interp/debugsys.lisp remove unlisp reference
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 718dac8..eae5442 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -1766,6 +1766,8 @@ vmlisp.lisp and setq.lisp merged<br/>
 vmlisp.lisp and property.lisp merged<br/>
 <a href="patches/20090809.03.tpd.patch">20090809.03.tpd.patch</a>
 vmlisp.lisp and unlisp.lisp merged<br/>
+<a href="patches/20090810.01.tpd.patch">20090810.01.tpd.patch</a>
+alql.lisp rewrite from boot to lisp<br/>
 
  </body>
 </html>
diff --git a/src/interp/Makefile.pamphlet b/src/interp/Makefile.pamphlet
index 2436ab0..6416278 100644
--- a/src/interp/Makefile.pamphlet
+++ b/src/interp/Makefile.pamphlet
@@ -409,8 +409,7 @@ We need a list of all of the pamphlet files so we can generate
 the document files. In make's traditional "pull to the target"
 fashion we need to provide a list of target dvi files.
 <<environment>>=
-DOCFILES=${DOC}/alql.boot.dvi \
-	 ${DOC}/as.boot.dvi \
+DOCFILES=${DOC}/as.boot.dvi \
 	 ${DOC}/astr.boot.dvi ${DOC}/ax.boot.dvi \
 	 ${DOC}/axext_l.lisp.dvi \
 	 ${DOC}/bc-matrix.boot.dvi \
@@ -1606,45 +1605,26 @@ ${DOC}/vmlisp.lisp.dvi: ${IN}/vmlisp.lisp.pamphlet
 
 @
 
-\subsection{alql.boot \cite{40}}
+\subsection{alql.lisp}
 <<alql.o (OUT from MID)>>=
-${OUT}/alql.${O}: ${MID}/alql.clisp 
-	@ echo 139 making ${OUT}/alql.${O} from ${MID}/alql.clisp
-	@ (cd ${MID} ; \
+${OUT}/alql.${O}: ${MID}/alql.lisp
+	@ echo 136 making ${OUT}/alql.${O} from ${MID}/alql.lisp
+	@ ( cd ${MID} ; \
 	  if [ -z "${NOISE}" ] ; then \
-	   echo '(progn  (compile-file "${MID}/alql.clisp"' \
+	   echo '(progn  (compile-file "${MID}/alql.lisp"' \
              ':output-file "${OUT}/alql.${O}") (${BYE}))' | ${DEPSYS} ; \
 	  else \
-	   echo '(progn  (compile-file "${MID}/alql.clisp"' \
+	   echo '(progn  (compile-file "${MID}/alql.lisp"' \
              ':output-file "${OUT}/alql.${O}") (${BYE}))' | ${DEPSYS} \
              >${TMP}/trace ; \
 	  fi )
 
 @
-<<alql.clisp (MID from IN)>>=
-${MID}/alql.clisp: ${IN}/alql.boot.pamphlet
-	@ echo 140 making ${MID}/alql.clisp from ${IN}/alql.boot.pamphlet
+<<alql.lisp (MID from IN)>>=
+${MID}/alql.lisp: ${IN}/alql.lisp.pamphlet
+	@ echo 137 making ${MID}/alql.lisp from ${IN}/alql.lisp.pamphlet
 	@ (cd ${MID} ; \
-	  ${TANGLE} ${IN}/alql.boot.pamphlet >alql.boot ; \
-	  if [ -z "${NOISE}" ] ; then \
-	   echo '(progn (boottran::boottocl "alql.boot") (${BYE}))' \
-                | ${DEPSYS} ; \
-	  else \
-	   echo '(progn (boottran::boottocl "alql.boot") (${BYE}))' \
-                | ${DEPSYS} >${TMP}/trace ; \
-	  fi ; \
-	   rm alql.boot )
-
-@
-<<alql.boot.dvi (DOC from IN)>>=
-${DOC}/alql.boot.dvi: ${IN}/alql.boot.pamphlet 
-	@echo 141 making ${DOC}/alql.boot.dvi from ${IN}/alql.boot.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/alql.boot.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} alql.boot ; \
-	rm -f ${DOC}/alql.boot.pamphlet ; \
-	rm -f ${DOC}/alql.boot.tex ; \
-	rm -f ${DOC}/alql.boot )
+	   ${TANGLE} ${IN}/alql.lisp.pamphlet >alql.lisp )
 
 @
 
@@ -6903,8 +6883,7 @@ clean:
 <<spadhelp>>
 
 <<alql.o (OUT from MID)>>
-<<alql.clisp (MID from IN)>>
-<<alql.boot.dvi (DOC from IN)>>
+<<alql.lisp (MID from IN)>>
 
 <<apply.o (OUT from MID)>>
 <<apply.lisp (MID from IN)>>
@@ -7526,7 +7505,6 @@ pp
 \bibitem{36} {\bf \$SPAD/src/interp/sys-pkg.lisp.pamphlet}
 \bibitem{38} {\bf \$SPAD/src/interp/util.lisp.pamphlet}
 \bibitem{39} {\bf \$SPAD/src/interp/vmlisp.lisp.pamphlet}
-\bibitem{40} {\bf \$SPAD/src/interp/alql.boot.pamphlet}
 \bibitem{41} {\bf \$SPAD/src/interp/buildom.boot.pamphlet}
 \bibitem{42} {\bf \$SPAD/src/interp/c-util.boot.pamphlet}
 \bibitem{43} {\bf \$SPAD/src/interp/nag-c02.boot.pamphlet}
diff --git a/src/interp/alql.boot.pamphlet b/src/interp/alql.boot.pamphlet
deleted file mode 100644
index 4acf79d..0000000
--- a/src/interp/alql.boot.pamphlet
+++ /dev/null
@@ -1,77 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/interp alql.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>>
-
-getBrowseDatabase(kind) ==
-  $includeUnexposed? : local := true
-  not FUNCALL("member",kind,'("o" "k" "c" "d" "p")) => nil
-  grepConstruct('"*",INTERN kind)
-
-stringMatches?(pattern,subject) ==
-  FIXP basicMatch?(pattern,subject) => true
-  false
-
-alqlGetKindString(x) ==
-  x.0 = char 'a or x.0 = char 'o => SUBSTRING(dbPart(x,5,1),0,1)
-  SUBSTRING(x,0,1)
-
-alqlGetOrigin(x) ==
-  field :=dbPart(x,5,1)
-  k := charPosition(char '_(,field,2)
-  SUBSTRING(field,1,k-1)
-
-alqlGetParams(x) ==
-  field :=dbPart(x,5,1)
-  k := charPosition(char '_(,field,2)
-  SUBSTRING(field,k,nil)
-
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/alql.lisp.pamphlet b/src/interp/alql.lisp.pamphlet
new file mode 100644
index 0000000..08341a8
--- /dev/null
+++ b/src/interp/alql.lisp.pamphlet
@@ -0,0 +1,89 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\title{\$SPAD/src/interp alql.boot}
+\author{The Axiom Team}
+\maketitle
+\begin{abstract}
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+<<*>>=
+
+;; Note: this seems to only be used in the ICARD (IndexCard) domain
+
+(IN-PACKAGE "BOOT" )
+
+;getBrowseDatabase(kind) ==
+;  $includeUnexposed? : local := true
+;  not FUNCALL("member",kind,'("o" "k" "c" "d" "p")) => nil
+;  grepConstruct('"*",INTERN kind)
+
+(DEFUN |getBrowseDatabase| (|kind|)
+ (PROG (|$includeUnexposed?|)
+  (DECLARE (SPECIAL |$includeUnexposed?|))
+  (RETURN
+   (PROGN
+    (SPADLET |$includeUnexposed?| (QUOTE T))
+    (COND
+     ((NULL (FUNCALL (QUOTE |member|) |kind| (QUOTE ("o" "k" "c" "d" "p"))))
+       NIL)
+     ((QUOTE T)
+      (|grepConstruct| (MAKESTRING "*") (INTERN |kind|)))))))) 
+
+;stringMatches?(pattern,subject) ==
+;  FIXP basicMatch?(pattern,subject) => true
+;  false
+
+(DEFUN |stringMatches?| (|pattern| |subject|)
+ (COND
+  ((FIXP (|basicMatch?| |pattern| |subject|)) (QUOTE T))
+  ((QUOTE T) NIL))) 
+
+;alqlGetKindString(x) ==
+;  x.0 = char 'a or x.0 = char 'o => SUBSTRING(dbPart(x,5,1),0,1)
+;  SUBSTRING(x,0,1)
+
+(DEFUN |alqlGetKindString| (|x|)
+ (COND
+  ((OR (BOOT-EQUAL (ELT |x| 0) (|char| (QUOTE |a|)))
+       (BOOT-EQUAL (ELT |x| 0) (|char| (QUOTE |o|))))
+    (SUBSTRING (|dbPart| |x| 5 1) 0 1))
+  ((QUOTE T)
+    (SUBSTRING |x| 0 1)))) 
+
+;alqlGetOrigin(x) ==
+;  field :=dbPart(x,5,1)
+;  k := charPosition(char '_(,field,2)
+;  SUBSTRING(field,1,k-1)
+
+(DEFUN |alqlGetOrigin| (|x|)
+ (PROG (|field| |k|)
+  (RETURN
+   (PROGN
+    (SPADLET |field| (|dbPart| |x| 5 1))
+    (SPADLET |k|
+     (|charPosition| (|char| (QUOTE |(|)) |field| 2))
+     (SUBSTRING |field| 1 (SPADDIFFERENCE |k| 1)))))) 
+
+;alqlGetParams(x) ==
+;  field :=dbPart(x,5,1)
+;  k := charPosition(char '_(,field,2)
+;  SUBSTRING(field,k,nil)
+
+(DEFUN |alqlGetParams| (|x|)
+ (PROG (|field| |k|)
+  (RETURN
+   (PROGN
+    (SPADLET |field| (|dbPart| |x| 5 1))
+    (SPADLET |k|
+     (|charPosition| (|char| (QUOTE |(|)) |field| 2))
+     (SUBSTRING |field| |k| NIL))))) 
+
+@
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}
diff --git a/src/interp/debugsys.lisp.pamphlet b/src/interp/debugsys.lisp.pamphlet
index 6c6ca78..c76e383 100644
--- a/src/interp/debugsys.lisp.pamphlet
+++ b/src/interp/debugsys.lisp.pamphlet
@@ -86,7 +86,7 @@ loaded by hand we need to establish a value.
    (list 
       (thesymb "/int/interp/vmlisp.lisp")
       (thesymb "/int/interp/astr.clisp")
-      (thesymb "/int/interp/alql.clisp")
+      (thesymb "/int/interp/alql.lisp")
       (thesymb "/int/interp/buildom.clisp")
       (thesymb "/int/interp/cattable.clisp")
       (thesymb "/int/interp/cformat.clisp")
