diff --git a/Makefile b/Makefile
index e1d1d1f..3080bac 100644
--- a/Makefile
+++ b/Makefile
@@ -55,9 +55,9 @@ BYE:=bye
 #GCLVERSION=gcl-2.6.8pre4
 GCLVERSION=gcl-2.6.8pre7
 GCLDIR:=${LSP}/${GCLVERSION}
-GCLOPTS="--enable-vssize=65536*2 --disable-locbfd --disable-dynsysbfd \
+GCLOPTS="--enable-vssize=65536*2 --enable-locbfd --disable-dynsysbfd \
          --disable-statsysbfd --enable-maxpage=512*1024 --disable-xgcl \
-         --disable-tkconfig --enable-custreloc --disable-tkconfig"
+         --disable-tkconfig"
 LISP:=lsp
 
 ##### C related variables
diff --git a/Makefile.pamphlet b/Makefile.pamphlet
index 466e01d..b622b8f 100644
--- a/Makefile.pamphlet
+++ b/Makefile.pamphlet
@@ -1053,6 +1053,7 @@ all: rootdirs noweb srcsetup lspdir srcdir
 <<Makefile.mandriva>>=
 
 <<ENVDEFAULTS>>
+<<GCLOPTS-CUSTRELOC>>
 <<ENV>>
 
 all: rootdirs noweb srcsetup lspdir srcdir
@@ -1163,6 +1164,7 @@ all: rootdirs noweb srcsetup lspdir srcdir
 <<Makefile.opensuse>>=
 
 <<ENVDEFAULTS>>
+<<GCLOPTS-CUSTRELOC>>
 <<ENV>>
 
 all: rootdirs noweb srcsetup lspdir srcdir
@@ -1210,6 +1212,7 @@ all: rootdirs noweb srcsetup lspdir srcdir
 <<ENVDEFAULTS>>
 XLIB=/usr/lib
 LDF:=" -L/usr/X11R6/lib -L/usr/lib ${XLIB}/libXpm.a -lXpm"
+<<GCLOPTS-CUSTRELOC>>
 <<ENV>>
 
 all: rootdirs noweb srcsetup lspdir srcdir
@@ -1280,6 +1283,7 @@ all: rootdirs noweb srcsetup lspdir srcdir
 <<Makefile.fedora>>=
 
 <<ENVDEFAULTS>>
+<<GCLOPTS-CUSTRELOC>>
 <<ENV>>
 
 
diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index 4eb259c..cd5b077 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -3791,6 +3791,83 @@ Note that incRgen recursively wraps this function in a delay list.
 
 \chapter{The Token Scanner}
 
+\defvar{SPACE}
+\begin{chunk}{postvars}
+(eval-when (eval load)
+  (defvar SPACE (qenum '"    " 0)))
+
+\end{chunk}
+
+\defvar{ESCAPE}
+\begin{chunk}{postvars}
+(eval-when (eval load)
+  (defvar ESCAPE (qenum '"_   " 0)))
+
+\end{chunk}
+
+\defvar{STRINGCHAR}
+\begin{chunk}{postvars}
+(eval-when (eval load)
+  (defvar STRINGCHAR (qenum '"\"   " 0)))
+
+\end{chunk}
+
+\defvar{PLUSCOMMENT}
+\begin{chunk}{postvars}
+(eval-when (eval load)
+  (defvar PLUSCOMMENT (qenum '"+   " 0)))
+
+\end{chunk}
+
+\defvar{MINUSCOMMENT}
+\begin{chunk}{postvars}
+(eval-when (eval load)
+  (defvar MINUSCOMMENT (qenum '"-   " 0)))
+
+\end{chunk}
+
+\defvar{RADIXCHAR}
+\begin{chunk}{postvars}
+(eval-when (eval load)
+  (defvar RADIXCHAR (qenum '"r   " 0)))
+
+\end{chunk}
+
+\defvar{DOT}
+\begin{chunk}{postvars}
+(eval-when (eval load)
+  (defvar DOT (qenum '".   " 0)))
+
+\end{chunk}
+
+\defvar{EXPONENT1}
+\begin{chunk}{postvars}
+(eval-when (eval load)
+  (defvar EXPONENT1 (qenum '"E   " 0)))
+
+\end{chunk}
+
+\defvar{EXPONENT2}
+\begin{chunk}{postvars}
+(eval-when (eval load)
+  (defvar EXPONENT2 (qenum '"e   " 0)))
+
+\end{chunk}
+
+\defvar{CLOSEPAREN}
+\begin{chunk}{postvars}
+(eval-when (eval load)
+  (defvar CLOSEPAREN   (qenum '")   " 0)))
+
+\end{chunk}
+
+\defvar{QUESTION}
+\begin{chunk}{postvars}
+(eval-when (eval load)
+  (defvar QUESTION (qenum '"?   " 0)))
+
+\end{chunk}
+
 \defvar{scanKeyWords}
 \begin{chunk}{postvars}
 (eval-when (eval load)
@@ -4052,7 +4129,7 @@ returning the token-dq and the rest of the line-stream
    ((null n) n)
    (t
     (cond
-     ((char= (char ln 0) #\))
+     ((equal (qenum ln 0) CLOSEPAREN)
       (cond
         ((|incPrefix?| "command" 1 ln) t)
         (t nil)))
@@ -4108,15 +4185,15 @@ returning the token-dq and the rest of the line-stream
    (cond
     ((|startsComment?|) (|scanComment|) nil)
     ((|startsNegComment?|) (|scanNegComment|) nil)
-    ((char= c #\?)
+    ((equal c QUESTION)
       (setq |$n| (+ |$n| 1))
       (|lfid| "?"))
     ((|punctuation?| c) (|scanPunct|))
     ((|startsId?| ch) (|scanWord| nil))
-    ((char= c #\space) (|scanSpace|) nil)
-    ((char= c #\") (|scanString|))
+    ((equal c SPACE) (|scanSpace|) nil)
+    ((equal c STRINGCHAR) (|scanString|))
     ((|digit?| ch) (|scanNumber|))
-    ((char= c #\_) (|scanEscape|))
+    ((equal c ESCAPE) (|scanEscape|))
     (t (|scanError|))))
   (cond
     ((null b) nil)
@@ -4146,11 +4223,11 @@ To pair badge and badgee
   (cond
    ((< |$n| |$sz|)
     (cond
-     ((char= (qenum |$ln| |$n|) #\+)
+     ((equal (qenum |$ln| |$n|) PLUSCOMMENT)
        (setq www (+ |$n| 1))
        (cond
         ((not (< www |$sz|)) nil)
-        (t (char= (qenum |$ln| www) #\+))))
+        (t (equal (qenum |$ln| www) PLUSCOMMENT))))
      (t nil)))
    (t nil))))
 
@@ -4191,11 +4268,11 @@ To pair badge and badgee
   (cond
    ((< |$n| |$sz|)
     (cond
-     ((char= (qenum |$ln| |$n|) #\-)
+     ((equal (qenum |$ln| |$n|) MINUSCOMMENT)
        (setq www (+ |$n| 1))
        (cond
         ((not (< www |$sz|)) nil)
-        (t (char= (qenum |$ln| www) #\-))))
+        (t (equal (qenum |$ln| www) MINUSCOMMENT))))
      (t nil)))
    (t nil))))
 
@@ -4418,7 +4495,7 @@ To pair badge and badgee
       (t
        (setq |$n| (+ |$n| 1)))))))
   (cond
-   ((or (equal |$n| l) (not (char= (qenum |$ln| |$n|) #\_)))
+   ((or (equal |$n| l) (not (equal (qenum |$ln| |$n|) ESCAPE)))
     (cond
       ((and (equal n |$n|) zro) "0")
       (t (substring |$ln| n (- |$n| n)))))
@@ -4507,7 +4584,7 @@ To pair badge and badgee
          nil)
         (t nil)))
      ((equal |$n| n1) t)
-     ((char= (qenum |$ln| n1) #\_)
+     ((equal (qenum |$ln| n1) ESCAPE)
        (setq |$n| (+ n1 1))
        (|scanEsc|)
        nil)
@@ -4582,7 +4659,7 @@ To pair badge and badgee
     (setq n |$n|)
     (setq c (qenum |$ln| |$n|))
     (cond
-     ((or (char= c #\E) (char= c #\e))
+     ((or (equal c EXPONENT1) (equal c EXPONENT2))
       (setq |$n| (+ |$n| 1))
       (cond
        ((not (< |$n| |$sz|))
@@ -4594,7 +4671,7 @@ To pair badge and badgee
        (t
         (setq c1 (qenum |$ln| |$n|))
         (cond
-         ((or (char= c1 #\+) (char= c1 #\-))
+         ((or (equal c1 PLUSCOMMENT) (equal c1 MINUSCOMMENT))
            (setq |$n| (+ |$n| 1))
            (cond
             ((not (< |$n| |$sz|))
@@ -4604,7 +4681,7 @@ To pair badge and badgee
              (setq e (|spleI| #'|digit?|))
              (|lffloat| a w
               (cond
-               ((char= c1 #\-)
+               ((equal c1 MINUSCOMMENT)
                 (concat "-" e))
                (t e))))
             (t
@@ -4649,7 +4726,7 @@ To pair badge and badgee
   (setq l |$sz|)
   (setq endid (|posend| |$ln| |$n|))
   (cond
-   ((or (equal endid l) (not (char= (qenum |$ln| endid) #\_)))
+   ((or (equal endid l) (not (equal (qenum |$ln| endid) ESCAPE)))
     (setq |$n| endid)
     (list b (substring |$ln| n1 (- endid n1))))
    (t
@@ -4809,13 +4886,13 @@ NOTE: do not replace ``lyne'' with ``line''
   (cond
    ((not (< |$n| |$sz|))
     (|lfinteger| a))
-   ((not (char= (qenum |$ln| |$n|) #\r))
+   ((not (equal (qenum |$ln| |$n|) RADIXCHAR))
     (cond
-     ((and |$floatok| (char= (qenum |$ln| |$n|) #\.))
+     ((and |$floatok| (equal (qenum |$ln| |$n|) DOT))
       (setq n |$n|)
       (setq |$n| (+ |$n| 1))
       (cond
-       ((and (< |$n| |$sz|) (char= (qenum |$ln| |$n|) #\.))
+       ((and (< |$n| |$sz|) (equal (qenum |$ln| |$n|) DOT))
         (setq |$n| n)
         (|lfinteger| a))
        (t
@@ -4829,11 +4906,11 @@ NOTE: do not replace ``lyne'' with ``line''
     (cond
      ((not (< |$n| |$sz|))
       (|lfrinteger| a w))
-      ((char= (qenum |$ln| |$n|) #\.)
+      ((equal (qenum |$ln| |$n|) DOT)
        (setq n |$n|)
        (setq |$n| (+ |$n| 1))
        (cond
-        ((and (< |$n| |$sz|) (char= (qenum |$ln| |$n|) #\.))
+        ((and (< |$n| |$sz|) (equal (qenum |$ln| |$n|) DOT))
          (setq |$n| n)
          (|lfrinteger| a w))
         (t 
@@ -23321,7 +23398,7 @@ The last line of output is a summary:
    (setq outfile (concatenate 'string (subseq namestring 0) "." extension)))
   (if (probe-file outfile)
    (regress outfile)
-   (format t (concatenate 'string outfile ~%" file not found")))))
+   (format t (concatenate 'string outfile "~% file not found")))))
 
 \end{chunk}
 
@@ -31034,8 +31111,8 @@ matrix.input. The ``.input.pamphlet'' is optional.
 
 \begin{chunk}{defun tangle}
 (defun |tangle| (arg)
- (let (|$InteractiveMode| fullopt namestring dot1 dot2 outfile 
-      (chunkname "*") (extension "input"))      
+ (let (|$InteractiveMode| namestring dot1 dot2 outfile 
+       (chunkname "*") (extension "input"))      
  (declare (special |$InteractiveMode| |$options|))
   (setq |$InteractiveMode| t)
   (setq namestring (symbol-name (car arg)))
diff --git a/changelog b/changelog
index 3277152..7fe7659 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+20120410 tpd src/axiom-website/patches.html 20120410.01.tpd.patch
+20120410 tpd books/bookvol5 fix parsing for 64 bit systems
+20120410 tpd Makefile.pamphlet add ubuntu64 with 64 bit patch
+20120410 tpd Makefile add ubuntu64 with 64 bit patch
 20120407 tpd src/axiom-website/patches.html 20120407.02.tpd.patch
 20120407 tpd Makefile fix typo in GCLOPTS line
 20120407 tpd src/axiom-website/patches.html 20120407.01.c1m.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 1bf30e1..e878e99 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3874,5 +3874,7 @@ src/axiom-website/download.html add debian binary<br/>
 zips/gcl-2.6.8pre7.tgz lisp fixes from Camm Maquire<br/>
 <a href="patches/20120407.02.tpd.patch">20120407.02.tpd.patch</a>
 Makefile fix typo in GCLOPTS line<br/>
+<a href="patches/20120410.01.tpd.patch">20120410.01.tpd.patch</a>
+books/bookvol5 fix parsing for 64 bit systems<br/>
  </body>
 </html>
