diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index 4055e41..88813ed 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -52285,6 +52285,196 @@ There are 8 parts of an htPage:
\end{chunk}
+\section{Constructor Page Menu}
+
+\defun{dbShowCons}{dbShowCons}
+\calls{dbShowCons}{htpProperty}
+\calls{dbShowCons}{pmTransFilter}
+\calls{dbShowCons}{ifcar}
+\calls{dbShowCons}{dbGetInputString}
+\calls{dbShowCons}{bcErrorPage}
+\calls{dbShowCons}{constructor?}
+\calls{dbShowCons}{superMatch?}
+\calls{dbShowCons}{downcase}
+\calls{dbShowCons}{stringimage}
+\calls{dbShowCons}{emptySearchPage}
+\calls{dbShowCons}{htInitPageNoScroll}
+\calls{dbShowCons}{htCopyProplist}
+\calls{dbShowCons}{htpSetProperty}
+\calls{dbShowCons}{dbShowCons}
+\calls{dbShowCons}{member}
+\calls{dbShowCons}{dbShowCons1}
+\usesdollar{dbShowCons}{exposedOnlyIfTrue}
+\begin{chunk}{defun dbShowCons}
+(defun |dbShowCons| (&rest args &AUX options key htPage)
+ (let (cAlist filter abbrev? conname subject u htPage key options)
+ (declare (special |$exposedOnlyIfTrue|))
+ (setq htPage (first args))
+ (setq key (second args))
+ (setq options (cddr args))
+ (setq cAlist (|htpProperty| htPage '|cAlist|))
+ (cond
+ ((eq key '|filter|)
+ (setq filter
+ (|pmTransFilter| (or (ifcar options) (|dbGetInputString| htPage))))
+ (cond
+ ((and (consp filter) (eq (car filter) '|error|))
+ (|bcErrorPage| filter))
+ (t
+ (setq abbrev? (eq (|htpProperty| htPage '|exclusion|) '|abbrs|))
+ (setq u
+ (loop for x in cAlist
+ when (progn
+ (setq conname (caar x))
+ (setq subject (if abbrev? (|constructor?| conname) conname))
+ (|superMatch?| filter (downcase (stringimage subject))))
+ collect x))
+ (cond
+ ((null u)
+ (|emptySearchPage| "constructor" filter))
+ (t
+ (setq htPage (|htInitPageNoScroll| (|htCopyProplist| htPage)))
+ (|htpSetProperty| htPage '|cAlist| u)
+ (|dbShowCons| htPage (|htpProperty| htPage '|exclusion|)))))))
+ (t
+ (when (member key '(|exposureOn| |exposureOff|))
+ (setq |$exposedOnlyIfTrue| (eq key '|exposureOn|))
+ (setq key (|htpProperty| htPage '|exclusion|)))
+ (|dbShowCons1| htPage cAlist key)))))
+
+\end{chunk}
+
+\defun{conPageChoose}{conPageChoose}
+\calls{conPageChoose}{getConstructorForm}
+\calls{conPageChoose}{dbShowCons1}
+\begin{chunk}{defun conPageChoose}
+(defun |conPageChoose| (conname)
+ (let (cAlist)
+ (setq cAlist (list (cons (|getConstructorForm| conname) t)))
+ (|dbShowCons1| nil cAlist '|names|)))
+
+\end{chunk}
+
+\defun{dbShowCons1}{dbShowCons1}
+\calls{dbShowCons1}{remdup}
+\calls{dbShowCons1}{isExposedConstructor}
+\calls{dbShowCons1}{opOf}
+\calls{dbShowCons1}{conPage}
+\calls{dbShowCons1}{htpProperty}
+\calls{dbShowCons1}{union}
+\calls{dbShowCons1}{dbConstructorKind}
+\calls{dbShowCons1}{htCopyProplist}
+\calls{dbShowCons1}{htInitPageNoScroll}
+\calls{dbShowCons1}{dbConsHeading}
+\calls{dbShowCons1}{htSayStandard}
+\calls{dbShowCons1}{htpSetProperty}
+\calls{dbShowCons1}{bcNameConTable}
+\calls{dbShowCons1}{bcAbbTable}
+\calls{dbShowCons1}{getCDTEntry}
+\calls{dbShowCons1}{getdatabase}
+\calls{dbShowCons1}{bcUnixTable}
+\calls{dbShowCons1}{listSort}
+\calls{dbShowCons1}{function}
+\calls{dbShowCons1}{qlesseqp}
+\calls{dbShowCons1}{dbShowConsDoc}
+\calls{dbShowCons1}{isExposedConstructor}
+\calls{dbShowCons1}{dbShowConditions}
+\calls{dbShowCons1}{bcConTable}
+\calls{dbShowCons1}{assocleft}
+\calls{dbShowCons1}{dbShowConsKinds}
+\calls{dbShowCons1}{dbConsExposureMessage}
+\calls{dbShowCons1}{dbPresentCons}
+\calls{dbShowCons1}{htShowPageNoScroll}
+\usesdollar{dbShowCons1}{conformsAreDomains}
+\usesdollar{dbShowCons1}{exposedOnlyIfTrue}
+\begin{chunk}{defun dbShowCons1}
+(defun |dbShowCons1| (htPage cAlist key)
+ (let (|$conformsAreDomains| item conlist kinds a kind
+ proplist page u fn y flist result)
+ (declare (special |$conformsAreDomains| |$exposedOnlyIfTrue|))
+ (setq conlist
+ (remdup
+ (dolist (x cAlist result)
+ (push
+ (if |$exposedOnlyIfTrue|
+ (|isExposedConstructor| (|opOf| (car x)))
+ (car x))
+ result))))
+ (cond
+ ((and (consp conlist) (eq (qcdr conlist) nil))
+ (|conPage|
+ (if (and htPage (|htpProperty| htPage '|domname|))
+ (car conlist)
+ (|opOf| (car conlist)))))
+ (t
+ (setq conlist (loop for x in conlist collect (|opOf| x)))
+ (setq kinds
+ (apply #'|union|
+ (loop for x in conlist collect (|dbConstructorKind| x))))
+ (setq kind
+ (if (and (consp kinds) (eq (qcdr kinds) nil))
+ (qcar kinds)
+ '|constructor|))
+ (setq proplist (when htPage (|htCopyProplist| htPage)))
+ (setq page
+ (|htInitPageNoScroll| proplist
+ (|dbConsHeading| htPage conlist key kind)))
+ (if (setq u (|htpProperty| page '|specialMessage|))
+ (apply (car u) (cdr u)))
+ (|htSayStandard| "\\beginscroll ")
+ (|htpSetProperty| page '|cAlist| cAlist)
+ (setq |$conformsAreDomains| (|htpProperty| page '|domname|))
+ (cond
+ ((eq key '|names|) (|bcNameConTable| conlist))
+ ((eq key '|abbrs|)
+ (|bcAbbTable|
+ (loop for con in conlist collect (|getCDTEntry| con t))))
+ ((eq key '|files|)
+ (setq flist
+ (for con in conlist collect (getdatabase con 'sourcefile)))
+ (|bcUnixTable|
+ (|listSort| (|function| glesseqp) (remdup flist))))
+ ((eq key '|documentation|) (|dbShowConsDoc| page conlist))
+ (t
+ (when |$exposedOnlyIfTrue|
+ (setq cAlist
+ (loop for x in cAlist
+ when (|isExposedConstructor| (|opOf| (car x)))
+ collect x)))
+ (cond
+ ((eq key '|conditions|) (|dbShowConditions| page cAlist kind))
+ ((eq key '|parameters|)
+ (|bcConTable| (remdup (assocleft cAlist))))
+ ((eq key '|kinds|) (|dbShowConsKinds| cAlist)))))
+ (|dbConsExposureMessage|)
+ (|htSayStandard| '|\\endscroll |)
+ (|dbPresentCons| page kind key)
+ (|htShowPageNoScroll|)))))
+
+\end{chunk}
+
+\defun{dbConsExposureMessage}{dbConsExposureMessage}
+\calls{dbConsExposureMessage}{htSay}
+\usesdollar{dbConsExposureMessage}{atLeastOneUnexposed}
+\begin{chunk}{defun dbConsExposureMessage}
+(defun |dbConsExposureMessage| ()
+ (declare (special |$atLeastOneUnexposed|))
+ (when |$atLeastOneUnexposed|
+ (|htSay| "\\newline{}-------------\\newline{}{\\em *} = unexposed")))
+
+\end{chunk}
+
+\defun{dbShowConsKindsFilter}{dbShowConsKindsFilter}
+\calls{dbShowConsKindsFilter}{htpSetProperty}
+\calls{dbShowConsKindsFilter}{dbShowCons}
+\calls{dbShowConsKindsFilter}{htpProperty}
+\begin{chunk}{defun dbShowConsKindsFilter}
+(defun |dbShowConsKindsFilter| (htPage args)
+ (|htpSetProperty| htPage '|cAlist| (second args))
+ (|dbShowCons| htPage (|htpProperty| htPage '|exclusion|)))
+
+\end{chunk}
+
\chapter{The Interpreter}
\begin{chunk}{Interpreter}
(setq *print-array* nil)
@@ -52873,6 +53063,7 @@ There are 8 parts of an htPage:
\getchunk{defun conOpPage}
\getchunk{defun conOpPage1}
\getchunk{defun conPage}
+\getchunk{defun conPageChoose}
\getchunk{defun conPageConEntry}
\getchunk{defun conPageFastPath}
\getchunk{defun constoken}
@@ -52887,6 +53078,7 @@ There are 8 parts of an htPage:
\getchunk{defun dbAddChainDomain}
\getchunk{defun dbAddDocTable}
\getchunk{defun dbCompositeWithMap}
+\getchunk{defun dbConsExposureMessage}
\getchunk{defun dbConstructorDoc}
\getchunk{defun dbConstructorDoc,hn}
\getchunk{defun dbConstructorDoc,gn}
@@ -52897,6 +53089,9 @@ There are 8 parts of an htPage:
\getchunk{defun dbGetDocTable,hn}
\getchunk{defun dbNonEmptyPattern}
\getchunk{defun dbSearchOrder}
+\getchunk{defun dbShowCons}
+\getchunk{defun dbShowCons1}
+\getchunk{defun dbShowConsKindsFilter}
\getchunk{defun dbSubConform}
\getchunk{defun decideHowMuch}
\getchunk{defun defaultTargetFE}
diff --git a/changelog b/changelog
index 2470b64..50e5235 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20130621 tpd src/axiom-website/patches.html 20130621.01.tpd.patch
+20130621 tpd src/interp/br-con.lisp move code to bookvol5
+20130621 tpd books/bookvol5 move code from br-con.lisp
20130618 tpd src/axiom-website/patches.html 20130618.01.tpd.patch
20130618 tpd src/interp/br-con.lisp move code to bookvol5
20130618 tpd books/bookvol5 move code from br-con.lisp
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index b1c4321..ea71e73 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4212,6 +4212,8 @@ books/bookvol8.1 add crc test section 2.8, 2.9
books/bookvol5 move code from br-con.lisp
20130618.01.tpd.patch
books/bookvol5 move code from br-con.lisp
+20130621.01.tpd.patch
+books/bookvol5 move code from br-con.lisp