diff --git a/changelog b/changelog
index 929859f..7482db5 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,8 @@
+20090814 tpd src/axiom-website/patches.html 20090814.01.tpd.patch
+20090814 tpd src/interp/Makefile move compress.boot to compress.lisp
+20090814 tpd src/interp/debugsys.lisp change astr.clisp to compress.lisp
+20090814 tpd src/interp/compress.lisp added, rewritten from compress.boot
+20090814 tpd src/interp/compress.boot removed, rewritten to compress.lisp
 20090813 tpd src/axiom-website/patches.html 20090813.03.tpd.patch
 20090813 tpd src/interp/Makefile move compat.boot to compat.lisp
 20090813 tpd src/interp/debugsys.lisp change astr.clisp to compat.lisp
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 62f8b3b..d91a712 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -1784,6 +1784,8 @@ clam.lisp rewrite from boot to lisp<br/>
 clammed.lisp rewrite from boot to lisp<br/>
 <a href="patches/20090813.03.tpd.patch">20090813.03.tpd.patch</a>
 compat.lisp rewrite from boot to lisp<br/>
+<a href="patches/20090814.01.tpd.patch">20090814.01.tpd.patch</a>
+compress.lisp rewrite from boot to lisp<br/>
 
  </body>
 </html>
diff --git a/src/interp/Makefile.pamphlet b/src/interp/Makefile.pamphlet
index 6654d39..b455ce9 100644
--- a/src/interp/Makefile.pamphlet
+++ b/src/interp/Makefile.pamphlet
@@ -418,7 +418,6 @@ DOCFILES=${DOC}/as.boot.dvi \
 	 ${DOC}/c-doc.boot.dvi \
 	 ${DOC}/cfuns.lisp.dvi \
 	 ${DOC}/compiler.boot.dvi \
-	 ${DOC}/compress.boot.dvi \
 	 ${DOC}/cparse.boot.dvi ${DOC}/cstream.boot.dvi \
 	 ${DOC}/c-util.boot.dvi ${DOC}/daase.lisp.dvi \
 	 ${DOC}/database.boot.dvi \
@@ -2710,47 +2709,27 @@ ${DOC}/profile.boot.dvi: ${IN}/profile.boot.pamphlet
 
 @
 
-\subsection{compress.boot \cite{66}}
+\subsection{compress.lisp}
 <<compress.o (OUT from MID)>>=
-${OUT}/compress.${O}: ${MID}/compress.clisp 
-	@ echo 239 making ${OUT}/compress.${O} from ${MID}/compress.clisp
-	@ (cd ${MID} ; \
+${OUT}/compress.${O}: ${MID}/compress.lisp
+	@ echo 136 making ${OUT}/compress.${O} from ${MID}/compress.lisp
+	@ ( cd ${MID} ; \
 	  if [ -z "${NOISE}" ] ; then \
-	   echo '(progn  (compile-file "${MID}/compress.clisp"' \
+	   echo '(progn  (compile-file "${MID}/compress.lisp"' \
              ':output-file "${OUT}/compress.${O}") (${BYE}))' | ${DEPSYS} ; \
 	  else \
-	   echo '(progn  (compile-file "${MID}/compress.clisp"' \
+	   echo '(progn  (compile-file "${MID}/compress.lisp"' \
              ':output-file "${OUT}/compress.${O}") (${BYE}))' | ${DEPSYS} \
              >${TMP}/trace ; \
 	  fi )
 
 @
-<<compress.clisp (MID from IN)>>=
-${MID}/compress.clisp: ${IN}/compress.boot.pamphlet
-	@ echo 240 making ${MID}/compress.clisp \
-                   from ${IN}/compress.boot.pamphlet
+<<compress.lisp (MID from IN)>>=
+${MID}/compress.lisp: ${IN}/compress.lisp.pamphlet
+	@ echo 137 making ${MID}/compress.lisp from \
+                   ${IN}/compress.lisp.pamphlet
 	@ (cd ${MID} ; \
-	  ${TANGLE} ${IN}/compress.boot.pamphlet >compress.boot ; \
-	  if [ -z "${NOISE}" ] ; then \
-	   echo '(progn (boottran::boottocl "compress.boot") (${BYE}))' \
-                | ${DEPSYS} ; \
-	  else \
-	   echo '(progn (boottran::boottocl "compress.boot") (${BYE}))' \
-                | ${DEPSYS} >${TMP}/trace ; \
-	  fi ; \
-	  rm compress.boot )
-
-@
-<<compress.boot.dvi (DOC from IN)>>=
-${DOC}/compress.boot.dvi: ${IN}/compress.boot.pamphlet 
-	@echo 241 making ${DOC}/compress.boot.dvi \
-                  from ${IN}/compress.boot.pamphlet
-	@(cd ${DOC} ; \
-	cp ${IN}/compress.boot.pamphlet ${DOC} ; \
-	${DOCUMENT} ${NOISE} compress.boot ; \
-	rm -f ${DOC}/compress.boot.pamphlet ; \
-	rm -f ${DOC}/compress.boot.tex ; \
-	rm -f ${DOC}/compress.boot )
+	   ${TANGLE} ${IN}/compress.lisp.pamphlet >compress.lisp )
 
 @
 
@@ -6787,8 +6766,7 @@ clean:
 <<compiler.boot.dvi (DOC from IN)>>
 
 <<compress.o (OUT from MID)>>
-<<compress.clisp (MID from IN)>>
-<<compress.boot.dvi (DOC from IN)>>
+<<compress.lisp (MID from IN)>>
 
 <<construc.o (OUT from MID)>>
 <<construc.lisp (MID from IN)>>
@@ -7350,7 +7328,6 @@ pp
 \bibitem{60} {\bf \$SPAD/src/interp/c-doc.boot.pamphlet}
 \bibitem{64} {\bf \$SPAD/src/interp/compiler.boot.pamphlet}
 \bibitem{65} {\bf \$SPAD/src/interp/profile.boot.pamphlet}
-\bibitem{66} {\bf \$SPAD/src/interp/compress.boot.pamphlet}
 \bibitem{67} {\bf \$SPAD/src/interp/database.boot.pamphlet}
 \end{thebibliography}
 \end{document}
diff --git a/src/interp/compress.boot.pamphlet b/src/interp/compress.boot.pamphlet
deleted file mode 100644
index 31f75aa..0000000
--- a/src/interp/compress.boot.pamphlet
+++ /dev/null
@@ -1,87 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/interp compress.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>>
-
--- This one is not currently in general use, but can be applied
--- to various situations are required
- 
-minimalise x ==
-  $hash:local:=MAKE_-HASHTABLE 'UEQUAL
-  min x where
-    min x ==
-      y:=HGET($hash,x)
-      y => y
-      PAIRP x =>
-        x = '(QUOTE T) => '(QUOTE T)
-        -- copes with a particular Lucid-ism, God knows why
-        -- This circular way of doing things is an attempt to deal with Lucid
-        -- Who may place quoted cells in read-only memory
-        z:=min CAR x
-        if not EQ(z,CAR x) then RPLACA(x,z)
-        z:=min CDR x
-        if not EQ(z,CDR x) then RPLACD(x,z)
-        HashCheck x
-      REFVECP x =>
-        for i in 0..MAXINDEX x repeat
-          x.i:=min (x.i)
-        HashCheck x
-      STRINGP x => HashCheck x
-      x
-    HashCheck x ==
-      y:=HGET($hash,x)
-      y => y
-      HPUT($hash,x,x)
-      x
-  x
- 
- 
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/compress.lisp.pamphlet b/src/interp/compress.lisp.pamphlet
new file mode 100644
index 0000000..1699280
--- /dev/null
+++ b/src/interp/compress.lisp.pamphlet
@@ -0,0 +1,94 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\title{\$SPAD/src/interp compress.lisp}
+\author{The Axiom Team}
+\maketitle
+\begin{abstract}
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+<<*>>=
+
+(IN-PACKAGE "BOOT" )
+
+;minimalise x ==
+;  $hash:local:=MAKE_-HASHTABLE 'UEQUAL
+;  min x where
+;    min x ==
+;      y:=HGET($hash,x)
+;      y => y
+;      PAIRP x =>
+;        x = '(QUOTE T) => '(QUOTE T)
+;        -- copes with a particular Lucid-ism, God knows why
+;        -- This circular way of doing things is an attempt to deal with Lucid
+;        -- Who may place quoted cells in read-only memory
+;        z:=min CAR x
+;        if not EQ(z,CAR x) then RPLACA(x,z)
+;        z:=min CDR x
+;        if not EQ(z,CDR x) then RPLACD(x,z)
+;        HashCheck x
+;      REFVECP x =>
+;        for i in 0..MAXINDEX x repeat
+;          x.i:=min (x.i)
+;        HashCheck x
+;      STRINGP x => HashCheck x
+;      x
+;    HashCheck x ==
+;      y:=HGET($hash,x)
+;      y => y
+;      HPUT($hash,x,x)
+;      x
+;  x
+;
+;
+
+(DEFUN |minimalise,HashCheck| (|x|)
+ (PROG (|y|)
+  (RETURN
+   (SEQ
+    (SPADLET |y| (HGET |$hash| |x|))
+    (IF |y| (EXIT |y|))
+    (HPUT |$hash| |x| |x|)
+    (EXIT |x|))))) 
+
+(DEFUN |minimalise,min| (|x|)
+ (PROG (|y| |z|)
+  (RETURN
+   (SEQ
+    (SPADLET |y| (HGET |$hash| |x|))
+    (IF |y| (EXIT |y|))
+    (IF (PAIRP |x|)
+     (EXIT
+      (SEQ
+       (IF (BOOT-EQUAL |x| (QUOTE (QUOTE T))) (EXIT (QUOTE (QUOTE T))))
+       (SPADLET |z| (|minimalise,min| (CAR |x|)))
+       (IF (NULL (EQ |z| (CAR |x|))) (RPLACA |x| |z|) NIL)
+       (SPADLET |z| (|minimalise,min| (CDR |x|)))
+       (IF (NULL (EQ |z| (CDR |x|))) (RPLACD |x| |z|) NIL)
+       (EXIT (|minimalise,HashCheck| |x|)))))
+    (IF (REFVECP |x|)
+     (EXIT
+      (SEQ
+       (DO ((#0=#:G166068 (MAXINDEX |x|)) (|i| 0 (QSADD1 |i|)))
+           ((QSGREATERP |i| #0#) NIL)
+        (SEQ (EXIT (SETELT |x| |i| (|minimalise,min| (ELT |x| |i|))))))
+       (EXIT (|minimalise,HashCheck| |x|)))))
+    (IF (STRINGP |x|) (EXIT (|minimalise,HashCheck| |x|)))
+    (EXIT |x|))))) 
+
+(DEFUN |minimalise| (|x|)
+ (PROG (|$hash|)
+ (DECLARE (SPECIAL |$hash|))
+  (RETURN
+   (PROGN
+    (SPADLET |$hash| (MAKE-HASHTABLE (QUOTE UEQUAL)))
+    (|minimalise,min| |x|) |x|)))) 
+ 
+@
+\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 24014d4..c78c59f 100644
--- a/src/interp/debugsys.lisp.pamphlet
+++ b/src/interp/debugsys.lisp.pamphlet
@@ -94,7 +94,7 @@ loaded by hand we need to establish a value.
       (thesymb "/int/interp/clam.lisp")
       (thesymb "/int/interp/clammed.lisp")
       (thesymb "/int/interp/compat.lisp")
-      (thesymb "/int/interp/compress.clisp")
+      (thesymb "/int/interp/compress.lisp")
       (thesymb "/int/interp/cparse.clisp")
       (thesymb "/int/interp/cstream.clisp")
       (thesymb "/int/interp/database.clisp")
