From 9e4ac39bf6f3f4553c2bef0fa7b6feed05810f75 Mon Sep 17 00:00:00 2001
From: Tim Daly <daly@axiom-developer.org>
Date: Tue, 19 May 2015 15:45:34 -0400
Subject: [PATCH] src/interp/vmlisp.lisp rewrite character handling functions

Use common lisp native forms.
---
 books/bookvol5.pamphlet           |    2 +-
 books/bookvol9.pamphlet           |  221 +++++++++++----------------
 changelog                         |  303 +++++++++++++++++++-----------------
 patch                             |    4 +-
 src/axiom-website/patches.html    |    2 +
 src/interp/br-con.lisp.pamphlet   |  186 +++++++++++------------
 src/interp/format.lisp.pamphlet   |    8 +-
 src/interp/g-util.lisp.pamphlet   |  130 +++++------------
 src/interp/hashcode.lisp.pamphlet |    2 +-
 src/interp/i-eval.lisp.pamphlet   |    5 +-
 src/interp/i-map.lisp.pamphlet    |    2 +-
 src/interp/i-output.lisp.pamphlet |   12 +-
 src/interp/match.lisp.pamphlet    |    8 +-
 src/interp/newfort.lisp.pamphlet  |    8 +-
 src/interp/nrungo.lisp.pamphlet   |    2 +-
 src/interp/record.lisp.pamphlet   |   16 +-
 src/interp/server.lisp.pamphlet   |    2 +-
 src/interp/topics.lisp.pamphlet   |   17 +-
 src/interp/vmlisp.lisp.pamphlet   |   41 -----
 19 files changed, 420 insertions(+), 551 deletions(-)

diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index 40793fb..14ff8eb 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -57747,7 +57747,7 @@ There are 8 parts of an htPage:
      (when (and (string= kind "category")
                 (|dbpHasDefaultCategory?| xpart))
        (|htSay| "This category has default package ")
-       (|bcCon| (concat name (|char| '&)) ""))
+       (|bcCon| (concat name #\&) ""))
      (|htSayStandard| "\\newline") 
      (|htBeginMenu| 3)
      (|htSayStandard| "\\item ")
diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index a2191c6..f3f458f 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -8958,7 +8958,7 @@ where item has form
 (defun |isCategoryPackageName| (nam)
  (let (p)
   (setq p (pname (|opOf| nam)))
-  (equal (elt p (maxindex p)) (|char| '&))))
+  (equal (elt p (maxindex p)) #\&)))
 
 \end{chunk}
 
@@ -10532,8 +10532,8 @@ optPackageCall.
       ((eq domain '|$NoValueMode|) env)
       ((or (null (identp domain))
            (and (qslessp 2 (|#| (setq s (princ-to-string domain))))
-                (eq (|char| '|#|) (elt s 0))
-                (eq (|char| '|#|) (elt s 1))))
+                (eq #\# (elt s 0))
+                (eq #\# (elt s 1))))
             env)
       ((member domain (|getDomainsInScope| env)) env)
       ((|isLiteral| domain env) env)
@@ -20498,23 +20498,19 @@ digraph hierarchy {
 \calls{checkBeginEnd}{substring?}
 \calls{checkBeginEnd}{checkDocError}
 \calls{checkBeginEnd}{member}
-\refsdollar{checkBeginEnd}{charRbrace}
-\refsdollar{checkBeginEnd}{charLbrace}
 \refsdollar{checkBeginEnd}{beginEndList}
 \refsdollar{checkBeginEnd}{htMacroTable}
-\refsdollar{checkBeginEnd}{charBack}
 \begin{chunk}{defun checkBeginEnd}
 (defun |checkBeginEnd| (u)
  (let (x y beginEndStack)
- (declare (special |$charRbrace| |$charLbrace| |$beginEndList| |$charBack|
-                   |$htMacroTable|))
+ (declare (special |$beginEndList| |$htMacroTable|))
   (loop while u
    do
     (setq x (car u))
     (cond
-     ((and (stringp x) (equal (elt x 0) |$charBack|) (> (|#| x) 2)
+     ((and (stringp x) (equal (elt x 0) #\\) (> (|#| x) 2)
            (null (hget |$htMacroTable| x)) (null (equal x "\\spadignore"))
-           (equal (ifcar (ifcdr u)) |$charLbrace|)
+           (equal (ifcar (ifcdr u)) #\{)
            (null (or (|substring?| "\\radiobox" x 0)
                      (|substring?| "\\inputbox" x 0))))
        (|checkDocError| (list '|Unexpected HT command: | x)))
@@ -20522,8 +20518,8 @@ digraph hierarchy {
       (setq beginEndStack (cons '|items| beginEndStack)))
      ((equal x "\\begin")
       (cond
-       ((and (consp u) (consp (qcdr u)) (equal (qcar (qcdr u)) |$charLbrace|)
-             (consp (qcddr u)) (equal (car (qcdddr u)) |$charRbrace|))
+       ((and (consp u) (consp (qcdr u)) (equal (qcar (qcdr u)) #\{)
+             (consp (qcddr u)) (equal (car (qcdddr u)) #\}))
          (setq y (qcaddr u))
          (cond
           ((null (|member| y |$beginEndList|))
@@ -20542,8 +20538,8 @@ digraph hierarchy {
                 (ifcar beginEndStack) "}..")))))
      ((equal x "\\end")
       (cond
-       ((and (consp u) (consp (qcdr u)) (equal (qcar (qcdr u)) |$charLbrace|)
-             (consp (qcddr u)) (equal (car (qcdddr u)) |$charRbrace|))
+       ((and (consp u) (consp (qcdr u)) (equal (qcar (qcdr u)) #\{)
+             (consp (qcddr u)) (equal (car (qcdddr u)) #\}))
          (setq y (qcaddr u))
          (cond
           ((equal y (ifcar beginEndStack))
@@ -20571,14 +20567,10 @@ digraph hierarchy {
 \refsdollar{checkDecorate}{checkingXmptex?}
 \refsdollar{checkDecorate}{charExclusions}
 \refsdollar{checkDecorate}{argl}
-\refsdollar{checkDecorate}{charBack}
-\refsdollar{checkDecorate}{charRbrace}
-\refsdollar{checkDecorate}{charLbrace}
 \begin{chunk}{defun checkDecorate}
 (defun |checkDecorate| (u)
  (let (x count mathSymbolsOk spadflag verbatim v xcount acc)
- (declare (special |$charLbrace| |$charRbrace| |$charBack| |$argl|
-                   |$charExclusions| |$checkingXmptex?|))
+ (declare (special |$argl| |$charExclusions| |$checkingXmptex?|))
   (setq count 0)
   (loop while u 
    do
@@ -20600,9 +20592,9 @@ digraph hierarchy {
                       "\\spadop" "\\spad" "\\spadignore" "\\spadpaste"
                       "\\spadcommand" "\\footnote"))
          (setq spadflag count))
-       ((equal x |$charLbrace|)
+       ((equal x #\{)
          (setq count (1+ count)))
-       ((equal x |$charRbrace|)
+       ((equal x #\})
          (setq count (1- count))
          (when (eql mathSymbolsOk count) (setq mathSymbolsOk nil))
          (when (eql spadflag count) (setq spadflag nil)))
@@ -20621,15 +20613,15 @@ digraph hierarchy {
        (setq verbatim t)
        (cons x acc))
       ((and (string= x "\\begin")
-            (equal (car (setq v (ifcdr u))) |$charLbrace|)
+            (equal (car (setq v (ifcdr u))) #\{)
             (string= (car (setq v (ifcdr v))) "detail")
-            (equal (car (setq v (ifcdr v))) |$charRbrace|))
+            (equal (car (setq v (ifcdr v))) #\}))
         (setq u v)
         (cons "\\blankline " acc))
       ((and (string= x "\\end")
-            (equal (car (setq v (ifcdr u))) |$charLbrace|)
+            (equal (car (setq v (ifcdr u))) #\{)
             (string= (car (setq v (ifcdr v))) "detail")
-            (equal (car (setq v (ifcdr v))) |$charRbrace|))
+            (equal (car (setq v (ifcdr v))) #\}))
         (setq u v) 
         acc)
       ((or (char= x #\$) (string= x "$"))
@@ -20647,27 +20639,27 @@ digraph hierarchy {
                      (alpha-char-p x) 
                      (null (member x |$charExclusions|)))
                 (|member| x |$argl|)))
-        (cons |$charRbrace| (cons x (cons |$charLbrace| (cons "\\spad" acc)))))
+        (cons #\} (cons x (cons #\{ (cons "\\spad" acc)))))
       ((and (null spadflag)
             (or (and (stringp x)
-                     (null (equal (elt x 0) |$charBack|))
+                     (null (equal (elt x 0) #\\))
                      (digitp (elt x (maxindex x))))
                 (|member| x '("true" "false"))))
-        (cons |$charRbrace| (cons x (cons |$charLbrace| (cons "\\spad" acc)))))
+        (cons #\} (cons x (cons #\{ (cons "\\spad" acc)))))
       (t
        (setq xcount (|#| x))
        (cond
         ((and (eql xcount 3)
               (char= (elt x 1) #\t)
               (char= (elt x 2) #\h))
-          (cons "th" (cons |$charRbrace|
-            (cons (elt x 0) (cons |$charLbrace| (cons "\\spad" acc))))))
+          (cons "th" (cons #\}
+            (cons (elt x 0) (cons #\{ (cons "\\spad" acc))))))
         ((and (eql xcount 4)
               (char= (elt x 1) #\-)
               (char= (elt x 2) #\t)
               (char= (elt x 3) #\h))
-         (cons "-th" (cons |$charRbrace|
-           (cons (elt x 0) (cons |$charLbrace| (cons "\\spad" acc))))))
+         (cons "-th" (cons #\}
+           (cons (elt x 0) (cons #\{ (cons "\\spad" acc))))))
         ((or (and (eql xcount 2)
                   (char= (elt x 1) #\i))
              (and (null spadflag)
@@ -20675,8 +20667,8 @@ digraph hierarchy {
                   (> 4 xcount)
                   (null (|member| x '("th" "rd" "st")))
                   (|hasNoVowels| x)))
-         (cons |$charRbrace|
-           (cons x (cons |$charLbrace| (cons "\\spad" acc)))))
+         (cons #\}
+           (cons x (cons #\{ (cons "\\spad" acc)))))
         (t
          (cons (|checkAddBackSlashes| x) acc))))))
     (setq u (cdr u)))
@@ -20688,12 +20680,10 @@ digraph hierarchy {
 \calls{checkDecorateForHt}{checkDocError}
 \calls{checkDecorateForHt}{member}
 \refsdollar{checkDecorateForHt}{checkingXmptex?}
-\refsdollar{checkDecorateForHt}{charRbrace}
-\refsdollar{checkDecorateForHt}{charLbrace}
 \begin{chunk}{defun checkDecorateForHt}
 (defun |checkDecorateForHt| (u)
  (let (x count spadflag)
- (declare (special |$checkingXmptex?| |$charRbrace| |$charLbrace|))
+ (declare (special |$checkingXmptex?|))
   (setq count 0)
   (setq spadflag nil)
   (loop while u
@@ -20707,9 +20697,9 @@ digraph hierarchy {
     ((|member| x '("\\s" "\\spadop" "\\spadtype" "\\spad" "\\spadpaste"
                    "\\spadcommand" "\\footnote"))
      (setq spadflag count))
-    ((equal x |$charLbrace|)
+    ((equal x #\{)
      (setq count (1+ count)))
-    ((equal x |$charRbrace|)
+    ((equal x #\})
      (setq count (1- count))
      (when (equal spadflag count) (setq spadflag nil)))
     ((and (null spadflag) (|member| x '("+" "*" "=" "==" "->")))
@@ -20740,21 +20730,20 @@ digraph hierarchy {
 \calls{checkFixCommonProblem}{ifcar}
 \calls{checkFixCommonProblem}{ifcdr}
 \calls{checkFixCommonProblem}{checkDocError}
-\refsdollar{checkFixCommonProblem}{charLbrace}
 \refsdollar{checkFixCommonProblem}{HTspadmacros}
 \begin{chunk}{defun checkFixCommonProblem}
 (defun |checkFixCommonProblem| (u)
  (let (x next acc)
- (declare (special |$charLbrace| |$HTspadmacros|))
+ (declare (special |$HTspadmacros|))
   (loop while u
    do
     (setq x (car u))
     (cond
-     ((and (equal x |$charLbrace|)
+     ((and (equal x #\{)
            (|member| (setq next (ifcar (cdr u))) |$HTspadmacros|)
-           (not (equal (ifcar (ifcdr (cdr u))) |$charLbrace|)))
+           (not (equal (ifcar (ifcdr (cdr u))) #\{)))
        (|checkDocError| (list "Reversing " next " and left brace"))
-       (setq acc (cons |$charLbrace| (cons next acc)))
+       (setq acc (cons #\{ (cons next acc)))
        (setq u (cddr u)))
      (t
       (setq acc (cons x acc))
@@ -20820,7 +20809,6 @@ Note that {\tt u} should start with an open brace.
 \calls{checkRecordHash}{checkIsValidType}
 \calls{checkRecordHash}{form2HtString}
 \calls{checkRecordHash}{getl}
-\refsdollar{checkRecordHash}{charBack}
 \refsdollar{checkRecordHash}{HTlinks}
 \refsdollar{checkRecordHash}{htHash}
 \refsdollar{checkRecordHash}{HTlisplinks}
@@ -20840,11 +20828,11 @@ Note that {\tt u} should start with an open brace.
  (let (p q htname entry s parse n key x)
  (declare (special |$origin| |$name| |$sysHash| |$setOptions| |$glossHash|
                    |$currentSysList| |$lispHash| |$HTlisplinks| |$htHash|
-                   |$HTlinks| |$charBack|))
+                   |$HTlinks|))
   (loop while u
    do
    (setq x (car u))
-   (when (and (stringp x) (equal (elt x 0) |$charBack|))
+   (when (and (stringp x) (equal (elt x 0) #\\))
     (cond
      ((and (|member| x |$HTlinks|)
            (setq u (|checkLookForLeftBrace| (ifcdr u)))
@@ -20976,42 +20964,39 @@ Note that {\tt u} should start with an open brace.
 \calls{checkTexht}{ifcdr}
 \calls{checkTexht}{ifcar}
 \calls{checkTexht}{checkDocError}
-\refsdollar{checkTexht}{charRbrace}
-\refsdollar{checkTexht}{charLbrace}
 \begin{chunk}{defun checkTexht}
 (defun |checkTexht| (u)
  (let (count y x acc)
- (declare (special |$charRbrace| |$charLbrace|))
   (setq count 0)
   (loop while u 
    do
     (setq x (car u))
     (when (and (string= x "\\texht") (setq u (ifcdr u)))
-     (unless  (equal (ifcar u) |$charLbrace|)
+     (unless  (equal (ifcar u) #\{)
        (|checkDocError| "First left brace after \\texht missing"))
      ; drop first argument including braces of \texht
      (setq count 1)
      (loop while 
-            (or (not (equal (setq y (ifcar (setq u (cdr u)))) |$charRbrace|))
+            (or (not (equal (setq y (ifcar (setq u (cdr u)))) #\}))
                 (> count 1))
      do
-       (when (equal y |$charLbrace|) (setq count (1+ count)))
-       (when (equal y |$charRbrace|) (setq count (1- count))))
+       (when (equal y #\{) (setq count (1+ count)))
+       (when (equal y #\}) (setq count (1- count))))
      ; drop first right brace of 1st arg
      (setq x (ifcar (setq u (cdr u)))))
     (when (and (string= x "\\httex")
                (setq u (ifcdr u))
-               (equal (ifcar u) |$charLbrace|))
+               (equal (ifcar u) #\{))
        ; left  brace: add it
        (setq acc (cons (ifcar u) acc))
        (loop while 
-              (not (equal (setq y (ifcar (setq u (cdr u)))) |$charRbrace|))
+              (not (equal (setq y (ifcar (setq u (cdr u)))) #\}))
          do (setq acc (cons y acc)))
        ; right brace: add it
        (setq acc (cons (ifcar u) acc))
        ; left brace:  forget it
        (setq x (ifcar (setq u (cdr u))))
-       (loop while (not (equal (ifcar (setq u (cdr u))) |$charRbrace|))
+       (loop while (not (equal (ifcar (setq u (cdr u))) #\}))
         do '|skip|)
        ; forget right brace: move to next char
        (setq x (ifcar (setq u (cdr u)))))
@@ -21035,11 +21020,10 @@ Note that {\tt u} should start with an open brace.
 \calls{checkTransformFirsts}{getl}
 \calls{checkTransformFirsts}{lassoc}
 \refsdollar{checkTransformFirsts}{checkPrenAlist}
-\refsdollar{checkTransformFirsts}{charBack}
 \begin{chunk}{defun checkTransformFirsts}
 (defun |checkTransformFirsts| (opname u margin)
  (prog (namestring s m infixOp p open close z n i prefixOp j k firstWord)
- (declare (special |$checkPrenAlist| |$charBack|))
+ (declare (special |$checkPrenAlist|))
   (return 
    (progn
 ; case 1: \spad{...
@@ -21057,7 +21041,7 @@ Note that {\tt u} should start with an open brace.
       (setq m (maxindex u))
       (cond
        ((> 2 m) u)
-       ((equal (elt u 0) |$charBack|) u)
+       ((equal (elt u 0) #\\) u)
        ((alpha-char-p (elt u 0))
          (setq i (or (|checkSkipToken| u 0 m) (return u)))
          (setq j (or (|checkSkipBlanks| u i m) (return u)))
@@ -21073,7 +21057,7 @@ Note that {\tt u} should start with an open brace.
                  u)
              ((null k)
               (cond
-               ((equal open (|char| '[))
+               ((equal open #\[)
                  (|checkDocError| 
                    (list "Missing close bracket on first line: " u)))
                (t
@@ -21131,9 +21115,9 @@ Note that {\tt u} should start with an open brace.
              (setq j (or (|checkSkipBlanks| u i m) (return u)))
              (cond
 ; case 5: op arg
-              ((equal (elt u j) (|char| '|(|))
+              ((equal (elt u j) #\( )
                 (setq j
-                 (|getMatchingRightPren| u (1+ j) (|char| '|(|) (|char| '|)|)))
+                 (|getMatchingRightPren| u (1+ j) #\( #\) ))
                 (cond
                  ((> j m) u)
                  (t
@@ -21165,15 +21149,13 @@ Note that {\tt u} should start with an open brace.
  (labels (
   (trim (s)
    (let (k)
-   (declare (special |$charBlank|))
     (setq k (wherePP s))
     (substring s (+ k 2) nil)))
   (wherePP (u)
    (let (k)
-   (declare (special |$charPlus|))
-    (setq k (|charPosition| |$charPlus| u 0))
+    (setq k (|charPosition| #\+ u 0))
     (if (or (eql k (|#| u))
-            (not (eql (|charPosition| |$charPlus| u (1+ k)) (1+ k))))
+            (not (eql (|charPosition| #\+ u (1+ k)) (1+ k))))
       (|systemError| " Improper comment found")
       k))))
  (let (j s)
@@ -21368,11 +21350,9 @@ Note that {\tt u} should start with an open brace.
 \calls{checkGetArgs}{getMatchingRightPren}
 \calls{checkGetArgs}{charPosition}
 \calls{checkGetArgs}{trimString}
-\refsdollar{checkGetArgs}{charComma}
 \begin{chunk}{defun checkGetArgs}
 (defun |checkGetArgs| (u)
  (let (m k acc i)
- (declare (special |$charComma|))
   (cond
    ((null (stringp u)) nil)
    (t
@@ -21390,7 +21370,7 @@ Note that {\tt u} should start with an open brace.
       nil)
      (t
       (do ()
-          ((null (> m (setq k (|charPosition| |$charComma| u (1+ i))))) nil)
+          ((null (> m (setq k (|charPosition| #\, u (1+ i))))) nil)
         (setq acc 
          (cons (|trimString| (substring u (1+ i) (1- (- k i)))) acc))
         (setq i k))
@@ -21423,17 +21403,15 @@ Note that {\tt u} should start with an open brace.
 \end{chunk}
 
 \defun{checkGetStringBeforeRightBrace}{checkGetStringBeforeRightBrace}
-\refsdollar{checkGetStringBeforeRightBrace}{charRbrace}
 \begin{chunk}{defun checkGetStringBeforeRightBrace}
 (defun |checkGetStringBeforeRightBrace| (u)
  (prog (x acc)
- (declare (special |$charRbrace|))
   (return
    (loop while u
     do
      (setq x (car u))
      (cond
-      ((equal x |$charRbrace|)
+      ((equal x #\})
        (let ((result ""))
         (loop for item in acc
          do (setq result (concatenate 'string item result)))
@@ -21578,7 +21556,7 @@ Note that {\tt u} should start with an open brace.
 (defun |checkTrimCommented| (line)
  (let (n k)
   (setq n (|#| line))
-  (setq k (|htcharPosition| (|char| '%) line 0))
+  (setq k (|htcharPosition| #\% line 0))
   (cond
    ((eql k 0) "")
    ((or (>= k (1- n)) (not (eql (elt line (1+ k)) #\%))) line)
@@ -21623,17 +21601,16 @@ Note that {\tt u} should start with an open brace.
 \calls{checkAddBackSlashes}{strconc}
 \calls{checkAddBackSlashes}{maxindex}
 \calls{checkAddBackSlashes}{checkAddBackSlashes}
-\refsdollar{checkAddBackSlashes}{charBack}
 \refsdollar{checkAddBackSlashes}{charEscapeList}
 \begin{chunk}{defun checkAddBackSlashes}
 (defun |checkAddBackSlashes| (s)
  (let (c m char insertIndex k)
- (declare (special |$charBack| |$charEscapeList|))
+ (declare (special |$charEscapeList|))
   (cond
    ((or (and (charp s) (setq c s))
         (and (eql (|#| s) 1) (setq c (elt s 0))))
      (if (member s |$charEscapeList|)
-      (strconc |$charBack| c)
+      (strconc #\\ c)
       s))
     (t
      (setq k 0)
@@ -21643,13 +21620,13 @@ Note that {\tt u} should start with an open brace.
       do
        (setq char (elt s k))
        (cond
-        ((char= char |$charBack|) (setq k (+ k 2)))
+        ((char= char #\\) (setq k (+ k 2)))
         ((member char |$charEscapeList|) (return (setq insertIndex k))))
         (setq k (1+ k)))
      (cond
       (insertIndex
        (|checkAddBackSlashes|
-        (strconc (substring s 0 insertIndex) |$charBack| (elt s k)
+        (strconc (substring s 0 insertIndex) #\\ (elt s k)
                  (substring s (1+ insertIndex) nil))))
       (T s))))))
 
@@ -21710,9 +21687,8 @@ Note that {\tt u} should start with an open brace.
 \begin{chunk}{defun checkAddSpaceSegments}
 (defun |checkAddSpaceSegments| (u k)
  (let (m i j n)
- (declare (special |$charBlank|))
   (setq m (maxindex u))
-  (setq i (|charPosition| |$charBlank| u k))
+  (setq i (|charPosition| #\space u k))
   (cond
    ((> i m) u)
    (t
@@ -21732,12 +21708,12 @@ Note that {\tt u} should start with an open brace.
 \begin{chunk}{defun checkAddSpaces}
 (defun |checkAddSpaces| (u)
  (let (u2 space i)
- (declare (special |$charBlank| |$charFauxNewline|))
+ (declare (special |$charFauxNewline|))
   (cond
    ((null u) nil)
    ((null (cdr u)) u)
    (t
-    (setq space |$charBlank|) 
+    (setq space #\space) 
     (setq i 0)
     (loop for f in u 
      do
@@ -21750,7 +21726,7 @@ Note that {\tt u} should start with an open brace.
         (setq u2 (append u2 (list f))))
       (when (string= f "\\end{verbatim}")
         (setq u2 (append u2 (list space)))
-        (setq space |$charBlank|)))
+        (setq space #\space)))
     u2))))
 
 \end{chunk}
@@ -21767,11 +21743,9 @@ Note that {\tt u} should start with an open brace.
 \defun{checkIeEgfun}{checkIeEgfun}
 \calls{checkIeEgfun}{maxindex}
 \calls{checkIeEgfun}{checkIeEgFun}
-\refsdollar{checkIeEgfun}{charPeriod}
 \begin{chunk}{defun checkIeEgfun}
 (defun |checkIeEgfun| (x)
  (let (m key firstPart result)
- (declare (special |$charPeriod|))
   (cond
    ((characterp x) nil)
    ((equal x "") nil)
@@ -21781,8 +21755,8 @@ Note that {\tt u} should start with an open brace.
      do
       (cond
        ((and
-          (equal (elt x (1+ k)) |$charPeriod|)
-          (equal (elt x (+ k 3)) |$charPeriod|)
+          (equal (elt x (1+ k)) #\.)
+          (equal (elt x (+ k 3)) #\.)
           (or
            (and
             (equal (elt x k) #\i)
@@ -21841,15 +21815,13 @@ form is wrong number of arguments, nil if unknown
 
 \defun{checkLookForLeftBrace}{checkLookForLeftBrace}
 \refsdollar{checkLookForLeftBrace}{charBlank}
-\refsdollar{checkLookForLeftBrace}{charLbrace}
 \begin{chunk}{defun checkLookForLeftBrace}
 (defun |checkLookForLeftBrace| (u)
- (declare (special |$charBlank| |$charLbrace|))
   (loop while u
    do
     (cond
-     ((equal (car u) |$charLbrace|) (return (car u)))
-     ((not (eql (car u) |$charBlank|)) (return nil))
+     ((equal (car u) #\{) (return (car u)))
+     ((not (eql (car u) #\space)) (return nil))
      (t (pop u))))
   u)
 
@@ -21857,21 +21829,18 @@ form is wrong number of arguments, nil if unknown
 
 \defun{checkLookForRightBrace}{checkLookForRightBrace}
 This returns a line beginning with right brace
-\refsdollar{checkLookForRightBrace}{charLbrace}
-\refsdollar{checkLookForRightBrace}{charRbrace}
 \begin{chunk}{defun checkLookForRightBrace}
 (defun |checkLookForRightBrace| (u)
  (let (found count)
- (declare (special |$charLbrace| |$charRbrace|))
   (setq count 0)
   (loop while u 
    do
    (cond
-    ((equal (car u) |$charRbrace|)
+    ((equal (car u) #\})
      (if (eql count 0) 
       (return (setq found u))
       (setq count (1- count))))
-    ((equal (car u) |$charLbrace|)
+    ((equal (car u) #\{)
       (setq count (1+ count))))
     (pop u))
   found))
@@ -21907,9 +21876,8 @@ A nil return implies that the argument list length does not match
 \refsdollar{checkSkipBlanks}{charBlank}
 \begin{chunk}{defun checkSkipBlanks}
 (defun |checkSkipBlanks| (u i m)
- (declare (special |$charBlank|))
   (do ()
-      ((null (and (> m i) (equal (elt u i) |$charBlank|))) nil)
+      ((null (and (> m i) (equal (elt u i) #\space))) nil)
    (setq i (1+ i)))
   (unless (= i m) i))
 
@@ -21919,20 +21887,18 @@ A nil return implies that the argument list length does not match
 \calls{checkSplitBackslash}{checkSplitBackslash}
 \calls{checkSplitBackslash}{maxindex}
 \calls{checkSplitBackslash}{charPosition}
-\refsdollar{checkSplitBackslash}{charBack}
 \begin{chunk}{defun checkSplitBackslash}
 (defun |checkSplitBackslash| (x)
  (let (m k u v)
- (declare (special |$charBack|))
   (cond
    ((null (stringp x)) (list x))
    (t
     (setq m (maxindex x))
     (cond
-     ((> m (setq k (|charPosition| |$charBack| x 0)))
+     ((> m (setq k (|charPosition| #\\ x 0)))
       (cond
        ((or (eql m 1) (alpha-char-p (elt x (1+ k)))) ;starts with backslash so
-        (if (> m (setq k (|charPosition| |$charBack| x 1))) 
+        (if (> m (setq k (|charPosition| #\\ x 1))) 
          ; yes, another backslash
          (cons (substring x 0 k) (|checkSplitBackslash| (substring x k nil)))
          ; no, just return the line
@@ -21959,12 +21925,11 @@ A nil return implies that the argument list length does not match
 \calls{checkSplitOn}{charp}
 \calls{checkSplitOn}{maxindex}
 \calls{checkSplitOn}{charPosition}
-\refsdollar{checkSplitOn}{charBack}
 \refsdollar{checkSplitOn}{charSplitList}
 \begin{chunk}{defun checkSplitOn}
 (defun |checkSplitOn| (x)
  (let (m char k z)
- (declare (special |$charBack| |$charSplitList|))
+ (declare (special |$charSplitList|))
   (cond
    ((charp x) (list x))
    (t
@@ -21979,7 +21944,7 @@ A nil return implies that the argument list length does not match
        (t
          (setq k (|charPosition| char x 0))
          (cond
-          ((and (> k 0) (equal (elt x (1- k)) |$charBack|)) (list x))
+          ((and (> k 0) (equal (elt x (1- k)) #\\)) (list x))
           ((<= k m) (return k)))))
       (pop z))
     (cond
@@ -21999,18 +21964,11 @@ A nil return implies that the argument list length does not match
 \calls{checkSplitPunctuation}{checkSplitPunctuation}
 \calls{checkSplitPunctuation}{charPosition}
 \calls{checkSplitPunctuation}{hget}
-\refsdollar{checkSplitPunctuation}{charDash}
 \refsdollar{checkSplitPunctuation}{htMacroTable}
-\refsdollar{checkSplitPunctuation}{charQuote}
-\refsdollar{checkSplitPunctuation}{charPeriod}
-\refsdollar{checkSplitPunctuation}{charSemiColon}
-\refsdollar{checkSplitPunctuation}{charComma}
-\refsdollar{checkSplitPunctuation}{charBack}
 \begin{chunk}{defun checkSplitPunctuation}
 (defun |checkSplitPunctuation| (x)
  (let (m lastchar v k u)
- (declare (special |$charDash| |$htMacroTable| |$charBack| |$charQuote|
-                   |$charComma| |$charSemiColon| |$charPeriod|))
+ (declare (special |$htMacroTable|))
   (cond
    ((charp x) (list x))
    (t
@@ -22020,23 +21978,23 @@ A nil return implies that the argument list length does not match
       (t
        (setq lastchar (elt x m))
        (cond
-        ((and (equal lastchar |$charPeriod|)
-              (equal (elt x (1- m)) |$charPeriod|))
+        ((and (equal lastchar #\.)
+              (equal (elt x (1- m)) #\.))
           (cond
            ((eql m 1) (list x))
-           ((and (> m 3) (equal (elt x (- m 2)) |$charPeriod|))
+           ((and (> m 3) (equal (elt x (- m 2)) #\.))
              (append (|checkSplitPunctuation| (substring x 0 (- m 2)))
                      (list "...")))
            (t
              (append (|checkSplitPunctuation| (substring x 0 (1- m)))
                      (list "..")))))
-        ((or (equal lastchar |$charPeriod|)
-             (equal lastchar |$charSemiColon|)
-             (equal lastchar |$charComma|))
+        ((or (equal lastchar #\.)
+             (equal lastchar #\;)
+             (equal lastchar #\,))
           (list (substring x 0 m) lastchar))
-        ((and (> m 1) (equal (elt x (1- m)) |$charQuote|))
+        ((and (> m 1) (equal (elt x (1- m)) #\'))
           (list (substring x 0 (1- m)) (substring x (1- m) nil)))
-        ((> m (setq k (|charPosition| |$charBack| x 0)))
+        ((> m (setq k (|charPosition| #\\ x 0)))
           (cond
            ((eql k 0)
             (cond
@@ -22050,10 +22008,10 @@ A nil return implies that the argument list length does not match
              (setq v (substring x k nil))
              (append (|checkSplitPunctuation| u)
                      (|checkSplitPunctuation| v)))))
-        ((> m (setq k (|charPosition| |$charDash| x 1)))
+        ((> m (setq k (|charPosition| #\- x 1)))
              (setq u (substring x (1+ k) nil))
              (cons (substring x 0 k)
-               (cons |$charDash| (|checkSplitPunctuation| u))))
+               (cons #\- (|checkSplitPunctuation| u))))
         (t
          (list x)))))))))
 
@@ -22064,11 +22022,10 @@ A nil return implies that the argument list length does not match
 \begin{chunk}{defun firstNonBlankPosition}
 (defun |firstNonBlankPosition| (&rest therest)
  (let ((x (car therest)) (options (cdr therest)) start k)
- (declare (special |$charBlank|))
   (setq start (or (ifcar options) 0))
   (setq k -1)
   (loop for i from start to (maxindex x)
-   do (when (not (eql (elt x i) |$charBlank|)) (return (setq k i))))
+   do (when (not (eql (elt x i) #\space)) (return (setq k i))))
   k))
 
 \end{chunk}
@@ -22118,17 +22075,15 @@ A nil return implies that the argument list length does not match
 \calls{htcharPosition}{length}
 \calls{htcharPosition}{charPosition}
 \calls{htcharPosition}{htcharPosition}
-\refsdollar{htcharPosition}{charBack}
 \begin{chunk}{defun htcharPosition}
 (defun |htcharPosition| (char line i)
  (let (m k)
- (declare (special |$charBack|))
   (setq m (|#| line))
   (setq k (|charPosition| char line i))
   (cond
    ((eql k m) k)
    ((> k 0)
-    (if (not (eql (elt line (1- k)) |$charBack|))
+    (if (not (eql (elt line (1- k)) #\\))
      k
      (|htcharPosition| char line (1+ k))))
    (t 0))))
@@ -22142,7 +22097,7 @@ A nil return implies that the argument list length does not match
 \begin{chunk}{defun newWordFrom}
 (defun |newWordFrom| (z i m)
  (let (ch done buf)
- (declare (special |$charFauxNewline| |$charBlank| |$stringFauxNewline|))
+ (declare (special |$charFauxNewline| |$stringFauxNewline|))
   (loop while (and (<= i m) (char= (elt z i) #\space)) do (incf i))
   (cond
    ((> i m) nil)
@@ -22158,7 +22113,7 @@ A nil return implies that the argument list length does not match
        do
         (setq ch (elt z i))
         (cond
-         ((or (equal ch |$charBlank|) (equal ch |$charFauxNewline|))
+         ((or (equal ch #\space) (equal ch |$charFauxNewline|))
            (setq done t))
          (t
           (setq buf (strconc buf ch))
@@ -22172,14 +22127,12 @@ A nil return implies that the argument list length does not match
 \calls{removeBackslashes}{removeBackslashes}
 \calls{removeBackslashes}{strconc}
 \calls{removeBackslashes}{length}
-\refsdollar{removeBackslashes}{charBack}
 \begin{chunk}{defun removeBackslashes}
 (defun |removeBackslashes| (s)
  (let (k)
- (declare (special |$charBack|))
   (cond
    ((string= s "") "")
-   ((> (|#| s) (setq k (|charPosition| |$charBack| s 0)))
+   ((> (|#| s) (setq k (|charPosition| #\\ s 0)))
     (if (eql k 0) 
      (|removeBackslashes| (substring s 1 nil))
      (strconc (substring s 0 k)
diff --git a/changelog b/changelog
index a5eee9b..214643d 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,20 @@
+20150519 tpd src/axiom-website/patches.html 20150519.04.tpd.patch 
+20150519 tpd books/bookvol5 rewrite character handling functions
+20150519 tpd books/bookvol9 rewrite character handling functions
+20150519 tpd src/interp/br-con.lisp rewrite character handling functions
+20150519 tpd src/interp/format.lisp rewrite character handling functions
+20150519 tpd src/interp/g-util.lisp rewrite character handling functions
+20150519 tpd src/interp/hashcode.lisp rewrite character handling functions
+20150519 tpd src/interp/i-eval.lisp rewrite character handling functions
+20150519 tpd src/interp/i-map.lisp rewrite character handling functions
+20150519 tpd src/interp/i-output.lisp rewrite character handling functions
+20150519 tpd src/interp/match.lisp rewrite character handling functions
+20150519 tpd src/interp/newfort.lisp rewrite character handling functions
+20150519 tpd src/interp/nrungo.lisp rewrite character handling functions
+20150519 tpd src/interp/record.lisp rewrite character handling functions
+20150519 tpd src/interp/server.lisp rewrite character handling functions
+20150519 tpd src/interp/topics.lisp rewrite character handling functions
+20150519 tpd src/interp/vmlisp.lisp rewrite character handling functions
 20150519 tpd src/axiom-website/patches.html 20150519.03.tpd.patch 
 20150519 tpd src/interp/sys-pkg.lisp remove define-macro
 20150519 tpd src/interp/vmlisp.lisp remove define-macro
@@ -58,16 +75,16 @@
 20150515 tpd src/axiom-website/patches.html 20150515.01.tpd.patch 
 20150515 tpd src/interp/vmlisp.lisp revert from broken version
 20150508 tpd src/axiom-website/patches.html 20150508.02.tpd.patch 
-20150508 tpd books/bookvol10.2.pamphlet add more tests
-20150508 tpd books/bookvol10.3.pamphlet add more tests
-20150508 tpd books/bookvol10.4.pamphlet add more tests
-20150508 tpd src/input/Makefile.pamphlet add more tests
-20150508 tpd src/input/cmds.input.pamphlet add more tests
-20150508 tpd src/interp/clam.lisp.pamphlet fix test breakage
-20150508 tpd src/interp/msgdb.lisp.pamphlet fix test breakage
-20150508 tpd src/interp/vmlisp.lisp.pamphlet fix test breakage
-20150508 tpd books/bookvol10.pamphlet fix missing category
-20150508 tpd books/bookvol5.pamphlet fix missing category
+20150508 tpd books/bookvol10.2 add more tests
+20150508 tpd books/bookvol10.3 add more tests
+20150508 tpd books/bookvol10.4 add more tests
+20150508 tpd src/input/Makefile add more tests
+20150508 tpd src/input/cmds.input add more tests
+20150508 tpd src/interp/clam.lisp fix test breakage
+20150508 tpd src/interp/msgdb.lisp fix test breakage
+20150508 tpd src/interp/vmlisp.lisp fix test breakage
+20150508 tpd books/bookvol10 fix missing category
+20150508 tpd books/bookvol5 fix missing category
 20150508 tpd src/share/algebra/browse.daase fix missing category
 20150508 tpd src/share/algebra/category.daase fix missing category
 20150508 tpd src/share/algebra/interp.daase fix missing category
@@ -1098,7 +1115,7 @@
 20141002 tpd src/axiom-website/patches.html 20141002.01.tpd.patch
 20141002 tpd src/interp/i-analy.lisp fix bug 7260 wrong type on output
 20140928 tpd src/axiom-website/patches.html 20140928.01.tpd.patch
-20140928 tpd books/bookvol0.pamphlet add contributor preamble
+20140928 tpd books/bookvol0 add contributor preamble
 20140927 tpd src/axiom-website/patches.html 20140927.02.tpd.patch
 20140927 tpd books/bookvol10.4 document Sylvester matrix
 20140927 tpd src/axiom-website/patches.html 20140927.01.tpd.patch
@@ -1203,16 +1220,16 @@
 20140903 tpd src/axiom-website/patches.html 20140903.01.tpd.patch
 20140903 tpd src/input/Makefile typo fix
 20140902 tpd src/axiom-website/patches.html 20140902.01.tpd.patch
-20140902 rxr books/bookvol10.3.pamphlet add CAD
-20140902 rxr books/bookvol10.4.pamphlet add CAD
-20140902 rxr books/bookvol10.pamphlet add CAD
-20140902 rxr books/bookvol5.pamphlet add CAD
-20140902 rxr books/bookvolbib.pamphlet add CAD references
+20140902 rxr books/bookvol10.3 add CAD
+20140902 rxr books/bookvol10.4 add CAD
+20140902 rxr books/bookvol10 add CAD
+20140902 rxr books/bookvol5 add CAD
+20140902 rxr books/bookvolbib add CAD references
 20140902 rxr books/ps/v103cell.eps
 20140902 rxr books/ps/v103simplecell.eps
 20140902 rxr books/ps/v104cylindricalalgebraicdecompositionpackage.eps
 20140902 rxr books/ps/v104cylindricalalgebraicdecompositionutilities.eps
-20140902 rxr src/input/Makefile.pamphlet add cad.input
+20140902 rxr src/input/Makefile add cad.input
 20140902 rxr src/input/cad.input test CAD
 20140902 rxr src/share/algebra/browse.daase add CAD
 20140902 rxr src/share/algebra/category.daase add CAD
@@ -1349,12 +1366,12 @@
 20140802 tpd src/axiom-website/patches.html 20140802.01.tpd.patch
 20140802 tpd src/axiom-website/download.html add binary links
 20140801 tpd src/axiom-website/patches.html 20140801.02.tpd.patch
-20140801 tpd books/Makefile.pamphlet add spadedit
-20140801 tpd books/bookvol5.pamphlet add spadedit
-20140801 tpd src/scripts/Makefile.pamphlet remove spadedit
+20140801 tpd books/Makefile add spadedit
+20140801 tpd books/bookvol5 add spadedit
+20140801 tpd src/scripts/Makefile remove spadedit
 20140801 tpd src/scripts/SPADEDIT deleted
 20140801 tpd src/axiom-website/patches.html 20140801.01.tpd.patch
-20140801 tpd books/Makefile.pamphlet add bbold.sty
+20140801 tpd books/Makefile add bbold.sty
 20140801 tpd books/bbold.sty added
 20140731 tpd src/axiom-website/patches.html 20140731.04.tpd.patch
 20140731 tpd src/lib/fnct-key.c remove 'save_echo', unused variable
@@ -1365,12 +1382,12 @@
 20140731 tpd books/ps/v101toe.eps added
 20140731 tpd src/doc/toe.gif removed
 20140731 tpd src/axiom-website/patches.html 20140731.01.tpd.patch
-20140731 tpd books/Makefile.pamphlet
-20140731 tpd src/doc/endpaper.pamphlet -> books/endpaper.pamphlet
-20140731 tpd src/doc/refcard.pamphlet -> books/refcard.pamphlet
-20140731 tpd src/doc/rosetta.pamphlet -> books/rosetta.pamphlet
-20140731 tpd src/Makefile.pamphlet
-20140731 tpd src/doc/Makefile.pamphlet
+20140731 tpd books/Makefile
+20140731 tpd src/doc/endpaper -> books/endpaper
+20140731 tpd src/doc/refcard -> books/refcard
+20140731 tpd src/doc/rosetta -> books/rosetta
+20140731 tpd src/Makefile
+20140731 tpd src/doc/Makefile
 20140729 tpd src/axiom-website/patches.html 20140729.05.tpd.patch
 20140729 tpd src/lib/xspadfill.c 'maxDither' is set but never used, removed
 20140729 tpd src/axiom-website/patches.html 20140729.04.tpd.patch
@@ -1586,7 +1603,7 @@
 20140703 tpd src/axiom-website/patches.html 20140703.01.tpd.patch
 20140703 tpd src/axiom-website/documentation.html add W.T. Gowers quote
 20140630 tpd src/axiom-website/patches.html 20140630.02.tpd.patch
-20140630 tpd books/bookvolbib.pamphlet add special sections, abstracts
+20140630 tpd books/bookvolbib add special sections, abstracts
 20140630 tpd src/axiom-website/patches.html 20140630.01.tpd.patch
 20140630 tpd src/input/wangeez.input Paul Wang's EEZ test polynmials
 20140629 tpd src/axiom-website/patches.html 20140629.06.tpd.patch
@@ -1611,108 +1628,108 @@
 20140628 tpd src/input/dbtest.input remove failing input file
 20140628 tpd src/axiom-website/patches.html 20140628.01.tpd.patch
 20140628 tpd Makefile modified, noweb removed
-20140628 tpd Makefile.pamphlet modified, noweb removed
-20140628 tpd lsp/Makefile.pamphlet modified, noweb removed
-20140628 tpd src/Makefile.pamphlet modified, noweb removed
-20140628 tpd src/algebra/Makefile.pamphlet modified, noweb removed
-20140628 tpd src/clef/Makefile.pamphlet modified, noweb removed
-20140628 tpd src/doc/Makefile.pamphlet modified, noweb removed
-20140628 tpd src/etc/Makefile.pamphlet modified, noweb removed
-20140628 tpd src/input/Makefile.pamphlet modified, noweb removed
-20140628 tpd src/interp/Makefile.pamphlet modified, noweb removed
-20140628 tpd src/lib/Makefile.pamphlet modified, noweb removed
-20140628 tpd src/scripts/Makefile.pamphlet modified, noweb removed
-20140628 tpd src/share/Makefile.pamphlet modified, noweb removed
+20140628 tpd Makefile modified, noweb removed
+20140628 tpd lsp/Makefile modified, noweb removed
+20140628 tpd src/Makefile modified, noweb removed
+20140628 tpd src/algebra/Makefile modified, noweb removed
+20140628 tpd src/clef/Makefile modified, noweb removed
+20140628 tpd src/doc/Makefile modified, noweb removed
+20140628 tpd src/etc/Makefile modified, noweb removed
+20140628 tpd src/input/Makefile modified, noweb removed
+20140628 tpd src/interp/Makefile modified, noweb removed
+20140628 tpd src/lib/Makefile modified, noweb removed
+20140628 tpd src/scripts/Makefile modified, noweb removed
+20140628 tpd src/share/Makefile modified, noweb removed
 20140628 tpd faq modified, noweb removed
-20140628 tpd books/bookvol11.pamphlet modified, noweb removed
-20140628 tpd src/clef/edible.c.pamphlet modified, noweb removed
-20140628 tpd src/doc/booklet.c.pamphlet modified, noweb removed
-20140628 tpd src/etc/asq.c.pamphlet modified, noweb removed
-20140628 tpd src/input/aseg6.as.pamphlet modified, noweb removed
-20140628 tpd src/input/aseg7.as.pamphlet modified, noweb removed
-20140628 tpd src/input/cohen.input.pamphlet modified, noweb removed
-20140628 tpd src/input/draw2dsf.data.pamphlet modified, noweb removed
-20140628 tpd src/input/draw2dsf.input.pamphlet modified, noweb removed
-20140628 tpd src/input/ecfact.as.pamphlet modified, noweb removed
-20140628 tpd src/input/hilbert.as.pamphlet modified, noweb removed
-20140628 tpd src/input/matops.as.pamphlet modified, noweb removed
-20140628 tpd src/input/pdecomp0.as.pamphlet modified, noweb removed
-20140628 tpd src/input/romnum.as.pamphlet modified, noweb removed
-20140628 tpd src/lib/bsdsignal.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/cfuns-c.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/cursor.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/edin.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/emupty.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/fnct-key.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/halloc.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/hash.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/openpty.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/pixmap.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/prt.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/sockio-c.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/spadcolors.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/util.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/wct.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/xdither.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/xshade.c.pamphlet modified, noweb removed
-20140628 tpd src/lib/xspadfill.c.pamphlet modified, noweb removed
+20140628 tpd books/bookvol11 modified, noweb removed
+20140628 tpd src/clef/edible.c modified, noweb removed
+20140628 tpd src/doc/booklet.c modified, noweb removed
+20140628 tpd src/etc/asq.c modified, noweb removed
+20140628 tpd src/input/aseg6.as modified, noweb removed
+20140628 tpd src/input/aseg7.as modified, noweb removed
+20140628 tpd src/input/cohen.input modified, noweb removed
+20140628 tpd src/input/draw2dsf.data modified, noweb removed
+20140628 tpd src/input/draw2dsf.input modified, noweb removed
+20140628 tpd src/input/ecfact.as modified, noweb removed
+20140628 tpd src/input/hilbert.as modified, noweb removed
+20140628 tpd src/input/matops.as modified, noweb removed
+20140628 tpd src/input/pdecomp0.as modified, noweb removed
+20140628 tpd src/input/romnum.as modified, noweb removed
+20140628 tpd src/lib/bsdsignal.c modified, noweb removed
+20140628 tpd src/lib/cfuns-c.c modified, noweb removed
+20140628 tpd src/lib/cursor.c modified, noweb removed
+20140628 tpd src/lib/edin.c modified, noweb removed
+20140628 tpd src/lib/emupty.c modified, noweb removed
+20140628 tpd src/lib/fnct-key.c modified, noweb removed
+20140628 tpd src/lib/halloc.c modified, noweb removed
+20140628 tpd src/lib/hash.c modified, noweb removed
+20140628 tpd src/lib/openpty.c modified, noweb removed
+20140628 tpd src/lib/pixmap.c modified, noweb removed
+20140628 tpd src/lib/prt.c modified, noweb removed
+20140628 tpd src/lib/sockio-c.c modified, noweb removed
+20140628 tpd src/lib/spadcolors.c modified, noweb removed
+20140628 tpd src/lib/util.c modified, noweb removed
+20140628 tpd src/lib/wct.c modified, noweb removed
+20140628 tpd src/lib/xdither.c modified, noweb removed
+20140628 tpd src/lib/xshade.c modified, noweb removed
+20140628 tpd src/lib/xspadfill.c modified, noweb removed
 20140628 tpd src/input/cohen1.input new, noweb removed
-20140628 tpd src/input/dbtest.input.pamphlet new, noweb removed
-20140628 tpd src/input/diffeqex.input.pamphlet new, noweb removed
-20140628 tpd src/input/examples.input.pamphlet new, noweb removed
-20140628 tpd src/input/fresnel.input.pamphlet new, noweb removed
-20140628 tpd src/input/groebner.input.pamphlet new, noweb removed
-20140628 tpd src/input/lyapunov.input.pamphlet new, noweb removed
-20140628 tpd src/input/oktofail.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich13.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich14a.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich14b.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich14c.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich15.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich16.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich17.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich18.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich19.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich20a.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich20b.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich20c.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich21.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich22a.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich22b.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich22c.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich22d.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich23.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich24a.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich24b.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich24c.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich24d.input.pamphlet new, noweb removed
-20140628 tpd src/input/rich25.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder13.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder14a.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder14b.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder14c.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder15.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder16.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder17.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder18.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder19.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder20a.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder20b.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder20c.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder21.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder22a.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder22b.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder22c.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder22d.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder23.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder24a.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder24b.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder24c.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder24d.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder8b.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder8c.input.pamphlet new, noweb removed
-20140628 tpd src/input/richder8d.input.pamphlet new, noweb removed
-20140628 tpd src/input/series3.input.pamphlet new, noweb removed
+20140628 tpd src/input/dbtest.input new, noweb removed
+20140628 tpd src/input/diffeqex.input new, noweb removed
+20140628 tpd src/input/examples.input new, noweb removed
+20140628 tpd src/input/fresnel.input new, noweb removed
+20140628 tpd src/input/groebner.input new, noweb removed
+20140628 tpd src/input/lyapunov.input new, noweb removed
+20140628 tpd src/input/oktofail.input new, noweb removed
+20140628 tpd src/input/rich13.input new, noweb removed
+20140628 tpd src/input/rich14a.input new, noweb removed
+20140628 tpd src/input/rich14b.input new, noweb removed
+20140628 tpd src/input/rich14c.input new, noweb removed
+20140628 tpd src/input/rich15.input new, noweb removed
+20140628 tpd src/input/rich16.input new, noweb removed
+20140628 tpd src/input/rich17.input new, noweb removed
+20140628 tpd src/input/rich18.input new, noweb removed
+20140628 tpd src/input/rich19.input new, noweb removed
+20140628 tpd src/input/rich20a.input new, noweb removed
+20140628 tpd src/input/rich20b.input new, noweb removed
+20140628 tpd src/input/rich20c.input new, noweb removed
+20140628 tpd src/input/rich21.input new, noweb removed
+20140628 tpd src/input/rich22a.input new, noweb removed
+20140628 tpd src/input/rich22b.input new, noweb removed
+20140628 tpd src/input/rich22c.input new, noweb removed
+20140628 tpd src/input/rich22d.input new, noweb removed
+20140628 tpd src/input/rich23.input new, noweb removed
+20140628 tpd src/input/rich24a.input new, noweb removed
+20140628 tpd src/input/rich24b.input new, noweb removed
+20140628 tpd src/input/rich24c.input new, noweb removed
+20140628 tpd src/input/rich24d.input new, noweb removed
+20140628 tpd src/input/rich25.input new, noweb removed
+20140628 tpd src/input/richder13.input new, noweb removed
+20140628 tpd src/input/richder14a.input new, noweb removed
+20140628 tpd src/input/richder14b.input new, noweb removed
+20140628 tpd src/input/richder14c.input new, noweb removed
+20140628 tpd src/input/richder15.input new, noweb removed
+20140628 tpd src/input/richder16.input new, noweb removed
+20140628 tpd src/input/richder17.input new, noweb removed
+20140628 tpd src/input/richder18.input new, noweb removed
+20140628 tpd src/input/richder19.input new, noweb removed
+20140628 tpd src/input/richder20a.input new, noweb removed
+20140628 tpd src/input/richder20b.input new, noweb removed
+20140628 tpd src/input/richder20c.input new, noweb removed
+20140628 tpd src/input/richder21.input new, noweb removed
+20140628 tpd src/input/richder22a.input new, noweb removed
+20140628 tpd src/input/richder22b.input new, noweb removed
+20140628 tpd src/input/richder22c.input new, noweb removed
+20140628 tpd src/input/richder22d.input new, noweb removed
+20140628 tpd src/input/richder23.input new, noweb removed
+20140628 tpd src/input/richder24a.input new, noweb removed
+20140628 tpd src/input/richder24b.input new, noweb removed
+20140628 tpd src/input/richder24c.input new, noweb removed
+20140628 tpd src/input/richder24d.input new, noweb removed
+20140628 tpd src/input/richder8b.input new, noweb removed
+20140628 tpd src/input/richder8c.input new, noweb removed
+20140628 tpd src/input/richder8d.input new, noweb removed
+20140628 tpd src/input/series3.input new, noweb removed
 20140628 tpd zips/noweb-2.10a.tgz deleted, noweb removed
 20140628 tpd zips/noweb.modules.c.patch deleted, noweb removed
 20140628 tpd zips/noweb.modules.nw.patch deleted, noweb removed
@@ -1729,11 +1746,11 @@
 20140628 tpd zips/noweb.src.shell.roff.nw.patch deleted, noweb removed
 20140628 tpd zips/noweb.src.shell.toroff.patch deleted, noweb removed
 20140625 tpd src/axiom-website/patches.html 20140625.02.tpd.patch
-20140625 tpd Makefile.pamphlet extract src/Makefile using chunk syntax
-20140625 tpd src/Makefile.pamphlet extract src using chunk syntax
+20140625 tpd Makefile extract src/Makefile using chunk syntax
+20140625 tpd src/Makefile extract src using chunk syntax
 20140625 tpd src/axiom-website/patches.html 20140625.01.tpd.patch
 20140625 tpd Makefile extract books/Makefile using new chunk machinery
-20140625 tpd books/Makefile.pamphlet changed to use chunk syntax
+20140625 tpd books/Makefile changed to use chunk syntax
 20140625 tpd books/tangle.c extract using chunk syntax
 20140625 tpd books/extract support the new chunk syntax
 20140625 tpd books/bookvol13 fix syntax error
@@ -1748,7 +1765,7 @@
 20140623 tpd src/axiom-website/patches.html 20140623.03.tpd.patch
 20140623 tpd src/axiom-website/download.html add texlive-fonts-extra
 20140623 tpd src/axiom-website/patches.html 20140623.02.tpd.patch
-20140623 tpd books/bookvolbib.pamphlet add Baez09
+20140623 tpd books/bookvolbib add Baez09
 20140623 tpd src/axiom-website/patches.html 20140623.01.tpd.patch
 20140623 tpd book/*.txt cleanup complete
 20140623 tpd book/timeline of join/leave complete
@@ -1784,7 +1801,7 @@
 20140615 tpd src/axiom-website/patches.html 20140615.04.tpd.patch
 20140615 tpd buglist bug 7256: acot(-1) values differ
 20140615 tpd src/axiom-website/patches.html 20140615.03.tpd.patch
-20140615 tpd books/bookvol13.pamphlet, ps/v13llvmtoacl2.eps file rename
+20140615 tpd books/bookvol13, ps/v13llvmtoacl2.eps file rename
 20140615 tpd src/axiom-website/patches.html 20140615.02.tpd.patch
 20140615 tpd books/bookvol4, ps/v4architecture.eps add Baker's graphic
 20140615 tpd src/axiom-website/patches.html 20140615.01.tpd.patch
@@ -1878,7 +1895,7 @@
 20140604 tpd src/axiom-website/patches.html 20140604.01.tpd.patch
 20140604 tpd books/dvipdfm.def added to fix missing file in latex builds
 20140604 tpd Makefile copy books/dvipdfm to ${MNT}/${SYS}/doc	
-20140604 tpd books/bookvolbib.pamphlet add Wicks 89
+20140604 tpd books/bookvolbib add Wicks 89
 20140603 tpd src/axiom-website/patches.html 20140603.07.tpd.patch
 20140603 tpd book/*.txt email cleanup
 20140603 jzc src/axiom-website/patches.html 20140603.06.jzc.patch
@@ -1908,13 +1925,13 @@
 20140524 tpd src/input/Makefile
 20140524 tpd src/input/inputform.input
 20140524 tpd src/axiom-website/patches.html 20140524.01.tpd.patch
-20140524 tpd books/bookvolbib.pamphlet add gruntz, knuth refs
+20140524 tpd books/bookvolbib add gruntz, knuth refs
 20140523 tpd src/axiom-website/patches.html 20140523.01.tpd.patch
 20140523 tpd book/*.txt email cleanup
 20140520 tpd src/axiom-website/patches.html 20140520.02.tpd.patch
 20140520 tpd src/axiom-website/documentation.html
 20140520 tpd src/axiom-website/patches.html 20140520.01.tpd.patch
-20140520 tpd books/bookvolbib.pamphlet 
+20140520 tpd books/bookvolbib 
 20140516 tpd src/axiom-website/patches.html 20140516.01.tpd.patch
 20140516 tpd book/*.txt email cleanup
 20140515 tpd src/axiom-website/patches.html 20140515.01.tpd.patch
@@ -1928,7 +1945,7 @@
 20140509 tpd src/axiom-website/patches.html 20140509.03.tpd.patch
 20140509 tpd book/*.txt email cleanup
 20140509 tpd src/axiom-website/patches.html 20140509.02.tpd.patch
-20140509 tpd books/bookvolbib.pamphlet
+20140509 tpd books/bookvolbib
 20140509 tpd src/axiom-website/patches.html 20140509.01.tpd.patch
 20140509 tpd book/*.txt email cleanup
 20140508 tpd src/axiom-website/patches.html 20140508.01.tpd.patch
@@ -2777,8 +2794,8 @@
 20130428 exm src/axiom-website/patches.html 20130428.01.exm.patch
 20130428 exm faq fix mailing list links
 20130428 exm src/axiom-website/community.html fix mailing list links
-20130438 exm src/doc/booklet.c.pamphlet fix mailing list links
-20130428 exm books/bookvol*.pamphlet credit list update
+20130438 exm src/doc/booklet.c fix mailing list links
+20130428 exm books/bookvol* credit list update
 20130438 exm readme add Edi Meier
 20130428 exm "Edi Meier" <Liste_Franken@gmx.de>
 20130426 tpd src/axiom-website/patches.html 20130426.01.tpd.patch
@@ -2791,7 +2808,7 @@
 20130426 tpd src/share/algebra/browse.daase add Attributes as Categories
 20130426 tpd src/interp/temp.text deleted
 20130426 tpd src/algebra/libdb.text add Attributes as Categories
-20130426 tpd src/algebra/Makefile.pamphlet
+20130426 tpd src/algebra/Makefile
 20130426 tpd books/ps/v102unitsknownattribute.eps added
 20130426 tpd books/ps/v102shallowlymutableattribute.eps added
 20130426 tpd books/ps/v102rightunitaryattribute.eps added
@@ -3160,8 +3177,8 @@
 20130314 tpd src/axiom-website/patches.html 20130314.03.tpd.patch
 20130314 tpd changlog. fix jzc email address
 20130314 tpd src/axiom-website/patches.html 20130314.02.tpd.patch
-20130314 jzc books/bookvol5.pamphlet add Jia Zhao Cong
-20130314 jzc books/bookvol10.4.pamphlet add Jia Zhao Cong
+20130314 jzc books/bookvol5 add Jia Zhao Cong
+20130314 jzc books/bookvol10.4 add Jia Zhao Cong
 20130314 jzc readme add Jia Zhao Cong
 20130314 jzc Jia Zhao Cong <jiazhaoconga@gmail.com>
 20130314 tpd src/axiom-website/patches.html 20130314.01.tpd.patch
@@ -3311,7 +3328,7 @@
 20120815 tpd src/axiom-website/patches.html 20120815.01.tpd.patch
 20120815 tpd src/axiom-website/documentation.html
 20120615 tpd src/axiom-website/patches.html 20120615.01.tpd.patch
-20120615 tpd Makefile.pamphlet add mint stanza
+20120615 tpd Makefile add mint stanza
 20120612 tpd src/axiom-website/patches.html 20120612.01.tpd.patch
 20120612 tpd src/axiom-website/download.html add binaries
 20120610 tpd src/axiom-website/patches.html 20120610.02.tpd.patch
diff --git a/patch b/patch
index 4a615af..8ca1fb2 100644
--- a/patch
+++ b/patch
@@ -1,3 +1,3 @@
-src/interp/vmlisp.lisp remove define-macro
+src/interp/vmlisp.lisp rewrite character handling functions
 
-No longer needed.
+Use common lisp native forms.
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index fd64ff7..3f0c3b3 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -5068,6 +5068,8 @@ src/interp/vmlisp.lisp remove |equal|, evalandfileactq<br/>
 Makefile clean up dangling files<br/>
 <a href="patches/20150519.03.tpd.patch">20150519.03.tpd.patch</a>
 src/interp/vmlisp.lisp remove define-macro<br/>
+<a href="patches/20150519.04.tpd.patch">20150519.04.tpd.patch</a>
+src/interp/vmlisp.lisp rewrite character handling functions<br/>
  </body>
 </html>
 
diff --git a/src/interp/br-con.lisp.pamphlet b/src/interp/br-con.lisp.pamphlet
index bc89b77..ee5700d 100644
--- a/src/interp/br-con.lisp.pamphlet
+++ b/src/interp/br-con.lisp.pamphlet
@@ -68,9 +68,9 @@
                (SEQ (EXIT (PROGN
                             (setq |c| (ELT |comments| |i|))
                             (COND
-                              ((BOOT-EQUAL |c| (|char| '{))
+                              ((BOOT-EQUAL |c| #\{)
                                (setq |count| (+ |count| 1)))
-                              ((BOOT-EQUAL |c| (|char| '}))
+                              ((BOOT-EQUAL |c| #\})
                                (setq |count|
                                         (- |count| 1))
                                (COND
@@ -214,10 +214,10 @@
                               (> |k| |j|)
                               (BOOT-EQUAL
                                   (ELT |x| (setq |j| (+ |j| 1)))
-                                  (|char| '-))
+                                  #\-)
                               (BOOT-EQUAL (ELT |x|
                                            (setq |j| (+ |j| 1)))
-                                          (|char| '-))))
+                                          #\-)))
                    NIL)
                 (SEQ (EXIT (setq |xtralines|
                                     (CONS
@@ -360,11 +360,11 @@
       (COND
         ((BOOT-EQUAL |line| "") NIL)
         ('T
-         (setq |k| (|charPosition| (|char| '-) |line| (+ |n| 2)))
+         (setq |k| (|charPosition| #\- |line| (+ |n| 2)))
          (COND
            ((>= |k| (MAXINDEX |line|))
             (CONS (SUBSTRING |line| |n| NIL) NIL))
-           ((NEQUAL (ELT |line| (+ |k| 1)) (|char| '-))
+           ((NEQUAL (ELT |line| (+ |k| 1)) #\-)
             (setq |u| (|dbSpreadComments| |line| |k|))
             (CONS (STRCONC (SUBSTRING |line| |n|
                                (- |k| |n|))
@@ -583,7 +583,7 @@
 
 (defun |getGlossLines| (|instream|)
   (PROG (|line| |n| |last| |fill| |lastLineHadTick| |keys| |text|)
-  (declare (special |$charBlank| |$tick|))
+  (declare (special |$tick|))
     (RETURN
       (SEQ (PROGN
              (setq |keys| NIL)
@@ -613,8 +613,8 @@
                                                (NEQUAL
                                                 (ELT |last|
                                                  (MAXINDEX |last|))
-                                                |$charBlank|))
-                                              |$charBlank|)
+                                                #\space))
+                                              #\space)
                                              ('T "")))
                                   (setq |lastLineHadTick| NIL)
                                   (setq |text|
@@ -4431,7 +4431,7 @@
                                            (COND
                                              ((STRINGP |item|)
                                               (|dbExposed?| |item|
-                                               (|char| '|o|)))
+                                               #\o))
                                              ((NULL
                                                (setq |r|
                                                 (CDR (CDR |item|))))
@@ -5808,7 +5808,7 @@
     (|$includeUnexposed?|
         (COND
           (|flag| (|htBlank|))
-          ((BOOT-EQUAL (ELT |op| 0) (|char| '*))
+          ((BOOT-EQUAL (ELT |op| 0) #\*)
            (|htSay| "{\\em *} "))
           ('T (|htSayUnexposed|))))
     ('T (|htSay| ""))))
@@ -6360,7 +6360,7 @@
                                              |conname|)))
                                           (setq |exposeFlag|
                                            (|dbExposed?| |line|
-                                            (|char| '|o|)))
+                                            #\o))
                                           (setq |acc|
                                            (CONS
                                             (CONS |sig|
@@ -7679,7 +7679,6 @@
 
 (defun |dbGetFormFromDocumentation| (|op| |sig| |x|)
   (PROG (|doc| |k| |n| |s| |parse|)
-  (declare (special |$charRbrace|))
     (RETURN
       (PROGN
         (setq |doc| (COND ((STRINGP |x|) |x|) ('T (CAR |x|))))
@@ -7689,7 +7688,7 @@
                          (setq |k| 6))
                     (AND (|stringPrefix?| "\\s{" |doc|)
                          (setq |k| 3))))
-           (setq |n| (|charPosition| |$charRbrace| |doc| |k|))
+           (setq |n| (|charPosition| #\} |doc| |k|))
            (setq |s| (SUBSTRING |doc| |k| (- |n| |k|)))
            (setq |parse| (|ncParseFromString| |s|))
            (COND
@@ -9390,7 +9389,7 @@
       (SEQ (PROGN
              (setq |x| (princ-to-string |opstring|))
              (COND
-               ((> (|#| |x|) (|charPosition| (|char| '*) |x| 0)) NIL)
+               ((> (|#| |x|) (|charPosition| #\* |x| 0)) NIL)
                ('T
                 (setq |op|
                          (COND ((STRINGP |x|) (INTERN |x|)) ('T |x|)))
@@ -9741,7 +9740,7 @@
                            (SEQ (EXIT (SETQ G174461
                                        (OR G174461
                                         (BOOT-EQUAL (ELT |s| |i|)
-                                         (|char| '&))))))))))
+                                         #\&)))))))))
                 (setq |key| '|y|)))
              (setq |filter| (|pmTransFilter| (princ-to-string |s|)))
              (COND
@@ -9787,8 +9786,8 @@
       (PROGN
         (setq |conname|
                  (INTERN (COND
-                           ((OR (BOOT-EQUAL |kind| (|char| '|a|))
-                                (BOOT-EQUAL |kind| (|char| '|o|)))
+                           ((OR (BOOT-EQUAL |kind| #\a)
+                                (BOOT-EQUAL |kind| #\o))
                             (|dbNewConname| |line|))
                            ('T (|dbName| |line|)))))
         (|isExposedConstructor| |conname|)))))
@@ -9812,7 +9811,7 @@
 ;isDefaultOpAtt x == x.(1 + dbTickIndex(x,4,0)) = char 'x
 
 (defun |isDefaultOpAtt| (|x|)
-  (BOOT-EQUAL (ELT |x| (+ 1 (|dbTickIndex| |x| 4 0))) (|char| '|x|)))
+  (BOOT-EQUAL (ELT |x| (+ 1 (|dbTickIndex| |x| 4 0))) #\x))
 
 ;grepForAbbrev(s,key) ==
 ;--checks that filter s is not * and is all uppercase; if so, look for abbrevs
@@ -10052,15 +10051,15 @@
                                        (OR G174630
                                         (AND
                                          (BOOT-EQUAL (ELT |s| |i|)
-                                          (|char| '*))
+                                          #\*)
                                          (BOOT-EQUAL
                                           (ELT |s| (+ |i| 1))
-                                          (|char| '*))
+                                          #\*)
                                          (OR (EQL |i| 0)
                                           (NEQUAL
                                            (ELT |s|
                                             (- |i| 1))
-                                           (|char| |$charUnderscore|)))))))))))
+                                           #\_))))))))))
                 (CONS '|error|
                       (CONS "Illegal search string"
                             (CONS                                       "\\vspace{3}\\center{Consecutive {\\em *}'s are not allowed in search patterns}"
@@ -10348,14 +10347,14 @@
            (setq |middle|
                     (SEQ (IF (|member| |t| '("and" "or" "not"))
                              (EXIT |t|))
-                         (IF (BOOT-EQUAL (ELT |t| 0) (|char| '|"|))
+                         (IF (BOOT-EQUAL (ELT |t| 0) #\")
                              (EXIT |t|))
                          (IF (AND (> (- |siz| 1) |j|)
                                   (BOOT-EQUAL (ELT |s| |j|)
-                                      (|char| '|(|)))
+                                      #\( ))
                              (EXIT |t|))
-                         (EXIT (STRCONC (|char| '|"|) |t|
-                                        (|char| '|"|)))))
+                         (EXIT (STRCONC #\" |t|
+                                        #\"))))
            (EXIT (STRCONC (SUBSTRING |s| |n| (- |i| |n|))
                           |middle| (|pmPreparse,fn| |s| |j| |siz|)))))))
 
@@ -10471,28 +10470,28 @@
                                     (NULL (|dbExposed?| |line| |kind|)))
                                '|skip|)
                               ((AND (OR
-                                     (BOOT-EQUAL |kind| (|char| '|a|))
-                                     (BOOT-EQUAL |kind| (|char| '|o|)))
+                                     (BOOT-EQUAL |kind| #\a)
+                                     (BOOT-EQUAL |kind| #\o))
                                     (|isDefaultOpAtt| |line|))
                                '|skip|)
-                              ((BOOT-EQUAL |kind| (|char| '|c|))
+                              ((BOOT-EQUAL |kind| #\c)
                                (setq |cats|
                                         (|insert| |line| |cats|)))
-                              ((BOOT-EQUAL |kind| (|char| '|d|))
+                              ((BOOT-EQUAL |kind| #\d)
                                (setq |doms|
                                         (|insert| |line| |doms|)))
-                              ((BOOT-EQUAL |kind| (|char| '|x|))
+                              ((BOOT-EQUAL |kind| #\x)
                                (setq |defs|
                                         (|insert| |line| |defs|)))
-                              ((BOOT-EQUAL |kind| (|char| '|p|))
+                              ((BOOT-EQUAL |kind| #\p)
                                (setq |paks|
                                         (|insert| |line| |paks|)))
-                              ((BOOT-EQUAL |kind| (|char| '|a|))
+                              ((BOOT-EQUAL |kind| #\a)
                                (setq |atts|
                                         (|insert| |line| |atts|)))
-                              ((BOOT-EQUAL |kind| (|char| '|o|))
+                              ((BOOT-EQUAL |kind| #\o)
                                (setq |ops| (|insert| |line| |ops|)))
-                              ((BOOT-EQUAL |kind| (|char| '-)) '|skip|)
+                              ((BOOT-EQUAL |kind| #\-) '|skip|)
                               ('T (|systemError| '|kind|)))))))
              (COND (|doc?| (CLOSE |instream2|)))
              (CONS (CONS "attribute" (NREVERSE |atts|))
@@ -10518,8 +10517,8 @@
 
 (defun |mkUpDownPattern,fixchar| (|c|)
   (SEQ (IF (ALPHA-CHAR-P |c|)
-           (EXIT (STRCONC (|char| '[) (CHAR-UPCASE |c|)
-                          (CHAR-DOWNCASE |c|) (|char| ']))))
+           (EXIT (STRCONC #\[ (CHAR-UPCASE |c|)
+                          (CHAR-DOWNCASE |c|) #\])))
        (EXIT |c|)))
 
 (defun |mkUpDownPattern,recurse| (|s| |i| |n|)
@@ -10704,7 +10703,7 @@
       (SEQ (IF (> (MAXINDEX |s|)
                   (setq |k|
                            (|mkGrepPattern1,charPosition|
-                               (|char| |$charUnderscore|) |s| 0)))
+                               #\_ |s| 0)))
                (EXIT (STRCONC (SUBSTRING |s| 0 |k|) "["
                               (ELT |s| (+ |k| 1)) "]"
                               (|mkGrepPattern1,remUnderscores|
@@ -10755,10 +10754,10 @@
   (declare (special |$options|))
     (RETURN
       (SEQ (IF (NULL (member '|w| |$options|)) (EXIT |s|))
-           (IF (BOOT-EQUAL (ELT |s| 0) (|char| '*))
+           (IF (BOOT-EQUAL (ELT |s| 0) #\*)
                (setq |s| (SUBSTRING |s| 1 NIL)) NIL)
            (IF (BOOT-EQUAL (ELT |s| (setq |k| (MAXINDEX |s|)))
-                   (|char| '*))
+                   #\*)
                (setq |s| (SUBSTRING |s| 0 |k|)) NIL)
            (EXIT |s|)))))
 
@@ -10780,7 +10779,7 @@
             (|mkGrepPattern1,remUnderscores|
                 (|mkGrepPattern1,addWilds|
                     (|mkGrepPattern1,split| (|mkGrepPattern1,g| |s|)
-                        (|char| '*)))))))))
+                        #\*))))))))
 
 ;conform2OutputForm(form) ==
 ;  [op,:args] := form
@@ -11012,7 +11011,7 @@
       (PROGN
         (setq |s| (PNAME |x|))
         (COND
-          ((BOOT-EQUAL (ELT |s| 0) (|char| '|)|))
+          ((BOOT-EQUAL (ELT |s| 0) #\) )
            (setq |s| (SUBSTRING |s| 1 NIL))))
         (setq |form|
                  (OR (|ncParseFromString| |s|)
@@ -11089,7 +11088,7 @@
                                           (EXIT
                                            (COND
                                              ((NEQUAL (ELT |x| 0)
-                                               (|char| '|x|))
+                                               #\x)
                                               (SETQ G175219
                                               (CONS |x| G175219))))))))))))))
                  (|genSearch1| |filter|
@@ -11803,7 +11802,7 @@
                                 (SEQ (EXIT
                                       (COND
                                         ((NEQUAL (ELT |x| 0)
-                                          (|char| '|x|))
+                                          #\x)
                                          (SETQ G175687
                                           (CONS |x| G175687))))))))))
                  (|docSearch1| |filter|
@@ -11915,11 +11914,11 @@
       (PROGN
         (setq |key| (princ-to-string |filter|))
         (COND
-          ((BOOT-EQUAL (ELT |key| 0) (|char| '*))
+          ((BOOT-EQUAL (ELT |key| 0) #\*)
            (setq |key| (SUBSTRING |key| 1 NIL))))
         (COND
           ((BOOT-EQUAL (ELT |key| (setq |max| (MAXINDEX |key|)))
-               (|char| '*))
+               #\*)
            (setq |key| (SUBSTRING |key| 0 |max|))))
         |key|))))
 
@@ -11949,7 +11948,6 @@
 (defun |sayDocMessage| (|message|)
   (PROG (|leftEnd| |ISTMP#1| |left| |ISTMP#2| |middle| |ISTMP#3|
             |right| |ISTMP#4| |rightEnd|)
-  (declare (special |$blank|))
     (RETURN
       (PROGN
         (|htSay| "{\\em ")
@@ -11981,12 +11979,12 @@
            (|htSay| |leftEnd| |left| "}")
            (COND
              ((AND (NEQUAL |left| "")
-                   (BOOT-EQUAL (ELT |left| (MAXINDEX |left|)) |$blank|))
+                   (BOOT-EQUAL (ELT |left| (MAXINDEX |left|)) #\space))
               (|htBlank|)))
            (|htSay| |middle|)
            (COND
              ((AND (NEQUAL |right| "")
-                   (BOOT-EQUAL (ELT |right| 0) |$blank|))
+                   (BOOT-EQUAL (ELT |right| 0) #\space))
               (|htBlank|)))
            (|htSay| "{\\em " |right| |rightEnd|))
           ('T (|htSay| |message|)))
@@ -12014,7 +12012,7 @@
                (SEQ (EXIT (PROGN
                             (setq |n| (- |n| 1))
                             (setq |k|
-                                     (|charPosition| (|char| '|`|) |s|
+                                     (|charPosition| #\` |s|
                                       0))
                             (setq |new|
                                      (SUBSTRING |s| (+ |k| 1) NIL))
@@ -12038,11 +12036,11 @@
              (setq |max| (MAXINDEX |s|))
              (DO ()
                  ((NULL (<= (setq |n|
-                                     (|charPosition| (|char| '|`|) |s|
+                                     (|charPosition| #\` |s|
                                       (+ |n| 1)))
                             |max|))
                   NIL)
-               (SEQ (EXIT (SETELT |s| |n| (|char| '| |)))))
+               (SEQ (EXIT (SETELT |s| |n| #\space))))
              |s|)))))
 
 ;aSearch filter ==  --called from HD (man0.ht): general attribute search
@@ -12489,27 +12487,27 @@
                          (ELT |selectors| 2))))
         (setq |kindCode|
                  (COND
-                   ((BOOT-EQUAL |which| '|ops|) (|char| '|o|))
-                   ((BOOT-EQUAL |which| '|attrs|) (|char| '|a|))
+                   ((BOOT-EQUAL |which| '|ops|) #\o)
+                   ((BOOT-EQUAL |which| '|attrs|) #\a)
                    ('T (setq |acc| "")
                     (COND
                       ((|htButtonOn?| |htPage| '|cats|)
-                       (setq |acc| (STRCONC (|char| '|c|) |acc|))))
+                       (setq |acc| (STRCONC #\c |acc|))))
                     (COND
                       ((|htButtonOn?| |htPage| '|doms|)
-                       (setq |acc| (STRCONC (|char| '|d|) |acc|))))
+                       (setq |acc| (STRCONC #\d |acc|))))
                     (COND
                       ((|htButtonOn?| |htPage| '|paks|)
-                       (setq |acc| (STRCONC (|char| '|p|) |acc|))))
+                       (setq |acc| (STRCONC #\p |acc|))))
                     (COND
                       ((|htButtonOn?| |htPage| '|defs|)
-                       (setq |acc| (STRCONC (|char| '|x|) |acc|))))
+                       (setq |acc| (STRCONC #\x |acc|))))
                     (setq |n| (|#| |acc|))
                     (COND
                       ((OR (EQL |n| 0) (EQL |n| 4))
                        "[cdpx]")
                       ((EQL |n| 1) |acc|)
-                      ('T (STRCONC (|char| '[) |acc| (|char| '])))))))
+                      ('T (STRCONC #\[ |acc| #\]))))))
         (setq |form|
                  (|mkDetailedGrepPattern| |kindCode| |name| |nargs|
                      |npat|))
@@ -12595,18 +12593,18 @@
                                     (AND (> |m| 6)
                                      (BOOT-EQUAL
                                       (ELT |a| (- |m| 5))
-                                      (|char| '[)))
+                                      #\[))
                                     (BOOT-EQUAL
                                      (ELT |a| (- |m| 4))
-                                     (|char| '^)))
+                                     #\^))
                                    (BOOT-EQUAL
                                     (ELT |a| (- |m| 3))
                                     |$tick|))
                               (BOOT-EQUAL
                                   (ELT |a| (- |m| 2))
-                                  (|char| '])))
+                                  #\]))
                          (BOOT-EQUAL (ELT |a| (- |m| 1))
-                             (|char| '*)))
+                             #\*))
                     (BOOT-EQUAL (ELT |a| |m|) |$tick|))
                (EXIT (|mkDetailedGrepPattern,simp|
                          (SUBSTRING |a| 0 (- |m| 5)))))
@@ -12615,7 +12613,7 @@
 (defun |mkDetailedGrepPattern,conc| (|a| |b|)
   (declare (special |$tick|))
   (SEQ (IF (OR (BOOT-EQUAL |b| "[^`]*")
-               (BOOT-EQUAL |b| (|char| (INTERN "." "BOOT"))))
+               (BOOT-EQUAL |b| #\. ))
            (EXIT |a|))
        (EXIT (STRCONC |a| |$tick| |b|))))
 
@@ -12628,7 +12626,7 @@
         (setq |name| (|replaceGrepStar| |name|))
         (setq |firstPart| (STRCONC #\^ |kind| |name|))
         (setq |nargsPart| (|replaceGrepStar| |nargs|))
-        (setq |exposedPart| (|char| (INTERN "." "BOOT")))
+        (setq |exposedPart| #\. )
         (setq |patPart| (|replaceGrepStar| |argOrSig|))
         (|mkDetailedGrepPattern,simp|
             (STRCONC (|mkDetailedGrepPattern,conc| |firstPart|
@@ -12650,7 +12648,7 @@
       (COND
         ((BOOT-EQUAL |s| '||) |s|)
         ('T (setq |final| (MAXINDEX |s|))
-         (setq |i| (|charPosition| (|char| '*) |s| 0))
+         (setq |i| (|charPosition| #\* |s| 0))
          (COND
            ((> |i| |final|) |s|)
            ('T
@@ -12669,18 +12667,18 @@
     (RETURN
       (|underscoreDollars|
           (COND
-            ((BOOT-EQUAL (ELT |s| 0) (|char| '|(|)) |s|)
+            ((BOOT-EQUAL (ELT |s| 0) #\( ) |s|)
             ('T
              (setq |k|
                       (OR (STRPOS "->" |s| 0 NIL)
                           (RETURN |s|)))
              (COND
                ((BOOT-EQUAL (ELT |s| (- |k| 1))
-                    (|char| '|)|))
-                (STRCONC (|char| '|(|) |s|))
+                    #\) )
+                (STRCONC #\( |s|))
                ('T
-                (STRCONC (|char| '|(|) (SUBSTRING |s| 0 |k|)
-                         (|char| '|)|) (SUBSTRING |s| |k| NIL))))))))))
+                (STRCONC #\( (SUBSTRING |s| 0 |k|)
+                         #\) (SUBSTRING |s| |k| NIL))))))))))
 
 ;underscoreDollars(s) == fn(s,0,MAXINDEX s) where
 ;  fn(s,i,n) ==
@@ -12692,7 +12690,7 @@
   (PROG (|m|)
     (RETURN
       (SEQ (IF (> |i| |n|) (EXIT ""))
-           (IF (> (setq |m| (|charPosition| (|char| '$) |s| |i|))
+           (IF (> (setq |m| (|charPosition| #\$ |s| |i|))
                   |n|)
                (EXIT (SUBSTRING |s| |i| NIL)))
            (EXIT (STRCONC (SUBSTRING |s| |i| (- |m| |i|))
@@ -12868,7 +12866,7 @@
   (PROG (|dash| |line| |acc|)
     (RETURN
       (SEQ (PROGN
-             (setq |dash| (|char| '-))
+             (setq |dash| #\-)
              (setq |acc| NIL)
              (DO ()
                  ((NULL (AND (CONSP |lines|)
@@ -12916,7 +12914,7 @@
 
 ;$tick := char '_`            --field separator for database files
 
-(defvar |$tick| (|char| '|`|))
+(defvar |$tick| #\`)
 
 ;$charUnderscore := ('__)     --needed because of parser bug
 
@@ -13004,15 +13002,15 @@
 ;      [char 'c,:'"category"],[char 'x,:'"default_ package"]]
 
 (defvar |$dbKindAlist|
-         (CONS (CONS (|char| '|a|) "attribute")
-               (CONS (CONS (|char| '|o|) "operation")
-                     (CONS (CONS (|char| '|d|) "domain")
-                           (CONS (CONS (|char| '|p|)
+         (CONS (CONS #\a "attribute")
+               (CONS (CONS #\o "operation")
+                     (CONS (CONS #\d "domain")
+                           (CONS (CONS #\p
                                        "package")
-                                 (CONS (CONS (|char| '|c|)
+                                 (CONS (CONS #\c
                                         "category")
                                        (CONS
-                                        (CONS (|char| '|x|)
+                                        (CONS #\x
                                          "default package")
                                         NIL)))))))
 
@@ -13163,7 +13161,7 @@
                 ((|member| |u| |$htSpecialChars|)
                  (CONS (CONCAT "\\" |u|) NIL))
                 ('T (CONS |u| NIL))))
-             ('T (setq |c| (|char| (ELT |u| 0)))
+             ('T (setq |c| (character (ELT |u| 0)))
               (COND
                 ((PROG (G176470)
                    (setq G176470 NIL)
@@ -13176,7 +13174,7 @@
                           G176470)
                        (SEQ (EXIT (SETQ G176470
                                         (OR G176470
-                                         (BOOT-EQUAL |c| (|char| |y|)))))))))
+                                         (BOOT-EQUAL |c| #\y))))))))
                  (CONS (CONCAT "\\" |u|) NIL))
                 ('T (CONS |u| NIL)))))))))
 
@@ -13944,7 +13942,7 @@
     ((NULL |$includeUnexposed?|) NIL)
     ((NULL |exposed?|) (|htSayUnexposed|)
      (COND
-       ((BOOT-EQUAL (ELT |op| 0) (|char| '*))
+       ((BOOT-EQUAL (ELT |op| 0) #\*)
         (|htSay| " "))
        ('T NIL)))
     ('T (|htBlank|))))
@@ -13983,7 +13981,7 @@
 (defun |extractFileNameFromPath,fn| (|s| |i| |m|)
   (PROG (|k|)
     (RETURN
-      (SEQ (setq |k| (|charPosition| (|char| '/) |s| |i|))
+      (SEQ (setq |k| (|charPosition| #\/ |s| |i|))
            (IF (BOOT-EQUAL |k| |m|) (EXIT (SUBSTRING |s| |i| NIL)))
            (EXIT (|extractFileNameFromPath,fn| |s| (+ |k| 1) |m|))))))
 
@@ -14688,7 +14686,7 @@
 ;dbpHasDefaultCategory? s ==  #s > 1 and s.1 = char 'x  --s is part 3 of line
 
 (defun |dbpHasDefaultCategory?| (|s|)
-  (AND (> (|#| |s|) 1) (BOOT-EQUAL (ELT |s| 1) (|char| '|x|))))
+  (AND (> (|#| |s|) 1) (BOOT-EQUAL (ELT |s| 1) #\x)))
 
 ;dbKindString kind == LASSOC(kind,$dbKindAlist)
 
@@ -14779,10 +14777,10 @@
   (PROG (|kind| |conform| |k|)
     (RETURN
       (COND
-        ((OR (BOOT-EQUAL (setq |kind| (ELT |line| 0)) (|char| '|a|))
-             (BOOT-EQUAL |kind| (|char| '|o|)))
+        ((OR (BOOT-EQUAL (setq |kind| (ELT |line| 0)) #\a)
+             (BOOT-EQUAL |kind| #\o))
          (setq |conform| (|dbPart| |line| 5 1))
-         (setq |k| (|charPosition| (|char| '|(|) |conform| 1))
+         (setq |k| (|charPosition| #\( |conform| 1))
          (SUBSTRING |conform| 1 (- |k| 1)))
         ('T (|dbName| |line|))))))
 
@@ -17981,7 +17979,7 @@
                       |$NumberList| |$ElementList| |$FunctionList|
                       |$DomainList| |$conkind| |$conlength| |$conform|
                       |$conargs| |$signature| |$displayReturnValue|
-                      |$charNewline| |$Primitives| |$TriangleVariableList|
+                      |$Primitives| |$TriangleVariableList|
                       |$FormalMapVariableList| |$sig| |$includeUnexposed?|
                       |$charFauxNewline|))
     (RETURN
@@ -18289,7 +18287,7 @@
                 (|htSayIndentRel| 15)
                 (COND
                   ((BOOT-EQUAL |doc| |$charFauxNewline|)
-                   (|htSay| |$charNewline|))
+                   (|htSay| #\newline))
                   ('T
                    (setq |ndoc|
                             (COND
@@ -18309,11 +18307,11 @@
                                       (EXIT
                                        (SETQ G179567
                                         (CONS
-                                         (SUBSTITUTE |$charNewline|
+                                         (SUBSTITUTE #\newline
                                           |$charFauxNewline| |i|)
                                          G179567))))))))
                               ('T
-                               (SUBSTITUTE |$charNewline|
+                               (SUBSTITUTE #\newline
                                    |$charFauxNewline| |doc|))))
                    (|htSay| |ndoc|)))
                 (|htSayIndentRel| (- 15))))
@@ -18508,7 +18506,7 @@
     (RETURN
       (COND
         ((AND (EQL (STRING< "\\tab{" |s|) 5)
-              (setq |k| (|charPosition| (|char| '}) |s| 4)))
+              (setq |k| (|charPosition| #\} |s| 4)))
          (SUBSTRING |s| (+ |k| 1) NIL))
         ('T |s|)))))
 
@@ -19122,7 +19120,7 @@
                                      (setq |s| (princ-to-string |form|))
                                      (IF
                                       (BOOT-EQUAL (ELT |s| 0)
-                                       (|char| '|#|))
+                                       #\#)
                                       (EXIT
                                        (SEQ
                                         (IF
diff --git a/src/interp/format.lisp.pamphlet b/src/interp/format.lisp.pamphlet
index 9cfc006..2b0bebb 100644
--- a/src/interp/format.lisp.pamphlet
+++ b/src/interp/format.lisp.pamphlet
@@ -2372,7 +2372,7 @@ code which fixes bug 7217 bad title generated in Axiom 3D output.
   (PROG (|s| |n|)
     (RETURN
      (COND
-      ((EQUAL (|char| '*) (ELT (SETQ |s| (PNAME |id|)) 0))
+      ((EQUAL #\* (ELT (SETQ |s| (PNAME |id|)) 0))
        ((LAMBDA (|bfVar#68| |i|)
           (LOOP
            (COND
@@ -2559,11 +2559,11 @@ code which fixes bug 7217 bad title generated in Axiom 3D output.
     (RETURN
      (COND ((OR (NULL (IDENTP |op|)) (EQ |op| '*) (EQ |op| '**)) NIL)
            ((OR (EQL 1 (SIZE (SETQ |op'| (PNAME |op|))))
-                (NOT (EQUAL (|char| '*) (ELT |op'| 0))))
+                (NOT (EQUAL #\* (ELT |op'| 0))))
             NIL)
            ((NULL (SETQ |e| (STRPOS ";" |op'| 1 NIL))) NIL)
-           ((OR (EQUAL (|char| '| |) (SETQ |y| (ELT |op'| 1)))
-                (EQUAL (|char| '*) |y|))
+           ((OR (EQUAL #\space (SETQ |y| (ELT |op'| 1)))
+                (EQUAL #\* |y|))
             NIL)
            (#1='T
             (PROGN
diff --git a/src/interp/g-util.lisp.pamphlet b/src/interp/g-util.lisp.pamphlet
index 455a4c5..dee5ab3 100644
--- a/src/interp/g-util.lisp.pamphlet
+++ b/src/interp/g-util.lisp.pamphlet
@@ -1011,10 +1011,6 @@
                (SEQ (EXIT (setq |r| (CDR |r|)))))
              |r|)))))
 
-;$blank := char ('_ )
-
-(defvar |$blank| (|char| '| |))
-
 ;trimString s ==
 ;  leftTrim rightTrim s
 
@@ -1030,16 +1026,15 @@
 
 (DEFUN |leftTrim| (|s|)
   (PROG (|k| |j|)
-    (DECLARE (SPECIAL |$blank|))
     (RETURN
       (SEQ (PROGN
              (setq |k| (MAXINDEX |s|))
              (COND
                ((MINUSP |k|) |s|)
-               ((BOOT-EQUAL (ELT |s| 0) |$blank|)
+               ((BOOT-EQUAL (ELT |s| 0) #\space)
                 (DO ((|i| 0 (QSADD1 |i|)))
                     ((OR (QSGREATERP |i| |k|)
-                         (NULL (BOOT-EQUAL (ELT |s| |i|) |$blank|)))
+                         (NULL (BOOT-EQUAL (ELT |s| |i|) #\space)))
                      NIL)
                   (SEQ (EXIT (setq |j| |i|))))
                 (SUBSTRING |s| (+ |j| 1) NIL))
@@ -1055,17 +1050,16 @@
 
 (DEFUN |rightTrim| (|s|)
   (PROG (|k| |j|)
-    (DECLARE (SPECIAL |$blank|))
     (RETURN
       (SEQ (PROGN
              (setq |k| (MAXINDEX |s|))
              (COND
                ((MINUSP |k|) |s|)
-               ((BOOT-EQUAL (ELT |s| |k|) |$blank|)
+               ((BOOT-EQUAL (ELT |s| |k|) #\space)
                 (DO ((G1423 (- 1))
                      (|i| |k| (+ |i| G1423)))
                     ((OR (IF (MINUSP G1423) (< |i| 0) (> |i| 0))
-                         (NULL (BOOT-EQUAL (ELT |s| |i|) |$blank|)))
+                         (NULL (BOOT-EQUAL (ELT |s| |i|) #\space)))
                      NIL)
                   (SEQ (EXIT (setq |j| |i|))))
                 (SUBSTRING |s| 0 |j|))
@@ -1185,107 +1179,55 @@
 
 (setq |$exposeDocHeading| NIL) 
 
-;$charPlus := char '_+
-
-(setq |$charPlus| (|char| '+))
-
-;$charBlank:= (char '_ )
-
-(setq |$charBlank| (|char| '| |))
-
-;$charLbrace:= char '_{
-
-(setq |$charLbrace| (|char| '{))
-
-;$charRbrace:= char '_}
-
-(setq |$charRbrace| (|char| '}))
-
-;$charBack := char '_\
-
-(setq |$charBack| (|char| '|\\|))
-
-;$charDash := char '_-
-
-(setq |$charDash| (|char| '-))
-
-;$charTab            := CODE_-CHAR(9)
-
-(setq |$charTab| (CODE-CHAR 9)) 
-
-;$charNewline        := CODE_-CHAR(10)
-
-(setq |$charNewline| (CODE-CHAR 10)) 
-
 ;$charFauxNewline    := CODE_-CHAR(25)
 
 (setq |$charFauxNewline| (CODE-CHAR 25)) 
 
-;$stringNewline      := PNAME CODE_-CHAR(10)
-
-(setq |$stringNewline| (PNAME (CODE-CHAR 10))) 
-
 ;$stringFauxNewline  := PNAME CODE_-CHAR(25)
 
 (setq |$stringFauxNewline| (PNAME (CODE-CHAR 25))) 
 
 ;$charExclusions := [char 'a, char 'A]
 
-(setq |$charExclusions| (CONS (|char| '|a|) (CONS (|char| 'A) NIL)))
-
-;$charQuote := char '_'
-
-(setq |$charQuote| (|char| '|'|))
-
-;$charSemiColon := char '_;
-
-(setq |$charSemiColon| (|char| '|;|))
-
-;$charComma     := char '_,
-
-(setq |$charComma| (|char| '|,|))
-
-;$charPeriod    := char '_.
-
-(setq |$charPeriod| (|char| (INTERN "." "BOOT"))) 
+(setq |$charExclusions| (CONS #\a (CONS #\A NIL)))
 
 ;$checkPrenAlist := [[char '_(,:char '_)],[char '_{,:char '_}],[char '_[,:char '_]]]
 
 (setq |$checkPrenAlist|
-         (CONS (CONS (|char| '|(|) (|char| '|)|))
-               (CONS (CONS (|char| '{) (|char| '}))
-                     (CONS (CONS (|char| '[) (|char| '])) NIL))))
+         (CONS (CONS #\( #\) )
+               (CONS (CONS #\{ #\} )
+                     (CONS (CONS #\[ #\] ) NIL))))
 
 ;$charEscapeList:= [char '_%,char '_#,$charBack]
 
 (setq |$charEscapeList|
-         (CONS (|char| '%) (CONS (|char| '|#|) (CONS |$charBack| NIL))))
+         (CONS #\% (CONS #\# (CONS #\\ NIL))))
 
 ;$charIdentifierEndings := [char '__, char '_!, char '_?]
 
 (setq |$charIdentifierEndings|
-         (CONS (|char| '_) (CONS (|char| '!) (CONS (|char| '?) NIL))))
+         (CONS #\_ (CONS #\! (CONS #\? NIL))))
 
 ;$charSplitList := [$charComma,$charPeriod,char '_[, char '_],$charLbrace, $charRbrace, char '_(, char '_), char '_$, char '_%]
 
 (setq |$charSplitList|
-         (CONS |$charComma|
-               (CONS |$charPeriod|
-                     (CONS (|char| '[)
-                           (CONS (|char| '])
-                                 (CONS |$charLbrace|
-                                       (CONS |$charRbrace|
-                                        (CONS (|char| '|(|)
-                                         (CONS (|char| '|)|)
-                                          (CONS (|char| '$)
-                                           (CONS (|char| '%) NIL)))))))))))
+         (CONS #\,
+               (CONS #\.
+                     (CONS #\[
+                           (CONS #\]
+                                 (CONS #\{
+                                       (CONS #\}
+                                        (CONS #\(
+                                         (CONS #\)
+                                          (CONS #\$
+                                           (CONS #\% NIL)))))))))))
 
 ;$charDelimiters := [$charBlank, char '_(, char '_), $charBack]
 
 (setq |$charDelimiters|
-         (CONS |$charBlank|
-               (CONS (|char| '|(|)
-                     (CONS (|char| '|)|) (CONS |$charBack| NIL)))))
+         (CONS #\space
+               (CONS #\(
+                     (CONS #\) (CONS #\\ NIL)))))
 
 ;$HTspadmacros := '("\spadtype" "\spadcommand" "\spadop" "\spadfun" "\spadatt" "\spadsyscom" "\spad" "\s")
 
@@ -1303,41 +1245,41 @@
 
 (setq |$HTmacs|
          (CONS (CONS "\\beginmenu"
-                     (CONS |$charRbrace|
+                     (CONS #\}
                            (CONS "menu"
-                                 (CONS |$charLbrace|
+                                 (CONS #\{
                                        (CONS "\\begin"
                                         NIL)))))
                (CONS (CONS "\\endmenu"
-                           (CONS |$charRbrace|
+                           (CONS #\}
                                  (CONS "menu"
-                                       (CONS |$charLbrace|
+                                       (CONS #\{
                                         (CONS "\\end" NIL)))))
                      (CONS (CONS "\\beginitems"
-                                 (CONS |$charRbrace|
+                                 (CONS #\}
                                        (CONS "items"
-                                        (CONS |$charLbrace|
+                                        (CONS #\{
                                          (CONS "\\begin"
                                           NIL)))))
                            (CONS (CONS "\\enditems"
-                                       (CONS |$charRbrace|
+                                       (CONS #\}
                                         (CONS "items"
-                                         (CONS |$charLbrace|
+                                         (CONS #\{
                                           (CONS "\\end"
                                            NIL)))))
                                  (CONS (CONS
                                         "\\beginscroll"
-                                        (CONS |$charRbrace|
+                                        (CONS #\}
                                          (CONS "scroll"
-                                          (CONS |$charLbrace|
+                                          (CONS #\{
                                            (CONS "\\begin"
                                             NIL)))))
                                        (CONS
                                         (CONS
                                          "\\endscroll"
-                                         (CONS |$charRbrace|
+                                         (CONS #\}
                                           (CONS "scroll"
-                                           (CONS |$charLbrace|
+                                           (CONS #\{
                                             (CONS "\\end"
                                              NIL)))))
                                         NIL)))))))
@@ -1382,7 +1324,7 @@
   (PROG (|s|)
     (RETURN
       (BOOT-EQUAL (ELT (setq |s| (PNAME |x|)) (MAXINDEX |s|))
-          (|char| '&)))))
+          #\&))))
 
 
 \end{chunk}
diff --git a/src/interp/hashcode.lisp.pamphlet b/src/interp/hashcode.lisp.pamphlet
index 1bfcc0f..dc496b4 100644
--- a/src/interp/hashcode.lisp.pamphlet
+++ b/src/interp/hashcode.lisp.pamphlet
@@ -194,7 +194,7 @@
                (SEQ (EXIT (PROGN
                             (setq |j|
                                      (CHAR-CODE
-                                      (|char| (ELT |str| |i|))))
+                                      (character (ELT |str| |i|))))
                             (setq |h| (LOGXOR |h| (ASH |h| 8)))
                             (setq |h| (+ (+ |h| |j|) 200041))
                             (setq |h| (LOGAND |h| 1073741823))))))
diff --git a/src/interp/i-eval.lisp.pamphlet b/src/interp/i-eval.lisp.pamphlet
index 3199c13..ea882cf 100644
--- a/src/interp/i-eval.lisp.pamphlet
+++ b/src/interp/i-eval.lisp.pamphlet
@@ -555,10 +555,9 @@
     (COND
      ((AND (NEQUAL |opName| (QUOTE |setelt|))
            (NEQUAL
-             (ELT |opString| (- (|#| |opString|) 1))
-             (|char| (QUOTE !))))
+             (ELT |opString| (- (|#| |opString|) 1)) #\!))
       NIL)
-     ((QUOTE T) (setq |dc| (CAR |sig|)) (BOOT-EQUAL |t| |dc|))))))) 
+     (t (setq |dc| (CAR |sig|)) (BOOT-EQUAL |t| |dc|))))))) 
 
 ;getArgValue(a, t) ==
 ;  atom a and not VECP a =>
diff --git a/src/interp/i-map.lisp.pamphlet b/src/interp/i-map.lisp.pamphlet
index 63b2a0f..2e3b2ca 100644
--- a/src/interp/i-map.lisp.pamphlet
+++ b/src/interp/i-map.lisp.pamphlet
@@ -92,7 +92,7 @@
          NIL)
         ('T (setq |sz| (SIZE (setq |name'| (PNAME |name|))))
          (COND
-           ((OR (> 7 |sz|) (NEQUAL (|char| '*) (ELT |name'| 0))) NIL)
+           ((OR (> 7 |sz|) (NEQUAL #\* (ELT |name'| 0))) NIL)
            ((NULL (DIGITP (ELT |name'| 1))) NIL)
            ((NULL (STRPOS ";" |name'| 1 NIL)) NIL)
            ('T 'T)))))))
diff --git a/src/interp/i-output.lisp.pamphlet b/src/interp/i-output.lisp.pamphlet
index 2dbe5b8..d57d2d3 100644
--- a/src/interp/i-output.lisp.pamphlet
+++ b/src/interp/i-output.lisp.pamphlet
@@ -210,7 +210,7 @@ these functions return an updated ``layout so far'' in general
           ((setq |line| (LASSOC |y| |d|))
            (COND
              ((AND (EQL (MAXINDEX |string|) 1)
-                   (BOOT-EQUAL (|char| (ELT |string| 0)) '%))
+                   (BOOT-EQUAL (character (ELT |string| 0)) #\%))
               (COND
                 ((BOOT-EQUAL (ELT |string| 1) '|b|)
                  (setq |bumpDeltaIfTrue| 'T)
@@ -1081,7 +1081,7 @@ these functions return an updated ``layout so far'' in general
                     (CONS 'PAREN (CONS (CONS 'AGGLST |l|) NIL)))
                    ((BOOT-EQUAL |op| 'LISTOF) (CONS 'AGGLST |l|))
                    ((AND (IDENTP |op|) (NULL (|member| |op| '(* **)))
-                         (BOOT-EQUAL (|char| '*) (ELT (PNAME |op|) 0)))
+                         (BOOT-EQUAL #\* (ELT (PNAME |op|) 0)))
                     (|mkSuperSub| |op| |l|))
                    ('T (CONS (|outputTran| |op|) |l|)))))))))))
 
@@ -2606,8 +2606,8 @@ NIL
      (COND
        ((BOOT-EQUAL |u| |$EmptyString|) 0)
        ((AND (BOOT-EQUAL (ELT |u| 0) '%)
-             (OR (BOOT-EQUAL (ELT |u| 1) (|char| '|b|))
-                 (BOOT-EQUAL (ELT |u| 1) (|char| '|d|))))
+             (OR (BOOT-EQUAL (ELT |u| 1) #\b)
+                 (BOOT-EQUAL (ELT |u| 1) #\d)))
         1)
        ('T (|#| |u|))))
     ((ATOM |u|) (|#| (|atom2String| |u|)))
@@ -2689,8 +2689,8 @@ NIL
          (COND
            ((BOOT-EQUAL |u| |$EmptyString|) 0)
            ((AND (BOOT-EQUAL (ELT |u| 0) '%)
-                 (OR (BOOT-EQUAL (ELT |u| 1) (|char| '|b|))
-                     (BOOT-EQUAL (ELT |u| 1) (|char| '|d|))))
+                 (OR (BOOT-EQUAL (ELT |u| 1) #\b)
+                     (BOOT-EQUAL (ELT |u| 1) #\d)))
             1)
            ('T (|#| |u|))))
         ((INTEGERP |u|)
diff --git a/src/interp/match.lisp.pamphlet b/src/interp/match.lisp.pamphlet
index 7db0471..0354938 100644
--- a/src/interp/match.lisp.pamphlet
+++ b/src/interp/match.lisp.pamphlet
@@ -15,7 +15,7 @@
 
 ;SETANDFILEQ($wildCard,char "*")
 
-(SETANDFILEQ |$wildCard| (|char| (QUOTE *))) 
+(SETANDFILEQ |$wildCard| #\*) 
 
 ;maskMatch?(mask,subject) ==
 ;  null mask => true
@@ -197,7 +197,7 @@
     (DECLARE (SPECIAL |$wildCard|))
     (RETURN
       (PROGN
-        (setq |$wildCard| (|char| '*))
+        (setq |$wildCard| #\*)
         (setq |pattern| (|patternCheck| |opattern|))
         (|logicalMatch?| |pattern| |subject|)))))
 
@@ -300,7 +300,7 @@
                ((OR (ATOM G166226)
                     (PROGN (SETQ |id| (CAR G166226)) NIL))
                 NIL)
-             (SEQ (setq |c| (|char| |id|))
+             (SEQ (setq |c| (character |id|))
                   (EXIT (IF (NULL (PROG (G166232)
                                     (setq G166232 NIL)
                                     (RETURN
@@ -366,7 +366,7 @@
     (DECLARE (SPECIAL |$oldWild| |$wildCard|))
     (RETURN
       (SEQ (PROGN
-             (setq |u| (|patternCheck,pos| (|char| '_) |pattern|))
+             (setq |u| (|patternCheck,pos| #\_ |pattern|))
              (COND
                ((NULL |u|) |pattern|)
                ((NULL (PROG (G166274)
diff --git a/src/interp/newfort.lisp.pamphlet b/src/interp/newfort.lisp.pamphlet
index 772ba35..61c7928 100644
--- a/src/interp/newfort.lisp.pamphlet
+++ b/src/interp/newfort.lisp.pamphlet
@@ -2570,7 +2570,7 @@
 
 (DEFUN |isFloat| (|e|)
   (OR (FLOATP |e|)
-      (AND (STRINGP |e|) (FIND (|char| (INTERN "." "BOOT")) |e|))))
+      (AND (STRINGP |e|) (FIND #\. |e|))))
 
 ;checkPrecision e ==
 ;  -- Do we have a string?
@@ -2592,18 +2592,18 @@
     (RETURN
       (COND
         ((AND (STRINGP |e|) (EQL (CHAR-CODE (CHAR |e| 0)) 34)) |e|)
-        ('T (setq |e| (|delete| (|char| '| |) (princ-to-string |e|)))
+        ('T (setq |e| (|delete| #\space (princ-to-string |e|)))
          (COND
            ((BOOT-EQUAL |$fortranPrecision| '|double|)
             (setq |iPart|
                      (SUBSEQ |e| 0
                              (+ (setq |period|
                                     (POSITION
-                                     (|char| (INTERN "." "BOOT")) |e|))
+                                     #\. |e|))
                                    1)))
             (setq |expt|
                      (COND
-                       ((setq |ePos| (POSITION (|char| 'E) |e|))
+                       ((setq |ePos| (POSITION #\E |e|))
                         (SUBSEQ |e| (+ |ePos| 1)))
                        ('T '|0|)))
             (setq |rPart|
diff --git a/src/interp/nrungo.lisp.pamphlet b/src/interp/nrungo.lisp.pamphlet
index 9ab8d14..717347d 100644
--- a/src/interp/nrungo.lisp.pamphlet
+++ b/src/interp/nrungo.lisp.pamphlet
@@ -300,7 +300,7 @@
          NIL)
         ((NULL (IDENTP |packageName|)) NIL)
         ('T (setq |pname| (PNAME |packageName|))
-         (BOOT-EQUAL (ELT |pname| (MAXINDEX |pname|)) (|char| '&)))))))
+         (BOOT-EQUAL (ELT |pname| (MAXINDEX |pname|)) #\&))))))
 
 ;--=======================================================
 ;--   Lookup In Domain (from lookupInAddChain)
diff --git a/src/interp/record.lisp.pamphlet b/src/interp/record.lisp.pamphlet
index 4a84874..ca0547f 100644
--- a/src/interp/record.lisp.pamphlet
+++ b/src/interp/record.lisp.pamphlet
@@ -38,7 +38,7 @@
 ;--=======================================================================
 ;$backslash := char '_\
 
-(setq |$backslash| (|char| '|\\|))
+(setq |$backslash| #\\)
 
 ;$testOutputLineFlag := nil   -- referenced by charyTop, prnd to stash lines
 
@@ -631,12 +631,12 @@
                               (SEQ (EXIT
                                     (COND
                                       ((BOOT-EQUAL (ELT |s| |i|)
-                                        (|char| '|\\|))
+                                        #\\)
                                        (SETQ G166399
                                         (OR G166399 |i|))))))))))
                (EXIT (SEQ (IF (|member| (ELT |s| (+ |k| 1))
-                                  (CONS (|char| '|f|)
-                                        (CONS (|char| '|b|) NIL)))
+                                  (CONS #\f
+                                        (CONS #\b NIL)))
                               (EXIT (SUBSTRING |s| |init|
                                      (- |k| |init|))))
                           (EXIT (STRCONC (SUBSTRING |s| |init|
@@ -657,7 +657,7 @@
   (PROG (|backslash| |k|)
     (RETURN
       (SEQ (PROGN
-             (setq |backslash| (|char| '|\\|))
+             (setq |backslash| #\\)
              (COND
                ((setq |k|
                          (PROG (G166422)
@@ -676,8 +676,8 @@
                                           |backslash|)
                                          (|member|
                                           (ELT |s| (+ |i| 1))
-                                          (CONS (|char| '|f|)
-                                           (CONS (|char| '|b|) NIL))))
+                                          (CONS #\f
+                                           (CONS #\b NIL))))
                                         (SETQ G166422
                                          (OR G166422 |i|))))))))))
                 (SUBSTRING |s| 0 (- |k| 1)))
@@ -737,7 +737,7 @@
                (EXIT (SEQ (IF (BOOT-EQUAL
                                   (ELT |y|
                                        (setq |k| (MAXINDEX |y|)))
-                                  (|char| '_))
+                                  #\_)
                               (EXIT (SEQ
                                      (setq |u|
                                       (|recordAndPrintTest,fn| |r|))
diff --git a/src/interp/server.lisp.pamphlet b/src/interp/server.lisp.pamphlet
index a374c79..0dae195 100644
--- a/src/interp/server.lisp.pamphlet
+++ b/src/interp/server.lisp.pamphlet
@@ -270,7 +270,7 @@
 
 (DEFUN |parseAndEvalStr1| (|string|)
   (COND
-    ((BOOT-EQUAL (ELT |string| 0) (|char| ")"))
+    ((BOOT-EQUAL (ELT |string| 0) #\) )
      (|doSystemCommand| (SUBSEQ |string| 1)))
     ('T (|processInteractive| (|ncParseFromString| |string|) NIL))))
 
diff --git a/src/interp/topics.lisp.pamphlet b/src/interp/topics.lisp.pamphlet
index 41507ba..c03cf24 100644
--- a/src/interp/topics.lisp.pamphlet
+++ b/src/interp/topics.lisp.pamphlet
@@ -155,14 +155,14 @@
                             (COND
                               ((BOOT-EQUAL |m| (- 1))
                                '|skip|)
-                              ((BOOT-EQUAL (ELT |line| 0) (|char| '-))
+                              ((BOOT-EQUAL (ELT |line| 0) #\-)
                                '|skip|)
                               ('T
                                (setq |line| (|trimString| |line|))
                                (setq |m| (MAXINDEX |line|))
                                (COND
                                  ((NEQUAL (ELT |line| |m|)
-                                          (|char| '|:|))
+                                          #\:)
                                   (|systemError|
                                       "wrong heading"))
                                  ('T
@@ -186,7 +186,7 @@
                                                        |instream|))))
                                                    (NEQUAL
                                                     (ELT |line| 0)
-                                                    (|char| '-))))
+                                                    #\-)))
                                                  (NREVERSE0 G166111))
                                                  (SEQ
                                                   (EXIT
@@ -270,7 +270,7 @@
                      (SEQ (EXIT (SETQ G166191
                                       (AND G166191
                                        (BOOT-EQUAL (ELT |line| |j|)
-                                        (|char| '| |))))))))))))))
+                                        #\space)))))))))))))
 
 ;string2OpAlist s ==
 ;  m := #s
@@ -303,7 +303,7 @@
                                          (+ (- |k|)
                                           (setq |k|
                                            (|charPosition|
-                                            (|char| '| |) |s|
+                                            #\space |s|
                                             (+ |k| 1))))))
                                        |acc|)))))
                 (setq |acc| (NREVERSE |acc|))
@@ -329,10 +329,10 @@
           ((BOOT-EQUAL
                (ELT (setq |s| (PNAME |name|))
                     (setq |m| (MAXINDEX |s|)))
-               (|char| '?))
+               #\?)
            (setq |u| (CONS '|p| |u|))))
         (COND
-          ((BOOT-EQUAL (ELT |s| |m|) (|char| '!))
+          ((BOOT-EQUAL (ELT |s| |m|) #\!)
            (setq |u| (CONS '|destructive| |u|))))
         |u|))))
 
@@ -343,11 +343,10 @@
 ;  i
 
 (DEFUN |skipBlanks| (|u| |i| |m|)
-  (declare (special |$charBlank|))
   (SEQ (PROGN
          (DO ()
              ((NULL (AND (> |m| |i|)
-                         (BOOT-EQUAL (ELT |u| |i|) |$charBlank|)))
+                         (BOOT-EQUAL (ELT |u| |i|) #\space)))
               NIL)
            (SEQ (EXIT (setq |i| (+ |i| 1)))))
          (COND ((>= |i| |m|) NIL) ('T |i|)))))
diff --git a/src/interp/vmlisp.lisp.pamphlet b/src/interp/vmlisp.lisp.pamphlet
index 8f558d7..49b2f81 100644
--- a/src/interp/vmlisp.lisp.pamphlet
+++ b/src/interp/vmlisp.lisp.pamphlet
@@ -60,10 +60,6 @@ documentclass{article}
 ;; DEFMACROS
 
 
-(defmacro |char| (x)
-  (if (and (consp x) (eq (car x) 'quote)) (character (cadr x))
-    `(character ,x)))
-
 (defmacro closedfn (form)
  `(function ,form))
 
@@ -3654,12 +3650,6 @@ terminals and empty or at-end files.  In Common Lisp, we must assume record size
  
 (defmacro |do| (&rest args) (CONS 'PROGN args))
 
-(defmacro |char| (arg)
-  (cond ((stringp arg) (character arg))
-        ((integerp arg) (code-char arg))
-        ((and (consp arg) (eq (car arg) 'quote)) (character (cadr arg)))
-        (t `(character ,arg))))
-
 ; # Gives the number of elements of a list, 0 for atoms.
 ; If we quote it, then an interpreter trip is necessary every time
 ; we call #, and this costs us - 4% in the RATINT DEMO."
@@ -5839,37 +5829,6 @@ o  there is some code at the end of SPECEVAL BOOT that puts "up"
    :initial-element init ))
 
 ;;;
-;;; Characters
-;;;
-
-;;(defun |char| (x) 
-;;  (char (string x) 0) )
-
-(defmacro |Char| (x) 
-  `(char (string ,x) 0) )
-
-(defmacro |Char?| (c) 
-  `(characterp ,c) )
-  ;; (or (characterp a) 
-  ;;     (and (symbolp a) (= (length (symbol-name a)) 1))))
-
-
-(defmacro |CharCode| (c)
-  `(char-code ,c) )
-
-(defmacro |CharGreater?| (c1 c2) 
-  `(char> ,c1 ,c2) )
-
-(defun |CharDigit?| (x)
-  (or 
-   (and (characterp x) (digit-char-p x))
-   (and (stringp x) (= (length x) 1) (digit-char-p (char x 0)))
-   (and (symbolp x) (|CharDigit?| (string x))) ))
-
-(defvar |SpaceChar|   #\Space)
-(defvar |NewlineChar| #\Newline)
-
-;;;
 ;;; Character Sets
 ;;;
 
-- 
1.7.5.4

