diff --git a/internal/loadups/LOADUP-FULL b/internal/loadups/LOADUP-FULL
index a70c431e..f6289eff 100644
--- a/internal/loadups/LOADUP-FULL
+++ b/internal/loadups/LOADUP-FULL
@@ -1,12 +1,12 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
 
-(FILECREATED " 5-Feb-2026 10:26:39" {WMEDLEY}<internal>loadups>LOADUP-FULL.;36 5858   
+(FILECREATED "14-Feb-2026 00:42:39" {WMEDLEY}<internal>loadups>LOADUP-FULL.;38 5967   
 
       :EDIT-BY rmk
 
       :CHANGES-TO (FNS LOADUP-FULL)
 
-      :PREVIOUS-DATE "28-Dec-2025 12:06:12" {WMEDLEY}<internal>loadups>LOADUP-FULL.;35)
+      :PREVIOUS-DATE "13-Feb-2026 00:47:52" {WMEDLEY}<internal>loadups>LOADUP-FULL.;37)
 
 
 (PRETTYCOMPRINT LOADUP-FULLCOMS)
@@ -47,7 +47,8 @@
     (PRINTOUT T "FULL fonts loaded" T])
 
 (LOADUP-FULL
-  [LAMBDA (DRIBBLEFILE)                                      (* ; "Edited  5-Feb-2026 10:26 by rmk")
+  [LAMBDA (DRIBBLEFILE)                                      (* ; "Edited 14-Feb-2026 00:42 by rmk")
+                                                             (* ; "Edited  5-Feb-2026 10:26 by rmk")
                                                              (* ; "Edited 28-Dec-2025 12:06 by rmk")
                                                              (* ; "Edited  1-Sep-2025 11:59 by rmk")
                                                              (* ; "Edited 18-Aug-2025 12:09 by rmk")
@@ -78,7 +79,6 @@
            (DIRECTORYNAME T)
            T T)                                              (* ; "For FONTSAVAILABLE lookup")
     (LOADUP '(POSTSCRIPTSTREAM))                             (* ; " to get PSCFONT.READFONT")
-    (LOADFULLFONTS)
     (LISTPUT IDLE.PROFILE 'TIMEOUT 0)
     (SETQQ *DEFAULT-CLEANUP-COMPILER* BCOMPL)
 
@@ -88,6 +88,7 @@
                    GRAPHER SPY WHERE-IS COPYFILES MSANALYZE MSPARSE MASTERSCOPE UNIXPRINT HELPSYS 
                    DINFO CLIPBOARD MODERNIZE WHEELSCROLL PRETTYFILEINDEX WHO-LINE UNIXCOMM UNIXCHAT 
                    UNIXYCD))
+    (LOADFULLFONTS)
     (COND
        ((WINDOWP *WHO-LINE*)
         (CLOSEW *WHO-LINE*)))
@@ -102,5 +103,5 @@
 
 (FIXMETA)
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (456 5820 (LOADFULLFONTS 466 . 2601) (LOADUP-FULL 2603 . 5570) (FIXMETA 5572 . 5818)))))
+  (FILEMAP (NIL (456 5929 (LOADFULLFONTS 466 . 2601) (LOADUP-FULL 2603 . 5679) (FIXMETA 5681 . 5927)))))
 STOP
diff --git a/internal/loadups/LOADUP-FULL.LCOM b/internal/loadups/LOADUP-FULL.LCOM
index 215036e7..b6d976e2 100644
Binary files a/internal/loadups/LOADUP-FULL.LCOM and b/internal/loadups/LOADUP-FULL.LCOM differ
diff --git a/internal/loadups/LOADUP-LISP b/internal/loadups/LOADUP-LISP
index 0ced0dd1..cf318813 100644
--- a/internal/loadups/LOADUP-LISP
+++ b/internal/loadups/LOADUP-LISP
@@ -1,13 +1,12 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
 
-(FILECREATED "28-Jan-2026 14:30:48" |{DSK}<Users>larry>IL>medley>internal>loadups>LOADUP-LISP.;2| 7369   
+(FILECREATED "22-Feb-2026 14:15:31" |{WMEDLEY}<internal>loadups>LOADUP-LISP.;27| 7420   
 
-      :EDIT-BY "lmm"
+      :EDIT-BY |rmk|
 
       :CHANGES-TO (FNS LOADUP-LISP)
 
-      :PREVIOUS-DATE "27-Dec-2025 15:02:04" 
-|{DSK}<Users>larry>IL>medley>internal>loadups>LOADUP-LISP.;1|)
+      :PREVIOUS-DATE "22-Feb-2026 09:49:23" |{WMEDLEY}<internal>loadups>LOADUP-LISP.;26|)
 
 
 (PRETTYCOMPRINT LOADUP-LISPCOMS)
@@ -20,7 +19,8 @@
 (DEFINEQ
 
 (LOADUP-LISP
-  (LAMBDA (DRIBBLEFILE)                                     (* \; "Edited 28-Jan-2026 14:30 by lmm")
+  (LAMBDA (DRIBBLEFILE)                                     (* \; "Edited 22-Feb-2026 14:15 by rmk")
+                                                            (* \; "Edited 28-Jan-2026 14:30 by lmm")
                                                             (* \; "Edited 27-Dec-2025 15:02 by rmk")
                                                             (* \; "Edited 16-Oct-2025 16:55 by rmk")
                                                             (* \; "Edited 18-Aug-2025 12:08 by rmk")
@@ -95,9 +95,9 @@
 
     (* |;;| "Also, UNICODE is split into UNICODE-TABLES and UNICODE, so the tables are loaded before their MCCS/Uncode client functions are installed.  Functions in UFS now depend on those translations so that filenames can have characters outside of Ascii. ")
 
-    (LOADUP '(UNICODE-TABLES UNICODE CMLPATHNAME HPRINT AARITH ADISPLAY HLDISPLAY FONTPROFILE MENU 
-                    WINDOWOBJ WINDOWSCROLL WINDOW WINDOWICON PAINTW ATTACHEDWINDOW XXGEOM XXFILL 
-                    DEXEC INSPECT DESCRIBE CMLARRAYINSPECTOR EDITINTERFACE TTYIN))
+    (LOADUP '(CMLPATHNAME HPRINT AARITH ADISPLAY HLDISPLAY FONTPROFILE MENU WINDOWOBJ WINDOWSCROLL 
+                    WINDOW WINDOWICON PAINTW ATTACHEDWINDOW XXGEOM XXFILL DEXEC INSPECT DESCRIBE 
+                    CMLARRAYINSPECTOR EDITINTERFACE TTYIN))
     (LOADUP '(BREAK-AND-TRACE))
     (LOADUP '(FASDUMP XCL-COMPILER ADVISE))
 
@@ -147,5 +147,5 @@
 (GLOBALVARS MAKESYSFILENAME MEDLEY-INIT-VARS MEDLEYDIR SYSTEMINITVARS USERRECLST)
 )
 (DECLARE\: DONTCOPY
-  (FILEMAP (NIL (675 7163 (LOADUP-LISP 685 . 7161)))))
+  (FILEMAP (NIL (640 7214 (LOADUP-LISP 650 . 7212)))))
 STOP
diff --git a/internal/loadups/LOADUP-LISP.LCOM b/internal/loadups/LOADUP-LISP.LCOM
index 7c4e5976..03306e2f 100644
Binary files a/internal/loadups/LOADUP-LISP.LCOM and b/internal/loadups/LOADUP-LISP.LCOM differ
diff --git a/internal/loadups/starter.sysout b/internal/loadups/starter.sysout
index 19d5b6a4..21543ecf 100644
Binary files a/internal/loadups/starter.sysout and b/internal/loadups/starter.sysout differ
diff --git a/library/CLIPBOARD b/library/CLIPBOARD
index df92fffe..23454b56 100644
--- a/library/CLIPBOARD
+++ b/library/CLIPBOARD
@@ -1,13 +1,12 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
 
-(FILECREATED "25-Sep-2025 15:00:01" 
-{DSK}<Users>kaplan>Local>medley3.5>working-medley>library>CLIPBOARD.;28 8305   
+(FILECREATED "23-Feb-2026 12:35:55" {WMEDLEY}<library>CLIPBOARD.;29 8228   
 
       :EDIT-BY rmk
 
-      :CHANGES-TO (FNS PUTCLIPBOARD CLIPBOARD-COPY-STREAM)
+      :CHANGES-TO (VARS CLIPBOARDCOMS)
 
-      :PREVIOUS-DATE "21-Apr-2024 09:12:04" {WMEDLEY}<library>CLIPBOARD.;18)
+      :PREVIOUS-DATE "25-Sep-2025 15:00:01" {WMEDLEY}<library>CLIPBOARD.;28)
 
 
 (PRETTYCOMPRINT CLIPBOARDCOMS)
@@ -18,7 +17,7 @@
              CLIPBOARD-PASTE-STREAM)
         (FNS SEDIT.COPYTOCLIPBOARD)
         (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DOCOPY (FILES (SYSLOAD)
-                                                              UNIXCOMM UNICODE)
+                                                              UNIXCOMM)
                (P (INSTALL-CLIPBOARD)))
         (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA)
                                                                              (NLAML)
@@ -148,7 +147,7 @@
 (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DOCOPY 
 
 (FILESLOAD (SYSLOAD)
-       UNIXCOMM UNICODE)
+       UNIXCOMM)
 
 
 (INSTALL-CLIPBOARD)
@@ -162,7 +161,7 @@
 (ADDTOVAR LAMA )
 )
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (1167 6486 (INSTALL-CLIPBOARD 1177 . 2504) (GETCLIPBOARD 2506 . 2880) (PUTCLIPBOARD 2882
- . 4306) (PASTEFROMCLIPBOARD 4308 . 5226) (CLIPBOARD-COPY-STREAM 5228 . 5762) (CLIPBOARD-PASTE-STREAM 
-5764 . 6484)) (6487 8026 (SEDIT.COPYTOCLIPBOARD 6497 . 8024)))))
+  (FILEMAP (NIL (1098 6417 (INSTALL-CLIPBOARD 1108 . 2435) (GETCLIPBOARD 2437 . 2811) (PUTCLIPBOARD 2813
+ . 4237) (PASTEFROMCLIPBOARD 4239 . 5157) (CLIPBOARD-COPY-STREAM 5159 . 5693) (CLIPBOARD-PASTE-STREAM 
+5695 . 6415)) (6418 7957 (SEDIT.COPYTOCLIPBOARD 6428 . 7955)))))
 STOP
diff --git a/library/CLIPBOARD.LCOM b/library/CLIPBOARD.LCOM
index b077be28..a883c160 100644
Binary files a/library/CLIPBOARD.LCOM and b/library/CLIPBOARD.LCOM differ
diff --git a/library/UNICODE b/library/UNICODE
deleted file mode 100644
index 36012439..00000000
--- a/library/UNICODE
+++ /dev/null
@@ -1,1508 +0,0 @@
-(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
-
-(FILECREATED " 5-Feb-2026 11:07:12" {WMEDLEY}<library>UNICODE.;213 82607  
-
-      :EDIT-BY rmk
-
-      :CHANGES-TO (FNS MAKE-UNICODE-FORMATS)
-
-      :PREVIOUS-DATE "31-Jan-2026 19:24:45" {WMEDLEY}<library>UNICODE.;212)
-
-
-(PRETTYCOMPRINT UNICODECOMS)
-
-(RPAQQ UNICODECOMS
-       (
-        (* ;; "Unicode external formats and MCCS-to-Unicode mapping functions.  Must be loaded after UNICODE-TABLES.")
-
-        (COMS                                                (* ; "External formats")
-              (FNS UTF8.OUTCHARFN UTF8.SLUG.OUTCHARFN UTF8.INCCODEFN UTF8.PEEKCCODEFN 
-                   \UTF8.BACKCCODEFN)
-              (FNS UTF16BE.OUTCHARFN UTF16BE.INCCODEFN UTF16BE.PEEKCCODEFN \UTF16BE.BACKCCODEFN)
-              (FNS UTF16LE.OUTCHARFN UTF16LE.INCCODEFN UTF16LE.PEEKCCODEFN \UTF16LE.BACKCCODEFN)
-              (FNS READBOM WRITEBOM)
-              (INITVARS (EXTERNALEOL 'LF))
-              (FNS MAKE-UNICODE-FORMATS)
-              (P (MAKE-UNICODE-FORMATS EXTERNALEOL))
-              (ADDVARS (*DEFAULT-EXTERNALFORMATS* (UNIX :UTF-8)))
-              (FNS UTF8.BINCODE \UTF8.FETCHCODE)
-              (FNS UTF8.VALIDATE NUTF8-BYTE1-BYTES NUTF8-CODE-BYTES NUTF8-STRING-BYTES N-MCHARS)
-              (DECLARE%: EVAL@COMPILE DONTCOPY (MACROS UNICODE.TRANSLATE \UTF8.GETBASEBYTE 
-                                                      UNICODE.SMALLP)))
-        
-        (* ;; "")
-
-        
-        (* ;; "These come after the translation tables have been loaded, since the Unix file names needed to read the mapping files depend on the UTF8 string coercions.  Those functions are defined as EVQ in UFS, cannot be used until the tables exist.  This assumes that previous files have only 7-bit MCCS characters in their names.")
-
-        (FNS MTOUCODE UTOMCODE MTOUCODE? UTOMCODE? MTOUSTRING UTOMSTRING MTOUTF8STRING UTF8TOMSTRING)
-        (FNS XTOUCODE UTOXCODE XTOUCODE? UTOXCODE? XTOUSTRING UTOXSTRING XTOUTF8STRING)
-        
-        (* ;; "")
-
-        (COMS                                                (* ; "Write Unicode mapping files")
-              (FNS WRITE-UNICODE-MAPPING WRITE-UNICODE-INCLUDED WRITE-UNICODE-MAPPING-HEADER 
-                   WRITE-UNICODE-MAPPING-FILENAME)
-              (FNS XCCS-UTF8-AFTER-OPEN)
-              
-              (* ;; "Automate dumping of a documentation prefix")
-
-              [DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (MISSINGCODE (CL:PARSE-INTEGER "FFFE" 
-                                                                              :RADIX 16))
-                                                      (UNDEFINEDCODE (CL:PARSE-INTEGER "FFFF" :RADIX
-                                                                            16]
-              (VARS UNICODE-MAPPING-HEADER))
-        (FNS UTF8HEXSTRING)
-        (COMS                                                (* ; "debugging")
-              (FNS SHOWCHARS)
-              (DECLARE%: DOEVAL@LOAD DONTCOPY (MACROS HEXCHAR OCTALCHAR)))
-        (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP)
-                                                UNICODE-EXPORTS))
-        (PROP (FILETYPE)
-              UNICODE)))
-
-
-
-(* ;; 
-"Unicode external formats and MCCS-to-Unicode mapping functions.  Must be loaded after UNICODE-TABLES."
-)
-
-
-
-
-(* ; "External formats")
-
-(DEFINEQ
-
-(UTF8.OUTCHARFN
-  [LAMBDA (STREAM CHARCODE RAW)                              (* ; "Edited 24-Apr-2025 15:43 by rmk")
-                                                             (* ; "Edited 20-Jan-2025 20:45 by rmk")
-                                                             (* ; "Edited 31-Jan-2024 00:32 by rmk")
-                                                            (* ; "Edited  8-Aug-2021 13:02 by rmk:")
-                                                            (* ; "Edited 17-Aug-2020 08:45 by rmk:")
-                                                            (* ; "Edited 30-Jan-2020 23:08 by rmk:")
-
-    (* ;; "Perhaps the translation table should already do the mapping for EOL to LF, but that seems to be a separate property of the stream. Also, CRLF=2 bytes.")
-
-    (* ;; "Print UTF8 sequence for CHARCODE.  Do not do MCCS to Unicode translation if RAW.")
-
-    (IF (EQ CHARCODE (CHARCODE EOL))
-        THEN (FREPLACE (STREAM CHARPOSITION) OF STREAM WITH 0)
-             (\BOUTEOL STREAM)
-      ELSE (CHANGE (FFETCH (STREAM CHARPOSITION) OF STREAM)
-                  (IPLUS16 1 DATUM))
-           (FOR C INSIDE (CL:IF RAW
-                             CHARCODE
-                             (UNICODE.TRANSLATE CHARCODE *MCCSTOUNICODE*))
-              DO (IF (ILESSP C 128)
-                     THEN (\BOUT STREAM C)
-                   ELSEIF (ILESSP C 2048)
-                     THEN                                    (* ; "x800")
-                          (\BOUT STREAM (LOGOR (LLSH 3 6)
-                                               (LRSH C 6)))
-                          (\BOUT STREAM (LOGOR (LLSH 2 6)
-                                               (LOADBYTE C 0 6)))
-                   ELSEIF (ILESSP C 65536)
-                     THEN                                    (* ; "x10000")
-                          (\BOUT STREAM (LOGOR (LLSH 7 5)
-                                               (LRSH C 12)))
-                          (\BOUT STREAM (LOGOR (LLSH 2 6)
-                                               (LOADBYTE C 6 6)))
-                          (\BOUT STREAM (LOGOR (LLSH 2 6)
-                                               (LOADBYTE C 0 6)))
-                   ELSEIF (ILESSP C 2097152)
-                     THEN                                    (* ; "x200000")
-                          (\BOUT STREAM (LOGOR (LLSH 15 4)
-                                               (LRSH C 18)))
-                          (\BOUT STREAM (LOGOR (LLSH 2 6)
-                                               (LOADBYTE C 12 6)))
-                          (\BOUT STREAM (LOGOR (LLSH 2 6)
-                                               (LOADBYTE C 6 6)))
-                          (\BOUT STREAM (LOGOR (LLSH 2 6)
-                                               (LOADBYTE C 0 6)))
-                   ELSE (ERROR "CHARCODE too big for UTF8" C])
-
-(UTF8.SLUG.OUTCHARFN
-  [LAMBDA (STREAM CODE RAW)                                  (* ; "Edited 24-Apr-2025 15:43 by rmk")
-                                                             (* ; "Edited 21-Jan-2025 18:37 by rmk")
-                                                             (* ; "Edited 14-Jan-2025 12:39 by rmk")
-
-    (* ;; "Produces Unicode Representative FFFD as a slug for MCCS unmapped characters")
-
-    (UTF8.OUTCHARFN STREAM (OR (CL:IF RAW
-                                   CODE
-                                   (XTOUCODE? CODE))
-                               (CONSTANT (HEXNUM? "FFFD")))
-           T])
-
-(UTF8.INCCODEFN
-  [LAMBDA (STREAM COUNTP RAW)                                (* ; "Edited 23-Oct-2025 08:31 by rmk")
-                                                             (* ; "Edited 24-Apr-2025 15:44 by rmk")
-                                                             (* ; "Edited  2-Feb-2024 11:44 by rmk")
-                                                             (* ; "Edited 30-Jan-2024 22:56 by rmk")
-                                                            (* ; "Edited  6-Aug-2021 16:02 by rmk:")
-                                                            (* ; "Edited  6-Aug-2020 17:13 by rmk:")
-
-    (* ;; "Do not do UNICODE to MCSS translation if RAW.")
-
-    (* ;; "Test for smallp because the stream's End-of-file operation may suppress the error")
-
-    (DECLARE (USEDFREE *BYTECOUNTER*))
-    (LET (BYTE1 BYTE2 BYTE3 BYTE4 CODE (COUNT 1))
-         (SETQ BYTE1 (\BIN STREAM))
-
-         (* ;; "Distinguish on header bytes (modulo peculiar EOF behavior--the caller will get whatever ended up in BYTE1")
-
-         (CL:WHEN (SMALLP BYTE1)
-             [SETQ CODE (if (ILEQ BYTE1 127)
-                            then 
-                                 (* ;; 
-                           "Test first:  Ascii is the common case.  EOL requires its own translation")
-
-                                 (SELCHARQ BYTE1
-                                      (CR (SELECTC (fetch (STREAM EOLCONVENTION) of STREAM)
-                                              (CR.EOLC       (* ; "Also eq BYTE1")
-                                                       (CHARCODE EOL))
-                                              (CRLF.EOLC (if (EQ (CHARCODE LF)
-                                                                 (\PEEKBIN STREAM T))
-                                                             then (\BIN STREAM)
-                                                                  (CL:WHEN COUNTP (SETQ COUNT 2))
-                                                                  (CHARCODE EOL)
-                                                           else BYTE1))
-                                              BYTE1))
-                                      (LF (CL:IF (EQ LF.EOLC (fetch (STREAM EOLCONVENTION)
-                                                                of STREAM))
-                                              (CHARCODE EOL)
-                                              BYTE1))
-                                      BYTE1)
-                          elseif (ILEQ BYTE1 223)
-                            then                             (* ; "2 bytes")
-                                 (SETQ COUNT 2)
-                                 (SETQ BYTE2 (\BIN STREAM))
-                                 (CL:WHEN (OR (NOT (SMALLP BYTE2))
-                                              (ILESSP BYTE2 128))
-                                     (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2)))
-                                 (LOGOR (LLSH (LOADBYTE BYTE1 0 5)
-                                              6)
-                                        (LOADBYTE BYTE2 0 6))
-                          elseif (ILEQ BYTE1 239)
-                            then                             (* ; "3 bytes")
-                                 (SETQ BYTE2 (\BIN STREAM))
-                                 (CL:WHEN (OR (NOT (SMALLP BYTE2))
-                                              (ILESSP BYTE2 128))
-                                     (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2)))
-                                 (SETQ BYTE3 (\BIN STREAM))
-                                 (CL:WHEN (OR (NOT (SMALLP BYTE3))
-                                              (ILESSP BYTE3 128))
-                                     (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3)))
-                                 (SETQ COUNT 3)
-                                 (LOGOR (LLSH (LOADBYTE BYTE1 0 4)
-                                              12)
-                                        (LLSH (LOADBYTE BYTE2 0 6)
-                                              6)
-                                        (LOADBYTE BYTE3 0 6))
-                          else                               (* ; "4 bytes")
-                               (SETQ BYTE2 (\BIN STREAM))
-                               (CL:WHEN (OR (NOT (SMALLP BYTE2))
-                                            (ILESSP BYTE2 128))
-                                   (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2)))
-                               (SETQ BYTE3 (\BIN STREAM))
-                               (CL:WHEN (OR (NOT (SMALLP BYTE3))
-                                            (ILESSP BYTE3 128))
-                                   (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3)))
-                               (SETQ BYTE4 (\BIN STREAM))
-                               (CL:WHEN (OR (NOT (SMALLP BYTE4))
-                                            (ILESSP BYTE4 128))
-                                   (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3 BYTE4)))
-                               (SETQ COUNT 4)
-                               (LOGOR (LLSH (LOADBYTE BYTE1 0 3)
-                                            18)
-                                      (LLSH (LOADBYTE BYTE2 0 6)
-                                            12)
-                                      (LLSH (LOADBYTE BYTE3 0 6)
-                                            6)
-                                      (LOADBYTE BYTE4 0 6])
-         (CL:UNLESS RAW
-             (SETQ CODE (UNICODE.TRANSLATE (UNICODE.SMALLP CODE)
-                               *UNICODETOMCCS*)))
-         (CL:WHEN COUNTP (SETQ *BYTECOUNTER* COUNT))
-         CODE])
-
-(UTF8.PEEKCCODEFN
-  [LAMBDA (STREAM NOERROR RAW)                               (* ; "Edited 23-Oct-2025 08:26 by rmk")
-                                                             (* ; "Edited 24-Apr-2025 15:44 by rmk")
-                                                             (* ; "Edited  2-Feb-2024 11:48 by rmk")
-                                                            (* ; "Edited 14-Jun-2021 22:53 by rmk:")
-
-    (* ;; "Modeled this after \EUCPEEK on LLREAD.  In the multi-byte (non-ASCII) case, backs the file pointer to the beginning by the proper number of \BACKFILEPTRs, and returns a count of 0.  Returns NIL if NOERROR and either invalid UTF8 or end of file.")
-
-    (* ;; "Could be that the caller takes care of backing up the file position if the number of binned-bytes is returned.")
-
-    (* ;; "Do not do UNICODE to MCCS translation if RAW")
-
-    (PROG (BYTE1 BYTE2 BYTE3 BYTE4 CODE)
-          (SETQ BYTE1 (\PEEKBIN STREAM NOERROR))
-
-     (* ;; "Distinguish on header bytex")
-
-          (CL:UNLESS BYTE1 (RETURN NIL))
-          [if (ILEQ BYTE1 127)
-              then 
-                   (* ;; 
-                   "Test first:  Ascii is the common case.  No need to back up, since we peeked.")
-
-                   (SETQ CODE BYTE1)
-            elseif [ILEQ BYTE1 223                           (* ; "2 bytes")
-                         (BIN STREAM)
-                         (SETQ BYTE2 (\PEEKBIN STREAM NOERROR))
-                         (\BACKFILEPTR STREAM)
-                         (if (AND BYTE2 (IGEQ BYTE2 128))
-                             then (SETQ CODE (LOGOR (LLSH (LOADBYTE BYTE1 0 5)
-                                                          6)
-                                                    (LOADBYTE BYTE2 0 6)))
-                           elseif NOERROR
-                           else (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2]
-            elseif (ILEQ BYTE1 239)
-              then                                           (* ; "3 bytes")
-                   (BIN STREAM)
-                   (CL:UNLESS (AND (SETQ BYTE2 (\PEEKBIN STREAM NOERROR))
-                                   (IGEQ BYTE2 128))
-                       (\BACKFILEPTR STREAM)
-                       (OR NOERROR (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2)))
-                       (RETURN CODE))
-                   (BIN STREAM)
-                   (SETQ BYTE3 (\PEEKBIN STREAM NOERROR))    (* ; 
-                                                             "PEEK the last, no need to back it up")
-                   (\BACKFILEPTR STREAM)
-                   (\BACKFILEPTR STREAM)
-                   (if (AND BYTE3 (IGEQ BYTE3 128))
-                       then (SETQ CODE (LOGOR (LLSH (LOADBYTE BYTE1 0 4)
-                                                    12)
-                                              (LLSH (LOADBYTE BYTE2 0 6)
-                                                    6)
-                                              (LOADBYTE BYTE3 0 6)))
-                     elseif NOERROR
-                     else (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3)))
-            else                                             (* ; "4 bytes")
-                 (BIN STREAM)
-                 (CL:UNLESS (AND (SETQ BYTE2 (\PEEKBIN STREAM NOERROR))
-                                 (IGEQ BYTE2 128))
-                     (\BACKFILEPTR STREAM)
-                     (OR NOERROR (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2)))
-                     (RETURN CODE))
-                 (BIN STREAM)
-                 (CL:UNLESS (AND (SETQ BYTE3 (\PEEKBIN STREAM NOERROR))
-                                 (IGEQ BYTE3 128))
-                     (\BACKFILEPTR STREAM)
-                     (\BACKFILEPTR STREAM)
-                     (OR NOERROR (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3)))
-                     (RETURN CODE))
-                 (BIN STREAM)
-                 (SETQ BYTE4 (\PEEKBIN STREAM NOERROR))
-                 (\BACKFILEPTR STREAM)
-                 (\BACKFILEPTR STREAM)
-                 (\BACKFILEPTR STREAM)
-                 (if (AND BYTE4 (IGEQ BYTE4 128))
-                     then (SETQ CODE (LOGOR (LLSH (LOADBYTE BYTE1 0 3)
-                                                  18)
-                                            (LLSH (LOADBYTE BYTE2 0 6)
-                                                  12)
-                                            (LLSH (LOADBYTE BYTE3 0 6)
-                                                  6)
-                                            (LOADBYTE BYTE4 0 6)))
-                   elseif NOERROR
-                   else (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3 BYTE4]
-          (CL:WHEN (AND CODE (NOT RAW))
-              (SETQ CODE (UNICODE.TRANSLATE (UNICODE.SMALLP CODE)
-                                *UNICODETOMCCS*)))
-          (RETURN CODE])
-
-(\UTF8.BACKCCODEFN
-  [LAMBDA (STREAM COUNTP RAW)                                (* ; "Edited 19-Jul-2022 15:30 by rmk")
-                                                            (* ; "Edited  6-Aug-2021 16:04 by rmk:")
-
-    (* ;; "\BACKFILEPTR is NIL at beginning of FILE.  Presumably a little bit more efficient if we decoded the UTF8 bytes backwards and didn't do the peek, but probably not worth the complexity. ")
-
-    (DECLARE (USEDFREE *BYTECOUNTER*))
-    (BIND (C _ 0) WHILE (IF (\BACKFILEPTR STREAM)
-                            THEN (ADD C -1)
-                                 (EQ 2 (LRSH (\PEEKBIN STREAM)
-                                             6))
-                          ELSE (CL:WHEN COUNTP (SETQ *BYTECOUNTER* C))
-                               (RETURN NIL)) REPEATUNTIL (EQ C -4)
-       FINALLY (CL:WHEN COUNTP (SETQ *BYTECOUNTER* C))
-             (RETURN (UTF8.PEEKCCODEFN STREAM NIL RAW])
-)
-(DEFINEQ
-
-(UTF16BE.OUTCHARFN
-  [LAMBDA (STREAM CHARCODE RAW)                              (* ; "Edited 24-Apr-2025 15:44 by rmk")
-                                                             (* ; "Edited 31-Jan-2024 00:32 by rmk")
-                                                            (* ; "Edited  8-Aug-2021 13:09 by rmk:")
-                                                            (* ; "Edited 30-Jan-2020 23:08 by rmk:")
-
-    (* ;; "PRINT UTF16 sequence for CHARCODE.  Do not do MCCS to UNICODE translation if RAW.")
-
-    (* ;; "Not sure about EOL conversion if truly %"raw%"")
-
-    (IF (EQ CHARCODE (CHARCODE EOL))
-        THEN (FREPLACE (STREAM CHARPOSITION) OF STREAM WITH 0)
-      ELSE (CHANGE (FFETCH (STREAM CHARPOSITION) OF STREAM)
-                  (IPLUS16 1 DATUM)))
-    (FOR C INSIDE (CL:IF RAW
-                      CHARCODE
-                      (UNICODE.TRANSLATE CHARCODE *MCCSTOUNICODE*)) DO (\WOUT STREAM C])
-
-(UTF16BE.INCCODEFN
-  [LAMBDA (STREAM COUNTP RAW)                                (* ; "Edited 24-Apr-2025 15:45 by rmk")
-                                                             (* ; "Edited 10-Mar-2024 12:00 by rmk")
-                                                            (* ; "Edited  6-Aug-2021 16:05 by rmk:")
-
-    (* ;; 
-    "Do not do UNICODE to MCCS translation if RAW.  Test for SMALLPin case of funky EOF behavior")
-
-    (DECLARE (USEDFREE *BYTECOUNTER*))
-    (LET (CODE BYTE1 BYTE2 COUNT)
-         (IF [AND (SMALLP (SETQ BYTE1 (\BIN STREAM)))
-                  (SMALLP (SETQ BYTE2 (\BIN STREAM]
-             THEN (SETQ COUNT 2)
-                  (SETQ CODE (create WORD
-                                    HIBYTE _ (\BIN STREAM)
-                                    LOBYTE _ (\BIN STREAM)))
-                  (CL:UNLESS RAW
-                      (SETQ CODE (UNICODE.TRANSLATE CODE *UNICODETOMCCS*)))
-                  (CL:WHEN COUNTP (SETQ *BYTECOUNTER* COUNT))
-                  CODE
-           ELSE (ERROR "ODD NUMBER OF BYTES IN UTF16 FILE" STREAM])
-
-(UTF16BE.PEEKCCODEFN
-  [LAMBDA (STREAM NOERROR RAW)                               (* ; "Edited 24-Apr-2025 15:45 by rmk")
-                                                             (* ; "Edited 10-Mar-2024 12:01 by rmk")
-                                                            (* ; "Edited 14-Jun-2021 22:58 by rmk:")
-
-    (* ;; "Could be that the caller takes care of backing up the file position if the number of binned-bytes is returned.")
-
-    (* ;; "Do not do UNICODE to MCCS translation if RAW")
-
-    (LET (BYTE1 BYTE2 CODE)
-         (SETQ BYTE1 (\PEEKBIN STREAM NOERROR))
-         (IF BYTE1
-             THEN (\BIN STREAM)
-                  (SETQ BYTE2 (\PEEKBIN STREAM NOERROR))
-                  (\BACKFILEPTR STREAM)
-                  (IF BYTE2
-                      THEN (SETQ CODE (create WORD
-                                             HIBYTE _ BYTE1
-                                             LOBYTE _ BYTE2))
-                           (CL:IF RAW
-                               CODE
-                               (UNICODE.TRANSLATE CODE *UNICODETOMCCS*))
-                    ELSEIF NOERROR
-                      THEN NIL)
-           ELSEIF NOERROR
-             THEN NIL
-           ELSE (ERROR "INVALID UTF16 CHARACTER" (LIST BYTE1 BYTE2])
-
-(\UTF16BE.BACKCCODEFN
-  [LAMBDA (STREAM COUNTP RAW)                                (* ; "Edited 24-Apr-2025 15:28 by rmk")
-                                                             (* ; "Edited 10-Mar-2024 12:02 by rmk")
-                                                             (* ; "Edited 19-Jul-2022 15:14 by rmk")
-                                                            (* ; "Edited  6-Aug-2021 16:07 by rmk:")
-
-    (* ;; "\BACKFILEPTR is NIL at beginning of FILE, do nothing.")
-
-    (DECLARE (USEDFREE *BYTECOUNTER*))
-    (CL:WHEN (\BACKFILEPTR STREAM)
-        (LET (CODE (BYTE2 (\PEEKBIN STREAM)))
-             (IF (\BACKFILEPTR STREAM)
-                 THEN (CL:WHEN COUNTP (SETQ *BYTECOUNTER* -2))
-                      (SETQ CODE (create WORD
-                                        HIBYTE _ (\PEEKBIN STREAM)
-                                        LOBYTE _ BYTE2))
-                      (CL:IF RAW
-                          CODE
-                          (UNICODE.TRANSLATE CODE *UNICODETOMCCS*))
-               ELSEIF COUNTP
-                 THEN (SETQ *BYTECOUNTER* -1)
-                      NIL)))])
-)
-(DEFINEQ
-
-(UTF16LE.OUTCHARFN
-  [LAMBDA (STREAM CHARCODE RAW)                              (* ; "Edited 24-Apr-2025 15:45 by rmk")
-                                                             (* ; "Edited 10-Mar-2024 11:58 by rmk")
-                                                            (* ; "Edited  8-Aug-2021 13:09 by rmk:")
-                                                            (* ; "Edited 30-Jan-2020 23:08 by rmk:")
-
-    (* ;; "PRINT UTF16 sequence for CHARCODE.  Do not do MCCS to UNICODE translation if RAW.")
-
-    (* ;; "Not sure about EOL conversion if truly %"raw%"")
-
-    (IF (EQ CHARCODE (CHARCODE EOL))
-        THEN (FREPLACE (STREAM CHARPOSITION) OF STREAM WITH 0)
-      ELSE (CHANGE (FFETCH (STREAM CHARPOSITION) OF STREAM)
-                  (IPLUS16 1 DATUM)))
-    (FOR C INSIDE (CL:IF RAW
-                      CHARCODE
-                      (UNICODE.TRANSLATE CHARCODE *MCCSTOUNICODE*))
-       DO (BOUT STREAM (fetch LOBYTE of CHARCODE))
-          (BOUT STREAM (fetch HIBYTE of CHARCODE])
-
-(UTF16LE.INCCODEFN
-  [LAMBDA (STREAM COUNTP RAW)                                (* ; "Edited 24-Apr-2025 15:45 by rmk")
-                                                             (* ; "Edited 10-Mar-2024 12:03 by rmk")
-                                                            (* ; "Edited  6-Aug-2021 16:05 by rmk:")
-
-    (* ;; 
-    "Do not do UNICODE to MCCS translation if RAW.  Test for SMALLPin case of funky EOF behavior")
-
-    (DECLARE (USEDFREE *BYTECOUNTER*))
-    (LET (CODE BYTE1 BYTE2 COUNT)
-         (IF [AND (SMALLP (SETQ BYTE1 (\BIN STREAM)))
-                  (SMALLP (SETQ BYTE2 (\BIN STREAM]
-             THEN (SETQ COUNT 2)
-                  (SETQ CODE (create WORD
-                                    LOBYTE _ (\BIN STREAM)
-                                    HIBYTE _ (\BIN STREAM)))
-                  (CL:UNLESS RAW
-                      (SETQ CODE (UNICODE.TRANSLATE CODE *UNICODETOMCCS*)))
-                  (CL:WHEN COUNTP (SETQ *BYTECOUNTER* COUNT))
-                  CODE
-           ELSE (ERROR "ODD NUMBER OF BYTES IN UTF16 FILE" STREAM])
-
-(UTF16LE.PEEKCCODEFN
-  [LAMBDA (STREAM NOERROR RAW)                               (* ; "Edited 24-Apr-2025 15:46 by rmk")
-                                                             (* ; "Edited 10-Mar-2024 11:43 by rmk")
-                                                            (* ; "Edited 14-Jun-2021 22:58 by rmk:")
-
-    (* ;; "Could be that the caller takes care of backing up the file position if the number of binned-bytes is returned.")
-
-    (* ;; "Do not do UNICODE to MCCS translation if RAW")
-
-    (LET (BYTE1 BYTE2 CODE)
-         (SETQ BYTE1 (\PEEKBIN STREAM NOERROR))
-         (IF BYTE1
-             THEN (\BIN STREAM)
-                  (SETQ BYTE2 (\PEEKBIN STREAM NOERROR))
-                  (\BACKFILEPTR STREAM)
-                  (IF BYTE2
-                      THEN (SETQ CODE (LOGOR (LLSH BYTE2 8)
-                                             BYTE1))
-                           (CL:IF RAW
-                               CODE
-                               (UNICODE.TRANSLATE CODE *UNICODETOMCCS*))
-                    ELSEIF NOERROR
-                      THEN NIL)
-           ELSEIF NOERROR
-             THEN NIL
-           ELSE (ERROR "INVALID UTF16 CHARACTER" (LIST BYTE1 BYTE2])
-
-(\UTF16LE.BACKCCODEFN
-  [LAMBDA (STREAM COUNTP RAW)                                (* ; "Edited 24-Apr-2025 15:28 by rmk")
-                                                             (* ; "Edited 10-Mar-2024 12:04 by rmk")
-                                                             (* ; "Edited 19-Jul-2022 15:14 by rmk")
-                                                            (* ; "Edited  6-Aug-2021 16:07 by rmk:")
-
-    (* ;; "\BACKFILEPTR is NIL at beginning of FILE, do nothing.")
-
-    (DECLARE (USEDFREE *BYTECOUNTER*))
-    (CL:WHEN (\BACKFILEPTR STREAM)
-        (LET (CODE (BYTE2 (\PEEKBIN STREAM)))
-             (IF (\BACKFILEPTR STREAM)
-                 THEN (CL:WHEN COUNTP (SETQ *BYTECOUNTER* -2))
-                      (SETQ CODE (create WORD
-                                        HIBYTE _ BYTE2
-                                        LOBYTE _ (\PEEKBIN STREAM)))
-                      (CL:IF RAW
-                          CODE
-                          (UNICODE.TRANSLATE CODE *UNICODETOMCCS*))
-               ELSEIF COUNTP
-                 THEN (SETQ *BYTECOUNTER* -1)
-                      NIL)))])
-)
-(DEFINEQ
-
-(READBOM
-  [LAMBDA (STREAM COUNTP)                                    (* ; "Edited 17-Jan-2025 11:29 by rmk")
-                                                             (* ; "Edited 11-Mar-2024 23:53 by rmk")
-                                                             (* ; "Edited 10-Mar-2024 13:01 by rmk")
-
-    (* ;; "If COUNTP, this must be under a generic \INCCODE that binds *BYTECOUNTER*")
-
-    (* ;; "Reads and decodes the BOM bytes.  If BOM ispresent, the stream is left at the first following byte, otherwise the stream is reset to its position on entry (presumably 0).")
-
-    (* ;; "I used the UNHEXTRING constants so that the hex bytes are visible in the code, maybe there's another function that does that?")
-
-    (DECLARE (USEDFREE *BYTECOUNTER*))
-    (SELECTC (\PEEKBIN STREAM T)
-        ((HEXNUM? "EF") 
-             (BIN STREAM)
-             (if (EQ (CONSTANT (HEXNUM? "BB"))
-                     (\PEEKBIN STREAM T))
-                 then (BIN STREAM)
-                      (if (EQ (CONSTANT (HEXNUM? "BF"))
-                              (\PEEKBIN STREAM T))
-                          then (BIN STREAM)
-                               (CL:WHEN COUNTP (add *BYTECOUNTER* 3))
-                               :UTF-8
-                        else (\BACKFILEPTR STREAM))
-               else (\BACKFILEPTR STREAM)))
-        ((HEXNUM? "FE") 
-             (BIN STREAM)
-             (if (EQ (CONSTANT (HEXNUM? "FF"))
-                     (\PEEKBIN STREAM T))
-                 then (BIN STREAM)
-                      (CL:WHEN COUNTP (add *BYTECOUNTER* 2))
-                      :UTF-16BE
-               else (\BACKFILEPTR STREAM)))
-        ((HEXNUM? "FF") 
-             (BIN STREAM)
-             (if (EQ (CONSTANT (HEXNUM? "FE"))
-                     (\PEEKBIN STREAM T))
-                 then (BIN STREAM)
-                      (CL:WHEN COUNTP (add *BYTECOUNTER* 2))
-                      :UTF-16LE
-               else (\BACKFILEPTR STREAM)))
-        NIL])
-
-(WRITEBOM
-  [LAMBDA (STREAM FORMAT)                                    (* ; "Edited 17-Jan-2025 11:29 by rmk")
-                                                             (* ; "Edited 16-Mar-2024 20:53 by rmk")
-                                                             (* ; "Edited 11-Mar-2024 23:53 by rmk")
-                                                             (* ; "Edited 10-Mar-2024 13:01 by rmk")
-
-    (* ;; "Writes a BOM that represents FORMAT (:UTF-8, :UTF16-BE, :UTF16-LE")
-
-    (SELECTQ FORMAT
-        (:UTF-8 (BOUT STREAM (CONSTANT (HEXNUM? "EF")))
-                (BOUT STREAM (CONSTANT (HEXNUM? "BB")))
-                (BOUT STREAM (CONSTANT (HEXNUM? "BF"))))
-        (:UTF-16BE (BOUT STREAM (CONSTANT (HEXNUM? "FE")))
-                   (BOUT STREAM (CONSTANT (HEXNUM? "FF"))))
-        (:UTF-16LE (BOUT STREAM (CONSTANT (HEXNUM? "FF")))
-                   (BOUT STREAM (HEXNUM? "FE")))
-        NIL])
-)
-
-(RPAQ? EXTERNALEOL 'LF)
-(DEFINEQ
-
-(MAKE-UNICODE-FORMATS
-  [LAMBDA (EXTERNALEOL)                                      (* ; "Edited  5-Feb-2026 11:06 by rmk")
-                                                             (* ; "Edited 17-Jan-2025 18:38 by rmk")
-                                                             (* ; "Edited 10-Mar-2024 11:55 by rmk")
-                                                             (* ; "Edited  8-Dec-2023 15:19 by rmk")
-                                                             (* ; "Edited 19-Jul-2022 15:36 by rmk")
-                                                            (* ; "Edited  6-Aug-2021 16:08 by rmk:")
-
-    (* ;; "RAW formats do not do XCCS/Unicode translation, just deal with the byte encoding.")
-
-    (* ;; "The EXTERNALEOL specifies the EOLCONVENTION of the stream, particularly to produce output files with the desired convention.  On input the macro \CHECKEOLC (LLREAD) coerces only that coding to the internal EOL, which is a mistake.")
-
-    (MAKE-EXTERNALFORMAT :UTF-8 (FUNCTION UTF8.INCCODEFN)
-           (FUNCTION UTF8.PEEKCCODEFN)
-           (FUNCTION \UTF8.BACKCCODEFN)
-           (FUNCTION UTF8.OUTCHARFN)
-           NIL EXTERNALEOL NIL (FUNCTION MTOUTF8STRING)
-           NIL
-           (FUNCTION NILL)
-           (FUNCTION UTF8TOMSTRING))
-    (MAKE-EXTERNALFORMAT :UTF-8-RAW [FUNCTION (LAMBDA (STREAM COUNTP)
-                                                (UTF8.INCCODEFN STREAM COUNTP T]
-           [FUNCTION (LAMBDA (STREAM NOERROR)
-                       (UTF8.PEEKCCODEFN STREAM NOERROR T]
-           [FUNCTION (LAMBDA (STREAM COUNTP)
-                       (\UTF8.BACKCCODEFN STREAM COUNTP T]
-           [FUNCTION (LAMBDA (STREAM CHARCODE)
-                       (UTF8.OUTCHARFN STREAM CHARCODE T]
-           NIL EXTERNALEOL NIL NIL NIL (FUNCTION NILL))
-    (MAKE-EXTERNALFORMAT :UTF-16BE (FUNCTION UTF16BE.INCCODEFN)
-           (FUNCTION UTF16BE.PEEKCCODEFN)
-           (FUNCTION \UTF16BE.BACKCCODEFN)
-           (FUNCTION UTF16BE.OUTCHARFN)
-           NIL EXTERNALEOL NIL NIL NIL (FUNCTION NILL))
-    (MAKE-EXTERNALFORMAT :UTF-16BE-RAW [FUNCTION (LAMBDA (STREAM COUNTP)
-                                                   (UTF16BE.INCCODEFN STREAM COUNTP T]
-           [FUNCTION (LAMBDA (STREAM NOERROR)
-                       (UTF16BE.PEEKCCODEFN STREAM NOERROR T]
-           [FUNCTION (LAMBDA (STREAM COUNTP)
-                       (\UTF16BE.BACKCCODEFN STREAM COUNTP T]
-           [FUNCTION (LAMBDA (STREAM CHARCODE)
-                       (UTF16BE.OUTCHARFN STREAM CHARCODE T]
-           NIL EXTERNALEOL NIL NIL NIL (FUNCTION NILL))
-    (MAKE-EXTERNALFORMAT :UTF-16LE (FUNCTION UTF16LE.INCCODEFN)
-           (FUNCTION UTF16LE.PEEKCCODEFN)
-           (FUNCTION \UTF16LE.BACKCCODEFN)
-           (FUNCTION UTF16LE.OUTCHARFN)
-           NIL EXTERNALEOL NIL NIL NIL (FUNCTION NILL))
-    (MAKE-EXTERNALFORMAT :UTF-16LE-RAW [FUNCTION (LAMBDA (STREAM COUNTP)
-                                                   (UTF16LE.INCCODEFN STREAM COUNTP T]
-           [FUNCTION (LAMBDA (STREAM NOERROR)
-                       (UTF16LE.PEEKCCODEFN STREAM NOERROR T]
-           [FUNCTION (LAMBDA (STREAM COUNTP)
-                       (\UTF16LE.BACKCCODEFN STREAM COUNTP T]
-           [FUNCTION (LAMBDA (STREAM CHARCODE)
-                       (UTF16LE.OUTCHARFN STREAM CHARCODE T]
-           NIL EXTERNALEOL NIL NIL NIL (FUNCTION NILL))
-    (\INSTALL.EXTERNALFORMAT (create EXTERNALFORMAT using (FIND-FORMAT :UTF-8)
-                                                          NAME _ :UTF-8-SLUG OUTCHARFN _
-                                                          (FUNCTION UTF8.SLUG.OUTCHARFN])
-)
-
-(MAKE-UNICODE-FORMATS EXTERNALEOL)
-
-(ADDTOVAR *DEFAULT-EXTERNALFORMATS* (UNIX :UTF-8))
-(DEFINEQ
-
-(UTF8.BINCODE
-  [LAMBDA (STREAM RAW)                                       (* ; "Edited 24-Apr-2025 15:28 by rmk")
-                                                             (* ; "Edited  4-Feb-2024 01:06 by rmk")
-                                                             (* ; "Edited  1-Feb-2024 11:21 by rmk")
-                                                             (* ; "Edited 28-Dec-2023 13:32 by rmk")
-                                                            (* ; "Edited  6-Aug-2021 16:02 by rmk:")
-                                                            (* ; "Edited  6-Aug-2020 17:13 by rmk:")
-
-    (* ;; "Decodes a UTF8 character code by binning  from STREAM ")
-
-    (* ;; "The validity of STREAM is guaranteed by the caller (presumably TEDIT), we aren't testing here for the validity of the trailing bytes.")
-
-    (* ;; "This doesn't do EOL conversion or translation, unlike UTF8.INCCODEFN.")
-
-    (LET ((BYTE1 (BIN STREAM))
-          CODE)
-         [SETQ CODE (if (ILEQ BYTE1 127)
-                        then BYTE1
-                      elseif (ILEQ BYTE1 223)
-                        then                                 (* ; "2 bytes")
-                             (LOGOR (LLSH (LOADBYTE BYTE1 0 5)
-                                          6)
-                                    (LOADBYTE (BIN STREAM)
-                                           0 6))
-                      elseif (ILEQ BYTE1 239)
-                        then                                 (* ; "3 bytes")
-                             (LOGOR (LLSH (LOADBYTE BYTE1 0 4)
-                                          12)
-                                    (LLSH (LOADBYTE (BIN STREAM)
-                                                 0 6)
-                                          6)
-                                    (LOADBYTE (BIN STREAM)
-                                           0 6))
-                      else                                   (* ; "4 bytes")
-                           (LOGOR (LLSH (LOADBYTE BYTE1 0 3)
-                                        18)
-                                  (LLSH (LOADBYTE (BIN STREAM)
-                                               0 6)
-                                        12)
-                                  (LLSH (LOADBYTE (BIN STREAM)
-                                               0 6)
-                                        6)
-                                  (LOADBYTE (BIN STREAM)
-                                         0 6]
-         (CL:IF RAW
-             CODE
-             (UNICODE.TRANSLATE CODE *UNICODETOMCCS*))])
-
-(\UTF8.FETCHCODE
-  [LAMBDA (CODESIZE BUFFER BYTEOFFSET)                       (* ; "Edited 28-Dec-2023 13:32 by rmk")
-                                                            (* ; "Edited  6-Aug-2021 16:02 by rmk:")
-                                                            (* ; "Edited  6-Aug-2020 17:13 by rmk:")
-
-    (* ;; "Decodes a UTF8 byte sequence of size CODESIZE in BUFFER starting at BYTEOFFSET.")
-
-    (* ;; "The validity of the thesize, buffer, and offset are guaranteed by the caller.")
-
-    (LET ((BYTE1 (\GETBASEBYTE BUFFER BYTEOFFSET))
-          BYTE2 BYTE3 BYTE4)
-         (SELECTQ CODESIZE
-             (2 (SETQ BYTE2 (\UTF8.GETBASEBYTE BUFFER (IPLUS 1 BYTEOFFSET)))
-                (LOGOR (LLSH (LOADBYTE BYTE1 0 5)
-                             6)
-                       (LOADBYTE BYTE2 0 6)))
-             (3 (SETQ BYTE2 (\UTF8.GETBASEBYTE BUFFER (IPLUS 1 BYTEOFFSET)))
-                (SETQ BYTE3 (\UTF8.GETBASEBYTE BUFFER (IPLUS 2 BYTEOFFSET)))
-                (LOGOR (LLSH (LOADBYTE BYTE1 0 4)
-                             12)
-                       (LLSH (LOADBYTE BYTE2 0 6)
-                             6)
-                       (LOADBYTE BYTE3 0 6)))
-             (4 (SETQ BYTE2 (\UTF8.GETBASEBYTE BUFFER (IPLUS 1 BYTEOFFSET)))
-                (SETQ BYTE3 (\UTF8.GETBASEBYTE BUFFER (IPLUS 2 BYTEOFFSET)))
-                (SETQ BYTE4 (\UTF8.GETBASEBYTE BUFFER (IPLUS 3 BYTEOFFSET)))
-                (LOGOR (LLSH (LOADBYTE BYTE1 0 3)
-                             18)
-                       (LLSH (LOADBYTE BYTE2 0 6)
-                             12)
-                       (LLSH (LOADBYTE BYTE3 0 6)
-                             6)
-                       (LOADBYTE BYTE4 0 6)))
-             (1 BYTE1)
-             (SHOULDNT])
-)
-(DEFINEQ
-
-(UTF8.VALIDATE
-  [LAMBDA (STREAM BYTE)                                      (* ; "Edited  2-Feb-2024 12:03 by rmk")
-                                                             (* ; "Edited 28-Dec-2023 11:57 by rmk")
-                                                            (* ; "Edited  6-Aug-2021 16:02 by rmk:")
-                                                            (* ; "Edited  6-Aug-2020 17:13 by rmk:")
-
-    (* ;; "Returns the codesize if the bytes starting at STREAM's current position form a valid UTF-8 sequence.")
-
-    (* ;; "If BYTE is provided, it is interpreted as the just-read header byte with the stream is positioned just after it.")
-
-    (* ;; "Test for smallp because the stream's End-of-file operation may suppress the error--otherwise an error will happen if the streams runs out of necessary bytes.")
-
-    (* ;; "For valid sequences, returns the same value as UTF8-SIZE-FROM-BYTE1, but this reads/validates the rest of the bytes. On a non-NILreturn the  stream is positioned before the header byte of the next putative code. The stream position is uncertain on a NIL return.")
-
-    (* ;; "")
-
-    (* ;; "Distinguish on the header byte BYTE.  Not SMALLP presumably if ENDOFSTREAMOP did something unusual.")
-
-    (CL:UNLESS BYTE
-        (SETQ BYTE (BIN STREAM)))
-    (CL:WHEN (SMALLP BYTE)
-        (if (ILEQ BYTE 127)
-            then 1
-          elseif (ILEQ BYTE 223)
-            then                                             (* ; " 2 bytes")
-                 (CL:UNLESS (OR [NOT (SMALLP (SETQ BYTE (BIN STREAM]
-                                (ILESSP BYTE 128))
-                        2)
-          elseif (ILEQ BYTE 239)
-            then                                             (* ; "3 bytes")
-                 (CL:UNLESS (OR (OR [NOT (SMALLP (SETQ BYTE (BIN STREAM]
-                                    (ILESSP BYTE 128))
-                                (OR [NOT (SMALLP (SETQ BYTE (BIN STREAM]
-                                    (ILESSP BYTE 128)))
-                        3)
-          else                                               (* ; "4 bytes")
-               (CL:UNLESS (OR (OR [NOT (SMALLP (SETQ BYTE (BIN STREAM]
-                                  (ILESSP BYTE 128))
-                              (OR [NOT (SMALLP (SETQ BYTE (BIN STREAM]
-                                  (ILESSP BYTE 128))
-                              (OR [NOT (SMALLP (SETQ BYTE (BIN STREAM]
-                                  (ILESSP BYTE 128)))
-                      4)))])
-
-(NUTF8-BYTE1-BYTES
-  [LAMBDA (BYTE1)                                            (* ; "Edited  3-Feb-2024 15:00 by rmk")
-                                                             (* ; "Edited  8-Jan-2024 10:57 by rmk")
-                                                             (* ; "Edited 28-Jun-2022 00:02 by rmk")
-                                                            (* ; "Edited 10-Aug-2020 12:35 by rmk:")
-
-    (* ;; "Returns the number of bytes in a UTF8 code representation whose first byte is BYTEE1. ")
-
-    (IF (ILEQ BYTE1 127)
-        THEN 1
-      ELSEIF (ILEQ BYTE1 223)
-        THEN 2
-      ELSEIF (ILEQ BYTE1 239)
-        THEN 3
-      ELSE 4])
-
-(NUTF8-CODE-BYTES
-  [LAMBDA (CODE)                                             (* ; "Edited  3-Feb-2024 14:42 by rmk")
-                                                             (* ; "Edited  8-Jan-2024 10:57 by rmk")
-                                                             (* ; "Edited 28-Jun-2022 00:02 by rmk")
-                                                            (* ; "Edited 10-Aug-2020 12:35 by rmk:")
-
-    (* ;; "Returns the number of bytes needed to encode in UTF8 a number headed by BYTE. ")
-
-    (IF (ILESSP CODE 128)
-        THEN 1
-      ELSEIF (ILESSP CODE 2048)
-        THEN                                                 (* ; "x800")
-             2
-      ELSEIF (ILESSP CODE 65536)
-        THEN                                                 (* ; "x10000")
-             3
-      ELSEIF (ILESSP CODE 2097152)
-        THEN                                                 (* ; "x200000")
-             4
-      ELSE (ERROR "INVALID UTF-8 CODE"])
-
-(NUTF8-STRING-BYTES
-  [LAMBDA (STRING RAW)                                       (* ; "Edited  2-Sep-2025 10:40 by rmk")
-                                                             (* ; "Edited 24-Apr-2025 15:37 by rmk")
-                                                             (* ; "Edited  3-Feb-2024 21:32 by rmk")
-                                                            (* ; "Edited 10-Aug-2020 09:06 by rmk:")
-
-    (* ;; "Returns the number of bytes it would take to represent STRING in UTF8, assuming it is an MCCS string unless RAWFLG. ")
-
-    (for I C from 1 while (SETQ C (NTHCHARCODE STRING I)) sum (NUTF8-CODE-BYTES (CL:IF RAW
-                                                                                    C
-                                                                                    (MTOUCODE C))])
-
-(N-MCHARS
-  [LAMBDA (UTF8STRING)                                       (* ; "Edited  9-Sep-2025 08:35 by rmk")
-
-    (* ;; "Returns the number of MCCS characters coded in UTF8STRING")
-
-    (for I B from 1 while (SETQ B (NTHCHARCODE UTF8STRING I)) by (NUTF8-BYTE1-BYTES B) count T])
-)
-(DECLARE%: EVAL@COMPILE DONTCOPY 
-(DECLARE%: EVAL@COMPILE 
-
-(PUTPROPS UNICODE.TRANSLATE MACRO [OPENLAMBDA (CODE TRANSLATION-TABLE DONTFAKE RETURNALL)
-
-                                   (* ;; "If RETURNALL and there are alternatives in the RANG, the list is returned. Othewise just the first one if the fake flag allows ")
-
-                                    (LET [(RANGE (OR (GETHASH CODE TRANSLATION-TABLE)
-                                                     (UNICODE.UNMAPPED CODE TRANSLATION-TABLE 
-                                                            DONTFAKE]
-                                         (CL:WHEN RANGE
-                                             (if (AND RETURNALL (CDR RANGE))
-                                                 then RANGE
-                                               else (SETQ RANGE (CAR RANGE))
-                                                    (CL:IF DONTFAKE
-                                                        (TRUECODEP RANGE TRANSLATION-TABLE)
-                                                        RANGE)))])
-
-(PUTPROPS \UTF8.GETBASEBYTE MACRO ((BASE OFFSET ERROR?)      (* ; 
-                        "Fetches the OFFSET'th byte from BASE, checking for UTF-8 validity if ERROR?")
-                                   (IF ERROR?
-                                       THEN (LET ((BYTE (\GETBASEBYTE BASE OFFSET)))
-                                                 (CL:WHEN (ILESSP BYTE 128)
-                                                        (ERROR "INVALID UTF8 BYTE" BYTE))
-                                                 BYTE)
-                                     ELSE (\GETBASEBYTE BASE OFFSET))))
-
-(PUTPROPS UNICODE.SMALLP MACRO [OPENLAMBDA (UNICODE)         (* ; 
-                                                "Cananonicalizes a large UNICODE for EQ hash-testing")
-                                 (OR (SMALLP UNICODE)
-                                     (CAR (OR (MEMBER UNICODE *LARGEUNICODES*)
-                                              (PUSH *LARGEUNICODES* UNICODE])
-)
-)
-
-
-
-(* ;; "")
-
-
-
-
-(* ;; 
-"These come after the translation tables have been loaded, since the Unix file names needed to read the mapping files depend on the UTF8 string coercions.  Those functions are defined as EVQ in UFS, cannot be used until the tables exist.  This assumes that previous files have only 7-bit MCCS characters in their names."
-)
-
-(DEFINEQ
-
-(MTOUCODE
-  [LAMBDA (MCODE)                                            (* ; "Edited  4-Sep-2025 15:10 by rmk")
-                                                             (* ; "Edited 24-Apr-2025 10:19 by rmk")
-                                                            (* ; "Edited  9-Aug-2020 09:04 by rmk:")
-    (UNICODE.TRANSLATE MCODE *MCCSTOUNICODE*])
-
-(UTOMCODE
-  [LAMBDA (UNICODE)                                          (* ; "Edited 23-Oct-2025 08:23 by rmk")
-                                                             (* ; "Edited 24-Apr-2025 10:17 by rmk")
-                                                             (* ; "Edited 16-Jan-2025 23:46 by rmk")
-                                                            (* ; "Edited  9-Aug-2020 09:04 by rmk:")
-    (UNICODE.TRANSLATE (UNICODE.SMALLP UNICODE)
-           *UNICODETOMCCS*])
-
-(MTOUCODE?
-  [LAMBDA (MCODE)                                            (* ; "Edited  4-Sep-2025 15:09 by rmk")
-                                                             (* ; "Edited 24-Apr-2025 10:18 by rmk")
-                                                             (* ; "Edited 20-Jan-2025 20:38 by rmk")
-                                                             (* ; "Edited 18-Jan-2025 11:44 by rmk")
-                                                             (* ; "Edited 15-Jan-2025 19:51 by rmk")
-                                                             (* ; "Edited 14-Jan-2025 13:14 by rmk")
-                                                            (* ; "Edited  9-Aug-2020 09:04 by rmk:")
-
-    (* ;; "Returns the Unix range-code(s) corresponding to MCODE if there are true mapppings, otherwise NIL.  Alternative codes are returned in a list, the code itself is returned for a singleton.")
-
-    (UNICODE.TRANSLATE MCODE *MCCSTOUNICODE* T T])
-
-(UTOMCODE?
-  [LAMBDA (UNICODE)                                          (* ; "Edited 23-Oct-2025 08:24 by rmk")
-                                                             (* ; "Edited 24-Apr-2025 10:18 by rmk")
-                                                             (* ; "Edited 19-Jan-2025 21:14 by rmk")
-                                                             (* ; "Edited 18-Jan-2025 11:46 by rmk")
-                                                             (* ; "Edited 15-Jan-2025 19:51 by rmk")
-                                                             (* ; "Edited 14-Jan-2025 13:14 by rmk")
-                                                            (* ; "Edited  9-Aug-2020 09:04 by rmk:")
-
-    (* ;; "Returns the MCCS range-code(s) corresponding to UNICODE if there are true mapppings, otherwise NIL.  ")
-
-    (* ;; 
-    " NOTE:  Alternative codes are returned in a list, the code itself is returned for a singleton.")
-
-    (* ;; "Canonicalize unicodes outside of the 16-bit plane")
-
-    (UNICODE.TRANSLATE (UNICODE.SMALLP UNICODE)
-           *UNICODETOMCCS* T T])
-
-(MTOUSTRING
-  [LAMBDA (MSTRING DESTRUCTIVE)                              (* ; "Edited  2-Sep-2025 12:19 by rmk")
-                                                             (* ; "Edited 29-Apr-2025 12:01 by rmk")
-
-    (* ;; "Converts MCCS codes in MSTRING to Unicodes.")
-
-    (for I MCODE (USTRING _ (CL:IF DESTRUCTIVE
-                                MSTRING
-                                (CONCAT MSTRING))) from 1 while (SETQ MCODE (NTHCHARCODE MSTRING I))
-       do (RPLCHARCODE USTRING I (MTOUCODE MCODE)) finally (RETURN USTRING])
-
-(UTOMSTRING
-  [LAMBDA (USTRING DESTRUCTIVE)                              (* ; "Edited  2-Sep-2025 12:18 by rmk")
-                                                             (* ; "Edited 29-Apr-2025 12:00 by rmk")
-
-    (* ;; "Converts Unicodes to MCCS codes in USTRING.")
-
-    (for I UCODE (MSTRING _ (CL:IF DESTRUCTIVE
-                                USTRING
-                                (CONCAT USTRING))) from 1 while (SETQ UCODE (NTHCHARCODE USTRING I))
-       do (RPLCHARCODE MSTRING I (UTOMCODE UCODE)) finally (RETURN MSTRING])
-
-(MTOUTF8STRING
-  [LAMBDA (MSTRING)                                          (* ; "Edited 31-Jan-2026 19:15 by rmk")
-                                                             (* ; "Edited  9-Sep-2025 07:51 by rmk")
-                                                             (* ; "Edited  4-Sep-2025 15:13 by rmk")
-                                                             (* ; "Edited  2-Sep-2025 11:12 by rmk")
-                                                             (* ; "Edited 24-Apr-2025 15:37 by rmk")
-                                                             (* ; "Edited  3-Feb-2024 14:55 by rmk")
-                                                            (* ; "Edited 10-Aug-2020 21:42 by rmk:")
-
-    (* ;; 
-    "Produces a string that contains the UTF8 bytes that represent the characters in MSTRING.  ")
-
-    (* ;; "The resulting string will not be directly interpretable inside Medley.")
-
-    (if (if (STRINGP MSTRING)
-            then [OR (ffetch (STRINGP FATSTRINGP) of MSTRING)
-                     (thereis C instring MSTRING suchthat (OR (IGEQ C 128)
-                                                              (NEQ C (MTOUCODE C]
-          elseif (LITATOM MSTRING)
-            then [OR (ffetch (LITATOM FATPNAMEP) of MSTRING)
-                     (thereis C inatom MSTRING suchthat (OR (IGEQ C 128)
-                                                            (NEQ C (MTOUCODE C]
-          else T)
-        then (LET [(USTR (ALLOCSTRING (NUTF8-STRING-BYTES MSTRING]
-                  (for I UCODE MCODE (SINDEX _ 0) from 1 while (SETQ MCODE (NTHCHARCODE MSTRING I))
-                     do (SETQ UCODE (MTOUCODE MCODE))
-                        (if (ILESSP UCODE 128)
-                            then (RPLCHARCODE USTR (ADD SINDEX 1)
-                                        UCODE)
-                          elseif (ILESSP UCODE 2048)
-                            then                             (* ; "x800")
-                                 (RPLCHARCODE USTR (ADD SINDEX 1)
-                                        (LOGOR (LLSH 3 6)
-                                               (LRSH UCODE 6)))
-                                 (RPLCHARCODE USTR (ADD SINDEX 1)
-                                        (LOGOR (LLSH 2 6)
-                                               (LOADBYTE UCODE 0 6)))
-                          elseif (ILESSP UCODE 65536)
-                            then                             (* ; "x10000")
-                                 (RPLCHARCODE USTR (ADD SINDEX 1)
-                                        (LOGOR (LLSH 7 5)
-                                               (LRSH UCODE 12)))
-                                 (RPLCHARCODE USTR (ADD SINDEX 1)
-                                        (LOGOR (LLSH 2 6)
-                                               (LOADBYTE UCODE 6 6)))
-                                 (RPLCHARCODE USTR (ADD SINDEX 1)
-                                        (LOGOR (LLSH 2 6)
-                                               (LOADBYTE UCODE 0 6)))
-                          elseif (ILESSP UCODE 2097152)
-                            then                             (* ; "x200000")
-                                 (RPLCHARCODE USTR (ADD SINDEX 1)
-                                        (LOGOR (LLSH 15 4)
-                                               (LRSH UCODE 18)))
-                                 (RPLCHARCODE USTR (ADD SINDEX 1)
-                                        (LOGOR (LLSH 2 6)
-                                               (LOADBYTE UCODE 12 6)))
-                                 (RPLCHARCODE USTR (ADD SINDEX 1)
-                                        (LOGOR (LLSH 2 6)
-                                               (LOADBYTE UCODE 6 6)))
-                                 (RPLCHARCODE USTR (ADD SINDEX 1)
-                                        (LOGOR (LLSH 2 6)
-                                               (LOADBYTE UCODE 0 6)))
-                          else (SHOULDNT)))
-                  USTR)
-      else MSTRING])
-
-(UTF8TOMSTRING
-  [LAMBDA (UTF8STRING)                                       (* ; "Edited 22-Oct-2025 22:00 by rmk")
-                                                             (* ; "Edited 16-Oct-2025 14:39 by rmk")
-                                                             (* ; "Edited  9-Sep-2025 08:59 by rmk")
-    (CL:UNLESS (OR (STRINGP UTF8STRING)
-                   (LITATOM UTF8STRING))
-        (SETQ UTF8STRING (MKSTRING UTF8STRING)))
-    (CL:WHEN (ffetch (STRINGP FATSTRINGP) of UTF8STRING)
-           (\ILLEGAL.ARG UTF8STRING))
-    (LET* ((NMCHARS (N-MCHARS UTF8STRING))
-           (MSTRING (ALLOCSTRING NMCHARS)))
-          [for M NBYTES BYTE1 (BASE _ (ffetch (STRINGP BASE) of UTF8STRING)) from 1 to NMCHARS
-             as OFFSET from (fetch (STRINGP OFFST) of MSTRING) by NBYTES
-             do (SETQ BYTE1 (\GETBASEBYTE BASE OFFSET))
-                (SETQ NBYTES (NUTF8-BYTE1-BYTES BYTE1))
-                (RPLCHARCODE MSTRING M (UTOMCODE (\UTF8.FETCHCODE NBYTES BASE OFFSET]
-          MSTRING])
-)
-(DEFINEQ
-
-(XTOUCODE
-  [LAMBDA (XCODE)                                            (* ; "Edited  4-Sep-2025 15:09 by rmk")
-                                                             (* ; "Edited 24-May-2025 23:16 by rmk")
-                                                             (* ; "Edited 24-Apr-2025 15:27 by rmk")
-                                                            (* ; "Edited  9-Aug-2020 09:04 by rmk:")
-    (UNICODE.TRANSLATE (XTOMCODE XCODE)
-           *MCCSTOUNICODE*])
-
-(UTOXCODE
-  [LAMBDA (UNICODE)                                          (* ; "Edited 24-May-2025 23:17 by rmk")
-                                                             (* ; "Edited 24-Apr-2025 15:28 by rmk")
-                                                             (* ; "Edited 16-Jan-2025 23:46 by rmk")
-                                                            (* ; "Edited  9-Aug-2020 09:04 by rmk:")
-    (MTOXCODE (UNICODE.TRANSLATE UNICODE *UNICODETOMCCS*])
-
-(XTOUCODE?
-  [LAMBDA (XCCSCODE)                                         (* ; "Edited 24-May-2025 23:18 by rmk")
-                                                             (* ; "Edited 24-Apr-2025 15:27 by rmk")
-                                                             (* ; "Edited 20-Jan-2025 20:38 by rmk")
-                                                             (* ; "Edited 18-Jan-2025 11:44 by rmk")
-                                                             (* ; "Edited 15-Jan-2025 19:51 by rmk")
-                                                             (* ; "Edited 14-Jan-2025 13:14 by rmk")
-                                                            (* ; "Edited  9-Aug-2020 09:04 by rmk:")
-
-    (* ;; "Returns the Unix range-code(s) corresponding to XCCSCODE if there are true mapppings, otherwise NIL.  Alternative codes are returned in a list, the code itself is returned for a singleton.")
-
-    (UNICODE.TRANSLATE (XTOMCODE XCCSCODE)
-           *MCCSTOUNICODE* T T])
-
-(UTOXCODE?
-  [LAMBDA (UNICODE)                                          (* ; "Edited 24-May-2025 23:19 by rmk")
-                                                             (* ; "Edited 24-Apr-2025 15:28 by rmk")
-                                                             (* ; "Edited 19-Jan-2025 21:14 by rmk")
-                                                             (* ; "Edited 18-Jan-2025 11:46 by rmk")
-                                                             (* ; "Edited 15-Jan-2025 19:51 by rmk")
-                                                             (* ; "Edited 14-Jan-2025 13:14 by rmk")
-                                                            (* ; "Edited  9-Aug-2020 09:04 by rmk:")
-
-    (* ;; "Returns the XCCS range-code(s) corresponding to UNICODE if there are true mapppings, otherwise NIL.  ")
-
-    (* ;; 
-    " NOTE:  Alternative codes are returned in a list, the code itself is returned for a singleton.")
-
-    (MTOXCODE (UNICODE.TRANSLATE UNICODE *UNICODETOMCCS* T T])
-
-(XTOUSTRING
-  [LAMBDA (XSTRING DESTRUCTIVE)                              (* ; "Edited  2-Sep-2025 12:00 by rmk")
-                                                             (* ; "Edited 29-Apr-2025 12:01 by rmk")
-
-    (* ;; "Converts XCCS codes in XSTRING to Unicodes.")
-
-    (for I UCODE XCODE (USTRING _ (CL:IF DESTRUCTIVE
-                                      XSTRING
-                                      (CONCAT XSTRING))) from 1 while (SETQ XCODE (NTHCHARCODE 
-                                                                                         XSTRING I))
-       do (RPLCHARCODE USTRING I (XTOUCODE XCODE)) finally (RETURN USTRING])
-
-(UTOXSTRING
-  [LAMBDA (USTRING DESTRUCTIVE)                              (* ; "Edited  2-Sep-2025 11:54 by rmk")
-                                                             (* ; "Edited 29-Apr-2025 12:00 by rmk")
-
-    (* ;; "Converts Unicodes in USTRING to XCCS codes.")
-
-    (for I XCODE UCODE (XSTRING _ (CL:IF DESTRUCTIVE
-                                      USTRING
-                                      (CONCAT USTRING))) from 1 while (SETQ UCODE (NTHCHARCODE 
-                                                                                         USTRING I))
-       unless (EQ UCODE (SETQ XCODE (UTOXCODE UCODE))) do (RPLCHARCODE XSTRING I XCODE)
-       finally (RETURN XSTRING])
-
-(XTOUTF8STRING
-  [LAMBDA (XSTRING)                                          (* ; "Edited  4-Sep-2025 18:37 by rmk")
-                                                             (* ; "Edited  2-Sep-2025 11:37 by rmk")
-                                                             (* ; "Edited 29-Apr-2025 12:53 by rmk")
-                                                             (* ; "Edited 24-Apr-2025 15:42 by rmk")
-                                                             (* ; "Edited  3-Feb-2024 14:55 by rmk")
-                                                            (* ; "Edited 10-Aug-2020 21:42 by rmk:")
-
-    (* ;; "Produces a string that contains the UTF8 bytes that represent the characters in XSTRING.  Applies the ")
-
-    (* ;; "The resulting string will not be interpretable inside Medley.")
-
-    (for I C (MSTRING _ (CONCAT XSTRING)) from 1 while (SETQ C (NTHCHARCODE XSTRING I))
-       do (RPLCHARCODE MSTRING I (XTOMCODE C)) finally (RETURN (MTOUTF8STRING MSTRING])
-)
-
-
-
-(* ;; "")
-
-
-
-
-(* ; "Write Unicode mapping files")
-
-(DEFINEQ
-
-(WRITE-UNICODE-MAPPING
-  [LAMBDA (MAPPING INCLUDECHARSETS FILE EMPTYOK)             (* ; "Edited  4-Jan-2024 22:44 by rmk")
-                                                            (* ; "Edited 16-Aug-2020 16:56 by rmk:")
-
-    (* ;; "Writes a symbol unicode mapping file.  Mapping is a list of (XCCS-code Unicode) pairs, which may contain codes in multiple character sets.")
-
-    (* ;; "If FILE is NIL, it defaults to a name XCCS- followed by the octal character sets in the mapping, in the unicode/XEROX directory.")
-
-    (* ;; "The output lines are of the form x0XXX<tab>x0UUUU<tab>#  Unicode-char")
-
-    (* ;; 
-    "If INCLUDECHARSETS=T then the mappings are split up into separate per-character set files.")
-
-    (* ;; "Otherwise, all and only mappings included in thos charsets are included in a single output file--an implicit subset.")
-
-    (IF (AND (EQ INCLUDECHARSETS T)
-             (NULL FILE))
-        THEN (IF MAPPING
-                 THEN (FOR CSI F IN XCCS-SET-NAMES WHEN (SETQ F (WRITE-UNICODE-MAPPING MAPPING
-                                                                       (CAR CSI)
-                                                                       NIL T)) COLLECT F)
-               ELSE (PRINTOUT T "THERE ARE NO MAPPINGS" T)
-                    NIL)
-      ELSE
-      (LET
-       (IMAPPING CSETINFO RANGES)
-       (CL:MULTIPLE-VALUE-SETQ (IMAPPING CSETINFO RANGES)
-              (WRITE-UNICODE-INCLUDED MAPPING INCLUDECHARSETS))
-       (IF IMAPPING
-           THEN (CL:WITH-OPEN-FILE
-                 (STREAM (WRITE-UNICODE-MAPPING-FILENAME FILE CSETINFO RANGES)
-                        :DIRECTION :OUTPUT :IF-EXISTS :NEW-VERSION :EXTERNAL-FORMAT :UTF-8-RAW)
-                 (WRITE-UNICODE-MAPPING-HEADER STREAM CSETINFO RANGES)
-                 (SORT IMAPPING T)
-                 (FOR M CSET LEFTC FIRSTRIGHTC CSI IN IMAPPING
-                    DO (SETQ LEFTC (CAR M))
-                       (SETQ FIRSTRIGHTC (CADR M))
-                       (CL:UNLESS (EQ CSET (LRSH LEFTC 8))
-                           (SETQ CSET (LRSH LEFTC 8))
-                           (SETQ CSI (ASSOC CSET CSETINFO))
-                           (PRINTOUT STREAM T "#  " .P2 (CADR CSI)
-                                  " "
-                                  (CADDR CSI)
-                                  T))
-                       (PRINTOUT STREAM "0x" (HEXSTRING LEFTC 4)
-                              %#
-                              (FOR RIGHTC IN (CDR M) DO (PRINTOUT NIL "	" "0x" (HEXSTRING RIGHTC 4)))
-                              "	#  "
-                              (SELECTC FIRSTRIGHTC
-                                  (UNDEFINEDCODE 
-                                                 (* ;; "FFFF")
-
-                                                 "UNDEFINED")
-                                  (MISSINGCODE 
-                                               (* ;; "FFFE")
-
-                                               "MISSING")
-                                  (IF (ILESSP FIRSTRIGHTC 32)
-                                      THEN                   (* ; "Control chars")
-                                           [CONCAT "^" (CHARACTER (IPLUS FIRSTRIGHTC (CHARCODE @]
-                                    ELSE (CHARACTER FIRSTRIGHTC)))
-                              T))
-                 (FULLNAME STREAM))
-         ELSEIF (NOT EMPTYOK)
-           THEN (PRINTOUT T "THERE ARE NO MAPPINGS")
-                (CL:WHEN INCLUDECHARSETS
-                    (PRINTOUT T " FOR " .PPVTL (MKLIST INCLUDECHARSETS)
-                           T))
-                NIL])
-
-(WRITE-UNICODE-INCLUDED
-  [LAMBDA (MAPPING INCLUDECHARSETS)                     (* ; "Edited  4-Aug-2020 17:47 by rmk:")
-
-    (* ;; "CSETINFO is a list of (num string name) for each included character set.")
-
-    (LET (CHARSETS CSETINFO RANGES ICSETS IMAPPING)
-
-         (* ;; "Normalize the INCLUDECHARSETS, then reduce MAPPING to the included mappings")
-
-         [SETQ ICSETS (FOR C POS KNOWN INSIDE (OR INCLUDECHARSETS (FOR CSI IN 
-                                                                                       XCCS-SET-NAMES
-                                                                             COLLECT (CAR CSI)))
-                         JOIN [SETQ KNOWN (OR (SASSOC C XCCS-SET-NAMES)
-                                                  (FIND N IN XCCS-SET-NAMES
-                                                     SUCHTHAT (EQ C (CADR N)))
-                                                  (HELP "UNKNOWN CHARACTER SET" (OCTALSTRING C]
-                               (IF (SETQ POS (STRPOS "-" (CAR KNOWN)))
-                                   THEN (FOR I FROM (CL:PARSE-INTEGER (SUBSTRING
-                                                                                   (CAR KNOWN)
-                                                                                   1
-                                                                                   (SUB1 POS))
-                                                                       :RADIX 8)
-                                               TO (CL:PARSE-INTEGER (SUBSTRING (CAR KNOWN)
-                                                                               (ADD1 POS))
-                                                             :RADIX 8)
-                                               COLLECT (LIST I (OCTALSTRING I)
-                                                                 (CADR KNOWN)))
-                                 ELSE (CONS (CONS (CL:PARSE-INTEGER (CAR KNOWN)
-                                                             :RADIX 8)
-                                                      KNOWN]
-         (SETQ IMAPPING (FOR M CSI IN MAPPING WHEN (SETQ CSI (ASSOC (LRSH (CAR M)
-                                                                                      8)
-                                                                                ICSETS))
-                           COLLECT 
-
-                                 (* ;; "The attested subset of INCLUDED")
-
-                                 (CL:UNLESS (MEMB CSI CSETINFO)
-                                        (PUSH CSETINFO CSI))
-                                 M))
-
-         (* ;; "Sort as numbers, not octal strings, then group into consecutive ranges")
-
-         (SETQ CSETINFO (SORT CSETINFO T))
-         [SETQ RANGES (FOR CTAIL C START END ON (FOR CSI IN CSETINFO
-                                                           COLLECT (CAR CSI)) WHILE CTAIL
-                         COLLECT (SETQ START (CAR CTAIL))
-                               (SETQ END START)
-                               (CONS START (WHILE [AND (CDR CTAIL)
-                                                           (EQ END (SUB1 (CADR CTAIL]
-                                              COLLECT (SETQ CTAIL (CDR CTAIL))
-                                                    (SETQ END (CAR CTAIL]
-
-         (* ;; "Split out groups of less than 3.  But if a range exhaustively covers a known subset (like JIS), replace by the name")
-
-         [SETQ RANGES (FOR R STR KNOWN LAST IN RANGES
-                         JOIN (SETQ LAST (CAR (LAST R)))
-                               (IF (EQ (CAR R)
-                                           LAST)
-                                   THEN (CONS (OCTALSTRING (CAR R)))
-                                 ELSEIF (SETQ KNOWN (SASSOC (SETQ STR (CONCAT (OCTALSTRING
-                                                                                   (CAR R))
-                                                                                 "-"
-                                                                                 (OCTALSTRING LAST)))
-                                                               XCCS-SET-NAMES))
-                                   THEN (CONS (CADR KNOWN))
-                                 ELSEIF (CDDR R)
-                                   THEN (CONS STR)
-                                 ELSE (LIST (OCTALSTRING (CAR R))
-                                                (OCTALSTRING LAST]
-         (CL:VALUES IMAPPING CSETINFO RANGES])
-
-(WRITE-UNICODE-MAPPING-HEADER
-  [LAMBDA (STREAM CSETINFO RANGES)                           (* ; "Edited  5-Jan-2024 13:24 by rmk")
-                                                            (* ; "Edited  4-Aug-2020 17:38 by rmk:")
-
-    (* ;; "Writes the standard per-file header information")
-
-    (FOR LINE IN UNICODE-MAPPING-HEADER
-       DO (PRINTOUT STREAM "#" 2)
-          (SELECTQ LINE
-              (XCCSCHARACTERSETS 
-                   (PRINTOUT STREAM "        XCCS charset")
-                   (IF (CDR CSETINFO)
-                       THEN (PRINTOUT STREAM "s:" -4)
-                            (FOR R IN RANGES DO (PRINTOUT STREAM R " "))
-                     ELSE                                    (* ; "Singleton")
-                          (PRINTOUT STREAM ": " -4 (CADAR CSETINFO)
-                                 " "
-                                 (CADDAR CSETINFO)))
-                   (TERPRI STREAM))
-              (DATE (PRINTOUT STREAM "        Date:" -13 (DATE (DATEFORMAT NO.TIME NO.LEADING.SPACES)
-                                                               )
-                           T))
-              (PRINTOUT STREAM LINE T)))
-    (TERPRI STREAM])
-
-(WRITE-UNICODE-MAPPING-FILENAME
-  [LAMBDA (FILE CSETINFO RANGES)                        (* ; "Edited  4-Aug-2020 19:34 by rmk:")
-    (PACKFILENAME 'BODY [OR FILE (CONCATLIST
-                                  (CONS 'XCCS- (IF (CDR CSETINFO)
-                                                   THEN (FOR RTAIL R ON RANGES
-                                                               JOIN (SETQ R (CAR RTAIL))
-                                                                     (SETQ R
-                                                                      (CL:IF (LISTP R)
-                                                                          (LIST (CAR R)
-                                                                                "-"
-                                                                                (CDR R))
-                                                                          (CONS R)))
-                                                                     (CL:IF (CDR RTAIL)
-                                                                            (NCONC1 R ","))
-                                                                     R)
-                                                 ELSE (LIST (CADAR CSETINFO)
-                                                                "="
-                                                                (CADDAR CSETINFO]
-           'DIRECTORY
-           (CAR UNICODEDIRECTORIES)
-           'EXTENSION
-           'TXT])
-)
-(DEFINEQ
-
-(XCCS-UTF8-AFTER-OPEN
-  [LAMBDA (STREAM ACCESS PARAMETERS)                         (* ; "Edited  3-Jan-2024 10:27 by rmk")
-                                                            (* ; "Edited 13-Aug-2020 11:54 by rmk:")
-
-    (* ;; 
-    "If added to STREAM-AFTER-OPEN-FNS, causes mapping files to be opened as UTF-8. For development")
-
-    (CL:WHEN (AND (STRPOS "XCCS-" (U-CASE (FULLNAME STREAM)))
-                  [EQ 'TXT (U-CASE (FILENAMEFIELD (FULLNAME STREAM)
-                                          'EXTENSION]
-                  (NOT (ASSOC 'EXTERNALFORMAT PARAMETERS)))
-        (STREAMPROP STREAM 'EXTERNALFORMAT :UTF-8))])
-)
-
-
-
-(* ;; "Automate dumping of a documentation prefix")
-
-(DECLARE%: EVAL@COMPILE DONTCOPY 
-(DECLARE%: EVAL@COMPILE 
-
-(RPAQ MISSINGCODE (CL:PARSE-INTEGER "FFFE" :RADIX 16))
-
-(RPAQ UNDEFINEDCODE (CL:PARSE-INTEGER "FFFF" :RADIX 16))
-
-
-(CONSTANTS (MISSINGCODE (CL:PARSE-INTEGER "FFFE" :RADIX 16))
-       (UNDEFINEDCODE (CL:PARSE-INTEGER "FFFF" :RADIX 16)))
-)
-)
-
-(RPAQQ UNICODE-MAPPING-HEADER
-       ("" "        Name:             XCCS (Version 2.0) to Unicode" "        Unicode version:  3.0"
-           XCCSCHARACTERSETS "        Table version:    0.1" "        Table format:     Format A" 
-           DATE "        Author:           Ron Kaplan <Ron.Kaplan@post.harvard.edu>" "" 
-           "This file contains mappings from the Xerox Character Code Standard (version" 
-           "2.0, 1990) into Unicode 3.0. standard codes.  That is an extension of the" 
-           "version of XCCS corresponding to the fonts in the Medley system." "" 
-           "The format of this file conforms to the format of the other Unicode-supplied" 
-           "mapping files:" "   Three white-space (tab or spaces) separated columns:" 
-           "     Column 1 is the XCCS code (as hex 0xXXXX)" 
-           "     Column 2 is the corresponding Unicode (as hex 0xXXXX)" 
-           "     Column 3 (after #) is a comment column. For convenience, it contains the" 
-           "        Unicode character itself and the Unicode character names when available." 
-           "Unicode FFFF is used for undefined XCCS codes (Column 3 = UNDEFINED" 
-           "Unicode FFFE is used for XCCS codes that have not yet been filled in." 
-           "(Column 3 = MISSING)" "" "This file is encoded in UTF-8, so that the Unicode characters"
-           "are properly displayed in Column 3 and can be edited by standard" 
-           "Unicode-enabled editors (e.g. Mac Textedit)." "" 
-           "This file can also be read by the function" 
-           "READ-UNICODE-MAPPING in the UNICODE Medley library package." "" 
-           "The entries are in XCCS order and grouped by character sets.  In front of" 
-           "the mappings, for convenience, there is a line with the octal XCCS" 
-           "character set, after #." "" 
-           "Note that a given XCCS code might map to codes in several different Unicode" 
-           "positions, since there are repetitions in the Unicode standard." "" 
-           "For more details, see the associated README.TXT file." "" 
-           "Any comments or problems, contact <ron.kaplan@post.harvard.edu>"))
-(DEFINEQ
-
-(UTF8HEXSTRING
-  [LAMBDA (CHARCODE)                                    (* ; "Edited 10-Aug-2020 08:33 by rmk:")
-
-    (* ;; "Utility to produces the UTF8 hexstring representing CODE")
-
-    (HEXSTRING (IF (ILESSP CHARCODE 128)
-                       THEN CHARCODE
-                     ELSEIF (ILESSP CHARCODE 2048)
-                       THEN                              (* ; "x800")
-                             (LOGOR (LLSH (LOGOR (LLSH 3 6)
-                                                 (LRSH CHARCODE 6))
-                                          8)
-                                    (LOGOR (LLSH 2 6)
-                                           (LOADBYTE CHARCODE 0 6)))
-                     ELSEIF (ILESSP CHARCODE 65536)
-                       THEN                              (* ; "x10000")
-                             (LOGOR (LLSH (LOGOR (LLSH 7 5)
-                                                 (LRSH CHARCODE 12))
-                                          16)
-                                    (LLSH (LOGOR (LLSH 2 6)
-                                                 (LOADBYTE CHARCODE 6 6))
-                                          8)
-                                    (LOGOR (LLSH 2 6)
-                                           (LOADBYTE CHARCODE 0 6)))
-                     ELSEIF (ILESSP CHARCODE 2097152)
-                       THEN                              (* ; "x200000")
-                             (LOGOR (LLSH (LOGOR (LLSH 15 4)
-                                                 (LRSH CHARCODE 18))
-                                          24)
-                                    (LLSH (LOGOR (LLSH 2 6)
-                                                 (LOADBYTE CHARCODE 12 6))
-                                          16)
-                                    (LLSH (LOGOR (LLSH 2 6)
-                                                 (LOADBYTE CHARCODE 6 6))
-                                          8)
-                                    (LOGOR (LLSH 2 6)
-                                           (LOADBYTE CHARCODE 0 6)))
-                     ELSE (ERROR "CHARCODE too big for UTF8" CHARCODE])
-)
-
-
-
-(* ; "debugging")
-
-(DEFINEQ
-
-(SHOWCHARS
-  [LAMBDA (FONT FROMCHAR TOCHAR ONELINE)                     (* ; "Edited  5-Oct-2025 17:41 by rmk")
-                                                             (* ; "Edited  7-Sep-2025 20:29 by rmk")
-                                                             (* ; "Edited  2-Sep-2025 10:26 by rmk")
-                                                             (* ; "Edited 24-Jul-2025 11:30 by rmk")
-                                                             (* ; "Edited  8-Jun-2025 20:05 by rmk")
-                                                             (* ; "Edited 26-Jan-2024 14:18 by mth")
-                                                            (* ; "Edited  1-Aug-2020 09:27 by rmk:")
-    [SETQ FONT (FONTCREATE (OR FONT '(CLASSIC 12]
-    (RESETLST
-        [LET ((OLDFONT (DSPFONT NIL T))
-              CHARS)
-             (CL:UNLESS (CHARCODEP FROMCHAR)
-                 (SETQ FROMCHAR (OR (CHARCODE.DECODE FROMCHAR T)
-                                    FROMCHAR)))
-             (SETQ CHARS (if (LISTP FROMCHAR)
-                           elseif (CHARCODEP FROMCHAR)
-                             then (CL:UNLESS (CHARCODEP TOCHAR)
-                                      (SETQ TOCHAR (OR (CHARCODE.DECODE TOCHAR)
-                                                       FROMCHAR)))
-                                  (for C from FROMCHAR to TOCHAR collect C)
-                           else (CHCON FROMCHAR)))
-             [RESETSAVE OLDFONT '(PROGN (DSPFONT OLDVALUE]
-             (TERPRI)
-             (for C in CHARS do (PRINTOUT T .FONT OLDFONT (CONCAT (OCTALSTRING (\CHARSET C))
-                                                                 ","
-                                                                 (OCTALSTRING (\CHAR8CODE C)))
-                                       10 .FONT FONT (CHARACTER C))
-                                (CL:UNLESS ONELINE (PRINTOUT T T])
-    (TERPRI])
-)
-(DECLARE%: DOEVAL@LOAD DONTCOPY 
-(DECLARE%: EVAL@COMPILE 
-
-(PUTPROPS HEXCHAR MACRO ((CODE)
-                         (HEXSTRING CODE)))
-
-(PUTPROPS OCTALCHAR MACRO [(CODE)
-                           (CONCAT (OCTALSTRING (\CHARSET CODE))
-                                  ","
-                                  (OCTALSTRING (LOGAND CODE 255])
-)
-)
-(DECLARE%: EVAL@COMPILE DONTCOPY 
-
-(FILESLOAD (LOADCOMP)
-       UNICODE-EXPORTS)
-)
-
-(PUTPROPS UNICODE FILETYPE :TCOMPL)
-(DECLARE%: DONTCOPY
-  (FILEMAP (NIL (3379 18917 (UTF8.OUTCHARFN 3389 . 6405) (UTF8.SLUG.OUTCHARFN 6407 . 7071) (
-UTF8.INCCODEFN 7073 . 12926) (UTF8.PEEKCCODEFN 12928 . 17935) (\UTF8.BACKCCODEFN 17937 . 18915)) (
-18918 23608 (UTF16BE.OUTCHARFN 18928 . 19947) (UTF16BE.INCCODEFN 19949 . 21074) (UTF16BE.PEEKCCODEFN 
-21076 . 22416) (\UTF16BE.BACKCCODEFN 22418 . 23606)) (23609 28332 (UTF16LE.OUTCHARFN 23619 . 24735) (
-UTF16LE.INCCODEFN 24737 . 25862) (UTF16LE.PEEKCCODEFN 25864 . 27140) (\UTF16LE.BACKCCODEFN 27142 . 
-28330)) (28333 31380 (READBOM 28343 . 30412) (WRITEBOM 30414 . 31378)) (31410 35163 (
-MAKE-UNICODE-FORMATS 31420 . 35161)) (35260 39754 (UTF8.BINCODE 35270 . 37958) (\UTF8.FETCHCODE 37960
- . 39752)) (39755 45382 (UTF8.VALIDATE 39765 . 42362) (NUTF8-BYTE1-BYTES 42364 . 43101) (
-NUTF8-CODE-BYTES 43103 . 44160) (NUTF8-STRING-BYTES 44162 . 45058) (N-MCHARS 45060 . 45380)) (47864 
-57575 (MTOUCODE 47874 . 48261) (UTOMCODE 48263 . 48789) (MTOUCODE? 48791 . 49824) (UTOMCODE? 49826 . 
-50995) (MTOUSTRING 50997 . 51582) (UTOMSTRING 51584 . 52169) (MTOUTF8STRING 52171 . 56460) (
-UTF8TOMSTRING 56462 . 57573)) (57576 63278 (XTOUCODE 57586 . 58104) (UTOXCODE 58106 . 58614) (
-XTOUCODE? 58616 . 59677) (UTOXCODE? 59679 . 60762) (XTOUSTRING 60764 . 61457) (UTOXSTRING 61459 . 
-62200) (XTOUTF8STRING 62202 . 63276)) (63341 74609 (WRITE-UNICODE-MAPPING 63351 . 67101) (
-WRITE-UNICODE-INCLUDED 67103 . 71825) (WRITE-UNICODE-MAPPING-HEADER 71827 . 73075) (
-WRITE-UNICODE-MAPPING-FILENAME 73077 . 74607)) (74610 75286 (XCCS-UTF8-AFTER-OPEN 74620 . 75284)) (
-77811 80028 (UTF8HEXSTRING 77821 . 80026)) (80055 82097 (SHOWCHARS 80065 . 82095)))))
-STOP
diff --git a/library/UNICODE-TABLES b/library/UNICODE-TABLES
index 71d05c08..cd429286 100644
--- a/library/UNICODE-TABLES
+++ b/library/UNICODE-TABLES
@@ -1,19 +1,22 @@
-(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
+(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT UTF-8)
 
-(FILECREATED "22-Oct-2025 23:28:42" {WMEDLEY}<library>UNICODE-TABLES.;4 34028  
+(FILECREATED "22-Feb-2026 10:44:33" {WMEDLEY}<library>UNICODE-TABLES.;20 44960  
 
       :EDIT-BY rmk
 
-      :CHANGES-TO (VARS UNICODE-TABLESCOMS)
+      :CHANGES-TO (FNS ALL-UNICODE-MAPPINGS GET-MCCS-UNICODE-MAPPING INVERT-UNICODE-MAPPING 
+                       MAKE-UNICODE-TRANSLATION-TABLES MERGE-UNICODE-TRANSLATION-TABLES 
+                       READ-UNICODE-MAPPING-FILENAMES)
+                  (VARS UNICODE-TABLESCOMS)
 
-      :PREVIOUS-DATE "16-Oct-2025 16:47:54" {WMEDLEY}<library>UNICODE-TABLES.;3)
+      :PREVIOUS-DATE "22-Feb-2026 09:15:20" {WMEDLEY}<library>UNICODE-TABLES.;16)
 
 
 (PRETTYCOMPRINT UNICODE-TABLESCOMS)
 
 (RPAQQ UNICODE-TABLESCOMS
        [
-        (* ;; "Read Unicode mapping tables.  A separate file before UNICODE in the loadup, because the tables must be loaded while UTF8TOMCODE and MCODETOUTF8 are still equivalenced to EVQ.  This file has to come before UNICODE in the loadup sequence.")
+        (* ;; "This is code for reading/writing the XCCS-to-UNICODE mapping tables.  It runs offline, when UNICODE-UTF8 is modified.  ")
 
         (COMS                                                (* ; "Read Unicode mapping files")
               (INITVARS (UNICODEDIRECTORIES NIL))
@@ -22,22 +25,32 @@
               (FNS READ-UNICODE-MAPPING-FILENAMES READ-UNICODE-MAPPING))
         (COMS                                                (* ; 
                                                   "Make translation tables for  UTF external formats")
-              (FNS MAKE-UNICODE-TRANSLATION-TABLES XCCSTOMCCS-MAPPING 
-                   MERGE-UNICODE-TRANSLATION-TABLES UNICODE.UNMAPPED UNICODE-EXTEND-TRANSLATION?)
+              (FNS MAKE-UNICODE-TRANSLATION-TABLES GET-MCCS-UNICODE-MAPPING INVERT-UNICODE-MAPPING 
+                   XCCSTOMCCS-MAPPING)
               (FNS ALL-UNICODE-MAPPINGS XCCSJAPANESECHARSETS)
-              (INITVARS (*MCCSTOUNICODE*)
-                     (*UNICODETOMCCS*)
-                     (*MCCS-LOADED-CHARSETS*)
-                     (*UNICODE-LOADED-CHARSETS*)
-                     (*LARGEUNICODES*))
-              [DECLARE%: DONTEVAL@LOAD DOCOPY (P (MAKE-UNICODE-TRANSLATION-TABLES 'ALL]
+              (COMS                                          (* ; "Write Unicode mapping files")
+                    (FNS WRITE-UNICODE-MAPPING WRITE-UNICODE-INCLUDED WRITE-UNICODE-MAPPING-HEADER 
+                         WRITE-UNICODE-MAPPING-FILENAME)
+                    (FNS XCCS-UTF8-AFTER-OPEN)
+                    
+                    (* ;; "Automate dumping of a documentation prefix")
+
+                    [DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (MISSINGCODE (CL:PARSE-INTEGER "FFFE"
+                                                                                    :RADIX 16))
+                                                            (UNDEFINEDCODE (CL:PARSE-INTEGER "FFFF" 
+                                                                                  :RADIX 16]
+                    (VARS UNICODE-MAPPING-HEADER))
+              (FNS UTF8HEXSTRING)
+              (COMS                                          (* ; "debugging")
+                    (FNS SHOWCHARS)
+                    (DECLARE%: DOEVAL@LOAD DONTCOPY (MACROS HEXCHAR OCTALCHAR)))
               (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (LOADCOMP)
                                                       UNICODE-EXPORTS])
 
 
 
 (* ;; 
-"Read Unicode mapping tables.  A separate file before UNICODE in the loadup, because the tables must be loaded while UTF8TOMCODE and MCODETOUTF8 are still equivalenced to EVQ.  This file has to come before UNICODE in the loadup sequence."
+"This is code for reading/writing the XCCS-to-UNICODE mapping tables.  It runs offline, when UNICODE-UTF8 is modified.  "
 )
 
 
@@ -94,7 +107,8 @@
 (DEFINEQ
 
 (READ-UNICODE-MAPPING-FILENAMES
-  [LAMBDA (FILESPEC)                                         (* ; "Edited 16-Oct-2025 16:43 by rmk")
+  [LAMBDA (FILESPEC)                                         (* ; "Edited 21-Feb-2026 18:14 by rmk")
+                                                             (* ; "Edited 16-Oct-2025 16:43 by rmk")
                                                              (* ; "Edited  4-Sep-2025 00:11 by rmk")
                                                              (* ; "Edited 27-Jan-2025 16:46 by rmk")
                                                              (* ; "Edited 21-Jan-2025 22:51 by rmk")
@@ -107,51 +121,47 @@
 
     (* ;; "FILESPEC can be a file name, character-set name, the name of a collection of character sets, an XCCS character code, or a list of those. Maps those into the names of files that contain the indicated Unicode mappings.")
 
-    (CL:REMOVE-DUPLICATES [for F X CSI inside (if (EQ FILESPEC 'ALL)
-                                                  then 
-                                                       (* ;; 
+    (for F X CSI inside (if (EQ FILESPEC 'ALL)
+                            then 
+                                 (* ;; 
           "Perhaps should figure out which files in the directories and subdirectories are relevant?")
 
-                                                       (for N in XCCS-CHARSETS
-                                                          collect (CAR N))
-                                                else FILESPEC)
-                             join 
-                                  (* ;; "Last case hopes to pick up all the tables that are grouped together in a subdirectory (e.g. if F is JIS)")
+                                 (for N in XCCS-CHARSETS collect (CAR N))
+                          else FILESPEC)
+       join 
+            (* ;; "Last case hopes to pick up all the tables that are grouped together in a subdirectory (e.g. if F is JIS)")
 
-                                  (OR (CL:WHEN (CHARCODEP F) (* ; 
+            [OR (CL:WHEN (CHARCODEP F)                       (* ; 
                                                         "An XCCS code can retrieve its character set")
-                                          (for D FN (FOCTAL _ (OCTALSTRING (LRSH F 8))) inside 
-                                                                                   UNICODEDIRECTORIES
-                                             when (SETQ FN (FILDIR (PACKFILENAME 'DIRECTORY D
-                                                                          'BODY
-                                                                          (CONCAT 'XCCS- FOCTAL
-                                                                                 '=*)
-                                                                          'EXTENSION
-                                                                          'TXT
-                                                                          'VERSION "")))
-                                             do (RETURN FN)))
-                                      (MKLIST (FINDFILE (PACKFILENAME 'BODY F 'EXTENSION 'TXT
-                                                               'VERSION "")
-                                                     T UNICODEDIRECTORIES))
-                                      (for D inside UNICODEDIRECTORIES
-                                         when [SETQ $$VAL (OR (FILDIR (PACKFILENAME 'NAME
-                                                                             (CONCAT "XCCS-*=" F)
-                                                                             'EXTENSION
-                                                                             'TXT
-                                                                             'VERSION "" 'BODY D))
-                                                              (FILDIR (PACKFILENAME 'NAME
-                                                                             (CONCAT "XCCS-" F "=*")
-                                                                             'EXTENSION
-                                                                             'TXT
-                                                                             'VERSION "" 'BODY D]
-                                         do (RETURN $$VAL))
-                                      (AND (SETQ CSI (ASSOC F XCCS-CHARSETS))
-                                           (READ-UNICODE-MAPPING-FILENAMES (CDR CSI)))
-                                      (for D inside UNICODEDIRECTORIES
-                                         when (DIRECTORYNAMEP (SETQ D (CONCAT D ">" F ">")))
-                                         join (FILDIR (CONCAT D ">*.TXT;"]
-           :TEST
-           (FUNCTION STRING.EQUAL])
+                    (for D FN (FOCTAL ← (OCTALSTRING (LRSH F 8))) inside UNICODEDIRECTORIES
+                       when (SETQ FN (DIRECTORY (PACKFILENAME 'DIRECTORY D 'BODY (CONCAT 'XCCS- 
+                                                                                        FOCTAL
+                                                                                        '=*)
+                                                       'EXTENSION
+                                                       'TXT
+                                                       'VERSION ""))) do (RETURN FN)))
+                (MKLIST (FINDFILE (PACKFILENAME 'BODY F 'EXTENSION 'TXT 'VERSION "")
+                               T UNICODEDIRECTORIES))
+                (for D inside UNICODEDIRECTORIES
+                   when [SETQ $$VAL (OR (DIRECTORY (PACKFILENAME 'NAME (CONCAT "XCCS-*=" F)
+                                                          'EXTENSION
+                                                          'TXT
+                                                          'VERSION "" 'BODY D))
+                                        (DIRECTORY (PACKFILENAME 'NAME (CONCAT "XCCS-" F "=*")
+                                                          'EXTENSION
+                                                          'TXT
+                                                          'VERSION "" 'BODY D]
+                   do (RETURN $$VAL))
+                (AND (SETQ CSI (ASSOC F XCCS-CHARSETS))
+                     (READ-UNICODE-MAPPING-FILENAMES (CDR CSI)))
+                (for D inside UNICODEDIRECTORIES when (DIRECTORYNAMEP (SETQ D
+                                                                       (CONCAT D ">" F ">")))
+                   join (DIRECTORY (CONCAT D ">*.TXT;"]
+       finally                                               (* ; 
+                                                     "CL:REMOVE-DUPLICATES doesn't exist in MAKEINIT")
+             (RETURN (for FTAIL on $$VAL unless (thereis FF in (CDR FTAIL)
+                                                   suchthat (STRING-EQUAL (CAR FTAIL)
+                                                                   FF)) collect (CAR FTAIL])
 
 (READ-UNICODE-MAPPING
   [LAMBDA (FILESPEC PRINT NOERROR)                           (* ; "Edited 16-Oct-2025 11:25 by rmk")
@@ -179,7 +189,7 @@
     (* ;; "")
 
     (RESETLST
-        (for FILE STREAM [SEPBITTABLE _ (MAKEBITTABLE (CHARCODE (TAB SPACE] in (
+        (for FILE STREAM [SEPBITTABLE ← (MAKEBITTABLE (CHARCODE (TAB SPACE] in (
                                                                        READ-UNICODE-MAPPING-FILENAMES
                                                                                 FILESPEC)
            join 
@@ -221,7 +231,8 @@
 (DEFINEQ
 
 (MAKE-UNICODE-TRANSLATION-TABLES
-  [LAMBDA (MAPPING REINSTALL)                                (* ; "Edited 11-Oct-2025 11:54 by rmk")
+  [LAMBDA (MAPPING REINSTALL)                                (* ; "Edited 21-Feb-2026 22:42 by rmk")
+                                                             (* ; "Edited 11-Oct-2025 11:54 by rmk")
                                                              (* ; "Edited  4-Sep-2025 00:30 by rmk")
                                                              (* ; "Edited 24-Apr-2025 15:47 by rmk")
                                                              (* ; "Edited 31-Jan-2025 17:46 by rmk")
@@ -232,26 +243,13 @@
                                                              (* ; "Edited  3-Feb-2024 00:24 by rmk")
                                                              (* ; "Edited 30-Jan-2024 09:54 by rmk")
                                                             (* ; "Edited 21-Aug-2021 13:12 by rmk:")
+    (SETQ MAPPING (GET-MCCS-UNICODE-MAPPING MAPPING))
 
-    (* ;; "MAPPING is the list of numeric code correspondence pairs constructed by applying READ-UNICODE-MAPPING to XCCS-to-Unicode mapping files. This applies the XCCS-to-MCCS translations, and then updates or produces two recoding arrays, one maps left-side codes into right-side codes (e.g. MCCS or ISO8859-1 to Unicode), for printing, the other maps right-side (Unicode) codes to corresponding right-side codes (e.g. MCCS).")
-                                                            (* ; "Edited 17-Aug-2020 08:46 by rmk:")
-    (CL:UNLESS [AND (LISTP MAPPING)
-                    (FOR PAIR R IN MAPPING AS I TO 10
-                       ALWAYS (AND (LISTP PAIR)
-                                   (CHARCODEP (CAR PAIR))
-                                   [FIXP (SETQ R (CAR (MKLIST (CADR PAIR]
-                                   (CHARCODEP (IABS R]
-
-        (* ;; "Seems like the argument is not already a list of mapping pairs (perhaps with a combiner), presumably a list of charsets to be read.")
-
-        (SETQ MAPPING (READ-UNICODE-MAPPING MAPPING)))
-    (SETQ MAPPING (XCCSTOMCCS-MAPPING MAPPING))
-
-    (* ;; "This updates or produces two recoding arrays, one maps left-side codes into right-side codes (e.g. XCCS or ISO8859-1 to Unicode), for printing, the other maps right-side (Unicode) codes to corresponding right-side codes (e.g. XCCS).")
+    (* ;; "This updates or produces two recoding arrays, one maps left-side codes into right-side codes (e.g. MCCS  to Unicode), for printing, the other maps right-side (Unicode) codes to corresponding right-side codes (e.g. MCCS).")
 
     (* ;; "")
 
-    (* ;; "If REINSTALL is T, the new mapping vectors replace the current maps in the *XCCSTOUNICODE* and *UNICODETOXCCS* global variables.  Otherwise we create new tables (mostly for comparison and debugging).")
+    (* ;; "If REINSTALL is T, the new mapping vectors replace the current maps in the *MCCSTOUNICODE* and *UNICODETOMCCS* global variables.  Otherwise we create new tables (mostly for comparison and debugging).")
 
     (* ;; "")
 
@@ -270,6 +268,55 @@
                (SETQ *NEXT-PRIVATE-UNICODE* FIRST-PRIVATE-UNICODE))
            (MERGE-UNICODE-TRANSLATION-TABLES NIL MAPPING])
 
+(GET-MCCS-UNICODE-MAPPING
+  [LAMBDA (MAPPING)                                          (* ; "Edited 22-Feb-2026 00:29 by rmk")
+
+    (* ;; "MAPPING is the list of numeric code correspondence pairs mapping MCCS-to-Unicode, or a specification of XCCS-to-Unicode files to be read and converted to MCCS-to-UNICODE.")
+
+    (SORT (if [AND (LISTP MAPPING)
+                   (for PAIR R in MAPPING as I to 10
+                      always (AND (LISTP PAIR)
+                                  (CHARCODEP (CAR PAIR))
+                                  [FIXP (SETQ R (CAR (MKLIST (CADR PAIR]
+                                  (CHARCODEP (IABS R]
+              then 
+                   (* ;; "The argument is already a list of MCCS-to-UNICODE mapping pairs")
+
+                   MAPPING
+            else 
+                 (* ;; "Mapping files are is read as XCCS-UNICODE, make it MCCS")
+
+                 (XCCSTOMCCS-MAPPING (READ-UNICODE-MAPPING MAPPING)))
+          T])
+
+(INVERT-UNICODE-MAPPING
+  [LAMBDA (MAPPING)                                          (* ; "Edited 22-Feb-2026 00:39 by rmk")
+
+    (* ;; "MAPPING is a list of pairs that map domain codes to range codes (presumably MCCS to UNICODE).  This produces an inverted list of pairs that map the range into the domain (Unicode to MCCS)   ")
+
+    (LET (INVERTED)
+         (SETQ INVERTED (SORT (for P D R OLDR in MAPPING eachtime (SETQ D (CAR P))
+                                                               (SETQ R (CADR P)) 
+
+                                                               (* ;; 
+                                            "We don't do combiners, but we are allowing non-SMALLP's")
+ unless (OR (LISTP D)
+            (LISTP R)) collect (LIST R D))
+                              T))
+
+         (* ;; "If MAPPING contains two pairs that map to the same U (e.g. (M1 U) and (M2 U)), we want the inverse table to collect them into a single pair (U M1 M2) instead of two pairs (U M1) (U M2), with the lowest M code first. Those pairs represent alternative inverse mappings. There are no duplicates/alternative table entries in the M-to-U direction.")
+
+         (* ;; "The SORT above means that multiple inverted pairs for the same U will be next to each other in the list.")
+
+         [for PTAIL PTAIL2 U MS on INVERTED eachtime (SETQ U (CAAR PTAIL))
+            when (SETQ MS (for old PTAIL2 P2 on PTAIL eachtime (SETQ P2 (CADR PTAIL2))
+                             while (EQ U (CAR P2)) collect (CADR P2)))
+            do (RPLACD PTAIL (CDR PTAIL2))
+               (RPLACD (CAR PTAIL)
+                      (SORT (CONS (CADR (CAR PTAIL))
+                                  MS]
+         INVERTED])
+
 (XCCSTOMCCS-MAPPING
   [LAMBDA (XTOUMAPPING)                                      (* ; "Edited 11-Oct-2025 12:57 by rmk")
 
@@ -292,152 +339,12 @@
                                                          XTOMCODES)))
              finally (push XTOUMAPPING (CHARCODE (DEL DEL)))
                    (RETURN XTOUMAPPING])
-
-(MERGE-UNICODE-TRANSLATION-TABLES
-  [LAMBDA (INVERSE MAPPING TABLE INVERSETABLE)               (* ; "Edited 11-Oct-2025 10:24 by rmk")
-                                                             (* ; "Edited 24-Apr-2025 15:28 by rmk")
-                                                             (* ; "Edited  1-Feb-2025 21:42 by rmk")
-                                                             (* ; "Edited 26-Jan-2025 12:58 by rmk")
-                                                             (* ; "Edited 22-Jan-2025 08:20 by rmk")
-                                                             (* ; "Edited 19-Jan-2025 15:58 by rmk")
-                                                             (* ; "Edited 18-Jan-2025 11:49 by rmk")
-                                                             (* ; "Edited 27-Mar-2024 12:10 by rmk")
-                                                             (* ; "Edited  3-Feb-2024 12:46 by rmk")
-                                                             (* ; "Edited 31-Jan-2024 10:06 by rmk")
-
-    (* ;; "MAPPINGS is a list of pairs that map domain codes to range codes.  TABLE and INVERSETABLE default to *MCCSTOUNICODE* *UNICODETOMCCS* respectively.   ")
-
-    (CL:UNLESS TABLE
-        [SETQ TABLE (OR *MCCSTOUNICODE* (SETQ *MCCSTOUNICODE* (HASHARRAY (LENGTH MAPPING])
-    (CL:UNLESS INVERSETABLE
-        [SETQ INVERSETABLE (OR *UNICODETOMCCS* (SETQ *UNICODETOMCCS* (HASHARRAY (LENGTH MAPPING])
-    (for M D R OLDR in MAPPING first (CL:IF INVERSE (swap TABLE INVERSETABLE))
-       eachtime (SETQ D (CAR M))
-             (SETQ R (CADR M)) 
-
-             (* ;; "We don't do combiners, but we are allowing non-SMALLP's")
- unless (OR (LISTP D)
-            (LISTP R)) do 
-                          (* ;; "The (CONS R OLDR) deals with alternatives:  (U X1) (U X2) => (U (X1 X2)), lowest code first.  Those are only possible in the U-to-X direction when the tables contain (X1 U) and (X2 U). There are no duplicates/alternative table entries in the X-to-U direction.")
-
-                          (SETQ OLDR (GETHASH D TABLE))
-                          (CL:UNLESS (MEMB R OLDR)
-                              (PUTHASH D (SORT (CONS R OLDR))
-                                     TABLE))
-                          (swap D R)
-                          (SETQ OLDR (GETHASH D INVERSETABLE))
-                          (CL:UNLESS (MEMB R OLDR)
-                              (PUTHASH D (SORT (CONS R OLDR))
-                                     INVERSETABLE)))
-    (LIST TABLE INVERSETABLE])
-
-(UNICODE.UNMAPPED
-  [LAMBDA (CODE TABLE DONTFAKE)                              (* ; "Edited 24-Apr-2025 15:48 by rmk")
-                                                             (* ; "Edited 22-Jan-2025 08:19 by rmk")
-                                                             (* ; "Edited 19-Jan-2025 22:02 by rmk")
-                                                             (* ; "Edited 18-Jan-2025 12:02 by rmk")
-                                                             (* ; "Edited  2-Feb-2024 23:52 by rmk")
-                                                             (* ; "Edited 31-Jan-2024 10:07 by rmk")
-                                                            (* ; "Edited 11-Aug-2020 20:23 by rmk:")
-
-    (* ;; "This is the slow fall-out when UNICODE.TRANSLATE determines that CODE has no fast mapping in TRANSLATION-TABLE.")
-
-    (* ;; "")
-
-    (* ;; "If we have not already installed the mapping segment for that code, we try to retrieve it from the numberic file.  If that segment mapping doesn't exist or doesn't have an entry for CODE, we fake up a mapping with a negative range in both directions. One way or the other, there will be an entry for that segment in both mapping vectors.")
-
-    (* ;; "")
-
-    (PROG ((INVERSE (EQ TABLE *UNICODETOMCCS*))
-           RANGE HASH)
-
-     (* ;; "If we already looked up CODE's character set in a file, then we have already filled in its information in the translation table.  If it didn't have a code for a particular character, then we fake it here.  Faked codes are negative, so we can detect them easily, and interpret them with IABS.")
-
-          (CL:WHEN (AND (UNICODE-EXTEND-TRANSLATION? CODE TABLE)
-                        (SETQ RANGE (GETHASH CODE TABLE)))
-
-              (* ;; "We might have gotten the segment that didn't have an entry for CODE.")
-
-              (RETURN RANGE))
-
-     (* ;; "")
-
-          (CL:UNLESS DONTFAKE
-
-              (* ;; "Our attempt at extending the known tables did not provide a mapping for CODE.  So we fake it up with the next unused private code in the code space.  ")
-
-              (* ;; "The number of possible faked mappings is determined by the number of private-use Unicodes, since the MCCS character space is pretty sparse.  The codes don't have to come from the same part of the code space, and the NEXTCODEs are saved in global variables.  The last available codes are constants.")
-
-              (CL:WHEN (IEQP *NEXT-PRIVATE-MCCSCODE* LAST-PRIVATE-MCCSCODE)
-                                                             (* ; 
-                                                           "Same number of available codes both ways")
-                  (ERROR "EXHAUSTED RANGE FOR UNMAPPED CODES"))
-              (if INVERSE
-                  then (SETQ RANGE *NEXT-PRIVATE-MCCSCODE*)
-                       (add *NEXT-PRIVATE-MCCSCODE* 1)
-                else (SETQ RANGE *NEXT-PRIVATE-UNICODE*)
-                     (add *NEXT-PRIVATE-UNICODE* 1))
-              (MERGE-UNICODE-TRANSLATION-TABLES INVERSE (CONS (LIST CODE RANGE)))
-
-              (* ;; "CONS because of LIST convention so we can eventually distinguish combiners.")
-
-              (RETURN (CONS RANGE)))])
-
-(UNICODE-EXTEND-TRANSLATION?
-  [LAMBDA (CODE TABLE)                                       (* ; "Edited 11-Oct-2025 09:49 by rmk")
-                                                             (* ; "Edited  4-Sep-2025 00:34 by rmk")
-                                                             (* ; "Edited 29-Jun-2025 16:44 by rmk")
-                                                             (* ; "Edited 24-Apr-2025 15:49 by rmk")
-                                                             (* ; "Edited 26-Jan-2025 11:26 by rmk")
-                                                             (* ; "Edited 21-Jan-2025 22:31 by rmk")
-                                                             (* ; "Edited 18-Jan-2025 12:40 by rmk")
-                                                             (* ; "Edited 13-Jan-2025 23:50 by rmk")
-                                                             (* ; "Edited 26-Aug-2024 16:49 by rmk")
-                                                             (* ; "Edited 27-Mar-2024 23:02 by rmk")
-                                                             (* ; "Edited  5-Feb-2024 13:48 by rmk")
-                                                             (* ; "Edited  3-Feb-2024 12:40 by rmk")
-
-    (* ;; "There is currently no mapping for CODE in TABLE, hopefully just because the relevant character-set mapping has not been installed. We infer from TABLE whether CODE is an MCCS or UNICODE code and look for the proper mapping table (forward or inverted) for its character set. ")
-
-    (* ;; "We record which character sets we have already expanded so we don't do them again.")
-
-    (LET ((CHARSET (\CHARSET CODE))
-          (INVERSE (EQ TABLE *UNICODETOMCCS*))
-          MAPPING FILE)
-
-         (* ;; "If we already looked for CHARSET in the file and found anything, it has already been merged. Otherwise, it would just fail again")
-
-         (CL:UNLESS (MEMB CHARSET (CL:IF INVERSE
-                                      *UNICODE-LOADED-CHARSETS*
-                                      *MCCS-LOADED-CHARSETS*))
-
-             (* ;; "Don't try this charset again.")
-
-             (CL:IF INVERSE
-                 (push *UNICODE-LOADED-CHARSETS* CHARSET)
-                 (push *MCCS-LOADED-CHARSETS* CHARSET))
-             (SETQ FILE (FINDFILE (CL:IF INVERSE
-                                      'UNICODE-TO-MCCS-MAPPINGS
-                                      'MCCS-TO-UNICODE-MAPPINGS)
-                               T UNICODEDIRECTORIES))
-
-             (* ;; "The mappings files are indexed by CHARSET.")
-
-             (CL:WHEN [AND FILE (SETQ MAPPING (CL:WITH-OPEN-FILE (STREAM FILE :INPUT)
-                                                     (CL:WHEN (FILEPOS (CONCAT "[" CHARSET " ")
-                                                                     STREAM NIL NIL NIL T)
-                                                            (READ STREAM]
-
-                 (* ;; 
-                 "Merge MAPPING into both tables, respecting the direction indicated by TABLE. ")
-
-                 (MERGE-UNICODE-TRANSLATION-TABLES INVERSE MAPPING)
-                 T))])
 )
 (DEFINEQ
 
 (ALL-UNICODE-MAPPINGS
-  [LAMBDA (INVERTED FILE)                                    (* ; "Edited 24-Apr-2025 15:51 by rmk")
+  [LAMBDA (INVERTED FILE)                                    (* ; "Edited 22-Feb-2026 10:42 by rmk")
+                                                             (* ; "Edited 24-Apr-2025 15:51 by rmk")
                                                              (* ; "Edited 31-Jan-2025 17:46 by rmk")
                                                              (* ; "Edited 26-Jan-2025 13:40 by rmk")
                                                              (* ; "Edited 22-Jan-2025 14:07 by rmk")
@@ -453,38 +360,32 @@
     (* ;; "The first index level segments all the domain codes according to their character sets.  The segments are sorted by character set, the pairs within each segment are sorted by their domain codes.  ")
 
     (* ;; 
-    "E.g. if INVERTED=NIL and given a XCCS code, the lookup for the corresponding Unicode(s) is")
+    "E.g. if INVERTED=NIL and given a MCCS code, the lookup for the corresponding Unicode(s) is")
 
-    (* ;; "    (CADR (ASSOC MCCSCODE (\CHARSET MCCSCODE) INDEX)))).")
+    (* ;; "   (CAR (GETMULTI  INDEX  (\CHARSET MCCSCODE)  MCCSCODE).")
 
     (* ;; "If FILE is not NIL, the result is written to a file. If FILE is T, the file is either MCCS-TO-UNICODE-MAPPINGS.TXT or UNICODE-TO-MCCS-MAPPINGS.TXT, depending on INVERTED.")
 
-    (LET (INDEX)
-         (for PAIR DOMAIN RANGE CHARSET in (READ-UNICODE-MAPPING 'ALL) eachtime (SETQ DOMAIN
-                                                                                 (CAR PAIR))
-                                                                             (SETQ RANGE (CADR PAIR))
-                                                                             
-                                                                             (* ;; 
-                                                      "(LISTP RANGE) is a combiner, ignored for now.")
- unless (LISTP RANGE) do (CL:WHEN INVERTED (SWAP DOMAIN RANGE)) 
+    (LET [INDEX (MAPPING (GET-MCCS-UNICODE-MAPPING 'ALL]
+         (for PAIR in (CL:IF INVERTED
+                          (INVERT-UNICODE-MAPPING MAPPING)
+                          MAPPING) unless (LISTP (CADR PAIR)) do 
+                                                                 (* ;; 
+                                                 "(LISTP (CADR PAIR) is a combiner, ignored for now.")
 
-                         (* ;; 
+                                                     (* ;; 
        "One segment for each high-byte character set.   This aligns with UNICODE-EXTEND.TRANSLATION?")
 
-                         [SETQ CHARSET (OR (ASSOC (\CHARSET DOMAIN)
-                                                  INDEX)
-                                           (CAR (push INDEX (CONS (\CHARSET DOMAIN] 
+                                 (* ;; "For alternative mappings (in the U-to-M direction) we end up with  (D R1 R2 ...).  (CAR (GETMULTI)) is the first (and almost always) the only one.")
 
-                         (* ;; "For alternative mappings (in the U-to-M direction) we end up with  (D R1 R2 ...).  (CADR is the first (and almost always) the only one.")
-
-                         (pushnew [CDR (OR (ASSOC DOMAIN (CDR CHARSET))
-                                           (CAR (push (CDR CHARSET)
-                                                      (CONS DOMAIN]
-                                RANGE))
+                                                                 (PUSHMULTI-NEW INDEX
+                                                                        (\CHARSET (CAR PAIR))
+                                                                        (CAR PAIR)
+                                                                        (CADR PAIR)))
 
          (* ;; "Push the charset mappings down an extra CONS, so that a subsequent READ will get them all after a FILEPOS search for super-paren [")
 
-         [for CS in INDEX do (for M in (CDR CS) when (CDDR M) do 
+         (for CS in INDEX do (for M in (CDR CS) when (CDDR M) do 
                                                                  (* ;; 
                                                                 "Sort the range alternatives, if any")
 
@@ -494,7 +395,7 @@
                              (* ;; "Sort by domain codes and push down a level")
 
                              (change (CDR CS)
-                                    (CONS (SORT DATUM T]
+                                    (SORT DATUM T)))
          (SETQ INDEX (SORT INDEX T))                         (* ; "Sort character sets")
          (if FILE
              then (SETQ FILE (PACKFILENAME 'BODY (if (NEQ FILE T)
@@ -544,18 +445,347 @@
                                 (FULLNAME STREAM))))])
 )
 
-(RPAQ? *MCCSTOUNICODE* )
 
-(RPAQ? *UNICODETOMCCS* )
 
-(RPAQ? *MCCS-LOADED-CHARSETS* )
+(* ; "Write Unicode mapping files")
 
-(RPAQ? *UNICODE-LOADED-CHARSETS* )
+(DEFINEQ
 
-(RPAQ? *LARGEUNICODES* )
-(DECLARE%: DONTEVAL@LOAD DOCOPY 
+(WRITE-UNICODE-MAPPING
+  [LAMBDA (MAPPING INCLUDECHARSETS FILE EMPTYOK)             (* ; "Edited  4-Jan-2024 22:44 by rmk")
+                                                            (* ; "Edited 16-Aug-2020 16:56 by rmk:")
 
-(MAKE-UNICODE-TRANSLATION-TABLES 'ALL)
+    (* ;; "Writes a symbol unicode mapping file.  Mapping is a list of (XCCS-code Unicode) pairs, which may contain codes in multiple character sets.")
+
+    (* ;; "If FILE is NIL, it defaults to a name XCCS- followed by the octal character sets in the mapping, in the unicode/XEROX directory.")
+
+    (* ;; "The output lines are of the form x0XXX<tab>x0UUUU<tab>#  Unicode-char")
+
+    (* ;; 
+    "If INCLUDECHARSETS=T then the mappings are split up into separate per-character set files.")
+
+    (* ;; "Otherwise, all and only mappings included in thos charsets are included in a single output file--an implicit subset.")
+
+    (IF (AND (EQ INCLUDECHARSETS T)
+             (NULL FILE))
+        THEN (IF MAPPING
+                 THEN (FOR CSI F IN XCCS-SET-NAMES WHEN (SETQ F (WRITE-UNICODE-MAPPING MAPPING
+                                                                       (CAR CSI)
+                                                                       NIL T)) COLLECT F)
+               ELSE (PRINTOUT T "THERE ARE NO MAPPINGS" T)
+                    NIL)
+      ELSE
+      (LET
+       (IMAPPING CSETINFO RANGES)
+       (CL:MULTIPLE-VALUE-SETQ (IMAPPING CSETINFO RANGES)
+              (WRITE-UNICODE-INCLUDED MAPPING INCLUDECHARSETS))
+       (IF IMAPPING
+           THEN (CL:WITH-OPEN-FILE
+                 (STREAM (WRITE-UNICODE-MAPPING-FILENAME FILE CSETINFO RANGES)
+                        :DIRECTION :OUTPUT :IF-EXISTS :NEW-VERSION :EXTERNAL-FORMAT :UTF-8-RAW)
+                 (WRITE-UNICODE-MAPPING-HEADER STREAM CSETINFO RANGES)
+                 (SORT IMAPPING T)
+                 (FOR M CSET LEFTC FIRSTRIGHTC CSI IN IMAPPING
+                    DO (SETQ LEFTC (CAR M))
+                       (SETQ FIRSTRIGHTC (CADR M))
+                       (CL:UNLESS (EQ CSET (LRSH LEFTC 8))
+                           (SETQ CSET (LRSH LEFTC 8))
+                           (SETQ CSI (ASSOC CSET CSETINFO))
+                           (PRINTOUT STREAM T "#  " .P2 (CADR CSI)
+                                  " "
+                                  (CADDR CSI)
+                                  T))
+                       (PRINTOUT STREAM "0x" (HEXSTRING LEFTC 4)
+                              %#
+                              (FOR RIGHTC IN (CDR M) DO (PRINTOUT NIL "	" "0x" (HEXSTRING RIGHTC 4)))
+                              "	#  "
+                              (SELECTC FIRSTRIGHTC
+                                  (UNDEFINEDCODE 
+                                                 (* ;; "FFFF")
+
+                                                 "UNDEFINED")
+                                  (MISSINGCODE 
+                                               (* ;; "FFFE")
+
+                                               "MISSING")
+                                  (IF (ILESSP FIRSTRIGHTC 32)
+                                      THEN                   (* ; "Control chars")
+                                           [CONCAT "↑" (CHARACTER (IPLUS FIRSTRIGHTC (CHARCODE @]
+                                    ELSE (CHARACTER FIRSTRIGHTC)))
+                              T))
+                 (FULLNAME STREAM))
+         ELSEIF (NOT EMPTYOK)
+           THEN (PRINTOUT T "THERE ARE NO MAPPINGS")
+                (CL:WHEN INCLUDECHARSETS
+                    (PRINTOUT T " FOR " .PPVTL (MKLIST INCLUDECHARSETS)
+                           T))
+                NIL])
+
+(WRITE-UNICODE-INCLUDED
+  [LAMBDA (MAPPING INCLUDECHARSETS)                         (* ; "Edited  4-Aug-2020 17:47 by rmk:")
+
+    (* ;; "CSETINFO is a list of (num string name) for each included character set.")
+
+    (LET (CHARSETS CSETINFO RANGES ICSETS IMAPPING)
+
+         (* ;; "Normalize the INCLUDECHARSETS, then reduce MAPPING to the included mappings")
+
+         [SETQ ICSETS (FOR C POS KNOWN INSIDE (OR INCLUDECHARSETS (FOR CSI IN XCCS-SET-NAMES
+                                                                     COLLECT (CAR CSI)))
+                         JOIN [SETQ KNOWN (OR (SASSOC C XCCS-SET-NAMES)
+                                              (FIND N IN XCCS-SET-NAMES
+                                                 SUCHTHAT (EQ C (CADR N)))
+                                              (HELP "UNKNOWN CHARACTER SET" (OCTALSTRING C]
+                              (IF (SETQ POS (STRPOS "-" (CAR KNOWN)))
+                                  THEN (FOR I FROM (CL:PARSE-INTEGER (SUBSTRING (CAR KNOWN)
+                                                                            1
+                                                                            (SUB1 POS))
+                                                          :RADIX 8)
+                                          TO (CL:PARSE-INTEGER (SUBSTRING (CAR KNOWN)
+                                                                      (ADD1 POS))
+                                                    :RADIX 8) COLLECT (LIST I (OCTALSTRING I)
+                                                                            (CADR KNOWN)))
+                                ELSE (CONS (CONS (CL:PARSE-INTEGER (CAR KNOWN)
+                                                        :RADIX 8)
+                                                 KNOWN]
+         (SETQ IMAPPING (FOR M CSI IN MAPPING WHEN (SETQ CSI (ASSOC (LRSH (CAR M)
+                                                                          8)
+                                                                    ICSETS))
+                           COLLECT 
+
+                                 (* ;; "The attested subset of INCLUDED")
+
+                                 (CL:UNLESS (MEMB CSI CSETINFO)
+                                        (PUSH CSETINFO CSI))
+                                 M))
+
+         (* ;; "Sort as numbers, not octal strings, then group into consecutive ranges")
+
+         (SETQ CSETINFO (SORT CSETINFO T))
+         [SETQ RANGES (FOR CTAIL C START END ON (FOR CSI IN CSETINFO COLLECT (CAR CSI)) WHILE CTAIL
+                         COLLECT (SETQ START (CAR CTAIL))
+                               (SETQ END START)
+                               (CONS START (WHILE [AND (CDR CTAIL)
+                                                       (EQ END (SUB1 (CADR CTAIL]
+                                              COLLECT (SETQ CTAIL (CDR CTAIL))
+                                                    (SETQ END (CAR CTAIL]
+
+         (* ;; "Split out groups of less than 3.  But if a range exhaustively covers a known subset (like JIS), replace by the name")
+
+         [SETQ RANGES (FOR R STR KNOWN LAST IN RANGES
+                         JOIN (SETQ LAST (CAR (LAST R)))
+                              (IF (EQ (CAR R)
+                                      LAST)
+                                  THEN (CONS (OCTALSTRING (CAR R)))
+                                ELSEIF (SETQ KNOWN (SASSOC (SETQ STR (CONCAT (OCTALSTRING
+                                                                              (CAR R))
+                                                                            "-"
+                                                                            (OCTALSTRING LAST)))
+                                                          XCCS-SET-NAMES))
+                                  THEN (CONS (CADR KNOWN))
+                                ELSEIF (CDDR R)
+                                  THEN (CONS STR)
+                                ELSE (LIST (OCTALSTRING (CAR R))
+                                           (OCTALSTRING LAST]
+         (CL:VALUES IMAPPING CSETINFO RANGES])
+
+(WRITE-UNICODE-MAPPING-HEADER
+  [LAMBDA (STREAM CSETINFO RANGES)                           (* ; "Edited  5-Jan-2024 13:24 by rmk")
+                                                            (* ; "Edited  4-Aug-2020 17:38 by rmk:")
+
+    (* ;; "Writes the standard per-file header information")
+
+    (FOR LINE IN UNICODE-MAPPING-HEADER
+       DO (PRINTOUT STREAM "#" 2)
+          (SELECTQ LINE
+              (XCCSCHARACTERSETS 
+                   (PRINTOUT STREAM "        XCCS charset")
+                   (IF (CDR CSETINFO)
+                       THEN (PRINTOUT STREAM "s:" -4)
+                            (FOR R IN RANGES DO (PRINTOUT STREAM R " "))
+                     ELSE                                    (* ; "Singleton")
+                          (PRINTOUT STREAM ": " -4 (CADAR CSETINFO)
+                                 " "
+                                 (CADDAR CSETINFO)))
+                   (TERPRI STREAM))
+              (DATE (PRINTOUT STREAM "        Date:" -13 (DATE (DATEFORMAT NO.TIME NO.LEADING.SPACES)
+                                                               )
+                           T))
+              (PRINTOUT STREAM LINE T)))
+    (TERPRI STREAM])
+
+(WRITE-UNICODE-MAPPING-FILENAME
+  [LAMBDA (FILE CSETINFO RANGES)                            (* ; "Edited  4-Aug-2020 19:34 by rmk:")
+    (PACKFILENAME 'BODY [OR FILE (CONCATLIST
+                                  (CONS 'XCCS- (IF (CDR CSETINFO)
+                                                   THEN (FOR RTAIL R ON RANGES
+                                                           JOIN (SETQ R (CAR RTAIL))
+                                                                (SETQ R (CL:IF (LISTP R)
+                                                                            (LIST (CAR R)
+                                                                                  "-"
+                                                                                  (CDR R))
+                                                                            (CONS R)))
+                                                                (CL:IF (CDR RTAIL)
+                                                                       (NCONC1 R ","))
+                                                                R)
+                                                 ELSE (LIST (CADAR CSETINFO)
+                                                            "="
+                                                            (CADDAR CSETINFO]
+           'DIRECTORY
+           (CAR UNICODEDIRECTORIES)
+           'EXTENSION
+           'TXT])
+)
+(DEFINEQ
+
+(XCCS-UTF8-AFTER-OPEN
+  [LAMBDA (STREAM ACCESS PARAMETERS)                         (* ; "Edited  3-Jan-2024 10:27 by rmk")
+                                                            (* ; "Edited 13-Aug-2020 11:54 by rmk:")
+
+    (* ;; 
+    "If added to STREAM-AFTER-OPEN-FNS, causes mapping files to be opened as UTF-8. For development")
+
+    (CL:WHEN (AND (STRPOS "XCCS-" (U-CASE (FULLNAME STREAM)))
+                  [EQ 'TXT (U-CASE (FILENAMEFIELD (FULLNAME STREAM)
+                                          'EXTENSION]
+                  (NOT (ASSOC 'EXTERNALFORMAT PARAMETERS)))
+        (STREAMPROP STREAM 'EXTERNALFORMAT :UTF-8))])
+)
+
+
+
+(* ;; "Automate dumping of a documentation prefix")
+
+(DECLARE%: EVAL@COMPILE DONTCOPY 
+(DECLARE%: EVAL@COMPILE 
+
+(RPAQ MISSINGCODE (CL:PARSE-INTEGER "FFFE" :RADIX 16))
+
+(RPAQ UNDEFINEDCODE (CL:PARSE-INTEGER "FFFF" :RADIX 16))
+
+
+(CONSTANTS (MISSINGCODE (CL:PARSE-INTEGER "FFFE" :RADIX 16))
+       (UNDEFINEDCODE (CL:PARSE-INTEGER "FFFF" :RADIX 16)))
+)
+)
+
+(RPAQQ UNICODE-MAPPING-HEADER
+       ("" "        Name:             XCCS (Version 2.0) to Unicode" "        Unicode version:  3.0"
+           XCCSCHARACTERSETS "        Table version:    0.1" "        Table format:     Format A" 
+           DATE "        Author:           Ron Kaplan <Ron.Kaplan@post.harvard.edu>" "" 
+           "This file contains mappings from the Xerox Character Code Standard (version" 
+           "2.0, 1990) into Unicode 3.0. standard codes.  That is an extension of the" 
+           "version of XCCS corresponding to the fonts in the Medley system." "" 
+           "The format of this file conforms to the format of the other Unicode-supplied" 
+           "mapping files:" "   Three white-space (tab or spaces) separated columns:" 
+           "     Column 1 is the XCCS code (as hex 0xXXXX)" 
+           "     Column 2 is the corresponding Unicode (as hex 0xXXXX)" 
+           "     Column 3 (after #) is a comment column. For convenience, it contains the" 
+           "        Unicode character itself and the Unicode character names when available." 
+           "Unicode FFFF is used for undefined XCCS codes (Column 3 = UNDEFINED" 
+           "Unicode FFFE is used for XCCS codes that have not yet been filled in." 
+           "(Column 3 = MISSING)" "" "This file is encoded in UTF-8, so that the Unicode characters"
+           "are properly displayed in Column 3 and can be edited by standard" 
+           "Unicode-enabled editors (e.g. Mac Textedit)." "" 
+           "This file can also be read by the function" 
+           "READ-UNICODE-MAPPING in the UNICODE Medley library package." "" 
+           "The entries are in XCCS order and grouped by character sets.  In front of" 
+           "the mappings, for convenience, there is a line with the octal XCCS" 
+           "character set, after #." "" 
+           "Note that a given XCCS code might map to codes in several different Unicode" 
+           "positions, since there are repetitions in the Unicode standard." "" 
+           "For more details, see the associated README.TXT file." "" 
+           "Any comments or problems, contact <ron.kaplan@post.harvard.edu>"))
+(DEFINEQ
+
+(UTF8HEXSTRING
+  [LAMBDA (CHARCODE)                                        (* ; "Edited 10-Aug-2020 08:33 by rmk:")
+
+    (* ;; "Utility to produces the UTF8 hexstring representing CODE")
+
+    (HEXSTRING (IF (ILESSP CHARCODE 128)
+                   THEN CHARCODE
+                 ELSEIF (ILESSP CHARCODE 2048)
+                   THEN                                      (* ; "x800")
+                        (LOGOR (LLSH (LOGOR (LLSH 3 6)
+                                            (LRSH CHARCODE 6))
+                                     8)
+                               (LOGOR (LLSH 2 6)
+                                      (LOADBYTE CHARCODE 0 6)))
+                 ELSEIF (ILESSP CHARCODE 65536)
+                   THEN                                      (* ; "x10000")
+                        (LOGOR (LLSH (LOGOR (LLSH 7 5)
+                                            (LRSH CHARCODE 12))
+                                     16)
+                               (LLSH (LOGOR (LLSH 2 6)
+                                            (LOADBYTE CHARCODE 6 6))
+                                     8)
+                               (LOGOR (LLSH 2 6)
+                                      (LOADBYTE CHARCODE 0 6)))
+                 ELSEIF (ILESSP CHARCODE 2097152)
+                   THEN                                      (* ; "x200000")
+                        (LOGOR (LLSH (LOGOR (LLSH 15 4)
+                                            (LRSH CHARCODE 18))
+                                     24)
+                               (LLSH (LOGOR (LLSH 2 6)
+                                            (LOADBYTE CHARCODE 12 6))
+                                     16)
+                               (LLSH (LOGOR (LLSH 2 6)
+                                            (LOADBYTE CHARCODE 6 6))
+                                     8)
+                               (LOGOR (LLSH 2 6)
+                                      (LOADBYTE CHARCODE 0 6)))
+                 ELSE (ERROR "CHARCODE too big for UTF8" CHARCODE])
+)
+
+
+
+(* ; "debugging")
+
+(DEFINEQ
+
+(SHOWCHARS
+  [LAMBDA (FONT FROMCHAR TOCHAR ONELINE)                     (* ; "Edited  5-Oct-2025 17:41 by rmk")
+                                                             (* ; "Edited  7-Sep-2025 20:29 by rmk")
+                                                             (* ; "Edited  2-Sep-2025 10:26 by rmk")
+                                                             (* ; "Edited 24-Jul-2025 11:30 by rmk")
+                                                             (* ; "Edited  8-Jun-2025 20:05 by rmk")
+                                                             (* ; "Edited 26-Jan-2024 14:18 by mth")
+                                                            (* ; "Edited  1-Aug-2020 09:27 by rmk:")
+    [SETQ FONT (FONTCREATE (OR FONT '(CLASSIC 12]
+    (RESETLST
+        [LET ((OLDFONT (DSPFONT NIL T))
+              CHARS)
+             (CL:UNLESS (CHARCODEP FROMCHAR)
+                 (SETQ FROMCHAR (OR (CHARCODE.DECODE FROMCHAR T)
+                                    FROMCHAR)))
+             (SETQ CHARS (if (LISTP FROMCHAR)
+                           elseif (CHARCODEP FROMCHAR)
+                             then (CL:UNLESS (CHARCODEP TOCHAR)
+                                      (SETQ TOCHAR (OR (CHARCODE.DECODE TOCHAR)
+                                                       FROMCHAR)))
+                                  (for C from FROMCHAR to TOCHAR collect C)
+                           else (CHCON FROMCHAR)))
+             [RESETSAVE OLDFONT '(PROGN (DSPFONT OLDVALUE]
+             (TERPRI)
+             (for C in CHARS do (PRINTOUT T .FONT OLDFONT (CONCAT (OCTALSTRING (\CHARSET C))
+                                                                 ","
+                                                                 (OCTALSTRING (\CHAR8CODE C)))
+                                       10 .FONT FONT (CHARACTER C))
+                                (CL:UNLESS ONELINE (PRINTOUT T T])
+    (TERPRI])
+)
+(DECLARE%: DOEVAL@LOAD DONTCOPY 
+(DECLARE%: EVAL@COMPILE 
+
+(PUTPROPS HEXCHAR MACRO ((CODE)
+                         (HEXSTRING CODE)))
+
+(PUTPROPS OCTALCHAR MACRO [(CODE)
+                           (CONCAT (OCTALSTRING (\CHARSET CODE))
+                                  ","
+                                  (OCTALSTRING (LOGAND CODE 255])
+)
 )
 (DECLARE%: EVAL@COMPILE DONTCOPY 
 
@@ -563,9 +793,12 @@
        UNICODE-EXPORTS)
 )
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (3341 12542 (READ-UNICODE-MAPPING-FILENAMES 3351 . 8301) (READ-UNICODE-MAPPING 8303 . 
-12540)) (12609 26839 (MAKE-UNICODE-TRANSLATION-TABLES 12619 . 16379) (XCCSTOMCCS-MAPPING 16381 . 17598
-) (MERGE-UNICODE-TRANSLATION-TABLES 17600 . 20253) (UNICODE.UNMAPPED 20255 . 23579) (
-UNICODE-EXTEND-TRANSLATION? 23581 . 26837)) (26840 33676 (ALL-UNICODE-MAPPINGS 26850 . 32339) (
-XCCSJAPANESECHARSETS 32341 . 33674)))))
+  (FILEMAP (NIL (4107 12829 (READ-UNICODE-MAPPING-FILENAMES 4117 . 8586) (READ-UNICODE-MAPPING 8588 . 
+12827)) (12896 19704 (MAKE-UNICODE-TRANSLATION-TABLES 12906 . 15666) (GET-MCCS-UNICODE-MAPPING 15668
+ . 16688) (INVERT-UNICODE-MAPPING 16690 . 18483) (XCCSTOMCCS-MAPPING 18485 . 19702)) (19705 26328 (
+ALL-UNICODE-MAPPINGS 19715 . 24991) (XCCSJAPANESECHARSETS 24993 . 26326)) (26373 37135 (
+WRITE-UNICODE-MAPPING 26383 . 30127) (WRITE-UNICODE-INCLUDED 30129 . 34441) (
+WRITE-UNICODE-MAPPING-HEADER 34443 . 35691) (WRITE-UNICODE-MAPPING-FILENAME 35693 . 37133)) (37136 
+37812 (XCCS-UTF8-AFTER-OPEN 37146 . 37810)) (40337 42426 (UTF8HEXSTRING 40347 . 42424)) (42453 44495 (
+SHOWCHARS 42463 . 44493)))))
 STOP
diff --git a/library/UNICODE-TABLES.LCOM b/library/UNICODE-TABLES.LCOM
index d339e038..88ca0dcb 100644
Binary files a/library/UNICODE-TABLES.LCOM and b/library/UNICODE-TABLES.LCOM differ
diff --git a/library/UNICODE.LCOM b/library/UNICODE.LCOM
deleted file mode 100644
index dead9c1d..00000000
Binary files a/library/UNICODE.LCOM and /dev/null differ
diff --git a/library/sketch/SKETCH b/library/sketch/SKETCH
index 9feb5bf9..2935c983 100644
--- a/library/sketch/SKETCH
+++ b/library/sketch/SKETCH
@@ -1,13 +1,10 @@
-(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
+(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT UTF-8)
 
-(FILECREATED "24-Dec-2025 14:48:39" {WMEDLEY}<library>SKETCH>SKETCH.;16 491600 
+(FILECREATED "19-Feb-2026 22:27:48" {WMEDLEY}<library>sketch>SKETCH.;17 509947 
 
       :EDIT-BY rmk
 
-      :CHANGES-TO (VARS SKETCHCOMS)
-                  (FNS SK.INCLUDE.FILE SK.GET.IMAGEOBJ.FROM.FILE SKETCH.PUT SKETCH.FLUSH.EXISTING)
-
-      :PREVIOUS-DATE "30-Nov-2025 10:10:57" {WMEDLEY}<library>SKETCH>SKETCH.;11)
+      :PREVIOUS-DATE "24-Dec-2025 14:48:39" {WMEDLEY}<library>sketch>SKETCH.;16)
 
 
 (PRETTYCOMPRINT SKETCHCOMS)
@@ -285,7 +282,7 @@
                                (T ""))
                             
                          " then type 'RETURN'.
-To abort loading the new version of Sketch, type '^'."])
+To abort loading the new version of Sketch, type '↑'."])
 )
 )
 (DECLARE%: FIRST DOCOPY DONTEVAL@LOAD 
@@ -300,18 +297,17 @@ To abort loading the new version of Sketch, type '^'."])
 (DEFINEQ
 
 (SKETCH.FROM.A.FILE
-  [LAMBDA NIL                                                (* rrb "24-Jun-86 11:40")
-          
-          (* reads a file name from the user and calls sketch on it.)
-
+  [LAMBDA NIL                                                (* rrb "24-Jun-86 11:40")
+                                                             (* reads a file name from the user and 
+                                                             calls sketch on it.)
     (PROG ((NAME (PopUpWindowAndGetAtom "Sketch file name: ")))
           (RETURN (AND NAME (SKETCH NAME])
 
 (SK.PUT.ON.FILE
   [LAMBDA (SKETCHW)                                          (* ; "Edited  6-Apr-87 18:18 by rrb")
                                                              (* saves a sketch on a Tedit file.)
-          
-          (* also changes the name of the sketch to be the same as the name of the file.)
+
+         (* also changes the name of the sketch to be the same as the name of the file.)
 
     (PROG ((SKETCH (INSURE.SKETCH (SKETCH.FROM.VIEWER SKETCHW)))
            NOWNAME NEWNAME TEXTSTREAM)
@@ -321,10 +317,8 @@ To abort loading the new version of Sketch, type '^'."])
               (RETURN NIL))
           (SETQ NEWNAME (SKETCH.PUT NEWNAME SKETCH SKETCHW))
           [COND
-             ((AND NEWNAME (NEQ NOWNAME NEWNAME))
-          
-          (* change the name of the sketch to be the same as the file name.)
-
+             ((AND NEWNAME (NEQ NOWNAME NEWNAME))            (* change the name of the sketch to be 
+                                                             the same as the file name.)
               (replace (SKETCH SKETCHNAME) of SKETCH with NEWNAME)
                                                              (* change the titles of the viewers 
                                                              onto this sketch.)
@@ -461,15 +455,14 @@ To abort loading the new version of Sketch, type '^'."])
                        (RETURN (IMAGEOBJPROP IMAGEOBJ 'OBJECTDATUM])
 
 (SK.GET.FROM.FILE
-  [LAMBDA (SKETCHW)                                          (* rrb " 1-Oct-86 18:24")
-          
-          (* retrieves a sketch from a file clobbering any existing sketch.)
-
+  [LAMBDA (SKETCHW)                                          (* rrb " 1-Oct-86 18:24")
+                                                             (* retrieves a sketch from a file 
+                                                             clobbering any existing sketch.)
     (COND
        ((SK.CONFIRM.DESTRUCTION SKETCHW "Press LEFT to delete current elements before GET.")
-          
-          (* put the delete on the history list so that it can be undone.
-          This leaves the gotten file there as well but seems better than nothing.)
+
+         (* put the delete on the history list so that it can be undone.
+         This leaves the gotten file there as well but seems better than nothing.)
 
         (SK.DELETE.ELEMENT2 (fetch (SKETCH SKETCHELTS) of (INSURE.SKETCH SKETCHW))
                SKETCHW)
@@ -479,21 +472,19 @@ To abort loading the new version of Sketch, type '^'."])
        (T (STATUSPRINT SKETCHW "GET aborted.  The INCLUDE subcommand to GET doesn't delete."])
 
 (SKETCH.GET
-  [LAMBDA (FILENAME VIEWER)                                  (* rrb "29-Jan-86 11:21")
+  [LAMBDA (FILENAME VIEWER)                                  (* rrb "29-Jan-86 11:21")
                                                              (* reads a sketch from a file.)
     (fetch (SKETCHIMAGEOBJ SKIO.SKETCH) of (SK.GET.IMAGEOBJ.FROM.FILE FILENAME VIEWER])
 )
 (DEFINEQ
 
 (SKETCH
-  [LAMBDA (SKETCH WINDOW)                                    (* rrb "17-Sep-86 10:21")
+  [LAMBDA (SKETCH WINDOW)                                    (* rrb "17-Sep-86 10:21")
                                                              (* opens a sketch window onto the 
                                                              sketch SKETCH)
     (COND
-       [(AND SKETCH (LITATOM SKETCH))
-          
-          (* assume its a filename Get the region and scale from the file.)
-
+       [(AND SKETCH (LITATOM SKETCH))                        (* assume its a filename Get the 
+                                                             region and scale from the file.)
         (PROG ((SKIMAGEOBJ (SK.GET.IMAGEOBJ.FROM.FILE SKETCH))
                SCREENREG READSKETCH)
               (SETQ SCREENREG (SK.SCALE.REGION (fetch (SKETCHIMAGEOBJ SKIO.REGION) of SKIMAGEOBJ)
@@ -517,14 +508,145 @@ To abort loading the new version of Sketch, type '^'."])
                  NIL NIL T T])
 
 (SKETCHW.CREATE
-(LAMBDA (SKETCH SKETCHREGION SCREENREGION TITLE INITIALSCALE BRINGUPMENU INITIALGRID) (* ; "Edited 25-Apr-88 15:18 by drc:") (* ;;; "creates a sketch window and returns it.") (PROG (W SCALE SKPROC SKETCHSTRUCTURE) (SETQ SKETCHSTRUCTURE (SK.CHECK.SKETCH.VERSION (COND ((NULL SKETCH) (SKETCH.CREATE NIL)) ((LITATOM SKETCH) (* ; "treat it like a file name") (SKETCH.GET SKETCH)) ((type? SKETCH SKETCH) SKETCH) ((type? IMAGEOBJ SKETCH) (* ; "pull things out of the image object.") (SETQ SKPROC (IMAGEOBJPROP SKETCH (QUOTE OBJECTDATUM))) (OR (REGIONP SKETCHREGION) (SETQ SKETCHREGION (fetch (SKETCHIMAGEOBJ SKIO.REGION) of SKPROC))) (OR (NUMBERP INITIALSCALE) (SETQ INITIALSCALE (fetch (SKETCHIMAGEOBJ SKIO.SCALE) of SKPROC))) (OR (NUMBERP INITIALGRID) (SETQ INITIALGRID (fetch (SKETCHIMAGEOBJ SKIO.GRID) of SKPROC))) (fetch (SKETCHIMAGEOBJ SKIO.SKETCH) of SKPROC)) ((AND (LITATOM (CAR SKETCH)) (for ELT in (CDR SKETCH) always (GLOBALELEMENTP ELT))) (* ; "old form, probably written out by notecards, update to new form.") (PROG (X) (SETQ X (SKIO.UPDATE.FROM.OLD.FORM SKETCH)) (* ; "smash sketch so this won't have to happen every time.") (RPLACA SKETCH (CAR X)) (RPLACD SKETCH (CDR X)) (RETURN X))) (T (\ILLEGAL.ARG SKETCH))))) (SETQ W (COND ((WINDOWP SCREENREGION) (AND TITLE (WINDOWPROP SCREENREGION (QUOTE TITLE) TITLE)) SCREENREGION) (T (CREATEW (COND ((REGIONP SCREENREGION)) (T (CREATEREGION LASTMOUSEX LASTMOUSEY 20 20))) (OR TITLE (SK.WINDOW.TITLE SKETCHSTRUCTURE)) NIL T)))) (SK.SET.UP.MENUS W (NOT (OPENWP SCREENREGION)) BRINGUPMENU) (COND ((OR (REGIONP SCREENREGION) (WINDOWP SCREENREGION)) (* ; "user gave a region, don't interact") NIL) (T (* ; "let prompting for reshape show room for both menu and window.") (SHAPEW W))) (* ;; "set the right margin so that text will never run into it.  This can be removed when character positions are kept in points so \DSPPRINTCHAR doesn't have to look at the right margin.") (DSPRIGHTMARGIN 64000 W) (WINDOWPROP W (QUOTE SKETCH) SKETCHSTRUCTURE) (WINDOWPROP W (QUOTE SCALE) (SETQ SCALE (COND ((NUMBERP INITIALSCALE)) ((REGIONP SKETCHREGION) (* ; "determine the scale and offsets so that the given region of the sketch fits into the given window.") (FQUOTIENT (fetch (REGION HEIGHT) of SKETCHREGION) (fetch (REGION HEIGHT) of (DSPCLIPPINGREGION NIL W)))) ((NULL SKETCHREGION) INITIAL.SCALE) (T (\ILLEGAL.ARG SKETCHREGION))))) (* ; "check to make sure a context exists on the sketch because before July 1985 it didn't exist.") (WINDOWPROP W (QUOTE SKETCHCONTEXT) (OR (GETSKETCHPROP SKETCHSTRUCTURE (QUOTE SKETCHCONTEXT)) (PUTSKETCHPROP SKETCHSTRUCTURE (QUOTE SKETCHCONTEXT) (CREATE.DEFAULT.SKETCH.CONTEXT)))) (COND ((REGIONP SKETCHREGION) (* ; "if given a region, translate to it.") (WXOFFSET (IMINUS (FIX (QUOTIENT (fetch (REGION LEFT) of SKETCHREGION) SCALE))) W) (WYOFFSET (IMINUS (FIX (QUOTIENT (fetch (REGION BOTTOM) of SKETCHREGION) SCALE))) W))) (SK.UPDATE.REGION.VIEWED W) (* ; "calculate the sketch region being viewed before mapping the sketch into it.") (MAP.SKETCHSPEC.INTO.VIEWER SKETCHSTRUCTURE W) (SK.CREATE.HOTSPOT.CACHE W) (WINDOWPROP W (QUOTE GRIDFACTOR) (COND ((NUMBERP INITIALGRID) (LEASTPOWEROF2GT INITIALGRID)) (T (SK.DEFAULT.GRIDFACTOR W)))) (WINDOWPROP W (QUOTE USEGRID) (COND (INITIALGRID T))) (WINDOWPROP W (QUOTE BUTTONEVENTFN) (FUNCTION WB.BUTTON.HANDLER)) (WINDOWPROP W (QUOTE COPYBUTTONEVENTFN) (FUNCTION SK.COPY.BUTTONEVENTFN)) (WINDOWPROP W (QUOTE COPYINSERTFN) (FUNCTION SK.COPY.INSERTFN)) (WINDOWPROP W (QUOTE RIGHTBUTTONFN) (FUNCTION WB.BUTTON.HANDLER)) (WINDOWPROP W (QUOTE CURSOROUTFN) (FUNCTION SKETCHW.OUTFN)) (WINDOWPROP W (QUOTE REPAINTFN) (FUNCTION SKETCHW.REPAINTFN)) (WINDOWADDPROP W (QUOTE RESHAPEFN) (FUNCTION SKETCHW.RESHAPEFN)) (WINDOWADDPROP W (QUOTE SHRINKFN) (FUNCTION SK.RETURN.TTY)) (WINDOWPROP W (QUOTE ICONFN) (FUNCTION SK.SHRINK.ICONCREATE)) (WINDOWADDPROP W (QUOTE EXPANDFN) (FUNCTION SK.TAKE.TTY)) (WINDOWPROP W (QUOTE SCROLLFN) (FUNCTION SKETCHW.SCROLLFN)) (WINDOWPROP W (QUOTE HARDCOPYFN) (FUNCTION SKETCHW.HARDCOPYFN)) (* ; "I'm not sure why this ever gets called but it did once so to be sure, turn it off.") (WINDOWPROP W (QUOTE PAGEFULLFN) (FUNCTION NILL)) (WINDOWPROP W (QUOTE PROCESS) (SETQ SKPROC (ADD.PROCESS (LIST (FUNCTION WB.EDITOR) (KWOTE W)) (QUOTE RESTARTABLE) T (QUOTE TTYENTRYFN) (QUOTE SK.TTYENTRYFN) (QUOTE TTYEXITFN) (QUOTE SK.TTYEXITFN)))) (WINDOWPROP W (QUOTE SCROLLEXTENTUSE) T) (WINDOWADDPROP W (QUOTE CLOSEFN) (FUNCTION SKETCHW.CLOSEFN) T) (OPENW W) (ADD.SKETCH.VIEWER SKETCHSTRUCTURE W) (SKETCHW.REPAINTFN W) (RETURN W)))
-)
+  [LAMBDA (SKETCH SKETCHREGION SCREENREGION TITLE INITIALSCALE BRINGUPMENU INITIALGRID)
+                                                             (* ; "Edited 25-Apr-88 15:18 by drc:")
+
+(* ;;; "creates a sketch window and returns it.")
+
+    (PROG (W SCALE SKPROC SKETCHSTRUCTURE)
+          [SETQ SKETCHSTRUCTURE (SK.CHECK.SKETCH.VERSION (COND
+                                                            ((NULL SKETCH)
+                                                             (SKETCH.CREATE NIL))
+                                                            ((LITATOM SKETCH)
+                                                             (* ; "treat it like a file name")
+                                                             (SKETCH.GET SKETCH))
+                                                            ((type? SKETCH SKETCH)
+                                                             SKETCH)
+                                                            ((type? IMAGEOBJ SKETCH)
+                                                             (* ; 
+                                                             "pull things out of the image object.")
+                                                             (SETQ SKPROC (IMAGEOBJPROP SKETCH
+                                                                                 'OBJECTDATUM))
+                                                             (OR (REGIONP SKETCHREGION)
+                                                                 (SETQ SKETCHREGION
+                                                                  (fetch (SKETCHIMAGEOBJ SKIO.REGION)
+                                                                     of SKPROC)))
+                                                             (OR (NUMBERP INITIALSCALE)
+                                                                 (SETQ INITIALSCALE
+                                                                  (fetch (SKETCHIMAGEOBJ SKIO.SCALE)
+                                                                     of SKPROC)))
+                                                             (OR (NUMBERP INITIALGRID)
+                                                                 (SETQ INITIALGRID
+                                                                  (fetch (SKETCHIMAGEOBJ SKIO.GRID)
+                                                                     of SKPROC)))
+                                                             (fetch (SKETCHIMAGEOBJ SKIO.SKETCH)
+                                                                of SKPROC))
+                                                            ((AND (LITATOM (CAR SKETCH))
+                                                                  (for ELT in (CDR SKETCH)
+                                                                     always (GLOBALELEMENTP ELT)))
+                                                             (* ; 
+                                   "old form, probably written out by notecards, update to new form.")
+                                                             (PROG (X)
+                                                                   (SETQ X (SKIO.UPDATE.FROM.OLD.FORM
+                                                                            SKETCH))
+                                                             (* ; 
+                                              "smash sketch so this won't have to happen every time.")
+                                                                   (RPLACA SKETCH (CAR X))
+                                                                   (RPLACD SKETCH (CDR X))
+                                                                   (RETURN X)))
+                                                            (T (\ILLEGAL.ARG SKETCH]
+          [SETQ W (COND
+                     ((WINDOWP SCREENREGION)
+                      (AND TITLE (WINDOWPROP SCREENREGION 'TITLE TITLE))
+                      SCREENREGION)
+                     (T (CREATEW (COND
+                                    ((REGIONP SCREENREGION))
+                                    (T (CREATEREGION LASTMOUSEX LASTMOUSEY 20 20)))
+                               (OR TITLE (SK.WINDOW.TITLE SKETCHSTRUCTURE))
+                               NIL T]
+          (SK.SET.UP.MENUS W (NOT (OPENWP SCREENREGION))
+                 BRINGUPMENU)
+          (COND
+             ((OR (REGIONP SCREENREGION)
+                  (WINDOWP SCREENREGION))                    (* ; 
+                                                             "user gave a region, don't interact")
+              NIL)
+             (T                                              (* ; 
+                                      "let prompting for reshape show room for both menu and window.")
+                (SHAPEW W)))
+
+     (* ;; "set the right margin so that text will never run into it.  This can be removed when character positions are kept in points so \DSPPRINTCHAR doesn't have to look at the right margin.")
+
+          (DSPRIGHTMARGIN 64000 W)
+          (WINDOWPROP W 'SKETCH SKETCHSTRUCTURE)
+          [WINDOWPROP W 'SCALE (SETQ SCALE (COND
+                                              ((NUMBERP INITIALSCALE))
+                                              [(REGIONP SKETCHREGION)
+                                                             (* ; 
+ "determine the scale and offsets so that the given region of the sketch fits into the given window.")
+                                               (FQUOTIENT (fetch (REGION HEIGHT) of SKETCHREGION)
+                                                      (fetch (REGION HEIGHT) of (DSPCLIPPINGREGION
+                                                                                 NIL W]
+                                              ((NULL SKETCHREGION)
+                                               INITIAL.SCALE)
+                                              (T (\ILLEGAL.ARG SKETCHREGION]
+                                                             (* ; 
+        "check to make sure a context exists on the sketch because before July 1985 it didn't exist.")
+          [WINDOWPROP W 'SKETCHCONTEXT (OR (GETSKETCHPROP SKETCHSTRUCTURE 'SKETCHCONTEXT)
+                                           (PUTSKETCHPROP SKETCHSTRUCTURE 'SKETCHCONTEXT (
+                                                                        CREATE.DEFAULT.SKETCH.CONTEXT
+                                                                                          ]
+          (COND
+             ((REGIONP SKETCHREGION)                         (* ; 
+                                                             "if given a region, translate to it.")
+              (WXOFFSET (IMINUS (FIX (QUOTIENT (fetch (REGION LEFT) of SKETCHREGION)
+                                            SCALE)))
+                     W)
+              (WYOFFSET (IMINUS (FIX (QUOTIENT (fetch (REGION BOTTOM) of SKETCHREGION)
+                                            SCALE)))
+                     W)))
+          (SK.UPDATE.REGION.VIEWED W)                        (* ; 
+                        "calculate the sketch region being viewed before mapping the sketch into it.")
+          (MAP.SKETCHSPEC.INTO.VIEWER SKETCHSTRUCTURE W)
+          (SK.CREATE.HOTSPOT.CACHE W)
+          [WINDOWPROP W 'GRIDFACTOR (COND
+                                       ((NUMBERP INITIALGRID)
+                                        (LEASTPOWEROF2GT INITIALGRID))
+                                       (T (SK.DEFAULT.GRIDFACTOR W]
+          (WINDOWPROP W 'USEGRID (COND
+                                    (INITIALGRID T)))
+          (WINDOWPROP W 'BUTTONEVENTFN (FUNCTION WB.BUTTON.HANDLER))
+          (WINDOWPROP W 'COPYBUTTONEVENTFN (FUNCTION SK.COPY.BUTTONEVENTFN))
+          (WINDOWPROP W 'COPYINSERTFN (FUNCTION SK.COPY.INSERTFN))
+          (WINDOWPROP W 'RIGHTBUTTONFN (FUNCTION WB.BUTTON.HANDLER))
+          (WINDOWPROP W 'CURSOROUTFN (FUNCTION SKETCHW.OUTFN))
+          (WINDOWPROP W 'REPAINTFN (FUNCTION SKETCHW.REPAINTFN))
+          (WINDOWADDPROP W 'RESHAPEFN (FUNCTION SKETCHW.RESHAPEFN))
+          (WINDOWADDPROP W 'SHRINKFN (FUNCTION SK.RETURN.TTY))
+          (WINDOWPROP W 'ICONFN (FUNCTION SK.SHRINK.ICONCREATE))
+          (WINDOWADDPROP W 'EXPANDFN (FUNCTION SK.TAKE.TTY))
+          (WINDOWPROP W 'SCROLLFN (FUNCTION SKETCHW.SCROLLFN))
+          (WINDOWPROP W 'HARDCOPYFN (FUNCTION SKETCHW.HARDCOPYFN))
+                                                             (* ; 
+                 "I'm not sure why this ever gets called but it did once so to be sure, turn it off.")
+          (WINDOWPROP W 'PAGEFULLFN (FUNCTION NILL))
+          [WINDOWPROP W 'PROCESS (SETQ SKPROC (ADD.PROCESS (LIST (FUNCTION WB.EDITOR)
+                                                                 (KWOTE W))
+                                                     'RESTARTABLE T 'TTYENTRYFN 'SK.TTYENTRYFN
+                                                     'TTYEXITFN
+                                                     'SK.TTYEXITFN]
+          (WINDOWPROP W 'SCROLLEXTENTUSE T)
+          (WINDOWADDPROP W 'CLOSEFN (FUNCTION SKETCHW.CLOSEFN)
+                 T)
+          (OPENW W)
+          (ADD.SKETCH.VIEWER SKETCHSTRUCTURE W)
+          (SKETCHW.REPAINTFN W)
+          (RETURN W])
 
 (SKETCH.RESET
-  [LAMBDA (SKETCH)                                           (* rrb "11-Dec-85 11:24")
-          
-          (* resets a sketch structure and all of the viewers onto it.)
-
+  [LAMBDA (SKETCH)                                           (* rrb "11-Dec-85 11:24")
+                                                             (* resets a sketch structure and all 
+                                                             of the viewers onto it.)
     (PROG ((SKSTRUC (INSURE.SKETCH SKETCH)))                 (* delete all sketch elements)
           (replace (SKETCH SKETCHTCELL) of SKSTRUC with (CONS))
           (for VIEWER in (ALL.SKETCH.VIEWERS SKSTRUC) do (SKED.CLEAR.SELECTION VIEWER)
@@ -541,19 +663,18 @@ To abort loading the new version of Sketch, type '^'."])
                                                          (WINDOWPROP VIEWER 'SKETCHCHANGED NIL])
 
 (SKETCHW.FIG.CHANGED
-  [LAMBDA (W)                                                (* rrb "29-Nov-84 17:59")
-          
-          (* W is a sketch window that is being reshaped.
-          Mark this fact in case it came out of a document.)
+  [LAMBDA (W)                                                (* rrb "29-Nov-84 17:59")
+
+         (* W is a sketch window that is being reshaped.
+         Mark this fact in case it came out of a document.)
 
     (OR (WINDOWPROP W 'SKETCHCHANGED)
         (WINDOWPROP W 'SKETCHCHANGED 'OLD])
 
 (SK.WINDOW.TITLE
-  [LAMBDA (SKETCH)                                           (* rrb " 7-May-85 14:00")
-          
-          (* returns the window title of a window onto a sketch.)
-
+  [LAMBDA (SKETCH)                                           (* rrb " 7-May-85 14:00")
+                                                             (* returns the window title of a 
+                                                             window onto a sketch.)
     (COND
        ((fetch (SKETCH SKETCHNAME) of SKETCH)
         (CONCAT "Viewer onto " (fetch (SKETCH SKETCHNAME) of SKETCH)))
@@ -561,23 +682,22 @@ To abort loading the new version of Sketch, type '^'."])
 
 (EDITSLIDE
   [LAMBDA (SKETCH LANDSCAPE)                                 (* ; "Edited 20-Feb-87 10:44 by rrb")
-          
-          (* creates a sketch in a window the size of a screen.)
-
+                                                             (* creates a sketch in a window the 
+                                                             size of a screen.)
     (SKETCHW.CREATE SKETCH NIL (COND
                                   (LANDSCAPE (GETBOXREGION 780 612))
                                   (T (GETBOXREGION 612 770)))
            NIL NIL T 16.0])
 
 (EDITSKETCH
-  [LAMBDA (SLIDENAME)                                        (* rrb "14-Nov-84 17:15")
+  [LAMBDA (SLIDENAME)                                        (* rrb "14-Nov-84 17:15")
                                                              (* edits a named sketch)
     (SKETCHW.CREATE (SETQ SLIDENAME (OR SLIDENAME (GENSYM "SLIDE")))
            NIL NIL NIL NIL T 16.0)
     SLIDENAME])
 
 (ADD.SKETCH.TO.VIEWER
-  [LAMBDA (SKETCHTOADD VIEWER ABOUTDEFAULTS?)                (* rrb "20-Mar-86 15:55")
+  [LAMBDA (SKETCHTOADD VIEWER ABOUTDEFAULTS?)                (* rrb "20-Mar-86 15:55")
                                                              (* adds the element in SKETCHTOADD to 
                                                              the sketch TOSKETCH)
     (PROG ([ADDSKETCH (COND
@@ -594,12 +714,12 @@ To abort loading the new version of Sketch, type '^'."])
                (COND
                   ((OR (NULL ABOUTDEFAULTS?)
                        (MENU (create MENU
-                                    ITEMS _ '((Yes T "Will use the defaults of the retrieved sketch."
+                                    ITEMS ← '((Yes T "Will use the defaults of the retrieved sketch."
                                                    )
                                               (No NIL "Will not change the defaults."))
-                                    CENTERFLG _ T
-                                    TITLE _ "Use the defaults from the retrieved sketch?"
-                                    MENUCOLUMNS _ 2)))
+                                    CENTERFLG ← T
+                                    TITLE ← "Use the defaults from the retrieved sketch?"
+                                    MENUCOLUMNS ← 2)))
                    (PUTSKETCHPROP TOSKETCH 'SKETCHCONTEXT DEFAULTS)
                    (WINDOWPROP VIEWER 'SKETCHCONTEXT DEFAULTS]
           (SK.ADD.ELEMENTS.TO.SKETCH (fetch (SKETCH SKETCHELTS) of ADDSKETCH)
@@ -614,12 +734,12 @@ To abort loading the new version of Sketch, type '^'."])
                     (PUTSKETCHPROP TOSKETCH SKPROP (GETSKETCHPROP ADDSKETCH SKPROP])
 
 (SK.ADD.ELEMENTS.TO.SKETCH
-  [LAMBDA (ELTS SKW)                                         (* rrb "10-Mar-86 16:50")
+  [LAMBDA (ELTS SKW)                                         (* rrb "10-Mar-86 16:50")
                                                              (* adds a list of elements to a sketch)
     (for ELT in ELTS do 
-          
-          (* clear the priority so that they get a priority based on their position in 
-          the new sketch.)
+
+         (* clear the priority so that they get a priority based on their position in the 
+         new sketch.)
 
                         (SK.SET.ELEMENT.PRIORITY ELT NIL)
                         (SK.ADD.ELEMENT ELT SKW])
@@ -630,7 +750,7 @@ To abort loading the new version of Sketch, type '^'."])
                                                              (* ; "allows the user to set a default")
                                                              (* allows the user to set a default)
     (\CURSOR.IN.MIDDLE.MENU (create MENU
-                                   ITEMS _ '[(Line SKETCH.SET.BRUSH.SIZE 
+                                   ITEMS ← '[(Line SKETCH.SET.BRUSH.SIZE 
                                                    "Sets the characteristics of the default brush."
                                                    (SUBITEMS (Size SKETCH.SET.BRUSH.SIZE 
                                                                  "Sets the size of the default brush"
@@ -708,16 +828,16 @@ To abort loading the new version of Sketch, type '^'."])
                                                            ("All figures" SK.SET.FEEDBACK.ALWAYS 
        "Most elements are shown while they are being entered.
 This will be slow for arcs and curves."]
-                                   CENTERFLG _ T
-                                   WHENSELECTEDFN _ (FUNCTION SK.POPUP.SELECTIONFN)
-                                   MENUFONT _ (FONTPROP (FONTCREATE BOLDFONT)
+                                   CENTERFLG ← T
+                                   WHENSELECTEDFN ← (FUNCTION SK.POPUP.SELECTIONFN)
+                                   MENUFONT ← (FONTPROP (FONTCREATE BOLDFONT)
                                                      'SPEC])
 
 (SK.POPUP.SELECTIONFN
-  [LAMBDA (ITEM MENU)                                        (* rrb " 3-Sep-85 14:27")
-          
-          (* * calls the function appropriate for the item selected from the command menu 
-          associated with a figure window.)
+  [LAMBDA (ITEM MENU)                                        (* rrb " 3-Sep-85 14:27")
+
+         (* * calls the function appropriate for the item selected from the command menu 
+         associated with a figure window.)
                                                              (* uses SKW freely from enclosing call 
                                                              to MENU.)
     (CLOSEPROMPTWINDOW SKW)
@@ -725,16 +845,16 @@ This will be slow for arcs and curves."]
            SKW])
 
 (GETSKETCHWREGION
-  [LAMBDA (SKETCHWINDOW)                                     (* rrb "11-Jul-86 15:48")
+  [LAMBDA (SKETCHWINDOW)                                     (* rrb "11-Jul-86 15:48")
     (UNSCALE.REGION (GETWREGION SKETCHWINDOW)
            (VIEWER.SCALE SKETCHWINDOW])
 
 (SK.ADD.ELEMENT
-  [LAMBDA (GELT SKETCHW DONTCLEARCURSOR GROUPFLG DONTCALLWHENADDEDFN)
+  [LAMBDA (GELT SKETCHW DONTCLEARCURSOR GROUPFLG DONTCALLWHENADDEDFN)
                                                              (* rrb "30-Aug-86 15:08")
-          
-          (* adds a new element to a sketch window and handles propagation to all other 
-          figure windows)
+
+         (* adds a new element to a sketch window and handles propagation to all other 
+         figure windows)
 
     (COND
        (GELT (PROG ([GELTTOADD (COND
@@ -755,24 +875,24 @@ This will be slow for arcs and curves."]
                    (RETURN ADDEDELT])
 
 (SK.ADD.PRIORITY.ELEMENT.TO.SKETCH
-  [LAMBDA (SKETCH ELEMENT PRIORITY)                          (* rrb "10-Mar-86 18:48")
-          
-          (* * adds an element to a sketch at its place according to PRIORITY.)
+  [LAMBDA (SKETCH ELEMENT PRIORITY)                          (* rrb "10-Mar-86 18:48")
+
+         (* * adds an element to a sketch at its place according to PRIORITY.)
 
     (PROG ((SKELTSCELL (fetch (SKETCH SKETCHTCELL) of SKETCH)))
           (RETURN (COND
                      ([OR (NULL (CAR SKELTSCELL))
                           (NOT (LESSP PRIORITY (SK.ELEMENT.PRIORITY (CADR SKELTSCELL]
-          
-          (* special cases of no elements or this element being greater than any others.
-          This means the other part of the COND doesn't have to worry about the TCONC 
-          format.)
+
+         (* special cases of no elements or this element being greater than any others.
+         This means the other part of the COND doesn't have to worry about the TCONC 
+         format.)
 
                       (TCONC SKELTSCELL ELEMENT))
                      [(LESSP PRIORITY (SK.ELEMENT.PRIORITY (CAAR SKELTSCELL)))
-          
-          (* special check for first element. This allows the others to be handled by 
-          replacing the tail of the element before.)
+
+         (* special check for first element. This allows the others to be handled by 
+         replacing the tail of the element before.)
 
                       (RPLACA SKELTSCELL (CONS ELEMENT (CAR SKELTSCELL]
                      (T (for SKELTTAIL on (CAR SKELTSCELL) when (LESSP PRIORITY (SK.ELEMENT.PRIORITY
@@ -781,41 +901,40 @@ This will be slow for arcs and curves."]
                               (RETURN ELEMENT])
 
 (SK.ELTS.BY.PRIORITY
-  [LAMBDA (GELTA GELTB)                                      (* rrb "10-Mar-86 17:57")
-          
-          (* * sort function for sketch global elements that sorts by priority.)
+  [LAMBDA (GELTA GELTB)                                      (* rrb "10-Mar-86 17:57")
+
+         (* * sort function for sketch global elements that sorts by priority.)
 
     (ILESSP (SK.ELEMENT.PRIORITY GELTA)
            (SK.ELEMENT.PRIORITY GELTB])
 
 (SK.ORDER.ELEMENTS
-  [LAMBDA (GSKETCHELEMENTS)                                  (* rrb "10-Mar-86 16:30")
-          
-          (* * puts a list of sketch global elements in order by priority.)
+  [LAMBDA (GSKETCHELEMENTS)                                  (* rrb "10-Mar-86 16:30")
+
+         (* * puts a list of sketch global elements in order by priority.)
 
     (SORT GSKETCHELEMENTS (FUNCTION SK.ELTS.BY.PRIORITY])
 
 (SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH
-  [LAMBDA (LOCALSKETCHELTS LOCALELEMENT)                     (* rrb "26-Mar-86 10:21")
-          
-          (* * adds an element to a sketch at its place according to PRIORITY.)
+  [LAMBDA (LOCALSKETCHELTS LOCALELEMENT)                     (* rrb "26-Mar-86 10:21")
+
+         (* * adds an element to a sketch at its place according to PRIORITY.)
 
     (PROG [(PRIORITY (SK.ELEMENT.PRIORITY (fetch (SCREENELT GLOBALPART) of LOCALELEMENT]
           (RETURN (COND
                      ([OR (NULL (CDAR LOCALSKETCHELTS))
                           (NOT (LESSP PRIORITY (SK.ELEMENT.PRIORITY (fetch (SCREENELT GLOBALPART)
                                                                        of (CADR LOCALSKETCHELTS]
-          
-          (* special cases of no elements in which case the local elements has only a 
-          name or this element being greater than any others.
-          This means the other part of the COND doesn't have to worry about the TCONC 
-          format.)
+
+         (* special cases of no elements in which case the local elements has only a name 
+         or this element being greater than any others.
+         This means the other part of the COND doesn't have to worry about the TCONC 
+         format.)
 
                       (TCONC LOCALSKETCHELTS LOCALELEMENT))
-                     (T 
-          
-          (* the first element of LOCALSKETCHELTS is the name of the sketch.)
-
+                     (T                                      (* the first element of 
+                                                             LOCALSKETCHELTS is the name of the 
+                                                             sketch.)
                         (for SKELTTAIL on (CAR LOCALSKETCHELTS)
                            when [LESSP PRIORITY (SK.ELEMENT.PRIORITY (fetch (SCREENELT GLOBALPART)
                                                                         of (CADR SKELTTAIL]
@@ -823,21 +942,20 @@ This will be slow for arcs and curves."]
                               (RETURN LOCALELEMENT])
 
 (SK.ADD.ELEMENTS
-  [LAMBDA (ELEMENTS SKW)                                     (* rrb "10-Mar-86 17:57")
-          
-          (* adds a list of global elements to a viewer but doesn't make an entry on the 
-          history list.)
-          
-          (* sorts the elements so that their relative priority remains the same.)
+  [LAMBDA (ELEMENTS SKW)                                     (* rrb "10-Mar-86 17:57")
 
+         (* adds a list of global elements to a viewer but doesn't make an entry on the 
+         history list.)
+                                                             (* sorts the elements so that their 
+                                                             relative priority remains the same.)
     (for ELT in (SK.ORDER.ELEMENTS ELEMENTS) do (SK.SET.ELEMENT.PRIORITY ELT NIL)
                                                 (SK.ADD.ELEMENT ELT SKW])
 
 (SK.CHECK.WHENADDEDFN
-  [LAMBDA (VIEWER GELT)                                      (* rrb "19-Oct-85 17:36")
-          
-          (* checks if the sketch has a when added fn and if so, calls it and interprets 
-          the result. Returns a list of the elements that should be deleted.)
+  [LAMBDA (VIEWER GELT)                                      (* rrb "19-Oct-85 17:36")
+
+         (* checks if the sketch has a when added fn and if so, calls it and interprets 
+         the result. Returns a list of the elements that should be deleted.)
 
     (PROG ((SKETCH (INSURE.SKETCH VIEWER))
            ADDFN RESULT)
@@ -853,34 +971,32 @@ This will be slow for arcs and curves."]
              (T (RETURN GELT])
 
 (SK.APPLY.MENU.COMMAND
-  [LAMBDA (COMMAND SKETCHW)                                  (* rrb " 3-Jan-85 13:17")
-          
-          (* calls the function appropriate for the item selected from the command menu 
-          associated with a figure window.)
-          
-          (* This is a separate function so it can be called by both pop up and fixed 
-          menu operations.)
+  [LAMBDA (COMMAND SKETCHW)                                  (* rrb " 3-Jan-85 13:17")
+
+         (* calls the function appropriate for the item selected from the command menu 
+         associated with a figure window.)
+
+         (* This is a separate function so it can be called by both pop up and fixed menu 
+         operations.)
 
     (COND
        ((NULL COMMAND)
         NIL)
-       ((type? SKETCHTYPE COMMAND)
-          
-          (* if the selected item is an element type, add an instance.)
-
+       ((type? SKETCHTYPE COMMAND)                           (* if the selected item is an element 
+                                                             type, add an instance.)
         (SKETCHW.ADD.INSTANCE COMMAND SKETCHW))
        [(LISTP COMMAND)                                      (* EVAL it)
         (EVAL (APPEND COMMAND (CONS (KWOTE SKETCHW]
        (T (APPLY* COMMAND SKETCHW])
 
 (SK.DELETE.ELEMENT1
-  [LAMBDA (OLDGELT SKETCHW GROUPFLG)                         (* rrb "19-Oct-85 17:09")
-          
-          (* deletes an element to a sketch window and handles propagation to all other 
-          figure windows)
-          
-          (* GROUPFLG indicates that this is part of a group operation and hence display 
-          and image object deleted fns don't need to be called.)
+  [LAMBDA (OLDGELT SKETCHW GROUPFLG)                         (* rrb "19-Oct-85 17:09")
+
+         (* deletes an element to a sketch window and handles propagation to all other 
+         figure windows)
+
+         (* GROUPFLG indicates that this is part of a group operation and hence display 
+         and image object deleted fns don't need to be called.)
 
     (PROG ((SKETCH (SKETCH.FROM.VIEWER SKETCHW))
            LOCALELT)                                         (* delete the element to the sketch.)
@@ -898,10 +1014,9 @@ This will be slow for arcs and curves."]
           (RETURN OLDGELT])
 
 (SK.MARK.DIRTY
-  [LAMBDA (SKETCH)                                           (* rrb " 1-Oct-86 18:15")
-          
-          (* marks a sketch as having been changed.
-          Puts a flag on its viewers.)
+  [LAMBDA (SKETCH)                                           (* rrb " 1-Oct-86 18:15")
+                                                             (* marks a sketch as having been 
+                                                             changed. Puts a flag on its viewers.)
                                                              (* checks first because this is faster 
                                                              than always putting.)
     (for SKW in (ALL.SKETCH.VIEWERS SKETCH) do (OR (EQ (WINDOWPROP SKW 'SKETCHCHANGED)
@@ -909,18 +1024,15 @@ This will be slow for arcs and curves."]
                                                    (WINDOWPROP SKW 'SKETCHCHANGED T])
 
 (SK.MARK.UNDIRTY
-  [LAMBDA (SKETCH)                                           (* rrb "29-Nov-84 18:03")
-          
-          (* marks a sketch as having been changed.
-          Puts a flag on its viewers.)
-
+  [LAMBDA (SKETCH)                                           (* rrb "29-Nov-84 18:03")
+                                                             (* marks a sketch as having been 
+                                                             changed. Puts a flag on its viewers.)
     (for SKW in (ALL.SKETCH.VIEWERS SKETCH) do (WINDOWPROP SKW 'SKETCHCHANGED 'OLD])
 
 (SK.MENU.AND.RETURN.FIELD
-  [LAMBDA (ELEMENTTYPE)                                      (* rrb "11-May-84 16:03")
-          
-          (* returns a field list of the field to be changed.)
-
+  [LAMBDA (ELEMENTTYPE)                                      (* rrb "11-May-84 16:03")
+                                                             (* returns a field list of the field 
+                                                             to be changed.)
     (PROG ((ITEMS (CHANGEABLEFIELDITEMS ELEMENTTYPE)))
           (RETURN (COND
                      ((NULL ITEMS)
@@ -928,20 +1040,20 @@ This will be slow for arcs and curves."]
                      [(NULL (CDR ITEMS))
                       (EVAL (CADR (CAR ITEMS]
                      (T (MENU (create MENU
-                                     ITEMS _ ITEMS
-                                     CENTERFLG _ T
-                                     TITLE _ "Choose which property to change"])
+                                     ITEMS ← ITEMS
+                                     CENTERFLG ← T
+                                     TITLE ← "Choose which property to change"])
 
 (SKETCH.SET.BRUSH.SHAPE
-  [LAMBDA (W)                                                (* rrb "11-Dec-84 15:31")
+  [LAMBDA (W)                                                (* rrb "11-Dec-84 15:31")
                                                              (* Sets the shape of the current brush)
     (PROG [(NEWSHAPE (PAINTW.READBRUSHSHAPE))
            (NOWBRUSH (fetch (SKETCHCONTEXT SKETCHBRUSH) of (WINDOWPROP W 'SKETCHCONTEXT]
           (RETURN (AND NEWSHAPE (replace (SKETCHCONTEXT SKETCHBRUSH) of (WINDOWPROP W 'SKETCHCONTEXT)
-                                   with (create BRUSH using NOWBRUSH BRUSHSHAPE _ NEWSHAPE])
+                                   with (create BRUSH using NOWBRUSH BRUSHSHAPE ← NEWSHAPE])
 
 (SKETCH.SET.BRUSH.SIZE
-  [LAMBDA (W)                                                (* rrb "12-Jan-85 10:13")
+  [LAMBDA (W)                                                (* rrb "12-Jan-85 10:13")
                                                              (* sets the size of the current brush)
     (SK.SET.DEFAULT.BRUSH.SIZE [READBRUSHSIZE (fetch (BRUSH BRUSHSIZE)
                                                  of (fetch (SKETCHCONTEXT SKETCHBRUSH)
@@ -949,10 +1061,10 @@ This will be slow for arcs and curves."]
            W])
 
 (SKETCHW.CLOSEFN
-  [LAMBDA (SKW)                                              (* rrb " 1-Oct-86 17:44")
-          
-          (* close function for a viewer. Removes itself from the list of viewers.)
-
+  [LAMBDA (SKW)                                              (* rrb " 1-Oct-86 17:44")
+                                                             (* close function for a viewer.
+                                                             Removes itself from the list of 
+                                                             viewers.)
     (PROG (PROCINFO)
           [COND
              [(SETQ PROCINFO (WINDOWPROP SKW 'DOCUMENTINFO)) (* this window came from a tedit 
@@ -966,9 +1078,9 @@ This will be slow for arcs and curves."]
               (COND
                  ([OR (TTY.PROCESSP (THIS.PROCESS))
                       (TTY.PROCESSP (WINDOWPROP SKW 'PROCESS]
-          
-          (* if this process or the sketch process has the tty, give it back to the Tedit 
-          that this window came from.)
+
+         (* if this process or the sketch process has the tty, give it back to the Tedit 
+         that this window came from.)
 
                   (AND [PROCESSP (SETQ PROCINFO (WINDOWPROP (fetch (SKETCHDOCUMENTINFO 
                                                                           FROMTEDITWINDOW)
@@ -984,11 +1096,11 @@ This will be slow for arcs and curves."]
           (WINDOWADDPROP SKW 'OPENFN 'SKETCHW.REOPENFN])
 
 (SK.CONFIRM.DESTRUCTION
-  [LAMBDA (VIEWER MSG)                                       (* rrb " 1-Oct-86 17:37")
-          
-          (* some destructive operation is about to take place, if the viewer is dirty, 
-          confirm that this is what is intended. If so, return T.
-          If not, NIL.)
+  [LAMBDA (VIEWER MSG)                                       (* rrb " 1-Oct-86 17:37")
+
+         (* some destructive operation is about to take place, if the viewer is dirty, 
+         confirm that this is what is intended. If so, return T.
+         If not, NIL.)
 
     (COND
        ((OR (WINDOWPROP VIEWER 'DONTQUERYCHANGES)
@@ -1007,45 +1119,43 @@ This will be slow for arcs and curves."]
              (T NIL])
 
 (SKETCHW.OUTFN
-  [LAMBDA (SKW)                                              (* rrb "24-Jan-85 10:06")
-          
-          (* the cursor is leaving the window, updates any structures that may be spread 
-          out for efficiency.)
+  [LAMBDA (SKW)                                              (* rrb "24-Jan-85 10:06")
+
+         (* the cursor is leaving the window, updates any structures that may be spread 
+         out for efficiency.)
 
     NIL])
 
 (SKETCHW.REOPENFN
-  [LAMBDA (SKW)                                              (* rrb " 7-Feb-84 11:31")
-          
-          (* reopenfn for viewers. Adds it back onto the list of global viewers.)
-
+  [LAMBDA (SKW)                                              (* rrb " 7-Feb-84 11:31")
+                                                             (* reopenfn for viewers.
+                                                             Adds it back onto the list of global 
+                                                             viewers.)
     (ADD.SKETCH.VIEWER (WINDOWPROP SKW 'SKETCH)
            SKW)
     (WINDOWPROP SKW 'PROCESS (ADD.PROCESS (LIST (FUNCTION WB.EDITOR)
                                                 (KWOTE SKW])
 
 (MAKE.LOCAL.SKETCH
-  [LAMBDA (SKETCH SKETCHREGION SCALE STREAM EVERYTHINGFLG)   (* rrb "22-Apr-85 16:45")
-          
-          (* * calculate the local parts for the region of the sketch at a given scale.
-          EVERYTHINGFLG provides a way to override the inside check.
-          This is necessary because the inside check works on local elements.
-          When the inside check is change to work on global elements, this can be 
-          removed.)
+  [LAMBDA (SKETCH SKETCHREGION SCALE STREAM EVERYTHINGFLG)   (* rrb "22-Apr-85 16:45")
+
+         (* * calculate the local parts for the region of the sketch at a given scale.
+         EVERYTHINGFLG provides a way to override the inside check.
+         This is necessary because the inside check works on local elements.
+         When the inside check is change to work on global elements, this can be removed.)
 
     (for SKELT in (fetch (SKETCH SKETCHELTS) of (INSURE.SKETCH SKETCH))
        when (OR EVERYTHINGFLG (SK.INSIDE.REGION SKELT SKETCHREGION))
        collect (SK.LOCAL.FROM.GLOBAL SKELT STREAM SCALE])
 
 (MAP.SKETCHSPEC.INTO.VIEWER
-  [LAMBDA (SKETCH SKW)                                       (* rrb "12-May-85 17:02")
-          
-          (* creates the local parts of a sketch and puts it onto the viewer.)
-
+  [LAMBDA (SKETCH SKW)                                       (* rrb "12-May-85 17:02")
+                                                             (* creates the local parts of a sketch 
+                                                             and puts it onto the viewer.)
     (PROG ((SKREGION (WINDOWPROP SKW 'REGION.VIEWED))
            SPECS)
-          
-          (* local specs are kept as a TCONC cell so that additions to the end are fast.)
+
+         (* local specs are kept as a TCONC cell so that additions to the end are fast.)
 
           (RETURN (WINDOWPROP SKW 'SKETCHSPECS (CONS [SETQ SPECS
                                                       (CONS (fetch (SKETCH SKETCHNAME) of SKETCH)
@@ -1058,29 +1168,27 @@ This will be slow for arcs and curves."]
                                                      (LAST SPECS])
 
 (SKETCHW.REPAINTFN
-  [LAMBDA (W REG STOPIFMOUSEDOWN NEWGRIDFLG)                 (* rrb "21-Feb-86 10:38")
+  [LAMBDA (W REG STOPIFMOUSEDOWN NEWGRIDFLG)                 (* rrb "21-Feb-86 10:38")
                                                              (* redisplays the sketch in a window)
                                                              (* for now ignore the region.)
-          
-          (* if STOPIFMOUSEDOWN is T, it displays some but stops if the button left or 
-          middle button is still down and returns STOPPED)
+
+         (* if STOPIFMOUSEDOWN is T, it displays some but stops if the button left or 
+         middle button is still down and returns STOPPED)
 
     (DSPOPERATION 'PAINT W)
-    (DSPRIGHTMARGIN 65000 W)
-          
-          (* I don't know exactly how scrolling ever gets turned on but it has.)
-
+    (DSPRIGHTMARGIN 65000 W)                                 (* I don't know exactly how scrolling 
+                                                             ever gets turned on but it has.)
     (DSPSCROLL 'OFF W)
     (PROG1 (SKETCHW.REPAINTFN1 W REG (AND STOPIFMOUSEDOWN (SETUPTIMER AUTOZOOM.REPAINT.TIME))
                   NEWGRIDFLG)
            (SKED.SELECTION.FEEDBACK W])
 
 (SKETCHW.REPAINTFN1
-  [LAMBDA (SKW REGION TIMER NEWGRIDFLG)                      (* rrb "11-Jul-86 15:51")
-          
-          (* Draws all of the local elements in the sketch window SKW.
-          internal function to SKETCHW.REPAINTFN This entry is provided so that 
-          SK.DRAWFIGURE.IF can RETFROM it if the timer has expired and a button is down.)
+  [LAMBDA (SKW REGION TIMER NEWGRIDFLG)                      (* rrb "11-Jul-86 15:51")
+
+         (* Draws all of the local elements in the sketch window SKW.
+         internal function to SKETCHW.REPAINTFN This entry is provided so that 
+         SK.DRAWFIGURE.IF can RETFROM it if the timer has expired and a button is down.)
 
     (MAPSKETCHSPECS (LOCALSPECS.FROM.VIEWER SKW)
            (COND
@@ -1094,25 +1202,25 @@ This will be slow for arcs and curves."]
         (SK.DISPLAY.GRID.POINTS SKW NEWGRIDFLG])
 
 (SK.DRAWFIGURE.IF
-  [LAMBDA (SCREENELT STREAM REGION SCALE)                    (* rrb "22-Jan-85 11:34")
-          
-          (* draws an element of a sketch in a window.
-          If the free variable TIMER has expired and a button is down, it RETFROMs the 
-          repainting function.)
+  [LAMBDA (SCREENELT STREAM REGION SCALE)                    (* rrb "22-Jan-85 11:34")
+
+         (* draws an element of a sketch in a window.
+         If the free variable TIMER has expired and a button is down, it RETFROMs the 
+         repainting function.)
 
     (PROG1 (SK.DRAWFIGURE SCREENELT STREAM REGION SCALE)
-           (AND TIMER (MOUSESTATE (OR LEFT MIDDLE))
-                (TIMEREXPIRED? TIMER)
-                (RETFROM 'SKETCHW.REPAINTFN1 'STOPPED])
+        (AND TIMER (MOUSESTATE (OR LEFT MIDDLE))
+             (TIMEREXPIRED? TIMER)
+             (RETFROM 'SKETCHW.REPAINTFN1 'STOPPED)))])
 
 (SKETCHW.SCROLLFN
-  [LAMBDA (SKW XDELTA YDELTA CONTINUOUSFLG)                  (* rrb "11-Jul-86 15:51")
-          
-          (* scroll function for a sketch window. It must check to see which elements 
-          need to get added and deleted from the ones currently viewed as a result of the 
-          scrolling. Also if an element gets added, the clipping region must be expanded 
-          because part of the display of the object may be in the already visible part of 
-          the window.)
+  [LAMBDA (SKW XDELTA YDELTA CONTINUOUSFLG)                  (* rrb "11-Jul-86 15:51")
+
+         (* scroll function for a sketch window. It must check to see which elements need 
+         to get added and deleted from the ones currently viewed as a result of the 
+         scrolling. Also if an element gets added, the clipping region must be expanded 
+         because part of the display of the object may be in the already visible part of 
+         the window.)
 
     (PROG ([SKETCH (fetch (SKETCH SKETCHELTS) of (INSURE.SKETCH (SKETCH.FROM.VIEWER SKW]
            (NOWREG (DSPCLIPPINGREGION NIL SKW))
@@ -1148,22 +1256,20 @@ This will be slow for arcs and curves."]
                                                                 (fetch (REGION WIDTH) of NOWREG)
                                                                 (fetch (REGION HEIGHT) of NOWREG)))
                                  (SETQ SCALE (VIEWER.SCALE SKW]
-          
-          (* update the current image to contain the things that will be there after the 
-          scroll, then scroll.)
+
+         (* update the current image to contain the things that will be there after the 
+         scroll, then scroll.)
 
           [for GELT in SKETCH do (SETQ INNEW? (SK.INSIDE.REGION GELT NEWREGION))
                                  (COND
                                     [(SETQ LOCALELT (SK.LOCAL.ELT.FROM.GLOBALPART GELT SKW))
-          
-          (* if it is not supposed to be in the new region, remove it.)
-
+                                                             (* if it is not supposed to be in the 
+                                                             new region, remove it.)
                                      (OR INNEW? (COND
                                                    ((REGIONSINTERSECTP NEWLOCALREGION (SK.ITEM.REGION
                                                                                        LOCALELT))
-          
-          (* part of image may overlap the part of sketch that is still showing)
-
+                                                             (* part of image may overlap the part 
+                                                             of sketch that is still showing)
                                                     (SK.ERASE.AND.DELETE.ITEM LOCALELT SKW))
                                                    (T (SK.DELETE.ITEM LOCALELT SKW]
                                     (INNEW?                  (* just came in)
@@ -1174,11 +1280,11 @@ This will be slow for arcs and curves."]
           (for GELT in NEWONES do (SKETCH.ADD.AND.DISPLAY1 GELT SKW SCALE])
 
 (SKETCHW.RESHAPEFN
-  [LAMBDA (SKW OLDIMAGE IMAGEREGION OLDSCREENREGION)         (* rrb "11-Jul-86 15:51")
-          
-          (* reshape function for a sketch window.
-          It must check to see which elements need to get added and deleted from the ones 
-          currently viewed as a result of the reshaping.)
+  [LAMBDA (SKW OLDIMAGE IMAGEREGION OLDSCREENREGION)         (* rrb "11-Jul-86 15:51")
+
+         (* reshape function for a sketch window. It must check to see which elements need 
+         to get added and deleted from the ones currently viewed as a result of the 
+         reshaping.)
 
     (PROG ([SKETCH (fetch (SKETCH SKETCHELTS) of (INSURE.SKETCH (SKETCH.FROM.VIEWER SKW]
            (NOWREG (DSPCLIPPINGREGION NIL SKW))
@@ -1188,22 +1294,20 @@ This will be slow for arcs and curves."]
           (RESHAPEBYREPAINTFN SKW OLDIMAGE IMAGEREGION OLDSCREENREGION)
           [SETQ NEWREGION (UNSCALE.REGION (SETQ NEWLOCALREGION (DSPCLIPPINGREGION NIL SKW))
                                  (SETQ SCALE (VIEWER.SCALE SKW]
-          
-          (* update the current image to contain the things that will be there after the 
-          scroll, then scroll.)
+
+         (* update the current image to contain the things that will be there after the 
+         scroll, then scroll.)
 
           [for GELT in SKETCH do (SETQ INNEW? (SK.INSIDE.REGION GELT NEWREGION))
                                  (COND
                                     [(SETQ LOCALELT (SK.LOCAL.ELT.FROM.GLOBALPART GELT SKW))
-          
-          (* if it is not supposed to be in the new region, remove it.)
-
+                                                             (* if it is not supposed to be in the 
+                                                             new region, remove it.)
                                      (OR INNEW? (COND
                                                    ((REGIONSINTERSECTP NEWLOCALREGION (SK.ITEM.REGION
                                                                                        LOCALELT))
-          
-          (* part of image may overlap the part of sketch that is still showing)
-
+                                                             (* part of image may overlap the part 
+                                                             of sketch that is still showing)
                                                     (SK.ERASE.AND.DELETE.ITEM LOCALELT SKW))
                                                    (T (SK.DELETE.ITEM LOCALELT SKW]
                                     (INNEW?                  (* just came in)
@@ -1213,11 +1317,11 @@ This will be slow for arcs and curves."]
           (for GELT in NEWONES do (SKETCH.ADD.AND.DISPLAY1 GELT SKW SCALE])
 
 (SK.UPDATE.EVENT.SELECTION
-  [LAMBDA (HOTSPOTCACHE X1 Y1 X2 Y2 SCALE WINDOW COPYMODE DELETEMODE)
+  [LAMBDA (HOTSPOTCACHE X1 Y1 X2 Y2 SCALE WINDOW COPYMODE DELETEMODE)
                                                              (* rrb "31-Jan-85 11:35")
-          
-          (* * internal function to SK.COPY.BUTTONEVENTFN that determines the elements 
-          within the given bounds and selects or deselects them.)
+
+         (* * internal function to SK.COPY.BUTTONEVENTFN that determines the elements 
+         within the given bounds and selects or deselects them.)
 
     (PROG (SELITEMS)
           (RETURN (COND
@@ -1243,12 +1347,12 @@ This will be slow for arcs and curves."]
                                                                       DELETEMODE])
 
 (LIGHTGRAYWINDOW
-  [LAMBDA (WINDOW)                                           (* rrb "28-Jun-84 10:27")
+  [LAMBDA (WINDOW)                                           (* rrb "28-Jun-84 10:27")
     (DSPFILL NIL 1 'INVERT WINDOW)
     WINDOW])
 
 (SK.ADD.SPACES
-  [LAMBDA (STRLST)                                           (* rrb "19-Jul-85 15:11")
+  [LAMBDA (STRLST)                                           (* rrb "19-Jul-85 15:11")
                                                              (* adds eols between the elements of 
                                                              STRLST)
     (for STR in STRLST join (COND
@@ -1262,15 +1366,15 @@ This will be slow for arcs and curves."]
 "])
 
 (SK.SKETCH.MENU
-  [LAMBDA (SKW)                                              (* rrb "12-Sep-85 11:50")
+  [LAMBDA (SKW)                                              (* rrb "12-Sep-85 11:50")
                                                              (* brings up the normal sketch command 
                                                              menu.)
     (SK.MIDDLE.TITLEFN SKW T])
 
 (SK.CHECK.IMAGEOBJ.WHENDELETEDFN
-  [LAMBDA (GELT SKETCHW)                                     (* rrb "19-Oct-85 17:10")
-          
-          (* check to see if a when deleted function needs to be applied and applies it.)
+  [LAMBDA (GELT SKETCHW)                                     (* rrb "19-Oct-85 17:10")
+
+         (* check to see if a when deleted function needs to be applied and applies it.)
 
     (SELECTQ (fetch (GLOBALPART GTYPE) of GELT)
         (SKIMAGEOBJ                                          (* deleting an image object apply 
@@ -1282,7 +1386,7 @@ This will be slow for arcs and curves."]
         NIL])
 
 (SK.APPLY.IMAGEOBJ.WHENDELETEDFN
-  [LAMBDA (GELT SKETCHW)                                     (* rrb "30-Jul-85 15:35")
+  [LAMBDA (GELT SKETCHW)                                     (* rrb "30-Jul-85 15:35")
                                                              (* applies the when deleted function 
                                                              for an image object.)
     (PROG (IMAGEOBJ FN)
@@ -1292,21 +1396,20 @@ This will be slow for arcs and curves."]
                                                                              INDIVIDUALGLOBALPART)
                                                                   of GELT)))
                                    'WHENDELETEDFN))
-                   (NEQ FN 'NILL))
-          
-          (* documentation calls for passing text streams as well but there aren't any.)
-
+                   (NEQ FN 'NILL))                           (* documentation calls for passing 
+                                                             text streams as well but there aren't 
+                                                             any.)
               (APPLY* FN IMAGEOBJ SKETCHW])
 
 (SK.RETURN.TTY
-  [LAMBDA (W)                                                (* rrb "29-Aug-85 11:09")
+  [LAMBDA (W)                                                (* rrb "29-Aug-85 11:09")
                                                              (* gives up the tty when the window is 
                                                              shrunken.)
     (AND (TTY.PROCESSP (WINDOWPROP W 'PROCESS))
          (TTY.PROCESS T])
 
 (SK.TAKE.TTY
-  [LAMBDA (W)                                                (* rrb "29-Aug-85 11:10")
+  [LAMBDA (W)                                                (* rrb "29-Aug-85 11:10")
                                                              (* takes the tty when the window is 
                                                              expanded)
     (TTY.PROCESS (WINDOWPROP W 'PROCESS])
@@ -1322,11 +1425,11 @@ This will be slow for arcs and curves."]
   [LAMBDA (ITEMS TITLE)                                      (* ; "Edited  6-Nov-2025 22:36 by rmk")
                                                              (* rrb "14-Jul-86 13:43")
     (create MENU
-           ITEMS _ ITEMS
-           CENTERFLG _ T
-           WHENSELECTEDFN _ (FUNCTION SKETCHW.SELECTIONFN)
-           MENUFONT _ (FONTCREATE BOLDFONT)
-           TITLE _ TITLE])
+           ITEMS ← ITEMS
+           CENTERFLG ← T
+           WHENSELECTEDFN ← (FUNCTION SKETCHW.SELECTIONFN)
+           MENUFONT ← (FONTCREATE BOLDFONT)
+           TITLE ← TITLE])
 
 (SKETCH.COMMANDMENU.ITEMS
   [LAMBDA (ADDFIXITEM ELEMENTTYPES VIEWER)                   (* rrb "24-Sep-86 18:11")
@@ -1587,34 +1690,35 @@ This will be slow for arcs and curves."]
                 '((inspect INSPECT.SKETCH "Calls the Inspector on the figure data structures."])
 
 (CREATE.SKETCHW.COMMANDMENU
-  [LAMBDA (MENUTITLE ADDFIXITEM ELEMENTTYPES VIEWER)         (* rrb " 6-May-86 15:22")
+  [LAMBDA (MENUTITLE ADDFIXITEM ELEMENTTYPES VIEWER)         (* rrb " 6-May-86 15:22")
                                                              (* returns the control menu for a 
                                                              figure window.)
     (SKETCH.COMMANDMENU (SKETCH.COMMANDMENU.ITEMS ADDFIXITEM ELEMENTTYPES VIEWER)
            MENUTITLE])
 
 (SKETCHW.SELECTIONFN
-  [LAMBDA (ITEM MENU)                                        (* rrb "31-Jan-86 11:34")
-          
-          (* calls the function appropriate for the item selected from the command menu 
-          associated with a figure window.)
+  [LAMBDA (ITEM MENU)                                        (* rrb "31-Jan-86 11:34")
+
+         (* calls the function appropriate for the item selected from the command menu 
+         associated with a figure window.)
 
     (PROG [(SKW (WINDOWPROP (WFROMMENU MENU)
                        'MAINWINDOW]
-          (RETURN (RESETLST (COND
-                               ((OBTAIN.MONITORLOCK (SKETCH.MONITORLOCK SKW)
-                                       T T)                  (* clear the prompt window if there is 
+          (RETURN (RESETLST
+                      (COND
+                         ((OBTAIN.MONITORLOCK (SKETCH.MONITORLOCK SKW)
+                                 T T)                        (* clear the prompt window if there is 
                                                              one.)
-                                (CLOSEPROMPTWINDOW SKW)      (* reset the line being drawn if there 
+                          (CLOSEPROMPTWINDOW SKW)            (* reset the line being drawn if there 
                                                              is one.)
-                                (RESET.LINE.BEING.INPUT SKW)
-                                (SK.APPLY.MENU.COMMAND (CADR ITEM)
-                                       SKW))
-                               (T (STATUSPRINT SKW "
-" "Sketch operation in progress.  Please wait."])
+                          (RESET.LINE.BEING.INPUT SKW)
+                          (SK.APPLY.MENU.COMMAND (CADR ITEM)
+                                 SKW))
+                         (T (STATUSPRINT SKW "
+" "Sketch operation in progress.  Please wait."))))])
 
 (SKETCH.MONITORLOCK
-  [LAMBDA (VIEWER)                                           (* rrb "31-Jan-86 10:20")
+  [LAMBDA (VIEWER)                                           (* rrb "31-Jan-86 10:20")
                                                              (* returns the monitorlock for a 
                                                              sketch)
     (OR (WINDOWPROP VIEWER 'MONITORLOCK)
@@ -1623,10 +1727,9 @@ This will be slow for arcs and curves."]
               (RETURN LOCK])
 
 (SK.EVAL.AS.PROCESS
-  [LAMBDA (FORM VIEWER)                                      (* rrb "31-Jan-86 11:23")
-          
-          (* evals a form that grabs the sketch lock on its viewer in a process.)
-
+  [LAMBDA (FORM VIEWER)                                      (* rrb "31-Jan-86 11:23")
+                                                             (* evals a form that grabs the sketch 
+                                                             lock on its viewer in a process.)
     (COND
        ((THIS.PROCESS)
         (ADD.PROCESS (LIST 'SK.EVAL.WITH.LOCK (KWOTE FORM)
@@ -1638,20 +1741,18 @@ This will be slow for arcs and curves."]
           (\EVAL FORM])
 
 (SK.EVAL.WITH.LOCK
-  [LAMBDA (FORM VIEWER)                                      (* rrb "31-Jan-86 11:22")
-          
-          (* evals FORM in a context where it has the lock on VIEWER)
-
+  [LAMBDA (FORM VIEWER)                                      (* rrb "31-Jan-86 11:22")
+                                                             (* evals FORM in a context where it 
+                                                             has the lock on VIEWER)
     (WITH.MONITOR (SKETCH.MONITORLOCK VIEWER)
            (EVAL FORM])
 )
 (DEFINEQ
 
 (SK.FIX.MENU
-  [LAMBDA (SKETCHW DONTOPENFLG)                              (* rrb "23-Sep-86 17:59")
-          
-          (* attaches the menu on the right side of the viewer.)
-
+  [LAMBDA (SKETCHW DONTOPENFLG)                              (* rrb "23-Sep-86 17:59")
+                                                             (* attaches the menu on the right side 
+                                                             of the viewer.)
     (PROG (MENUW)
           (OR (SETQ MENUW (SK.INSURE.HAS.MENU SKETCHW))
               (RETURN))                                      (* clear the popup menu cache.)
@@ -1669,20 +1770,18 @@ This will be slow for arcs and curves."]
               (OR DONTOPENFLG (OPENW MENUW])
 
 (SK.SET.UP.MENUS
-  [LAMBDA (SKETCHW DONTOPENFLG MENUSPEC)                     (* rrb "23-Sep-86 17:59")
+  [LAMBDA (SKETCHW DONTOPENFLG MENUSPEC)                     (* rrb "23-Sep-86 17:59")
                                                              (* attached the sketch menu to the 
                                                              window.)
     (PROG (FIXEDMENUW POPUPMENUW FIXIT?)
           (COND
-             ((NULL MENUSPEC)
-          
-          (* mark window so both menus will come up if needed.)
-
+             ((NULL MENUSPEC)                                (* mark window so both menus will come 
+                                                             up if needed.)
               (SETQ FIXEDMENUW (SETQ POPUPMENUW T)))
              ((type? MENU MENUSPEC)
-          
-          (* put the given menu as the fixed one and establish the standard one as the 
-          SKETCHPOPUPMENU)
+
+         (* put the given menu as the fixed one and establish the standard one as the 
+         SKETCHPOPUPMENU)
 
               (SETQ FIXEDMENUW (MENUWINDOW MENUSPEC T))
               (SETQ POPUPMENUW T)
@@ -1714,21 +1813,19 @@ This will be slow for arcs and curves."]
           (AND FIXIT? (SK.FIX.MENU SKETCHW DONTOPENFLG])
 
 (SK.INSURE.HAS.MENU
-  [LAMBDA (SKETCHW)                                          (* rrb "23-Sep-86 17:59")
+  [LAMBDA (SKETCHW)                                          (* rrb "23-Sep-86 17:59")
                                                              (* makes sure a sketch window has a 
                                                              menu.)
     (PROG [(FIXEDMENU (WINDOWPROP SKETCHW 'SKETCHFIXEDMENU]
           [COND
              ((EQ (WINDOWPROP SKETCHW 'SKETCHFIXEDMENU)
-                  T)
-          
-          (* no fixed menu yet but wants standard one, create it)
-
+                  T)                                         (* no fixed menu yet but wants 
+                                                             standard one, create it)
               (WINDOWPROP SKETCHW 'SKETCHFIXEDMENU (SETQ FIXEDMENU (SK.CREATE.STANDARD.MENU SKETCHW]
           (RETURN FIXEDMENU])
 
 (SK.CREATE.STANDARD.MENU
-  [LAMBDA (VIEWER)                                           (* rrb "23-Sep-86 17:52")
+  [LAMBDA (VIEWER)                                           (* rrb "23-Sep-86 17:52")
                                                              (* creates the standard sketch viewer 
                                                              fixed menu window.)
     (RESETFORM (CURSOR WAITINGCURSOR)
@@ -1736,49 +1833,44 @@ This will be slow for arcs and curves."]
                   T])
 
 (SK.ADD.ITEM.TO.MENU
-  [LAMBDA (OLDMENU NEWITEM)                                  (* rrb "23-Sep-86 09:53")
-          
-          (* returns a menu that is like OLDMENU but has one additional item NEWITEM)
-          
-          (* clober enough fields to get the menu to redraw itself correctly.)
-
-    (create MENU using OLDMENU ITEMS _ (APPEND (fetch (MENU ITEMS) of OLDMENU)
+  [LAMBDA (OLDMENU NEWITEM)                                  (* rrb "23-Sep-86 09:53")
+                                                             (* returns a menu that is like OLDMENU 
+                                                             but has one additional item NEWITEM)
+                                                             (* clober enough fields to get the 
+                                                             menu to redraw itself correctly.)
+    (create MENU using OLDMENU ITEMS ← (APPEND (fetch (MENU ITEMS) of OLDMENU)
                                               (LIST NEWITEM))
-                       MENUCOLUMNS _ NIL MENUROWS _ NIL IMAGE _ NIL MENUGRID _
+                       MENUCOLUMNS ← NIL MENUROWS ← NIL IMAGE ← NIL MENUGRID ←
                        (create REGION
-                              LEFT _ 0
-                              BOTTOM _ 0])
+                              LEFT ← 0
+                              BOTTOM ← 0])
 
 (SK.GET.VIEWER.POPUP.MENU
-  [LAMBDA (SKETCHW)                                          (* rrb "24-Sep-86 10:31")
-          
-          (* gets the popup menu for a viewer. If the sketch menu is open, it creates a 
-          standard one. If the sketch menu isn't open, it adds the fix menu item to it 
-          and pops it up. It is cleared each time the menu is fixed.)
+  [LAMBDA (SKETCHW)                                          (* rrb "24-Sep-86 10:31")
+
+         (* gets the popup menu for a viewer. If the sketch menu is open, it creates a 
+         standard one. If the sketch menu isn't open, it adds the fix menu item to it and 
+         pops it up. It is cleared each time the menu is fixed.)
 
     (OR (WINDOWPROP SKETCHW 'SKETCHPOPUPMENUCACHE)
         (PROG [(SKETCHMENU (WINDOWPROP SKETCHW 'SKETCHFIXEDMENU]
               [COND
                  [(OR (NULL SKETCHMENU)
                       (OPENWP SKETCHMENU))
-          
-          (* window doesn't want a fixed menu or its fixed menu is already open, check 
-          for a popup one)
+
+         (* window doesn't want a fixed menu or its fixed menu is already open, check for 
+         a popup one)
 
                   (COND
                      ((EQ (SETQ SKETCHMENU (WINDOWPROP SKETCHW 'SKETCHPOPUPMENU))
                           T)
                       (WINDOWPROP SKETCHW 'SKETCHPOPUPMENU (SETQ SKETCHMENU (SK.CREATE.STANDARD.MENU
                                                                              SKETCHW]
-                 (T 
-          
-          (* use the fixed menu with an item added to fix the menu.)
-
+                 (T                                          (* use the fixed menu with an item 
+                                                             added to fix the menu.)
                     [COND
-                       ((EQ SKETCHMENU T)
-          
-          (* no fixed menu yet but wants standard one, create it)
-
+                       ((EQ SKETCHMENU T)                    (* no fixed menu yet but wants 
+                                                             standard one, create it)
                         (WINDOWPROP SKETCHW 'SKETCHFIXEDMENU (SETQ SKETCHMENU (
                                                                               SK.CREATE.STANDARD.MENU
                                                                                SKETCHW]
@@ -1792,10 +1884,10 @@ This will be slow for arcs and curves."]
               (RETURN SKETCHMENU])
 
 (SK.CLEAR.POPUP.MENU
-  [LAMBDA (MENUW)                                            (* rrb "24-Sep-86 10:34")
-          
-          (* clears the cache of pop up window so that the fixed menu will be used if the 
-          user middle buttons.)
+  [LAMBDA (MENUW)                                            (* rrb "24-Sep-86 10:34")
+
+         (* clears the cache of pop up window so that the fixed menu will be used if the 
+         user middle buttons.)
 
     (PROG NIL
           (WINDOWPROP (OR (MAINWINDOW MENUW)
@@ -1810,9 +1902,9 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (SKETCH.CREATE
-  [LAMBDA ARGS                                               (* rrb " 6-Nov-85 11:16")
+  [LAMBDA ARGS                                               (* rrb " 6-Nov-85 11:16")
     (PROG [(SKETCH (create SKETCH
-                          SKETCHNAME _ (AND (GREATERP ARGS 0)
+                          SKETCHNAME ← (AND (GREATERP ARGS 0)
                                             (ARG ARGS 1]
           (PUTSKETCHPROP SKETCH 'SKETCHCONTEXT (CREATE.DEFAULT.SKETCH.CONTEXT))
           (PUTSKETCHPROP SKETCH 'VERSION SKETCH.VERSION)     (* pick out the props that are 
@@ -1824,7 +1916,7 @@ This will be slow for arcs and curves."]
           (RETURN SKETCH])
 
 (GETSKETCHPROP
-  [LAMBDA (SKETCH PROPERTY)                                  (* rrb " 3-Mar-86 14:37")
+  [LAMBDA (SKETCH PROPERTY)                                  (* rrb " 3-Mar-86 14:37")
                                                              (* retrieves the property of a sketch)
     (PROG ((SKETCH (INSURE.SKETCH SKETCH))
            SKETCHCONTEXT)
@@ -1862,11 +1954,11 @@ This will be slow for arcs and curves."]
                              PROPERTY])
 
 (PUTSKETCHPROP
-  [LAMBDA (SKETCH PROPERTY VALUE)                            (* rrb " 3-Mar-86 13:58")
-          
-          (* stores a property on a sketch Returns VALUE.
-          Knows about the form of a sketch and does value checking
-          (or should.))
+  [LAMBDA (SKETCH PROPERTY VALUE)                            (* rrb " 3-Mar-86 13:58")
+
+         (* stores a property on a sketch Returns VALUE.
+         Knows about the form of a sketch and does value checking
+         (or should.))
 
     (PROG ((SKETCH (INSURE.SKETCH SKETCH))
            SKETCHCONTEXT PLIST)
@@ -1877,13 +1969,13 @@ This will be slow for arcs and curves."]
               (BRUSH (replace (SKETCHCONTEXT SKETCHBRUSH) of SKETCHCONTEXT with VALUE))
               (SHAPE (replace (SKETCHCONTEXT SKETCHBRUSH) of SKETCHCONTEXT
                         with (create BRUSH using (fetch (SKETCHCONTEXT SKETCHBRUSH) of SKETCHCONTEXT)
-                                                 BRUSHSHAPE _ VALUE)))
+                                                 BRUSHSHAPE ← VALUE)))
               (SIZE (replace (SKETCHCONTEXT SKETCHBRUSH) of SKETCHCONTEXT
                        with (create BRUSH using (fetch (SKETCHCONTEXT SKETCHBRUSH) of SKETCHCONTEXT)
-                                                BRUSHSIZE _ VALUE)))
+                                                BRUSHSIZE ← VALUE)))
               (COLOR (replace (SKETCHCONTEXT SKETCHBRUSH) of SKETCHCONTEXT
                         with (create BRUSH using (fetch (SKETCHCONTEXT SKETCHBRUSH) of SKETCHCONTEXT)
-                                                 BRUSHCOLOR _ VALUE)))
+                                                 BRUSHCOLOR ← VALUE)))
               (FONT (replace (SKETCHCONTEXT SKETCHFONT) of SKETCHCONTEXT with VALUE))
               (TEXTALIGNMENT (replace (SKETCHCONTEXT SKETCHTEXTALIGNMENT) of SKETCHCONTEXT
                                 with VALUE))
@@ -1896,13 +1988,13 @@ This will be slow for arcs and curves."]
               (TEXTURE (replace (SKETCHCONTEXT SKETCHFILLING) of SKETCHCONTEXT
                           with (create SKFILLING using (fetch (SKETCHCONTEXT SKETCHFILLING)
                                                           of SKETCHCONTEXT)
-                                                       FILLING.TEXTURE _ VALUE)))
+                                                       FILLING.TEXTURE ← VALUE)))
               ((BACKCOLOR FILLINGCOLOR) 
                    (replace (SKETCHCONTEXT SKETCHFILLING) of SKETCHCONTEXT
                       with (create SKFILLING using (fetch (SKETCHCONTEXT SKETCHFILLING) of 
                                                                                         SKETCHCONTEXT
                                                           )
-                                                   FILLING.COLOR _ VALUE)))
+                                                   FILLING.COLOR ← VALUE)))
               (LINEMODE (replace (SKETCHCONTEXT SKETCHLINEMODE) of SKETCHCONTEXT with VALUE))
               (ARCDIRECTION (replace (SKETCHCONTEXT SKETCHARCDIRECTION) of SKETCHCONTEXT with VALUE))
               (MOVEMODE (replace (SKETCHCONTEXT SKETCHMOVEMODE) of SKETCHCONTEXT with VALUE))
@@ -1914,23 +2006,23 @@ This will be slow for arcs and curves."]
           (RETURN VALUE])
 
 (CREATE.DEFAULT.SKETCH.CONTEXT
-  [LAMBDA NIL                                                (* rrb "23-Sep-86 10:40")
+  [LAMBDA NIL                                                (* rrb "23-Sep-86 10:40")
                                                              (* returns a default sketch context)
     (create SKETCHCONTEXT
-           SKETCHBRUSH _ SK.DEFAULT.BRUSH
-           SKETCHFONT _ [OR SK.DEFAULT.FONT (SK.FONT.LIST (DEFAULTFONT 'DISPLAY]
-           SKETCHTEXTALIGNMENT _ SK.DEFAULT.TEXT.ALIGNMENT
-           SKETCHARROWHEAD _ (create ARROWHEAD
-                                    ARROWTYPE _ SK.DEFAULT.ARROW.TYPE
-                                    ARROWANGLE _ SK.DEFAULT.ARROW.ANGLE
-                                    ARROWLENGTH _ SK.DEFAULT.ARROW.LENGTH)
-           SKETCHDASHING _ SK.DEFAULT.DASHING
-           SKETCHUSEARROWHEAD _ NIL
-           SKETCHTEXTBOXALIGNMENT _ SK.DEFAULT.TEXTBOX.ALIGNMENT
-           SKETCHFILLING _ (SK.CREATE.DEFAULT.FILLING)
-           SKETCHLINEMODE _ T
-           SKETCHINPUTSCALE _ 1
-           SKETCHDRAWINGMODE _ SK.DEFAULT.OPERATION])
+           SKETCHBRUSH ← SK.DEFAULT.BRUSH
+           SKETCHFONT ← [OR SK.DEFAULT.FONT (SK.FONT.LIST (DEFAULTFONT 'DISPLAY]
+           SKETCHTEXTALIGNMENT ← SK.DEFAULT.TEXT.ALIGNMENT
+           SKETCHARROWHEAD ← (create ARROWHEAD
+                                    ARROWTYPE ← SK.DEFAULT.ARROW.TYPE
+                                    ARROWANGLE ← SK.DEFAULT.ARROW.ANGLE
+                                    ARROWLENGTH ← SK.DEFAULT.ARROW.LENGTH)
+           SKETCHDASHING ← SK.DEFAULT.DASHING
+           SKETCHUSEARROWHEAD ← NIL
+           SKETCHTEXTBOXALIGNMENT ← SK.DEFAULT.TEXTBOX.ALIGNMENT
+           SKETCHFILLING ← (SK.CREATE.DEFAULT.FILLING)
+           SKETCHLINEMODE ← T
+           SKETCHINPUTSCALE ← 1
+           SKETCHDRAWINGMODE ← SK.DEFAULT.OPERATION])
 )
 
 (PUTPROPS SKETCH.CREATE ARGNAMES (NIL (NAME . DEFAULTS&VALUES) . U))
@@ -1942,15 +2034,15 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (SK.COPY.BUTTONEVENTFN
-  [LAMBDA (WINDOW)                                           (* rrb "11-Jul-86 15:51")
-          
-          (* * handles the button event when a copy key and/or the delete is held down.
-          allows the user to select a group of the sketch elements from the sketch 
-          WINDOW. This is very similar to SK.SELECT.MULTIPLE.ITEMS)
-          
-          (* the selection protocol is left to add, right to delete.
-          Multiple clicking in the same place upscales for both select and deselect.
-          Sweeping will select or deselect all of the items in the swept out area.)
+  [LAMBDA (WINDOW)                                           (* rrb "11-Jul-86 15:51")
+
+         (* * handles the button event when a copy key and/or the delete is held down.
+         allows the user to select a group of the sketch elements from the sketch WINDOW.
+         This is very similar to SK.SELECT.MULTIPLE.ITEMS)
+
+         (* the selection protocol is left to add, right to delete.
+         Multiple clicking in the same place upscales for both select and deselect.
+         Sweeping will select or deselect all of the items in the swept out area.)
 
     (COND
        ([AND (TTY.PROCESSP (WINDOWPROP WINDOW 'PROCESS))
@@ -1980,10 +2072,8 @@ This will be slow for arcs and curves."]
                                               (T 'COPYSELECT]
                                  (DELETEMODE 'DELETE)
                                  (T                          (* keys aren't still down.)
-                                    (RETURN]
-          
-          (* create the cache for the elements that allow the current operation.)
-
+                                    (RETURN]                 (* create the cache for the elements 
+                                                             that allow the current operation.)
               (SETQ HOTSPOTCACHE (SK.HOTSPOT.CACHE.FOR.OPERATION WINDOW OPERATION))
               (COND
                  ((NOT (SK.HAS.SOME.HOTSPOTS HOTSPOTCACHE))  (* no items don't do anything.)
@@ -2003,39 +2093,33 @@ This will be slow for arcs and curves."]
                  ((AND (LASTMOUSESTATE UP)
                        (SK.BUTTONEVENT.OVERP COPYMODE DELETEMODE))
                   (SK.TAKE.MARKS.DOWN WINDOW HOTSPOTCACHE)
-                  (RETURN)))
-          
-          (* MIDDLEONLYFLG is used to note case of picking characters out of a sketch.)
-
+                  (RETURN)))                                 (* MIDDLEONLYFLG is used to note case 
+                                                             of picking characters out of a sketch.)
               (SETQ MIDDLEONLYFLG (LASTMOUSESTATE (ONLY MIDDLE)))
           SELECTLP
               (GETMOUSESTATE)
               (COND
-                 ((SK.BUTTONEVENT.OVERP COPYMODE DELETEMODE)
-          
-          (* user let up copy key. Put sketch into input buffer.)
-
+                 ((SK.BUTTONEVENT.OVERP COPYMODE DELETEMODE) (* user let up copy key.
+                                                             Put sketch into input buffer.)
                   (SETQ RETURNVAL (WINDOWPROP WINDOW 'SKETCH.SELECTIONS))
                   (GO EXIT))
                  ([AND (LASTMOUSESTATE (NOT UP))
                        (OR (NOT (INSIDEP (WINDOWPROP WINDOW 'REGION)
                                        LASTMOUSEX LASTMOUSEY))
                            (NOT (SK.BUTTONEVENT.SAME.KEYS COPYMODE DELETEMODE]
-          
-          (* if a button is down, and either the keystate is different from entry or the 
-          cursor is out of the window, stop this event.)
+
+         (* if a button is down, and either the keystate is different from entry or the 
+         cursor is out of the window, stop this event.)
 
                   (SETQ RETURNVAL NIL)
-                  (GO EXIT)))
-          
-          (* cursor is still inside or buttons are up, leave sketch selected.)
-
+                  (GO EXIT)))                                (* cursor is still inside or buttons 
+                                                             are up, leave sketch selected.)
               (SETQ NEWY (LASTMOUSEY WINDOW))
               (SETQ NEWX (LASTMOUSEX WINDOW))
               (COND
                  ((NEQ PREVMOUSEBUTTONS LASTMOUSEBUTTONS)
-          
-          (* a button has gone up or down, mark this as the origin of a new box to sweep.)
+
+         (* a button has gone up or down, mark this as the origin of a new box to sweep.)
 
                   (SETQ ORIGX NEWX)
                   (SETQ ORIGY NEWY)
@@ -2053,10 +2137,9 @@ This will be slow for arcs and curves."]
                           (for SELITEM in (LOCALSPECS.FROM.VIEWER WINDOW)
                              do (SK.ADD.SELECTION SELITEM WINDOW (SK.BUTTONEVENT.MARK COPYMODE 
                                                                         DELETEMODE]
-                         (T 
-          
-          (* thing selected is a the whole sketch, clear everything and start over.)
-
+                         (T                                  (* thing selected is a the whole 
+                                                             sketch, clear everything and start 
+                                                             over.)
                             (for SELITEM in (LOCALSPECS.FROM.VIEWER WINDOW)
                                do (SK.REMOVE.SELECTION SELITEM WINDOW (SK.BUTTONEVENT.MARK COPYMODE 
                                                                              DELETEMODE)))
@@ -2065,16 +2148,16 @@ This will be slow for arcs and curves."]
                             (SETQ PREVMOUSEBUTTONS)
                             (GO STARTOVERLP]
                      [(LASTMOUSESTATE (NOT UP))
-          
-          (* add or delete the element if any that the point is in.
-          This uses a different method which takes into account the size of the selection 
-          knots which the area sweep doesn't.)
+
+         (* add or delete the element if any that the point is in.
+         This uses a different method which takes into account the size of the selection 
+         knots which the area sweep doesn't.)
 
                       (COND
                          ((SETQ NOW (IN.SKETCH.ELT? HOTSPOTCACHE
                                            (create POSITION
-                                                  XCOORD _ NEWX
-                                                  YCOORD _ NEWY)))
+                                                  XCOORD ← NEWX
+                                                  YCOORD ← NEWY)))
                           (COND
                              ([OR (AND (LASTMOUSESTATE (ONLY LEFT))
                                        (NOT (SETQ MIDDLEONLYFLG)))
@@ -2093,17 +2176,13 @@ This will be slow for arcs and curves."]
                      ((OR (IGREATERP (IABS (IDIFFERENCE ORIGX NEWX))
                                  SK.NO.MOVE.DISTANCE)
                           (IGREATERP (IABS (IDIFFERENCE ORIGY NEWY))
-                                 SK.NO.MOVE.DISTANCE))
-          
-          (* make the first pick move further so that it is easier to multiple click.)
-
-                      (SETQ MOVEDMUCHFLG T)))
-          
-          (* cursor has moved more than the minimum amount since last noticed.)
-          
-          (* add or delete any with in the swept out area.)
-
-                  (SK.UPDATE.EVENT.SELECTION HOTSPOTCACHE ORIGX ORIGY NEWX NEWY SCALE WINDOW COPYMODE 
+                                 SK.NO.MOVE.DISTANCE))       (* make the first pick move further so 
+                                                             that it is easier to multiple click.)
+                      (SETQ MOVEDMUCHFLG T)))                (* cursor has moved more than the 
+                                                             minimum amount since last noticed.)
+                                                             (* add or delete any with in the swept 
+                                                             out area.)
+                  (SK.UPDATE.EVENT.SELECTION HOTSPOTCACHE ORIGX ORIGY NEWX NEWY SCALE WINDOW COPYMODE
                          DELETEMODE)))
               (SETQ OLDX NEWX)
               (SETQ OLDY NEWY)
@@ -2115,11 +2194,9 @@ This will be slow for arcs and curves."]
                                                                            (SK.BUTTONEVENT.MARK
                                                                             COPYMODE DELETEMODE)))
               (SK.TAKE.MARKS.DOWN WINDOW HOTSPOTCACHE)
-              (CLOSEPROMPTWINDOW WINDOW)
-          
-          (* if middle was the only button used to select, return only the text 
-          characters.)
-
+              (CLOSEPROMPTWINDOW WINDOW)                     (* if middle was the only button used 
+                                                             to select, return only the text 
+                                                             characters.)
               (RETURN (AND RETURNVAL (COND
                                         [(TTY.PROCESSP (WINDOWPROP WINDOW 'PROCESS))
                                                              (* the results will be going to this 
@@ -2133,7 +2210,7 @@ This will be slow for arcs and curves."]
                                                       (MIDDLEONLYFLG 
                                                              (* if middle only, just get the 
                                                              characters.)
-                                                             (COPYINSERT (SK.BUILD.IMAGEOBJ RETURNVAL 
+                                                             (COPYINSERT (SK.BUILD.IMAGEOBJ RETURNVAL
                                                                                 WINDOW T)))
                                                       (T (SK.COPY.ELEMENTS RETURNVAL WINDOW]
                                             (DELETEMODE      (* delete them)
@@ -2142,10 +2219,9 @@ This will be slow for arcs and curves."]
                                                               MIDDLEONLYFLG])
 
 (SK.BUTTONEVENT.MARK
-  [LAMBDA (COPYFLG DELETEFLG)                                (* rrb "29-Dec-84 19:02")
-          
-          (* returns the mark that should be put on the points when they are selected.)
-
+  [LAMBDA (COPYFLG DELETEFLG)                                (* rrb "29-Dec-84 19:02")
+                                                             (* returns the mark that should be put 
+                                                             on the points when they are selected.)
     (COND
        (DELETEFLG (COND
                      (COPYFLG MOVESELECTIONMARK)
@@ -2153,60 +2229,53 @@ This will be slow for arcs and curves."]
        (T COPYSELECTIONMARK])
 
 (SK.BUILD.IMAGEOBJ
-  [LAMBDA (SCRELTS SKW CHARSONLYFLG)                     (* ; "Edited 20-Jun-92 15:28 by rmk:")
-                                                             (* builds an imageobj from the list 
-                                                           of screen elements.)
+  [LAMBDA (SCRELTS SKW CHARSONLYFLG)                         (* ; "Edited 20-Jun-92 15:28 by rmk:")
+                                                             (* builds an imageobj from the list of 
+                                                             screen elements.)
     (COND
        [CHARSONLYFLG                                         (* return only the text characters.)
         (PROG ((TEXTELTS
                 (bind GELT for LOCALSKELT in SCRELTS
-                   join (SELECTQ (fetch (GLOBALPART GTYPE) of (SETQ GELT
-                                                                           (fetch (SCREENELT
-                                                                                       GLOBALPART)
-                                                                              of LOCALSKELT)))
-                                (TEXT (LIST (LIST (fetch (TEXT LOCATIONLATLON)
-                                                     of (SETQ GELT (fetch (GLOBALPART 
+                   join (SELECTQ (fetch (GLOBALPART GTYPE) of (SETQ GELT (fetch (SCREENELT GLOBALPART
+                                                                                       ) of 
+                                                                                           LOCALSKELT
+                                                                                )))
+                            (TEXT (LIST (LIST (fetch (TEXT LOCATIONLATLON)
+                                                 of (SETQ GELT (fetch (GLOBALPART 
+                                                                             INDIVIDUALGLOBALPART)
+                                                                  of GELT)))
+                                              GELT)))
+                            (TEXTBOX (LIST (LIST (SK.TEXTBOX.TEXT.POSITION (SETQ GELT
+                                                                            (fetch (GLOBALPART 
                                                                                  INDIVIDUALGLOBALPART
-                                                                                         )
-                                                                          of GELT)))
-                                                  GELT)))
-                                (TEXTBOX (LIST (LIST (SK.TEXTBOX.TEXT.POSITION (SETQ GELT
-                                                                                (fetch
-                                                                                 (GLOBALPART 
-                                                                                 INDIVIDUALGLOBALPART
-                                                                                        )
-                                                                                   of GELT)))
-                                                     GELT)))
-                                (SKIMAGEOBJ                  (* grab the imageobj too.)
-                                            (LIST (LIST (create
-                                                         POSITION
-                                                         XCOORD _ [fetch (REGION LEFT)
-                                                                     of
-                                                                     (fetch (SKIMAGEOBJ 
-                                                                                 SKIMOBJ.GLOBALREGION
-                                                                                       )
-                                                                        of (SETQ GELT
-                                                                                (fetch
-                                                                                 (GLOBALPART 
-                                                                                 INDIVIDUALGLOBALPART
-                                                                                        )
-                                                                                   of GELT]
-                                                         YCOORD _ (fetch (REGION BOTTOM)
-                                                                     of (fetch (SKIMAGEOBJ
-                                                                                        
-                                                                                 SKIMOBJ.GLOBALREGION
-                                                                                        )
+                                                                                          )
                                                                                of GELT)))
-                                                        GELT)))
-                                NIL)))
+                                                 GELT)))
+                            (SKIMAGEOBJ                      (* grab the imageobj too.)
+                                        (LIST (LIST (create POSITION
+                                                           XCOORD ←
+                                                           [fetch (REGION LEFT)
+                                                              of (fetch (SKIMAGEOBJ 
+                                                                               SKIMOBJ.GLOBALREGION)
+                                                                    of (SETQ GELT (fetch (GLOBALPART
+                                                                                          
+                                                                                 INDIVIDUALGLOBALPART
+                                                                                          )
+                                                                                     of GELT]
+                                                           YCOORD ← (fetch (REGION BOTTOM)
+                                                                       of (fetch (SKIMAGEOBJ 
+                                                                                 SKIMOBJ.GLOBALREGION
+                                                                                        )
+                                                                             of GELT)))
+                                                    GELT)))
+                            NIL)))
                CHARSLST)                                     (* sort according to top from the 
-                                                           left.)
+                                                             left.)
               [SORT TEXTELTS (FUNCTION (LAMBDA (A B)
                                          (COND
-                                            [(GREATERP (fetch (POSITION YCOORD)
-                                                          of (SETQ A (CAR A)))
-                                                    (fetch (POSITION YCOORD)
-                                                       of (SETQ B (CAR B]
+                                            [(GREATERP (fetch (POSITION YCOORD) of (SETQ A
+                                                                                    (CAR A)))
+                                                    (fetch (POSITION YCOORD) of (SETQ B (CAR B]
                                             ((EQUAL (fetch (POSITION YCOORD) of A)
                                                     (fetch (POSITION YCOORD) of B))
                                              (LESSP (fetch (POSITION XCOORD) of A)
@@ -2214,78 +2283,68 @@ This will be slow for arcs and curves."]
               (RETURN (COND
                          ((EQUAL [CAR (LAST (SETQ CHARSLST
                                              (for TEXTELT in TEXTELTS
-                                                join     (* collect relevant parts.)
-                                                      (COND
-                                                         [(EQ 'SKIMAGEOBJ (fetch (
-                                                                                 INDIVIDUALGLOBALPART
-                                                                                      GTYPE)
-                                                                             of (CADR TEXTELT)))
+                                                join         (* collect relevant parts.)
+                                                     (COND
+                                                        [(EQ 'SKIMAGEOBJ (fetch (INDIVIDUALGLOBALPART
+                                                                                 GTYPE)
+                                                                            of (CADR TEXTELT)))
 
          (* copy image object so that copyfn is called.
-       This also copies the part of the image object that are sketch relevent 
-       unnecessarily but it keeps copyfn call in one place.)
+         This also copies the part of the image object that are sketch relevent 
+         unnecessarily but it keeps copyfn call in one place.)
 
-                                                          (LIST (COPY.IMAGE.OBJECT
-                                                                 (fetch (SKIMAGEOBJ SKIMAGEOBJ)
-                                                                    of (CADR TEXTELT]
-                                                         (T (SK.ADD.SPACES (fetch
-                                                                                (TEXT 
+                                                         (LIST (COPY.IMAGE.OBJECT (fetch (SKIMAGEOBJ
+                                                                                          SKIMAGEOBJ)
+                                                                                     of (CADR TEXTELT
+                                                                                              ]
+                                                        (T (SK.ADD.SPACES (fetch (TEXT 
                                                                                      LISTOFCHARACTERS
-                                                                                      )
-                                                                                  of (CADR 
-                                                                                              TEXTELT
-                                                                                               ]
+                                                                                       )
+                                                                             of (CADR TEXTELT]
                                  "
-")                                                           (* strip off the trailing EOL that 
-                                                           was added.)
+")                                                           (* strip off the trailing EOL that was 
+                                                             added.)
                           (BUTLAST CHARSLST))
                          (T CHARSLST]
        [(AND (NOT (CDR SCRELTS))
-             (EQ (fetch (GLOBALPART GTYPE) of (fetch (SCREENELT GLOBALPART)
-                                                         of (CAR SCRELTS)))
+             (EQ (fetch (GLOBALPART GTYPE) of (fetch (SCREENELT GLOBALPART) of (CAR SCRELTS)))
                  'SKIMAGEOBJ))
 
         (* ;; "RMK:  singelton imageobject.  Return an unencapsulated copy of it.  Don't need to worry about sketch transformations that might have applied, since they don't affect imageobjects.")
 
-        (COPY.IMAGE.OBJECT (fetch (SKIMAGEOBJ SKIMAGEOBJ) of (FETCH (GLOBALPART 
-                                                                                 INDIVIDUALGLOBALPART
-                                                                                       )
-                                                                        OF (fetch
-                                                                                (SCREENELT GLOBALPART
-                                                                                       )
-                                                                                  of (CAR SCRELTS
-                                                                                              ]
+        (COPY.IMAGE.OBJECT (fetch (SKIMAGEOBJ SKIMAGEOBJ) of (FETCH (GLOBALPART INDIVIDUALGLOBALPART)
+                                                                OF (fetch (SCREENELT GLOBALPART)
+                                                                      of (CAR SCRELTS]
        (T 
 
-         (* return a sketch image object. The sketch is translated to bring its lower 
-       left coordinate to 0,0 so that when it is put in a document it is in a 
-       canonical place. Maybe don't need to do this anymore.)
+         (* return a sketch image object. The sketch is translated to bring its lower left 
+         coordinate to 0,0 so that when it is put in a document it is in a canonical 
+         place. Maybe don't need to do this anymore.)
 
           (SKETCH.IMAGEOBJ [create SKETCH
                               using (INSURE.SKETCH SKW)
-                                    SKETCHNAME _ NIL SKETCHELTS _
+                                    SKETCHNAME ← NIL SKETCHELTS ←
                                     (SK.SORT.GELTS.BY.PRIORITY
                                      (bind GELT for LOCALSKELT in SCRELTS
                                         collect (COND
-                                                       ((EQ (fetch (GLOBALPART GTYPE)
-                                                               of (SETQ GELT (fetch
-                                                                                  (SCREENELT 
-                                                                                         GLOBALPART)
-                                                                                    of LOCALSKELT
-                                                                                  )))
-                                                            'SKIMAGEOBJ)
+                                                   ((EQ (fetch (GLOBALPART GTYPE)
+                                                           of (SETQ GELT (fetch (SCREENELT GLOBALPART
+                                                                                       ) of 
+                                                                                           LOCALSKELT
+                                                                                )))
+                                                        'SKIMAGEOBJ)
                                                              (* apply copy fn)
-                                                        (SK.COPY.IMAGEOBJ GELT))
-                                                       (T (COPY GELT]
+                                                    (SK.COPY.IMAGEOBJ GELT))
+                                                   (T (COPY GELT]
                  (SK.GLOBAL.REGION.OF.LOCAL.ELEMENTS SCRELTS (VIEWER.SCALE SKW))
                  (VIEWER.SCALE SKW)
                  (SK.GRIDFACTOR SKW])
 
 (SK.BUTTONEVENT.OVERP
-  [LAMBDA (COPYMODE DELETEMODE)                              (* rrb " 1-Feb-85 18:39")
-          
-          (* determines if this button event is over by looking at the keys that are held 
-          down. COPYMODE and DELETEMODE indicate the keystate at the entry point.)
+  [LAMBDA (COPYMODE DELETEMODE)                              (* rrb " 1-Feb-85 18:39")
+
+         (* determines if this button event is over by looking at the keys that are held 
+         down. COPYMODE and DELETEMODE indicate the keystate at the entry point.)
 
     (COND
        [DELETEMODE (AND (NOT (OR (.DELETEKEYDOWNP.)
@@ -2296,21 +2355,19 @@ This will be slow for arcs and curves."]
        (COPYMODE (NULL (.COPYKEYDOWNP.])
 
 (SK.BUTTONEVENT.SAME.KEYS
-  [LAMBDA (COPYMODE DELETEMODE)                              (* rrb " 1-Feb-85 18:39")
-          
-          (* determines if the same keys are held down now as were held down at the 
-          start. If not, the event will be stopped.
-          COPYMODE and DELETEMODE indicate the keystate at the entry point.)
+  [LAMBDA (COPYMODE DELETEMODE)                              (* rrb " 1-Feb-85 18:39")
+
+         (* determines if the same keys are held down now as were held down at the start.
+         If not, the event will be stopped. COPYMODE and DELETEMODE indicate the keystate 
+         at the entry point.)
 
     (COND
        [DELETEMODE (AND (OR (.DELETEKEYDOWNP.)
                             (.MOVEKEYDOWNP.))
                         (EQ COPYMODE (OR (.COPYKEYDOWNP.)
                                          (.MOVEKEYDOWNP.]
-       (COPYMODE 
-          
-          (* if we are not in delete mode, ignore the state of the delete key.)
-
+       (COPYMODE                                             (* if we are not in delete mode, 
+                                                             ignore the state of the delete key.)
               (.COPYKEYDOWNP.])
 )
 (DECLARE%: EVAL@COMPILE 
@@ -2328,18 +2385,17 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (SK.SEL.AND.CHANGE
-  [LAMBDA (W)                                                (* rrb "10-Dec-85 17:07")
-          
-          (* allows the user to select some elements and changes them.)
-
+  [LAMBDA (W)                                                (* rrb "10-Dec-85 17:07")
+                                                             (* allows the user to select some 
+                                                             elements and changes them.)
     (SK.CHANGE.THING (SK.SELECT.MULTIPLE.ITEMS W T NIL 'CHANGE)
            W])
 
 (SK.CHECK.WHENCHANGEDFN
-  [LAMBDA (VIEWER GELT PROPERTY NEWVALUE OLDVALUE)           (* rrb " 3-Jan-86 18:36")
-          
-          (* checks if the sketch has a whenchange fn and if so, calls it and interprets 
-          the result. Returns NIL if the change shouldn't be made.)
+  [LAMBDA (VIEWER GELT PROPERTY NEWVALUE OLDVALUE)           (* rrb " 3-Jan-86 18:36")
+
+         (* checks if the sketch has a whenchange fn and if so, calls it and interprets 
+         the result. Returns NIL if the change shouldn't be made.)
 
     (PROG ((SKETCH (INSURE.SKETCH VIEWER))
            RESULT WHENCHANGEDFN)
@@ -2353,10 +2409,10 @@ This will be slow for arcs and curves."]
              (T (RETURN GELT])
 
 (SK.CHECK.PRECHANGEFN
-  [LAMBDA (VIEWER SCRELT CHANGESPEC)                         (* rrb "27-Jun-86 15:51")
-          
-          (* checks if the sketch has a prechange fn and if so, calls it and interprets 
-          the result. Returns NIL if the change shouldn't be made.)
+  [LAMBDA (VIEWER SCRELT CHANGESPEC)                         (* rrb "27-Jun-86 15:51")
+
+         (* checks if the sketch has a prechange fn and if so, calls it and interprets the 
+         result. Returns NIL if the change shouldn't be made.)
 
     (PROG ((SKETCH (INSURE.SKETCH VIEWER))
            PRECHANGEFN)
@@ -2366,14 +2422,15 @@ This will be slow for arcs and curves."]
                              CHANGESPEC])
 
 (SK.CHANGE.ELT
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:46")
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:46")
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.CHANGE (KWOTE W))
            W])
 
 (SK.CHANGE.THING
-  [LAMBDA (ELTSTOCHANGE W)                                   (* rrb " 6-Jan-85 19:23")
-          
-          (* ELTSTOCHANGE is a sketch element that was selected for a CHANGE operation.)
+  [LAMBDA (ELTSTOCHANGE W)                                   (* rrb " 6-Jan-85 19:23")
+                                                             (* ELTSTOCHANGE is a sketch element 
+                                                             that was selected for a CHANGE 
+                                                             operation.)
                                                              (* Change according to the first one 
                                                              on the list)
     (PROG (FIRSTTYPE READCHANGEFN)                           (* find the first thing that has a 
@@ -2389,15 +2446,15 @@ This will be slow for arcs and curves."]
                          ELTSTOCHANGE W])
 
 (SKETCH.CHANGE.ELEMENTS
-  [LAMBDA (ELEMENTS CHANGESPECS SKETCHTOUPDATE ADDHISTORY?)  (* rrb " 2-Oct-86 16:38")
-          
-          (* Changes the elements ELEMENTS according to the change specifications 
-          CHANGESPECs. If SKETCHTOUPDATE is a viewer or a sketch.
-          it will be updated. If ADDHISTORY is non-NIL, the changes will be added to the 
-          history list of SKETCHTOUPDATE which should be a viewer.
-          CHANGESPECs can be a list of the line, brush, text or arc properties, e.g.
-          ((TEXT BOLD) (SIZE LARGER) (DASHING (3 1 2 1))%.
-          The changes will be applied to any elements for which they make sense.))
+  [LAMBDA (ELEMENTS CHANGESPECS SKETCHTOUPDATE ADDHISTORY?)  (* rrb " 2-Oct-86 16:38")
+
+         (* Changes the elements ELEMENTS according to the change specifications 
+         CHANGESPECs. If SKETCHTOUPDATE is a viewer or a sketch.
+         it will be updated. If ADDHISTORY is non-NIL, the changes will be added to the 
+         history list of SKETCHTOUPDATE which should be a viewer.
+         CHANGESPECs can be a list of the line, brush, text or arc properties, e.g.
+         ((TEXT BOLD) (SIZE LARGER) (DASHING (3 1 2 1))%.
+         The changes will be applied to any elements for which they make sense.))
 
     (PROG ((VIEWER (SK.VIEWER.FROM.SKETCH.ARG SKETCHTOUPDATE))
            RESULT)
@@ -2408,10 +2465,10 @@ This will be slow for arcs and curves."]
                          VIEWER NIL NIL (NULL ADDHISTORY?])
 
 (SK.APPLY.SINGLE.CHANGEFN
-  [LAMBDA (GELEMENT CHANGEFN CHANGESPEC VIEWER)              (* rrb " 2-Oct-86 10:49")
-          
-          (* applies a single change to an element.
-          It returns a change structure that contains the old and new elements.)
+  [LAMBDA (GELEMENT CHANGEFN CHANGESPEC VIEWER)              (* rrb " 2-Oct-86 10:49")
+
+         (* applies a single change to an element.
+         It returns a change structure that contains the old and new elements.)
 
     (COND
        ((EQ (fetch (GLOBALPART GTYPE) of GELEMENT)
@@ -2420,10 +2477,10 @@ This will be slow for arcs and curves."]
        (T (APPLY* CHANGEFN GELEMENT CHANGESPEC VIEWER])
 
 (SK.DO.CHANGESPECS
-  [LAMBDA (ELEMENT CHANGESPECS VIEWER)                       (* rrb " 2-Oct-86 16:31")
-          
-          (* returns a change structure that is the combined effects of applying all 
-          CHANGESPECS to ELEMENT.)
+  [LAMBDA (ELEMENT CHANGESPECS VIEWER)                       (* rrb " 2-Oct-86 16:31")
+
+         (* returns a change structure that is the combined effects of applying all 
+         CHANGESPECS to ELEMENT.)
                                                              (* for now, pretty kludgy)
     (PROG (NEWELEMENT)
           (COND
@@ -2436,22 +2493,21 @@ This will be slow for arcs and curves."]
                                                                                 NEWELT) of NEWELEMENT
                                                                                ))
                                                                        (T 
-          
-          (* before one of the change specs applies, use the original element.)
-
+                                                             (* before one of the change specs 
+                                                             applies, use the original element.)
                                                                           ELEMENT))
                                                         CHANGESPEC VIEWER)
                                                  NEWELEMENT)))
           (RETURN (AND NEWELEMENT (create SKHISTORYCHANGESPEC
-                                         OLDELT _ ELEMENT
-                                         NEWELT _ (fetch (SKHISTORYCHANGESPEC NEWELT) of NEWELEMENT)
-                                         PROPERTY _ CHANGESPECS])
+                                         OLDELT ← ELEMENT
+                                         NEWELT ← (fetch (SKHISTORYCHANGESPEC NEWELT) of NEWELEMENT)
+                                         PROPERTY ← CHANGESPECS])
 
 (SK.VIEWER.FROM.SKETCH.ARG
-  [LAMBDA (SKETCH)                                           (* rrb " 2-Oct-86 10:57")
-          
-          (* returns the viewer that changes should be reflected in when SKETCH is passed 
-          in as a sketch argument.)
+  [LAMBDA (SKETCH)                                           (* rrb " 2-Oct-86 10:57")
+
+         (* returns the viewer that changes should be reflected in when SKETCH is passed 
+         in as a sketch argument.)
 
     (COND
        ((NULL SKETCH)
@@ -2461,7 +2517,7 @@ This will be slow for arcs and curves."]
         (CAR (ALL.SKETCH.VIEWERS SKETCH])
 
 (SK.DO.CHANGESPEC1
-  [LAMBDA (ELEMENT CHANGESPEC VIEWER)                        (* rrb "23-Oct-86 14:21")
+  [LAMBDA (ELEMENT CHANGESPEC VIEWER)                        (* rrb "23-Oct-86 14:21")
                                                              (* applies a single change spec to a 
                                                              single element.)
     (PROG (CHANGEASPECTFN (CHANGEHOW (CADR CHANGESPEC)))
@@ -2476,10 +2532,9 @@ This will be slow for arcs and curves."]
                                        ((TEXT NEWFONT SETSIZE SAME FAMILY&SIZE) 
                                             (SETQ CHANGEHOW CHANGESPEC)
                                             (FUNCTION SK.CHANGE.TEXT))
-                                       (ADDPOINT 
-          
-          (* handle this specially because it shouldn't go inside of a group element.)
-
+                                       (ADDPOINT             (* handle this specially because it 
+                                                             shouldn't go inside of a group 
+                                                             element.)
                                                  (RETURN (SK.ADD.KNOT.TO.ELEMENT ELEMENT CHANGEHOW)))
                                        (BRUSHCOLOR (FUNCTION SK.CHANGE.BRUSH.COLOR))
                                        (FILLINGCOLOR (FUNCTION SK.CHANGE.FILLING.COLOR))
@@ -2489,26 +2544,26 @@ This will be slow for arcs and curves."]
           (RETURN (SK.APPLY.SINGLE.CHANGEFN ELEMENT CHANGEASPECTFN CHANGEHOW VIEWER])
 
 (SK.CHANGEFN
-  [LAMBDA (ELEMENTTYPE)                                      (* rrb " 8-Jan-86 17:15")
-          
-          (* returns the changefn for an element. The only one that isnt 
-          SK.ELEMENTS.CHANGEFN is image objects.)
+  [LAMBDA (ELEMENTTYPE)                                      (* rrb " 8-Jan-86 17:15")
+
+         (* returns the changefn for an element. The only one that isnt 
+         SK.ELEMENTS.CHANGEFN is image objects.)
                                                              (* the changefn should return a list 
                                                              of SKHISTORYCHANGESPEC instances.)
     (OR (fetch (SKETCHTYPE CHANGEFN) of (GETPROP ELEMENTTYPE 'SKETCHTYPE))
         (FUNCTION SK.DEFAULT.CHANGEFN])
 
 (SK.READCHANGEFN
-  [LAMBDA (ELEMENTTYPE)                                      (* rrb " 6-Jan-85 18:29")
-          
-          (* used to be (OR & (FUNCTION SK.DEFAULT.CHANGEFN)) If this really isn't 
-          necessary, clean out SK.DEFAULT.CHANGEFN and all the things only it calls.
-          If it is necessary, update it to include a readchangefn.)
+  [LAMBDA (ELEMENTTYPE)                                      (* rrb " 6-Jan-85 18:29")
+
+         (* used to be (OR & (FUNCTION SK.DEFAULT.CHANGEFN)) If this really isn't 
+         necessary, clean out SK.DEFAULT.CHANGEFN and all the things only it calls.
+         If it is necessary, update it to include a readchangefn.)
 
     (fetch (SKETCHTYPE READCHANGEFN) of (GETPROP ELEMENTTYPE 'SKETCHTYPE])
 
 (SK.DEFAULT.CHANGEFN
-  [LAMBDA (SCRNELT W FIELD)                                  (* rrb "14-May-84 15:57")
+  [LAMBDA (SCRNELT W FIELD)                                  (* rrb "14-May-84 15:57")
     (PROG ([FIELD (OR FIELD (SK.MENU.AND.RETURN.FIELD (fetch (SCREENELT GTYPE) of SCRNELT]
            (INDVELT (fetch (SCREENELT INDIVIDUALGLOBALPART) of SCRNELT))
            (NOSETVALUE "str")
@@ -2525,10 +2580,9 @@ This will be slow for arcs and curves."]
                                   (RECLOOK (fetch (SCREENELT GTYPE) of SCRNELT))
                                   'FETCH))
           [COND
-             ((LISTP FIELD)
-          
-          (* cadr is queryfunction which can do special input and return value checking.)
-
+             ((LISTP FIELD)                                  (* cadr is queryfunction which can do 
+                                                             special input and return value 
+                                                             checking.)
               (SETQ NEWPROPVALUE (APPLY* (CADR FIELD)
                                         SCRNELT FIELD W NOSETVALUE)))
              (T                                              (* have NIL returned be no change.)
@@ -2550,34 +2604,33 @@ This will be slow for arcs and curves."]
           (RETURN (fetch (SCREENELT GLOBALPART) of SCRNELT])
 
 (CHANGEABLEFIELDITEMS
-  [LAMBDA (ELEMENTTYPE)                                      (* rrb "11-May-84 15:49")
-          
-          (* returns the list of fields that element type allows to change.
-          Each field should be of the form (FIELDNAMELABEL
-          (QUOTE (FIELDNAME QUERYFN)) "helpstring") -
-          QUERYFN should be a function of four args%: the screen element being changed, 
-          the "field" returned from this function, the window the sketch is being 
-          displayed in, and a value to be returned if no change should be made.)
+  [LAMBDA (ELEMENTTYPE)                                      (* rrb "11-May-84 15:49")
+
+         (* returns the list of fields that element type allows to change.
+         Each field should be of the form (FIELDNAMELABEL
+         (QUOTE (FIELDNAME QUERYFN)) "helpstring") -
+         QUERYFN should be a function of four args%: the screen element being changed, the "field" 
+         returned from this function, the window the sketch is being displayed in, and a 
+         value to be returned if no change should be made.)
 
     (GETPROP ELEMENTTYPE 'CHANGEABLEFIELDITEMS])
 
 (SK.APPLY.CHANGE.COMMAND
-  [LAMBDA (CHANGEFN COMMAND SCRELTS SKW)                     (* rrb "24-Sep-86 16:23")
-          
-          (* applies a change command to the relevant elements in SCRELTS.)
-
+  [LAMBDA (CHANGEFN COMMAND SCRELTS SKW)                     (* rrb "24-Sep-86 16:23")
+                                                             (* applies a change command to the 
+                                                             relevant elements in SCRELTS.)
     (AND COMMAND (SK.DO.AND.RECORD.CHANGES (bind ELTCHANGE for SCRELT in SCRELTS
-                                              when (SETQ ELTCHANGE (SK.APPLY.CHANGE.COMMAND1 CHANGEFN 
+                                              when (SETQ ELTCHANGE (SK.APPLY.CHANGE.COMMAND1 CHANGEFN
                                                                           COMMAND SCRELT SKW))
                                               collect ELTCHANGE)
                         SKW])
 
 (SK.DO.AND.RECORD.CHANGES
-  [LAMBDA (LSTOFCHANGESPECS VIEWER DONTUPDATEPRIORITYFLG DONTDISPLAYFLG DONTHISTORYFLG)
+  [LAMBDA (LSTOFCHANGESPECS VIEWER DONTUPDATEPRIORITYFLG DONTDISPLAYFLG DONTHISTORYFLG)
                                                              (* rrb " 2-Oct-86 16:22")
-          
-          (* accepts a list of change specs and actually updates the sketch, viewer and 
-          history list.)
+
+         (* accepts a list of change specs and actually updates the sketch, viewer and 
+         history list.)
 
     (COND
        (LSTOFCHANGESPECS [SETQ LSTOFCHANGESPEC (COND
@@ -2587,9 +2640,9 @@ This will be slow for arcs and curves."]
                                                          (SORT.CHANGESPECS.BY.NEW.PRIORITY 
                                                                 LSTOFCHANGESPECS))
                                                   (T 
-          
-          (* order so that new priorities are assigned in the same relative order as the 
-          old ones.)
+
+         (* order so that new priorities are assigned in the same relative order as the 
+         old ones.)
 
                                                      (SORT.CHANGESPECS.BY.OLD.PRIORITY 
                                                             LSTOFCHANGESPECS]
@@ -2598,10 +2651,10 @@ This will be slow for arcs and curves."]
               T])
 
 (SK.APPLY.CHANGE.COMMAND1
-  [LAMBDA (CHANGEFN COMMAND SCRELT VIEWER)                   (* rrb "27-Jun-86 15:48")
-          
-          (* applies a change command to a single screen element.
-          Does the prechangefn and whenchangefn checks.)
+  [LAMBDA (CHANGEFN COMMAND SCRELT VIEWER)                   (* rrb "27-Jun-86 15:48")
+
+         (* applies a change command to a single screen element.
+         Does the prechangefn and whenchangefn checks.)
 
     (PROG (FNRESULT CHANGES)
           (COND
@@ -2611,9 +2664,9 @@ This will be slow for arcs and curves."]
              ((LISTP FNRESULT)                               (* result was a different change 
                                                              specification.)
               (SETQ COMMAND FNRESULT)))
-          
-          (* code was written to take a list but since prechangefn can change things at 
-          the elements level, every element is done individually.)
+
+         (* code was written to take a list but since prechangefn can change things at the 
+         elements level, every element is done individually.)
 
           (OR (SETQ CHANGES (APPLY* CHANGEFN (LIST SCRELT)
                                    VIEWER COMMAND))
@@ -2627,7 +2680,7 @@ This will be slow for arcs and curves."]
                        CHANGES])
 
 (SK.ELEMENTS.CHANGEFN
-  [LAMBDA (SCRELTS SKW HOW)                                  (* rrb " 2-Oct-86 16:18")
+  [LAMBDA (SCRELTS SKW HOW)                                  (* rrb " 2-Oct-86 16:18")
                                                              (* changefn for many sketch elements.)
     (PROG (CHANGEASPECTFN (CHANGEHOW (CADR HOW)))
           (OR (SETQ CHANGEASPECTFN (SELECTQ (CAR HOW)
@@ -2641,10 +2694,8 @@ This will be slow for arcs and curves."]
                                        ((TEXT NEWFONT SETSIZE SAME FAMILY&SIZE) 
                                             (SETQ CHANGEHOW HOW)
                                             (FUNCTION SK.CHANGE.TEXT))
-                                       (ADDPOINT 
-          
-          (* handle this specially because it only works on the first element.)
-
+                                       (ADDPOINT             (* handle this specially because it 
+                                                             only works on the first element.)
                                                  (RETURN (LIST (SK.ADD.KNOT.TO.ELEMENT
                                                                 (fetch (SCREENELT GLOBALPART)
                                                                    of (CAR SCRELTS))
@@ -2660,10 +2711,10 @@ This will be slow for arcs and curves."]
                                                         CHANGEASPECTFN CHANGEHOW SKW])
 
 (READ.POINT.TO.ADD
-  [LAMBDA (SCRELT SKVIEWER)                                  (* rrb "20-May-86 10:52")
-          
-          (* asks where a point should be added and where it should be.
-          Return a list (AfterPt NewPt))
+  [LAMBDA (SCRELT SKVIEWER)                                  (* rrb "20-May-86 10:52")
+
+         (* asks where a point should be added and where it should be.
+         Return a list (AfterPt NewPt))
 
     (PROG (AFTERPT NEWPT)
           (STATUSPRINT SKVIEWER "Select the point that the new point should follow.")
@@ -2678,20 +2729,18 @@ This will be slow for arcs and curves."]
                                    (SK.MAP.INPUT.PT.TO.GLOBAL NEWPT SKVIEWER])
 
 (GLOBAL.KNOT.FROM.LOCAL
-  [LAMBDA (LOCALKNOT SCRELT)                                 (* rrb "20-Nov-85 11:05")
-          
-          (* returns the global knot that corresponds to a local one.)
-
+  [LAMBDA (LOCALKNOT SCRELT)                                 (* rrb "20-Nov-85 11:05")
+                                                             (* returns the global knot that 
+                                                             corresponds to a local one.)
     (for LKNOT in (fetch (SCREENELT HOTSPOTS) of SCRELT) as GKNOT
        in (GETSKETCHELEMENTPROP (fetch (SCREENELT GLOBALPART) of SCRELT)
                  'DATA) when (EQUAL LKNOT LOCALKNOT) do (RETURN GKNOT])
 
 (SK.ADD.KNOT.TO.ELEMENT
-  [LAMBDA (GELTWITHKNOTS PTS)                                (* rrb "16-Jan-86 12:23")
-          
-          (* adds a point to a knot element. The point
-          (CADR PTS) is added after (CAR PTS))
-
+  [LAMBDA (GELTWITHKNOTS PTS)                                (* rrb "16-Jan-86 12:23")
+                                                             (* adds a point to a knot element.
+                                                             The point (CADR PTS) is added after
+                                                             (CAR PTS))
     (PROG ((OLDKNOTS (GETSKETCHELEMENTPROP GELTWITHKNOTS 'DATA))
            NEWKNOTS)
           [SETQ NEWKNOTS (for KNOT in OLDKNOTS join (COND
@@ -2699,37 +2748,37 @@ This will be slow for arcs and curves."]
                                                         (LIST KNOT (CADR PTS)))
                                                        (T (LIST KNOT]
           (RETURN (create SKHISTORYCHANGESPEC
-                         NEWELT _ (SK.CHANGE.ELEMENT.KNOTS GELTWITHKNOTS NEWKNOTS)
-                         OLDELT _ GELTWITHKNOTS
-                         PROPERTY _ 'DATA
-                         NEWVALUE _ NEWKNOTS
-                         OLDVALUE _ OLDKNOTS])
+                         NEWELT ← (SK.CHANGE.ELEMENT.KNOTS GELTWITHKNOTS NEWKNOTS)
+                         OLDELT ← GELTWITHKNOTS
+                         PROPERTY ← 'DATA
+                         NEWVALUE ← NEWKNOTS
+                         OLDVALUE ← OLDKNOTS])
 
 (SK.GROUP.CHANGEFN
-  [LAMBDA (GROUPELT CHANGEASPECTFN CHANGEHOW SKW)            (* rrb "10-Jan-86 12:15")
-          
-          (* maps a change function through all the elements of a group and returns a 
-          change spec event if it takes on any of them.)
+  [LAMBDA (GROUPELT CHANGEASPECTFN CHANGEHOW SKW)            (* rrb "10-Jan-86 12:15")
+
+         (* maps a change function through all the elements of a group and returns a 
+         change spec event if it takes on any of them.)
 
     (PROG (NEWELT)
           (SETQ NEWELT (SK.GROUP.CHANGEFN1 GROUPELT CHANGEASPECTFN CHANGEHOW SKW))
           (OR NEWELT (RETURN))
           (RETURN (create SKHISTORYCHANGESPEC
-                         NEWELT _ NEWELT
-                         OLDELT _ GROUPELT
-                         PROPERTY _ 'DATA
-                         NEWVALUE _ (fetch (GROUP LISTOFGLOBALELTS) of (fetch (GLOBALPART 
+                         NEWELT ← NEWELT
+                         OLDELT ← GROUPELT
+                         PROPERTY ← 'DATA
+                         NEWVALUE ← (fetch (GROUP LISTOFGLOBALELTS) of (fetch (GLOBALPART 
                                                                                  INDIVIDUALGLOBALPART
                                                                                      ) of NEWELT))
-                         OLDVALUE _ (fetch (GROUP LISTOFGLOBALELTS) of (fetch (GLOBALPART 
+                         OLDVALUE ← (fetch (GROUP LISTOFGLOBALELTS) of (fetch (GLOBALPART 
                                                                                  INDIVIDUALGLOBALPART
                                                                                      ) of GROUPELT])
 
 (SK.GROUP.CHANGEFN1
-  [LAMBDA (GROUPELT CHANGEASPECTFN CHANGEHOW SKW)            (* rrb "27-Jun-86 16:19")
-          
-          (* maps a change function through all the elements of a group and returns a new 
-          element if it takes on any of them.)
+  [LAMBDA (GROUPELT CHANGEASPECTFN CHANGEHOW SKW)            (* rrb "27-Jun-86 16:19")
+
+         (* maps a change function through all the elements of a group and returns a new 
+         element if it takes on any of them.)
 
     (PROG ((OLDSUBELTS (fetch (GROUP LISTOFGLOBALELTS) of (fetch (GLOBALPART INDIVIDUALGLOBALPART)
                                                              of GROUPELT)))
@@ -2740,14 +2789,14 @@ This will be slow for arcs and curves."]
                                                           ((EQ (fetch (GLOBALPART GTYPE) of SUBELT)
                                                                'GROUP)
                                                              (* handle a group by propagating it)
-                                                           (SK.GROUP.CHANGEFN1 SUBELT CHANGEASPECTFN 
+                                                           (SK.GROUP.CHANGEFN1 SUBELT CHANGEASPECTFN
                                                                   CHANGEHOW SKW))
                                                           (T 
-          
-          (* individual change functions return a change spec event, pull the new element 
-          out of it. This throws aways a lot of information about what was changed but I 
-          don't know any good way to save it so that it can be passed on undoing so don't 
-          save it.)
+
+         (* individual change functions return a change spec event, pull the new element 
+         out of it. This throws aways a lot of information about what was changed but I 
+         don't know any good way to save it so that it can be passed on undoing so don't 
+         save it.)
 
                                                              (fetch (SKHISTORYCHANGESPEC NEWELT)
                                                                 of (APPLY* CHANGEASPECTFN SUBELT 
@@ -2756,23 +2805,21 @@ This will be slow for arcs and curves."]
                                           NEWELT]
           (OR CHANGEDFLG (RETURN))
           [SETQ NEWSUBELTS (for OLDSUBELT in OLDSUBELTS as NEWSUBELT in NEWSUBELTS
-                              collect 
-          
-          (* copy any unchanged elements so that user programs don't have to worry about 
-          them.)
-
+                              collect                        (* copy any unchanged elements so that 
+                                                             user programs don't have to worry 
+                                                             about them.)
                                     (OR NEWSUBELT (SK.COPY.GLOBAL.ELEMENT OLDSUBELT]
           (RETURN (SK.UPDATE.GROUP.AFTER.CHANGE (create GLOBALPART
-                                                       COMMONGLOBALPART _ (fetch (GLOBALPART 
+                                                       COMMONGLOBALPART ← (fetch (GLOBALPART 
                                                                                      COMMONGLOBALPART
                                                                                         )
                                                                              of GROUPELT)
-                                                       INDIVIDUALGLOBALPART _
+                                                       INDIVIDUALGLOBALPART ←
                                                        (create GROUP using (fetch (GLOBALPART 
                                                                                  INDIVIDUALGLOBALPART
                                                                                          )
                                                                               of GROUPELT)
-                                                                           LISTOFGLOBALELTS _ 
+                                                                           LISTOFGLOBALELTS ← 
                                                                            NEWSUBELTS])
 )
 (DECLARE%: DONTCOPY 
@@ -2789,20 +2836,16 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (ADD.ELEMENT.TO.SKETCH
-  [LAMBDA (GELT SKETCH)                                  (* rrb "23-Jun-87 13:29")
+  [LAMBDA (GELT SKETCH)                                      (* rrb "23-Jun-87 13:29")
                                                              (* changes the global sketch)
     (PROG [(REALSKETCH (INSURE.SKETCH SKETCH))
            (ELTPRI (\GETSKETCHELEMENTPROP1 GELT 'PRI]
           [COND
              ((EQ (fetch (GLOBALPART GTYPE) of GELT)
-                  'SKIMAGEOBJ)
-          
-          (* call the wheninsertedfn for this imageobj if there is one.)
-
-              (PROG ((IMOBJ (fetch (SKIMAGEOBJ SKIMAGEOBJ) of (fetch (GLOBALPART 
-                                                                                 INDIVIDUALGLOBALPART
-                                                                                        )
-                                                                         of GELT)))
+                  'SKIMAGEOBJ)                               (* call the wheninsertedfn for this 
+                                                             imageobj if there is one.)
+              (PROG ((IMOBJ (fetch (SKIMAGEOBJ SKIMAGEOBJ) of (fetch (GLOBALPART INDIVIDUALGLOBALPART
+                                                                            ) of GELT)))
                      DATUM)
                     (COND
                        ((AND (SETQ DATUM (IMAGEOBJPROP IMOBJ 'WHENINSERTEDFN))
@@ -2811,10 +2854,8 @@ This will be slow for arcs and curves."]
                                NIL SKETCH)))
                     (RETURN]
           (COND
-             ((NULL ELTPRI)
-          
-          (* give the element a priority and put it at the end)
-
+             ((NULL ELTPRI)                                  (* give the element a priority and put 
+                                                             it at the end)
               (SK.SET.ELEMENT.PRIORITY GELT (SK.POP.NEXT.PRIORITY REALSKETCH))
               (TCONC (fetch (SKETCH SKETCHTCELL) of REALSKETCH)
                      GELT))
@@ -2822,7 +2863,7 @@ This will be slow for arcs and curves."]
           (SK.MARK.DIRTY REALSKETCH])
 
 (ADD.SKETCH.VIEWER
-  [LAMBDA (SKETCH VIEWER)                                    (* rrb " 8-APR-83 17:56")
+  [LAMBDA (SKETCH VIEWER)                                    (* rrb " 8-APR-83 17:56")
                                                              (* adds VIEWER as a viewer of SKETCH.)
     (PROG (VIEWERS)
           (COND
@@ -2834,7 +2875,7 @@ This will be slow for arcs and curves."]
                                          ALL.SKETCHES])
 
 (REMOVE.SKETCH.VIEWER
-  [LAMBDA (SKETCH VIEWER)                                    (* rrb "26-Apr-85 16:56")
+  [LAMBDA (SKETCH VIEWER)                                    (* rrb "26-Apr-85 16:56")
                                                              (* removes VIEWER as a viewer of 
                                                              SKETCH.)
     (PROG (VIEWERS)
@@ -2845,10 +2886,9 @@ This will be slow for arcs and curves."]
                   (SETQ ALL.SKETCHES (REMOVE VIEWERS ALL.SKETCHES])
 
 (ALL.SKETCH.VIEWERS
-  [LAMBDA (SKETCH)                                           (* rrb " 8-APR-83 14:20")
-          
-          (* returns the list of all active viewers of a sketch)
-
+  [LAMBDA (SKETCH)                                           (* rrb " 8-APR-83 14:20")
+                                                             (* returns the list of all active 
+                                                             viewers of a sketch)
     (CDR (VIEWER.BUCKET SKETCH])
 
 (SKETCH.ALL.VIEWERS
@@ -2857,65 +2897,58 @@ This will be slow for arcs and curves."]
     (ALL.SKETCH.VIEWERS (INSURE.SKETCH SKETCH])
 
 (VIEWER.BUCKET
-  [LAMBDA (SKETCH)                                           (* rrb " 8-APR-83 14:20")
+  [LAMBDA (SKETCH)                                           (* rrb " 8-APR-83 14:20")
     (FASSOC SKETCH ALL.SKETCHES])
 
 (ELT.INSIDE.REGION?
-  [LAMBDA (GLOBALPART WORLDREG)                              (* rrb " 4-AUG-83 14:51")
-          
-          (* determines if any part of an element is inside the region WORLDREG)
-
+  [LAMBDA (GLOBALPART WORLDREG)                              (* rrb " 4-AUG-83 14:51")
+                                                             (* determines if any part of an 
+                                                             element is inside the region WORLDREG)
     (APPLY* (SK.INSIDEFN (fetch (GLOBALPART GTYPE) of GLOBALPART))
            GLOBALPART WORLDREG])
 
 (ELT.INSIDE.SKWP
-  [LAMBDA (GLOBALPART SKETCHW)                               (* rrb "25-Nov-85 17:46")
-          
-          (* determines if a global element is in the world region of a map window.)
-
+  [LAMBDA (GLOBALPART SKETCHW)                               (* rrb "25-Nov-85 17:46")
+                                                             (* determines if a global element is 
+                                                             in the world region of a map window.)
     (ELT.INSIDE.REGION? GLOBALPART (SKETCH.REGION.VIEWED SKETCHW])
 
 (SCALE.FROM.SKW
-  [LAMBDA (WINDOW)                                           (* rrb "11-MAR-83 11:52")
+  [LAMBDA (WINDOW)                                           (* rrb "11-MAR-83 11:52")
                                                              (* gets the scale of a sketch window.)
     (WINDOWPROP WINDOW 'SCALE])
 
 (SK.ADDELT.TO.WINDOW
-  [LAMBDA (PELT SKETCHW)                                     (* rrb "10-Mar-86 14:56")
-          
-          (* adds a picture element to a sketch window.
-          Returns the element that was added.)
-
+  [LAMBDA (PELT SKETCHW)                                     (* rrb "10-Mar-86 14:56")
+                                                             (* adds a picture element to a sketch 
+                                                             window. Returns the element that was 
+                                                             added.)
     (COND
        (PELT (SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH (WINDOWPROP SKETCHW 'SKETCHSPECS)
                     PELT)
              [PROG ((CACHE (SK.HOTSPOT.CACHE SKETCHW)))
                    (COND
-                      (CACHE 
-          
-          (* if there is a cache, adding an element will change it)
-
+                      (CACHE                                 (* if there is a cache, adding an 
+                                                             element will change it)
                              (SK.ADD.HOTSPOTS.TO.CACHE1 PELT CACHE))
-                      (T 
-          
-          (* if this is the first, must set the window property too.)
-
+                      (T                                     (* if this is the first, must set the 
+                                                             window property too.)
                          (SK.SET.HOTSPOT.CACHE SKETCHW (SK.ADD.HOTSPOTS.TO.CACHE1 PELT CACHE]
              PELT])
 
 (SK.CALC.REGION.VIEWED
-  [LAMBDA (WINDOW SCALE)                                     (* rrb "29-APR-83 08:37")
+  [LAMBDA (WINDOW SCALE)                                     (* rrb "29-APR-83 08:37")
                                                              (* returns the region of the sketch 
                                                              visible in window.)
     (UNSCALE.REGION (DSPCLIPPINGREGION NIL WINDOW)
            SCALE])
 
 (SK.DRAWFIGURE
-  [LAMBDA (SCREENELT STREAM REGION SCALE)                    (* rrb "30-Aug-84 14:31")
-          
-          (* draws an element of a sketch in a window.
-          Makes sure the scale of the current drawing is with in the limits of the 
-          element. Returns SCREENELT)
+  [LAMBDA (SCREENELT STREAM REGION SCALE)                    (* rrb "30-Aug-84 14:31")
+
+         (* draws an element of a sketch in a window.
+         Makes sure the scale of the current drawing is with in the limits of the element.
+         Returns SCREENELT)
 
     (PROG (GLOBALPART)
           [COND
@@ -2933,20 +2966,20 @@ This will be slow for arcs and curves."]
           (RETURN SCREENELT])
 
 (SK.DRAWFIGURE1
-  [LAMBDA (ELT SKW REGION)                                   (* rrb "14-Sep-84 16:59")
+  [LAMBDA (ELT SKW REGION)                                   (* rrb "14-Sep-84 16:59")
                                                              (* displays a sketch element in a 
                                                              window)
     (APPLY* (SK.DRAWFN (fetch (SCREENELT GTYPE) of ELT))
            ELT SKW REGION])
 
 (SK.LOCAL.FROM.GLOBAL
-  [LAMBDA (GELT SKSTREAM SCALE)                              (* rrb "11-Jul-86 15:56")
-          
-          (* returns the element instance of the global element GELT expanded into the 
-          window SKW.)
-          
-          (* SKSTREAM can be deleted from call once TEXT.EXPANDFN no longer needs to 
-          distinquish INTERPRESS stream from windows.)
+  [LAMBDA (GELT SKSTREAM SCALE)                              (* rrb "11-Jul-86 15:56")
+                                                             (* returns the element instance of the 
+                                                             global element GELT expanded into the 
+                                                             window SKW.)
+
+         (* SKSTREAM can be deleted from call once TEXT.EXPANDFN no longer needs to 
+         distinquish INTERPRESS stream from windows.)
 
     (PROG ((SCRELT (APPLY* (SK.EXPANDFN (fetch (GLOBALPART GTYPE) of GELT))
                           GELT
@@ -2962,10 +2995,10 @@ This will be slow for arcs and curves."]
           (RETURN SCRELT])
 
 (SKETCH.REGION.VIEWED
-  [LAMBDA (VIEWER NEWREGION)                             (* rrb "23-Apr-87 12:20")
-          
-          (* returns the region in sketch coordinates of the area visible in SKETCHW.)
-
+  [LAMBDA (VIEWER NEWREGION)                                 (* rrb "23-Apr-87 12:20")
+                                                             (* returns the region in sketch 
+                                                             coordinates of the area visible in 
+                                                             SKETCHW.)
     (COND
        [(IMAGEOBJP VIEWER)                                   (* it is a sketch image object)
         (PROG ([SK? (LISTP (IMAGEOBJPROP VIEWER 'OBJECTDATUM]
@@ -2973,62 +3006,57 @@ This will be slow for arcs and curves."]
               (COND
                  [(type? SKETCH (FETCH (SKETCHIMAGEOBJ SKIO.SKETCH) OF SK?))
                   (RETURN (PROG1 (fetch (SKETCHIMAGEOBJ SKIO.REGION) of SK?)
-                                 (COND
-                                    (NEWREGION (COND
-                                                  ((REGIONP NEWREGION)
-                                                   (replace (SKETCHIMAGEOBJ SKIO.REGION)
-                                                      of SK? with NEWREGION))
-                                                  ((SETQ NEWVIEW (SKETCH.VIEW.FROM.NAME NEWREGION 
-                                                                        VIEWER))
-                                                   (replace (SKETCHIMAGEOBJ SKIO.REGION)
-                                                      of SK? with NEWVIEW))
-                                                  ((EQ NEWREGION 'HOME)
-          
-          (* change scale to 1.0 and set lower left of region viewed to
-        (0,0)%.)
-
-                                                   NIL)
-                                                  (T 
-          
-          (* HOME and named views aren't supported for image object sketches.)
-
-                                                     (\ILLEGAL.ARG NEWREGION]
+                              [COND
+                                 (NEWREGION (COND
+                                               ((REGIONP NEWREGION)
+                                                (replace (SKETCHIMAGEOBJ SKIO.REGION) of SK?
+                                                   with NEWREGION))
+                                               ((SETQ NEWVIEW (SKETCH.VIEW.FROM.NAME NEWREGION VIEWER
+                                                                     ))
+                                                (replace (SKETCHIMAGEOBJ SKIO.REGION) of SK?
+                                                   with NEWVIEW))
+                                               ((EQ NEWREGION 'HOME)
+                                                             (* change scale to 1.0 and set lower 
+                                                             left of region viewed to
+                                                             (0,0)%.)
+                                                NIL)
+                                               (T            (* HOME and named views aren't 
+                                                             supported for image object sketches.)
+                                                  (\ILLEGAL.ARG NEWREGION])]
                  (T (ERROR "not a sketch image object" VIEWER]
        [(WINDOWP VIEWER)
         (PROG1 (WINDOWPROP VIEWER 'REGION.VIEWED)
-               (COND
-                  (NEWREGION (PROG (NEWVIEW)
-                                   (RETURN (COND
-                                              ((REGIONP NEWREGION)
-                                               (SKETCH.GLOBAL.REGION.ZOOM VIEWER NEWREGION))
-                                              ((EQ NEWREGION 'HOME)
-                                               (SKETCH.HOME VIEWER))
-                                              ((SETQ NEWVIEW (SKETCH.VIEW.FROM.NAME NEWREGION 
-                                                                    VIEWER))
-                                               (SK.MOVE.TO.VIEW VIEWER NEWVIEW))
-                                              (T (\ILLEGAL.ARG NEWREGION]
+            [COND
+               (NEWREGION (PROG (NEWVIEW)
+                                (RETURN (COND
+                                           ((REGIONP NEWREGION)
+                                            (SKETCH.GLOBAL.REGION.ZOOM VIEWER NEWREGION))
+                                           ((EQ NEWREGION 'HOME)
+                                            (SKETCH.HOME VIEWER))
+                                           ((SETQ NEWVIEW (SKETCH.VIEW.FROM.NAME NEWREGION VIEWER))
+                                            (SK.MOVE.TO.VIEW VIEWER NEWVIEW))
+                                           (T (\ILLEGAL.ARG NEWREGION])]
        (T (\ILLEGAL.ARG VIEWER])
 
 (SKETCH.VIEW.FROM.NAME
-  [LAMBDA (VIEWNAME SKETCHW)                                 (* rrb "25-Nov-85 17:55")
-          
-          (* returns the view structure for a view given its name.)
-
+  [LAMBDA (VIEWNAME SKETCHW)                                 (* rrb "25-Nov-85 17:55")
+                                                             (* returns the view structure for a 
+                                                             view given its name.)
     (for SAVEDVIEW in (GETSKETCHPROP (INSURE.SKETCH SKETCHW)
                              'VIEWS) when (EQUAL VIEWNAME (fetch (SKETCHVIEW VIEWNAME) of SAVEDVIEW))
        do (RETURN SAVEDVIEW])
 
 (SK.UPDATE.REGION.VIEWED
-  [LAMBDA (SKW)                                              (* rrb "11-Jul-86 15:51")
+  [LAMBDA (SKW)                                              (* rrb "11-Jul-86 15:51")
                                                              (* updates the REGION.VIEWED property 
                                                              of a window.)
     (WINDOWPROP SKW 'REGION.VIEWED (SK.CALC.REGION.VIEWED SKW (VIEWER.SCALE SKW])
 
 (SKETCH.ADD.AND.DISPLAY
-  [LAMBDA (GELT SKETCHW DONTCLEARCURSOR)                     (* rrb "14-Nov-84 17:12")
-          
-          (* adds a new element to a sketch window and handles propagation to all other 
-          figure windows)
+  [LAMBDA (GELT SKETCHW DONTCLEARCURSOR)                     (* rrb "14-Nov-84 17:12")
+
+         (* adds a new element to a sketch window and handles propagation to all other 
+         figure windows)
 
     (COND
        (GELT (SK.ADD.HISTEVENT 'ADD (LIST GELT)
@@ -3036,10 +3064,9 @@ This will be slow for arcs and curves."]
              (SK.ADD.ELEMENT GELT SKETCHW DONTCLEARCURSOR])
 
 (SKETCH.ADD.AND.DISPLAY1
-  [LAMBDA (GELT SKETCHW SCALE NODISPLAYFLG)                  (* rrb "11-Jul-86 15:51")
-          
-          (* displays a sketch element and adds it to the window.)
-
+  [LAMBDA (GELT SKETCHW SCALE NODISPLAYFLG)                  (* rrb "11-Jul-86 15:51")
+                                                             (* displays a sketch element and adds 
+                                                             it to the window.)
     (COND
        (GELT (COND
                 (NODISPLAYFLG (SK.ADD.ITEM GELT SKETCHW))
@@ -3047,19 +3074,18 @@ This will be slow for arcs and curves."]
                           SKETCHW NIL (OR SCALE (VIEWER.SCALE SKETCHW])
 
 (SK.ADD.ITEM
-  [LAMBDA (GELT SKETCHW)                                     (* rrb "10-APR-83 13:38")
-          
-          (* adds a global element to a window. Returns the local element that was 
-          actually added.)
+  [LAMBDA (GELT SKETCHW)                                     (* rrb "10-APR-83 13:38")
+
+         (* adds a global element to a window. Returns the local element that was actually 
+         added.)
 
     (SK.ADDELT.TO.WINDOW (SK.LOCAL.FROM.GLOBAL GELT SKETCHW)
            SKETCHW])
 
 (SKETCHW.ADD.INSTANCE
-  [LAMBDA (TYPE SKW)                                         (* rrb "14-Nov-84 17:08")
-          
-          (* reads an instance of type TYPE from the user and displays it in SKW.)
-
+  [LAMBDA (TYPE SKW)                                         (* rrb "14-Nov-84 17:08")
+                                                             (* reads an instance of type TYPE from 
+                                                             the user and displays it in SKW.)
     (PROG ((ELT (SK.INPUT TYPE SKW)))
           (AND ELT (SKETCH.ADD.AND.DISPLAY ELT SKW))
           (RETURN ELT])
@@ -3072,14 +3098,14 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (SK.SEL.AND.DELETE
-  [LAMBDA (W)                                                (* rrb "10-Dec-85 17:08")
+  [LAMBDA (W)                                                (* rrb "10-Dec-85 17:08")
                                                              (* lets the user select elements and 
                                                              deletes them)
     (SK.DELETE.ELEMENT (SK.SELECT.MULTIPLE.ITEMS W T NIL 'DELETE)
            W])
 
 (SK.ERASE.AND.DELETE.ITEM
-  [LAMBDA (SELELT SKW NODISPLAYFLG)                          (* rrb "30-Jul-85 15:36")
+  [LAMBDA (SELELT SKW NODISPLAYFLG)                          (* rrb "30-Jul-85 15:36")
                                                              (* removes a sketch element from a 
                                                              viewer.)
     (COND
@@ -3087,11 +3113,11 @@ This will be slow for arcs and curves."]
               (SK.DELETE.ITEM SELELT SKW])
 
 (REMOVE.ELEMENT.FROM.SKETCH
-  [LAMBDA (GELT SKETCH INSIDEGROUPFLG)                       (* rrb "26-Sep-86 13:24")
-          
-          (* changes the global sketch Returns the element or the group element 
-          containing the element if the element was found in the sketch.
-          If INSIDEGROUPFLG is T, it will go inside of groups.)
+  [LAMBDA (GELT SKETCH INSIDEGROUPFLG)                       (* rrb "26-Sep-86 13:24")
+
+         (* changes the global sketch Returns the element or the group element containing 
+         the element if the element was found in the sketch.
+         If INSIDEGROUPFLG is T, it will go inside of groups.)
 
     (PROG ((SKETCHDATA (INSURE.SKETCH SKETCH)))
           (COND
@@ -3108,10 +3134,10 @@ This will be slow for arcs and curves."]
              (T (RETURN NIL])
 
 (SK.DELETE.ELEMENT
-  [LAMBDA (ELTSTODEL SKETCHW ELTSFORHISTORY)                 (* rrb "30-Dec-85 16:19")
-          
-          (* deletes a list of element to a sketch window and handles propagation to all 
-          other figure windows)
+  [LAMBDA (ELTSTODEL SKETCHW ELTSFORHISTORY)                 (* rrb "30-Dec-85 16:19")
+
+         (* deletes a list of element to a sketch window and handles propagation to all 
+         other figure windows)
 
     (SKED.CLEAR.SELECTION SKETCHW)
     (AND ELTSTODEL (SK.DELETE.ELEMENT2 (for SCRELT in ELTSTODEL collect (fetch (SCREENELT GLOBALPART)
@@ -3119,10 +3145,10 @@ This will be slow for arcs and curves."]
                           SKETCHW ELTSFORHISTORY])
 
 (SK.DELETE.ELEMENT2
-  [LAMBDA (GELTSTODEL SKETCHW ELTSFORHISTORY)                (* rrb "30-Dec-85 16:18")
-          
-          (* deletes a list of global elements and adds it to the history list depending 
-          upon ELTSFORHISTORY)
+  [LAMBDA (GELTSTODEL SKETCHW ELTSFORHISTORY)                (* rrb "30-Dec-85 16:18")
+
+         (* deletes a list of global elements and adds it to the history list depending 
+         upon ELTSFORHISTORY)
 
     (PROG (DELETEDELTS)
           (SETQ DELETEDELTS (SK.CHECK.WHENDELETEDFN SKETCHW GELTSTODEL))
@@ -3134,15 +3160,14 @@ This will be slow for arcs and curves."]
           (RETURN DELETEDELTS])
 
 (SK.DELETE.KNOT
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:47")
-          
-          (* lets the user select a knot in a curve or wire and deletes it.)
-
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:47")
+                                                             (* lets the user select a knot in a 
+                                                             curve or wire and deletes it.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.DELETE.KNOT (KWOTE W))
            W])
 
 (SK.SEL.AND.DELETE.KNOT
-  [LAMBDA (W)                                                (* rrb "10-Dec-85 17:03")
+  [LAMBDA (W)                                                (* rrb "10-Dec-85 17:03")
                                                              (* lets the user select a knot and 
                                                              deletes it.)
     (PROG [(KNOTELTS (SUBSET (LOCALSPECS.FROM.VIEWER W)
@@ -3160,7 +3185,7 @@ This will be slow for arcs and curves."]
                  KNOTELTS W])
 
 (SK.DELETE.ELEMENT.KNOT
-  [LAMBDA (LOCALKNOT SCRELTS SKW)                            (* rrb " 9-Jan-86 19:45")
+  [LAMBDA (LOCALKNOT SCRELTS SKW)                            (* rrb " 9-Jan-86 19:45")
                                                              (* deletes a knot from a curve or wire 
                                                              element.)
     (SKED.CLEAR.SELECTION SKW)
@@ -3196,11 +3221,11 @@ This will be slow for arcs and curves."]
                                                              screen)
                               (SK.UPDATE.ELEMENTS (SETQ CHANGES
                                                    (CONS (create SKHISTORYCHANGESPEC
-                                                                NEWELT _ NEWELT
-                                                                OLDELT _ GLOBALPART
-                                                                PROPERTY _ 'DATA
-                                                                NEWVALUE _ NEWKNOTS
-                                                                OLDVALUE _ GLOBALKNOTS)))
+                                                                NEWELT ← NEWELT
+                                                                OLDELT ← GLOBALPART
+                                                                PROPERTY ← 'DATA
+                                                                NEWVALUE ← NEWKNOTS
+                                                                OLDVALUE ← GLOBALKNOTS)))
                                      SKW)
                               (SK.ADD.HISTEVENT 'CHANGE CHANGES SKW]
                          (T                                  (* delete the whole element.)
@@ -3208,11 +3233,11 @@ This will be slow for arcs and curves."]
                                    SKW])
 
 (SK.CHECK.WHENDELETEDFN
-  [LAMBDA (VIEWER GELTS)                                     (* rrb "30-Dec-85 16:15")
-          
-          (* checks if the sketch has a when deleted fn and if so, creates the list of 
-          global elements and interprets the result.
-          Returns a list of the elements that should be deleted.)
+  [LAMBDA (VIEWER GELTS)                                     (* rrb "30-Dec-85 16:15")
+
+         (* checks if the sketch has a when deleted fn and if so, creates the list of 
+         global elements and interprets the result.
+         Returns a list of the elements that should be deleted.)
 
     (PROG ((SKETCH (INSURE.SKETCH VIEWER))
            RESULT DELETEFN)
@@ -3228,10 +3253,9 @@ This will be slow for arcs and curves."]
              (T (RETURN GELTS])
 
 (SK.CHECK.PREEDITFN
-  [LAMBDA (VIEWER OLDELT)                                    (* rrb " 9-Dec-85 11:52")
-          
-          (* checks if the sketch has a preedit fn and if so, calls it)
-
+  [LAMBDA (VIEWER OLDELT)                                    (* rrb " 9-Dec-85 11:52")
+                                                             (* checks if the sketch has a preedit 
+                                                             fn and if so, calls it)
     (PROG ((SKETCH (INSURE.SKETCH VIEWER))
            PREEDITFN)
           (COND
@@ -3241,20 +3265,20 @@ This will be slow for arcs and curves."]
                        'DON'T])
 
 (SK.CHECK.END.INITIAL.EDIT
-  [LAMBDA (VIEWER NEWELT)                                    (* rrb "15-Jan-86 15:20")
-          
-          (* called when the edit of a newly created text element is ended.
-          Calls the when changed fn.)
+  [LAMBDA (VIEWER NEWELT)                                    (* rrb "15-Jan-86 15:20")
+
+         (* called when the edit of a newly created text element is ended.
+         Calls the when changed fn.)
 
     (SK.CHECK.WHENCHANGEDFN VIEWER NEWELT 'DATA NIL (fetch (TEXT LISTOFCHARACTERS)
                                                        of (fetch (GLOBALPART INDIVIDUALGLOBALPART)
                                                              of NEWELT])
 
 (SK.CHECK.WHENPOINTDELETEDFN
-  [LAMBDA (VIEWER SCRELT CONTROLPOINT)                       (* rrb " 3-Jan-86 15:32")
-          
-          (* checks if the sketch has a prechange fn and if so, calls it and interprets 
-          the result. Returns NIL if the point should not be deleted.)
+  [LAMBDA (VIEWER SCRELT CONTROLPOINT)                       (* rrb " 3-Jan-86 15:32")
+
+         (* checks if the sketch has a prechange fn and if so, calls it and interprets the 
+         result. Returns NIL if the point should not be deleted.)
 
     (PROG ((SKETCH (INSURE.SKETCH VIEWER))
            RESULT PRECHANGEFN)
@@ -3269,21 +3293,21 @@ This will be slow for arcs and curves."]
              (T (RETURN SCRELT])
 
 (SK.ERASE.ELT
-  [LAMBDA (ELT WINDOW REGION)                                (* rrb "30-Aug-86 15:08")
+  [LAMBDA (ELT WINDOW REGION)                                (* rrb "30-Aug-86 15:08")
                                                              (* erases a sketch element)
     (DSPOPERATION 'ERASE WINDOW)
     (SK.DRAWFIGURE ELT WINDOW REGION (VIEWER.SCALE WINDOW))
     (DSPOPERATION 'PAINT WINDOW])
 
 (SK.DELETE.ELT
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:48")
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:48")
                                                              (* lets the user select an element and 
                                                              deletes it.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.DELETE (KWOTE W))
            W])
 
 (SK.DELETE.ITEM
-  [LAMBDA (ELT SKETCHW)                                      (* rrb "12-May-85 18:10")
+  [LAMBDA (ELT SKETCHW)                                      (* rrb "12-May-85 18:10")
                                                              (* deletes an element from a window)
     (COND
        (ELT (DELFROMTCONC (WINDOWPROP SKETCHW 'SKETCHSPECS)
@@ -3292,10 +3316,10 @@ This will be slow for arcs and curves."]
             ELT])
 
 (DELFROMTCONC
-  [LAMBDA (TCONCCELL ELEMENT)                                (* rrb "26-Sep-86 13:24")
-          
-          (* deletes an element from a TCONC cell list.
-          Returns T if the element was deleted, NIL if it wasn't a member.)
+  [LAMBDA (TCONCCELL ELEMENT)                                (* rrb "26-Sep-86 13:24")
+
+         (* deletes an element from a TCONC cell list.
+         Returns T if the element was deleted, NIL if it wasn't a member.)
 
     (COND
        ((EQ ELEMENT (CAAR TCONCCELL))                        (* first element)
@@ -3307,10 +3331,8 @@ This will be slow for arcs and curves."]
            (T                                                (* remove first element.)
               (RPLACA TCONCCELL (CDAR TCONCCELL]
         T)
-       ((EQ ELEMENT (CADR TCONCCELL))
-          
-          (* elt to delete is the last one on the list, do special case.)
-
+       ((EQ ELEMENT (CADR TCONCCELL))                        (* elt to delete is the last one on 
+                                                             the list, do special case.)
         (for TAIL on (CAR TCONCCELL) when (EQ (CDR TAIL)
                                               (CDR TCONCCELL)) do 
                                                              (* update the TCONC last entry)
@@ -3331,24 +3353,24 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (SK.COPY.ELT
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:49")
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:49")
                                                              (* lets the user select an element and 
                                                              copies it.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.COPY (KWOTE W))
            W])
 
 (SK.SEL.AND.COPY
-  [LAMBDA (W)                                                (* rrb "10-Dec-85 17:08")
+  [LAMBDA (W)                                                (* rrb "10-Dec-85 17:08")
                                                              (* lets the user select elements and 
                                                              copies them.)
     (SK.COPY.ELEMENTS (SK.SELECT.MULTIPLE.ITEMS W T NIL 'COPY)
            W])
 
 (SK.COPY.ELEMENTS
-  [LAMBDA (SCRELTS SKW)                                      (* rrb " 1-Oct-86 19:12")
-          
-          (* create a bitmap of the thing being moved and get its new position.
-          Then translate all the pieces.)
+  [LAMBDA (SCRELTS SKW)                                      (* rrb " 1-Oct-86 19:12")
+
+         (* create a bitmap of the thing being moved and get its new position.
+         Then translate all the pieces.)
 
     (AND SCRELTS (PROG (FIGINFO FIRSTHOTSPOT GHOTSPOT LOWLFT NEWGPOS DELTAPOS NEWELTS COPYFN SKETCH 
                               COPYARGS COPYPLACEDYETFLG)     (* call PRECOPYFN.)
@@ -3360,12 +3382,12 @@ This will be slow for arcs and curves."]
                        [COND
                           ((EQ DELTAPOS 'DON'T)
                            (RETURN))
-                          ((POSITIONP DELTAPOS)
-          
-          (* PRECOPYFN returned a position, don't bother to check for multiple copies.)
-          
-          (* value returned is the delta by which to move the point.
-          Set up new position)
+                          ((POSITIONP DELTAPOS)              (* PRECOPYFN returned a position, 
+                                                             don't bother to check for multiple 
+                                                             copies.)
+
+         (* value returned is the delta by which to move the point.
+         Set up new position)
 
                            (RETURN (SK.ADD.COPY.OF.ELEMENTS SKW SCRELTS (OR COPYARGS (SETQ COPYARGS
                                                                                       (
@@ -3378,9 +3400,9 @@ This will be slow for arcs and curves."]
                        (SETQ GHOTSPOT (GETSKETCHELEMENTPROP (fetch (SCREENELT GLOBALPART)
                                                                of (CAR SCRELTS))
                                              'POSITION))
-          
-          (* move the image by the first hotspot of the first element chosen.
-          This will align the image on the grid correctly.)
+
+         (* move the image by the first hotspot of the first element chosen.
+         This will align the image on the grid correctly.)
 
                    PLACECOPYLP
                        (COND
@@ -3402,19 +3424,18 @@ This will be slow for arcs and curves."]
                                                                      ]
                                           SKW))
                            (CLOSEPROMPTWINDOW SKW))
-                          (COPYPLACEDYETFLG 
-          
-          (* already one copy down, close prompt window so user knows copy mode is over.)
-
+                          (COPYPLACEDYETFLG                  (* already one copy down, close prompt 
+                                                             window so user knows copy mode is 
+                                                             over.)
                                  (CLOSEPROMPTWINDOW SKW)
                                  (RETURN NIL))
                           (T (STATUSPRINT SKW "Position was outside the window.  Copy not placed.")
                              (RETURN NIL)))
                        [SETQ DELTAPOS (create POSITION
-                                             XCOORD _ (DIFFERENCE (fetch (POSITION XCOORD)
+                                             XCOORD ← (DIFFERENCE (fetch (POSITION XCOORD)
                                                                      of NEWGPOS)
                                                              (fetch (POSITION XCOORD) of GHOTSPOT))
-                                             YCOORD _ (DIFFERENCE (fetch (POSITION YCOORD)
+                                             YCOORD ← (DIFFERENCE (fetch (POSITION YCOORD)
                                                                      of NEWGPOS)
                                                              (fetch (POSITION YCOORD) of GHOTSPOT]
                        (SK.ADD.COPY.OF.ELEMENTS SKW SCRELTS (OR COPYARGS (SETQ COPYARGS (
@@ -3428,10 +3449,10 @@ This will be slow for arcs and curves."]
                           (T (CLOSEPROMPTWINDOW SKW])
 
 (SK.ADD.COPY.OF.ELEMENTS
-  [LAMBDA (VIEWER SCRELEMENTS GLOBALELEMENTS NEWPOSDELTA)    (* rrb " 1-Oct-86 19:13")
-          
-          (* internal function for copying elements.
-          Adds a copy of SCRELEMENTS moved by NEWPOSDELTA to VIEWER and calls the copyfn.)
+  [LAMBDA (VIEWER SCRELEMENTS GLOBALELEMENTS NEWPOSDELTA)    (* rrb " 1-Oct-86 19:13")
+
+         (* internal function for copying elements.
+         Adds a copy of SCRELEMENTS moved by NEWPOSDELTA to VIEWER and calls the copyfn.)
 
     (PROG (SKETCH NEWELTS COPYFN X)
           (AND (SETQ COPYFN (GETSKETCHPROP (SETQ SKETCH (INSURE.SKETCH VIEWER))
@@ -3440,11 +3461,8 @@ This will be slow for arcs and curves."]
           (COND
              ((EQ X 'DON'T)
               (RETURN))
-             ((POSITIONP X)
-          
-          (* value returned is the position to put the copy.
-          Set up new position)
-
+             ((POSITIONP X)                                  (* value returned is the position to 
+                                                             put the copy. Set up new position)
               (SETQ NEWPOSDELTA X)))
           [SETQ NEWELTS (SK.SORT.GELTS.BY.PRIORITY (COND
                                                       ((AND (LISTP X)
@@ -3461,35 +3479,32 @@ This will be slow for arcs and curves."]
           (SK.ADD.HISTEVENT 'COPY NEWELTS VIEWER])
 
 (SK.GLOBAL.FROM.LOCAL.ELEMENTS
-  [LAMBDA (SCRELTS)
-          
-          (* returns the global elements from a list of screen elements)
-
+  [LAMBDA (SCRELTS)                                          (* returns the global elements from a 
+                                                             list of screen elements)
     (for SCRELT in SCRELTS collect (fetch (SCREENELT GLOBALPART) of SCRELT])
 
 (SK.COPY.ITEM
-  [LAMBDA (SELELT GLOBALDELTAPOS W)                      (* rrb "24-Jun-87 15:12")
-          
-          (* SELELT is a sketch element that was selected for a copy operation.
-        GLOBALDELTAPOS is the amount the new item is to be offset from the old.)
+  [LAMBDA (SELELT GLOBALDELTAPOS W)                          (* rrb "24-Jun-87 15:12")
+
+         (* SELELT is a sketch element that was selected for a copy operation.
+         GLOBALDELTAPOS is the amount the new item is to be offset from the old.)
 
     (PROG ((OLDGLOBAL (fetch (SCREENELT GLOBALPART) of SELELT)))
           [COND
              ((EQ (fetch (GLOBALPART GTYPE) of OLDGLOBAL)
                   'SKIMAGEOBJ)
-          
-          (* copying an image obj. Don't call its when copied fn.
-        was changed to call the WHENINSERTEDFN instead when it acutally gets 
-        inserted.)
+
+         (* copying an image obj. Don't call its when copied fn.
+         was changed to call the WHENINSERTEDFN instead when it acutally gets inserted.)
 
               (SETQ OLDGLOBAL (SK.COPY.IMAGEOBJ OLDGLOBAL W]
           (RETURN (SK.TRANSLATE.GLOBALPART OLDGLOBAL GLOBALDELTAPOS])
 
 (SK.INSERT.SKETCH
-  [LAMBDA (W SKETCH REGION SCALE)                            (* rrb "30-Sep-86 18:29")
-          
-          (* * inserts the sketch SKETCH into the sketch window W.
-          Called by the copy insert function for sketch windows.)
+  [LAMBDA (W SKETCH REGION SCALE)                            (* rrb "30-Sep-86 18:29")
+
+         (* * inserts the sketch SKETCH into the sketch window W.
+         Called by the copy insert function for sketch windows.)
 
     (AND SKETCH (PROG (LOCALSCRELTS FIGINFO FIRSTHOTSPOT LOWLFT NEWPOS WINDOWSCALE NEWELTS)
                                                              (* map inserted elements into new 
@@ -3498,7 +3513,7 @@ This will be slow for arcs and curves."]
                          ([NOT (EQUAL SCALE (SETQ WINDOWSCALE (VIEWER.SCALE W]
                                                              (* change the scale of the sketch and 
                                                              the region.)
-                          [SETQ SKETCH (create SKETCH using SKETCH SKETCHELTS _
+                          [SETQ SKETCH (create SKETCH using SKETCH SKETCHELTS ←
                                                             (SK.TRANSFORM.GLOBAL.ELEMENTS
                                                              (fetch (SKETCH SKETCHELTS) of SKETCH)
                                                              (FUNCTION 
@@ -3510,9 +3525,9 @@ This will be slow for arcs and curves."]
                       (SETQ FIGINFO (SK.FIGUREIMAGE LOCALSCRELTS REGION))
                       [SETQ FIRSTHOTSPOT (CAR (fetch (SCREENELT HOTSPOTS) of (CAR LOCALSCRELTS]
                       (SETQ LOWLFT (fetch (SKFIGUREIMAGE SKFIGURE.LOWERLEFT) of FIGINFO))
-          
-          (* move the image by the first hotspot of the first element chosen.
-          This will align the image on the grid correctly.)
+
+         (* move the image by the first hotspot of the first element chosen.
+         This will align the image on the grid correctly.)
 
                       (COND
                          ([SETQ NEWPOS (fetch (INPUTPT INPUT.POSITION)
@@ -3534,11 +3549,11 @@ This will be slow for arcs and curves."]
                       (SETQ NEWELTS (MAPCOLLECTSKETCHSPECS LOCALSCRELTS (FUNCTION SK.COPY.ITEM)
                                            (SK.MAP.FROM.WINDOW.TO.NEAREST.GRID
                                             (create POSITION
-                                                   XCOORD _ (IDIFFERENCE (fetch (POSITION XCOORD)
+                                                   XCOORD ← (IDIFFERENCE (fetch (POSITION XCOORD)
                                                                             of NEWPOS)
                                                                    (fetch (POSITION XCOORD)
                                                                       of FIRSTHOTSPOT))
-                                                   YCOORD _ (IDIFFERENCE (fetch (POSITION YCOORD)
+                                                   YCOORD ← (IDIFFERENCE (fetch (POSITION YCOORD)
                                                                             of NEWPOS)
                                                                    (fetch (POSITION YCOORD)
                                                                       of FIRSTHOTSPOT)))
@@ -3556,37 +3571,35 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (SK.MOVE.ELT
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:49")
-          
-          (* lets the user select one or more elements and move them.)
-
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:49")
+                                                             (* lets the user select one or more 
+                                                             elements and move them.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.MOVE (KWOTE W))
            W])
 
 (SK.MOVE.ELT.OR.PT
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:49")
-          
-          (* lets the user select one or more elements and move them.)
-
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:49")
+                                                             (* lets the user select one or more 
+                                                             elements and move them.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.MOVE (KWOTE W)
                               T)
            W])
 
 (SK.APPLY.DEFAULT.MOVE
-  [LAMBDA (W)                                                (* rrb " 2-Jun-85 12:52")
-          
-          (* applies the default move mode which can be either points, elements or both.)
-
+  [LAMBDA (W)                                                (* rrb " 2-Jun-85 12:52")
+                                                             (* applies the default move mode which 
+                                                             can be either points, elements or 
+                                                             both.)
     (SELECTQ (fetch (SKETCHCONTEXT SKETCHMOVEMODE) of (WINDOWPROP W 'SKETCHCONTEXT))
         (POINTS (SK.MOVE.POINTS W))
         (ELEMENTS (SK.MOVE.ELT W))
         (SK.MOVE.ELT.OR.PT W])
 
 (SK.SEL.AND.MOVE
-  [LAMBDA (W PTFLG)                                          (* rrb "10-Dec-85 17:06")
-          
-          (* lets the user select either a control point or one or more elements and move 
-          them.)
+  [LAMBDA (W PTFLG)                                          (* rrb "10-Dec-85 17:06")
+
+         (* lets the user select either a control point or one or more elements and move 
+         them.)
 
     (SK.MOVE.ELEMENTS [COND
                          ((EQ PTFLG 'ONLY)
@@ -3597,7 +3610,7 @@ This will be slow for arcs and curves."]
            W])
 
 (SK.MOVE.ELEMENTS
-  [LAMBDA (SCRELTS SKW)                                      (* rrb "11-Jul-86 15:51")
+  [LAMBDA (SCRELTS SKW)                                      (* rrb "11-Jul-86 15:51")
     (SKED.CLEAR.SELECTION SKW)
     (COND
        ((NULL SCRELTS))
@@ -3616,16 +3629,14 @@ This will be slow for arcs and curves."]
                                                                                           GLOBALPART)
                                                                                of SCRELT)
                                                             'MOVE)) do (RETURN SCRELT]
-          
-          (* only protected elements at this point, shouldn't happen but don't cause an 
-          error.)
-
+                                                             (* only protected elements at this 
+                                                             point, shouldn't happen but don't 
+                                                             cause an error.)
                   (RETURN NIL)))
               [COND
                  ([NULL (SETQ OTHERHOTSPOTS (REMOVE SCRELTS (fetch (SCREENELT HOTSPOTS) of SKETCHELT]
-          
-          (* only one control point, move it with the move element function.)
-
+                                                             (* only one control point, move it 
+                                                             with the move element function.)
                   (RETURN (SK.MOVE.ELEMENTS (LIST SKETCHELT)
                                  SKW]                        (* call sketch premovefn if given.)
               [AND (SETQ MOVEFN (GETSKETCHPROP (SETQ SKETCH (INSURE.SKETCH SKW))
@@ -3636,9 +3647,9 @@ This will be slow for arcs and curves."]
                  ((EQ GDELTAPOS 'DON'T)
                   (RETURN))
                  ((POSITIONP GDELTAPOS)
-          
-          (* value returned is the delta by which to move the point.
-          Set up new position)
+
+         (* value returned is the delta by which to move the point.
+         Set up new position)
 
                   NIL)
                  (T                                          (* read new position from the user)
@@ -3653,12 +3664,12 @@ This will be slow for arcs and curves."]
                                                              selected point moves.)
                     (SETQ GDELTAPOS (SK.MAP.FROM.WINDOW.TO.NEAREST.GRID
                                      (create POSITION
-                                            XCOORD _ (IDIFFERENCE (fetch (POSITION XCOORD)
+                                            XCOORD ← (IDIFFERENCE (fetch (POSITION XCOORD)
                                                                      of (fetch (INPUTPT 
                                                                                       INPUT.POSITION)
                                                                            of NEWPOS))
                                                             (fetch (POSITION XCOORD) of SCRELTS))
-                                            YCOORD _ (IDIFFERENCE (fetch (POSITION YCOORD)
+                                            YCOORD ← (IDIFFERENCE (fetch (POSITION YCOORD)
                                                                      of (fetch (INPUTPT 
                                                                                       INPUT.POSITION)
                                                                            of NEWPOS))
@@ -3672,14 +3683,17 @@ This will be slow for arcs and curves."]
                  ((EQ X 'DON'T)
                   (RETURN))
                  ((POSITIONP X)
-          
-          (* value returned is the delta by which to move the point.
-          Set up new position)
+
+         (* value returned is the delta by which to move the point.
+         Set up new position)
 
                   (SETQ GDELTAPOS X)))
               (RETURN (SK.MOVE.THING SKETCHELT SCRELTS GDELTAPOS SKW]
-       (T (* create a bitmap of the thing being moved and get its new position.
-          Then translate all the pieces.)
+       (T 
+
+         (* create a bitmap of the thing being moved and get its new position.
+         Then translate all the pieces.)
+
           (PROG (FIGINFO FIRSTHOTSPOT NEWPOS LOWLFT IMAGEPOSX IMAGEPOSY IMAGEBM DELTAPOS CHANGES 
                        MOVEFN X GDELTAPOS)
                 [AND (SETQ MOVEFN (GETSKETCHPROP (INSURE.SKETCH SKW)
@@ -3689,9 +3703,9 @@ This will be slow for arcs and curves."]
                    ((EQ GDELTAPOS 'DON'T)
                     (RETURN))
                    ((POSITIONP GDELTAPOS)
-          
-          (* value returned is the delta by which to move the point.
-          Set up new position)
+
+         (* value returned is the delta by which to move the point.
+         Set up new position)
 
                     NIL)
                    (T                                        (* read new position from the user)
@@ -3699,9 +3713,9 @@ This will be slow for arcs and curves."]
                       [SETQ FIRSTHOTSPOT (CAR (fetch (SCREENELT HOTSPOTS) of (CAR SCRELTS]
                       (SETQ IMAGEBM (fetch (SKFIGUREIMAGE SKFIGURE.BITMAP) of FIGINFO))
                       (SETQ LOWLFT (fetch (SKFIGUREIMAGE SKFIGURE.LOWERLEFT) of FIGINFO))
-          
-          (* move the image by the first hotspot of the first element chosen.
-          This will align the image on the grid correctly.)
+
+         (* move the image by the first hotspot of the first element chosen.
+         This will align the image on the grid correctly.)
 
                       (SETQ IMAGEPOSX (fetch (POSITION XCOORD) of LOWLFT))
                       (SETQ IMAGEPOSY (fetch (POSITION YCOORD) of LOWLFT))
@@ -3728,19 +3742,19 @@ This will be slow for arcs and curves."]
                           (SK.SHOW.FIG.FROM.INFO IMAGEBM IMAGEPOSX IMAGEPOSY 'PAINT SKW)
                           (STATUSPRINT SKW "Position was outside the window, copy not placed.")
                           (RETURN NIL)))
-          
-          (* GET.BITMAP.POSITION returns the position that the cursor was in which is the 
-          position of the first hotspot.)
+
+         (* GET.BITMAP.POSITION returns the position that the cursor was in which is the 
+         position of the first hotspot.)
                                                              (* calculate the delta that the 
                                                              selected point moves.)
                       (SETQ GDELTAPOS (SK.MAP.FROM.WINDOW.TO.NEAREST.GRID
                                        [SETQ DELTAPOS (create POSITION
-                                                             XCOORD _ (IDIFFERENCE
+                                                             XCOORD ← (IDIFFERENCE
                                                                        (fetch (POSITION XCOORD)
                                                                           of NEWPOS)
                                                                        (fetch (POSITION XCOORD)
                                                                           of FIRSTHOTSPOT))
-                                                             YCOORD _ (IDIFFERENCE
+                                                             YCOORD ← (IDIFFERENCE
                                                                        (fetch (POSITION YCOORD)
                                                                           of NEWPOS)
                                                                        (fetch (POSITION YCOORD)
@@ -3749,24 +3763,24 @@ This will be slow for arcs and curves."]
                 (SKETCH.MOVE.ELEMENTS (for ELT in SCRELTS collect (fetch (SCREENELT GLOBALPART)
                                                                      of ELT))
                        GDELTAPOS SKW T)
-          
-          (* I started noticing cases where the image was a point off on some lines and 
-          where the texture alignment was off so I removed this
-          (COND ((AND DELTAPOS (NOT (POSITIONP X)))
-          (* If the user was asked for a new position and the movefn didn't change it, 
-          redraw the image in case any of it was erased by the calls to SK.TRANSLATE.ITEM)
-          (SK.SHOW.FIG.FROM.INFO IMAGEBM (IPLUS IMAGEPOSX
-          (fetch (POSITION XCOORD) of DELTAPOS)) (IPLUS IMAGEPOSY
-          (fetch (POSITION YCOORD) of DELTAPOS)) (QUOTE PAINT) SKW))))
+
+         (* I started noticing cases where the image was a point off on some lines and 
+         where the texture alignment was off so I removed this
+         (COND ((AND DELTAPOS (NOT (POSITIONP X)))
+         (* If the user was asked for a new position and the movefn didn't change it, 
+         redraw the image in case any of it was erased by the calls to SK.TRANSLATE.ITEM)
+         (SK.SHOW.FIG.FROM.INFO IMAGEBM (IPLUS IMAGEPOSX
+         (fetch (POSITION XCOORD) of DELTAPOS)) (IPLUS IMAGEPOSY
+         (fetch (POSITION YCOORD) of DELTAPOS)) (QUOTE PAINT) SKW))))
 
                 (CLOSEPROMPTWINDOW SKW])
 
 (SKETCH.MOVE.ELEMENTS
-  [LAMBDA (ELEMENTS DELTA SKETCHTOUPDATE ADDHISTORY?)        (* rrb " 2-Oct-86 11:09")
-          
-          (* moves the elements ELEMENTS by the amount of position DELTA
-          (XCOORD gives x amount, YCOORD gives y delta) and updates the viewers on 
-          SKETCHTOUPDATE if it is given.)
+  [LAMBDA (ELEMENTS DELTA SKETCHTOUPDATE ADDHISTORY?)        (* rrb " 2-Oct-86 11:09")
+
+         (* moves the elements ELEMENTS by the amount of position DELTA
+         (XCOORD gives x amount, YCOORD gives y delta) and updates the viewers on 
+         SKETCHTOUPDATE if it is given.)
 
     (PROG (X MOVEFN NEWGLOBALS SKETCH GDELTAPOS VIEWER)
           (OR (POSITIONP DELTA)
@@ -3775,9 +3789,9 @@ This will be slow for arcs and curves."]
                (SETQ VIEWER (SK.VIEWER.FROM.SKETCH.ARG SKETCHTOUPDATE)))
           (COND
              [[AND SKETCH (SETQ MOVEFN (GETSKETCHPROP SKETCH 'WHENMOVEDFN]
-          
-          (* call the WHENMOVEDFN if any Pass the thing the user passed in if you can't 
-          find a viewer.)
+
+         (* call the WHENMOVEDFN if any Pass the thing the user passed in if you can't 
+         find a viewer.)
 
               (COND
                  ((EQ (SETQ X (APPLY* MOVEFN VIEWER (for ELT in ELEMENTS
@@ -3786,9 +3800,9 @@ This will be slow for arcs and curves."]
                       'DON'T)
                   (RETURN))
                  ((POSITIONP X)
-          
-          (* value returned is the delta by which to move the point.
-          Set up new position)
+
+         (* value returned is the delta by which to move the point.
+         Set up new position)
 
                   (SETQ GDELTAPOS X))
                  (T (SETQ GDELTAPOS DELTA]
@@ -3803,11 +3817,11 @@ This will be slow for arcs and curves."]
           (RETURN NEWGLOBALS])
 
 (SKETCH.COPY.ELEMENTS
-  [LAMBDA (ELEMENTS SKETCHTOUPDATE DELTA ADDHISTORY?)        (* rrb "15-Dec-86 15:58")
-          
-          (* copies the elements ELEMENTS moving them by the amount of position DELTA
-          (XCOORD gives x amount, YCOORD gives y delta) and updates the viewers on 
-          SKETCHTOUPDATE if it is given.)
+  [LAMBDA (ELEMENTS SKETCHTOUPDATE DELTA ADDHISTORY?)        (* rrb "15-Dec-86 15:58")
+
+         (* copies the elements ELEMENTS moving them by the amount of position DELTA
+         (XCOORD gives x amount, YCOORD gives y delta) and updates the viewers on 
+         SKETCHTOUPDATE if it is given.)
 
     (PROG (X COPYFN NEWGLOBALS SKETCH GDELTAPOS VIEWER)
           (COND
@@ -3819,18 +3833,18 @@ This will be slow for arcs and curves."]
                (SETQ VIEWER (SK.VIEWER.FROM.SKETCH.ARG SKETCHTOUPDATE)))
           (COND
              [[AND SKETCH (SETQ COPYFN (GETSKETCHPROP SKETCH 'WHENCOPIEDFN]
-          
-          (* call the WHENCOPIEFN if any Pass the thing the user passed in if you can't 
-          find a viewer.)
+
+         (* call the WHENCOPIEFN if any Pass the thing the user passed in if you can't 
+         find a viewer.)
 
               (COND
                  ((EQ (SETQ X (APPLY* COPYFN VIEWER ELEMENTS DELTA))
                       'DON'T)
                   (RETURN))
                  ((POSITIONP X)
-          
-          (* value returned is the delta by which to move the point.
-          Set up new position)
+
+         (* value returned is the delta by which to move the point.
+         Set up new position)
 
                   (SETQ GDELTAPOS X))
                  (T (SETQ GDELTAPOS DELTA]
@@ -3846,24 +3860,24 @@ This will be slow for arcs and curves."]
           (RETURN NEWGLOBALS])
 
 (\SKETCH.COPY.ELEMENT
-  [LAMBDA (GLOBALELEMENT GLOBALDELTAPOS W)               (* rrb "24-Jun-87 15:05")
-          
-          (* SELELT is a sketch element that was selected for a copy operation.
-        GLOBALDELTAPOS is the amount the new item is to be offset from the old.)
+  [LAMBDA (GLOBALELEMENT GLOBALDELTAPOS W)                   (* rrb "24-Jun-87 15:05")
+
+         (* SELELT is a sketch element that was selected for a copy operation.
+         GLOBALDELTAPOS is the amount the new item is to be offset from the old.)
 
     (COND
        ((EQ (fetch (GLOBALPART GTYPE) of GLOBALELEMENT)
             'SKIMAGEOBJ)                                     (* copying an image obj.
-                                                           Calls its when copied fn.)
+                                                             Calls its when copied fn.)
         (SK.TRANSLATE.GLOBALPART (SK.COPY.IMAGEOBJ GLOBALELEMENT W)
                GLOBALDELTAPOS))
        (T (SK.TRANSLATE.GLOBALPART GLOBALELEMENT GLOBALDELTAPOS])
 
 (SK.TRANSLATE.ELEMENT
-  [LAMBDA (GELT GLOBALDELTAPOS W)                            (* rrb "25-Sep-86 15:16")
-          
-          (* * GELT is a sketch element to be moved.
-          GLOBALDELTAPOS is the amount the item is to be translated.)
+  [LAMBDA (GELT GLOBALDELTAPOS W)                            (* rrb "25-Sep-86 15:16")
+
+         (* * GELT is a sketch element to be moved.
+         GLOBALDELTAPOS is the amount the item is to be translated.)
 
     (PROG (NEWGLOBAL)
           (COND
@@ -3877,31 +3891,31 @@ This will be slow for arcs and curves."]
            T])
 
 (SK.MAKE.ELEMENT.MOVE.ARG
-  [LAMBDA (SCRELT SELPOS)                                    (* rrb " 5-Nov-85 14:35")
-          
-          (* makes an argument structure that is suitable to be passed to the sketch 
-          movefn. This is a list whose CAR is a list of the numbers of the control points 
-          being moved and whose CDR is the global sketch element.)
+  [LAMBDA (SCRELT SELPOS)                                    (* rrb " 5-Nov-85 14:35")
+
+         (* makes an argument structure that is suitable to be passed to the sketch 
+         movefn. This is a list whose CAR is a list of the numbers of the control points 
+         being moved and whose CDR is the global sketch element.)
 
     (CONS (CONS (for I from 1 as PT in (fetch (SCREENELT HOTSPOTS) of SCRELT)
                    when (EQUAL PT SELPOS) do (RETURN I)))
           (fetch (SCREENELT GLOBALPART) of SCRELT])
 
 (SK.MAKE.ELEMENTS.MOVE.ARG
-  [LAMBDA (SCRELTS)                                          (* rrb " 5-Nov-85 14:34")
-          
-          (* makes an argument structure that is suitable to be passed to the sketch 
-          movefn. This is a list whose CAR is a list of the numbers of the control points 
-          being moved which is in this case T and whose CDR is the global sketch element.)
+  [LAMBDA (SCRELTS)                                          (* rrb " 5-Nov-85 14:34")
+
+         (* makes an argument structure that is suitable to be passed to the sketch 
+         movefn. This is a list whose CAR is a list of the numbers of the control points 
+         being moved which is in this case T and whose CDR is the global sketch element.)
 
     (CONS T (for SCRELT in SCRELTS collect (fetch (SCREENELT GLOBALPART) of SCRELT])
 
 (SK.MAKE.POINTS.AND.ELEMENTS.MOVE.ARG
-  [LAMBDA (SCRELTS SELPTS)                                   (* rrb "21-Jan-86 17:38")
-          
-          (* makes an argument structure that is suitable to be passed to the sketch 
-          movefn. This is a list of lists each of whose CAR is a list of the numbers of 
-          the control points being moved and whose CDR is the global sketch element.)
+  [LAMBDA (SCRELTS SELPTS)                                   (* rrb "21-Jan-86 17:38")
+
+         (* makes an argument structure that is suitable to be passed to the sketch 
+         movefn. This is a list of lists each of whose CAR is a list of the numbers of the 
+         control points being moved and whose CDR is the global sketch element.)
 
     (for SCRELT in SCRELTS collect (CONS (bind NOTALL for I from 1 as PT
                                             in (fetch (SCREENELT HOTSPOTS) of SCRELT)
@@ -3913,13 +3927,13 @@ This will be slow for arcs and curves."]
                                          (fetch (SCREENELT GLOBALPART) of SCRELT])
 
 (SK.SHOW.FIG.FROM.INFO
-  [LAMBDA (IMAGEBM XOFFSET YOFFSET OPERATION WINDOW)         (* rrb "14-Nov-84 14:20")
+  [LAMBDA (IMAGEBM XOFFSET YOFFSET OPERATION WINDOW)         (* rrb "14-Nov-84 14:20")
                                                              (* puts a bitmap onto the sketch 
                                                              window.)
     (BITBLT IMAGEBM 0 0 WINDOW XOFFSET YOFFSET NIL NIL 'INPUT OPERATION])
 
 (SK.MOVE.THING
-  [LAMBDA (SKETCHELT LOCALPT GDELTAPOS SKW)                  (* rrb "27-Jun-86 14:04")
+  [LAMBDA (SKETCHELT LOCALPT GDELTAPOS SKW)                  (* rrb "27-Jun-86 14:04")
                                                              (* moves a control point in a sketch 
                                                              element.)
     (PROG (OLDGLOBAL NEWGLOBAL)                              (* calculate the delta that the 
@@ -3933,26 +3947,26 @@ This will be slow for arcs and curves."]
           (RETURN NEWGLOBAL])
 
 (UPDATE.ELEMENT.IN.SKETCH
-  [LAMBDA (OLDGELT NEWGELT SKETCH SKW DONTUPDATEPRIORITYFLG) (* rrb "26-Sep-86 13:35")
+  [LAMBDA (OLDGELT NEWGELT SKETCH SKW DONTUPDATEPRIORITYFLG) (* rrb "26-Sep-86 13:35")
                                                              (* changes the global sketch)
-          
-          (* returns NIL if the old global sketch element is not found in SKETCH.
-          This can happen if things are undone out of order.)
+
+         (* returns NIL if the old global sketch element is not found in SKETCH.
+         This can happen if things are undone out of order.)
 
     (PROG ((SKETCHSTRUCTURE (INSURE.SKETCH SKETCH))
            SKETCHELEMENTS)
-          
-          (* if old and new are the same, the change was done destructively;
-          otherwise clobber the new one in.)
+
+         (* if old and new are the same, the change was done destructively;
+         otherwise clobber the new one in.)
 
           [COND
              ((EQ OLDGELT NEWGELT))
              ((OR (NULL DONTUPDATEPRIORITYFLG)
                   (EQ (SK.ELEMENT.PRIORITY OLDGELT)
                       (SK.ELEMENT.PRIORITY NEWGELT)))
-          
-          (* same priorities so just clobber the old elements place in the list with the 
-          new one.)
+
+         (* same priorities so just clobber the old elements place in the list with the 
+         new one.)
 
               (OR (for GELTTAIL on (fetch (SKETCH SKETCHELTS) of SKETCHSTRUCTURE)
                      when (EQ (CAR GELTTAIL)
@@ -3964,9 +3978,9 @@ This will be slow for arcs and curves."]
                                           (RETURN T))
                   (RETURN)))
              (T 
-          
-          (* priority has changed so order of this element in the list may need to be 
-          changed.)
+
+         (* priority has changed so order of this element in the list may need to be 
+         changed.)
 
                 (REMOVE.ELEMENT.FROM.SKETCH OLDGELT SKETCHSTRUCTURE)
                 (SK.ADD.PRIORITY.ELEMENT.TO.SKETCH SKETCHSTRUCTURE NEWGELT (SK.ELEMENT.PRIORITY
@@ -3975,19 +3989,19 @@ This will be slow for arcs and curves."]
           (RETURN T])
 
 (SK.UPDATE.ELEMENT
-  [LAMBDA (OLDGLOBAL NEWGLOBAL SKETCHW REDRAWIFSAMEFLG DONTUPDATEPRIORITYFLG DONTDISPLAYFLG)
+  [LAMBDA (OLDGLOBAL NEWGLOBAL SKETCHW REDRAWIFSAMEFLG DONTUPDATEPRIORITYFLG DONTDISPLAYFLG)
                                                              (* rrb "24-Sep-86 17:32")
-          
-          (* replaces an old element with a new one.
-          The global part of the old one may be the same as the new global part.
-          This also handles propagation to other windows that have the same figure 
-          displayed.)
+
+         (* replaces an old element with a new one.
+         The global part of the old one may be the same as the new global part.
+         This also handles propagation to other windows that have the same figure 
+         displayed.)
 
     (PROG ((SKETCH (SKETCH.FROM.VIEWER SKETCHW))
            UPDATEDELT)
-          
-          (* update the element in the sketch first.
-          If this returns NIL, the element was not found in the sketch.)
+
+         (* update the element in the sketch first.
+         If this returns NIL, the element was not found in the sketch.)
 
           (OR (UPDATE.ELEMENT.IN.SKETCH OLDGLOBAL NEWGLOBAL SKETCH SKETCHW DONTUPDATEPRIORITYFLG)
               (RETURN NIL))                                  (* do the window that the interaction 
@@ -3996,19 +4010,19 @@ This will be slow for arcs and curves."]
                                   DONTDISPLAYFLG))           (* propagate to other windows.)
           (for SKW in (ALL.SKETCH.VIEWERS SKETCH) when (NEQ SKW SKETCHW)
              do 
-          
-          (* the position may have changed which means that it may have moved in or out 
-          of a viewer.)
+
+         (* the position may have changed which means that it may have moved in or out of 
+         a viewer.)
 
                 (SK.UPDATE.ELEMENT1 OLDGLOBAL NEWGLOBAL SKW REDRAWIFSAMEFLG DONTDISPLAYFLG))
           (RETURN UPDATEDELT])
 
 (SK.UPDATE.ELEMENTS
-  [LAMBDA (CHANGEEVENTS WINDOW DONTUPDATEPRIORITYFLG DONTDISPLAYFLG)
+  [LAMBDA (CHANGEEVENTS WINDOW DONTUPDATEPRIORITYFLG DONTDISPLAYFLG)
                                                              (* rrb "24-Sep-86 17:32")
-          
-          (* replaces the global parts of a list of change events and handles updating 
-          the screen.)
+
+         (* replaces the global parts of a list of change events and handles updating the 
+         screen.)
 
     (for CHANGEEVENT in CHANGEEVENTS do (SK.UPDATE.ELEMENT (fetch (SKHISTORYCHANGESPEC OLDELT)
                                                               of CHANGEEVENT)
@@ -4016,32 +4030,29 @@ This will be slow for arcs and curves."]
                                                WINDOW NIL DONTUPDATEPRIORITYFLG DONTDISPLAYFLG])
 
 (SK.UPDATE.ELEMENT1
-  [LAMBDA (OLDGELT NEWGELT SKETCHW REDRAWIFSAME DONTDISPLAYFLG)
+  [LAMBDA (OLDGELT NEWGELT SKETCHW REDRAWIFSAME DONTDISPLAYFLG)
                                                              (* rrb "24-Sep-86 17:32")
-          
-          (* determines what action is needed wrt the viewer SKETCHW when the element 
-          OLDGELT is updated to NEWGELT. This works only in the given window.)
+
+         (* determines what action is needed wrt the viewer SKETCHW when the element 
+         OLDGELT is updated to NEWGELT. This works only in the given window.)
 
     (PROG (LOCALELT UPDATEFN NEWLOCAL)
           (COND
              [(SETQ LOCALELT (SK.LOCAL.ELT.FROM.GLOBALPART OLDGELT SKETCHW))
               (COND
-                 (DONTDISPLAYFLG 
-          
-          (* just do the update in the datastructure, don't change the display)
-
+                 (DONTDISPLAYFLG                             (* just do the update in the 
+                                                             datastructure, don't change the 
+                                                             display)
                         (SK.DELETE.ITEM LOCALELT SKETCHW)
                         (RETURN (SK.ADD.ITEM NEWGELT SKETCHW)))
                  ((EQ (SKETCH.ELEMENT.TYPE OLDGELT)
-                      'SKIMAGEOBJ)
-          
-          (* handle imageobject case specially because changes are often in internal 
-          structure)
-
+                      'SKIMAGEOBJ)                           (* handle imageobject case specially 
+                                                             because changes are often in internal 
+                                                             structure)
                   (SK.DELETE.ITEM LOCALELT SKETCHW)
-          
-          (* erase the old image region because often the internal parts of the image 
-          object have been clobbered making it impossible to erase by redrawing)
+
+         (* erase the old image region because often the internal parts of the image 
+         object have been clobbered making it impossible to erase by redrawing)
 
                   (DSPFILL (fetch (LOCALSKIMAGEOBJ SKIMOBJLOCALREGION) of (fetch (SCREENELT LOCALPART
                                                                                         )
@@ -4052,36 +4063,35 @@ This will be slow for arcs and curves."]
                  [[AND (EQUAL OLDGELT NEWGELT)
                        (NOT (MEMB (fetch (GLOBALPART GTYPE) of OLDGELT)
                                   '(TEXT TEXTBOX]
-          
-          (* text and textbox are special because interactive editing reuses the same 
-          element after the first character but they need to use updatefns for speed.)
-          
-          (* replacing something by something else that is identical.
-          Check here because add will not add something that is already there and 
-          updatefn may call add first.)
+
+         (* text and textbox are special because interactive editing reuses the same 
+         element after the first character but they need to use updatefns for speed.)
+
+         (* replacing something by something else that is identical.
+         Check here because add will not add something that is already there and updatefn 
+         may call add first.)
 
                   (COND
                      (REDRAWIFSAME 
-          
-          (* this entry is used from the WB.BUTTON.HANDLER and deals with image objects 
-          which we have no control over whether they give us something new or not.)
+
+         (* this entry is used from the WB.BUTTON.HANDLER and deals with image objects 
+         which we have no control over whether they give us something new or not.)
 
                             (SK.ERASE.AND.DELETE.ITEM LOCALELT SKETCHW))
                      (T (SK.DELETE.ITEM LOCALELT SKETCHW)
                         (RETURN (SK.ADD.ITEM NEWGELT SKETCHW]
                  ((AND (SETQ UPDATEFN (SK.UPDATEFN (fetch (GLOBALPART GTYPE) of NEWGELT)))
                        (SETQ NEWLOCAL (APPLY* UPDATEFN LOCALELT NEWGELT SKETCHW)))
-          
-          (* if the old one is visible and the element has an updatefn, use it to update 
-          the display. Then delete the old one. The updatefn should have added the new 
-          one.)
+
+         (* if the old one is visible and the element has an updatefn, use it to update 
+         the display. Then delete the old one. The updatefn should have added the new one.)
 
                   (SK.DELETE.ITEM LOCALELT SKETCHW)
                   (RETURN NEWLOCAL))
                  (T 
-          
-          (* if this type doesn't have a updatefn or it returned NIL, do the erase and 
-          redraw method.)
+
+         (* if this type doesn't have a updatefn or it returned NIL, do the erase and 
+         redraw method.)
 
                     (SK.ERASE.AND.DELETE.ITEM LOCALELT SKETCHW]
              ((NOT (MEMB NEWGELT (SKETCH.ELEMENTS.OF.SKETCH SKETCHW)))
@@ -4093,7 +4103,7 @@ This will be slow for arcs and curves."]
                       (SKETCH.ADD.AND.DISPLAY1 NEWGELT SKETCHW])
 
 (SK.MOVE.ELEMENT.POINT
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:50")
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:50")
                                                              (* lets the user select an element and 
                                                              move it.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.MOVE (KWOTE W)
@@ -4108,23 +4118,22 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (SK.MOVE.POINTS
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:50")
-          
-          (* lets the user select a collection of points and move them.)
-
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:50")
+                                                             (* lets the user select a collection 
+                                                             of points and move them.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.MOVE.POINTS (KWOTE W))
            W])
 
 (SK.SEL.AND.MOVE.POINTS
-  [LAMBDA (W)                                                (* rrb "17-Oct-85 11:11")
-          
-          (* * lets the user select a collection of control point and moves them.)
+  [LAMBDA (W)                                                (* rrb "17-Oct-85 11:11")
+
+         (* * lets the user select a collection of control point and moves them.)
 
     (SK.DO.MOVE.ELEMENT.POINTS (SK.SELECT.MULTIPLE.POINTS W)
            W])
 
 (SK.DO.MOVE.ELEMENT.POINTS
-  [LAMBDA (SCRPTS SKW)                                       (* rrb "30-Sep-86 18:33")
+  [LAMBDA (SCRPTS SKW)                                       (* rrb "30-Sep-86 18:33")
                                                              (* moves a collection of points)
     (SKED.CLEAR.SELECTION SKW)
     (AND SCRPTS
@@ -4140,16 +4149,16 @@ This will be slow for arcs and curves."]
                   ((EQ GDELTAPOS 'DON'T)
                    (RETURN))
                   ((POSITIONP GDELTAPOS)
-          
-          (* value returned is the delta by which to move the point.
-          Set up new position)
+
+         (* value returned is the delta by which to move the point.
+         Set up new position)
 
                    NIL)
                   (T                                         (* read new position from the user)
-          
-          (* create a bitmap of all of the elements that have any point being moved and 
-          get its new position. Use only the region that contains the points.
-          points plus a boarder to catch the lines of a box as large as the region.)
+
+         (* create a bitmap of all of the elements that have any point being moved and get 
+         its new position. Use only the region that contains the points.
+         points plus a boarder to catch the lines of a box as large as the region.)
 
                      (SETQ NONMOVEDHOTSPOTS (SK.HOTSPOTS.NOT.ON.LIST SCRPTS SCRELTS))
                      [SETQ ONEPTELTS (SUBSET SCRELTS (FUNCTION (LAMBDA (ELT)
@@ -4162,9 +4171,9 @@ This will be slow for arcs and curves."]
                      (SETQ FIGINFO (SK.FIGUREIMAGE SCRELTS NIL (INCREASEREGION
                                                                 (COND
                                                                    (ONEPTELTS 
-          
-          (* include the regions of any elements that only have one control point.
-          This picks up text and groups whose image is much larger than the point.)
+
+         (* include the regions of any elements that only have one control point.
+         This picks up text and groups whose image is much larger than the point.)
 
                                                                           (SK.UNIONREGIONS
                                                                            (REGION.CONTAINING.PTS
@@ -4178,9 +4187,9 @@ This will be slow for arcs and curves."]
                      (SETQ FIRSTHOTSPOT (CAR SCRPTS))
                      (SETQ LOWLFT (fetch (SKFIGUREIMAGE SKFIGURE.LOWERLEFT) of FIGINFO))
                      (SETQ IMAGEBM (fetch (SKFIGUREIMAGE SKFIGURE.BITMAP) of FIGINFO))
-          
-          (* move the image by the first hotspot of the first element chosen.
-          This will align the image on the grid correctly.)
+
+         (* move the image by the first hotspot of the first element chosen.
+         This will align the image on the grid correctly.)
 
                      (SETQ IMAGEPOSX (fetch (POSITION XCOORD) of LOWLFT))
                      (SETQ IMAGEPOSY (fetch (POSITION YCOORD) of LOWLFT))
@@ -4211,18 +4220,18 @@ This will be slow for arcs and curves."]
                          (for PT in NONMOVEDHOTSPOTS do (MARKPOINT PT SKW OTHERCONTROLPOINTMARK))
                          (STATUSPRINT SKW "Position was outside the window, copy not placed.")
                          (RETURN NIL)))
-          
-          (* GET.BITMAP.POSITION returns the position that the cursor was in which is the 
-          position of the first hotspot.)
+
+         (* GET.BITMAP.POSITION returns the position that the cursor was in which is the 
+         position of the first hotspot.)
 
                      (for PT in NONMOVEDHOTSPOTS do (MARKPOINT PT SKW OTHERCONTROLPOINTMARK))
                      (SETQ GDELTAPOS (SK.MAP.FROM.WINDOW.TO.NEAREST.GRID
                                       (create POSITION
-                                             XCOORD _ (IDIFFERENCE (fetch (POSITION XCOORD)
+                                             XCOORD ← (IDIFFERENCE (fetch (POSITION XCOORD)
                                                                       of NEWPOS)
                                                              (fetch (POSITION XCOORD) of FIRSTHOTSPOT
                                                                     ))
-                                             YCOORD _ (IDIFFERENCE (fetch (POSITION YCOORD)
+                                             YCOORD ← (IDIFFERENCE (fetch (POSITION YCOORD)
                                                                       of NEWPOS)
                                                              (fetch (POSITION YCOORD) of FIRSTHOTSPOT
                                                                     )))
@@ -4236,9 +4245,9 @@ This will be slow for arcs and curves."]
                   ((EQ X 'DON'T)
                    (RETURN))
                   ((POSITIONP X)
-          
-          (* value returned is the delta by which to move the point.
-          Set up new position)
+
+         (* value returned is the delta by which to move the point.
+         Set up new position)
 
                    (SETQ GDELTAPOS X)))
                (SETQ NEWGLOBALS (MAPCOLLECTSKETCHSPECS SCRELTS (FUNCTION SK.MOVE.ITEM.POINTS)
@@ -4250,32 +4259,28 @@ This will be slow for arcs and curves."]
                (CLOSEPROMPTWINDOW SKW])
 
 (SK.MOVE.ITEM.POINTS
-  [LAMBDA (SELELT GLOBALDELTAPOS W LOCALPTS)                 (* rrb "11-Jul-85 13:44")
-          
-          (* SELELT is a sketch element at least one of whose points was selected for a 
-          translate operation. GLOBALDELTAPOS is the amount the item is to be translated.
-          LOCALPTS is the list of points that was selected.
-          This function moves any of those that belong to SELELT and return the new 
-          global. If all of SELELT points are on LOCALPTS this is a SK.TRANSLATE.ITEM.)
+  [LAMBDA (SELELT GLOBALDELTAPOS W LOCALPTS)                 (* rrb "11-Jul-85 13:44")
+
+         (* SELELT is a sketch element at least one of whose points was selected for a 
+         translate operation. GLOBALDELTAPOS is the amount the item is to be translated.
+         LOCALPTS is the list of points that was selected.
+         This function moves any of those that belong to SELELT and return the new global.
+         If all of SELELT points are on LOCALPTS this is a SK.TRANSLATE.ITEM.)
 
     (PROG ((ELTHOTSPOTS (fetch (LOCALPART HOTSPOTS) of (fetch (SCREENELT LOCALPART) of SELELT)))
-           MOVEDPTS NEWGLOBAL OLDGLOBAL NEWSCREENELT)
-          
-          (* this shouldn't happen but don't cause an error if it does.)
-
+           MOVEDPTS NEWGLOBAL OLDGLOBAL NEWSCREENELT)        (* this shouldn't happen but don't 
+                                                             cause an error if it does.)
           (OR (SETQ MOVEDPTS (INTERSECTION ELTHOTSPOTS LOCALPTS))
               (RETURN))
-          
-          (* map the difference point onto a grid location that would have the same 
-          screen distance but will leave things on a power of two.)
+
+         (* map the difference point onto a grid location that would have the same screen 
+         distance but will leave things on a power of two.)
 
           (SETQ OLDGLOBAL (fetch (SCREENELT GLOBALPART) of SELELT))
           (COND
              ((EQ (LENGTH MOVEDPTS)
-                  (LENGTH ELTHOTSPOTS))
-          
-          (* all of its hot spots have been moved, just translate it)
-
+                  (LENGTH ELTHOTSPOTS))                      (* all of its hot spots have been 
+                                                             moved, just translate it)
               (OR (SETQ NEWGLOBAL (SK.TRANSLATE.GLOBALPART OLDGLOBAL GLOBALDELTAPOS W))
                   (RETURN NIL)))
              ((SETQ NEWGLOBAL (SK.TRANSLATE.POINTS MOVEDPTS GLOBALDELTAPOS SELELT W)))
@@ -4284,13 +4289,13 @@ This will be slow for arcs and curves."]
           (RETURN NEWGLOBAL])
 
 (SK.TRANSLATEPTSFN
-  [LAMBDA (ELEMENTTYPE)                                      (* rrb " 5-May-85 16:25")
+  [LAMBDA (ELEMENTTYPE)                                      (* rrb " 5-May-85 16:25")
                                                              (* goes from an element type name to 
                                                              its EXPANDFN)
     (fetch (SKETCHTYPE TRANSLATEPTSFN) of (GETPROP ELEMENTTYPE 'SKETCHTYPE])
 
 (SK.TRANSLATE.POINTS
-  [LAMBDA (SELPTS GLOBALDELTA SKETCHELT W)                   (* rrb " 6-May-86 11:01")
+  [LAMBDA (SELPTS GLOBALDELTA SKETCHELT W)                   (* rrb " 6-May-86 11:01")
                                                              (* moves the selected points by a 
                                                              global amount.)
     (AND SKETCHELT (PROG ((NEWGLOBAL (APPLY* (SK.TRANSLATEPTSFN (fetch (SCREENELT GTYPE) of SKETCHELT
@@ -4302,9 +4307,9 @@ This will be slow for arcs and curves."]
                          (RETURN NEWGLOBAL])
 
 (SK.SELECT.MULTIPLE.POINTS
-  [LAMBDA (SKW)                                              (* rrb "10-Dec-85 16:41")
-          
-          (* * allows the user to select a collection of control points.)
+  [LAMBDA (SKW)                                              (* rrb "10-Dec-85 16:41")
+
+         (* * allows the user to select a collection of control points.)
 
     (PROG ((INTERIOR (DSPCLIPPINGREGION NIL SKW))
            SELECTABLEITEMS HOTSPOTCACHE NOW OLDX ORIGX NEWX NEWY OLDY ORIGY SELPTS PREVMOUSEBUTTONS 
@@ -4320,55 +4325,50 @@ This will be slow for arcs and curves."]
           (COND
              ((INSIDEP INTERIOR (LASTMOUSEX SKW)
                      (LASTMOUSEY SKW)))
-             (T 
-          
-          (* first press was outside of the window, don't select anything.)
-
+             (T                                              (* first press was outside of the 
+                                                             window, don't select anything.)
                 (SK.TAKE.MARKS.DOWN SKW HOTSPOTCACHE)
                 (RETURN)))
       SELECTLP
           (COND
              ((MOUSESTATE UP)
               (GO SHIFTDOWNLP)))
-          
-          (* this label provides an entry for the code that tests if the shift key is 
-          down.)
+
+         (* this label provides an entry for the code that tests if the shift key is down.)
 
       SELAFTERTEST
           (SETQ NEWY (LASTMOUSEY SKW))
           (SETQ NEWX (LASTMOUSEX SKW))
           [COND
              [(NOT MOUSEINSIDE?)
-          
-          (* mouse is outside, don't do anything other than wait for it to come back in.
-          If the user has let up all buttons, the branch to SELECTEXIT will have been 
-          taken.)
+
+         (* mouse is outside, don't do anything other than wait for it to come back in.
+         If the user has let up all buttons, the branch to SELECTEXIT will have been 
+         taken.)
 
               (COND
                  ((INSIDEP INTERIOR NEWX NEWY)
                   (SETQ MOUSEINSIDE? T)                      (* restore the saved selected items.)
                   (for ELT in SELPTS do (SK.ADD.PT.SELECTION ELT SKW]
              ((NOT (INSIDEP INTERIOR NEWX NEWY))
-          
-          (* mouse just went outside, remove selections but save them in case mouse comes 
-          back in.)
+
+         (* mouse just went outside, remove selections but save them in case mouse comes 
+         back in.)
 
               (SETQ MOUSEINSIDE? NIL)
               (SETQ SELPTS (WINDOWPROP SKW 'SKETCH.SELECTIONS))
               (for ELT in SELPTS do (SK.REMOVE.PT.SELECTION ELT SKW)))
              [(NEQ PREVMOUSEBUTTONS LASTMOUSEBUTTONS)
-          
-          (* another button has gone down, mark this as the origin of a new box to sweep.)
+
+         (* another button has gone down, mark this as the origin of a new box to sweep.)
 
               (SETQ PREVMOUSEBUTTONS LASTMOUSEBUTTONS)
               (SETQ ORIGX (LASTMOUSEX SKW))
-              (SETQ ORIGY (LASTMOUSEY SKW))
-          
-          (* add or delete the element that the button press occurred on if any.)
-
+              (SETQ ORIGY (LASTMOUSEY SKW))                  (* add or delete the element that the 
+                                                             button press occurred on if any.)
               (AND (SETQ NOW (IN.SKETCH.ELT? HOTSPOTCACHE (create POSITION
-                                                                 XCOORD _ NEWX
-                                                                 YCOORD _ NEWY)
+                                                                 XCOORD ← NEWX
+                                                                 YCOORD ← NEWY)
                                     T))
                    (COND
                       ((LASTMOUSESTATE (ONLY LEFT))          (* add selection.)
@@ -4380,10 +4380,8 @@ This will be slow for arcs and curves."]
                    (SETQ SELPTS (SK.CONTROL.POINTS.IN.REGION HOTSPOTCACHE (MIN ORIGX NEWX)
                                        (MIN ORIGY NEWY)
                                        (MAX ORIGX NEWX)
-                                       (MAX ORIGY NEWY]
-          
-          (* add or delete any with in the swept out area.)
-
+                                       (MAX ORIGY NEWY]      (* add or delete any with in the swept 
+                                                             out area.)
               (COND
                  ((LASTMOUSESTATE (ONLY LEFT))               (* left only selects.)
                   (for SELPT in SELPTS do (SK.ADD.PT.SELECTION SELPT SKW)))
@@ -4394,18 +4392,14 @@ This will be slow for arcs and curves."]
           (GO SELECTLP)
       SHIFTDOWNLP
           (COND
-             ((MOUSESTATE (NOT UP))
-          
-          (* button went down again, initialize the button state and click position.)
-
+             ((MOUSESTATE (NOT UP))                          (* button went down again, initialize 
+                                                             the button state and click position.)
               (SETQ PREVMOUSEBUTTONS NIL)
               (GO SELAFTERTEST))
              ((.SHIFTKEYDOWNP.)
               [COND
-                 [(NOT MOUSEINSIDE?)
-          
-          (* mouse is outside%: if it comes back in, mark the selections.)
-
+                 [(NOT MOUSEINSIDE?)                         (* mouse is outside%: if it comes back 
+                                                             in, mark the selections.)
                   (COND
                      ((INSIDEP INTERIOR (LASTMOUSEX SKW)
                              (LASTMOUSEY SKW))
@@ -4424,9 +4418,9 @@ This will be slow for arcs and curves."]
           (RETURN SELPTS])
 
 (SK.CONTROL.POINTS.IN.REGION
-  [LAMBDA (HOTSPOTCACHE LEFT BOTTOM RIGHT TOP)               (* rrb " 6-May-85 16:22")
-          
-          (* * returns a list of the control points that are within LOCALREGION)
+  [LAMBDA (HOTSPOTCACHE LEFT BOTTOM RIGHT TOP)               (* rrb " 6-May-85 16:22")
+
+         (* * returns a list of the control points that are within LOCALREGION)
 
     (PROG ((RLEFT (DIFFERENCE LEFT SK.POINT.WIDTH))
            (RBOTTOM (DIFFERENCE BOTTOM SK.POINT.WIDTH))
@@ -4444,17 +4438,15 @@ This will be slow for arcs and curves."]
                    do (COND
                          ((ILESSP (CAR XBUCKET)
                                  RLEFT)                      (* stop when X gets too small.)
-                          (RETURN))) 
-          
-          (* collect the points if there are any elements cached there.)
-
+                          (RETURN)))                         (* collect the points if there are any 
+                                                             elements cached there.)
                       (AND (CDR XBUCKET)
                            (SETQ ELTS (SK.ADD.POINT ELTS (CAR XBUCKET)
                                              (CAR YBUCKET]
           (RETURN ELTS])
 
 (SK.ADD.PT.SELECTION
-  [LAMBDA (PT WINDOW MARKBM)                                 (* rrb " 9-May-85 10:18")
+  [LAMBDA (PT WINDOW MARKBM)                                 (* rrb " 9-May-85 10:18")
                                                              (* adds an item to the selection list 
                                                              of WINDOW.)
     (COND
@@ -4463,22 +4455,21 @@ This will be slow for arcs and curves."]
         (WINDOWADDPROP WINDOW 'SKETCH.SELECTIONS PT])
 
 (SK.REMOVE.PT.SELECTION
-  [LAMBDA (PT WINDOW MARKBM)                                 (* rrb " 9-May-85 10:22")
+  [LAMBDA (PT WINDOW MARKBM)                                 (* rrb " 9-May-85 10:22")
                                                              (* removes an item from the selection 
                                                              list of WINDOW.)
     (COND
        ((MEMBER PT (WINDOWPROP WINDOW 'SKETCH.SELECTIONS))
         (MARKPOINT PT WINDOW MARKBM)
-          
-          (* used to call WINDOWDELPROP but it has a bug that it only removes EQ things.)
+
+         (* used to call WINDOWDELPROP but it has a bug that it only removes EQ things.)
 
         (WINDOWPROP WINDOW 'SKETCH.SELECTIONS (REMOVE PT (WINDOWPROP WINDOW 'SKETCH.SELECTIONS])
 
 (SK.ADD.POINT
-  [LAMBDA (PTLST X Y)                                        (* rrb " 6-May-85 16:22")
-          
-          (* add the point X Y to PTLST unless it is already a member.)
-
+  [LAMBDA (PTLST X Y)                                        (* rrb " 6-May-85 16:22")
+                                                             (* add the point X Y to PTLST unless 
+                                                             it is already a member.)
     (COND
        ((for PT in PTLST thereis (AND (EQ (fetch (POSITION XCOORD) of PT)
                                           X)
@@ -4486,27 +4477,25 @@ This will be slow for arcs and curves."]
                                           Y)))
         PTLST)
        (T (CONS (create POSITION
-                       XCOORD _ X
-                       YCOORD _ Y)
+                       XCOORD ← X
+                       YCOORD ← Y)
                 PTLST])
 
 (SK.ELTS.CONTAINING.PTS
-  [LAMBDA (PTLST SKW)                                        (* rrb " 4-May-85 15:38")
-          
-          (* returns the list of elements that have any points on PTLST.)
-
-    (bind (HOTSPOTCACHE _ (SK.HOTSPOT.CACHE SKW))
+  [LAMBDA (PTLST SKW)                                        (* rrb " 4-May-85 15:38")
+                                                             (* returns the list of elements that 
+                                                             have any points on PTLST.)
+    (bind (HOTSPOTCACHE ← (SK.HOTSPOT.CACHE SKW))
           ELTS for POS in PTLST do (SETQ ELTS (UNION (SK.ELTS.FROM.HOTSPOT POS HOTSPOTCACHE)
                                                      ELTS)) finally 
-          
-          (* reverse them so the first selected pt has its element first.)
-
+                                                             (* reverse them so the first selected 
+                                                             pt has its element first.)
                                                                   (RETURN (REVERSE ELTS])
 
 (SK.HOTSPOTS.NOT.ON.LIST
-  [LAMBDA (PTLST ELTS)                                       (* rrb "19-Jul-85 13:18")
-          
-          (* returns a list of the hot spots on any of ELTS that aren't on PTLST.)
+  [LAMBDA (PTLST ELTS)                                       (* rrb "19-Jul-85 13:18")
+
+         (* returns a list of the hot spots on any of ELTS that aren't on PTLST.)
 
     (bind OTHERHOTSPOTS for ELT in ELTS do [for HOTSPOT in (fetch (SCREENELT HOTSPOTS) of ELT)
                                               do (OR (MEMBER HOTSPOT PTLST)
@@ -4522,9 +4511,9 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (SK.SET.MOVE.MODE
-  [LAMBDA (SKW NEWMODE)                                      (* rrb " 2-Jun-85 12:52")
-          
-          (* * reads a value of move command mode and makes it the default)
+  [LAMBDA (SKW NEWMODE)                                      (* rrb " 2-Jun-85 12:52")
+
+         (* * reads a value of move command mode and makes it the default)
 
     (PROG [(LOCALNEWMODE (OR NEWMODE (READMOVEMODE]
           (RETURN (AND LOCALNEWMODE (replace (SKETCHCONTEXT SKETCHMOVEMODE)
@@ -4535,31 +4524,30 @@ This will be slow for arcs and curves."]
                                                 NIL])
 
 (SK.SET.MOVE.MODE.POINTS
-  [LAMBDA (SKW)                                              (* rrb " 2-Jun-85 12:47")
+  [LAMBDA (SKW)                                              (* rrb " 2-Jun-85 12:47")
                                                              (* sets the default to move mode to 
                                                              points.)
     (SK.SET.MOVE.MODE SKW 'POINTS])
 
 (SK.SET.MOVE.MODE.ELEMENTS
-  [LAMBDA (SKW)                                              (* rrb " 2-Jun-85 12:48")
+  [LAMBDA (SKW)                                              (* rrb " 2-Jun-85 12:48")
                                                              (* sets the default to move mode to 
                                                              elements)
     (SK.SET.MOVE.MODE SKW 'ELEMENTS])
 
 (SK.SET.MOVE.MODE.COMBINED
-  [LAMBDA (SKW)                                              (* rrb " 2-Jun-85 12:49")
+  [LAMBDA (SKW)                                              (* rrb " 2-Jun-85 12:49")
                                                              (* sets the default to move mode to 
                                                              combined move.)
     (SK.SET.MOVE.MODE SKW 'COMBINED])
 
 (READMOVEMODE
-  [LAMBDA (MENUTITLE)                                        (* rrb " 6-Nov-85 09:54")
-          
-          (* interacts to get whether move mode should be points, elements or both.)
-
+  [LAMBDA (MENUTITLE)                                        (* rrb " 6-Nov-85 09:54")
+                                                             (* interacts to get whether move mode 
+                                                             should be points, elements or both.)
     (\CURSOR.IN.MIDDLE.MENU (create MENU
-                                   TITLE _ (OR MENUTITLE "Top level MOVE command should apply to?")
-                                   ITEMS _ '((Points 'POINTS 
+                                   TITLE ← (OR MENUTITLE "Top level MOVE command should apply to?")
+                                   ITEMS ← '((Points 'POINTS 
                                     "Top level MOVE command will be the same as MOVE POINTS command."
                                                     )
                                              (Elements 'ELEMENTS 
@@ -4568,84 +4556,75 @@ This will be slow for arcs and curves."]
                                              (Combined 'COMBINED 
                      "MOVE command will move points if a single point is clicked; elements otherwise"
                                                     ))
-                                   CENTERFLG _ T])
+                                   CENTERFLG ← T])
 )
 (DEFINEQ
 
 (SK.ALIGN.POINTS
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:50")
-          
-          (* lets the user select a collection of points and aligns them.)
-
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:50")
+                                                             (* lets the user select a collection 
+                                                             of points and aligns them.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.MOVE.POINTS (KWOTE W))
            W])
 
 (SK.SEL.AND.ALIGN.POINTS
-  [LAMBDA (ALIGNHOW W)                                       (* rrb "22-Jan-86 14:57")
-          
-          (* * lets the user select a collection of control point and aligns them.)
+  [LAMBDA (ALIGNHOW W)                                       (* rrb "22-Jan-86 14:57")
+
+         (* * lets the user select a collection of control point and aligns them.)
 
     (SK.DO.ALIGN.POINTS (SK.SELECT.MULTIPLE.POINTS W)
            ALIGNHOW W])
 
 (SK.ALIGN.POINTS.LEFT
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:51")
-          
-          (* lets the user select a collection of points and aligns them.)
-
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:51")
+                                                             (* lets the user select a collection 
+                                                             of points and aligns them.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.ALIGN.POINTS ''LEFT (KWOTE W))
            W])
 
 (SK.ALIGN.POINTS.RIGHT
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:51")
-          
-          (* lets the user select a collection of points and aligns them.)
-
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:51")
+                                                             (* lets the user select a collection 
+                                                             of points and aligns them.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.ALIGN.POINTS ''RIGHT (KWOTE W))
            W])
 
 (SK.ALIGN.POINTS.TOP
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:57")
-          
-          (* lets the user select a collection of points and aligns them.)
-
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:57")
+                                                             (* lets the user select a collection 
+                                                             of points and aligns them.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.ALIGN.POINTS ''TOP (KWOTE W))
            W])
 
 (SK.ALIGN.POINTS.BOTTOM
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:58")
-          
-          (* lets the user select a collection of points and aligns them.)
-
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:58")
+                                                             (* lets the user select a collection 
+                                                             of points and aligns them.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.ALIGN.POINTS ''BOTTOM (KWOTE W))
            W])
 
 (SK.EVEN.SPACE.POINTS.IN.X
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:58")
-          
-          (* lets the user select a collection of points and spaces them evenly in X)
-
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:58")
+                                                             (* lets the user select a collection 
+                                                             of points and spaces them evenly in X)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.ALIGN.POINTS ''EVENX (KWOTE W))
            W])
 
 (SK.EVEN.SPACE.POINTS.IN.Y
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:58")
-          
-          (* lets the user select a collection of points and spaces them evenly in Y)
-
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:58")
+                                                             (* lets the user select a collection 
+                                                             of points and spaces them evenly in Y)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.ALIGN.POINTS ''EVENY (KWOTE W))
            W])
 
 (SK.DO.ALIGN.POINTS
-  [LAMBDA (SCRPTS ALIGNHOW SKW)                              (* rrb "12-Sep-86 18:28")
-          
-          (* * aligns a collection of points according to ALIGNHOW which can be LEFT 
-          RIGHT TOP BOTTOM EVENX or EVENY)
+  [LAMBDA (SCRPTS ALIGNHOW SKW)                              (* rrb "12-Sep-86 18:28")
 
-    (SKED.CLEAR.SELECTION SKW)
-          
-          (* if there isn't at least two points, don't do anything.)
+         (* * aligns a collection of points according to ALIGNHOW which can be LEFT RIGHT 
+         TOP BOTTOM EVENX or EVENY)
 
+    (SKED.CLEAR.SELECTION SKW)                               (* if there isn't at least two points, 
+                                                             don't do anything.)
     (AND (CDR SCRPTS)
          (PROG ((SELECTEDPTSTRUC (SK.GET.SELECTED.ELEMENT.STRUCTURE SCRPTS SKW))
                 MOSTSELBUCK LEASTSELBUCK DIMENSION LEAST MOST PREMOVEFN X NEWGLOBALS)
@@ -4659,10 +4638,8 @@ This will be slow for arcs and curves."]
                         'DON'T)
                     (RETURN))
                (SETQ MOSTSELBUCK (CAR SELECTEDPTSTRUC))
-               (SETQ LEASTSELBUCK (CAR SELECTEDPTSTRUC))
-          
-          (* find the dimension of interest and do some error checking.)
-
+               (SETQ LEASTSELBUCK (CAR SELECTEDPTSTRUC))     (* find the dimension of interest and 
+                                                             do some error checking.)
                (SETQ DIMENSION (SELECTQ ALIGNHOW
                                    ((LEFT RIGHT) 
                                         'HORIZONTAL)
@@ -4789,22 +4766,22 @@ This will be slow for arcs and curves."]
                   N])
 
 (SK.GET.SELECTED.ELEMENT.STRUCTURE
-  [LAMBDA (SELPTS SKW)                                       (* rrb "22-Jan-86 14:58")
-          
-          (* returns a list of the points and elements that each selected point on SELPTS 
-          corresponds to. Returns a list of lists of the form
-          (SELPT (GPT1 GELT1) |...| (GPTn GELTn)))
+  [LAMBDA (SELPTS SKW)                                       (* rrb "22-Jan-86 14:58")
 
-    (bind (HOTSPOTCACHE _ (SK.HOTSPOT.CACHE SKW)) for POS in SELPTS
+         (* returns a list of the points and elements that each selected point on SELPTS 
+         corresponds to. Returns a list of lists of the form
+         (SELPT (GPT1 GELT1) |...| (GPTn GELTn)))
+
+    (bind (HOTSPOTCACHE ← (SK.HOTSPOT.CACHE SKW)) for POS in SELPTS
        collect (CONS POS (for ELT in (SK.ELTS.FROM.HOTSPOT POS HOTSPOTCACHE)
                             collect (LIST (SK.CORRESPONDING.CONTROL.PT POS ELT)
                                           ELT])
 
 (SK.CORRESPONDING.CONTROL.PT
-  [LAMBDA (SELPT SCRELEMENT)                                 (* rrb "22-Jan-86 14:59")
-          
-          (* returns the global control point of an element that corresponds to the 
-          screen point SELPT.)
+  [LAMBDA (SELPT SCRELEMENT)                                 (* rrb "22-Jan-86 14:59")
+
+         (* returns the global control point of an element that corresponds to the screen 
+         point SELPT.)
 
     (for I from 1 as PT in (fetch (SCREENELT HOTSPOTS) of SCRELEMENT) when (EQUAL PT SELPT)
        do (RETURN (OR (SK.NTH.CONTROL.POINT (fetch (SCREENELT GLOBALPART) of SCRELEMENT)
@@ -4812,28 +4789,27 @@ This will be slow for arcs and curves."]
                       (SHOULDNT])
 
 (SK.CONTROL.POINT.NUMBER
-  [LAMBDA (SELPT SCRELT)                                     (* rrb "22-Jan-86 10:54")
-          
-          (* returns the control point number that SELPT is on the element SCRELT)
-
+  [LAMBDA (SELPT SCRELT)                                     (* rrb "22-Jan-86 10:54")
+                                                             (* returns the control point number 
+                                                             that SELPT is on the element SCRELT)
     (for I from 1 as HOTPT in (fetch (SCREENELT HOTSPOTS) of SCRELT) when (EQUAL SELPT HOTPT)
        do (RETURN I])
 
 (SK.DO.ALIGN.SETVALUE
-  [LAMBDA (SELBUCKET VALUE DIMENSION VIEWER)                 (* rrb "22-Jan-86 17:23")
+  [LAMBDA (SELBUCKET VALUE DIMENSION VIEWER)                 (* rrb "22-Jan-86 17:23")
                                                              (* performs the alignment of a 
                                                              selection bucket structure.)
-    (bind (SELPT _ (CAR SELBUCKET))
-          (MOVEFN _ (GETSKETCHPROP (INSURE.SKETCH VIEWER)
+    (bind (SELPT ← (CAR SELBUCKET))
+          (MOVEFN ← (GETSKETCHPROP (INSURE.SKETCH VIEWER)
                            'WHENMOVEDFN))
           GDELTA X for GELTSTRUC in (CDR SELBUCKET)
        when (PROG NIL
-          
-          (* calculate the amount that this global element point should be moved and 
-          apply move fn)
+
+         (* calculate the amount that this global element point should be moved and apply 
+         move fn)
                                                              (* don't move it if it moves 0.0)
                   [SETQ GDELTA (create POSITION
-                                      XCOORD _ (COND
+                                      XCOORD ← (COND
                                                   ((EQ DIMENSION 'HORIZONTAL)
                                                    (COND
                                                       ([ZEROP (SETQ X (DIFFERENCE VALUE
@@ -4842,7 +4818,7 @@ This will be slow for arcs and curves."]
                                                        (RETURN))
                                                       (T X)))
                                                   (T 0))
-                                      YCOORD _ (COND
+                                      YCOORD ← (COND
                                                   ((EQ DIMENSION 'VERTICAL)
                                                    (COND
                                                       ([ZEROP (SETQ X (DIFFERENCE VALUE
@@ -4863,15 +4839,15 @@ This will be slow for arcs and curves."]
                      ((EQ X 'DON'T)                          (* if DON'T, don't move this guy.)
                       (RETURN NIL))
                      ((POSITIONP X)
-          
-          (* value returned is the delta by which to move the point.
-          Set up new position)
+
+         (* value returned is the delta by which to move the point.
+         Set up new position)
 
                       (SETQ GDELTA X)))
                   (RETURN T)) join 
-          
-          (* build the history structure here because this is where the old screen 
-          element is known.)
+
+         (* build the history structure here because this is where the old screen element 
+         is known.)
 
                                    (AND (SETQ X (SK.MOVE.ITEM.POINTS (CADR GELTSTRUC)
                                                        GDELTA VIEWER (LIST SELPT)))
@@ -4887,26 +4863,25 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (SKETCH.CREATE.GROUP
-  [LAMBDA (LISTOFSKETCHELEMENTS CONTROLPOINT)                (* rrb " 4-Dec-85 21:38")
+  [LAMBDA (LISTOFSKETCHELEMENTS CONTROLPOINT)                (* rrb " 4-Dec-85 21:38")
                                                              (* creates a sketch group element.)
     (SK.CREATE.GROUP1 LISTOFSKETCHELEMENTS (OR (POSITIONP CONTROLPOINT)
                                                (REGION.CENTER (SK.GLOBAL.REGION.OF.GLOBAL.ELEMENTS
                                                                LISTOFSKETCHELEMENTS])
 
 (SK.CREATE.GROUP1
-  [LAMBDA (GELTS CONTROLPT)                                  (* rrb " 4-Dec-85 21:38")
+  [LAMBDA (GELTS CONTROLPT)                                  (* rrb " 4-Dec-85 21:38")
                                                              (* creates a group element.)
     (SK.UPDATE.GROUP.AFTER.CHANGE (create GLOBALPART
-                                         INDIVIDUALGLOBALPART _
+                                         INDIVIDUALGLOBALPART ←
                                          (create GROUP
-                                                LISTOFGLOBALELTS _ GELTS
-                                                GROUPCONTROLPOINT _ CONTROLPT])
+                                                LISTOFGLOBALELTS ← GELTS
+                                                GROUPCONTROLPOINT ← CONTROLPT])
 
 (SK.UPDATE.GROUP.AFTER.CHANGE
-  [LAMBDA (GROUPELT)                                         (* rrb " 4-Dec-85 21:38")
-          
-          (* updates the dependent field of a group element after a change.)
-
+  [LAMBDA (GROUPELT)                                         (* rrb " 4-Dec-85 21:38")
+                                                             (* updates the dependent field of a 
+                                                             group element after a change.)
     (PROG ((INDGROUPELT (fetch (GLOBALPART INDIVIDUALGLOBALPART) of GROUPELT))
            GROUPREGION)
           (SETQ GROUPREGION (SK.GLOBAL.REGION.OF.GLOBAL.ELEMENTS (fetch (GROUP LISTOFGLOBALELTS)
@@ -4917,26 +4892,25 @@ This will be slow for arcs and curves."]
           (RETURN GROUPELT])
 
 (SK.GROUP.ELTS
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:58")
-          
-          (* lets the user select a collection elements and groups them.)
-
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:58")
+                                                             (* lets the user select a collection 
+                                                             elements and groups them.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.GROUP (KWOTE W))
            W])
 
 (SK.SEL.AND.GROUP
-  [LAMBDA (W)                                                (* rrb "10-Dec-85 17:08")
+  [LAMBDA (W)                                                (* rrb "10-Dec-85 17:08")
                                                              (* lets the user select elements and 
                                                              groups them.)
     (SK.GROUP.ELEMENTS (SK.SELECT.MULTIPLE.ITEMS W T NIL 'GROUP)
            W])
 
 (SK.GROUP.ELEMENTS
-  [LAMBDA (SCRELTS SKW)                                      (* rrb "11-Jul-86 15:51")
-          
-          (* groups the collection of elements SCRELTS.
-          Does this by creating a group element, adding it and deleting the individual 
-          elements.)
+  [LAMBDA (SCRELTS SKW)                                      (* rrb "11-Jul-86 15:51")
+
+         (* groups the collection of elements SCRELTS.
+         Does this by creating a group element, adding it and deleting the individual 
+         elements.)
 
     (SKED.CLEAR.SELECTION SKW)
     (AND SCRELTS (PROG (GROUPELT LOCALGROUPELT)              (* call the group fn if there is one.)
@@ -4948,10 +4922,9 @@ This will be slow for arcs and curves."]
                                                                    SK.GLOBAL.REGION.OF.LOCAL.ELEMENTS
                                                                         SCRELTS
                                                                         (VIEWER.SCALE SKW)))
-                                                    SKW)))
-          
-          (* do grouping. This might return NIL if the when grouped function says not to.)
-
+                                                    SKW)))   (* do grouping. This might return NIL 
+                                                             if the when grouped function says not 
+                                                             to.)
                        (OR (SK.DO.GROUP GROUPELT SKW)
                            (RETURN))                         (* record it on the history list.)
                        (SK.ADD.HISTEVENT 'GROUP (LIST (LIST GROUPELT))
@@ -4959,15 +4932,14 @@ This will be slow for arcs and curves."]
                        (RETURN GROUPELT])
 
 (SK.UNGROUP.ELT
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:58")
-          
-          (* lets the user select a collection elements and groups them.)
-
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:58")
+                                                             (* lets the user select a collection 
+                                                             elements and groups them.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.UNGROUP (KWOTE W))
            W])
 
 (SK.SEL.AND.UNGROUP
-  [LAMBDA (W)                                                (* rrb "10-Dec-85 18:03")
+  [LAMBDA (W)                                                (* rrb "10-Dec-85 18:03")
                                                              (* lets the user select elements and 
                                                              groups them.)
     (PROG NIL
@@ -4990,26 +4962,24 @@ This will be slow for arcs and curves."]
                          W])
 
 (SK.UNGROUP.ELEMENT
-  [LAMBDA (SCRELTS SKW)                                      (* rrb "15-Jan-86 16:12")
+  [LAMBDA (SCRELTS SKW)                                      (* rrb "15-Jan-86 16:12")
                                                              (* ungroups the first group element in 
                                                              SCRELTS.)
     (PROG ((GROUPELTS (for ELT in SCRELTS when (EQ (fetch (SCREENELT GTYPE) of ELT)
                                                    'GROUP) collect (fetch (SCREENELT GLOBALPART)
                                                                       of ELT)))
            X)
-          (OR GROUPELTS (RETURN))
-          
-          (* do the ungrouping. this may return NIL if the ungroup fn says don't.)
-
+          (OR GROUPELTS (RETURN))                            (* do the ungrouping.
+                                                             this may return NIL if the ungroup fn 
+                                                             says don't.)
           (SETQ X (for GROUPELT in GROUPELTS when (SK.DO.UNGROUP GROUPELT SKW)
                      collect (LIST GROUPELT)))
           (AND X (SK.ADD.HISTEVENT 'UNGROUP X SKW])
 
 (SK.GLOBAL.REGION.OF.LOCAL.ELEMENTS
-  [LAMBDA (SCRELTS SCALE)                                    (* rrb "30-Sep-86 18:33")
-          
-          (* returns the global region occuppied by a list of local elements.)
-
+  [LAMBDA (SCRELTS SCALE)                                    (* rrb "30-Sep-86 18:33")
+                                                             (* returns the global region occuppied 
+                                                             by a list of local elements.)
     (PROG (GROUPREGION)
           [for SCRELT in SCRELTS do (SETQ GROUPREGION (COND
                                                          (GROUPREGION 
@@ -5021,10 +4991,9 @@ This will be slow for arcs and curves."]
           (RETURN (UNSCALE.REGION GROUPREGION SCALE])
 
 (SK.LOCAL.REGION.OF.LOCAL.ELEMENTS
-  [LAMBDA (SCRELTS SCALE)                                    (* rrb "30-Sep-86 18:33")
-          
-          (* returns the local region occupied by a list of local elements.)
-
+  [LAMBDA (SCRELTS SCALE)                                    (* rrb "30-Sep-86 18:33")
+                                                             (* returns the local region occupied 
+                                                             by a list of local elements.)
     (bind GROUPREGION for SCRELT in SCRELTS do [SETQ GROUPREGION (COND
                                                                     (GROUPREGION 
                                                              (* first time because UNIONREGIONS 
@@ -5036,16 +5005,15 @@ This will be slow for arcs and curves."]
        finally (RETURN GROUPREGION])
 
 (SK.GLOBAL.REGION.OF.GLOBAL.ELEMENTS
-  [LAMBDA (GELTS)                                            (* rrb "30-Sep-86 17:35")
-          
-          (* returns the global region occuppied by a list of global elements.)
-
+  [LAMBDA (GELTS)                                            (* rrb "30-Sep-86 17:35")
+                                                             (* returns the global region occuppied 
+                                                             by a list of global elements.)
     (COND
        [(LESSP (LENGTH GELTS)
                50)
-          
-          (* for smallish numbers of elements, only do the cons to create the args to 
-          SK.UNIONREGIONS.)
+
+         (* for smallish numbers of elements, only do the cons to create the args to 
+         SK.UNIONREGIONS.)
 
         (APPLY (FUNCTION SK.UNIONREGIONS)
                (for GELT in GELTS collect (SK.ELEMENT.GLOBAL.REGION GELT]
@@ -5061,10 +5029,10 @@ This will be slow for arcs and curves."]
                 (RETURN GROUPREGION])
 
 (SK.UNIONREGIONS
-  [LAMBDA REGIONS                                            (* rrb "30-Sep-86 18:14")
-          
-          (* returns the smallest region that encloses all of REGIONS Is different from 
-          UNIONREGIONS because it works in floating pt)
+  [LAMBDA REGIONS                                            (* rrb "30-Sep-86 18:14")
+
+         (* returns the smallest region that encloses all of REGIONS Is different from 
+         UNIONREGIONS because it works in floating pt)
 
     (COND
        ((EQ 0 REGIONS)
@@ -5095,19 +5063,19 @@ This will be slow for arcs and curves."]
                                                          TP)
                                                   (SETQ TP X]
                 (RETURN (create REGION
-                               LEFT _ LFT
-                               BOTTOM _ BTTM
-                               WIDTH _ (DIFFERENCE RGHT LFT)
-                               HEIGHT _ (DIFFERENCE TP BTTM])
+                               LEFT ← LFT
+                               BOTTOM ← BTTM
+                               WIDTH ← (DIFFERENCE RGHT LFT)
+                               HEIGHT ← (DIFFERENCE TP BTTM])
 
 (SKETCH.REGION.OF.SKETCH
-  [LAMBDA (SKETCH)                                           (* rrb "23-Oct-85 11:17")
+  [LAMBDA (SKETCH)                                           (* rrb "23-Oct-85 11:17")
                                                              (* returns the global region of a 
                                                              sketch.)
     (SK.GLOBAL.REGION.OF.GLOBAL.ELEMENTS (fetch (SKETCH SKETCHELTS) of (INSURE.SKETCH SKETCH])
 
 (SK.FLASHREGION
-  [LAMBDA (REGION WINDOW TEXTURE)                            (* rrb "30-Jul-85 15:47")
+  [LAMBDA (REGION WINDOW TEXTURE)                            (* rrb "30-Jul-85 15:47")
                                                              (* flashes a region)
     (DSPFILL REGION TEXTURE 'INVERT WINDOW)
     (DISMISS 400)
@@ -5116,7 +5084,7 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (INIT.GROUP.ELEMENT
-  [LAMBDA NIL                                                (* rrb "18-Oct-85 17:15")
+  [LAMBDA NIL                                                (* rrb "18-Oct-85 17:15")
                                                              (* initializes the text box element.)
     (COND
        ((NOT (SKETCH.ELEMENT.TYPEP 'GROUP))
@@ -5136,81 +5104,78 @@ This will be slow for arcs and curves."]
                (FUNCTION GROUP.GLOBALREGIONFN])
 
 (GROUP.DRAWFN
-  [LAMBDA (GROUPELT WINDOW REGION OPERATION)                 (* rrb "10-Dec-85 12:38")
+  [LAMBDA (GROUPELT WINDOW REGION OPERATION)                 (* rrb "10-Dec-85 12:38")
                                                              (* draws a group element.)
     (for ELT in (fetch (LOCALGROUP LOCALELEMENTS) of (fetch (SCREENELT LOCALPART) of GROUPELT))
        do (APPLY* (SK.DRAWFN (fetch (SCREENELT GTYPE) of ELT))
                  ELT WINDOW REGION OPERATION])
 
 (GROUP.EXPANDFN
-  [LAMBDA (GROUPELT SCALE STREAM)                            (* rrb "30-Dec-85 17:30")
-          
-          (* creates a local group screen element from a global group element)
-
+  [LAMBDA (GROUPELT SCALE STREAM)                            (* rrb "30-Dec-85 17:30")
+                                                             (* creates a local group screen 
+                                                             element from a global group element)
     (PROG ((GROUPINDVELT (fetch (GLOBALPART INDIVIDUALGLOBALPART) of GROUPELT))
            LOCALREGION)
           (SETQ LOCALREGION (SCALE.REGION.OUT (fetch (GROUP GROUPREGION) of GROUPINDVELT)
                                    SCALE))                   (* put the position in the center.)
           (RETURN (create SCREENELT
-                         LOCALPART _ (create LOCALGROUP
-                                            GROUPPOSITION _ (SK.SCALE.POSITION.INTO.VIEWER
+                         LOCALPART ← (create LOCALGROUP
+                                            GROUPPOSITION ← (SK.SCALE.POSITION.INTO.VIEWER
                                                              (fetch (GROUP GROUPCONTROLPOINT)
                                                                 of GROUPINDVELT)
                                                              SCALE)
-                                            LOCALGROUPREGION _ LOCALREGION
-                                            LOCALELEMENTS _ (for ELEMENT
+                                            LOCALGROUPREGION ← LOCALREGION
+                                            LOCALELEMENTS ← (for ELEMENT
                                                                in (fetch (GROUP LISTOFGLOBALELTS)
                                                                      of GROUPINDVELT)
-                                                               collect (SK.LOCAL.FROM.GLOBAL ELEMENT 
+                                                               collect (SK.LOCAL.FROM.GLOBAL ELEMENT
                                                                               STREAM SCALE)))
-                         GLOBALPART _ GROUPELT])
+                         GLOBALPART ← GROUPELT])
 
 (GROUP.INSIDEFN
-  [LAMBDA (GROUPELT WREG)                                    (* rrb "10-Jan-85 10:37")
-          
-          (* determines if the global group element GROUPELT is inside of WREG.)
-
+  [LAMBDA (GROUPELT WREG)                                    (* rrb "10-Jan-85 10:37")
+                                                             (* determines if the global group 
+                                                             element GROUPELT is inside of WREG.)
     (REGIONSINTERSECTP (fetch (GROUP GROUPREGION) of (fetch (GLOBALPART INDIVIDUALGLOBALPART)
                                                         of GROUPELT))
            WREG])
 
 (GROUP.REGIONFN
-  [LAMBDA (GROUPSCRELT)                                      (* rrb "10-Dec-85 12:38")
+  [LAMBDA (GROUPSCRELT)                                      (* rrb "10-Dec-85 12:38")
                                                              (* returns the region occuppied by a 
                                                              group)
     (fetch (LOCALGROUP LOCALGROUPREGION) of (fetch (SCREENELT LOCALPART) of GROUPSCRELT])
 
 (GROUP.GLOBALREGIONFN
-  [LAMBDA (GGROUPELT)                                        (* rrb "18-Oct-85 17:13")
-          
-          (* returns the global region occupied by a global group element.)
-
+  [LAMBDA (GGROUPELT)                                        (* rrb "18-Oct-85 17:13")
+                                                             (* returns the global region occupied 
+                                                             by a global group element.)
     (fetch (GROUP GROUPREGION) of (fetch (GLOBALPART INDIVIDUALGLOBALPART) of GGROUPELT])
 
 (GROUP.TRANSLATEFN
-  [LAMBDA (SKELT DELTAPOS)                                   (* rrb "28-Apr-85 18:43")
-          
-          (* * returns a group element which has been translated by DELTAPOS)
+  [LAMBDA (SKELT DELTAPOS)                                   (* rrb "28-Apr-85 18:43")
+
+         (* * returns a group element which has been translated by DELTAPOS)
 
     (PROG ((GGROUPELT (fetch (GLOBALPART INDIVIDUALGLOBALPART) of SKELT))
            NEWREG)
           (SETQ NEWREG (REL.MOVE.REGION (fetch (GROUP GROUPREGION) of GGROUPELT)
                               (fetch (POSITION XCOORD) of DELTAPOS)
                               (fetch (POSITION YCOORD) of DELTAPOS)))
-          
-          (* makes a copy of the common global part because it includes the scales which 
-          may change for one of the instances.)
+
+         (* makes a copy of the common global part because it includes the scales which 
+         may change for one of the instances.)
 
           (RETURN (create GLOBALPART
-                         COMMONGLOBALPART _ (APPEND (fetch (GLOBALPART COMMONGLOBALPART) of SKELT))
-                         INDIVIDUALGLOBALPART _ (create GROUP
-                                                       GROUPREGION _ NEWREG
-                                                       LISTOFGLOBALELTS _
+                         COMMONGLOBALPART ← (APPEND (fetch (GLOBALPART COMMONGLOBALPART) of SKELT))
+                         INDIVIDUALGLOBALPART ← (create GROUP
+                                                       GROUPREGION ← NEWREG
+                                                       LISTOFGLOBALELTS ←
                                                        (for SUBELT in (fetch (GROUP LISTOFGLOBALELTS)
                                                                          of GGROUPELT)
                                                           collect (SK.TRANSLATE.GLOBALPART SUBELT 
                                                                          DELTAPOS T))
-                                                       GROUPCONTROLPOINT _ (PTPLUS
+                                                       GROUPCONTROLPOINT ← (PTPLUS
                                                                             (fetch (GROUP 
                                                                                     GROUPCONTROLPOINT
                                                                                           )
@@ -5218,15 +5183,13 @@ This will be slow for arcs and curves."]
                                                                             DELTAPOS])
 
 (GROUP.TRANSFORMFN
-  [LAMBDA (GELT TRANSFORMFN TRANSFORMDATA SCALEFACTOR)       (* rrb " 2-Jun-85 13:10")
-          
-          (* * returns a group element which has been transformed by TRANSFORMFN)
+  [LAMBDA (GELT TRANSFORMFN TRANSFORMDATA SCALEFACTOR)       (* rrb " 2-Jun-85 13:10")
+
+         (* * returns a group element which has been transformed by TRANSFORMFN)
 
     (COND
-       [(EQ TRANSFORMFN (FUNCTION SK.PUT.ON.GRID))
-          
-          (* if putting things on a grid, move only the control point.)
-
+       [(EQ TRANSFORMFN (FUNCTION SK.PUT.ON.GRID))           (* if putting things on a grid, move 
+                                                             only the control point.)
         (PROG ((GGROUPELT (fetch (GLOBALPART INDIVIDUALGLOBALPART) of GELT))
                NOWPOS)
               (SETQ NOWPOS (fetch (GROUP GROUPCONTROLPOINT) of GGROUPELT))
@@ -5235,34 +5198,34 @@ This will be slow for arcs and curves."]
                                                      NOWPOS]
        (T (PROG ((GGROUPELT (fetch (GLOBALPART INDIVIDUALGLOBALPART) of GELT))
                  NEWREG)
-          
-          (* this transforms the old region to get the new one.
-          This is not as good as recalculating the new one from the transformed elements.
-          The latter is hard because the region function only works on local elements and 
-          here we have only global ones.)
+
+         (* this transforms the old region to get the new one.
+         This is not as good as recalculating the new one from the transformed elements.
+         The latter is hard because the region function only works on local elements and 
+         here we have only global ones.)
 
                 (SETQ NEWREG (SK.TRANSFORM.REGION (fetch (GROUP GROUPREGION) of GGROUPELT)
                                     TRANSFORMFN TRANSFORMDATA))
-          
-          (* the control point could also profitably be put on a grid point but no other 
-          elements points are so done and it would be hard.)
+
+         (* the control point could also profitably be put on a grid point but no other 
+         elements points are so done and it would be hard.)
 
                 (RETURN (BOX.SET.SCALES NEWREG (create GLOBALPART
-                                                      COMMONGLOBALPART _ (fetch (GLOBALPART 
+                                                      COMMONGLOBALPART ← (fetch (GLOBALPART 
                                                                                      COMMONGLOBALPART
                                                                                        ) of GELT)
-                                                      INDIVIDUALGLOBALPART _
+                                                      INDIVIDUALGLOBALPART ←
                                                       (create GROUP
-                                                             GROUPREGION _ NEWREG
-                                                             LISTOFGLOBALELTS _
+                                                             GROUPREGION ← NEWREG
+                                                             LISTOFGLOBALELTS ←
                                                              (for SUBELT
                                                                 in (fetch (GROUP LISTOFGLOBALELTS)
                                                                       of GGROUPELT)
-                                                                collect (SK.TRANSFORM.ELEMENT SUBELT 
+                                                                collect (SK.TRANSFORM.ELEMENT SUBELT
                                                                                TRANSFORMFN 
                                                                                TRANSFORMDATA 
                                                                                SCALEFACTOR))
-                                                             GROUPCONTROLPOINT _
+                                                             GROUPCONTROLPOINT ←
                                                              (SK.TRANSFORM.POINT (fetch (GROUP 
                                                                                     GROUPCONTROLPOINT
                                                                                                )
@@ -5270,20 +5233,20 @@ This will be slow for arcs and curves."]
                                                                     TRANSFORMFN TRANSFORMDATA])
 
 (GROUP.READCHANGEFN
-  [LAMBDA (SKW SCRNELTS)                                     (* rrb "14-May-86 19:38")
+  [LAMBDA (SKW SCRNELTS)                                     (* rrb "14-May-86 19:38")
                                                              (* reads how the user wants to change 
                                                              a textbox.)
     (PROG (ASPECT HOW)
           (SETQ HOW (SELECTQ (SETQ ASPECT (\CURSOR.IN.MIDDLE.MENU
                                            (create MENU
-                                                  TITLE _ "Change which part?"
-                                                  ITEMS _ [APPEND (COND
+                                                  TITLE ← "Change which part?"
+                                                  ITEMS ← [APPEND (COND
                                                                      [(SKETCHINCOLORP)
                                                                       '(("Brush color" 'BRUSHCOLOR 
                                                "changes the color of any lines or text in the group."
                                                                                )
-                                                                        ("Filling color" '
-                                                                               FILLINGCOLOR 
+                                                                        ("Filling color" 
+                                                                               'FILLINGCOLOR 
                                  "changes the filling color of any boxes or text boxes in the group."
                                                                                ]
                                                                      (T NIL))
@@ -5305,7 +5268,7 @@ This will be slow for arcs and curves."]
                                                                    (Text 'TEXT 
                                                         "allows changing the properties of the text."
                                                                          ]
-                                                  CENTERFLG _ T)))
+                                                  CENTERFLG ← T)))
                         (TEXT                                (* handle TEXT specially because it 
                                                              has several different cases.)
                               (AND (SETQ HOW (TEXT.READCHANGEFN SKW SCRNELTS T))
@@ -5323,13 +5286,13 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (REGION.CENTER
-  [LAMBDA (REGION)                                           (* rrb "11-Jan-85 18:22")
+  [LAMBDA (REGION)                                           (* rrb "11-Jan-85 18:22")
                                                              (* returns the center of a region)
     (create POSITION
-           XCOORD _ (PLUS (fetch (REGION LEFT) of REGION)
+           XCOORD ← (PLUS (fetch (REGION LEFT) of REGION)
                           (QUOTIENT (fetch (REGION WIDTH) of REGION)
                                  2))
-           YCOORD _ (PLUS (fetch (REGION BOTTOM) of REGION)
+           YCOORD ← (PLUS (fetch (REGION BOTTOM) of REGION)
                           (QUOTIENT (fetch (REGION HEIGHT) of REGION)
                                  2])
 
@@ -5350,18 +5313,16 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (SK.MOVE.GROUP.CONTROL.PT
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:59")
-          
-          (* lets the user move the control point of a group.)
-
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:59")
+                                                             (* lets the user move the control 
+                                                             point of a group.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.MOVE.CONTROL.PT (KWOTE W))
            W])
 
 (SK.SEL.AND.MOVE.CONTROL.PT
-  [LAMBDA (W)                                                (* rrb "23-Jan-86 18:11")
-          
-          (* lets the user select a groups and move its control point.)
-
+  [LAMBDA (W)                                                (* rrb "23-Jan-86 18:11")
+                                                             (* lets the user select a groups and 
+                                                             move its control point.)
     (PROG NIL
           (RETURN (SK.MOVE.GROUP.ELEMENT.CONTROL.POINT
                    [SK.SELECT.ITEM W T (COND
@@ -5380,10 +5341,9 @@ This will be slow for arcs and curves."]
                    W])
 
 (SK.MOVE.GROUP.ELEMENT.CONTROL.POINT
-  [LAMBDA (SCRGROUPELT SKW)                                  (* rrb "27-Jun-86 15:34")
-          
-          (* reads a new location of the control point for a group element.)
-
+  [LAMBDA (SCRGROUPELT SKW)                                  (* rrb "27-Jun-86 15:34")
+                                                             (* reads a new location of the control 
+                                                             point for a group element.)
     (PROG ((GELT (fetch (SCREENELT GLOBALPART) of SCRGROUPELT))
            (INDVGELT (fetch (SCREENELT INDIVIDUALGLOBALPART) of SCRGROUPELT))
            OLDPOS NEWPOS NEWGROUPELT LOCALELT)
@@ -5406,19 +5366,18 @@ This will be slow for arcs and curves."]
                                                                      of LOCALELT))
                  SKW GRAYSHADE)
           (SK.ADD.HISTEVENT 'CHANGE (LIST (create SKHISTORYCHANGESPEC
-                                                 NEWELT _ NEWGROUPELT
-                                                 OLDELT _ GELT
-                                                 PROPERTY _ 'POSITION
-                                                 NEWVALUE _ NEWPOS
-                                                 OLDVALUE _ OLDPOS))
+                                                 NEWELT ← NEWGROUPELT
+                                                 OLDELT ← GELT
+                                                 PROPERTY ← 'POSITION
+                                                 NEWVALUE ← NEWPOS
+                                                 OLDVALUE ← OLDPOS))
                  SKW)
           (RETURN NEWGROUPELT])
 
 (SK.READ.NEW.GROUP.CONTROL.PT
-  [LAMBDA (VIEWER LOCALGROUPREGION)                          (* rrb "14-Jul-86 13:51")
-          
-          (* reads where the user wants the new control point to be.)
-
+  [LAMBDA (VIEWER LOCALGROUPREGION)                          (* rrb "14-Jul-86 13:51")
+                                                             (* reads where the user wants the new 
+                                                             control point to be.)
     (PROG (PT)                                               (* outline the group)
           (SK.DRAWBOX (fetch (REGION LEFT) of LOCALGROUPREGION)
                  (fetch (REGION BOTTOM) of LOCALGROUPREGION)
@@ -5453,7 +5412,7 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (SK.DO.GROUP
-  [LAMBDA (GROUPELT SKW)                                     (* rrb "30-Sep-86 17:38")
+  [LAMBDA (GROUPELT SKW)                                     (* rrb "30-Sep-86 17:38")
                                                              (* does a group event.
                                                              Used to undo UNGROUP too.)
     (PROG (LOCALELT OKEDGELTS)
@@ -5466,17 +5425,15 @@ This will be slow for arcs and curves."]
              with (SK.ORDER.ELEMENTS OKEDGELTS))
           (SK.UPDATE.GROUP.AFTER.CHANGE GROUPELT)
           (for GELT in OKEDGELTS do (SK.DELETE.ELEMENT1 GELT SKW T))
-          (SETQ LOCALELT (SK.ADD.ELEMENT GROUPELT SKW T T T))
-          
-          (* flash the grouped area to let user know something happened.)
-
+          (SETQ LOCALELT (SK.ADD.ELEMENT GROUPELT SKW T T T))(* flash the grouped area to let user 
+                                                             know something happened.)
           (SK.FLASHREGION (fetch (LOCALGROUP LOCALGROUPREGION) of (fetch (SCREENELT LOCALPART)
                                                                      of LOCALELT))
                  SKW GRAYSHADE)
           (RETURN LOCALELT])
 
 (SK.CHECK.WHENGROUPEDFN
-  [LAMBDA (VIEWER ELEMENTS)                                  (* rrb "15-Jan-86 16:07")
+  [LAMBDA (VIEWER ELEMENTS)                                  (* rrb "15-Jan-86 16:07")
                                                              (* checks the when grouped fn of a 
                                                              sketch viewer.)
     (PROG (GROUPFN X)
@@ -5491,7 +5448,7 @@ This will be slow for arcs and curves."]
                      (T ELEMENTS])
 
 (SK.DO.UNGROUP
-  [LAMBDA (GROUPELT SKW)                                     (* rrb "11-Jul-86 15:51")
+  [LAMBDA (GROUPELT SKW)                                     (* rrb "11-Jul-86 15:51")
                                                              (* does a ungroup event.
                                                              Used to undo GROUP too.)
     (PROG NIL
@@ -5510,7 +5467,7 @@ This will be slow for arcs and curves."]
           (RETURN GROUPELT])
 
 (SK.CHECK.WHENUNGROUPEDFN
-  [LAMBDA (VIEWER GROUPELT)                                  (* rrb "15-Jan-86 16:19")
+  [LAMBDA (VIEWER GROUPELT)                                  (* rrb "15-Jan-86 16:19")
                                                              (* checks the when ungrouped fn of a 
                                                              sketch viewer.)
     (PROG (UNGROUPFN)
@@ -5520,14 +5477,14 @@ This will be slow for arcs and curves."]
                            'DON'T])
 
 (SK.GROUP.UNDO
-  [LAMBDA (EVENTARGS SKW)                                    (* rrb "15-Jan-86 16:12")
+  [LAMBDA (EVENTARGS SKW)                                    (* rrb "15-Jan-86 16:12")
                                                              (* undoes a group event)
     (for GRP in EVENTARGS do (SK.DO.UNGROUP (CAR GRP)
                                     SKW))
     T])
 
 (SK.UNGROUP.UNDO
-  [LAMBDA (EVENTARGS SKW)                                    (* rrb "15-Jan-86 15:47")
+  [LAMBDA (EVENTARGS SKW)                                    (* rrb "15-Jan-86 15:47")
                                                              (* undoes a ungroup event)
     (for GRP in EVENTARGS do (SK.DO.GROUP (CAR GRP)
                                     SKW))
@@ -5545,22 +5502,21 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (SK.FREEZE.ELTS
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:59")
-          
-          (* lets the user select a collection elements and freezes them.)
-
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:59")
+                                                             (* lets the user select a collection 
+                                                             elements and freezes them.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.FREEZE (KWOTE W))
            W])
 
 (SK.SEL.AND.FREEZE
-  [LAMBDA (W)                                                (* rrb "11-Dec-85 15:30")
+  [LAMBDA (W)                                                (* rrb "11-Dec-85 15:30")
                                                              (* lets the user select elements and 
                                                              freezes them.)
     (SK.FREEZE.ELEMENTS (SK.SELECT.MULTIPLE.ITEMS W T NIL 'FROZEN)
            W])
 
 (SK.FREEZE.ELEMENTS
-  [LAMBDA (SCRELTS SKW)                                      (* rrb "11-Dec-85 15:30")
+  [LAMBDA (SCRELTS SKW)                                      (* rrb "11-Dec-85 15:30")
                                                              (* freezes the collection of elements 
                                                              SCRELTS.)
     (PROG (GELTS GELT)
@@ -5570,15 +5526,14 @@ This will be slow for arcs and curves."]
           (SK.ADD.HISTEVENT 'FREEZE GELTS SKW])
 
 (SK.UNFREEZE.ELT
-  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:59")
-          
-          (* lets the user select a collection elements and unfreezes them.)
-
+  [LAMBDA (W)                                                (* rrb "31-Jan-86 10:59")
+                                                             (* lets the user select a collection 
+                                                             elements and unfreezes them.)
     (SK.EVAL.AS.PROCESS (LIST 'SK.SEL.AND.UNFREEZE (KWOTE W))
            W])
 
 (SK.SEL.AND.UNFREEZE
-  [LAMBDA (W)                                                (* rrb "12-Dec-85 12:25")
+  [LAMBDA (W)                                                (* rrb "12-Dec-85 12:25")
                                                              (* lets the user select elements and 
                                                              freezes them.)
     (PROG NIL
@@ -5600,7 +5555,7 @@ This will be slow for arcs and curves."]
                          W])
 
 (SK.UNFREEZE.ELEMENTS
-  [LAMBDA (SCRELTS SKW)                                      (* rrb "11-Dec-85 15:30")
+  [LAMBDA (SCRELTS SKW)                                      (* rrb "11-Dec-85 15:30")
                                                              (* unfreezes the collection of 
                                                              elements SCRELTS.)
     (PROG (GELTS GELT)
@@ -5610,24 +5565,24 @@ This will be slow for arcs and curves."]
           (SK.ADD.HISTEVENT 'UNFREEZE GELTS SKW])
 
 (SK.FREEZE.UNDO
-  [LAMBDA (EVENTARGS SKW)                                    (* rrb "11-Dec-85 15:28")
+  [LAMBDA (EVENTARGS SKW)                                    (* rrb "11-Dec-85 15:28")
                                                              (* undoes a freeze event)
     (SK.DO.UNFREEZE EVENTARGS SKW])
 
 (SK.UNFREEZE.UNDO
-  [LAMBDA (EVENTARGS SKW)                                    (* rrb "11-Dec-85 15:28")
+  [LAMBDA (EVENTARGS SKW)                                    (* rrb "11-Dec-85 15:28")
                                                              (* undoes a unfreeze event)
     (SK.DO.FREEZE EVENTARGS SKW])
 
 (SK.DO.FREEZE
-  [LAMBDA (GELTS SKW)                                        (* rrb "11-Dec-85 15:27")
+  [LAMBDA (GELTS SKW)                                        (* rrb "11-Dec-85 15:27")
                                                              (* does a freeze event.
                                                              Used to undo UNFREEZE too.)
     (for GELT in GELTS do (ADDSKETCHELEMENTPROP GELT 'PROTECTION 'FROZEN))
     GELTS])
 
 (SK.DO.UNFREEZE
-  [LAMBDA (GELTS SKW)                                        (* rrb "11-Dec-85 15:27")
+  [LAMBDA (GELTS SKW)                                        (* rrb "11-Dec-85 15:27")
                                                              (* does a unfreeze event.
                                                              Used to undo FREEZE too.)
     (for GELT in GELTS do (REMOVESKETCHELEMENTPROP GELT 'PROTECTION 'FROZEN))
@@ -5645,36 +5600,36 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (SKETCH.ELEMENTS.OF.SKETCH
-  [LAMBDA (SKETCH)                                           (* rrb " 2-Aug-85 16:21")
-          
-          (* Returns the list of elements that are in SKETCH.
-          SKETCH can be either a SKETCH structure, a sketch window
-          (sometimes called a viewer) or a SKETCH stream
-          (obtained via (OPENIMAGESTREAM (QUOTE name)
-          (QUOTE SKETCH))%. If SKETCH is not a sketch, a sketch window or a sketch 
-          stream, it returns NIL. This can be used with sketch streams to determine the 
-          elements created by a call to a display function or series of functions by 
-          looking at the list differences; new elements are always added at the end.))
+  [LAMBDA (SKETCH)                                           (* rrb " 2-Aug-85 16:21")
+
+         (* Returns the list of elements that are in SKETCH.
+         SKETCH can be either a SKETCH structure, a sketch window
+         (sometimes called a viewer) or a SKETCH stream
+         (obtained via (OPENIMAGESTREAM (QUOTE name)
+         (QUOTE SKETCH))%. If SKETCH is not a sketch, a sketch window or a sketch stream, 
+         it returns NIL. This can be used with sketch streams to determine the elements 
+         created by a call to a display function or series of functions by looking at the 
+         list differences; new elements are always added at the end.))
 
     (fetch (SKETCH SKETCHELTS) of (INSURE.SKETCH SKETCH T])
 
 (SKETCH.LIST.OF.ELEMENTS
-  [LAMBDA (SKETCH PREDICATE INSIDEGROUPSFLG)                 (* rrb "14-Aug-85 16:26")
-          
-          (* Returns a list of the sketch elements in SKETCH that satisfy PREDICATE.
-          If INSIDEGROUPSFLG is T, elements that are members of a group will be 
-          considered too. Otherwise only top level objects are considered.
-          Note%: PREDICATE will be applied to GROUP elements even when INSIDEGROUPSFLG is 
-          T.)
+  [LAMBDA (SKETCH PREDICATE INSIDEGROUPSFLG)                 (* rrb "14-Aug-85 16:26")
+
+         (* Returns a list of the sketch elements in SKETCH that satisfy PREDICATE.
+         If INSIDEGROUPSFLG is T, elements that are members of a group will be considered 
+         too. Otherwise only top level objects are considered.
+         Note%: PREDICATE will be applied to GROUP elements even when INSIDEGROUPSFLG is 
+         T.)
                                                              (* FOR NOW, IGNORE INSIDEGROUPSFLG)
     (for ELT in (SKETCH.ELEMENTS.OF.SKETCH SKETCH) when (APPLY* PREDICATE ELT) collect ELT])
 
 (SKETCH.ADD.ELEMENT
-  [LAMBDA (ELEMENT SKETCH NODISPLAYFLG)                      (* rrb "30-Aug-86 15:09")
-          
-          (* Adds an element to a sketch. If NODISPLAYFLG is NIL, any windows currently 
-          displaying SKETCH will be updated to reflect ELEMENT's addition.
-          If NODISPLAYFLG is T, the displays won't be updated.)
+  [LAMBDA (ELEMENT SKETCH NODISPLAYFLG)                      (* rrb "30-Aug-86 15:09")
+
+         (* Adds an element to a sketch. If NODISPLAYFLG is NIL, any windows currently 
+         displaying SKETCH will be updated to reflect ELEMENT's addition.
+         If NODISPLAYFLG is T, the displays won't be updated.)
 
     (PROG [(SKSTRUC (COND
                        ((NULL SKETCH)
@@ -5691,14 +5646,14 @@ This will be slow for arcs and curves."]
           (RETURN SKSTRUC])
 
 (SKETCH.DELETE.ELEMENT
-  [LAMBDA (ELEMENT SKETCH INSIDEGROUPSFLG NODISPLAYFLG)      (* rrb "19-Oct-85 17:09")
-          
-          (* Deletes an element from a sketch. If INSIDEGROUPSFLG is T, the element will 
-          be deleted even if it is inside a group.
-          Otherwise it will be deleted only if it is on the top level.
-          If NODISPLAYFLG is NIL, any windows currently displaying SKETCH will be updated 
-          to reflect ELEMENT's deletion. If NODISPLAYFLG is T, the displays won't be 
-          updated. It returns ELEMENT if ELEMENT was deleted.)
+  [LAMBDA (ELEMENT SKETCH INSIDEGROUPSFLG NODISPLAYFLG)      (* rrb "19-Oct-85 17:09")
+
+         (* Deletes an element from a sketch. If INSIDEGROUPSFLG is T, the element will be 
+         deleted even if it is inside a group. Otherwise it will be deleted only if it is 
+         on the top level. If NODISPLAYFLG is NIL, any windows currently displaying SKETCH 
+         will be updated to reflect ELEMENT's deletion.
+         If NODISPLAYFLG is T, the displays won't be updated.
+         It returns ELEMENT if ELEMENT was deleted.)
 
     (PROG ((SKSTRUC (INSURE.SKETCH SKETCH))
            LOCALELT OLDGELT)                                 (* delete the element to the sketch.)
@@ -5717,10 +5672,9 @@ This will be slow for arcs and curves."]
           (RETURN OLDGELT])
 
 (DELFROMGROUPELT
-  [LAMBDA (ELTTODEL GROUPELT)                                (* rrb " 2-Aug-85 17:03")
-          
-          (* if ELTTODEL is a member of GROUPELT, this deletes it.)
-
+  [LAMBDA (ELTTODEL GROUPELT)                                (* rrb " 2-Aug-85 17:03")
+                                                             (* if ELTTODEL is a member of 
+                                                             GROUPELT, this deletes it.)
     (AND (EQ (fetch (GLOBALPART GTYPE) of GROUPELT)
              'GROUP)
          (PROG ((INDVGROUPELT (fetch (GLOBALPART INDIVIDUALGLOBALPART) of GROUPELT))
@@ -5733,17 +5687,17 @@ This will be slow for arcs and curves."]
                   (T (RETURN (for ELT in SUBELTS thereis (DELFROMGROUPELT ELTTODEL ELT])
 
 (SKETCH.ELEMENT.TYPE
-  [LAMBDA (ELEMENT)                                          (* rrb "14-Aug-85 16:35")
+  [LAMBDA (ELEMENT)                                          (* rrb "14-Aug-85 16:35")
                                                              (* returns the type of a global sketch 
                                                              element)
     (fetch (GLOBALPART GTYPE) of ELEMENT])
 
 (SKETCH.ELEMENT.CHANGED
-  [LAMBDA (SKETCH ELEMENT SKETCHWINDOW)                      (* rrb " 4-Feb-86 15:04")
-          
-          (* If ELEMENT is an element of SKETCH, its local part is recalculated.
-          This is normally used to notify sketch that an image object element has 
-          changed. Note%: this replaces the element with another one.)
+  [LAMBDA (SKETCH ELEMENT SKETCHWINDOW)                      (* rrb " 4-Feb-86 15:04")
+
+         (* If ELEMENT is an element of SKETCH, its local part is recalculated.
+         This is normally used to notify sketch that an image object element has changed.
+         Note%: this replaces the element with another one.)
 
     (PROG ((SKETCH (INSURE.SKETCH SKETCH))
            OLDREG)
@@ -5763,10 +5717,9 @@ This will be slow for arcs and curves."]
           (RETURN ELEMENT])
 
 (SK.ELEMENT.CHANGED1
-  [LAMBDA (SKIMAGEOBJELT OLDREGION SKETCHW)                  (* rrb "21-Aug-85 15:54")
-          
-          (* updates the display of an image object element in a window.)
-
+  [LAMBDA (SKIMAGEOBJELT OLDREGION SKETCHW)                  (* rrb "21-Aug-85 15:54")
+                                                             (* updates the display of an image 
+                                                             object element in a window.)
     (PROG (LOCALELT)
           (COND
              ((SETQ LOCALELT (SK.LOCAL.ELT.FROM.GLOBALPART SKIMAGEOBJELT SKETCHW))
@@ -5778,10 +5731,10 @@ This will be slow for arcs and curves."]
                   (RETURN (SKETCH.ADD.AND.DISPLAY1 SKIMAGEOBJELT SKETCHW])
 
 (SK.UPDATE.GLOBAL.IMAGE.OBJECT.ELEMENT
-  [LAMBDA (SKIMOBJELT VIEWER)                                (* rrb " 4-Feb-86 15:04")
-          
-          (* updates the fields to reflect changes in the size of the image object.)
-
+  [LAMBDA (SKIMOBJELT VIEWER)                                (* rrb " 4-Feb-86 15:04")
+                                                             (* updates the fields to reflect 
+                                                             changes in the size of the image 
+                                                             object.)
     (PROG ((INDVSKIMOBJELT (fetch (GLOBALPART INDIVIDUALGLOBALPART) of SKIMOBJELT))
            IMOBJSIZE REGION SCALE)
           (SETQ IMOBJSIZE (IMAGEBOXSIZE (fetch (SKIMAGEOBJ SKIMAGEOBJ) of INDVSKIMOBJELT)
@@ -5796,11 +5749,11 @@ This will be slow for arcs and curves."]
                          (TIMES (fetch (IMAGEBOX YSIZE) of IMOBJSIZE)
                                 SCALE)))
           (replace (SKIMAGEOBJ SKIMOBJ.OFFSETPOS) of INDVSKIMOBJELT with (create POSITION
-                                                                                XCOORD _
+                                                                                XCOORD ←
                                                                                 (fetch (IMAGEBOX
                                                                                         XKERN)
                                                                                    of IMOBJSIZE)
-                                                                                YCOORD _
+                                                                                YCOORD ←
                                                                                 (fetch (IMAGEBOX
                                                                                         YDESC)
                                                                                    of IMOBJSIZE)))
@@ -5814,10 +5767,9 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (INSURE.SKETCH
-  [LAMBDA (SK NOERRORFLG)                                    (* rrb " 3-Oct-86 15:16")
-          
-          (* returns the SKETCH structure from a window, sketch stream, or a structure.)
-
+  [LAMBDA (SK NOERRORFLG)                                    (* rrb " 3-Oct-86 15:16")
+                                                             (* returns the SKETCH structure from a 
+                                                             window, sketch stream, or a structure.)
     (SK.CHECK.SKETCH.VERSION (COND
                                 ((type? SKETCH SK)
                                  SK)
@@ -5833,7 +5785,7 @@ This will be slow for arcs and curves."]
                                             'SKETCH))
                                     (T (AND (NULL NOERRORFLG)
                                             (ERROR 
-                                                  "sketch stream window doesn't have SKETCH property" 
+                                                  "sketch stream window doesn't have SKETCH property"
                                                    SK]
                                 [(type? IMAGEOBJ SK)
                                  (PROG [(SK? (fetch (SKETCHIMAGEOBJ SKIO.SKETCH)
@@ -5846,14 +5798,12 @@ This will be slow for arcs and curves."]
                                 ((AND (LISTP SK)
                                       (LITATOM (CAR SK))
                                       (for ELT in (CDR SK) always (GLOBALELEMENTP ELT)))
-          
-          (* old form, probably written out by notecards, update to new form.)
-
+                                                             (* old form, probably written out by 
+                                                             notecards, update to new form.)
                                  (PROG (X)
                                        (SETQ X (SKIO.UPDATE.FROM.OLD.FORM SK))
-          
-          (* smash sketch so this won't have to happen every time.)
-
+                                                             (* smash sketch so this won't have to 
+                                                             happen every time.)
                                        (RPLACA SK (CAR X))
                                        (RPLACD SK (CDR X))
                                        (RETURN X)))
@@ -5861,16 +5811,16 @@ This will be slow for arcs and curves."]
                                  (ERROR SK "not a SKETCH"])
 
 (LOCALSPECS.FROM.VIEWER
-  [LAMBDA (SKW)                                              (* rrb "12-May-85 16:46")
+  [LAMBDA (SKW)                                              (* rrb "12-May-85 16:46")
                                                              (* returns the sketch specification 
                                                              displayed in the window SKW.)
     (CDAR (WINDOWPROP SKW 'SKETCHSPECS])
 
 (SK.LOCAL.ELT.FROM.GLOBALPART
-  [LAMBDA (GLOBALPART SKW)                                   (* rrb "18-MAR-83 13:09")
-          
-          (* returns the local element from SKW that has global part GLOBALPART -
-          NIL if there isn't one.)
+  [LAMBDA (GLOBALPART SKW)                                   (* rrb "18-MAR-83 13:09")
+
+         (* returns the local element from SKW that has global part GLOBALPART -
+         NIL if there isn't one.)
 
     (for ELT in (LOCALSPECS.FROM.VIEWER SKW) when (EQ (fetch (SCREENELT GLOBALPART) of ELT)
                                                       GLOBALPART) do (RETURN ELT])
@@ -5881,36 +5831,33 @@ This will be slow for arcs and curves."]
     (WINDOWPROP SKETCHW 'SKETCH])
 
 (INSPECT.SKETCH
-  [LAMBDA (SKW)                                              (* rrb "18-Apr-84 14:44")
-          
-          (* calls the inspector on the sketch specs of a sketch window.)
-
+  [LAMBDA (SKW)                                              (* rrb "18-Apr-84 14:44")
+                                                             (* calls the inspector on the sketch 
+                                                             specs of a sketch window.)
     (PROG ((SPECS (LOCALSPECS.FROM.VIEWER SKW)))
           (COND
              (SPECS (INSPECT/TOP/LEVEL/LIST SPECS])
 
 (ELT.INSIDE.SKETCHWP
-  [LAMBDA (GELT SKW)                                         (* rrb " 8-APR-83 13:18")
-          
-          (* determines if a global element is in the region of a viewer)
-
+  [LAMBDA (GELT SKW)                                         (* rrb " 8-APR-83 13:18")
+                                                             (* determines if a global element is 
+                                                             in the region of a viewer)
     (SK.INSIDE.REGION GELT (WINDOWPROP SKW 'REGION.VIEWED])
 
 (SK.INSIDE.REGION
-  [LAMBDA (GELT REGION)                                      (* rrb "31-Aug-84 10:15")
-          
-          (* determines if the element GELT is inside of the global region REGION)
-
+  [LAMBDA (GELT REGION)                                      (* rrb "31-Aug-84 10:15")
+                                                             (* determines if the element GELT is 
+                                                             inside of the global region REGION)
     (APPLY* (SK.INSIDEFN (fetch (GLOBALPART GTYPE) of GELT))
            GELT REGION])
 )
 (DEFINEQ
 
 (MAPSKETCHSPECS
-  [LAMBDA (SKSPECS SPECFN DATUM DATUM2 DATUM3)               (* rrb "10-Sep-84 14:58")
-          
-          (* walks through a sketch specification list and applies SPECFN to each of the 
-          individual elements.)
+  [LAMBDA (SKSPECS SPECFN DATUM DATUM2 DATUM3)               (* rrb "10-Sep-84 14:58")
+
+         (* walks through a sketch specification list and applies SPECFN to each of the 
+         individual elements.)
 
     (AND SKSPECS (COND
                     ((SCREENELEMENTP SKSPECS)
@@ -5920,10 +5867,10 @@ This will be slow for arcs and curves."]
                     (T (ERROR "unknown figure specification" SKSPECS])
 
 (MAPCOLLECTSKETCHSPECS
-  [LAMBDA (SKSPECS SPECFN DATUM DATUM2 DATUM3 DATUM4)        (* rrb "26-Apr-85 09:29")
-          
-          (* walks through a sketch specification list and applies SPECFN to each of the 
-          individual (elements returning a list of the results.))
+  [LAMBDA (SKSPECS SPECFN DATUM DATUM2 DATUM3 DATUM4)        (* rrb "26-Apr-85 09:29")
+
+         (* walks through a sketch specification list and applies SPECFN to each of the 
+         individual (elements returning a list of the results.))
 
     (AND SKSPECS (COND
                     ((SCREENELEMENTP SKSPECS)
@@ -5934,10 +5881,10 @@ This will be slow for arcs and curves."]
                     (T (ERROR "unknown figure specification" SKSPECS])
 
 (MAPSKETCHSPECSUNTIL
-  [LAMBDA (SKETCHSPECS SPECFN DATUM DATUM2)                  (* rrb " 4-AUG-83 15:22")
-          
-          (* walks through a sketch specification list and applies SPECFN to each of the 
-          individual elements.)
+  [LAMBDA (SKETCHSPECS SPECFN DATUM DATUM2)                  (* rrb " 4-AUG-83 15:22")
+
+         (* walks through a sketch specification list and applies SPECFN to each of the 
+         individual elements.)
 
     (AND SKETCHSPECS (COND
                         ((SKETCH.ELEMENT.NAMEP (fetch (SCREENELT GTYPE) of SKETCHSPECS))
@@ -5949,10 +5896,10 @@ This will be slow for arcs and curves."]
                         (T (ERROR "unknown figure specification" SKETCHSPECS])
 
 (MAPGLOBALSKETCHSPECS
-  [LAMBDA (SKSPECS SPECFN DATUM DATUM2 DATUM3)               (* rrb "19-Feb-85 17:52")
-          
-          (* walks through a list of global sketch elements and applies SPECFN to each of 
-          the individual elements.)
+  [LAMBDA (SKSPECS SPECFN DATUM DATUM2 DATUM3)               (* rrb "19-Feb-85 17:52")
+
+         (* walks through a list of global sketch elements and applies SPECFN to each of 
+         the individual elements.)
 
     (AND SKSPECS (COND
                     ((GLOBALELEMENTP SKSPECS)
@@ -5963,11 +5910,11 @@ This will be slow for arcs and curves."]
                     (T (ERROR "unknown global sketch element" SKSPECS])
 
 (MAPGLOBALSKETCHELEMENTS
-  [LAMBDA (SKSPECS SPECFN DATUM DATUM2 DATUM3)               (* rrb "24-Apr-85 15:02")
-          
-          (* walks through a list of global sketch elements and applies SPECFN to each of 
-          the individual elements. Differes from MAPGLOBALSKETCHSPECS in that it know 
-          about and gets inside of GROUP elements.)
+  [LAMBDA (SKSPECS SPECFN DATUM DATUM2 DATUM3)               (* rrb "24-Apr-85 15:02")
+
+         (* walks through a list of global sketch elements and applies SPECFN to each of 
+         the individual elements. Differes from MAPGLOBALSKETCHSPECS in that it know about 
+         and gets inside of GROUP elements.)
 
     (AND SKSPECS (COND
                     [(GLOBALELEMENTP SKSPECS)
@@ -5993,69 +5940,66 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (SK.ADD.SELECTION
-  [LAMBDA (ITEM/POS WINDOW MARKBM FIRSTFLG)                  (* rrb " 9-May-85 10:42")
+  [LAMBDA (ITEM/POS WINDOW MARKBM FIRSTFLG)                  (* rrb " 9-May-85 10:42")
                                                              (* adds an item to the selection list 
                                                              of WINDOW.)
     (COND
        ([NOT (MEMBER ITEM/POS (WINDOWPROP WINDOW 'SKETCH.SELECTIONS]
-          
-          (* must turning off the element's selection before adding it to the window 
-          selections because the display of the selection check to see if the points are 
-          already selected in another element.)
+
+         (* must turning off the element's selection before adding it to the window 
+         selections because the display of the selection check to see if the points are 
+         already selected in another element.)
 
         (SK.SELECT.ELT ITEM/POS WINDOW MARKBM)
         (WINDOWADDPROP WINDOW 'SKETCH.SELECTIONS ITEM/POS FIRSTFLG])
 
 (SK.COPY.INSERTFN
-  [LAMBDA (IMAGEOBJ SKW)                                 (* rrb "23-Jun-87 13:25")
-          
-          (* * the function that gets called to insert a copy-selection into a sketch 
-        window. Knows how to insert sketches, everything else is text.)
+  [LAMBDA (IMAGEOBJ SKW)                                     (* rrb "23-Jun-87 13:25")
+
+         (* * the function that gets called to insert a copy-selection into a sketch 
+         window. Knows how to insert sketches, everything else is text.)
 
     (PROG (IMAGEOBJYET SELECTION EXTENDSELECTION)
-          
-          (* bind the selection so that if the user has to place an image obj, it is 
-        restored before the characters are unBYSYSBUFed)
+
+         (* bind the selection so that if the user has to place an image obj, it is 
+         restored before the characters are unBYSYSBUFed)
 
           [bind DATUM for IMOBJ inside IMAGEOBJ
              do (COND
-                       ((STRINGP IMOBJ)
-                        (BKSYSBUF IMOBJ))
-                       ((EQ (fetch (IMAGEOBJ IMAGEOBJFNS) of IMOBJ)
-                            SKETCHIMAGEFNS)                  (* this is a sketch imageobj)
-                        [COND
-                           ((NULL IMAGEOBJYET)               (* save SELECTION and 
-                                                           EXTENDSELECTION so they can be 
-                                                           restored)
-                            (SETQ IMAGEOBJYET T)
-                            (SETQ SELECTION (WINDOWPROP SKW 'SELECTION))
-                            (SETQ EXTENDSELECTION (WINDOWPROP SKW 'EXTENDSELECTION]
-                        (SETQ DATUM (IMAGEOBJPROP IMOBJ 'OBJECTDATUM))
-                        (OR (SK.INSERT.SKETCH SKW (fetch (SKETCHIMAGEOBJ SKIO.SKETCH)
-                                                         of DATUM)
-                                   (fetch (SKETCHIMAGEOBJ SKIO.REGION) of DATUM)
-                                   (fetch (SKETCHIMAGEOBJ SKIO.SCALE) of DATUM))
-                            (RETURN)))
-                       (T                                    (* insert the image object whatever 
-                                                           it is)
-                          [COND
-                             ((NULL IMAGEOBJYET)             (* save SELECTION and 
-                                                           EXTENDSELECTION so they can be 
-                                                           restored)
-                              (SETQ IMAGEOBJYET T)
-                              (SETQ SELECTION (WINDOWPROP SKW 'SELECTION))
-                              (SETQ EXTENDSELECTION (WINDOWPROP SKW 'EXTENDSELECTION]
-                                                             (* if the user placed it outside, 
-                                                           just return)
-                          (OR (SK.INSERT.SKETCH SKW [SKETCH.CREATE 'DUMMYNAME 'ELEMENTS
-                                                               (LIST (SETQ DATUM (
-                                                                             SK.ELEMENT.FROM.IMAGEOBJ
-                                                                                  IMOBJ SKW]
-                                     (fetch (SKIMAGEOBJ SKIMOBJ.GLOBALREGION)
-                                        of (fetch (GLOBALPART INDIVIDUALGLOBALPART)
-                                                  of DATUM))
-                                     (VIEWER.SCALE SKW))
-                              (RETURN]
+                   ((STRINGP IMOBJ)
+                    (BKSYSBUF IMOBJ))
+                   ((EQ (fetch (IMAGEOBJ IMAGEOBJFNS) of IMOBJ)
+                        SKETCHIMAGEFNS)                      (* this is a sketch imageobj)
+                    [COND
+                       ((NULL IMAGEOBJYET)                   (* save SELECTION and EXTENDSELECTION 
+                                                             so they can be restored)
+                        (SETQ IMAGEOBJYET T)
+                        (SETQ SELECTION (WINDOWPROP SKW 'SELECTION))
+                        (SETQ EXTENDSELECTION (WINDOWPROP SKW 'EXTENDSELECTION]
+                    (SETQ DATUM (IMAGEOBJPROP IMOBJ 'OBJECTDATUM))
+                    (OR (SK.INSERT.SKETCH SKW (fetch (SKETCHIMAGEOBJ SKIO.SKETCH) of DATUM)
+                               (fetch (SKETCHIMAGEOBJ SKIO.REGION) of DATUM)
+                               (fetch (SKETCHIMAGEOBJ SKIO.SCALE) of DATUM))
+                        (RETURN)))
+                   (T                                        (* insert the image object whatever it 
+                                                             is)
+                      [COND
+                         ((NULL IMAGEOBJYET)                 (* save SELECTION and EXTENDSELECTION 
+                                                             so they can be restored)
+                          (SETQ IMAGEOBJYET T)
+                          (SETQ SELECTION (WINDOWPROP SKW 'SELECTION))
+                          (SETQ EXTENDSELECTION (WINDOWPROP SKW 'EXTENDSELECTION]
+                                                             (* if the user placed it outside, just 
+                                                             return)
+                      (OR (SK.INSERT.SKETCH SKW [SKETCH.CREATE 'DUMMYNAME 'ELEMENTS
+                                                       (LIST (SETQ DATUM (SK.ELEMENT.FROM.IMAGEOBJ
+                                                                          IMOBJ SKW]
+                                 (fetch (SKIMAGEOBJ SKIMOBJ.GLOBALREGION) of (fetch (GLOBALPART
+                                                                                     
+                                                                                 INDIVIDUALGLOBALPART
+                                                                                     ) of DATUM))
+                                 (VIEWER.SCALE SKW))
+                          (RETURN]
           (COND
              (IMAGEOBJYET                                    (* restore the selection)
                     (WINDOWPROP SKW 'SELECTION SELECTION)
@@ -6063,9 +6007,9 @@ This will be slow for arcs and curves."]
                     (SKED.SELECTION.FEEDBACK SKW])
 
 (SCREENELEMENTP
-  [LAMBDA (ELT?)                                             (* rrb "26-Sep-86 14:53")
-          
-          (* * returns ELT? if it is a screen element.)
+  [LAMBDA (ELT?)                                             (* rrb "26-Sep-86 14:53")
+
+         (* * returns ELT? if it is a screen element.)
 
     (PROG (X)
           (RETURN (AND (LISTP ELT?)
@@ -6075,10 +6019,10 @@ This will be slow for arcs and curves."]
                        ELT?])
 
 (SK.ITEM.REGION
-  [LAMBDA (SCRELT)                                           (* rrb "24-Jan-85 17:46")
-          
-          (* SCRELT is a sketch element This function returns the region it occupies.)
-
+  [LAMBDA (SCRELT)                                           (* rrb "24-Jan-85 17:46")
+                                                             (* SCRELT is a sketch element This 
+                                                             function returns the region it 
+                                                             occupies.)
     (PROG [(REGIONFN (SK.REGIONFN (fetch (SCREENELT GTYPE) of SCRELT]
           (RETURN (COND
                      ((OR (NULL REGIONFN)
@@ -6087,11 +6031,10 @@ This will be slow for arcs and curves."]
                      ((APPLY* REGIONFN SCRELT])
 
 (SK.ELEMENT.GLOBAL.REGION
-  [LAMBDA (GELT)                                             (* rrb "18-Oct-85 10:30")
-          
-          (* GELT is a global sketch element This function returns the global region it 
-          occupies.)
-
+  [LAMBDA (GELT)                                             (* rrb "18-Oct-85 10:30")
+                                                             (* GELT is a global sketch element 
+                                                             This function returns the global 
+                                                             region it occupies.)
     (PROG [(REGIONFN (SK.GLOBAL.REGIONFN (fetch (GLOBALPART GTYPE) of GELT]
           (RETURN (COND
                      ((OR (NULL REGIONFN)
@@ -6100,15 +6043,15 @@ This will be slow for arcs and curves."]
                      ((APPLY* REGIONFN GELT])
 
 (SK.LOCAL.ITEMS.IN.REGION
-  [LAMBDA (HOTSPOTCACHE LEFT BOTTOM RIGHT TOP)               (* rrb "31-Jan-85 11:38")
-          
-          (* * returns a list of the LOCALITEMS that are within LOCALREGION)
-          
-          (* changed to take a hotspot cache instead of a list of local items.
-          OLD ARGS were (HOTSPOTCACHE LOCALREGION SCALE) OLD CODE
-          (PROG ((SKREGION (UNSCALE.REGION LOCALREGION SCALE)))
-          (RETURN (for SCRELT in LOCALITEMS when (SK.INSIDE.REGION
-          (fetch (SCREENELT GLOBALPART) of SCRELT) SKREGION) collect SCRELT))))
+  [LAMBDA (HOTSPOTCACHE LEFT BOTTOM RIGHT TOP)               (* rrb "31-Jan-85 11:38")
+
+         (* * returns a list of the LOCALITEMS that are within LOCALREGION)
+
+         (* changed to take a hotspot cache instead of a list of local items.
+         OLD ARGS were (HOTSPOTCACHE LOCALREGION SCALE) OLD CODE
+         (PROG ((SKREGION (UNSCALE.REGION LOCALREGION SCALE)))
+         (RETURN (for SCRELT in LOCALITEMS when (SK.INSIDE.REGION
+         (fetch (SCREENELT GLOBALPART) of SCRELT) SKREGION) collect SCRELT))))
 
     (PROG ((RLEFT (DIFFERENCE LEFT SK.POINT.WIDTH))
            (RBOTTOM (DIFFERENCE BOTTOM SK.POINT.WIDTH))
@@ -6133,48 +6076,48 @@ This will be slow for arcs and curves."]
           (RETURN ELTS])
 
 (SK.REGIONFN
-  [LAMBDA (ELEMENTTYPE)                                      (* rrb " 5-Sep-84 16:06")
-          
-          (* * access fn for getting the function that returns the region of an item from 
-          its type.)
+  [LAMBDA (ELEMENTTYPE)                                      (* rrb " 5-Sep-84 16:06")
+
+         (* * access fn for getting the function that returns the region of an item from 
+         its type.)
 
     (fetch (SKETCHTYPE REGIONFN) of (GETPROP ELEMENTTYPE 'SKETCHTYPE])
 
 (SK.GLOBAL.REGIONFN
-  [LAMBDA (ELEMENTTYPE)                                      (* rrb "18-Oct-85 10:30")
-          
-          (* * access fn for getting the function that returns the global region of a 
-          global sketch element from its type.)
+  [LAMBDA (ELEMENTTYPE)                                      (* rrb "18-Oct-85 10:30")
+
+         (* * access fn for getting the function that returns the global region of a 
+         global sketch element from its type.)
 
     (fetch (SKETCHTYPE GLOBALREGIONFN) of (GETPROP ELEMENTTYPE 'SKETCHTYPE])
 
 (SK.REMOVE.SELECTION
-  [LAMBDA (ITEM/POS WINDOW MARKBM)                           (* rrb " 9-May-85 10:31")
+  [LAMBDA (ITEM/POS WINDOW MARKBM)                           (* rrb " 9-May-85 10:31")
                                                              (* removes an item from the selection 
                                                              list of WINDOW.)
     (COND
        ((MEMBER ITEM/POS (WINDOWPROP WINDOW 'SKETCH.SELECTIONS))
-          
-          (* must remove element from window selections before turning off its selection 
-          because the display of the selection check to see if the points are still 
-          selected in another element.)
+
+         (* must remove element from window selections before turning off its selection 
+         because the display of the selection check to see if the points are still 
+         selected in another element.)
 
         (WINDOWDELPROP WINDOW 'SKETCH.SELECTIONS ITEM/POS)
         (SK.DESELECT.ELT ITEM/POS WINDOW MARKBM])
 
 (SK.SELECT.MULTIPLE.ITEMS
-  [LAMBDA (WINDOW ITEMFLG SELITEMS OPERATION)                (* rrb "10-Dec-85 17:34")
-          
-          (* * selects allows the user to select a group of the sketch elements from the 
-          sketch WINDOW. If ITEMFLG is NIL, the user is allows to select control points 
-          as well as complete items and the returned value may be the position of a 
-          control point. If SELITEMS is given it is used as the items to be marked and 
-          selected from. Keeps control and probably shouldn't)
-          
-          (* the selection protocol is left to add, right to delete.
-          Multiple clicking in the same place upscales for both select and deselect.
-          Sweeping will select or deselect all of the items in the swept out area.
-          Also it keeps control as long as a shift key is down.)
+  [LAMBDA (WINDOW ITEMFLG SELITEMS OPERATION)                (* rrb "10-Dec-85 17:34")
+
+         (* * selects allows the user to select a group of the sketch elements from the 
+         sketch WINDOW. If ITEMFLG is NIL, the user is allows to select control points as 
+         well as complete items and the returned value may be the position of a control 
+         point. If SELITEMS is given it is used as the items to be marked and selected 
+         from. Keeps control and probably shouldn't)
+
+         (* the selection protocol is left to add, right to delete.
+         Multiple clicking in the same place upscales for both select and deselect.
+         Sweeping will select or deselect all of the items in the swept out area.
+         Also it keeps control as long as a shift key is down.)
 
     (PROG ((INTERIOR (DSPCLIPPINGREGION NIL WINDOW))
            SELECTABLEITEMS HOTSPOTCACHE TIMER NOW OLDX ORIGX NEWX NEWY OLDY ORIGY OUTOFFIRSTPICK 
@@ -6195,45 +6138,42 @@ This will be slow for arcs and curves."]
              ((INSIDEP INTERIOR (LASTMOUSEX WINDOW)
                      (LASTMOUSEY WINDOW))
               (SETQ MOUSEINSIDE? T))
-             (T 
-          
-          (* first press was outside of the window, don't select anything.)
-
+             (T                                              (* first press was outside of the 
+                                                             window, don't select anything.)
                 (SK.TAKE.MARKS.DOWN WINDOW HOTSPOTCACHE)
                 (RETURN)))
       SELECTLP
           (COND
              ((MOUSESTATE UP)
               (GO SELECTEXIT)))
-          
-          (* this label provides an entry for the code that tests if the shift key is 
-          down.)
+
+         (* this label provides an entry for the code that tests if the shift key is down.)
 
       SELAFTERTEST
           (SETQ NEWY (LASTMOUSEY WINDOW))
           (SETQ NEWX (LASTMOUSEX WINDOW))
           [COND
              [(NOT MOUSEINSIDE?)
-          
-          (* mouse is outside, don't do anything other than wait for it to come back in.
-          If the user has let up all buttons, the branch to SELECTEXIT will have been 
-          taken.)
+
+         (* mouse is outside, don't do anything other than wait for it to come back in.
+         If the user has let up all buttons, the branch to SELECTEXIT will have been 
+         taken.)
 
               (COND
                  ((INSIDEP INTERIOR NEWX NEWY)
                   (SETQ MOUSEINSIDE? T)                      (* restore the saved selected items.)
                   (for ELT in SELITEMS do (SK.ADD.SELECTION ELT WINDOW]
              ((NOT (INSIDEP INTERIOR NEWX NEWY))
-          
-          (* mouse just went outside, remove selections but save them in case mouse comes 
-          back in.)
+
+         (* mouse just went outside, remove selections but save them in case mouse comes 
+         back in.)
 
               (SETQ MOUSEINSIDE? NIL)
               (SETQ SELITEMS (WINDOWPROP WINDOW 'SKETCH.SELECTIONS))
               (for ELT in SELITEMS do (SK.REMOVE.SELECTION ELT WINDOW)))
              [(NEQ PREVMOUSEBUTTONS LASTMOUSEBUTTONS)
-          
-          (* another button has gone down, mark this as the origin of a new box to sweep.)
+
+         (* another button has gone down, mark this as the origin of a new box to sweep.)
 
               (SETQ PREVMOUSEBUTTONS LASTMOUSEBUTTONS)
               (SETQ ORIGX (LASTMOUSEX WINDOW))
@@ -6242,13 +6182,11 @@ This will be slow for arcs and curves."]
                  ((NULL ITEMFLG)                             (* clear any selections that are of 
                                                              single points.)
                   (for SEL in (WINDOWPROP WINDOW 'SKETCH.SELECTIONS) when (POSITIONP SEL)
-                     do (SK.REMOVE.SELECTION SEL WINDOW]
-          
-          (* add or delete the element that the button press occurred on if any.)
-
+                     do (SK.REMOVE.SELECTION SEL WINDOW]     (* add or delete the element that the 
+                                                             button press occurred on if any.)
               (AND [SETQ NOW (IN.SKETCH.ELT? HOTSPOTCACHE (create POSITION
-                                                                 XCOORD _ NEWX
-                                                                 YCOORD _ NEWY)
+                                                                 XCOORD ← NEWX
+                                                                 YCOORD ← NEWY)
                                     (AND (NULL ITEMFLG)
                                          (LASTMOUSESTATE (ONLY LEFT))
                                          (NULL (WINDOWPROP WINDOW 'SKETCH.SELECTIONS]
@@ -6263,25 +6201,21 @@ This will be slow for arcs and curves."]
                  ((OR (IGREATERP (IABS (IDIFFERENCE ORIGX NEWX))
                              SK.NO.MOVE.DISTANCE)
                       (IGREATERP (IABS (IDIFFERENCE ORIGY NEWY))
-                             SK.NO.MOVE.DISTANCE))
-          
-          (* make the first pick move further so that it is easier to multiple click.)
-
-                  (SETQ OUTOFFIRSTPICK T)))
-          
-          (* cursor has moved more than the minimum amount since last noticed.)
-          
-          (* add or delete any with in the swept out area.)
-
+                             SK.NO.MOVE.DISTANCE))           (* make the first pick move further so 
+                                                             that it is easier to multiple click.)
+                  (SETQ OUTOFFIRSTPICK T)))                  (* cursor has moved more than the 
+                                                             minimum amount since last noticed.)
+                                                             (* add or delete any with in the swept 
+                                                             out area.)
               (COND
                  ([AND (LASTMOUSESTATE (NOT UP))
                        (SETQ SELITEMS (SK.LOCAL.ITEMS.IN.REGION HOTSPOTCACHE (MIN ORIGX NEWX)
                                              (MIN ORIGY NEWY)
                                              (MAX ORIGX NEWX)
                                              (MAX ORIGY NEWY]
-          
-          (* if selecting multiple things, it must be whole items.
-          Update NOW to be an item if it isn't already.)
+
+         (* if selecting multiple things, it must be whole items.
+         Update NOW to be an item if it isn't already.)
 
                   [COND
                      ((POSITIONP NOW)
@@ -6317,9 +6251,9 @@ This will be slow for arcs and curves."]
                        (SK.ADD.SELECTION (SETQ NOW (IN.SKETCH.ELT? HOTSPOTCACHE NOW))
                               WINDOW))
                       ((SCREENELEMENTP NOW)
-          
-          (* thing now selected is an item, select all selectable items keeping the first 
-          one selected on the front.)
+
+         (* thing now selected is an item, select all selectable items keeping the first 
+         one selected on the front.)
 
                        (for SELITEM in (SETQ NOW (CONS NOW (REMOVE NOW SELECTABLEITEMS)))
                           do (SK.ADD.SELECTION SELITEM WINDOW]
@@ -6327,23 +6261,19 @@ This will be slow for arcs and curves."]
               (GO CLICKLP)))
       SHIFTDOWNLP
           (COND
-             ((MOUSESTATE (NOT UP))
-          
-          (* button went down again, initialize the button state and click position.)
-
+             ((MOUSESTATE (NOT UP))                          (* button went down again, initialize 
+                                                             the button state and click position.)
               (SETQ PREVMOUSEBUTTONS NIL)
               (SETQ OUTOFFIRSTPICK NIL)
               (GO SELAFTERTEST))
              ((.SHIFTKEYDOWNP.)
-          
-          (* flip selection marks because if cursor is outside when shift key is let up, 
-          nothing is selected.)
+
+         (* flip selection marks because if cursor is outside when shift key is let up, 
+         nothing is selected.)
 
               [COND
-                 [(NOT MOUSEINSIDE?)
-          
-          (* mouse is outside%: if it comes back in, mark the selections.)
-
+                 [(NOT MOUSEINSIDE?)                         (* mouse is outside%: if it comes back 
+                                                             in, mark the selections.)
                   (COND
                      ((INSIDEP INTERIOR (LASTMOUSEX WINDOW)
                              (LASTMOUSEY WINDOW))
@@ -6358,24 +6288,19 @@ This will be slow for arcs and curves."]
               (GO SHIFTDOWNLP)))
           (SETQ SELITEMS (WINDOWPROP WINDOW 'SKETCH.SELECTIONS))
           (COND
-             (MOUSEINSIDE? 
-          
-          (* unmark and remove the selected items from the window property list.)
-
+             (MOUSEINSIDE?                                   (* unmark and remove the selected 
+                                                             items from the window property list.)
                     (for SEL in SELITEMS do (SK.REMOVE.SELECTION SEL WINDOW)))
-             (T 
-          
-          (* they have already been unmarked, just remove them from the window.)
-
+             (T                                              (* they have already been unmarked, 
+                                                             just remove them from the window.)
                 (WINDOWPROP WINDOW 'SKETCH.SELECTIONS NIL)))
           (SK.TAKE.MARKS.DOWN WINDOW HOTSPOTCACHE)
           (RETURN SELITEMS])
 
 (SKETCH.GET.ELEMENTS
-  [LAMBDA (VIEWER SINGLEELEMENTFLG WHICHONES)                (* rrb "17-Dec-85 15:35")
-          
-          (* hilites the selection points and lets the user select one or more.)
-
+  [LAMBDA (VIEWER SINGLEELEMENTFLG WHICHONES)                (* rrb "17-Dec-85 15:35")
+                                                             (* hilites the selection points and 
+                                                             lets the user select one or more.)
     (PROG [[SELECTABLEITEMS (COND
                                ((LISTP WHICHONES)
                                 (for ELT in WHICHONES collect (COND
@@ -6395,53 +6320,49 @@ This will be slow for arcs and curves."]
                            collect (fetch (SCREENELT GLOBALPART) of SCRELT])
 
 (SK.PUT.MARKS.UP
-  [LAMBDA (SKETCHW HOTSPOTCACHE)                             (* rrb "29-Jan-85 17:40")
-          
-          (* makes sure the selection points are up in a window.)
-
+  [LAMBDA (SKETCHW HOTSPOTCACHE)                             (* rrb "29-Jan-85 17:40")
+                                                             (* makes sure the selection points are 
+                                                             up in a window.)
     (COND
        ((NULL (WINDOWPROP SKETCHW 'MARKS.UP))
         (SK.SHOWMARKS SKETCHW HOTSPOTCACHE)
         (WINDOWPROP SKETCHW 'MARKS.UP T])
 
 (SK.TAKE.MARKS.DOWN
-  [LAMBDA (SKETCHW HOTSPOTCACHE)                             (* rrb "29-Jan-85 17:41")
-          
-          (* makes sure the selection points are down in a window.)
-
+  [LAMBDA (SKETCHW HOTSPOTCACHE)                             (* rrb "29-Jan-85 17:41")
+                                                             (* makes sure the selection points are 
+                                                             down in a window.)
     (COND
        ((WINDOWPROP SKETCHW 'MARKS.UP)
         (SK.SHOWMARKS SKETCHW HOTSPOTCACHE)
         (WINDOWPROP SKETCHW 'MARKS.UP NIL])
 
 (SK.TRANSLATE.GLOBALPART
-  [LAMBDA (GLOBALELT DELTAPOS RETURNELTIFCANTFLG)            (* rrb "19-May-86 14:52")
-          
-          (* GLOBALELT is a sketch element that was selected for a translate operation.
-          DELTAPOS is the amount the item is to be translated.)
+  [LAMBDA (GLOBALELT DELTAPOS RETURNELTIFCANTFLG)            (* rrb "19-May-86 14:52")
+
+         (* GLOBALELT is a sketch element that was selected for a translate operation.
+         DELTAPOS is the amount the item is to be translated.)
 
     (PROG ((TRANSLATEFN (SK.TRANSLATEFN (fetch (GLOBALPART GTYPE) of GLOBALELT)))
            NEWGLOBAL OLDGLOBAL ACTIVEREGION)
           (RETURN (COND
                      ((OR (NULL TRANSLATEFN)
-                          (EQ TRANSLATEFN 'NILL))
-          
-          (* if can't translate, return the same thing.
-          This is probably an error condition.)
-
+                          (EQ TRANSLATEFN 'NILL))            (* if can't translate, return the same 
+                                                             thing. This is probably an error 
+                                                             condition.)
                       GLOBALELT)
                      ((SETQ NEWGLOBAL (APPLY* TRANSLATEFN GLOBALELT DELTAPOS))
-          
-          (* copy the property list so that undoing works and because this code is used 
-          to make copies too.)
+
+         (* copy the property list so that undoing works and because this code is used to 
+         make copies too.)
 
                       (SK.COPY.ELEMENT.PROPERTY.LIST NEWGLOBAL)
                       [COND
                          ([AND (SETQ ACTIVEREGION (GETSKETCHELEMENTPROP NEWGLOBAL 'ACTIVEREGION))
                                (EQUAL ACTIVEREGION (GETSKETCHELEMENTPROP GLOBALELT 'ACTIVEREGION]
-          
-          (* update the ACTIVEREGION if the element has one and it is the same in the new 
-          element.)
+
+         (* update the ACTIVEREGION if the element has one and it is the same in the new 
+         element.)
 
                           (PUTSKETCHELEMENTPROP NEWGLOBAL 'ACTIVEREGION (REL.MOVE.REGION
                                                                          ACTIVEREGION
@@ -6450,17 +6371,15 @@ This will be slow for arcs and curves."]
                                                                          (fetch (POSITION YCOORD)
                                                                             of DELTAPOS]
                       NEWGLOBAL)
-                     (RETURNELTIFCANTFLG 
-          
-          (* in the case of translating a whole sketch, need to return something.)
-
+                     (RETURNELTIFCANTFLG                     (* in the case of translating a whole 
+                                                             sketch, need to return something.)
                             GLOBALELT])
 
 (SK.TRANSLATE.ITEM
-  [LAMBDA (SELELT GLOBALDELTAPOS W)                          (* rrb "21-Jan-85 18:35")
-          
-          (* SELELT is a sketch element that was selected for a translate operation.
-          GLOBALDELTAPOS is the amount the item is to be translated.)
+  [LAMBDA (SELELT GLOBALDELTAPOS W)                          (* rrb "21-Jan-85 18:35")
+
+         (* SELELT is a sketch element that was selected for a translate operation.
+         GLOBALDELTAPOS is the amount the item is to be translated.)
 
     (PROG (NEWGLOBAL OLDGLOBAL)
           (COND
@@ -6473,19 +6392,19 @@ This will be slow for arcs and curves."]
               (RETURN NEWGLOBAL])
 
 (SK.TRANSLATEFN
-  [LAMBDA (ELEMENTTYPE)                                      (* rrb " 4-Sep-84 17:01")
+  [LAMBDA (ELEMENTTYPE)                                      (* rrb " 4-Sep-84 17:01")
     (fetch (SKETCHTYPE TRANSLATEFN) of (GETPROP ELEMENTTYPE 'SKETCHTYPE])
 
 (TRANSLATE.SKETCH
-  [LAMBDA (SKETCH NEWXORG NEWYORG)                           (* rrb " 9-Jul-85 12:36")
-          
-          (* * translates all the elements in a sketch to make the new {0, 0} be NEWXORG 
-          NEWYORG)
+  [LAMBDA (SKETCH NEWXORG NEWYORG)                           (* rrb " 9-Jul-85 12:36")
+
+         (* * translates all the elements in a sketch to make the new {0, 0} be NEWXORG 
+         NEWYORG)
 
     (PROG [(DELTAPOS (create POSITION
-                            XCOORD _ (MINUS NEWXORG)
-                            YCOORD _ (MINUS NEWYORG]
-          (RETURN (create SKETCH using SKETCH SKETCHELTS _ (for GELT in (fetch (SKETCH SKETCHELTS)
+                            XCOORD ← (MINUS NEWXORG)
+                            YCOORD ← (MINUS NEWYORG]
+          (RETURN (create SKETCH using SKETCH SKETCHELTS ← (for GELT in (fetch (SKETCH SKETCHELTS)
                                                                            of SKETCH)
                                                               collect (SK.TRANSLATE.GLOBALPART GELT 
                                                                              DELTAPOS T])
@@ -6511,7 +6430,7 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (SK.INPUT.SCALE
-  [LAMBDA (SKW)                                              (* rrb " 4-Sep-85 15:35")
+  [LAMBDA (SKW)                                              (* rrb " 4-Sep-85 15:35")
                                                              (* returns the scale that input should 
                                                              be)
     (PROG [(SK (WINDOWPROP SKW 'SKETCHCONTEXT]
@@ -6521,19 +6440,16 @@ This will be slow for arcs and curves."]
               (RETURN NIL)))
           (RETURN (COND
                      ((fetch (SKETCHCONTEXT SKETCHINPUTSCALE) of SK))
-                     (T 
-          
-          (* early form of sketch that doesn't have an input scale.)
-
+                     (T                                      (* early form of sketch that doesn't 
+                                                             have an input scale.)
                         (SK.UPDATE.SKETCHCONTEXT SK)
                         (replace (SKETCHCONTEXT SKETCHINPUTSCALE) of SK with 1.0)
                         1.0])
 
 (SK.UPDATE.SKETCHCONTEXT
-  [LAMBDA (SKETCHCONTEXT)                                    (* rrb " 4-Sep-85 14:55")
-          
-          (* updates an instance of a sketch context to have enough fields.)
-
+  [LAMBDA (SKETCHCONTEXT)                                    (* rrb " 4-Sep-85 14:55")
+                                                             (* updates an instance of a sketch 
+                                                             context to have enough fields.)
     (PROG ((NEWSK (CREATE.DEFAULT.SKETCH.CONTEXT)))
           [COND
              ((GREATERP (DIFFERENCE (LENGTH NEWSK)
@@ -6543,7 +6459,7 @@ This will be slow for arcs and curves."]
           (RETURN SKETCHCONTEXT])
 
 (SK.SET.INPUT.SCALE
-  [LAMBDA (W)                                                (* rrb "19-Aug-86 11:52")
+  [LAMBDA (W)                                                (* rrb "19-Aug-86 11:52")
                                                              (* sets the size of the
                                                              (input scale))
     (SK.SET.INPUT.SCALE.VALUE (RNUMBER (CONCAT "Input scale is now " (SK.INPUT.SCALE W)
@@ -6554,15 +6470,14 @@ This will be slow for arcs and curves."]
            W])
 
 (SK.SET.INPUT.SCALE.CURRENT
-  [LAMBDA (W)                                                (* rrb "11-Jul-86 15:51")
-          
-          (* sets the size of the input scale to the scale of the current window.)
-
+  [LAMBDA (W)                                                (* rrb "11-Jul-86 15:51")
+                                                             (* sets the size of the input scale to 
+                                                             the scale of the current window.)
     (SK.SET.INPUT.SCALE.VALUE (VIEWER.SCALE W)
            W])
 
 (SK.SET.INPUT.SCALE.VALUE
-  [LAMBDA (NEWINPUTSCALE SKW)                                (* rrb "14-May-86 19:29")
+  [LAMBDA (NEWINPUTSCALE SKW)                                (* rrb "14-May-86 19:29")
                                                              (* sets the input scale to 
                                                              NEWINPUTSCALE)
     (AND (NUMBERP NEWINPUTSCALE)
@@ -6578,14 +6493,14 @@ This will be slow for arcs and curves."]
 (DEFINEQ
 
 (SK.SET.FEEDBACK.MODE
-  [LAMBDA (VALUE)                                            (* rrb "19-Nov-85 13:25")
-          
-          (* sets the control on how much feedback to give the user as they are entering 
-          new figure elements.)
+  [LAMBDA (VALUE)                                            (* rrb "19-Nov-85 13:25")
+
+         (* sets the control on how much feedback to give the user as they are entering 
+         new figure elements.)
 
     [OR (MEMB VALUE '(POINTS T ALWAYS))
         (SETQ VALUE (\CURSOR.IN.MIDDLE.MENU (create MENU
-                                                   ITEMS _ '(("Points only" 'POINTS 
+                                                   ITEMS ← '(("Points only" 'POINTS 
                                       "Only the control points will be shown when entering elements."
                                                                     )
                                                              ("Fast figures" T 
@@ -6594,7 +6509,7 @@ This will be slow for arcs and curves."]
                                                              ("All figures" 'ALWAYS 
        "Most elements are shown while they are being entered.
 This will be slow for arcs and curves."))
-                                                   CENTERFLG _ T]
+                                                   CENTERFLG ← T]
     (AND VALUE (SETQ SKETCH.VERBOSE.FEEDBACK (SELECTQ VALUE
                                                  (POINTS NIL)
                                                  VALUE])
@@ -6604,10 +6519,8 @@ This will be slow for arcs and curves."))
     (SK.SET.FEEDBACK.MODE 'POINTS])
 
 (SK.SET.FEEDBACK.VERBOSE
-  [LAMBDA NIL
-          
-          (* sets the feedback to provide images on elements that are fast.)
-
+  [LAMBDA NIL                                                (* sets the feedback to provide images 
+                                                             on elements that are fast.)
     (SK.SET.FEEDBACK.MODE T])
 
 (SK.SET.FEEDBACK.ALWAYS
@@ -6635,8 +6548,34 @@ This will be slow for arcs and curves."))
     (fetch (SKETCH SKETCHNAME) of (INSURE.SKETCH SKW])
 
 (SK.SHRINK.ICONCREATE
-(LAMBDA (W OLD-ICON POSITION) (* ; "Edited 25-Apr-88 15:44 by drc:") (* ;;; "Create the icon that represents this window.") (LET ((ICONTITLE (WINDOWPROP W (QUOTE SKETCH.ICON.TITLE))) (TITLE (SKETCH.TITLE W)) (ICON (OR OLD-ICON (WINDOWPROP W (QUOTE ICON))))) (COND (ICON (CL:UNLESS (OR (EQUAL ICONTITLE TITLE) (NOT ICONTITLE)) (* ;; "if we built this and the title is the same, or he has already put an icon on this, then we don't need to update it.") (SETQ ICONTITLE (OR TITLE "")) (WINDOWPROP W (QUOTE SKETCH.ICON.TITLE) ICONTITLE) (ICONTITLE ICONTITLE NIL NIL ICON)) ICON) (T (* ;; "make a new icon. Give it a title of '' so it can be distinguished from an ICON that the user supplied without an ICONTITLE.") (SETQ ICONTITLE (OR TITLE "")) (WINDOWPROP W (QUOTE SKETCH.ICON.TITLE) ICONTITLE) (TITLEDICONW SKETCH.TITLED.ICON.TEMPLATE ICONTITLE (COND ((NEQ TEDIT.ICON.FONT (QUOTE NOBIND)) TEDIT.ICON.FONT) (T (DEFAULTFONT (QUOTE DISPLAY)))) POSITION T NIL (QUOTE FILE))))))
-)
+  [LAMBDA (W OLD-ICON POSITION)                              (* ; "Edited 25-Apr-88 15:44 by drc:")
+
+(* ;;; "Create the icon that represents this window.")
+
+    (LET [(ICONTITLE (WINDOWPROP W 'SKETCH.ICON.TITLE))
+          (TITLE (SKETCH.TITLE W))
+          (ICON (OR OLD-ICON (WINDOWPROP W 'ICON]
+         (COND
+            (ICON (CL:UNLESS (OR (EQUAL ICONTITLE TITLE)
+                                 (NOT ICONTITLE))
+
+                      (* ;; "if we built this and the title is the same, or he has already put an icon on this, then we don't need to update it.")
+
+                      (SETQ ICONTITLE (OR TITLE ""))
+                      (WINDOWPROP W 'SKETCH.ICON.TITLE ICONTITLE)
+                      (ICONTITLE ICONTITLE NIL NIL ICON))
+                  ICON)
+            (T 
+               (* ;; "make a new icon. Give it a title of '' so it can be distinguished from an ICON that the user supplied without an ICONTITLE.")
+
+               (SETQ ICONTITLE (OR TITLE ""))
+               (WINDOWPROP W 'SKETCH.ICON.TITLE ICONTITLE)
+               (TITLEDICONW SKETCH.TITLED.ICON.TEMPLATE ICONTITLE [COND
+                                                                     ((NEQ TEDIT.ICON.FONT
+                                                                           'NOBIND)
+                                                                      TEDIT.ICON.FONT)
+                                                                     (T (DEFAULTFONT 'DISPLAY]
+                      POSITION T NIL 'FILE])
 )
 
 (READVARS-FROM-STRINGS '(SKETCH.TITLED.ICON.TEMPLATE)
@@ -6840,15 +6779,15 @@ This will be slow for arcs and curves."))
 (DEFINEQ
 
 (READBRUSHSHAPE
-  [LAMBDA NIL                                                (* rrb " 6-Nov-85 09:57")
+  [LAMBDA NIL                                                (* rrb " 6-Nov-85 09:57")
                                                              (* reads a brush shape from the user.)
     (\CURSOR.IN.MIDDLE.MENU (create MENU
-                                   CENTERFLG _ T
-                                   TITLE _ "pick a shape"
-                                   ITEMS _ '(ROUND SQUARE VERTICAL HORIZONTAL DIAGONAL])
+                                   CENTERFLG ← T
+                                   TITLE ← "pick a shape"
+                                   ITEMS ← '(ROUND SQUARE VERTICAL HORIZONTAL DIAGONAL])
 
 (READ.FUNCTION
-  [LAMBDA (PRMPT W)                                          (* rrb "11-May-84 15:41")
+  [LAMBDA (PRMPT W)                                          (* rrb "11-May-84 15:41")
     (PROG ((PROMPTWIN (GETPROMPTWINDOW W 3))
            OLDTTYDS LST)
           (SETQ OLDTTYDS (TTYDISPLAYSTREAM PROMPTWIN))
@@ -6861,7 +6800,7 @@ This will be slow for arcs and curves."))
           (RETURN (CAR LST])
 
 (READBRUSHSIZE
-  [LAMBDA (NOWSIZE)                                          (* rrb "19-May-86 15:44")
+  [LAMBDA (NOWSIZE)                                          (* rrb "19-May-86 15:44")
     (PROG ((N (RNUMBER (COND
                           (NOWSIZE (CONCAT "Current size is " NOWSIZE ".  Enter new brush size."))
                           (T "Enter new brush size."))
@@ -6872,7 +6811,7 @@ This will be slow for arcs and curves."))
                      (N (ABS N])
 
 (READANGLE
-  [LAMBDA NIL                                                (* rrb "14-May-86 19:29")
+  [LAMBDA NIL                                                (* rrb "14-May-86 19:29")
                                                              (* interacts to get an angle from the 
                                                              user.)
     (PROG ((NEWVALUE (RNUMBER "Enter arc angle in degrees." NIL NIL NIL T NIL T)))
@@ -6882,38 +6821,37 @@ This will be slow for arcs and curves."))
                      (T NEWVALUE])
 
 (READARCDIRECTION
-  [LAMBDA (MENUTITLE)                                        (* rrb " 6-Nov-85 09:53")
-          
-          (* interacts to get whether an arc should go clockwise or counterclockwise)
-
+  [LAMBDA (MENUTITLE)                                        (* rrb " 6-Nov-85 09:53")
+                                                             (* interacts to get whether an arc 
+                                                             should go clockwise or 
+                                                             counterclockwise)
     (\CURSOR.IN.MIDDLE.MENU (create MENU
-                                   TITLE _ (OR MENUTITLE "Which way should the arc go?")
-                                   ITEMS _ '(("Clockwise" 'CLOCKWISE 
+                                   TITLE ← (OR MENUTITLE "Which way should the arc go?")
+                                   ITEMS ← '(("Clockwise" 'CLOCKWISE 
                           "The arc will be drawn clockwise from the first point to the second point."
                                                     )
                                              ("Counterclockwise" 'COUNTERCLOCKWISE 
                    "The arc will be drawn counterclockwise from the first point to the second point."
                                                     ))
-                                   CENTERFLG _ T])
+                                   CENTERFLG ← T])
 )
 (DEFINEQ
 
 (SK.CHANGE.DASHING
-  [LAMBDA (ELTWITHLINE DASHING SKW)                          (* rrb " 9-Jan-86 16:58")
-          
-          (* changes the line dashing of ELTWITHLINE if it has one)
-          
-          (* knows about the various types of sketch elements and shouldn't.)
-
+  [LAMBDA (ELTWITHLINE DASHING SKW)                          (* rrb " 9-Jan-86 16:58")
+                                                             (* changes the line dashing of 
+                                                             ELTWITHLINE if it has one)
+                                                             (* knows about the various types of 
+                                                             sketch elements and shouldn't.)
     (PROG (SIZE GLINELT TYPE NEWDASHING NOWDASHING NEWELT)
           (COND
              ((MEMB (SETQ TYPE (fetch (GLOBALPART GTYPE) of ELTWITHLINE))
                     '(WIRE BOX CLOSEDWIRE CLOSEDCURVE OPENCURVE CIRCLE ELLIPSE TEXTBOX ARC))
                                                              (* only works for things of wire type.)
               (SETQ GLINELT (fetch (GLOBALPART INDIVIDUALGLOBALPART) of ELTWITHLINE))
-          
-          (* the dashing may be stored in different places for the element types.)
-
+                                                             (* the dashing may be stored in 
+                                                             different places for the element 
+                                                             types.)
               [SETQ NEWDASHING (COND
                                   ((EQ DASHING 'NONE)        (* no dashing is marked with NIL)
                                    NIL)
@@ -6931,39 +6869,37 @@ This will be slow for arcs and curves."))
                                    (ELLIPSE (fetch (ELLIPSE DASHING) of GLINELT))
                                    (SHOULDNT)))
               (COND
-                 ((EQUAL NEWDASHING NOWDASHING)
-          
-          (* if dashing isn't changing, don't bother creating a new one and repainting.)
-
+                 ((EQUAL NEWDASHING NOWDASHING)              (* if dashing isn't changing, don't 
+                                                             bother creating a new one and 
+                                                             repainting.)
                   (RETURN)))
               (SETQ NEWELT (SELECTQ TYPE
-                               (WIRE (create WIRE using GLINELT OPENWIREDASHING _ NEWDASHING))
-                               (BOX (create BOX using GLINELT BOXDASHING _ NEWDASHING))
-                               (ARC (create ARC using GLINELT ARCDASHING _ NEWDASHING))
-                               (TEXTBOX (create TEXTBOX using GLINELT TEXTBOXDASHING _ NEWDASHING))
-                               (CLOSEDWIRE (create CLOSEDWIRE using GLINELT CLOSEDWIREDASHING _ 
+                               (WIRE (create WIRE using GLINELT OPENWIREDASHING ← NEWDASHING))
+                               (BOX (create BOX using GLINELT BOXDASHING ← NEWDASHING))
+                               (ARC (create ARC using GLINELT ARCDASHING ← NEWDASHING))
+                               (TEXTBOX (create TEXTBOX using GLINELT TEXTBOXDASHING ← NEWDASHING))
+                               (CLOSEDWIRE (create CLOSEDWIRE using GLINELT CLOSEDWIREDASHING ← 
                                                                     NEWDASHING))
-                               (CLOSEDCURVE (create CLOSEDCURVE using GLINELT DASHING _ NEWDASHING))
-                               (OPENCURVE (create OPENCURVE using GLINELT DASHING _ NEWDASHING))
-                               (CIRCLE (create CIRCLE using GLINELT DASHING _ NEWDASHING))
-                               (ELLIPSE (create ELLIPSE using GLINELT DASHING _ NEWDASHING))
+                               (CLOSEDCURVE (create CLOSEDCURVE using GLINELT DASHING ← NEWDASHING))
+                               (OPENCURVE (create OPENCURVE using GLINELT DASHING ← NEWDASHING))
+                               (CIRCLE (create CIRCLE using GLINELT DASHING ← NEWDASHING))
+                               (ELLIPSE (create ELLIPSE using GLINELT DASHING ← NEWDASHING))
                                (SHOULDNT)))
               (RETURN (create SKHISTORYCHANGESPEC
-                             NEWELT _ (create GLOBALPART
-                                             COMMONGLOBALPART _ (fetch (GLOBALPART COMMONGLOBALPART)
+                             NEWELT ← (create GLOBALPART
+                                             COMMONGLOBALPART ← (fetch (GLOBALPART COMMONGLOBALPART)
                                                                    of ELTWITHLINE)
-                                             INDIVIDUALGLOBALPART _ NEWELT)
-                             OLDELT _ ELTWITHLINE
-                             PROPERTY _ 'DASHING
-                             NEWVALUE _ NEWDASHING
-                             OLDVALUE _ NOWDASHING])
+                                             INDIVIDUALGLOBALPART ← NEWELT)
+                             OLDELT ← ELTWITHLINE
+                             PROPERTY ← 'DASHING
+                             NEWVALUE ← NEWDASHING
+                             OLDVALUE ← NOWDASHING])
 
 (READ.AND.SAVE.NEW.DASHING
-  [LAMBDA NIL                                                (* rrb " 6-Nov-85 09:57")
-          
-          (* reads a new dashing, confirms it with the user and adds it to 
-          SK.DASHING.PATTERNS)
-
+  [LAMBDA NIL                                                (* rrb " 6-Nov-85 09:57")
+                                                             (* reads a new dashing, confirms it 
+                                                             with the user and adds it to 
+                                                             SK.DASHING.PATTERNS)
     (PROG (DASHING BM)
       LP  (COND
              ((NULL (SETQ DASHING (READ.NEW.DASHING)))       (* user aborted)
@@ -6971,15 +6907,15 @@ This will be slow for arcs and curves."))
           (SETQ BM (SK.DASHING.LABEL DASHING))
       CONFIRM
           (SELECTQ (\CURSOR.IN.MIDDLE.MENU (create MENU
-                                                  ITEMS _ (LIST (LIST BM T 
+                                                  ITEMS ← (LIST (LIST BM T 
                                                               "Will use this as the dashing pattern."
                                                                       )
                                                                 '(Yes T "Will accept this pattern.")
                                                                 '(No 'NO 
                                                           "Will ask you for another dashing pattern."
                                                                      ))
-                                                  CENTERFLG _ T
-                                                  TITLE _ "Is this pattern OK?"))
+                                                  CENTERFLG ← T
+                                                  TITLE ← "Is this pattern OK?"))
               (NO (GO LP))
               (T                                             (* add dashing to global list and 
                                                              return it.)
@@ -6991,15 +6927,15 @@ This will be slow for arcs and curves."))
                      (GO CONFIRM])
 
 (READ.NEW.DASHING
-  [LAMBDA NIL                                                (* rrb "14-May-86 19:30")
+  [LAMBDA NIL                                                (* rrb "14-May-86 19:30")
                                                              (* reads a value of dashing from the 
                                                              user.)
     (PROMPTPRINT "You will be prompted for a series of numbers which specify the number of points ON and OFF.
 Enter 0 to end the dashing pattern.
 Enter 'Abort' to leave the dashing unchanged.")
-    (bind VAL DASHLST OFF? (ORIGPOS _ (create POSITION
-                                             XCOORD _ LASTMOUSEX
-                                             YCOORD _ LASTMOUSEY))
+    (bind VAL DASHLST OFF? (ORIGPOS ← (create POSITION
+                                             XCOORD ← LASTMOUSEX
+                                             YCOORD ← LASTMOUSEY))
        until (OR (EQ (SETQ VAL (RNUMBER (CONCAT "Enter the number of points " (COND
                                                                                  (OFF? 'OFF)
                                                                                  (T 'ON))
@@ -7017,16 +6953,16 @@ Enter 'Abort' to leave the dashing unchanged.")
 
 (READ.DASHING.CHANGE
   [LAMBDA NIL
-    (DECLARE (GLOBALVARS SK.DASHING.PATTERNS))               (* rrb " 6-Nov-85 09:57")
-          
-          (* gets a description of how to change the arrow heads of a wire or curve.)
+    (DECLARE (GLOBALVARS SK.DASHING.PATTERNS))               (* rrb " 6-Nov-85 09:57")
+
+         (* gets a description of how to change the arrow heads of a wire or curve.)
 
     (PROG (DASHING)
           (SELECTQ [SETQ DASHING (\CURSOR.IN.MIDDLE.MENU
                                   (create MENU
-                                         CENTERFLG _ T
-                                         TITLE _ "New dashing pattern?"
-                                         ITEMS _ (APPEND (for DASHPAT in SK.DASHING.PATTERNS
+                                         CENTERFLG ← T
+                                         TITLE ← "New dashing pattern?"
+                                         ITEMS ← (APPEND (for DASHPAT in SK.DASHING.PATTERNS
                                                             collect (LIST (CAR DASHPAT)
                                                                           (KWOTE (CADR DASHPAT))
                                                                           
@@ -7040,10 +6976,9 @@ Enter 'Abort' to leave the dashing unchanged.")
               (RETURN DASHING])
 
 (SK.CACHE.DASHING
-  [LAMBDA (DASHING BITMAP)                                   (* rrb " 3-May-85 14:33")
-          
-          (* adds a dashing and its bitmap label to the global cache.)
-
+  [LAMBDA (DASHING BITMAP)                                   (* rrb " 3-May-85 14:33")
+                                                             (* adds a dashing and its bitmap label 
+                                                             to the global cache.)
     (OR (for DASH in SK.DASHING.PATTERNS when (EQUAL (CADR DASH)
                                                      DASHING) do (RETURN T))
         (COND
@@ -7057,7 +6992,7 @@ Enter 'Abort' to leave the dashing unchanged.")
                                                     DASHING])
 
 (SK.DASHING.LABEL
-  [LAMBDA (DASHING)                                          (* rrb " 3-May-85 14:32")
+  [LAMBDA (DASHING)                                          (* rrb " 3-May-85 14:32")
                                                              (* creates a bitmap label which shows 
                                                              a dashing pattern.)
     (PROG (DS BM)
@@ -7068,38 +7003,37 @@ Enter 'Abort' to leave the dashing unchanged.")
 (DEFINEQ
 
 (READ.FILLING.CHANGE
-  [LAMBDA NIL                                                (* rrb " 6-Nov-85 09:58")
+  [LAMBDA NIL                                                (* rrb " 6-Nov-85 09:58")
                                                              (* reads a shade for the filling 
                                                              texture.)
     (PROG (FILLING)
           (SELECTQ (SETQ FILLING (\CURSOR.IN.MIDDLE.MENU
                                   (create MENU
-                                         CENTERFLG _ T
-                                         TITLE _ "New filling?"
-                                         ITEMS _ [APPEND (for FILLPAT in SK.FILLING.PATTERNS
+                                         CENTERFLG ← T
+                                         TITLE ← "New filling?"
+                                         ITEMS ← [APPEND (for FILLPAT in SK.FILLING.PATTERNS
                                                             collect (LIST (CAR FILLPAT)
                                                                           (KWOTE (CADR FILLPAT))
                                                                           
                                                                     "changes filling to this pattern"
                                                                           ))
-                                                        '(("4x4 shade" '|4X4| 
+                                                        '(("4x4 shade" '4X4 
                                                         "Allows creation of a 4 bits by 4 bits shade"
                                                                  )
-                                                          ("16x16 shade" '|16X16| 
+                                                          ("16x16 shade" '16X16 
                                                       "Allows creation of a 16 bits by 16 bits shade"
                                                                  )
                                                           ("No filling" 'NONE 
                                                                  "no filling will be used."]
-                                         MENUBORDERSIZE _ 1)))
-              (|4X4| (RETURN (READ.AND.SAVE.NEW.FILLING)))
-              (|16X16| (RETURN (READ.AND.SAVE.NEW.FILLING T)))
+                                         MENUBORDERSIZE ← 1)))
+              (4X4 (RETURN (READ.AND.SAVE.NEW.FILLING)))
+              (16X16 (RETURN (READ.AND.SAVE.NEW.FILLING T)))
               (RETURN FILLING])
 
 (SK.CACHE.FILLING
-  [LAMBDA (FILLING)                                          (* rrb " 8-Jun-85 14:58")
-          
-          (* adds a dashing and its bitmap label to the global cache.)
-
+  [LAMBDA (FILLING)                                          (* rrb " 8-Jun-85 14:58")
+                                                             (* adds a dashing and its bitmap label 
+                                                             to the global cache.)
     (OR (for FILL in SK.FILLING.PATTERNS when (EQUAL (CADR FILL)
                                                      FILLING) do (RETURN T))
         (COND
@@ -7110,11 +7044,10 @@ Enter 'Abort' to leave the dashing unchanged.")
               'ADDED])
 
 (READ.AND.SAVE.NEW.FILLING
-  [LAMBDA (16X16FLG)                                         (* rrb " 8-Jun-85 14:58")
-          
-          (* reads a new filling, confirms it with the user and adds it to 
-          SK.FILLING.PATTERNS)
-
+  [LAMBDA (16X16FLG)                                         (* rrb " 8-Jun-85 14:58")
+                                                             (* reads a new filling, confirms it 
+                                                             with the user and adds it to 
+                                                             SK.FILLING.PATTERNS)
     (PROG (FILLING)
           (COND
              ([NULL (SETQ FILLING (EDITSHADE (COND
@@ -7125,10 +7058,9 @@ Enter 'Abort' to leave the dashing unchanged.")
           (RETURN FILLING])
 
 (SK.FILLING.LABEL
-  [LAMBDA (FILLING)                                          (* rrb " 8-Jun-85 12:08")
-          
-          (* creates a bitmap label which fills it with the texture FILLING.)
-
+  [LAMBDA (FILLING)                                          (* rrb " 8-Jun-85 12:08")
+                                                             (* creates a bitmap label which fills 
+                                                             it with the texture FILLING.)
     (PROG [(BM (BITMAPCREATE (PLUS 8 (STRINGWIDTH "16x16 shade" MENUFONT))
                       (FONTPROP MENUFONT 'HEIGHT]
           (BLTSHADE FILLING BM)
@@ -7160,21 +7092,20 @@ Enter 'Abort' to leave the dashing unchanged.")
 (DEFINEQ
 
 (SK.GETGLOBALPOSITION
-  [LAMBDA (W CURSOR)                                         (* rrb "20-May-86 10:56")
-          
-          (* gets a position from the user and returns the global value of it.)
-
+  [LAMBDA (W CURSOR)                                         (* rrb "20-May-86 10:56")
+                                                             (* gets a position from the user and 
+                                                             returns the global value of it.)
     (SK.MAP.INPUT.PT.TO.GLOBAL (SK.READ.POINT.WITH.FEEDBACK W CURSOR)
            W])
 
 (SKETCH.TRACK.ELEMENTS
-  [LAMBDA (ELEMENTS VIEWER CONSTRAINTFN HOTSPOT PROMPTMSG CONSTRAINTDATA FEEDBACKFN NOINITIALERASEFLG 
-                 NOFINALPAINTFLG)                            (* rrb "22-Jul-86 14:41")
-          
-          (* gets a point from the user by displaying an image of ELEMENTS.
-          It calls CONSTRAINTFN everytime the cursor moves to allow user constraints on 
-          where the image is displayed. All positions and elements are in sketch 
-          coordinates.)
+  [LAMBDA (ELEMENTS VIEWER CONSTRAINTFN HOTSPOT PROMPTMSG CONSTRAINTDATA FEEDBACKFN NOINITIALERASEFLG
+                 NOFINALPAINTFLG)                            (* rrb "22-Jul-86 14:41")
+
+         (* gets a point from the user by displaying an image of ELEMENTS.
+         It calls CONSTRAINTFN everytime the cursor moves to allow user constraints on 
+         where the image is displayed. All positions and elements are in sketch 
+         coordinates.)
 
     (PROG (SCRELTS FIGINFO FIRSTHOTSPOT GLOBALHOTSPOT NEWPOS LOWLFT IMAGEPOSX IMAGEPOSY IMAGEBM 
                  DELTAPOS NEWGLOBALS SKETCH GDELTAPOS)
@@ -7218,10 +7149,10 @@ Enter 'Abort' to leave the dashing unchanged.")
                 (RETURN (AND NEWPOS (PTDIFFERENCE NEWPOS GLOBALHOTSPOT])
 
 (SK.PICKOUT.WHOLE.MOVE.ELEMENTS
-  [LAMBDA (MOVEELTLST)                                       (* rrb "13-Dec-85 11:54")
-          
-          (* returns from a list of sketch elements that are being moved, the ones that 
-          will be completely moved)
+  [LAMBDA (MOVEELTLST)                                       (* rrb "13-Dec-85 11:54")
+
+         (* returns from a list of sketch elements that are being moved, the ones that 
+         will be completely moved)
 
     (COND
        ((EQ (CAR MOVEELTLST)
@@ -7234,32 +7165,32 @@ Enter 'Abort' to leave the dashing unchanged.")
                                         T) collect (CDR X])
 
 (MAP.SKETCH.ELEMENTS.INTO.VIEWER
-  [LAMBDA (ELEMENTS VIEWER)                                  (* rrb "12-Dec-85 12:25")
+  [LAMBDA (ELEMENTS VIEWER)                                  (* rrb "12-Dec-85 12:25")
                                                              (* maps a list of elements into a 
                                                              viewer)
     (for SKELT in ELEMENTS collect (SK.LOCAL.FROM.GLOBAL SKELT VIEWER])
 
 (MAP.GLOBAL.POSITION.INTO.VIEWER
-  [LAMBDA (GPOS VIEWER)                                      (* rrb "11-Jul-86 15:54")
+  [LAMBDA (GPOS VIEWER)                                      (* rrb "11-Jul-86 15:54")
                                                              (* maps a sketch coordinate into a 
                                                              viewer coordinate.)
     (SK.SCALE.POSITION.INTO.VIEWER GPOS (VIEWER.SCALE VIEWER])
 
 (SKETCH.TO.VIEWER.POSITION
-  [LAMBDA (POSITION VIEWERSCALE)                             (* rrb "11-Jul-86 15:54")
-          
-          (* Transforms a position from sketch coordinates into viewer coordinates.
-          VIEWERSCALE can be a scale or a viewer.)
+  [LAMBDA (POSITION VIEWERSCALE)                             (* rrb "11-Jul-86 15:54")
+
+         (* Transforms a position from sketch coordinates into viewer coordinates.
+         VIEWERSCALE can be a scale or a viewer.)
 
     (SK.SCALE.POSITION.INTO.VIEWER POSITION (SK.INSURE.SCALE VIEWERSCALE])
 
 (SKETCH.TRACK.IMAGE
-  [LAMBDA (WINDOW BITMAP OPERATION MSG XOFFSET YOFFSET CONSTRAINTFN CONSTRAINTDATA FEEDBACKFN)
+  [LAMBDA (WINDOW BITMAP OPERATION MSG XOFFSET YOFFSET CONSTRAINTFN CONSTRAINTDATA FEEDBACKFN)
                                                              (* rrb "11-Jun-86 13:44")
-          
-          (* gets a position by tracking with a and calling a user provided constraint 
-          function. The spec returns is actually (ONGRID? position) so that caller can 
-          tell whether it was placed on grid or not.)
+
+         (* gets a position by tracking with a and calling a user provided constraint 
+         function. The spec returns is actually (ONGRID? position) so that caller can tell 
+         whether it was placed on grid or not.)
 
     (PROG (WIDTH HEIGHT)
           (SETQ WIDTH (BITMAPWIDTH BITMAP))
@@ -7271,15 +7202,14 @@ Enter 'Abort' to leave the dashing unchanged.")
                          XOFFSET YOFFSET CONSTRAINTFN CONSTRAINTDATA FEEDBACKFN])
 
 (SK.TRACK.IMAGE1
-  [LAMBDA (W BITMAP BUFFER.BITMAP WIDTH HEIGHT OPERATION XOFFSET YOFFSET CONSTRAINTFN CONSTRAINTDATA 
-             FEEDBACKFN)                                     (* rrb "11-Jun-86 13:59")
-          
-          (* tracks BITMAP until a button goes down and comes up.
-          It calls CONSTRAINTFN to determine the position at which to display the image.
-          Returns a point in global space that the image was placed.)
-          
-          (* there is other code in BIGFONT that is probably better for this.)
+  [LAMBDA (W BITMAP BUFFER.BITMAP WIDTH HEIGHT OPERATION XOFFSET YOFFSET CONSTRAINTFN CONSTRAINTDATA
+             FEEDBACKFN)                                     (* rrb "11-Jun-86 13:59")
 
+         (* tracks BITMAP until a button goes down and comes up.
+         It calls CONSTRAINTFN to determine the position at which to display the image.
+         Returns a point in global space that the image was placed.)
+                                                             (* there is other code in BIGFONT that 
+                                                             is probably better for this.)
     (PROG (READPT)
           (SETQ READPT (SK.TRACK.BITMAP1 W BITMAP BUFFER.BITMAP WIDTH HEIGHT OPERATION XOFFSET 
                               YOFFSET CONSTRAINTFN CONSTRAINTDATA FEEDBACKFN))
@@ -7293,20 +7223,20 @@ Enter 'Abort' to leave the dashing unchanged.")
                                      (create POSITION])
 
 (MAP.VIEWER.XY.INTO.GLOBAL
-  [LAMBDA (X Y VIEWER ONGRID? SCRATCHPT)                     (* rrb "11-Jul-86 15:52")
-          
-          (* maps from an x y pair in a window to the corresponding global position.
-          ONGRID? is T if the X Y should be interpreted as being on the grid.
-          SCRATCHPT is a scratch position that should be clobbered with the result.)
+  [LAMBDA (X Y VIEWER ONGRID? SCRATCHPT)                     (* rrb "11-Jul-86 15:52")
+
+         (* maps from an x y pair in a window to the corresponding global position.
+         ONGRID? is T if the X Y should be interpreted as being on the grid.
+         SCRATCHPT is a scratch position that should be clobbered with the result.)
 
     (PROG ((SCALE (VIEWER.SCALE VIEWER))
            GRID)
           [COND
              (ONGRID? (SETQ GRID (SK.GRIDFACTOR VIEWER)))
              (T 
-          
-          (* map the point onto a grid location that would have the same screen position 
-          as the given point.)
+
+         (* map the point onto a grid location that would have the same screen position as 
+         the given point.)
 
                 (SETQ GRID (GREATESTPOWEROF2LT SCALE]
           (RETURN (SK.SET.POSITION (NEAREST.ON.GRID (TIMES X SCALE)
@@ -7316,43 +7246,42 @@ Enter 'Abort' to leave the dashing unchanged.")
                          SCRATCHPT])
 
 (SK.SET.POSITION
-  [LAMBDA (X Y POSITION)                                     (* rrb "21-May-86 16:09")
-          
-          (* sets the x and y coordinate fields of a position.)
-
+  [LAMBDA (X Y POSITION)                                     (* rrb "21-May-86 16:09")
+                                                             (* sets the x and y coordinate fields 
+                                                             of a position.)
     (replace (POSITION XCOORD) of POSITION with X)
     (replace (POSITION YCOORD) of POSITION with Y)
     POSITION])
 
 (MAP.VIEWER.PT.INTO.GLOBAL
-  [LAMBDA (PT VIEWER ONGRID?)                                (* rrb "11-Jul-86 15:52")
-          
-          (* maps from an PT in a window to the corresponding global position.
-          ONGRID? is T if the PT should be interpreted as being on the grid.)
+  [LAMBDA (PT VIEWER ONGRID?)                                (* rrb "11-Jul-86 15:52")
+
+         (* maps from an PT in a window to the corresponding global position.
+         ONGRID? is T if the PT should be interpreted as being on the grid.)
 
     (PROG ((SCALE (VIEWER.SCALE VIEWER))
            GRID)
           [COND
              (ONGRID? (SETQ GRID (SK.GRIDFACTOR VIEWER)))
              (T 
-          
-          (* map the point onto a grid location that would have the same screen position 
-          as the given point.)
+
+         (* map the point onto a grid location that would have the same screen position as 
+         the given point.)
 
                 (SETQ GRID (GREATESTPOWEROF2LT SCALE]
           (RETURN (create POSITION
-                         XCOORD _ (NEAREST.ON.GRID (TIMES (fetch (POSITION XCOORD) of PT)
+                         XCOORD ← (NEAREST.ON.GRID (TIMES (fetch (POSITION XCOORD) of PT)
                                                           SCALE)
                                          GRID)
-                         YCOORD _ (NEAREST.ON.GRID (TIMES (fetch (POSITION YCOORD) of PT)
+                         YCOORD ← (NEAREST.ON.GRID (TIMES (fetch (POSITION YCOORD) of PT)
                                                           SCALE)
                                          GRID])
 
 (VIEWER.TO.SKETCH.POSITION
-  [LAMBDA (POSITION VIEWERSCALE)                             (* rrb "11-Jul-86 15:56")
-          
-          (* Transforms a position from viewer coordinates into sketch coordinates.
-          VIEWERSCALE can be a scale or a viewer.)
+  [LAMBDA (POSITION VIEWERSCALE)                             (* rrb "11-Jul-86 15:56")
+
+         (* Transforms a position from viewer coordinates into sketch coordinates.
+         VIEWERSCALE can be a scale or a viewer.)
 
     (SK.UNSCALE.POSITION.FROM.VIEWER POSITION (COND
                                                  ((NUMBERP VIEWERSCALE))
@@ -7361,7 +7290,7 @@ Enter 'Abort' to leave the dashing unchanged.")
                                                  (T (\ILLEGAL.ARG VIEWERSCALE])
 
 (SK.INSURE.SCALE
-  [LAMBDA (VIEWERSCALE)                                      (* rrb "11-Jul-86 15:52")
+  [LAMBDA (VIEWERSCALE)                                      (* rrb "11-Jul-86 15:52")
     (COND
        ((NUMBERP VIEWERSCALE))
        ((WINDOWP VIEWERSCALE)
@@ -7369,10 +7298,10 @@ Enter 'Abort' to leave the dashing unchanged.")
        (T (\ILLEGAL.ARG VIEWERSCALE])
 
 (SKETCH.TO.VIEWER.REGION
-  [LAMBDA (REGION VIEWERSCALE)                               (* rrb " 6-Jun-86 14:05")
-          
-          (* Transforms a region from sketch coordinates into viewer coordinates.
-          VIEWERSCALE can be a scale or a viewer.)
+  [LAMBDA (REGION VIEWERSCALE)                               (* rrb " 6-Jun-86 14:05")
+
+         (* Transforms a region from sketch coordinates into viewer coordinates.
+         VIEWERSCALE can be a scale or a viewer.)
 
     (PROG ((SCALE (SK.INSURE.SCALE VIEWERSCALE)))
           (RETURN (CREATEREGION (QUOTIENT (fetch (REGION LEFT) of REGION)
@@ -7385,175 +7314,169 @@ Enter 'Abort' to leave the dashing unchanged.")
                                 SCALE])
 
 (VIEWER.TO.SKETCH.REGION
-  [LAMBDA (REGION VIEWERSCALE)                               (* rrb " 6-Jun-86 14:05")
-          
-          (* Transforms a region from viewer coordinates into sketch coordinates.
-          VIEWERSCALE can be a scale or a viewer.)
+  [LAMBDA (REGION VIEWERSCALE)                               (* rrb " 6-Jun-86 14:05")
+
+         (* Transforms a region from viewer coordinates into sketch coordinates.
+         VIEWERSCALE can be a scale or a viewer.)
 
     (UNSCALE.REGION REGION (SK.INSURE.SCALE VIEWERSCALE])
 
 (SK.READ.POINT.WITH.FEEDBACK
-  [LAMBDA (WINDOW CURSOR FEEDBACKFN FEEDBACKFNDATA BUTTONFOREXISTINGPTS CONSTRAINTFN NUMBERPADTOOFLG)
+  [LAMBDA (WINDOW CURSOR FEEDBACKFN FEEDBACKFNDATA BUTTONFOREXISTINGPTS CONSTRAINTFN NUMBERPADTOOFLG)
                                                              (* rrb "11-Jul-86 15:52")
-          
-          (* internal function that reads a point from the user.
-          Each time the cursor moves, a feedback fn is called passing it the new X, new 
-          Y, WINDOW and FEEDBACKDATA It is expected to XOR something on the screen that 
-          tells the user something.)
 
-    (RESETLST (RESETSAVE (CURSOR (OR CURSOR CROSSHAIRS)))
-           (RESETSAVE NIL (LIST 'DSPOPERATION (DSPOPERATION 'INVERT WINDOW)
-                                WINDOW))
-           (PROG ((USEGRID (WINDOWPROP WINDOW 'USEGRID))
-                  (GRID (SK.GRIDFACTOR WINDOW))
-                  (SCALE (VIEWER.SCALE WINDOW))
-                  (HOTSPOTCACHE (SK.HOTSPOT.CACHE WINDOW))
-                  (SCRATCHPT (AND CONSTRAINTFN (create POSITION)))
-                  XSCREEN YSCREEN XGRID YGRID NEWX NEWY MOUSEDOWN LASTBUTTONSTATE ONGRID? NEARPOS 
-                  CONSTRAINTPT POSITIONPAD)
-                 (OR FEEDBACKFN (SETQ FEEDBACKFN 'SHOWSKETCHXY))
-                 [COND
-                    (NUMBERPADTOOFLG 
-          
-          (* IT WOULD BE NICER TO PUT THE POSITION READER OVERTOP OF THE MENU BUT THIS 
-          ROUTINE IS CALLED SEVERAL TIMES BY SEVERAL OF THE POINT READERS AND IT FLIPS UP 
-          AND DOWN SO STILL NEEDS MORE WORK TO GET RIGHT
-          (* detach the window menu so that it doesn't come to top over the position 
-          reader.) (AND (OPENWP (SETQ MENUW (SK.INSURE.HAS.MENU WINDOW)))
-          (RESETSAVE (DETACHWINDOW MENUW) (LIST (QUOTE SK.FIX.MENU) WINDOW))))
+         (* internal function that reads a point from the user.
+         Each time the cursor moves, a feedback fn is called passing it the new X, new Y, 
+         WINDOW and FEEDBACKDATA It is expected to XOR something on the screen that tells 
+         the user something.)
 
-                           (RESETSAVE NIL (LIST 'CLOSEW (SETQ POSITIONPAD (
-                                                                          SK.POSITION.PAD.FROM.VIEWER
-                                                                           WINDOW]
-                 (RETURN (PROG1 (until [PROGN (GETMOUSESTATE)
-                                              (COND
-                                                 [(AND POSITIONPAD (INSIDEP (WINDOWPROP POSITIONPAD
-                                                                                   'REGION)
-                                                                          LASTMOUSEX LASTMOUSEY))
-                                                  (COND
-                                                     ((AND XGRID (INSIDEP WINDOW XGRID YGRID))
+    (RESETLST
+        (RESETSAVE (CURSOR (OR CURSOR CROSSHAIRS)))
+        (RESETSAVE NIL (LIST 'DSPOPERATION (DSPOPERATION 'INVERT WINDOW)
+                             WINDOW))
+        [PROG ((USEGRID (WINDOWPROP WINDOW 'USEGRID))
+               (GRID (SK.GRIDFACTOR WINDOW))
+               (SCALE (VIEWER.SCALE WINDOW))
+               (HOTSPOTCACHE (SK.HOTSPOT.CACHE WINDOW))
+               (SCRATCHPT (AND CONSTRAINTFN (create POSITION)))
+               XSCREEN YSCREEN XGRID YGRID NEWX NEWY MOUSEDOWN LASTBUTTONSTATE ONGRID? NEARPOS 
+               CONSTRAINTPT POSITIONPAD)
+              (OR FEEDBACKFN (SETQ FEEDBACKFN 'SHOWSKETCHXY))
+              [COND
+                 (NUMBERPADTOOFLG 
+
+         (* IT WOULD BE NICER TO PUT THE POSITION READER OVERTOP OF THE MENU BUT THIS 
+         ROUTINE IS CALLED SEVERAL TIMES BY SEVERAL OF THE POINT READERS AND IT FLIPS UP 
+         AND DOWN SO STILL NEEDS MORE WORK TO GET RIGHT
+         (* detach the window menu so that it doesn't come to top over the position 
+         reader.) (AND (OPENWP (SETQ MENUW (SK.INSURE.HAS.MENU WINDOW)))
+         (RESETSAVE (DETACHWINDOW MENUW) (LIST (QUOTE SK.FIX.MENU) WINDOW))))
+
+                        (RESETSAVE NIL (LIST 'CLOSEW (SETQ POSITIONPAD (SK.POSITION.PAD.FROM.VIEWER
+                                                                        WINDOW]
+              (RETURN (PROG1 (until [PROGN (GETMOUSESTATE)
+                                           (COND
+                                              [(AND POSITIONPAD (INSIDEP (WINDOWPROP POSITIONPAD
+                                                                                'REGION)
+                                                                       LASTMOUSEX LASTMOUSEY))
+                                               (COND
+                                                  ((AND XGRID (INSIDEP WINDOW XGRID YGRID))
                                                              (* leaving the window, turn off the 
                                                              last feedback.)
-                                                      (APPLY* FEEDBACKFN XGRID YGRID WINDOW 
-                                                             FEEDBACKFNDATA)
-                                                      (SETQ XGRID)))
-          
-          (* invoke position reader If it returns a position, return it.)
+                                                   (APPLY* FEEDBACKFN XGRID YGRID WINDOW 
+                                                          FEEDBACKFNDATA)
+                                                   (SETQ XGRID)))
+                                                             (* invoke position reader If it 
+                                                             returns a position, return it.)
+                                               (AND (SETQ YSCREEN (SK.READ.POSITION.PAD.HANDLER
+                                                                   POSITIONPAD WINDOW FEEDBACKFN 
+                                                                   FEEDBACKFNDATA CONSTRAINTFN))
+                                                    (COND
+                                                       [(EQ YSCREEN 'ABORT)
+                                                        (COND
+                                                           ((EQ NUMBERPADTOOFLG 'MULTIPLE)
 
-                                                  (AND (SETQ YSCREEN (SK.READ.POSITION.PAD.HANDLER
-                                                                      POSITIONPAD WINDOW FEEDBACKFN 
-                                                                      FEEDBACKFNDATA CONSTRAINTFN))
-                                                       (COND
-                                                          [(EQ YSCREEN 'ABORT)
-                                                           (COND
-                                                              ((EQ NUMBERPADTOOFLG 'MULTIPLE)
-          
-          (* if NUMBERPADTOOFLG is MULTIPLE, this is a context in which multiple values 
-          are being read and the only way to abort is to error.
-          Note%: this leaves stuff on the screen.)
+         (* if NUMBERPADTOOFLG is MULTIPLE, this is a context in which multiple values are 
+         being read and the only way to abort is to error.
+         Note%: this leaves stuff on the screen.)
 
-                                                               (ERROR!))
-                                                              (T (RETURN NIL]
-                                                          ((EQ YSCREEN 'STOP)
-                                                           (RETURN NIL))
-                                                          (T (RETURN YSCREEN]
-                                                 (MOUSEDOWN (LASTMOUSESTATE UP))
-                                                 ((LASTMOUSESTATE (OR LEFT MIDDLE RIGHT))
-                                                  (COND
-                                                     ((INSIDEP (WINDOWPROP WINDOW 'REGION)
-                                                             LASTMOUSEX LASTMOUSEY)
-                                                      (SETQ MOUSEDOWN T)
-                                                      NIL)
-                                                     (T (RETURN]
-                                   do (SETQ NEWX (LASTMOUSEX WINDOW))
-                                      (SETQ NEWY (LASTMOUSEY WINDOW))
-                                      [COND
-                                         ((OR (NEQ NEWX XSCREEN)
-                                              (NEQ NEWY YSCREEN)
-                                              (NEQ LASTBUTTONSTATE LASTMOUSEBUTTONS))
-          
-          (* cursor changed position or a button went down, check if grid pt moved.)
-
-                                          (SKETCHW.UPDATE.LOCATORS WINDOW)
-                                          (SETQ XSCREEN NEWX)
-                                          (SETQ YSCREEN NEWY)
-                                          (SETQ LASTBUTTONSTATE LASTMOUSEBUTTONS)
-                                          [COND
-                                             ((AND HOTSPOTCACHE (SELECTQ BUTTONFOREXISTINGPTS
-                                                                    (MIDDLE (LASTMOUSESTATE MIDDLE))
-                                                                    (LEFT (LASTMOUSESTATE LEFT))
-                                                                    NIL)
-                                                   (SETQ NEARPOS (NEAREST.HOT.SPOT HOTSPOTCACHE NEWX 
-                                                                        NEWY)))
+                                                            (ERROR!))
+                                                           (T (RETURN NIL]
+                                                       ((EQ YSCREEN 'STOP)
+                                                        (RETURN NIL))
+                                                       (T (RETURN YSCREEN]
+                                              (MOUSEDOWN (LASTMOUSESTATE UP))
+                                              ((LASTMOUSESTATE (OR LEFT MIDDLE RIGHT))
+                                               (COND
+                                                  ((INSIDEP (WINDOWPROP WINDOW 'REGION)
+                                                          LASTMOUSEX LASTMOUSEY)
+                                                   (SETQ MOUSEDOWN T)
+                                                   NIL)
+                                                  (T (RETURN]
+                                do (SETQ NEWX (LASTMOUSEX WINDOW))
+                                   (SETQ NEWY (LASTMOUSEY WINDOW))
+                                   [COND
+                                      ((OR (NEQ NEWX XSCREEN)
+                                           (NEQ NEWY YSCREEN)
+                                           (NEQ LASTBUTTONSTATE LASTMOUSEBUTTONS))
+                                                             (* cursor changed position or a button 
+                                                             went down, check if grid pt moved.)
+                                       (SKETCHW.UPDATE.LOCATORS WINDOW)
+                                       (SETQ XSCREEN NEWX)
+                                       (SETQ YSCREEN NEWY)
+                                       (SETQ LASTBUTTONSTATE LASTMOUSEBUTTONS)
+                                       [COND
+                                          ((AND HOTSPOTCACHE (SELECTQ BUTTONFOREXISTINGPTS
+                                                                 (MIDDLE (LASTMOUSESTATE MIDDLE))
+                                                                 (LEFT (LASTMOUSESTATE LEFT))
+                                                                 NIL)
+                                                (SETQ NEARPOS (NEAREST.HOT.SPOT HOTSPOTCACHE NEWX 
+                                                                     NEWY)))
                                                              (* on middle, pick the closest point)
-                                              (SETQ NEWX (fetch (POSITION XCOORD) of NEARPOS))
-                                              (SETQ NEWY (fetch (POSITION YCOORD) of NEARPOS))
-                                              (SETQ ONGRID? NIL))
-                                             ((SETQ ONGRID? (COND
-                                                               ((LASTMOUSESTATE RIGHT)
+                                           (SETQ NEWX (fetch (POSITION XCOORD) of NEARPOS))
+                                           (SETQ NEWY (fetch (POSITION YCOORD) of NEARPOS))
+                                           (SETQ ONGRID? NIL))
+                                          ((SETQ ONGRID? (COND
+                                                            ((LASTMOUSESTATE RIGHT)
                                                              (* if right is down, flip sense of 
                                                              using grid)
-                                                                (NOT USEGRID))
-                                                               (T 
+                                                             (NOT USEGRID))
+                                                            (T 
                                                              (* otherwise use the grid if told to.)
-                                                                  USEGRID)))
-                                              (SETQ NEWX (MAP.WINDOW.ONTO.GRID NEWX SCALE GRID))
-                                              (SETQ NEWY (MAP.WINDOW.ONTO.GRID NEWY SCALE GRID]
-                                          (PROGN [COND
-                                                    ([AND CONSTRAINTFN
-                                                          (POSITIONP (SETQ CONSTRAINTPT
-                                                                      (APPLY* CONSTRAINTFN
-                                                                             (
-                                                                            MAP.VIEWER.XY.INTO.GLOBAL
-                                                                              NEWX NEWY VIEWER 
-                                                                              ONGRID? SCRATCHPT)
-                                                                             W FEEDBACKFNDATA]
-                                                     (SETQ NEWX (FIXR (QUOTIENT (fetch (POSITION
-                                                                                        XCOORD)
-                                                                                   of CONSTRAINTPT)
-                                                                             SCALE)))
-                                                     (SETQ NEWY (FIXR (QUOTIENT (fetch (POSITION
-                                                                                        YCOORD)
-                                                                                   of CONSTRAINTPT)
-                                                                             SCALE]
-                                                 (COND
-                                                    ((OR (NEQ XGRID NEWX)
-                                                         (NEQ YGRID NEWY))
-          
-          (* grid point has changed too. Call the feedback function if the point is in 
-          the window. If it is outside, don't show anything.)
+                                                               USEGRID)))
+                                           (SETQ NEWX (MAP.WINDOW.ONTO.GRID NEWX SCALE GRID))
+                                           (SETQ NEWY (MAP.WINDOW.ONTO.GRID NEWY SCALE GRID]
+                                       (PROGN [COND
+                                                 ([AND CONSTRAINTFN
+                                                       (POSITIONP (SETQ CONSTRAINTPT
+                                                                   (APPLY* CONSTRAINTFN
+                                                                          (MAP.VIEWER.XY.INTO.GLOBAL
+                                                                           NEWX NEWY VIEWER ONGRID? 
+                                                                           SCRATCHPT)
+                                                                          W FEEDBACKFNDATA]
+                                                  (SETQ NEWX (FIXR (QUOTIENT (fetch (POSITION XCOORD)
+                                                                                of CONSTRAINTPT)
+                                                                          SCALE)))
+                                                  (SETQ NEWY (FIXR (QUOTIENT (fetch (POSITION YCOORD)
+                                                                                of CONSTRAINTPT)
+                                                                          SCALE]
+                                              (COND
+                                                 ((OR (NEQ XGRID NEWX)
+                                                      (NEQ YGRID NEWY))
 
-                                                     (AND XGRID (INSIDEP WINDOW XGRID YGRID)
-                                                          (APPLY* FEEDBACKFN XGRID YGRID WINDOW 
-                                                                 FEEDBACKFNDATA))
-                                                     (AND (INSIDEP WINDOW (SETQ XGRID NEWX)
-                                                                 (SETQ YGRID NEWY))
-                                                          (APPLY* FEEDBACKFN XGRID YGRID WINDOW 
-                                                                 FEEDBACKFNDATA]
-                                   finally (RETURN (COND
-                                                      ((AND XGRID (INSIDEP WINDOW XGRID YGRID))
-          
-          (* if the cursor was outside the window when let up, return NIL)
+         (* grid point has changed too. Call the feedback function if the point is in the 
+         window. If it is outside, don't show anything.)
 
+                                                  (AND XGRID (INSIDEP WINDOW XGRID YGRID)
                                                        (APPLY* FEEDBACKFN XGRID YGRID WINDOW 
-                                                              FEEDBACKFNDATA)
-                                                       (create INPUTPT
-                                                              INPUT.ONGRID? _ ONGRID?
-                                                              INPUT.POSITION _
-                                                              (create POSITION
-                                                                     XCOORD _ XGRID
-                                                                     YCOORD _ YGRID])
+                                                              FEEDBACKFNDATA))
+                                                  (AND (INSIDEP WINDOW (SETQ XGRID NEWX)
+                                                              (SETQ YGRID NEWY))
+                                                       (APPLY* FEEDBACKFN XGRID YGRID WINDOW 
+                                                              FEEDBACKFNDATA]
+                                finally (RETURN (COND
+                                                   ((AND XGRID (INSIDEP WINDOW XGRID YGRID))
+                                                             (* if the cursor was outside the 
+                                                             window when let up, return NIL)
+                                                    (APPLY* FEEDBACKFN XGRID YGRID WINDOW 
+                                                           FEEDBACKFNDATA)
+                                                    (create INPUTPT
+                                                           INPUT.ONGRID? ← ONGRID?
+                                                           INPUT.POSITION ←
+                                                           (create POSITION
+                                                                  XCOORD ← XGRID
+                                                                  YCOORD ← YGRID])])
 
 (SKETCH.GET.POSITION
-  [LAMBDA (VIEWER CURSOR FEEDBACKFN FEEDBACKFNDATA CONSTRAINTFN)
+  [LAMBDA (VIEWER CURSOR FEEDBACKFN FEEDBACKFNDATA CONSTRAINTFN)
                                                              (* rrb "21-May-86 16:51")
                                                              (* user available version of 
                                                              SK.READ.POINT.WITH.FEEDBACK.)
-          
-          (* reads a point from the user. Each time the cursor moves, a feedback fn is 
-          called passing it the new X, new Y, VIEWER and FEEDBACKDATA It is expected to 
-          XOR something on the screen that tells the user something.
-          CONSTRAINTFN is called to constrain the read point.)
+
+         (* reads a point from the user. Each time the cursor moves, a feedback fn is 
+         called passing it the new X, new Y, VIEWER and FEEDBACKDATA It is expected to XOR 
+         something on the screen that tells the user something.
+         CONSTRAINTFN is called to constrain the read point.)
 
     (PROG (READPT)
           (SETQ READPT (SK.READ.POINT.WITH.FEEDBACK VIEWER CURSOR FEEDBACKFN FEEDBACKFNDATA
@@ -7574,10 +7497,10 @@ Enter 'Abort' to leave the dashing unchanged.")
                                (create POSITION])
 
 (\CLOBBER.POSITION
-  [LAMBDA (X Y OLDPT)                                        (* rrb " 4-Apr-86 13:34")
-          
-          (* returns a position with values x and y.
-          Clobbers OLDPT if it is a POSITION.)
+  [LAMBDA (X Y OLDPT)                                        (* rrb " 4-Apr-86 13:34")
+
+         (* returns a position with values x and y.
+         Clobbers OLDPT if it is a POSITION.)
 
     (COND
        ((POSITIONP OLDPT)
@@ -7587,7 +7510,7 @@ Enter 'Abort' to leave the dashing unchanged.")
        (T (CREATEPOSITION X Y])
 
 (NEAREST.HOT.SPOT
-  [LAMBDA (CACHE X Y)                                        (* rrb "31-Jul-85 10:14")
+  [LAMBDA (CACHE X Y)                                        (* rrb "31-Jul-85 10:14")
                                                              (* returns the nearest hot spot to X Y)
     (PROG ((BESTMEASURE 10000)
            BESTX BESTY YDIF THISDIF)
@@ -7606,13 +7529,12 @@ Enter 'Abort' to leave the dashing unchanged.")
                                                  (SETQ BESTX (CAR XBUCKET))
                                                  (SETQ BESTY (CAR YBUCKET]
           (RETURN (AND BESTX (create POSITION
-                                    XCOORD _ BESTX
-                                    YCOORD _ BESTY])
+                                    XCOORD ← BESTX
+                                    YCOORD ← BESTY])
 
 (GETWREGION
-  [LAMBDA (W NEWREGIONFN NEWREGIONFNDATA MINWIDTH MINHEIGHT)
-                                                            (* ; "Edited 12-Jun-90 13:25 by mitani")
-                                                             (* gets a region from a window)
+  [LAMBDA (W NEWREGIONFN NEWREGIONFNDATA MINWIDTH MINHEIGHT)(* ; "Edited 12-Jun-90 13:25 by mitani")
+                                                             (* gets a region from a window)
     (PROG ((REG (GETREGION MINWIDTH MINHEIGHT NIL NEWREGIONFN NEWREGIONFNDATA)))
           (RETURN (CREATEREGION (IDIFFERENCE (fetch (REGION LEFT) of REG)
                                        (DSPXOFFSET NIL W))
@@ -7622,11 +7544,10 @@ Enter 'Abort' to leave the dashing unchanged.")
                          (fetch (REGION HEIGHT) of REG])
 
 (GET.BITMAP.POSITION
-  [LAMBDA (WINDOW BITMAP OPERATION MSG XOFFSET YOFFSET)      (* rrb "11-Jul-85 11:00")
-          
-          (* gets a position by tracking with a bitmap The spec returns is actually
-          (ONGRID? position) so that caller can tell whether it was placed on grid or 
-          not.)
+  [LAMBDA (WINDOW BITMAP OPERATION MSG XOFFSET YOFFSET)      (* rrb "11-Jul-85 11:00")
+
+         (* gets a position by tracking with a bitmap The spec returns is actually
+         (ONGRID? position) so that caller can tell whether it was placed on grid or not.)
 
     (PROG (BUFFER.BITMAP WIDTH HEIGHT)
           (SETQ WIDTH (BITMAPWIDTH BITMAP))
@@ -7639,16 +7560,15 @@ Enter 'Abort' to leave the dashing unchanged.")
                          XOFFSET YOFFSET])
 
 (SK.TRACK.BITMAP1
-  [LAMBDA (W BITMAP BUFFER.BITMAP WIDTH HEIGHT OPERATION XOFFSET YOFFSET CONSTRAINTFN CONSTRAINTDATA 
-             FEEDBACKFN)                                     (* rrb "11-Jul-86 15:52")
-          
-          (* tracks BITMAP until a button goes down and comes up.
-          It calls CONSTRAINTFN to determine the position at which to display the image.
-          Returns a list of (ongrid? position) so that caller can know whether the point 
-          chosen was on a grid or not.)
-          
-          (* there is other code in BIGFONT that might be better for this.)
+  [LAMBDA (W BITMAP BUFFER.BITMAP WIDTH HEIGHT OPERATION XOFFSET YOFFSET CONSTRAINTFN CONSTRAINTDATA
+             FEEDBACKFN)                                     (* rrb "11-Jul-86 15:52")
 
+         (* tracks BITMAP until a button goes down and comes up.
+         It calls CONSTRAINTFN to determine the position at which to display the image.
+         Returns a list of (ongrid? position) so that caller can know whether the point 
+         chosen was on a grid or not.)
+                                                             (* there is other code in BIGFONT that 
+                                                             might be better for this.)
     (PROG [DOWN LEFT BOTTOM NEW.LEFT NEW.BOTTOM GRID.LEFT GRID.BOTTOM ONGRID? NEARPOS CONSTRAINTPT
                 (DSP (WINDOWPROP W 'DSP))
                 (USEGRID (WINDOWPROP W 'USEGRID))
@@ -7735,19 +7655,18 @@ Enter 'Abort' to leave the dashing unchanged.")
                                        (BITBLT BUFFER.BITMAP 0 0 W (IPLUS GRID.LEFT XOFFSET)
                                               (IPLUS GRID.BOTTOM YOFFSET)
                                               WIDTH HEIGHT 'INPUT 'REPLACE] 
-          
-          (* return the position if any part of the bitmap is visible.)
-
+                                                             (* return the position if any part of 
+                                                             the bitmap is visible.)
                            (RETURN (AND (REGIONSINTERSECTP (DSPCLIPPINGREGION NIL DSP)
                                                (CREATEREGION (IPLUS LEFT XOFFSET)
                                                       (IPLUS BOTTOM YOFFSET)
                                                       WIDTH HEIGHT))
                                         (create INPUTPT
-                                               INPUT.ONGRID? _ ONGRID?
-                                               INPUT.POSITION _
+                                               INPUT.ONGRID? ← ONGRID?
+                                               INPUT.POSITION ←
                                                (create POSITION
-                                                      XCOORD _ GRID.LEFT
-                                                      YCOORD _ GRID.BOTTOM])
+                                                      XCOORD ← GRID.LEFT
+                                                      YCOORD ← GRID.BOTTOM])
 )
 (DECLARE%: EVAL@COMPILE
 
@@ -7773,10 +7692,10 @@ Enter 'Abort' to leave the dashing unchanged.")
 (DEFINEQ
 
 (SK.BRING.UP.POSITION.PAD
-  [LAMBDA (VIEWER MSG OPENFLG)                               (* rrb "10-Jun-86 15:26")
-          
-          (* * brings up a position reading number pad associated with VIEWER.
-          Puts it over the menu if it is up.)
+  [LAMBDA (VIEWER MSG OPENFLG)                               (* rrb "10-Jun-86 15:26")
+
+         (* * brings up a position reading number pad associated with VIEWER.
+         Puts it over the menu if it is up.)
 
     (RESETFORM (RADIX 10)
            (PROG ((NUMBER/READER/MAXDIGITS 8)
@@ -7793,16 +7712,16 @@ Enter 'Abort' to leave the dashing unchanged.")
                  (SETQ XNUMBERPAD (\POSITION.READER.NUMBERPAD DIGITFONT TOTALSWIDTH))
                  (SETQ YNUMBERPAD (\POSITION.READER.NUMBERPAD DIGITFONT TOTALSWIDTH))
                  (SETQ COMMANDPAD (create MENU
-                                         ITEMS _ '(abort enter quit)
-                                         CENTERFLG _ T
-                                         MENUFONT _ DIGITFONT
-                                         WHENHELDFN _ (FUNCTION POSITIONPAD.HELDFN)
-                                         WHENSELECTEDFN _ (FUNCTION POSITION.PAD.READER.HANDLER)
-                                         MENUBORDERSIZE _ 1
-                                         MENUOUTLINESIZE _ 2
-                                         ITEMHEIGHT _ (PLUS 6 TOTALSHEIGHT)))
-          
-          (* leave room for three lines and the number at the top)
+                                         ITEMS ← '(abort enter quit)
+                                         CENTERFLG ← T
+                                         MENUFONT ← DIGITFONT
+                                         WHENHELDFN ← (FUNCTION POSITIONPAD.HELDFN)
+                                         WHENSELECTEDFN ← (FUNCTION POSITION.PAD.READER.HANDLER)
+                                         MENUBORDERSIZE ← 1
+                                         MENUOUTLINESIZE ← 2
+                                         ITEMHEIGHT ← (PLUS 6 TOTALSHEIGHT)))
+                                                             (* leave room for three lines and the 
+                                                             number at the top)
                                                              (* use the numberpad's width so things 
                                                              look better.)
                  (SETQ TOTALSWIDTH (fetch (MENU IMAGEWIDTH) of XNUMBERPAD))
@@ -7812,9 +7731,9 @@ Enter 'Abort' to leave the dashing unchanged.")
                                        MARGIN))
                  (SETQ WINHEIGHT (IPLUS (COND
                                            [MSG 
-          
-          (* if there is a msg, leave room for it at the top.
-          In any case, leave room for the labels X and Y.)
+
+         (* if there is a msg, leave room for it at the top.
+         In any case, leave room for the labels X and Y.)
 
                                                 (ITIMES (LENGTH (SETQ MSGLINES (BREAK.MSG.INTO.LINES
                                                                                 MSG MSGFONT WINWIDTH)
@@ -7834,10 +7753,8 @@ Enter 'Abort' to leave the dashing unchanged.")
                  (MOVEW WIN (SK.PAD.READER.POSITION VIEWER WIN))
                  (WINDOWADDPROP WIN 'REPAINTFN (FUNCTION SK.POSITION.READER.REPAINTFN))
                  [COND
-                    (MSG 
-          
-          (* save msg on the window so repaintfn can get at it)
-
+                    (MSG                                     (* save msg on the window so repaintfn 
+                                                             can get at it)
                          (WINDOWPROP WIN 'MESSAGE MSGLINES)
                          (WINDOWPROP WIN 'MESSAGEFONT MSGFONT)
                                                              (* note where the message begins.)
@@ -7845,9 +7762,9 @@ Enter 'Abort' to leave the dashing unchanged.")
                          (WINDOWPROP WIN 'MESSAGEBOTTOM (DSPYPOSITION NIL WIN]
                  (WINDOWPROP WIN 'DIGITFONT DIGITFONT)
                  (OPENW WIN)
-          
-          (* window is opened because of bug in ADDMENU that it doesn't work unless 
-          window is open.)
+
+         (* window is opened because of bug in ADDMENU that it doesn't work unless window 
+         is open.)
 
                  (\POSITION.PAD.ADD.DIGIT.MENU WIN MARGIN MARGIN 'X XNUMBERPAD TOTALSWIDTH 
                         TOTALSHEIGHT NUMBER/READER/MAXDIGITS)
@@ -7856,9 +7773,9 @@ Enter 'Abort' to leave the dashing unchanged.")
                         'Y YNUMBERPAD TOTALSWIDTH TOTALSHEIGHT NUMBER/READER/MAXDIGITS)
                  (REDISPLAYW WIN NIL T)
                  [ADDMENU COMMANDPAD WIN (create POSITION
-                                                XCOORD _ (PLUS MARGIN (TIMES 2 (PLUS MARGIN 
+                                                XCOORD ← (PLUS MARGIN (TIMES 2 (PLUS MARGIN 
                                                                                      TOTALSWIDTH)))
-                                                YCOORD _ (PLUS MARGIN
+                                                YCOORD ← (PLUS MARGIN
                                                                (QUOTIENT (DIFFERENCE
                                                                           (fetch (MENU IMAGEHEIGHT)
                                                                              of XNUMBERPAD)
@@ -7869,10 +7786,10 @@ Enter 'Abort' to leave the dashing unchanged.")
                  (RETURN WIN])
 
 (SK.PAD.READER.POSITION
-  [LAMBDA (VIEWER READERWINDOW)                              (* rrb "10-Jun-86 12:24")
-          
-          (* returns the lower left corner where a position reading pad should be placed 
-          for the sketch viewer VIEWER.)
+  [LAMBDA (VIEWER READERWINDOW)                              (* rrb "10-Jun-86 12:24")
+
+         (* returns the lower left corner where a position reading pad should be placed 
+         for the sketch viewer VIEWER.)
 
     (PROG ((VIEWERREGION (WINDOWPROP VIEWER 'REGION))
            (READERREGION (WINDOWPROP READERWINDOW 'REGION))
@@ -7884,30 +7801,28 @@ Enter 'Abort' to leave the dashing unchanged.")
                      [(OR (GREATERP VLFT PWID)
                           (GREATERP VLFT VBTM)
                           (GREATERP PWID (fetch (REGION WIDTH) of VIEWERREGION)))
-          
-          (* the position reader will fit to the left, or there is more room on the left, 
-          or the position pad reader is wider than the viewer.)
+
+         (* the position reader will fit to the left, or there is more room on the left, 
+         or the position pad reader is wider than the viewer.)
 
                       (create POSITION
-                             XCOORD _ (DIFFERENCE (MAX 10 VLFT)
+                             XCOORD ← (DIFFERENCE (MAX 10 VLFT)
                                              PWID)
-                             YCOORD _ (DIFFERENCE (fetch (REGION PTOP) of VIEWERREGION)
+                             YCOORD ← (DIFFERENCE (fetch (REGION PTOP) of VIEWERREGION)
                                              (fetch (REGION HEIGHT) of READERREGION]
                      (T                                      (* more room on the bottom)
                         (create POSITION
-                               XCOORD _ (MAX 10 VLFT)
-                               YCOORD _ (DIFFERENCE VBTM (fetch (REGION HEIGHT) of READERREGION])
+                               XCOORD ← (MAX 10 VLFT)
+                               YCOORD ← (DIFFERENCE VBTM (fetch (REGION HEIGHT) of READERREGION])
 
 (SK.POSITION.READER.REPAINTFN
-  [LAMBDA (POSITIONPAD)                                      (* rrb "11-Jun-86 13:28")
+  [LAMBDA (POSITIONPAD)                                      (* rrb "11-Jun-86 13:28")
                                                              (* repaints a position pad reader)
     (PROG ((MSGLINES (WINDOWPROP POSITIONPAD 'MESSAGE))
            NUMBERMENU TOTALREGION)
           [COND
-             (MSGLINES 
-          
-          (* if there is a msg, print it at the top.)
-
+             (MSGLINES                                       (* if there is a msg, print it at the 
+                                                             top.)
                     (DSPFONT (WINDOWPROP POSITIONPAD 'MESSAGEFONT)
                            POSITIONPAD)
                     (MOVETO 0 (WINDOWPROP POSITIONPAD 'MESSAGEBOTTOM)
@@ -7915,11 +7830,9 @@ Enter 'Abort' to leave the dashing unchanged.")
                     (for LINE in MSGLINES do (PRIN3 LINE POSITIONPAD)
                                              (TERPRI POSITIONPAD]
           (DSPFONT (WINDOWPROP POSITIONPAD 'DIGITFONT)
-                 POSITIONPAD)
-          
-          (* the actual displaying of the menus is done by the repaintfn supplied by 
-          ADDMENU)
-
+                 POSITIONPAD)                                (* the actual displaying of the menus 
+                                                             is done by the repaintfn supplied by 
+                                                             ADDMENU)
           (for LABEL in '(X Y) do (SETQ NUMBERMENU (WINDOWPROP POSITIONPAD LABEL))
                                   (SETQ TOTALREGION (GETMENUPROP NUMBERMENU 'TOTALREG))
                                   (\READNUMBER.OUTLINEREGION TOTALREGION POSITIONPAD 2)
@@ -7931,18 +7844,15 @@ Enter 'Abort' to leave the dashing unchanged.")
                                   (DISPLAY.POSITION.READER.TOTAL NUMBERMENU])
 
 (SK.POSITION.PAD.FROM.VIEWER
-  [LAMBDA (VIEWER)                                           (* rrb "11-Jun-86 14:17")
-          
-          (* cache the position pad because it takes a while to create.
-          Opens it too.)
-
+  [LAMBDA (VIEWER)                                           (* rrb "11-Jun-86 14:17")
+                                                             (* cache the position pad because it 
+                                                             takes a while to create.
+                                                             Opens it too.)
     (PROG (PAD)
           (COND
              ((SETQ PAD (WINDOWPROP VIEWER 'POSITION.PAD))
-              (WINDOWPROP PAD 'FINISHEDFLG NIL)
-          
-          (* move the pad in case the window has moved or been reshaped.)
-
+              (WINDOWPROP PAD 'FINISHEDFLG NIL)              (* move the pad in case the window has 
+                                                             moved or been reshaped.)
               (MOVEW PAD (SK.PAD.READER.POSITION VIEWER PAD))
               (OPENW PAD)                                    (* initialize some values)
               (SK.INIT.POSITION.NUMBER.PAD.MENU (WINDOWPROP PAD 'X))
@@ -7952,24 +7862,24 @@ Enter 'Abort' to leave the dashing unchanged.")
                                                              require font search)
                 (RESETFORM (CURSOR WAITINGCURSOR)
                        (SETQ PAD (SK.BRING.UP.POSITION.PAD VIEWER 
-   "Select the location of the desired position in the window or enter its X and Y coordinates here." 
+   "Select the location of the desired position in the window or enter its X and Y coordinates here."
                                         T)))
                 (WINDOWPROP VIEWER 'POSITION.PAD PAD)
                 (RETURN PAD])
 
 (SK.INIT.POSITION.NUMBER.PAD.MENU
-  [LAMBDA (MNU)                                              (* rrb "21-May-86 15:29")
+  [LAMBDA (MNU)                                              (* rrb "21-May-86 15:29")
                                                              (* reinitializes a numberpad reader)
     (PUTMENUPROP MNU 'TOTAL 0)
     (PUTMENUPROP MNU 'DECIMALPOWER NIL)
     (DISPLAY.POSITION.READER.TOTAL MNU])
 
 (SK.READ.POSITION.PAD.HANDLER
-  [LAMBDA (POSITIONPAD VIEWER FEEDBACKFN FEEDBACKFNDATA CONSTRAINTFN)
+  [LAMBDA (POSITIONPAD VIEWER FEEDBACKFN FEEDBACKFNDATA CONSTRAINTFN)
                                                              (* rrb "11-Jul-86 15:54")
-          
-          (* tracks the cursor while it is in the position pad and sets variables for 
-          SK.READ.POINT.WITH.FEEDBACK and returned T if it succeeded)
+
+         (* tracks the cursor while it is in the position pad and sets variables for 
+         SK.READ.POINT.WITH.FEEDBACK and returned T if it succeeded)
                                                              (* uses many variable freely from 
                                                              SK.READ.POINT.WITH.FEEDBACK)
     (PROG (NEWX NEWY CONSTRX CONSTRY PREVX PREVY FINISHVAL (SCALE (VIEWER.SCALE VIEWER)))
@@ -7992,9 +7902,9 @@ Enter 'Abort' to leave the dashing unchanged.")
                                 (NEQ NEWY PREVY))            (* user entered a new number)
                             (SETQ PREVX NEWX)
                             (SETQ PREVY NEWY)
-          
-          (* this code is differerent from the code in SK.READ.POINT.WITH.FEEDBACK in 
-          that is works in sketch coordinates.)
+
+         (* this code is differerent from the code in SK.READ.POINT.WITH.FEEDBACK in that 
+         is works in sketch coordinates.)
 
                             [COND
                                ([AND CONSTRAINTFN (POSITIONP (SETQ CONSTRAINTPT
@@ -8007,10 +7917,10 @@ Enter 'Abort' to leave the dashing unchanged.")
                             (COND
                                ((OR (NEQ CONSTRX NEWX)
                                     (NEQ CONSTRY NEWY))
-          
-          (* grid point has changed too. Update the position numberpads and Call the 
-          feedback function if the point is in the window.
-          If it is outside, don't show anything.)
+
+         (* grid point has changed too. Update the position numberpads and Call the 
+         feedback function if the point is in the window.
+         If it is outside, don't show anything.)
 
                                 (PUTMENUPROP (WINDOWPROP POSITIONPAD 'X)
                                        'TOTAL NEWX)
@@ -8025,39 +7935,36 @@ Enter 'Abort' to leave the dashing unchanged.")
                                        (QUOTIENT (SETQ CONSTRY NEWY)
                                               SCALE)
                                        VIEWER FEEDBACKFNDATA]
-                     finally 
-          
-          (* remove the closefn so that it doesn't get run on the way out.)
-
+                     finally                                 (* remove the closefn so that it 
+                                                             doesn't get run on the way out.)
                            (WINDOWDELPROP POSITIONPAD 'CLOSEFN (FUNCTION \NUMBERPAD.READER.CLOSEFN))
                            (AND CONSTRX (APPLY* FEEDBACKFN CONSTRX CONSTRY VIEWER FEEDBACKFNDATA))
                            (RETURN (COND
                                       ((MEMB FINISHVAL '(STOP ABORT))
-          
-          (* means the numberpad reader was closed.
-          If the number pad includes the ABORT command, do what it would do, otherwise 
-          the program is not expecting NIL so cause an error.)
+
+         (* means the numberpad reader was closed.
+         If the number pad includes the ABORT command, do what it would do, otherwise the 
+         program is not expecting NIL so cause an error.)
 
                                        (RETURN FINISHVAL))
                                       (FINISHVAL (AND CONSTRX
                                                       (SETQ FINISHVAL
                                                        (create POSITION
-                                                              XCOORD _ CONSTRX
-                                                              YCOORD _ CONSTRY))
+                                                              XCOORD ← CONSTRX
+                                                              YCOORD ← CONSTRY))
                                                       (create INPUTPT
-                                                             INPUT.ONGRID? _ 'GLOBAL
-                                                             INPUT.POSITION _ (
+                                                             INPUT.ONGRID? ← 'GLOBAL
+                                                             INPUT.POSITION ← (
                                                                         SK.SCALE.POSITION.INTO.VIEWER
                                                                                FINISHVAL SCALE)
-                                                             INPUT.GLOBALPOSITION _ FINISHVAL)))
+                                                             INPUT.GLOBALPOSITION ← FINISHVAL)))
                                       (T                     (* mouse left the window, return)
                                          NIL])
 
 (DISPLAY.POSITION.READER.TOTAL
-  [LAMBDA (MNU)                                              (* rrb "19-May-86 17:09")
-          
-          (* displays the number total in the box in the window.)
-
+  [LAMBDA (MNU)                                              (* rrb "19-May-86 17:09")
+                                                             (* displays the number total in the 
+                                                             box in the window.)
     (PROG ((TOTALREG (GETMENUPROP MNU 'TOTALREG))
            (DECIMALPLACES (GETMENUPROP MNU 'DECIMALPOWER))
            (WIN (WFROMMENU MNU)))
@@ -8067,9 +7974,9 @@ Enter 'Abort' to leave the dashing unchanged.")
            (CENTERPRINTINREGION
             [COND
                [DECIMALPLACES 
-          
-          (* printing a decimal number must check to make sure the correct number of 
-          decimal places print.)
+
+         (* printing a decimal number must check to make sure the correct number of 
+         decimal places print.)
 
                       (PROG ([TOTSTR (MKSTRING (GETMENUPROP MNU 'TOTAL]
                              DECPOS NAFTERDEC NCHARS)
@@ -8095,15 +8002,14 @@ Enter 'Abort' to leave the dashing unchanged.")
             TOTALREG WIN])
 
 (POSITION.PAD.READER.HANDLER
-  [LAMBDA (DIGIT MNU)                                        (* rrb "10-Jun-86 15:50")
-          
-          (* handles a key stroke or menu digit selection for a number pad reader.)
-
+  [LAMBDA (DIGIT MNU)                                        (* rrb "10-Jun-86 15:50")
+                                                             (* handles a key stroke or menu digit 
+                                                             selection for a number pad reader.)
     (PROG (TOTAL POWER OPERATION TOPOFSTACK (WIN (WFROMMENU MNU)))
           (SETQ TOTAL (GETMENUPROP MNU 'TOTAL))
           [PUTMENUPROP MNU 'TOTAL
                  (SELECTQ DIGIT
-                     ((� bs) 
+                     ((_ bs) 
                           (COND
                              ((NULL (GETMENUPROP MNU 'DIGITYET))
                                                              (* bs was the first key)
@@ -8119,43 +8025,41 @@ Enter 'Abort' to leave the dashing unchanged.")
                                  (T (PUTMENUPROP MNU 'DECIMALPOWER (SETQ POWER (SUB1 POWER)))
                                                              (* dirty but effective.)
                                     (PROG ((TOTSTR (MKSTRING TOTAL)))
-          
-          (* SUBSTRING will be NIL if the total has a trailing zero.)
-
+                                                             (* SUBSTRING will be NIL if the total 
+                                                             has a trailing zero.)
                                           (RETURN (MKATOM (OR (SUBSTRING TOTSTR 1
                                                                      (PLUS (STRPOS "." TOTSTR)
                                                                            (SUB1 POWER)))
                                                               TOTSTR]
                              (T                              (* no decimal point)
                                 (IQUOTIENT TOTAL 10))))
-                     (�                                      (* +/- sign)
+                     (±                                      (* +/- sign)
                         (MINUS TOTAL))
-                     ((� � - + =)                            (* operation sign)
+                     ((÷ × - + =)                            (* operation sign)
                           [COND
                              ((NULL (GETMENUPROP MNU 'DIGITYET))
-          
-          (* last thing hit was an operation, just save this one.)
-
+                                                             (* last thing hit was an operation, 
+                                                             just save this one.)
                               (PUTMENUPROP MNU 'OPERATION (COND
                                                              ((EQ DIGIT '=)
                                                               NIL)
                                                              (T DIGIT)))
                               (RETURN))
                              ((SETQ OPERATION (GETMENUPROP MNU 'OPERATION))
-          
-          (* perform the operation that is stored between the top of stack and the 
-          current total)
+
+         (* perform the operation that is stored between the top of stack and the current 
+         total)
 
                               (COND
                                  [(SETQ TOPOFSTACK (GETMENUPROP MNU 'TOPOFSTACK))
                                                              (* a previous value exists)
                                   (SETQ TOTAL (SELECTQ OPERATION
-                                                  (�         (* divide, check for 0 divisor)
+                                                  (÷         (* divide, check for 0 divisor)
                                                      (COND
                                                         ((ZEROP TOTAL)
                                                          (PROMPTPRINT "Can't divide by zero"))
                                                         (T (QUOTIENT TOPOFSTACK TOTAL))))
-                                                  (�         (* times)
+                                                  (×         (* times)
                                                      (TIMES TOPOFSTACK TOTAL))
                                                   (-         (* minus)
                                                      (DIFFERENCE TOPOFSTACK TOTAL))
@@ -8203,9 +8107,8 @@ Enter 'Abort' to leave the dashing unchanged.")
                         [(NUMBERP DIGIT)
                          (COND
                             ((NULL (GETMENUPROP MNU 'DIGITYET))
-          
-          (* first key hit after an operation, note this and clear the total.)
-
+                                                             (* first key hit after an operation, 
+                                                             note this and clear the total.)
                              (PUTMENUPROP MNU 'DIGITYET T)
                              (SETQ TOTAL 0)))
                          (COND
@@ -8216,7 +8119,7 @@ Enter 'Abort' to leave the dashing unchanged.")
                             [(SETQ POWER (GETMENUPROP MNU 'DECIMALPOWER))
                                                              (* have read decimal pt)
                              (PUTMENUPROP MNU 'DECIMALPOWER (ADD1 POWER))
-                             (SETQ POWER (bind (N _ 1.0) for I from 1 to POWER
+                             (SETQ POWER (bind (N ← 1.0) for I from 1 to POWER
                                             do (SETQ N (FTIMES N 0.1)) finally (RETURN N)))
                              (COND
                                 ((GEQ TOTAL 0)
@@ -8232,7 +8135,7 @@ Enter 'Abort' to leave the dashing unchanged.")
           (DISPLAY.POSITION.READER.TOTAL MNU])
 
 (POSITIONPAD.HELDFN
-  [LAMBDA (ITEM MENU BUTTON)                                 (* rrb "10-Jun-86 15:29")
+  [LAMBDA (ITEM MENU BUTTON)                                 (* rrb "10-Jun-86 15:29")
                                                              (* prints the help information for a 
                                                              numberpad.)
     (PROMPTPRINT (SELECTQ ITEM
@@ -8243,61 +8146,59 @@ Enter 'Abort' to leave the dashing unchanged.")
                "performs the previously specified operation between the memory and the current total")
                      (+ "Will read another number to be added to the current total")
                      (- "Will read another number to be subtracted to the current total")
-                     (� "Will read another number to be multiplied by the current total")
-                     (� "Will read another number and divides the current total by it")
+                     (× "Will read another number to be multiplied by the current total")
+                     (÷ "Will read another number and divides the current total by it")
                      (quit "Will stop prompting you for points.")
                      (abort "will abort this sketch operation.")
-                     (� " will change the sign of the total")
+                     (± " will change the sign of the total")
                      (%. "will enter a decimal point.")
-                     ((bs �) 
+                     ((bs _) 
                           "Will erase the last digit entered.")
                      (%  "doesn't do anything.")
                      "Will put this digit on the right of the total."])
 
 (\POSITION.PAD.ADD.DIGIT.MENU
-  [LAMBDA (WIN LEFT MARGIN LABEL MENU TOTALSWIDTH TOTALSHEIGHT NUMBER/READER/MAXDIGITS)
+  [LAMBDA (WIN LEFT MARGIN LABEL MENU TOTALSWIDTH TOTALSHEIGHT NUMBER/READER/MAXDIGITS)
                                                              (* rrb "10-Jun-86 12:06")
-          
-          (* * adds a menu which is a number pad menu to WIN, allocates the total region 
-          for it.)
+
+         (* * adds a menu which is a number pad menu to WIN, allocates the total region 
+         for it.)
 
     (PROG (TOTALREGION)
           (ADDMENU MENU WIN (create POSITION
-                                   XCOORD _ LEFT
-                                   YCOORD _ MARGIN))
+                                   XCOORD ← LEFT
+                                   YCOORD ← MARGIN))
           (PUTMENUPROP MENU 'TOTALREG (SETQ TOTALREGION (create REGION
-                                                               LEFT _ LEFT
-                                                               BOTTOM _ (PLUS (fetch (MENU 
+                                                               LEFT ← LEFT
+                                                               BOTTOM ← (PLUS (fetch (MENU 
                                                                                           IMAGEHEIGHT
                                                                                            )
                                                                                  of MENU)
                                                                               MARGIN MARGIN)
-                                                               WIDTH _ TOTALSWIDTH
-                                                               HEIGHT _ TOTALSHEIGHT)))
+                                                               WIDTH ← TOTALSWIDTH
+                                                               HEIGHT ← TOTALSHEIGHT)))
           (PUTMENUPROP MENU 'TOTAL 0)
           (PUTMENUPROP MENU 'MAXDIGITS NUMBER/READER/MAXDIGITS)
-          
-          (* put link to the menu so the window can eventually get the values.)
-
+                                                             (* put link to the menu so the window 
+                                                             can eventually get the values.)
           (WINDOWPROP WIN LABEL MENU)
           (RETURN WIN])
 
 (\POSITION.READER.NUMBERPAD
-  [LAMBDA (DIGITFONT WIDTH)                                  (* rrb "10-Jun-86 15:33")
-          
-          (* returns a menu which is a numberpad suitable for a position reader.)
-
+  [LAMBDA (DIGITFONT WIDTH)                                  (* rrb "10-Jun-86 15:33")
+                                                             (* returns a menu which is a numberpad 
+                                                             suitable for a position reader.)
     (create MENU
-           ITEMS _
-           '(� ce C � 1 2 3 � 4 5 6 - 7 8 9 + � 0 %. =)
-           MENUCOLUMNS _ 4
-           CENTERFLG _ T
-           MENUFONT _ DIGITFONT
-           WHENHELDFN _ (FUNCTION POSITIONPAD.HELDFN)
-           WHENSELECTEDFN _ (FUNCTION POSITION.PAD.READER.HANDLER)
-           MENUOUTLINESIZE _ 2
-           ITEMHEIGHT _ (IPLUS 2 (FONTPROP DIGITFONT 'HEIGHT))
-           ITEMWIDTH _ (AND WIDTH (QUOTIENT (DIFFERENCE WIDTH 8)
+           ITEMS ←
+           '(_ ce C ÷ 1 2 3 × 4 5 6 - 7 8 9 + ± 0 %. =)
+           MENUCOLUMNS ← 4
+           CENTERFLG ← T
+           MENUFONT ← DIGITFONT
+           WHENHELDFN ← (FUNCTION POSITIONPAD.HELDFN)
+           WHENSELECTEDFN ← (FUNCTION POSITION.PAD.READER.HANDLER)
+           MENUOUTLINESIZE ← 2
+           ITEMHEIGHT ← (IPLUS 2 (FONTPROP DIGITFONT 'HEIGHT))
+           ITEMWIDTH ← (AND WIDTH (QUOTIENT (DIFFERENCE WIDTH 8)
                                          4])
 )
 
@@ -8403,13 +8304,13 @@ Enter 'Abort' to leave the dashing unchanged.")
 (DEFINEQ
 
 (SK.DRAWFN
-  [LAMBDA (ELEMENTTYPE)                                      (* rrb "17-MAR-83 22:28")
+  [LAMBDA (ELEMENTTYPE)                                      (* rrb "17-MAR-83 22:28")
                                                              (* goes from an element type name to 
                                                              its DRAWFN)
     (fetch (SKETCHTYPE DRAWFN) of (GETPROP ELEMENTTYPE 'SKETCHTYPE])
 
 (SK.TRANSFORMFN
-  [LAMBDA (ELEMENTTYPE)                                      (* rrb " 7-Feb-85 12:08")
+  [LAMBDA (ELEMENTTYPE)                                      (* rrb " 7-Feb-85 12:08")
                                                              (* goes from an element type name to 
                                                              its TRANSFORMFN)
     (fetch (SKETCHTYPE TRANSFORMFN) of (GETPROP ELEMENTTYPE 'SKETCHTYPE])
@@ -8420,37 +8321,35 @@ Enter 'Abort' to leave the dashing unchanged.")
     (fetch (SKETCHTYPE EXPANDFN) of (GETPROP ELEMENTTYPE 'SKETCHTYPE])
 
 (SK.INPUT
-  [LAMBDA (ELEMENTTYPE SKETCHW)                              (* rrb "11-MAR-83 09:54")
+  [LAMBDA (ELEMENTTYPE SKETCHW)                              (* rrb "11-MAR-83 09:54")
                                                              (* applies an element types input 
                                                              function to a window.)
     (APPLY* (fetch (SKETCHTYPE INPUTFN) of ELEMENTTYPE)
            SKETCHW])
 
 (SK.INSIDEFN
-  [LAMBDA (ELEMENTTYPE)                                      (* rrb " 4-Oct-86 11:02")
-          
-          (* goes from an element type name to its inside predicate)
-
+  [LAMBDA (ELEMENTTYPE)                                      (* rrb " 4-Oct-86 11:02")
+                                                             (* goes from an element type name to 
+                                                             its inside predicate)
     (PROG (SKTYPE)
       LP  (COND
              ([NULL (SETQ SKTYPE (GETPROP ELEMENTTYPE 'SKETCHTYPE]
-          
-          (* unknown sketch type and this is the first place where such is encountered.)
-
+                                                             (* unknown sketch type and this is the 
+                                                             first place where such is encountered.)
               (ERROR ELEMENTTYPE "Unknown sketch type.   
 If you can load the file containing it, do so and type 'RETURN'.
-Otherwise, type '^'.")
+Otherwise, type '↑'.")
               (GO LP)))
           (RETURN (fetch (SKETCHTYPE INSIDEFN) of SKTYPE])
 
 (SK.UPDATEFN
-  [LAMBDA (ELEMENTTYPE)                                      (* rrb "21-Dec-84 11:28")
-          
-          (* goes from an element type name to its updatefn The update function is called 
-          when an element in a window has changed.
-          It will get args of the old local screen element, the new global element and 
-          the window. If it can update the display more efficiently than erasing and 
-          redrawing, it should and return the new local sketch element.)
+  [LAMBDA (ELEMENTTYPE)                                      (* rrb "21-Dec-84 11:28")
+
+         (* goes from an element type name to its updatefn The update function is called 
+         when an element in a window has changed. It will get args of the old local screen 
+         element, the new global element and the window.
+         If it can update the display more efficiently than erasing and redrawing, it 
+         should and return the new local sketch element.)
 
     (fetch (SKETCHTYPE UPDATEFN) of (GETPROP ELEMENTTYPE 'SKETCHTYPE])
 )
@@ -8639,11 +8538,11 @@ Otherwise, type '^'.")
 (DEFINEQ
 
 (SK.CHECK.SKETCH.VERSION
-  [LAMBDA (SKETCH)                        (* ; 
-                                                "Edited 21-Oct-92 18:40 by sybalsky:mv:envos")
+  [LAMBDA (SKETCH)                                           (* ; 
+                                                        "Edited 21-Oct-92 18:40 by sybalsky:mv:envos")
 
     (* ;; 
-  "makes sure the sketch is the correct version.  If not, it tries to update it.  Returns SKETCH.")
+    "makes sure the sketch is the correct version.  If not, it tries to update it.  Returns SKETCH.")
 
     (COND
        ((EQ (LISTGET (fetch (SKETCH SKETCHPROPS) of SKETCH)
@@ -8653,46 +8552,43 @@ Otherwise, type '^'.")
        (T (SK.INSURE.RECORD.LENGTH (fetch (SKETCH SKETCHELTS) of SKETCH))
 
           (* ;; 
-     "this is basically a PUTSKETCHPROP expanded in line to avoid coersions which can cause loops.")
+       "this is basically a PUTSKETCHPROP expanded in line to avoid coersions which can cause loops.")
 
           [PROG (PLIST)
                 (SETQ PLIST (fetch (SKETCH SKETCHPROPS) of SKETCH))
                 (COND
                    ((SETQ PLIST (fetch (SKETCH SKETCHPROPS) of SKETCH))
                     (LISTPUT PLIST 'VERSION SKETCH.VERSION))
-                   (T (replace (SKETCH SKETCHPROPS) of SKETCH with
-                                                                          (LIST 'VERSION 
-                                                                                SKETCH.VERSION]
+                   (T (replace (SKETCH SKETCHPROPS) of SKETCH with (LIST 'VERSION SKETCH.VERSION]
           SKETCH])
 
 (SK.INSURE.RECORD.LENGTH
-  [LAMBDA (SKETCHELTS)                        (* ; 
-                                                "Edited 21-Oct-92 18:35 by sybalsky:mv:envos")
+  [LAMBDA (SKETCHELTS)                                       (* ; 
+                                                        "Edited 21-Oct-92 18:35 by sybalsky:mv:envos")
 
     (* ;; "makes sure the elements have the proper number of fields.")
 
     (bind INDPART TYPE NFIELDS for ELT in SKETCHELTS
        do (SETQ INDPART (fetch (GLOBALPART INDIVIDUALGLOBALPART) of ELT))
-             (SETQ TYPE (fetch (INDIVIDUALGLOBALPART GTYPE) of INDPART))
-             (COND
-                ([OR (SETQ NFIELDS (SK.RECORD.LENGTH TYPE))
-                     (AND (RECLOOK TYPE)
-                          (SETQ SKETCH.RECORD.LENGTHS
-                           (NCONC1 SKETCH.RECORD.LENGTHS (LIST TYPE
-                                                               (SETQ NFIELDS
-                                                                (LENGTH (EVAL (LIST 'CREATE TYPE]
-                 (SK.INSURE.HAS.LENGTH INDPART NFIELDS TYPE))) 
+          (SETQ TYPE (fetch (INDIVIDUALGLOBALPART GTYPE) of INDPART))
+          (COND
+             ([OR (SETQ NFIELDS (SK.RECORD.LENGTH TYPE))
+                  (AND (RECLOOK TYPE)
+                       (SETQ SKETCH.RECORD.LENGTHS (NCONC1 SKETCH.RECORD.LENGTHS
+                                                          (LIST TYPE
+                                                                (SETQ NFIELDS
+                                                                 (LENGTH (EVAL (LIST 'CREATE TYPE]
+              (SK.INSURE.HAS.LENGTH INDPART NFIELDS TYPE))) 
 
-             (* ;; "if it's not a record, either it's an unknown sketch element type or its declaration wasn't copied to the compiled file.  In either case, assume it has the correct number of fields.")
+          (* ;; "if it's not a record, either it's an unknown sketch element type or its declaration wasn't copied to the compiled file.  In either case, assume it has the correct number of fields.")
 
-             (COND
-                ((EQ TYPE 'GROUP)                            (* ; 
-                                                           "recurse thru the subelements too.")
-                 (SK.INSURE.RECORD.LENGTH (fetch (GROUP LISTOFGLOBALELTS) of INDPART])
+          (COND
+             ((EQ TYPE 'GROUP)                               (* ; "recurse thru the subelements too.")
+              (SK.INSURE.RECORD.LENGTH (fetch (GROUP LISTOFGLOBALELTS) of INDPART])
 
 (SK.INSURE.HAS.LENGTH
-  [LAMBDA (LIST N TYPE)                       (* ; 
-                                                "Edited 21-Oct-92 18:36 by sybalsky:mv:envos")
+  [LAMBDA (LIST N TYPE)                                      (* ; 
+                                                        "Edited 21-Oct-92 18:36 by sybalsky:mv:envos")
 
     (* ;; "makes sure LIST is at least N long.  If not, it creates a record of type TYPE and nconcs the enough fields from the end to make it be N long.")
 
@@ -8705,14 +8601,14 @@ Otherwise, type '^'.")
                           (for I from (ADD1 (LENGTH LIST)) to N collect NIL])
 
 (SK.RECORD.LENGTH
-  [LAMBDA (SKETCHRECORDTYPE)                                 (* rrb "20-Mar-86 14:11")
+  [LAMBDA (SKETCHRECORDTYPE)                                 (* rrb "20-Mar-86 14:11")
     (CADR (ASSOC SKETCHRECORDTYPE SKETCH.RECORD.LENGTHS])
 
 (SK.SET.RECORD.LENGTHS
-  [LAMBDA NIL                                                (* rrb "18-Oct-85 15:35")
-          
-          (* sets up a variable that contains the lengths of the sketch element records.)
-
+  [LAMBDA NIL                                                (* rrb "18-Oct-85 15:35")
+                                                             (* sets up a variable that contains 
+                                                             the lengths of the sketch element 
+                                                             records.)
     (SETQ SKETCH.RECORD.LENGTHS (SK.SET.RECORD.LENGTHS.MACRO])
 )
 (DECLARE%: EVAL@COMPILE 
@@ -8736,19 +8632,17 @@ Otherwise, type '^'.")
 (DEFINEQ
 
 (SK.ADD.EDIT.COMMAND.TO.FILE.BROWSER
-  [LAMBDA NIL                                            (* ; "Edited 12-Feb-88 16:49 by rrb")
-          
-          (* adds sketch as an option to the file browser edit command.)
-
+  [LAMBDA NIL                                                (* ; "Edited 12-Feb-88 16:49 by rrb")
+                                                             (* adds sketch as an option to the 
+                                                             file browser edit command.)
     (AND (BOUNDP 'FB.MENU.ITEMS)
          (PROG [(PTRX (for MITEM in FB.MENU.ITEMS when (STRING-EQUAL (CAR MITEM)
-                                                                          "Edit")
-                         do (RETURN MITEM]
+                                                              "Edit") do (RETURN MITEM]
                (SETQ PTRX (ASSOC 'SUBITEMS PTRX))
                (for SUBI in PTRX when (STRING-EQUAL (CAR SUBI)
-                                                         "Sketch") do (RETURN)
-                  finally (NCONC1 PTRX (LIST '"Sketch" '(FB.EDITCOMMAND SKETCH) 
-                                                 "Calls the Sketch editor on selected files"])
+                                             "Sketch") do (RETURN)
+                  finally (NCONC1 PTRX (LIST '"Sketch" '(FB.EDITCOMMAND SKETCH)
+                                             "Calls the Sketch editor on selected files"])
 )
 
 (SK.ADD.EDIT.COMMAND.TO.FILE.BROWSER)
@@ -8761,151 +8655,151 @@ Otherwise, type '^'.")
 (ADDTOVAR LAMA SK.UNIONREGIONS SKETCH.CREATE)
 )
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (18222 20092 (SKETCH.FLUSH.EXISTING 18232 . 20090)) (20202 31352 (SKETCH.FROM.A.FILE 
-20212 . 20527) (SK.PUT.ON.FILE 20529 . 21981) (SKETCH.PUT 21983 . 24626) (SK.OUTPUT.FILE.NAME 24628 . 
-25113) (SK.INCLUDE.FILE 25115 . 27981) (SK.GET.IMAGEOBJ.FROM.FILE 27983 . 30146) (SK.GET.FROM.FILE 
-30148 . 31041) (SKETCH.GET 31043 . 31350)) (31353 83865 (SKETCH 31363 . 33468) (SKETCHW.CREATE 33470
- . 38044) (SKETCH.RESET 38046 . 39568) (SKETCHW.FIG.CHANGED 39570 . 39910) (SK.WINDOW.TITLE 39912 . 
-40299) (EDITSLIDE 40301 . 40707) (EDITSKETCH 40709 . 41033) (ADD.SKETCH.TO.VIEWER 41035 . 43621) (
-SK.ADD.ELEMENTS.TO.SKETCH 43623 . 44137) (SKETCH.SET.A.DEFAULT 44139 . 51690) (SK.POPUP.SELECTIONFN 
-51692 . 52234) (GETSKETCHWREGION 52236 . 52442) (SK.ADD.ELEMENT 52444 . 54023) (
-SK.ADD.PRIORITY.ELEMENT.TO.SKETCH 54025 . 55419) (SK.ELTS.BY.PRIORITY 55421 . 55717) (
-SK.ORDER.ELEMENTS 55719 . 55986) (SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH 55988 . 57482) (
-SK.ADD.ELEMENTS 57484 . 58008) (SK.CHECK.WHENADDEDFN 58010 . 58740) (SK.APPLY.MENU.COMMAND 58742 . 
-59540) (SK.DELETE.ELEMENT1 59542 . 61120) (SK.MARK.DIRTY 61122 . 61788) (SK.MARK.UNDIRTY 61790 . 62121
-) (SK.MENU.AND.RETURN.FIELD 62123 . 62788) (SKETCH.SET.BRUSH.SHAPE 62790 . 63375) (
-SKETCH.SET.BRUSH.SIZE 63377 . 63883) (SKETCHW.CLOSEFN 63885 . 65676) (SK.CONFIRM.DESTRUCTION 65678 . 
-66677) (SKETCHW.OUTFN 66679 . 66943) (SKETCHW.REOPENFN 66945 . 67357) (MAKE.LOCAL.SKETCH 67359 . 68089
-) (MAP.SKETCHSPEC.INTO.VIEWER 68091 . 69301) (SKETCHW.REPAINTFN 69303 . 70131) (SKETCHW.REPAINTFN1 
-70133 . 71072) (SK.DRAWFIGURE.IF 71074 . 71596) (SKETCHW.SCROLLFN 71598 . 75791) (SKETCHW.RESHAPEFN 
-75793 . 78051) (SK.UPDATE.EVENT.SELECTION 78053 . 80108) (LIGHTGRAYWINDOW 80110 . 80273) (
-SK.ADD.SPACES 80275 . 81021) (SK.SKETCH.MENU 81023 . 81345) (SK.CHECK.IMAGEOBJ.WHENDELETEDFN 81347 . 
-82199) (SK.APPLY.IMAGEOBJ.WHENDELETEDFN 82201 . 83161) (SK.RETURN.TTY 83163 . 83531) (SK.TAKE.TTY 
-83533 . 83863)) (83919 107334 (SKETCH.COMMANDMENU 83929 . 84353) (SKETCH.COMMANDMENU.ITEMS 84355 . 
-104438) (CREATE.SKETCHW.COMMANDMENU 104440 . 104860) (SKETCHW.SELECTIONFN 104862 . 105965) (
-SKETCH.MONITORLOCK 105967 . 106438) (SK.EVAL.AS.PROCESS 106440 . 107053) (SK.EVAL.WITH.LOCK 107055 . 
-107332)) (107335 115139 (SK.FIX.MENU 107345 . 108439) (SK.SET.UP.MENUS 108441 . 110742) (
-SK.INSURE.HAS.MENU 110744 . 111406) (SK.CREATE.STANDARD.MENU 111408 . 111853) (SK.ADD.ITEM.TO.MENU 
-111855 . 112530) (SK.GET.VIEWER.POPUP.MENU 112532 . 114733) (SK.CLEAR.POPUP.MENU 114735 . 115137)) (
-115195 124017 (SKETCH.CREATE 115205 . 115991) (GETSKETCHPROP 115993 . 119050) (PUTSKETCHPROP 119052 . 
-122984) (CREATE.DEFAULT.SKETCH.CONTEXT 122986 . 124015)) (124183 147079 (SK.COPY.BUTTONEVENTFN 124193
- . 135421) (SK.BUTTONEVENT.MARK 135423 . 135806) (SK.BUILD.IMAGEOBJ 135808 . 145723) (
-SK.BUTTONEVENT.OVERP 145725 . 146348) (SK.BUTTONEVENT.SAME.KEYS 146350 . 147077)) (147358 173173 (
-SK.SEL.AND.CHANGE 147368 . 147660) (SK.CHECK.WHENCHANGEDFN 147662 . 148368) (SK.CHECK.PRECHANGEFN 
-148370 . 148971) (SK.CHANGE.ELT 148973 . 149165) (SK.CHANGE.THING 149167 . 150418) (
-SKETCH.CHANGE.ELEMENTS 150420 . 151603) (SK.APPLY.SINGLE.CHANGEFN 151605 . 152178) (SK.DO.CHANGESPECS 
-152180 . 153839) (SK.VIEWER.FROM.SKETCH.ARG 153841 . 154283) (SK.DO.CHANGESPEC1 154285 . 156160) (
-SK.CHANGEFN 156162 . 156742) (SK.READCHANGEFN 156744 . 157203) (SK.DEFAULT.CHANGEFN 157205 . 159677) (
-CHANGEABLEFIELDITEMS 159679 . 160326) (SK.APPLY.CHANGE.COMMAND 160328 . 160945) (
-SK.DO.AND.RECORD.CHANGES 160947 . 162344) (SK.APPLY.CHANGE.COMMAND1 162346 . 163834) (
-SK.ELEMENTS.CHANGEFN 163836 . 166160) (READ.POINT.TO.ADD 166162 . 167106) (GLOBAL.KNOT.FROM.LOCAL 
-167108 . 167568) (SK.ADD.KNOT.TO.ELEMENT 167570 . 168514) (SK.GROUP.CHANGEFN 168516 . 169728) (
-SK.GROUP.CHANGEFN1 169730 . 173171)) (173340 187073 (ADD.ELEMENT.TO.SKETCH 173350 . 175056) (
-ADD.SKETCH.VIEWER 175058 . 175726) (REMOVE.SKETCH.VIEWER 175728 . 176341) (ALL.SKETCH.VIEWERS 176343
- . 176583) (SKETCH.ALL.VIEWERS 176585 . 176845) (VIEWER.BUCKET 176847 . 176998) (ELT.INSIDE.REGION? 
-177000 . 177327) (ELT.INSIDE.SKWP 177329 . 177620) (SCALE.FROM.SKW 177622 . 177872) (
-SK.ADDELT.TO.WINDOW 177874 . 178734) (SK.CALC.REGION.VIEWED 178736 . 179114) (SK.DRAWFIGURE 179116 . 
-180405) (SK.DRAWFIGURE1 180407 . 180791) (SK.LOCAL.FROM.GLOBAL 180793 . 182028) (SKETCH.REGION.VIEWED 
-182030 . 184717) (SKETCH.VIEW.FROM.NAME 184719 . 185149) (SK.UPDATE.REGION.VIEWED 185151 . 185543) (
-SKETCH.ADD.AND.DISPLAY 185545 . 185953) (SKETCH.ADD.AND.DISPLAY1 185955 . 186393) (SK.ADD.ITEM 186395
- . 186727) (SKETCHW.ADD.INSTANCE 186729 . 187071)) (187114 200302 (SK.SEL.AND.DELETE 187124 . 187512) 
-(SK.ERASE.AND.DELETE.ITEM 187514 . 187933) (REMOVE.ELEMENT.FROM.SKETCH 187935 . 189046) (
-SK.DELETE.ELEMENT 189048 . 189606) (SK.DELETE.ELEMENT2 189608 . 190269) (SK.DELETE.KNOT 190271 . 
-190562) (SK.SEL.AND.DELETE.KNOT 190564 . 191689) (SK.DELETE.ELEMENT.KNOT 191691 . 194898) (
-SK.CHECK.WHENDELETEDFN 194900 . 195680) (SK.CHECK.PREEDITFN 195682 . 196166) (
-SK.CHECK.END.INITIAL.EDIT 196168 . 196702) (SK.CHECK.WHENPOINTDELETEDFN 196704 . 197500) (SK.ERASE.ELT
- 197502 . 197838) (SK.DELETE.ELT 197840 . 198215) (SK.DELETE.ITEM 198217 . 198625) (DELFROMTCONC 
-198627 . 200300)) (200341 214175 (SK.COPY.ELT 200351 . 200721) (SK.SEL.AND.COPY 200723 . 201106) (
-SK.COPY.ELEMENTS 201108 . 206736) (SK.ADD.COPY.OF.ELEMENTS 206738 . 208505) (
-SK.GLOBAL.FROM.LOCAL.ELEMENTS 208507 . 208747) (SK.COPY.ITEM 208749 . 209546) (SK.INSERT.SKETCH 209548
- . 214173)) (214215 244236 (SK.MOVE.ELT 214225 . 214500) (SK.MOVE.ELT.OR.PT 214502 . 214815) (
-SK.APPLY.DEFAULT.MOVE 214817 . 215251) (SK.SEL.AND.MOVE 215253 . 215800) (SK.MOVE.ELEMENTS 215802 . 
-226674) (SKETCH.MOVE.ELEMENTS 226676 . 228607) (SKETCH.COPY.ELEMENTS 228609 . 230656) (
-\SKETCH.COPY.ELEMENT 230658 . 231383) (SK.TRANSLATE.ELEMENT 231385 . 231868) (SK.COPY.GLOBAL.ELEMENT 
-231870 . 232081) (SK.MAKE.ELEMENT.MOVE.ARG 232083 . 232703) (SK.MAKE.ELEMENTS.MOVE.ARG 232705 . 233227
-) (SK.MAKE.POINTS.AND.ELEMENTS.MOVE.ARG 233229 . 234298) (SK.SHOW.FIG.FROM.INFO 234300 . 234668) (
-SK.MOVE.THING 234670 . 235576) (UPDATE.ELEMENT.IN.SKETCH 235578 . 237633) (SK.UPDATE.ELEMENT 237635 . 
-239194) (SK.UPDATE.ELEMENTS 239196 . 239915) (SK.UPDATE.ELEMENT1 239917 . 243817) (
-SK.MOVE.ELEMENT.POINT 243819 . 244234)) (244299 266588 (SK.MOVE.POINTS 244309 . 244596) (
-SK.SEL.AND.MOVE.POINTS 244598 . 244903) (SK.DO.MOVE.ELEMENT.POINTS 244905 . 253562) (
-SK.MOVE.ITEM.POINTS 253564 . 255235) (SK.TRANSLATEPTSFN 255237 . 255621) (SK.TRANSLATE.POINTS 255623
- . 256524) (SK.SELECT.MULTIPLE.POINTS 256526 . 262166) (SK.CONTROL.POINTS.IN.REGION 262168 . 263589) (
-SK.ADD.PT.SELECTION 263591 . 264055) (SK.REMOVE.PT.SELECTION 264057 . 264674) (SK.ADD.POINT 264676 . 
-265299) (SK.ELTS.CONTAINING.PTS 265301 . 265926) (SK.HOTSPOTS.NOT.ON.LIST 265928 . 266586)) (266746 
-269542 (SK.SET.MOVE.MODE 266756 . 267427) (SK.SET.MOVE.MODE.POINTS 267429 . 267768) (
-SK.SET.MOVE.MODE.ELEMENTS 267770 . 268114) (SK.SET.MOVE.MODE.COMBINED 268116 . 268466) (READMOVEMODE 
-268468 . 269540)) (269543 288298 (SK.ALIGN.POINTS 269553 . 269843) (SK.SEL.AND.ALIGN.POINTS 269845 . 
-270154) (SK.ALIGN.POINTS.LEFT 270156 . 270459) (SK.ALIGN.POINTS.RIGHT 270461 . 270766) (
-SK.ALIGN.POINTS.TOP 270768 . 271069) (SK.ALIGN.POINTS.BOTTOM 271071 . 271378) (
-SK.EVEN.SPACE.POINTS.IN.X 271380 . 271700) (SK.EVEN.SPACE.POINTS.IN.Y 271702 . 272022) (
-SK.DO.ALIGN.POINTS 272024 . 282646) (SK.NTH.CONTROL.POINT 282648 . 283109) (
-SK.GET.SELECTED.ELEMENT.STRUCTURE 283111 . 283777) (SK.CORRESPONDING.CONTROL.PT 283779 . 284333) (
-SK.CONTROL.POINT.NUMBER 284335 . 284705) (SK.DO.ALIGN.SETVALUE 284707 . 288296)) (288362 301794 (
-SKETCH.CREATE.GROUP 288372 . 288861) (SK.CREATE.GROUP1 288863 . 289410) (SK.UPDATE.GROUP.AFTER.CHANGE 
-289412 . 290201) (SK.GROUP.ELTS 290203 . 290484) (SK.SEL.AND.GROUP 290486 . 290872) (SK.GROUP.ELEMENTS
- 290874 . 292523) (SK.UNGROUP.ELT 292525 . 292809) (SK.SEL.AND.UNGROUP 292811 . 294480) (
-SK.UNGROUP.ELEMENT 294482 . 295418) (SK.GLOBAL.REGION.OF.LOCAL.ELEMENTS 295420 . 296342) (
-SK.LOCAL.REGION.OF.LOCAL.ELEMENTS 296344 . 297355) (SK.GLOBAL.REGION.OF.GLOBAL.ELEMENTS 297357 . 
-298697) (SK.UNIONREGIONS 298699 . 301065) (SKETCH.REGION.OF.SKETCH 301067 . 301483) (SK.FLASHREGION 
-301485 . 301792)) (301795 315266 (INIT.GROUP.ELEMENT 301805 . 302677) (GROUP.DRAWFN 302679 . 303129) (
-GROUP.EXPANDFN 303131 . 304694) (GROUP.INSIDEFN 304696 . 305105) (GROUP.REGIONFN 305107 . 305502) (
-GROUP.GLOBALREGIONFN 305504 . 305822) (GROUP.TRANSLATEFN 305824 . 307856) (GROUP.TRANSFORMFN 307858 . 
-311338) (GROUP.READCHANGEFN 311340 . 315264)) (315267 316275 (REGION.CENTER 315277 . 315878) (
-REMOVE.LAST 315880 . 316273)) (316328 321435 (SK.MOVE.GROUP.CONTROL.PT 316338 . 316629) (
-SK.SEL.AND.MOVE.CONTROL.PT 316631 . 318035) (SK.MOVE.GROUP.ELEMENT.CONTROL.POINT 318037 . 320110) (
-SK.READ.NEW.GROUP.CONTROL.PT 320112 . 321433)) (321694 326318 (SK.DO.GROUP 321704 . 323156) (
-SK.CHECK.WHENGROUPEDFN 323158 . 323868) (SK.DO.UNGROUP 323870 . 325075) (SK.CHECK.WHENUNGROUPEDFN 
-325077 . 325664) (SK.GROUP.UNDO 325666 . 325989) (SK.UNGROUP.UNDO 325991 . 326316)) (326559 331481 (
-SK.FREEZE.ELTS 326569 . 326853) (SK.SEL.AND.FREEZE 326855 . 327245) (SK.FREEZE.ELEMENTS 327247 . 
-327798) (SK.UNFREEZE.ELT 327800 . 328089) (SK.SEL.AND.UNFREEZE 328091 . 329627) (SK.UNFREEZE.ELEMENTS 
-329629 . 330188) (SK.FREEZE.UNDO 330190 . 330435) (SK.UNFREEZE.UNDO 330437 . 330684) (SK.DO.FREEZE 
-330686 . 331079) (SK.DO.UNFREEZE 331081 . 331479)) (331711 341521 (SKETCH.ELEMENTS.OF.SKETCH 331721 . 
-332556) (SKETCH.LIST.OF.ELEMENTS 332558 . 333276) (SKETCH.ADD.ELEMENT 333278 . 334353) (
-SKETCH.DELETE.ELEMENT 334355 . 336087) (DELFROMGROUPELT 336089 . 336889) (SKETCH.ELEMENT.TYPE 336891
- . 337240) (SKETCH.ELEMENT.CHANGED 337242 . 338810) (SK.ELEMENT.CHANGED1 338812 . 339463) (
-SK.UPDATE.GLOBAL.IMAGE.OBJECT.ELEMENT 339465 . 341519)) (341575 346187 (INSURE.SKETCH 341585 . 344200)
- (LOCALSPECS.FROM.VIEWER 344202 . 344562) (SK.LOCAL.ELT.FROM.GLOBALPART 344564 . 345032) (
-SKETCH.FROM.VIEWER 345034 . 345268) (INSPECT.SKETCH 345270 . 345595) (ELT.INSIDE.SKETCHWP 345597 . 
-345870) (SK.INSIDE.REGION 345872 . 346185)) (346188 350518 (MAPSKETCHSPECS 346198 . 346819) (
-MAPCOLLECTSKETCHSPECS 346821 . 347570) (MAPSKETCHSPECSUNTIL 347572 . 348380) (MAPGLOBALSKETCHSPECS 
-348382 . 349083) (MAPGLOBALSKETCHELEMENTS 349085 . 350516)) (350580 376472 (SK.ADD.SELECTION 350590 . 
-351330) (SK.COPY.INSERTFN 351332 . 354963) (SCREENELEMENTP 354965 . 355438) (SK.ITEM.REGION 355440 . 
-355927) (SK.ELEMENT.GLOBAL.REGION 355929 . 356457) (SK.LOCAL.ITEMS.IN.REGION 356459 . 358438) (
-SK.REGIONFN 358440 . 358762) (SK.GLOBAL.REGIONFN 358764 . 359122) (SK.REMOVE.SELECTION 359124 . 359852
-) (SK.SELECT.MULTIPLE.ITEMS 359854 . 370296) (SKETCH.GET.ELEMENTS 370298 . 371721) (SK.PUT.MARKS.UP 
-371723 . 372062) (SK.TAKE.MARKS.DOWN 372064 . 372403) (SK.TRANSLATE.GLOBALPART 372405 . 374532) (
-SK.TRANSLATE.ITEM 374534 . 375461) (SK.TRANSLATEFN 375463 . 375659) (TRANSLATE.SKETCH 375661 . 376470)
-) (376738 379645 (SK.INPUT.SCALE 376748 . 377595) (SK.UPDATE.SKETCHCONTEXT 377597 . 378194) (
-SK.SET.INPUT.SCALE 378196 . 378845) (SK.SET.INPUT.SCALE.CURRENT 378847 . 379138) (
-SK.SET.INPUT.SCALE.VALUE 379140 . 379643)) (379696 381608 (SK.SET.FEEDBACK.MODE 379706 . 381012) (
-SK.SET.FEEDBACK.POINT 381014 . 381182) (SK.SET.FEEDBACK.VERBOSE 381184 . 381353) (
-SK.SET.FEEDBACK.ALWAYS 381355 . 381606)) (381759 383137 (SKETCH.TITLE 381769 . 382133) (
-SK.SHRINK.ICONCREATE 382135 . 383135)) (388827 391641 (READBRUSHSHAPE 388837 . 389296) (READ.FUNCTION 
-389298 . 389813) (READBRUSHSIZE 389815 . 390273) (READANGLE 390275 . 390767) (READARCDIRECTION 390769
- . 391639)) (391642 402053 (SK.CHANGE.DASHING 391652 . 395600) (READ.AND.SAVE.NEW.DASHING 395602 . 
-397370) (READ.NEW.DASHING 397372 . 399112) (READ.DASHING.CHANGE 399114 . 400589) (SK.CACHE.DASHING 
-400591 . 401593) (SK.DASHING.LABEL 401595 . 402051)) (402054 405759 (READ.FILLING.CHANGE 402064 . 
-404045) (SK.CACHE.FILLING 404047 . 404765) (READ.AND.SAVE.NEW.FILLING 404767 . 405365) (
-SK.FILLING.LABEL 405367 . 405757)) (406143 442396 (SK.GETGLOBALPOSITION 406153 . 406458) (
-SKETCH.TRACK.ELEMENTS 406460 . 409980) (SK.PICKOUT.WHOLE.MOVE.ELEMENTS 409982 . 410541) (
-MAP.SKETCH.ELEMENTS.INTO.VIEWER 410543 . 410935) (MAP.GLOBAL.POSITION.INTO.VIEWER 410937 . 411317) (
-SKETCH.TO.VIEWER.POSITION 411319 . 411678) (SKETCH.TRACK.IMAGE 411680 . 412534) (SK.TRACK.IMAGE1 
-412536 . 413948) (MAP.VIEWER.XY.INTO.GLOBAL 413950 . 414944) (SK.SET.POSITION 414946 . 415282) (
-MAP.VIEWER.PT.INTO.GLOBAL 415284 . 416390) (VIEWER.TO.SKETCH.POSITION 416392 . 417027) (
-SK.INSURE.SCALE 417029 . 417289) (SKETCH.TO.VIEWER.REGION 417291 . 418097) (VIEWER.TO.SKETCH.REGION 
-418099 . 418437) (SK.READ.POINT.WITH.FEEDBACK 418439 . 429442) (SKETCH.GET.POSITION 429444 . 431324) (
-\CLOBBER.POSITION 431326 . 431774) (NEAREST.HOT.SPOT 431776 . 433304) (GETWREGION 433306 . 434067) (
-GET.BITMAP.POSITION 434069 . 434853) (SK.TRACK.BITMAP1 434855 . 442394)) (442965 473851 (
-SK.BRING.UP.POSITION.PAD 442975 . 448835) (SK.PAD.READER.POSITION 448837 . 450486) (
-SK.POSITION.READER.REPAINTFN 450488 . 452272) (SK.POSITION.PAD.FROM.VIEWER 452274 . 453616) (
-SK.INIT.POSITION.NUMBER.PAD.MENU 453618 . 453968) (SK.READ.POSITION.PAD.HANDLER 453970 . 459702) (
-DISPLAY.POSITION.READER.TOTAL 459704 . 462002) (POSITION.PAD.READER.HANDLER 462004 . 470047) (
-POSITIONPAD.HELDFN 470049 . 471533) (\POSITION.PAD.ADD.DIGIT.MENU 471535 . 473114) (
-\POSITION.READER.NUMBERPAD 473116 . 473849)) (475477 478155 (SK.DRAWFN 475487 . 475853) (
-SK.TRANSFORMFN 475855 . 476236) (SK.EXPANDFN 476238 . 476515) (SK.INPUT 476517 . 476898) (SK.INSIDEFN 
-476900 . 477540) (SK.UPDATEFN 477542 . 478153)) (483320 485476 (UPDATE-SKETCH 483330 . 484443) (
-EDIT-SKETCH 484445 . 485474)) (486077 490022 (SK.CHECK.SKETCH.VERSION 486087 . 487327) (
-SK.INSURE.RECORD.LENGTH 487329 . 488812) (SK.INSURE.HAS.LENGTH 488814 . 489552) (SK.RECORD.LENGTH 
-489554 . 489728) (SK.SET.RECORD.LENGTHS 489730 . 490020)) (490485 491372 (
-SK.ADD.EDIT.COMMAND.TO.FILE.BROWSER 490495 . 491370)))))
+  (FILEMAP (NIL (18101 19973 (SKETCH.FLUSH.EXISTING 18111 . 19971)) (20083 31463 (SKETCH.FROM.A.FILE 
+20093 . 20509) (SK.PUT.ON.FILE 20511 . 22007) (SKETCH.PUT 22009 . 24652) (SK.OUTPUT.FILE.NAME 24654 . 
+25139) (SK.INCLUDE.FILE 25141 . 28007) (SK.GET.IMAGEOBJ.FROM.FILE 28009 . 30172) (SK.GET.FROM.FILE 
+30174 . 31156) (SKETCH.GET 31158 . 31461)) (31464 90453 (SKETCH 31474 . 33642) (SKETCHW.CREATE 33644
+ . 43169) (SKETCH.RESET 43171 . 44794) (SKETCHW.FIG.CHANGED 44796 . 45120) (SK.WINDOW.TITLE 45122 . 
+45610) (EDITSLIDE 45612 . 46123) (EDITSKETCH 46125 . 46445) (ADD.SKETCH.TO.VIEWER 46447 . 49037) (
+SK.ADD.ELEMENTS.TO.SKETCH 49039 . 49537) (SKETCH.SET.A.DEFAULT 49539 . 57098) (SK.POPUP.SELECTIONFN 
+57100 . 57626) (GETSKETCHWREGION 57628 . 57830) (SK.ADD.ELEMENT 57832 . 59395) (
+SK.ADD.PRIORITY.ELEMENT.TO.SKETCH 59397 . 60751) (SK.ELTS.BY.PRIORITY 60753 . 61034) (
+SK.ORDER.ELEMENTS 61036 . 61288) (SK.ADD.PRIORITY.LOCAL.ELEMENT.TO.SKETCH 61290 . 62901) (
+SK.ADD.ELEMENTS 62903 . 63516) (SK.CHECK.WHENADDEDFN 63518 . 64232) (SK.APPLY.MENU.COMMAND 64234 . 
+65074) (SK.DELETE.ELEMENT1 65076 . 66626) (SK.MARK.DIRTY 66628 . 67382) (SK.MARK.UNDIRTY 67384 . 67802
+) (SK.MENU.AND.RETURN.FIELD 67804 . 68576) (SKETCH.SET.BRUSH.SHAPE 68578 . 69161) (
+SKETCH.SET.BRUSH.SIZE 69163 . 69665) (SKETCHW.CLOSEFN 69667 . 71612) (SK.CONFIRM.DESTRUCTION 71614 . 
+72596) (SKETCHW.OUTFN 72598 . 72846) (SKETCHW.REOPENFN 72848 . 73426) (MAKE.LOCAL.SKETCH 73428 . 74125
+) (MAP.SKETCHSPEC.INTO.VIEWER 74127 . 75427) (SKETCHW.REPAINTFN 75429 . 76317) (SKETCHW.REPAINTFN1 
+76319 . 77241) (SK.DRAWFIGURE.IF 77243 . 77742) (SKETCHW.SCROLLFN 77744 . 82116) (SKETCHW.RESHAPEFN 
+82118 . 84558) (SK.UPDATE.EVENT.SELECTION 84560 . 86599) (LIGHTGRAYWINDOW 86601 . 86760) (
+SK.ADD.SPACES 86762 . 87504) (SK.SKETCH.MENU 87506 . 87824) (SK.CHECK.IMAGEOBJ.WHENDELETEDFN 87826 . 
+88663) (SK.APPLY.IMAGEOBJ.WHENDELETEDFN 88665 . 89757) (SK.RETURN.TTY 89759 . 90123) (SK.TAKE.TTY 
+90125 . 90451)) (90507 114106 (SKETCH.COMMANDMENU 90517 . 90951) (SKETCH.COMMANDMENU.ITEMS 90953 . 
+111036) (CREATE.SKETCHW.COMMANDMENU 111038 . 111454) (SKETCHW.SELECTIONFN 111456 . 112539) (
+SKETCH.MONITORLOCK 112541 . 113008) (SK.EVAL.AS.PROCESS 113010 . 113724) (SK.EVAL.WITH.LOCK 113726 . 
+114104)) (114107 122470 (SK.FIX.MENU 114117 . 115312) (SK.SET.UP.MENUS 115314 . 117674) (
+SK.INSURE.HAS.MENU 117676 . 118418) (SK.CREATE.STANDARD.MENU 118420 . 118861) (SK.ADD.ITEM.TO.MENU 
+118863 . 119759) (SK.GET.VIEWER.POPUP.MENU 119761 . 122080) (SK.CLEAR.POPUP.MENU 122082 . 122468)) (
+122526 131359 (SKETCH.CREATE 122536 . 123320) (GETSKETCHPROP 123322 . 126375) (PUTSKETCHPROP 126377 . 
+130302) (CREATE.DEFAULT.SKETCH.CONTEXT 130304 . 131357)) (131525 153881 (SK.COPY.BUTTONEVENTFN 131535
+ . 143424) (SK.BUTTONEVENT.MARK 143426 . 143910) (SK.BUILD.IMAGEOBJ 143912 . 152471) (
+SK.BUTTONEVENT.OVERP 152473 . 153080) (SK.BUTTONEVENT.SAME.KEYS 153082 . 153879)) (154160 180880 (
+SK.SEL.AND.CHANGE 154170 . 154563) (SK.CHECK.WHENCHANGEDFN 154565 . 155255) (SK.CHECK.PRECHANGEFN 
+155257 . 155842) (SK.CHANGE.ELT 155844 . 156032) (SK.CHANGE.THING 156034 . 157453) (
+SKETCH.CHANGE.ELEMENTS 157455 . 158617) (SK.APPLY.SINGLE.CHANGEFN 158619 . 159176) (SK.DO.CHANGESPECS 
+159178 . 160932) (SK.VIEWER.FROM.SKETCH.ARG 160934 . 161360) (SK.DO.CHANGESPEC1 161362 . 163354) (
+SK.CHANGEFN 163356 . 163920) (SK.READCHANGEFN 163922 . 164364) (SK.DEFAULT.CHANGEFN 164366 . 166977) (
+CHANGEABLEFIELDITEMS 166979 . 167606) (SK.APPLY.CHANGE.COMMAND 167608 . 168325) (
+SK.DO.AND.RECORD.CHANGES 168327 . 169696) (SK.APPLY.CHANGE.COMMAND1 169698 . 171158) (
+SK.ELEMENTS.CHANGEFN 171160 . 173535) (READ.POINT.TO.ADD 173537 . 174465) (GLOBAL.KNOT.FROM.LOCAL 
+174467 . 175028) (SK.ADD.KNOT.TO.ELEMENT 175030 . 176135) (SK.GROUP.CHANGEFN 176137 . 177343) (
+SK.GROUP.CHANGEFN1 177345 . 180878)) (181047 195989 (ADD.ELEMENT.TO.SKETCH 181057 . 182747) (
+ADD.SKETCH.VIEWER 182749 . 183413) (REMOVE.SKETCH.VIEWER 183415 . 184024) (ALL.SKETCH.VIEWERS 184026
+ . 184367) (SKETCH.ALL.VIEWERS 184369 . 184629) (VIEWER.BUCKET 184631 . 184778) (ELT.INSIDE.REGION? 
+184780 . 185208) (ELT.INSIDE.SKWP 185210 . 185602) (SCALE.FROM.SKW 185604 . 185850) (
+SK.ADDELT.TO.WINDOW 185852 . 187019) (SK.CALC.REGION.VIEWED 187021 . 187395) (SK.DRAWFIGURE 187397 . 
+188668) (SK.DRAWFIGURE1 188670 . 189050) (SK.LOCAL.FROM.GLOBAL 189052 . 190428) (SKETCH.REGION.VIEWED 
+190430 . 193366) (SKETCH.VIEW.FROM.NAME 193368 . 193899) (SK.UPDATE.REGION.VIEWED 193901 . 194289) (
+SKETCH.ADD.AND.DISPLAY 194291 . 194683) (SKETCH.ADD.AND.DISPLAY1 194685 . 195224) (SK.ADD.ITEM 195226
+ . 195542) (SKETCHW.ADD.INSTANCE 195544 . 195987)) (196030 209355 (SK.SEL.AND.DELETE 196040 . 196424) 
+(SK.ERASE.AND.DELETE.ITEM 196426 . 196841) (REMOVE.ELEMENT.FROM.SKETCH 196843 . 197937) (
+SK.DELETE.ELEMENT 197939 . 198481) (SK.DELETE.ELEMENT2 198483 . 199128) (SK.DELETE.KNOT 199130 . 
+199522) (SK.SEL.AND.DELETE.KNOT 199524 . 200645) (SK.DELETE.ELEMENT.KNOT 200647 . 203860) (
+SK.CHECK.WHENDELETEDFN 203862 . 204625) (SK.CHECK.PREEDITFN 204627 . 205212) (
+SK.CHECK.END.INITIAL.EDIT 205214 . 205732) (SK.CHECK.WHENPOINTDELETEDFN 205734 . 206514) (SK.ERASE.ELT
+ 206516 . 206848) (SK.DELETE.ELT 206850 . 207221) (SK.DELETE.ITEM 207223 . 207627) (DELFROMTCONC 
+207629 . 209353)) (209394 223511 (SK.COPY.ELT 209404 . 209770) (SK.SEL.AND.COPY 209772 . 210151) (
+SK.COPY.ELEMENTS 210153 . 215995) (SK.ADD.COPY.OF.ELEMENTS 215997 . 217811) (
+SK.GLOBAL.FROM.LOCAL.ELEMENTS 217813 . 218138) (SK.COPY.ITEM 218140 . 218904) (SK.INSERT.SKETCH 218906
+ . 223509)) (223551 253998 (SK.MOVE.ELT 223561 . 223937) (SK.MOVE.ELT.OR.PT 223939 . 224353) (
+SK.APPLY.DEFAULT.MOVE 224355 . 224956) (SK.SEL.AND.MOVE 224958 . 225489) (SK.MOVE.ELEMENTS 225491 . 
+236561) (SKETCH.MOVE.ELEMENTS 236563 . 238453) (SKETCH.COPY.ELEMENTS 238455 . 240461) (
+\SKETCH.COPY.ELEMENT 240463 . 241180) (SK.TRANSLATE.ELEMENT 241182 . 241649) (SK.COPY.GLOBAL.ELEMENT 
+241651 . 241862) (SK.MAKE.ELEMENT.MOVE.ARG 241864 . 242467) (SK.MAKE.ELEMENTS.MOVE.ARG 242469 . 242974
+) (SK.MAKE.POINTS.AND.ELEMENTS.MOVE.ARG 242976 . 244028) (SK.SHOW.FIG.FROM.INFO 244030 . 244394) (
+SK.MOVE.THING 244396 . 245298) (UPDATE.ELEMENT.IN.SKETCH 245300 . 247303) (SK.UPDATE.ELEMENT 247305 . 
+248822) (SK.UPDATE.ELEMENTS 248824 . 249527) (SK.UPDATE.ELEMENT1 249529 . 253583) (
+SK.MOVE.ELEMENT.POINT 253585 . 253996)) (254061 277032 (SK.MOVE.POINTS 254071 . 254459) (
+SK.SEL.AND.MOVE.POINTS 254461 . 254751) (SK.DO.MOVE.ELEMENT.POINTS 254753 . 263337) (
+SK.MOVE.ITEM.POINTS 263339 . 265094) (SK.TRANSLATEPTSFN 265096 . 265476) (SK.TRANSLATE.POINTS 265478
+ . 266375) (SK.SELECT.MULTIPLE.POINTS 266377 . 272279) (SK.CONTROL.POINTS.IN.REGION 272281 . 273754) (
+SK.ADD.PT.SELECTION 273756 . 274216) (SK.REMOVE.PT.SELECTION 274218 . 274820) (SK.ADD.POINT 274822 . 
+275550) (SK.ELTS.CONTAINING.PTS 275552 . 276385) (SK.HOTSPOTS.NOT.ON.LIST 276387 . 277030)) (277190 
+280066 (SK.SET.MOVE.MODE 277200 . 277856) (SK.SET.MOVE.MODE.POINTS 277858 . 278193) (
+SK.SET.MOVE.MODE.ELEMENTS 278195 . 278535) (SK.SET.MOVE.MODE.COMBINED 278537 . 278883) (READMOVEMODE 
+278885 . 280064)) (280067 299658 (SK.ALIGN.POINTS 280077 . 280468) (SK.SEL.AND.ALIGN.POINTS 280470 . 
+280764) (SK.ALIGN.POINTS.LEFT 280766 . 281170) (SK.ALIGN.POINTS.RIGHT 281172 . 281578) (
+SK.ALIGN.POINTS.TOP 281580 . 281982) (SK.ALIGN.POINTS.BOTTOM 281984 . 282392) (
+SK.EVEN.SPACE.POINTS.IN.X 282394 . 282815) (SK.EVEN.SPACE.POINTS.IN.Y 282817 . 283238) (
+SK.DO.ALIGN.POINTS 283240 . 293968) (SK.NTH.CONTROL.POINT 293970 . 294431) (
+SK.GET.SELECTED.ELEMENT.STRUCTURE 294433 . 295084) (SK.CORRESPONDING.CONTROL.PT 295086 . 295624) (
+SK.CONTROL.POINT.NUMBER 295626 . 296097) (SK.DO.ALIGN.SETVALUE 296099 . 299656)) (299722 313949 (
+SKETCH.CREATE.GROUP 299732 . 300217) (SK.CREATE.GROUP1 300219 . 300768) (SK.UPDATE.GROUP.AFTER.CHANGE 
+300770 . 301660) (SK.GROUP.ELTS 301662 . 302044) (SK.SEL.AND.GROUP 302046 . 302428) (SK.GROUP.ELEMENTS
+ 302430 . 304174) (SK.UNGROUP.ELT 304176 . 304561) (SK.SEL.AND.UNGROUP 304563 . 306228) (
+SK.UNGROUP.ELEMENT 306230 . 307298) (SK.GLOBAL.REGION.OF.LOCAL.ELEMENTS 307300 . 308323) (
+SK.LOCAL.REGION.OF.LOCAL.ELEMENTS 308325 . 309437) (SK.GLOBAL.REGION.OF.GLOBAL.ELEMENTS 309439 . 
+310868) (SK.UNIONREGIONS 310870 . 313228) (SKETCH.REGION.OF.SKETCH 313230 . 313642) (SK.FLASHREGION 
+313644 . 313947)) (313950 327728 (INIT.GROUP.ELEMENT 313960 . 314828) (GROUP.DRAWFN 314830 . 315276) (
+GROUP.EXPANDFN 315278 . 316951) (GROUP.INSIDEFN 316953 . 317463) (GROUP.REGIONFN 317465 . 317856) (
+GROUP.GLOBALREGIONFN 317858 . 318277) (GROUP.TRANSLATEFN 318279 . 320294) (GROUP.TRANSFORMFN 320296 . 
+323798) (GROUP.READCHANGEFN 323800 . 327726)) (327729 328737 (REGION.CENTER 327739 . 328340) (
+REMOVE.LAST 328342 . 328735)) (328790 334311 (SK.MOVE.GROUP.CONTROL.PT 328800 . 329192) (
+SK.SEL.AND.MOVE.CONTROL.PT 329194 . 330699) (SK.MOVE.GROUP.ELEMENT.CONTROL.POINT 330701 . 332885) (
+SK.READ.NEW.GROUP.CONTROL.PT 332887 . 334309)) (334570 339213 (SK.DO.GROUP 334580 . 336071) (
+SK.CHECK.WHENGROUPEDFN 336073 . 336779) (SK.DO.UNGROUP 336781 . 337982) (SK.CHECK.WHENUNGROUPEDFN 
+337984 . 338567) (SK.GROUP.UNDO 338569 . 338888) (SK.UNGROUP.UNDO 338890 . 339211)) (339454 344546 (
+SK.FREEZE.ELTS 339464 . 339849) (SK.SEL.AND.FREEZE 339851 . 340237) (SK.FREEZE.ELEMENTS 340239 . 
+340786) (SK.UNFREEZE.ELT 340788 . 341178) (SK.SEL.AND.UNFREEZE 341180 . 342712) (SK.UNFREEZE.ELEMENTS 
+342714 . 343269) (SK.FREEZE.UNDO 343271 . 343512) (SK.UNFREEZE.UNDO 343514 . 343757) (SK.DO.FREEZE 
+343759 . 344148) (SK.DO.UNFREEZE 344150 . 344544)) (344776 354859 (SKETCH.ELEMENTS.OF.SKETCH 344786 . 
+345599) (SKETCH.LIST.OF.ELEMENTS 345601 . 346300) (SKETCH.ADD.ELEMENT 346302 . 347360) (
+SKETCH.DELETE.ELEMENT 347362 . 349074) (DELFROMGROUPELT 349076 . 349977) (SKETCH.ELEMENT.TYPE 349979
+ . 350324) (SKETCH.ELEMENT.CHANGED 350326 . 351876) (SK.ELEMENT.CHANGED1 351878 . 352630) (
+SK.UPDATE.GLOBAL.IMAGE.OBJECT.ELEMENT 352632 . 354857)) (354913 360118 (INSURE.SKETCH 354923 . 357848)
+ (LOCALSPECS.FROM.VIEWER 357850 . 358206) (SK.LOCAL.ELT.FROM.GLOBALPART 358208 . 358660) (
+SKETCH.FROM.VIEWER 358662 . 358896) (INSPECT.SKETCH 358898 . 359324) (ELT.INSIDE.SKETCHWP 359326 . 
+359700) (SK.INSIDE.REGION 359702 . 360116)) (360119 364368 (MAPSKETCHSPECS 360129 . 360734) (
+MAPCOLLECTSKETCHSPECS 360736 . 361469) (MAPSKETCHSPECSUNTIL 361471 . 362263) (MAPGLOBALSKETCHSPECS 
+362265 . 362950) (MAPGLOBALSKETCHELEMENTS 362952 . 364366)) (364430 391257 (SK.ADD.SELECTION 364440 . 
+365163) (SK.COPY.INSERTFN 365165 . 368588) (SCREENELEMENTP 368590 . 369048) (SK.ITEM.REGION 369050 . 
+369704) (SK.ELEMENT.GLOBAL.REGION 369706 . 370386) (SK.LOCAL.ITEMS.IN.REGION 370388 . 372337) (
+SK.REGIONFN 372339 . 372645) (SK.GLOBAL.REGIONFN 372647 . 372989) (SK.REMOVE.SELECTION 372991 . 373702
+) (SK.SELECT.MULTIPLE.ITEMS 373704 . 384678) (SKETCH.GET.ELEMENTS 384680 . 386204) (SK.PUT.MARKS.UP 
+386206 . 386646) (SK.TAKE.MARKS.DOWN 386648 . 387088) (SK.TRANSLATE.GLOBALPART 387090 . 389347) (
+SK.TRANSLATE.ITEM 389349 . 390260) (SK.TRANSLATEFN 390262 . 390454) (TRANSLATE.SKETCH 390456 . 391255)
+) (391523 394700 (SK.INPUT.SCALE 391533 . 392456) (SK.UPDATE.SKETCHCONTEXT 392458 . 393156) (
+SK.SET.INPUT.SCALE 393158 . 393803) (SK.SET.INPUT.SCALE.CURRENT 393805 . 394197) (
+SK.SET.INPUT.SCALE.VALUE 394199 . 394698)) (394751 396742 (SK.SET.FEEDBACK.MODE 394761 . 396055) (
+SK.SET.FEEDBACK.POINT 396057 . 396225) (SK.SET.FEEDBACK.VERBOSE 396227 . 396487) (
+SK.SET.FEEDBACK.ALWAYS 396489 . 396740)) (396893 398834 (SKETCH.TITLE 396903 . 397267) (
+SK.SHRINK.ICONCREATE 397269 . 398832)) (404524 407501 (READBRUSHSHAPE 404534 . 404995) (READ.FUNCTION 
+404997 . 405508) (READBRUSHSIZE 405510 . 405964) (READANGLE 405966 . 406454) (READARCDIRECTION 406456
+ . 407499)) (407502 418694 (SK.CHANGE.DASHING 407512 . 411993) (READ.AND.SAVE.NEW.DASHING 411995 . 
+413921) (READ.NEW.DASHING 413923 . 415665) (READ.DASHING.CHANGE 415667 . 417133) (SK.CACHE.DASHING 
+417135 . 418238) (SK.DASHING.LABEL 418240 . 418692)) (418695 422750 (READ.FILLING.CHANGE 418705 . 
+420682) (SK.CACHE.FILLING 420684 . 421503) (READ.AND.SAVE.NEW.FILLING 421505 . 422255) (
+SK.FILLING.LABEL 422257 . 422748)) (423134 459191 (SK.GETGLOBALPOSITION 423144 . 423550) (
+SKETCH.TRACK.ELEMENTS 423552 . 427053) (SK.PICKOUT.WHOLE.MOVE.ELEMENTS 427055 . 427598) (
+MAP.SKETCH.ELEMENTS.INTO.VIEWER 427600 . 427988) (MAP.GLOBAL.POSITION.INTO.VIEWER 427990 . 428366) (
+SKETCH.TO.VIEWER.POSITION 428368 . 428711) (SKETCH.TRACK.IMAGE 428713 . 429550) (SK.TRACK.IMAGE1 
+429552 . 431051) (MAP.VIEWER.XY.INTO.GLOBAL 431053 . 432018) (SK.SET.POSITION 432020 . 432457) (
+MAP.VIEWER.PT.INTO.GLOBAL 432459 . 433541) (VIEWER.TO.SKETCH.POSITION 433543 . 434162) (
+SK.INSURE.SCALE 434164 . 434420) (SKETCH.TO.VIEWER.REGION 434422 . 435212) (VIEWER.TO.SKETCH.REGION 
+435214 . 435536) (SK.READ.POINT.WITH.FEEDBACK 435538 . 446164) (SKETCH.GET.POSITION 446166 . 448028) (
+\CLOBBER.POSITION 448030 . 448462) (NEAREST.HOT.SPOT 448464 . 449992) (GETWREGION 449994 . 450694) (
+GET.BITMAP.POSITION 450696 . 451449) (SK.TRACK.BITMAP1 451451 . 459189)) (459760 491951 (
+SK.BRING.UP.POSITION.PAD 459770 . 465795) (SK.PAD.READER.POSITION 465797 . 467426) (
+SK.POSITION.READER.REPAINTFN 467428 . 469415) (SK.POSITION.PAD.FROM.VIEWER 469417 . 470967) (
+SK.INIT.POSITION.NUMBER.PAD.MENU 470969 . 471315) (SK.READ.POSITION.PAD.HANDLER 471317 . 477080) (
+DISPLAY.POSITION.READER.TOTAL 477082 . 479469) (POSITION.PAD.READER.HANDLER 479471 . 487925) (
+POSITIONPAD.HELDFN 487927 . 489410) (\POSITION.PAD.ADD.DIGIT.MENU 489412 . 491092) (
+\POSITION.READER.NUMBERPAD 491094 . 491949)) (493577 496432 (SK.DRAWFN 493587 . 493949) (
+SK.TRANSFORMFN 493951 . 494328) (SK.EXPANDFN 494330 . 494607) (SK.INPUT 494609 . 494986) (SK.INSIDEFN 
+494988 . 495836) (SK.UPDATEFN 495838 . 496430)) (501597 503753 (UPDATE-SKETCH 501607 . 502720) (
+EDIT-SKETCH 502722 . 503751)) (504354 508314 (SK.CHECK.SKETCH.VERSION 504364 . 505476) (
+SK.INSURE.RECORD.LENGTH 505478 . 506922) (SK.INSURE.HAS.LENGTH 506924 . 507681) (SK.RECORD.LENGTH 
+507683 . 507853) (SK.SET.RECORD.LENGTHS 507855 . 508312)) (508777 509719 (
+SK.ADD.EDIT.COMMAND.TO.FILE.BROWSER 508787 . 509717)))))
 STOP
diff --git a/library/sketch/SKETCH.LCOM b/library/sketch/SKETCH.LCOM
index 0b292838..15cf7aa2 100644
Binary files a/library/sketch/SKETCH.LCOM and b/library/sketch/SKETCH.LCOM differ
diff --git a/library/virtualkeyboards/KEYBOARDCONFIGS b/library/virtualkeyboards/KEYBOARDCONFIGS
index e572a178..057613e6 100644
--- a/library/virtualkeyboards/KEYBOARDCONFIGS
+++ b/library/virtualkeyboards/KEYBOARDCONFIGS
@@ -1,10 +1,10 @@
-(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
+(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT UTF-8)
 
-(FILECREATED "13-Oct-2025 13:44:47" {WMEDLEY}<library>virtualkeyboards>KEYBOARDCONFIGS.;5 59521  
+(FILECREATED "19-Feb-2026 22:32:05" {WMEDLEY}<library>virtualkeyboards>KEYBOARDCONFIGS.;6 59604  
 
       :EDIT-BY rmk
 
-      :PREVIOUS-DATE "13-Oct-2025 12:03:23" {WMEDLEY}<library>virtualkeyboards>KEYBOARDCONFIGS.;4)
+      :PREVIOUS-DATE "13-Oct-2025 13:44:47" {WMEDLEY}<library>virtualkeyboards>KEYBOARDCONFIGS.;5)
 
 
 (PRETTYCOMPRINT KEYBOARDCONFIGSCOMS)
@@ -57,11 +57,11 @@
         (F3 (F3 ITALIC))
         (F4 (F4 UCASE))
         (F5 (F5 STRIKE))
-        (F6 (F6 "�"))
+        (F6 (F6 "^"))
         (F7 (F7 SUBSCR))
         (F8 (F8 SMALL))
         (F9 (F9 MARGIN))
-        (F10 (F10 "�"))
+        (F10 (F10 "_"))
         (F11 (F11 ""))
         (F12 (F12 ""))
         (LOCK ("CAPS" "LOCK"))
@@ -115,7 +115,7 @@
         (THREE (|3| %# NLS))
         (FOUR (|4| $ NLS))
         (FIVE (|5| %% NLS))
-        (SIX (|6| ^ NLS))
+        (SIX (|6| ↑ NLS))
         (SEVEN (|7| & NLS))
         (EIGHT (|8| * NLS))
         (NINE (|9| %( NLS))))
@@ -234,7 +234,7 @@
              NIL
              ((%" (%' %" NLS))
               (+ (= + NLS))
-              (- (- _ NLS))
+              (- (- ← NLS))
               (%: (; %: NLS))
               (< (%, < NLS))
               (> (%. > NLS))
@@ -255,13 +255,13 @@
               (NUMERIC/ (/ /))
               (NUMERIC0 (INS |0| NLS))
               (NUMERIC1 (END |1| NLS))
-              (NUMERIC2 (� |2| NLS))
+              (NUMERIC2 (↓ |2| NLS))
               (NUMERIC3 (PGDN |3| NLS))
-              (NUMERIC4 (� |4| NLS))
+              (NUMERIC4 (_ |4| NLS))
               (NUMERIC5 (|5| |5|))
-              (NUMERIC6 (� |6| NLS))
+              (NUMERIC6 (→ |6| NLS))
               (NUMERIC7 (HOME |7| NLS))
-              (NUMERIC8 (� |8| NLS))
+              (NUMERIC8 (^ |8| NLS))
               (NUMERIC9 (PGUP |9| NLS))
               (NUMERIC= (= =))
               (RETURN (CR CR))
@@ -274,17 +274,17 @@
               (F3 (ITALIC NOTITALIC NLS))
               (F4 (UCASE LCASE NLS))
               (F5 (STRIKEOUT NOTSTRIKEOUT NLS))
-              (F6 ("�" "�" NLS))
+              (F6 ("^" "^" NLS))
               (F7 (SUBSCRIPT SUPERSCRIPT NLS))
               (F8 (SMALLER LARGER NLS))
               (F9 (MARGINS NOTMARGINS NLS))
-              (F10 ("�" "�" NLS))
+              (F10 ("_" "_" NLS))
               (F11 (F11 NOTF11 NLS))
               (F12 (F12 NOTF12 NLS)))
              ((%` 45 B)
               (~ 45 T)
               (|6| 2 B)
-              (^ 2 T)
+              (↑ 2 T)
               (%% 0 T)
               (|5| 0 B)
               ($ 1 T)
@@ -523,7 +523,7 @@
                        (> (346 46 29 33))
                        (%: (362 82 29 33))
                        (<-%| (426 82 63 33))
-                       (^ (450 118 29 33))
+                       (↑ (450 118 29 33))
                        (DEL (498 154 29 33))
                        (R (162 118 29 33))
                        (T (194 118 29 33))
@@ -556,7 +556,7 @@
                   (LF (LF LF))
                   (LOCK LOCKDOWN . LOCKUP)
                   (\ (\ %| NLS))
-                  (^ (_ ^ NLS))
+                  (↑ (← ↑ NLS))
                   ({ (%[ { NLS))
                   (} (%] } NLS)))
                  ((BLANK-MIDDLE 30)
@@ -643,8 +643,8 @@
                   (%: 43)
                   (CR 44)
                   (<-%| 44)
-                  (_ 45)
-                  (^ 45)
+                  (← 45)
+                  (↑ 45)
                   (r 48)
                   (R 48)
                   (t 49)
@@ -744,7 +744,7 @@
                  NIL
                  ((%" (%' %" NLS))
                   (+ (= + NLS))
-                  (- (- _ NLS))
+                  (- (- ← NLS))
                   (ESC (ESC %| NLS))
                   (%: (; %: NLS))
                   (< (%, < NLS))
@@ -757,7 +757,7 @@
                   (~ (%` ~ NLS)))
                  ((%` 45)
                   (~ 45)
-                  (^ 2)
+                  (↑ 2)
                   (|6| 2)
                   (w 18)
                   (W 18)
@@ -951,7 +951,7 @@
                 NIL
                 ((%" (%' %" NLS))
                  (+ (= + NLS))
-                 (- (- _ NLS))
+                 (- (- ← NLS))
                  (%: (; %: NLS))
                  (< (%, < NLS))
                  (<-%| (CR CR))
@@ -962,21 +962,21 @@
                  (KEYBOARD METADOWN . METAUP)
                  (LOCK LOCKDOWN . LOCKUP)
                  (NEXT (2,22 2,62 NLS))
-                 (NUMERIC* (NUMLK � NLS))
+                 (NUMERIC* (NUMLK × NLS))
                  (NUMERIC+ (HELP 2,45 NLS))
                  (NUMERIC, (\ %, NLS))
                  (NUMERIC- (SCRL - NLS))
                  (NUMERIC. (%| 21 NLS))
-                 (NUMERIC/ (BREAK � NLS))
+                 (NUMERIC/ (BREAK ÷ NLS))
                  (NUMERIC0 (INS |0| NLS))
                  (NUMERIC1 (END |1| NLS))
-                 (NUMERIC2 (� |2| NLS))
+                 (NUMERIC2 (↓ |2| NLS))
                  (NUMERIC3 (PGDN |3| NLS))
-                 (NUMERIC4 (� |4| NLS))
+                 (NUMERIC4 (_ |4| NLS))
                  (NUMERIC5 (%  |5| NLS))
-                 (NUMERIC6 (� |6| NLS))
+                 (NUMERIC6 (→ |6| NLS))
                  (NUMERIC7 (HOME |7| NLS))
-                 (NUMERIC8 (� |8| NLS))
+                 (NUMERIC8 (^ |8| NLS))
                  (NUMERIC9 (PGUP |9| NLS))
                  (%` (%` ~ NLS))
                  ({ (%[ { NLS))
@@ -987,7 +987,7 @@
                  (|4| 1)
                  ($ 1)
                  (|6| 2)
-                 (^ 2)
+                 (↑ 2)
                  (e 3)
                  (E 3)
                  (|7| 4)
@@ -1233,7 +1233,7 @@
                   (%. (%. > NLS))
                   (/ (/ ? NLS))
                   (\ (\ %| NLS))
-                  (- (- _ NLS))
+                  (- (- ← NLS))
                   (%` (%` ~ NLS))
                   (%[ (%[ { NLS))
                   (%] (%] } NLS))
@@ -1249,13 +1249,13 @@
                   (NUMERIC/ (/ /))
                   (NUMERIC0 (INS |0| NLS))
                   (NUMERIC1 (END |1| NLS))
-                  (NUMERIC2 (� |2| NLS))
+                  (NUMERIC2 (↓ |2| NLS))
                   (NUMERIC3 (PGDN |3| NLS))
-                  (NUMERIC4 (� |4| NLS))
+                  (NUMERIC4 (_ |4| NLS))
                   (NUMERIC5 (|5| |5|))
-                  (NUMERIC6 (� |6| NLS))
+                  (NUMERIC6 (→ |6| NLS))
                   (NUMERIC7 (HOME |7| NLS))
-                  (NUMERIC8 (� |8| NLS))
+                  (NUMERIC8 (^ |8| NLS))
                   (NUMERIC9 (PGUP |9| NLS))
                   (NUMERICENTER (CR CR))
                   (RALT METADOWN . METAUP)
@@ -1264,11 +1264,11 @@
                   (F3 (ITALIC NOTITALIC NLS))
                   (F4 (UCASE LCASE NLS))
                   (F5 (STRIKEOUT NOTSTRIKEOUT NLS))
-                  (F6 ("�" "�" NLS))
+                  (F6 ("^" "^" NLS))
                   (F7 (SUBSCRIPT SUPERSCRIPT NLS))
                   (F8 (SMALLER LARGER NLS))
                   (F9 (MARGINS NOTMARGINS NLS))
-                  (F10 ("�" "�" NLS))
+                  (F10 ("_" "_" NLS))
                   (F11 (F11 NOTF11 NLS))
                   (F12 (F12 NOTF12 NLS)))
                  ((%' 28 B)
@@ -1276,7 +1276,7 @@
                   (%, 27 B)
                   (< 27 T)
                   (- 10 B)
-                  (_ 10 T)
+                  (← 10 T)
                   (> 42 T)
                   (%. 42 B)
                   (/ 12 B)
@@ -1286,7 +1286,7 @@
                   (%# 16 T)
                   ($ 1 T)
                   (%% 0 T)
-                  (^ 4 T)
+                  (↑ 4 T)
                   (* 53 T)
                   (%( 22 T)
                   (%) 8 T)
@@ -1494,7 +1494,7 @@
                            (M (370 42 29 29))
                            (; (402 42 29 29))
                            (%: (434 42 29 29))
-                           (_ (466 42 29 29))
+                           (← (466 42 29 29))
                            (RSHIFT (498 42 53 29))
                            (LINEFEED (554 42 29 29))
                            (CONTROL (106 74 53 29))
@@ -1559,7 +1559,7 @@
                   (ONE (|1| + NLS))
                   (TWO (|2| %" NLS))
                   (THREE (|3| * NLS))
-                  (FOUR (|4| � NLS))
+                  (FOUR (|4|  NLS))
                   (SIX (|6| & NLS))
                   (SEVEN (|7| / NLS))
                   (EIGHT (|8| %( NLS))
@@ -1567,7 +1567,7 @@
                   (%: (%. %: NLS))
                   (; (%, ; NLS))
                   (? (%' ? NLS))
-                  (AUMLAUT (� � NLS))
+                  (AUMLAUT (  NLS))
                   (CAPSLOCK CTRLDOWN . CTRLUP)
                   (CONTROL LOCKDOWN . LOCKUP)
                   (CR (CR CR))
@@ -1591,10 +1591,10 @@
                   (NUMERIC8 (|8| |8|))
                   (NUMERIC9 (|9| |9|))
                   (NUMERIC= (= =))
-                  (OUMLAUT (� � NLS))
-                  (UUMLAUT (� � NLS))
+                  (OUMLAUT (  NLS))
+                  (UUMLAUT (  NLS))
                   (%[ (%] %[ NLS))
-                  (_ (- _ NLS))
+                  (← (- ← NLS))
                   ({ (< { NLS))
                   (} (> } NLS)))
                  ((HELP 0)
@@ -1658,7 +1658,7 @@
                   (%. 49)
                   (%: 49)
                   (- 50)
-                  (_ 50)
+                  (← 50)
                   (RSHIFT 51)
                   (LINEFEED 52)
                   (CONTROL 53)
diff --git a/library/virtualkeyboards/XKEYBOARDS b/library/virtualkeyboards/XKEYBOARDS
index a035c92a..9998bd96 100644
Binary files a/library/virtualkeyboards/XKEYBOARDS and b/library/virtualkeyboards/XKEYBOARDS differ
diff --git a/lispusers/ISO8859IO b/lispusers/ISO8859IO
index 809d08d8..da16ac65 100644
--- a/lispusers/ISO8859IO
+++ b/lispusers/ISO8859IO
@@ -1,26 +1,27 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
 
-(FILECREATED " 1-Feb-2026 13:03:18" {WMEDLEY}<lispusers>ISO8859IO.;19 23459  
+(FILECREATED "22-Feb-2026 12:22:12" {WMEDLEY}<lispusers>ISO8859IO.;22 21861  
 
       :EDIT-BY rmk
 
-      :CHANGES-TO (FNS \MAKERECODEMAP MAKEISOFORMAT \8859OUTCHARFN \8859INCCODEFN \8859PEEKCCODEFN)
+      :CHANGES-TO (FNS ISO1TOMSTRING MTOISO1STRING)
                   (VARS ISO8859IOCOMS)
 
-      :PREVIOUS-DATE " 8-Aug-2021 13:22:31" {WMEDLEY}<lispusers>ISO8859IO.;11)
+      :PREVIOUS-DATE " 2-Feb-2026 23:20:20" {WMEDLEY}<lispusers>ISO8859IO.;20)
 
 
 (PRETTYCOMPRINT ISO8859IOCOMS)
 
 (RPAQQ ISO8859IOCOMS
        (
-        (* ;; "This package defines EXTERNALFORMATS for files that are encoded in either ISO8859/1, the standard IBM extended ascii, or the usual MAC encoding.")
+        (* ;; "This package defines EXTERNALFORMATS for files that are encoded in ISIO8859/1, the standard IBM extended ascii, or the legacy MAC encoding.")
 
-        (COMS                                                (* ; "ISO8859/1")
-              (FNS \8859OUTCHARFN \8859INCCODEFN \8859PEEKCCODEFN)
-              (GLOBALVARS *MCCSTOISO8859MAP* *ISO8859TOMCCSMAP*)
-              (FNS MAKEISOFORMAT)
-              (P (MAKEISOFORMAT)))
+        [COMS                                                (* ; "ISO8859/1")
+              (FNS ISO1TOMCODE MTOISO1CODE \CREATE.ISO1.FORMAT)
+              (FNS ISO1TOMSTRING MTOISO1STRING)
+              (VARS ISO1TOMCCS)
+              (GLOBALVARS ISO1TOMCCS)
+              (DECLARE%: DONTEVAL@LOAD DOCOPY (P (\CREATE.ISO1.FORMAT]
         (COMS                                                (* ; "IBM-PC Extended Ascii")
               (FNS \IBMOUTCHARFN \IBMINCCODEFN \IBMPEEKCCODEFN)
               (GLOBALVARS *XEROXTOIBMMAP* *IBMTOXEROXMAP*)
@@ -37,7 +38,7 @@
 
 
 (* ;; 
-"This package defines EXTERNALFORMATS for files that are encoded in either ISO8859/1, the standard IBM extended ascii, or the usual MAC encoding."
+"This package defines EXTERNALFORMATS for files that are encoded in ISIO8859/1, the standard IBM extended ascii, or the legacy MAC encoding."
 )
 
 
@@ -47,152 +48,150 @@
 
 (DEFINEQ
 
-(\8859OUTCHARFN
-  [LAMBDA (STREAM CHARCODE)
-    (DECLARE (GLOBALVARS *XEROXTOISO8859MAP*))               (* ; "Edited  1-Feb-2026 10:11 by rmk")
-                                                            (* ; "Edited  8-Aug-2021 13:21 by rmk:")
-                                                             (* ; "Edited  7-Dec-95 14:34 by ")
-                                                             (* ; "Edited  7-Dec-95 14:32 by ")
+(ISO1TOMCODE
+  [LAMBDA (ICODE)                                            (* ; "Edited  5-Feb-2026 12:09 by rmk")
+                                                             (* ; "Edited  2-Feb-2026 23:14 by rmk")
+                                                             (* ; "Edited  7-Sep-2025 22:39 by rmk")
+                                                             (* ; "Edited  3-Sep-2025 10:21 by rmk")
+                                                             (* ; "Edited  7-Aug-2025 09:37 by rmk")
 
-    (* ;; "Converts CHARCODE from internal encoding to ISO8859 before printing.")
+    (* ;; "ISO codes are 8bit, MCODES maybe not. Caller shouldn't pass a fat code.")
 
-    (* ;; "Unconverted codes are left unchanged (no error).")
+    (OR [CAR (find PAIR in ISO1TOMCCS suchthat (EQ ICODE (CADR PAIR]
+        ICODE])
 
-    (* ;; "If any remaining codes are out of charset 0, the streams external format will be used. ")
+(MTOISO1CODE
+  [LAMBDA (MCODE)                                            (* ; "Edited  5-Feb-2026 12:26 by rmk")
+                                                             (* ; "Edited  2-Feb-2026 22:58 by rmk")
+    (OR (CADR (ASSOC MCODE ISO1TOMCCS))
+        MCODE])
 
-    (IF (EQ CHARCODE (CHARCODE EOL))
-        THEN (FREPLACE (STREAM CHARPOSITION) OF STREAM WITH 0)
-             (\BOUTEOL STREAM)
-      ELSE (CHANGE (FFETCH (STREAM CHARPOSITION) OF STREAM)
-                  (IPLUS16 1 DATUM))
-           (\BOUT STREAM (IF (IGREATERP CHARCODE 127)
-                             THEN 
-
-                                 (* ;; "We know that ISO doesn't have floating accents, so only singletons are returned.  We also know that it agrees with MCCS on first 128, except for cirumflex and underscore")
-
-                                  (\RECODECCODE CHARCODE *MCCSTOISO8859MAP*)
-                           ELSE CHARCODE])
-
-(\8859INCCODEFN
-  [LAMBDA (STRM COUNTP)                                      (* ; "Edited  1-Feb-2026 10:10 by rmk")
-                                                            (* ; "Edited  6-Aug-2021 16:10 by rmk:")
-                                                             (* ; "Edited  7-Dec-95 15:24 by ")
-                                                             (* ; "Edited  7-Dec-95 15:19 by ")
-    (DECLARE (USEDFREE *BYTECOUNTER*))
-    (CL:WHEN COUNTP (SETQ *BYTECOUNTER* 1))
-    (\RECODECCODE (\BIN STRM)
-           *ISO8859TOMCCSMAP*])
-
-(\8859PEEKCCODEFN
-  [LAMBDA (STRM NOERROR)                                     (* ; "Edited  1-Feb-2026 10:10 by rmk")
-                                                            (* ; "Edited  5-May-2021 17:44 by rmk:")
-                                                             (* ; "Edited  3-Jan-96 14:21 by ")
-                                                             (* ; "Edited  7-Dec-95 15:51 by ")
-                                                             (* ; "Edited  7-Dec-95 15:19 by ")
-    (\RECODECCODE (\PEEKCCODE STRM NOERROR)
-           *ISO8859TOMCCSMAP*])
-)
-(DECLARE%: DOEVAL@COMPILE DONTCOPY
-
-(GLOBALVARS *MCCSTOISO8859MAP* *ISO8859TOMCCSMAP*)
-)
-(DEFINEQ
-
-(MAKEISOFORMAT
-  [LAMBDA NIL                                                (* ; "Edited  1-Feb-2026 11:18 by rmk")
+(\CREATE.ISO1.FORMAT
+  [LAMBDA NIL                                                (* ; "Edited  5-Feb-2026 10:42 by rmk")
+                                                             (* ; "Edited  2-Feb-2026 23:37 by rmk")
+                                                             (* ; "Edited  1-Feb-2026 11:18 by rmk")
                                                             (* ; "Edited  5-Aug-2021 22:15 by rmk:")
                                                              (* ; "Edited  9-Mar-99 17:19 by rmk:")
                                                              (* ; "Edited  7-Dec-95 16:24 by ")
                                                              (* ; "Edited  7-Dec-95 16:20 by ")
-    (LET [(MCCSTOISO '(("0,255" "0,136")
-                       ("0,254" "0,137")
-                       ("357,41" "0,240")
-                       ("357,153" "0,246")
-                       ("43,42" "0,250")
-                       ("0,323" "0,251")
-                       ("0,343" "0,252")
-                       ("357,152" "0,254")
-                       ("357,43" "0,255")
-                       ("0,322" "0,256")
-                       ("43,176" "0,257")
-                       ("43,47" "0,264")
-                       ("0,313" "0,270")
-                       ("0,321" "0,271")
-                       ("0,353" "0.272")
-                       ("361,41" "0,300")
-                       ("361,42" "0,301")
-                       ("361,43" "0,302")
-                       ("361,44" "0,303")
-                       ("361,47" "0,304")
-                       ("361,50" "0,305")
-                       ("0,341" "0,306")
-                       ("361,55" "0,307")
-                       ("361,60" "0,310")
-                       ("361,61" "0,311")
-                       ("361,62" "0,312")
-                       ("361,65" "0,313")
-                       ("361,76" "0,314")
-                       ("361,77" "0,315")
-                       ("361,100" "0,316")
-                       ("361,104" "0,317")
-                       ("0,342" "0,320")
-                       ("361,114" "0,321")
-                       ("361,117" "0,322")
-                       ("361,120" "0,323")
-                       ("361,121" "0,324")
-                       ("361,122" "0,325")
-                       ("361,124" "0,326")
-                       ("0,264" "0,327")
-                       ("0,351" "0,330")
-                       ("361,137" "0,331")
-                       ("361,140" "0,332")
-                       ("361,141" "0,333")
-                       ("361,145" "0,334")
-                       ("361,153" "0,335")
-                       ("0,354" "0,336")
-                       ("0,373" "0,337")
-                       ("361,241" "0,340")
-                       ("361,242" "0,341")
-                       ("361,243" "0,342")
-                       ("361,244" "0,343")
-                       ("361,247" "0,344")
-                       ("361,250" "0,345")
-                       ("0,361" "0,346")
-                       ("361,255" "0,347")
-                       ("361,260" "0,350")
-                       ("361,261" "0,351")
-                       ("361,262" "0,352")
-                       ("361,265" "0,353")
-                       ("361,276" "0,354")
-                       ("361,277" "0,355")
-                       ("361,300" "0,356")
-                       ("361,304" "0,357")
-                       ("0,363" "0,360")
-                       ("361,314" "0,361")
-                       ("361,317" "0,362")
-                       ("361,320" "0,363")
-                       ("361,321" "0,364")
-                       ("361,322" "0,365")
-                       ("361,324" "0,366")
-                       ("0,270" "0,367")
-                       ("0,371" "0,370")
-                       ("361,337" "0,371")
-                       ("361,340" "0,372")
-                       ("361,341" "0,373")
-                       ("361,345" "0,374")
-                       ("361,353" "0,375")
-                       ("0,374" "0,376")
-                       ("361,355" "0,377")
-                       ("361,155" "Meta,170"]
-         (SETQ *MCCSTOISO8859MAP* (\MAKERECODEMAP MCCSTOISO))
-         (SETQ *ISO8859TOMCCSMAP* (\MAKERECODEMAP MCCSTOISO T)))
-    (MAKE-EXTERNALFORMAT :ISO8859/1 (FUNCTION \8859INCCODEFN)
-           (FUNCTION \8859PEEKCCODEFN)
-           (FUNCTION \COMMONBACKCCODEFN)
-           (FUNCTION \8859OUTCHARFN])
+    (MAKE-EXTERNALFORMAT :ISO8859/1 [FUNCTION (LAMBDA (STREAM COUNTP)
+                                                (ISO1TOMCODE (\THROUGHIN STREAM COUNTP]
+           [FUNCTION (LAMBDA (STREAM NOERRORFLG)
+                       (ISO1TOMCODE (\PEEKBIN STREAM NOERRORFLG]
+           (FUNCTION \THROUGHBACKCCODE)
+           (FUNCTION NILL)
+           (FUNCTION NILL)
+           NIL NIL (FUNCTION MTOISO1STRING)
+           NIL
+           (FUNCTION NILL)
+           (FUNCTION ISO1TOMSTRING])
+)
+(DEFINEQ
+
+(ISO1TOMSTRING
+  [LAMBDA (ISTRING DESTRUCTIVE)                              (* ; "Edited 22-Feb-2026 12:21 by rmk")
+                                                             (* ; "Edited  5-Feb-2026 11:01 by rmk")
+                                                             (* ; "Edited  2-Feb-2026 23:46 by rmk")
+                                                             (* ; "Edited  2-Sep-2025 12:14 by rmk")
+                                                             (* ; "Edited 29-Apr-2025 13:08 by rmk")
+
+    (* ;; "Converts ISO8859/1 codes to MCCS codes in MSTRING.")
+
+    (for I ICODE (MSTRING _ (CL:IF DESTRUCTIVE
+                                ISTRING
+                                (CONCAT ISTRING))) from 1 while (SETQ ICODE (NTHCHARCODE ISTRING I))
+       do (RPLCHARCODE MSTRING I (ISO1TOMCODE ICODE)) finally (RETURN MSTRING])
+
+(MTOISO1STRING
+  [LAMBDA (MSTRING DESTRUCTIVE)                              (* ; "Edited 22-Feb-2026 12:22 by rmk")
+                                                             (* ; "Edited  2-Feb-2026 23:47 by rmk")
+                                                             (* ; "Edited  2-Sep-2025 12:22 by rmk")
+                                                             (* ; "Edited 29-Apr-2025 13:08 by rmk")
+
+    (* ;; "Converts MCCS to ISO8859/1 codes in MSTRING.")
+
+    (for I MCODE (ISTRING _ (CL:IF DESTRUCTIVE
+                                MSTRING
+                                (CONCAT MSTRING))) from 1 while (SETQ MCODE (NTHCHARCODE MSTRING I))
+       do (RPLCHARCODE ISTRING I (MTOISO1CODE MCODE)) finally (RETURN ISTRING])
 )
 
-(MAKEISOFORMAT)
+(RPAQQ ISO1TOMCCS
+       ((94 8593)
+        (95 8592)
+        (169 8216)
+        (170 8220)
+        (172 95)
+        (173 94)
+        (174 8594)
+        (175 8595)
+        (180 215)
+        (184 247)
+        (185 8217)
+        (186 8221)
+        (193 768)
+        (194 769)
+        (195 770)
+        (196 771)
+        (197 772)
+        (198 774)
+        (199 775)
+        (200 776)
+        (202 778)
+        (203 807)
+        (204 818)
+        (205 779)
+        (206 808)
+        (207 780)
+        (208 8213)
+        (209 185)
+        (210 174)
+        (211 169)
+        (212 8482)
+        (213 9834)
+        (220 8539)
+        (221 8540)
+        (222 8541)
+        (223 8542)
+        (224 8486)
+        (225 198)
+        (226 208)
+        (227 170)
+        (228 294)
+        (229 567)
+        (230 306)
+        (231 319)
+        (232 321)
+        (233 216)
+        (234 338)
+        (235 186)
+        (236 222)
+        (237 358)
+        (238 330)
+        (239 329)
+        (240 312)
+        (241 230)
+        (242 273)
+        (243 240)
+        (244 295)
+        (245 305)
+        (246 307)
+        (247 320)
+        (248 322)
+        (249 248)
+        (250 339)
+        (251 223)
+        (252 254)
+        (253 359)
+        (254 331)))
+(DECLARE%: DOEVAL@COMPILE DONTCOPY
+
+(GLOBALVARS ISO1TOMCCS)
+)
+(DECLARE%: DONTEVAL@LOAD DOCOPY 
+
+(\CREATE.ISO1.FORMAT)
+)
 
 
 
@@ -553,10 +552,10 @@
              CODE])
 )
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (1840 4502 (\8859OUTCHARFN 1850 . 3287) (\8859INCCODEFN 3289 . 3879) (\8859PEEKCCODEFN 
-3881 . 4500)) (4592 8848 (MAKEISOFORMAT 4602 . 8846)) (8908 10826 (\IBMOUTCHARFN 8918 . 9721) (
-\IBMINCCODEFN 9723 . 10204) (\IBMPEEKCCODEFN 10206 . 10824)) (10910 14441 (MAKEIBMFORMAT 10920 . 14439
-)) (14489 16336 (\MACOUTCHARFN 14499 . 15556) (\MACINCCODEFN 15558 . 15922) (\MACPEEKCCODEFN 15924 . 
-16334)) (16420 20973 (MAKEMACFORMAT 16430 . 20971)) (21040 23436 (\COMMONBACKCCODEFN 21050 . 21420) (
-\MAKERECODEMAP 21422 . 22989) (\RECODECCODE 22991 . 23434)))))
+  (FILEMAP (NIL (1834 4154 (ISO1TOMCODE 1844 . 2593) (MTOISO1CODE 2595 . 2885) (\CREATE.ISO1.FORMAT 2887
+ . 4152)) (4155 5904 (ISO1TOMSTRING 4165 . 5090) (MTOISO1STRING 5092 . 5902)) (7310 9228 (
+\IBMOUTCHARFN 7320 . 8123) (\IBMINCCODEFN 8125 . 8606) (\IBMPEEKCCODEFN 8608 . 9226)) (9312 12843 (
+MAKEIBMFORMAT 9322 . 12841)) (12891 14738 (\MACOUTCHARFN 12901 . 13958) (\MACINCCODEFN 13960 . 14324) 
+(\MACPEEKCCODEFN 14326 . 14736)) (14822 19375 (MAKEMACFORMAT 14832 . 19373)) (19442 21838 (
+\COMMONBACKCCODEFN 19452 . 19822) (\MAKERECODEMAP 19824 . 21391) (\RECODECCODE 21393 . 21836)))))
 STOP
diff --git a/lispusers/ISO8859IO.LCOM b/lispusers/ISO8859IO.LCOM
index 30f45446..7db674a3 100644
Binary files a/lispusers/ISO8859IO.LCOM and b/lispusers/ISO8859IO.LCOM differ
diff --git a/scripts/loadups/loadup-init.sh b/scripts/loadups/loadup-init.sh
index c1d5b75e..8c007bed 100755
--- a/scripts/loadups/loadup-init.sh
+++ b/scripts/loadups/loadup-init.sh
@@ -8,6 +8,7 @@ main() {
 
         cmfile="-"
 	cat >"${initfile}" <<-"EOF"
+	(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT UTF-8)
 	(* "make init files; this file is loaded as a 'greet' file by scripts/loadup-init.sh")
 
 	(SETQ MEDLEYDIR NIL)
diff --git a/sources/ADISPLAY b/sources/ADISPLAY
index bccc0ab8..2f3772bc 100644
--- a/sources/ADISPLAY
+++ b/sources/ADISPLAY
@@ -1,14 +1,10 @@
-(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
+(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT UTF-8)
 
-(FILECREATED " 8-Jul-2025 20:19:58" 
-{DSK}<Users>kaplan>Local>medley3.5>working-medley>sources>ADISPLAY.;14 244883 
+(FILECREATED "19-Feb-2026 12:09:16" {WMEDLEY}<sources>ADISPLAY.;15 244850 
 
       :EDIT-BY rmk
 
-      :CHANGES-TO (VARS ADISPLAYCOMS)
-
-      :PREVIOUS-DATE "19-Dec-2023 11:23:08" 
-{DSK}<Users>kaplan>Local>medley3.5>working-medley>sources>ADISPLAY.;13)
+      :PREVIOUS-DATE " 8-Jul-2025 20:19:58" {WMEDLEY}<sources>ADISPLAY.;14)
 
 
 (PRETTYCOMPRINT ADISPLAYCOMS)
@@ -130,7 +126,7 @@
 (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE
 
 (RECORD REGION (LEFT BOTTOM WIDTH HEIGHT)
-               LEFT _ -16383 BOTTOM _ -16383 WIDTH _ 32767 HEIGHT _ 32767
+               LEFT ← -16383 BOTTOM ← -16383 WIDTH ← 32767 HEIGHT ← 32767
                [ACCESSFNS ((TOP (IPLUS (fetch (REGION BOTTOM) of DATUM)
                                        (fetch (REGION HEIGHT) of DATUM)
                                        -1))
@@ -150,7 +146,7 @@
                   (BITMAPHEIGHT WORD)
                   (BITMAPWIDTH WORD)
                   (BITMAPBITSPERPIXEL WORD))
-                 BITMAPBITSPERPIXEL _ 1 (BLOCKRECORD BITMAP ((BitMapHiLoc WORD)
+                 BITMAPBITSPERPIXEL ← 1 (BLOCKRECORD BITMAP ((BitMapHiLoc WORD)
                                                              (BitMapLoLoc WORD))
                                                              (* ; "overlay initial pointer")
                                                )
@@ -398,7 +394,7 @@
              (T (printout T "******** " BITMAP " is not a BITMAP." T)
                 (RETURN NIL)))
           (printout FILE "(" .P2 (BITMAPWIDTH BM)
-                 %, .P2 (BITMAPHEIGHT BM))                   (* ; 
+                 %, .P2 (BITMAPHEIGHT BM))                   (* ; 
                                             "if the number of bits per pixel is not 1, write it out.")
           (COND
              ((NEQ (BITSPERPIXEL BM)
@@ -431,7 +427,7 @@
            (* ;; "Print this bitmap in the preferred way.")
 
            (LET* ((WIDTH (BITMAPWIDTH BITMAP))
-                  (HEIGHT (BITMAPHEIGHT BITMAP))
+                  (HEIGHT (BITMAPHEIGHT BITMAP))
                   (BITS-PER-PIXEL (BITSPERPIXEL BITMAP))
                   (BASE (fetch BITMAPBASE of BITMAP))
                   (QUAD-CHARS-PER-ROW (FOLDHI (CL:* WIDTH BITS-PER-PIXEL)
@@ -712,20 +708,20 @@
                                                   NIL)
                                                  ((CURSORP DEFAULTCARET)
                                                   (create CARET1
-                                                         CURSOR _ DEFAULTCARET))
+                                                         CURSOR ← DEFAULTCARET))
                                                  (T (ERROR "DEFAULTCARET is not a cursor" 
                                                            DEFAULTCARET))))
                                            (OFF NIL)
                                            (COND
                                               ((CURSORP NEWCARET)
                                                (create CARET1
-                                                      CURSOR _ NEWCARET))
+                                                      CURSOR ← NEWCARET))
                                               (T (LISPERROR "ILLEGAL ARG" NEWCARET])])
 
 (\CARET.CREATE
   [LAMBDA (CURSOR)                                           (* jds "11-Jul-85 19:38")
     (create CARET1
-           CURSOR _ (OR CURSOR DEFAULTCARET])
+           CURSOR ← (OR CURSOR DEFAULTCARET])
 
 (\CARET.DOWN
   [LAMBDA (STREAM INTERVAL UNLESSOCCLUDED)                   (* lmm " 4-May-84 18:15")
@@ -815,7 +811,7 @@
     (LET ((OCARET \CARET.UP))
          (COND
             ([AND OCARET CARET (DISPLAYSTREAMP (OR STREAM (SETQ STREAM (TTYDISPLAYSTREAM]
-             (for (OC _ OCARET) by (fetch (CARET1 NEXT) of OC)
+             (for (OC ← OCARET) by (fetch (CARET1 NEXT) of OC)
                 do (COND
                       [(NULL OC)
                        (RETURN (COND
@@ -1008,10 +1004,10 @@
   [LAMBDA (LEFT BOTTOM WIDTH HEIGHT)                         (* rrb "17-JUN-83 08:56")
                                                              (* ; "creates a region structure.")
     (create REGION
-           LEFT _ LEFT
-           BOTTOM _ BOTTOM
-           WIDTH _ WIDTH
-           HEIGHT _ HEIGHT])
+           LEFT ← LEFT
+           BOTTOM ← BOTTOM
+           WIDTH ← WIDTH
+           HEIGHT ← HEIGHT])
 
 (REGIONP
   [LAMBDA (X)                                                (* rrb "29-Jun-84 18:00")
@@ -1029,11 +1025,11 @@
         (* ;; "this is documented as returning a very large region.  This one covers the entire FIXP range so should work for many purposes.  rrb")
 
         (create REGION
-               LEFT _ (SUB1 MIN.FIXP)
-               BOTTOM _ (SUB1 MIN.FIXP)
-               WIDTH _ (PLUS (TIMES 2 MAX.FIXP)
+               LEFT ← (SUB1 MIN.FIXP)
+               BOTTOM ← (SUB1 MIN.FIXP)
+               WIDTH ← (PLUS (TIMES 2 MAX.FIXP)
                              4)
-               HEIGHT _ (PLUS (TIMES 2 MAX.FIXP)
+               HEIGHT ← (PLUS (TIMES 2 MAX.FIXP)
                               4)))
        (T (PROG (REG LFT RGHT BTTM TP)
                 (SETQ REG (ARG REGIONS 1))
@@ -1062,10 +1058,10 @@
                            ((AND (IGEQ RGHT LFT)
                                  (IGEQ TP BTTM))
                             (create REGION
-                                   LEFT _ LFT
-                                   BOTTOM _ BTTM
-                                   WIDTH _ (ADD1 (IDIFFERENCE RGHT LFT))
-                                   HEIGHT _ (ADD1 (IDIFFERENCE TP BTTM])
+                                   LEFT ← LFT
+                                   BOTTOM ← BTTM
+                                   WIDTH ← (ADD1 (IDIFFERENCE RGHT LFT))
+                                   HEIGHT ← (ADD1 (IDIFFERENCE TP BTTM])
 
 (UNIONREGIONS
   [LAMBDA REGIONS                                            (* rrb "30-Dec-85 17:07")
@@ -1099,10 +1095,10 @@
                                                          TP)
                                                   (SETQ TP (fetch (REGION PTOP) of REG]
                 (RETURN (create REGION
-                               LEFT _ LFT
-                               BOTTOM _ BTTM
-                               WIDTH _ (DIFFERENCE RGHT LFT)
-                               HEIGHT _ (DIFFERENCE TP BTTM])
+                               LEFT ← LFT
+                               BOTTOM ← BTTM
+                               WIDTH ← (DIFFERENCE RGHT LFT)
+                               HEIGHT ← (DIFFERENCE TP BTTM])
 
 (REGIONSINTERSECTP
   [LAMBDA (REGION1 REGION2)                                  (* rrb "16-AUG-81 08:29")
@@ -1233,11 +1229,11 @@
     (* ;; "returns the region taken up by STR if it were printed at the current position of STREAM")
 
     (create REGION
-           LEFT _ (DSPXPOSITION NIL STREAM)
-           BOTTOM _ (IDIFFERENCE (DSPYPOSITION NIL STREAM)
+           LEFT ← (DSPXPOSITION NIL STREAM)
+           BOTTOM ← (IDIFFERENCE (DSPYPOSITION NIL STREAM)
                            (FONTPROP STREAM 'DESCENT))
-           WIDTH _ (STRINGWIDTH STR STREAM PRIN2FLG RDTBL)
-           HEIGHT _ (FONTPROP STREAM 'HEIGHT])
+           WIDTH ← (STRINGWIDTH STR STREAM PRIN2FLG RDTBL)
+           HEIGHT ← (FONTPROP STREAM 'HEIGHT])
 )
 
 
@@ -1443,8 +1439,8 @@
                     (SETQ BRUSHARRAY (ARRAY 16 'POINTER NIL 1))
                     (for X from 1 to 16 do (SETA BRUSHARRAY X (APPLY* BRUSHFN X]
                 (push \BrushAList (CONS BRUSHNAME (create BRUSHITEM
-                                                         BRUSHARRAY _ BRUSHARRAY
-                                                         CREATEMETHOD _ BRUSHFN)))
+                                                         BRUSHARRAY ← BRUSHARRAY
+                                                         CREATEMETHOD ← BRUSHFN)))
                 (push KNOWN.BRUSHES BRUSHNAME])
 )
 
@@ -1506,12 +1502,12 @@
                             CBottom)
                            (SETQ BITMAP (ffetch DDDestination of DD))
                            (SETQ BIGBMLIST (fetch (BIGBM BIGBMLIST) of BITMAP))
-                           (SETQ HEIGHT (BITMAPHEIGHT BITMAP))
+                           (SETQ HEIGHT (BITMAPHEIGHT BITMAP))
                            (SETQ ClippingTop (ffetch DDClippingTop of DD))
                            (SETQ ClippingBottom (ffetch DDClippingBottom of DD))
                            (SETQ BM (GetNewFragment BIGBMLIST))
                            (while (AND BM (IGREATERP HEIGHT ClippingBottom))
-                              do (SETQ BOTTOM (IDIFFERENCE HEIGHT (BITMAPHEIGHT BM)))
+                              do (SETQ BOTTOM (IDIFFERENCE HEIGHT (BITMAPHEIGHT BM)))
                                  [SETQ CTop (COND
                                                ((IGREATERP ClippingTop HEIGHT)
                                                 (IDIFFERENCE HEIGHT BOTTOM))
@@ -1576,7 +1572,7 @@
                            (SUB1 (ffetch DDClippingTop of DD))
                            DISPLAYSTREAM COLOR))
                    (T (PROG ((BIGBMLIST (fetch (BIGBM BIGBMLIST) of BITMAP))
-                             (HEIGHT (BITMAPHEIGHT BITMAP))
+                             (HEIGHT (BITMAPHEIGHT BITMAP))
                              BOTTOM BM CTop CBottom (ClippingTop (ffetch DDClippingTop of DD))
                              (ClippingBottom (ffetch DDClippingBottom of DD))
                              (YY1 (\DSPTRANSFORMY (OR (FIXP Y1)
@@ -1587,7 +1583,7 @@
                                          DD)))
                             (SETQ BM (GetNewFragment BIGBMLIST))
                             (while (AND BM (IGREATERP HEIGHT ClippingBottom))
-                               do (SETQ BOTTOM (IDIFFERENCE HEIGHT (BITMAPHEIGHT BM)))
+                               do (SETQ BOTTOM (IDIFFERENCE HEIGHT (BITMAPHEIGHT BM)))
                                   [SETQ CTop (COND
                                                 ((IGREATERP ClippingTop HEIGHT)
                                                  (IDIFFERENCE HEIGHT BOTTOM))
@@ -2038,7 +2034,7 @@
 (DECLARE%: EVAL@COMPILE 
 
 (PUTPROPS .DRAWLINEX. MACRO [(MODE)
-                             (bind (NY _ 0) for PT from 1 to PIXELSINX
+                             (bind (NY ← 0) for PT from 1 to PIXELSINX
                                 do                           (* ; "main loop")
                                    [replace (BITMAPWORD BITS) of FIRSTADDR
                                       with (SELECTQ MODE
@@ -2068,7 +2064,7 @@
                                        (SETQ MASK 32768])
 
 (PUTPROPS .DRAWLINEY. MACRO [(MODE)
-                             (bind (NX _ 0) for PT from 1 to PIXELSINY
+                             (bind (NX ← 0) for PT from 1 to PIXELSINY
                                 do                           (* ; "main loop")
                                    [replace (BITMAPWORD BITS) of FIRSTADDR
                                       with (SELECTQ MODE
@@ -2295,9 +2291,9 @@
 
           (RETURN (for ANGLE from STARTANGLE to (PLUS STARTANGLE ANGLESIZE (QUOTIENT ANGLEINCR 5.0))
                      by ANGLEINCR collect (create POSITION
-                                                 XCOORD _ [FIXR (PLUS CENTERX (TIMES RADIUS
+                                                 XCOORD ← [FIXR (PLUS CENTERX (TIMES RADIUS
                                                                                      (COS ANGLE]
-                                                 YCOORD _ (FIXR (PLUS CENTERY (TIMES RADIUS
+                                                 YCOORD ← (FIXR (PLUS CENTERY (TIMES RADIUS
                                                                                      (SIN ANGLE])
 
 (\DRAWELLIPSE.DISPLAY
@@ -2609,7 +2605,7 @@
                              ((EQ (fetch (BRUSH BRUSHSHAPE) of BRUSH)
                                   'ROUND)
                               BRUSH)
-                             (T (create BRUSH using BRUSH BRUSHSHAPE _ 'ROUND]
+                             (T (create BRUSH using BRUSH BRUSHSHAPE ← 'ROUND]
           (SETQ COLOR (fetch (BRUSH BRUSHCOLOR) of PTBRUSH))
           (for PTAIL on POINTS while (CDR PTAIL) do (\DRAWLINE.DISPLAY STREAM (fetch (POSITION XCOORD
                                                                                             )
@@ -2991,15 +2987,15 @@
                                     (ELT DDY I]
           (SETQ SPLINE
            (create SPLINE
-                  %#KNOTS _ %#KNOTS
-                  SPLINEX _ X
-                  SPLINEY _ Y
-                  SPLINEDX _ DX
-                  SPLINEDY _ DY
-                  SPLINEDDX _ DDX
-                  SPLINEDDY _ DDY
-                  SPLINEDDDX _ DDDX
-                  SPLINEDDDY _ DDDY))
+                  %#KNOTS ← %#KNOTS
+                  SPLINEX ← X
+                  SPLINEY ← Y
+                  SPLINEDX ← DX
+                  SPLINEDY ← DY
+                  SPLINEDDX ← DDX
+                  SPLINEDDY ← DDY
+                  SPLINEDDDX ← DDDX
+                  SPLINEDDDY ← DDDY))
           (RETURN SPLINE])
 
 (\CURVE
@@ -3187,7 +3183,7 @@
                       (SETQ POINTSPERSEG 64)
                       (SETQ NPOINTS (UNFOLD NSEGS 64]
                 (SETQ D1 (FQUOTIENT 1.0 NPOINTS))            (* ; 
-                                          "Set up �&E�t, �&E�t**2 and �&E�t**3, for computing the next point.")
+                                          "Set up Δt, Δt**2 and Δt**3, for computing the next point.")
                 (SETQ D2 (FTIMES D1 D1))
                 (SETQ D3 (FTIMES D2 D1))
                 (SETQ D3X (FTIMES D3 DDDX))
@@ -3219,11 +3215,11 @@
                       (SETQ PERSEG (FQUOTIENT 1.0 NSEGS))
                       (LOADPOLY XPOLY X/PRIME/POLY DDDX DDX DX X0)
                       (LOADPOLY YPOLY Y/PRIME/POLY DDDY DDY DY Y0)
-                      (bind (TT _ 0.0)
-                            (DDDX/PER/SEG _ (FTIMES DDDX PERSEG))
-                            (DDDY/PER/SEG _ (FTIMES DDDY PERSEG))
-                            [D3XFACTOR _ (FTIMES D3 DDDX (CONSTANT (FQUOTIENT 1.0 6.0]
-                            [D3YFACTOR _ (FTIMES D3 DDDY (CONSTANT (FQUOTIENT 1.0 6.0] for I
+                      (bind (TT ← 0.0)
+                            (DDDX/PER/SEG ← (FTIMES DDDX PERSEG))
+                            (DDDY/PER/SEG ← (FTIMES DDDY PERSEG))
+                            [D3XFACTOR ← (FTIMES D3 DDDX (CONSTANT (FQUOTIENT 1.0 6.0]
+                            [D3YFACTOR ← (FTIMES D3 DDDY (CONSTANT (FQUOTIENT 1.0 6.0] for I
                          from 0 to (SUB1 NSEGS)
                          do 
                             (* ;; 
@@ -4224,9 +4220,9 @@
           (SETQ Min (FDIFFERENCE (FTIMES L 2)
                            Max))
           (RETURN (create RGB
-                         RED _ (\HLSVALUEFN Min Max H)
-                         GREEN _ (\HLSVALUEFN Min Max (IDIFFERENCE H 120))
-                         BLUE _ (\HLSVALUEFN Min Max (IDIFFERENCE H 240])
+                         RED ← (\HLSVALUEFN Min Max H)
+                         GREEN ← (\HLSVALUEFN Min Max (IDIFFERENCE H 120))
+                         BLUE ← (\HLSVALUEFN Min Max (IDIFFERENCE H 240])
 
 (\HLSVALUEFN
   [LAMBDA (MIN MAX HUE)                                      (* rrb "25-OCT-82 10:47")
@@ -4424,40 +4420,40 @@
 (ADDTOVAR LAMA UNIONREGIONS INTERSECTREGIONS)
 )
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (10589 10783 (SCREENREGIONP 10599 . 10781)) (12227 19588 (\BBTCURVEPT 12237 . 19586)) (
-19589 29405 (CREATETEXTUREFROMBITMAP 19599 . 21529) (PRINTBITMAP 21531 . 22882) (PRINT-BITMAPS-NICELY 
-22884 . 26735) (PRINTCURSOR 26737 . 27770) (\WRITEBITMAP 27772 . 29403)) (29448 31996 (\GETINTEGERPART
- 29458 . 31003) (\CONVERTTOFRACTION 31005 . 31994)) (32133 33005 (CURSORP 32143 . 32362) (CURSORBITMAP
- 32364 . 32410) (CreateCursorBitMap 32412 . 33003)) (37367 46290 (CARET 37377 . 39137) (\CARET.CREATE 
-39139 . 39317) (\CARET.DOWN 39319 . 40671) (\CARET.FLASH? 40673 . 42367) (\CARET.SHOW 42369 . 42938) (
-CARETRATE 42940 . 43598) (\CARET.FLASH.AGAIN 43600 . 44766) (\CARET.FLASH.MULTIPLE 44768 . 45291) (
-\CARET.FLASH 45293 . 46288)) (46291 51363 (\MEDW.CARET.SHOW 46301 . 51361)) (51727 53562 (
-\AREAVISIBLE? 51737 . 52661) (\REGIONOVERLAPAREAP 52663 . 53208) (\AREAINREGIONP 53210 . 53560)) (
-53611 66087 (CREATEREGION 53621 . 53957) (REGIONP 53959 . 54105) (INTERSECTREGIONS 54107 . 56877) (
-UNIONREGIONS 56879 . 59030) (REGIONSINTERSECTP 59032 . 59640) (SUBREGIONP 59642 . 60287) (EXTENDREGION
- 60289 . 62446) (EXTENDREGIONBOTTOM 62448 . 63090) (EXTENDREGIONLEFT 63092 . 63711) (EXTENDREGIONRIGHT
- 63713 . 64266) (EXTENDREGIONTOP 64268 . 64809) (INSIDEP 64811 . 65579) (STRINGREGION 65581 . 66085)) 
-(66332 71606 (\BRUSHBITMAP 66342 . 68059) (\GETBRUSH 68061 . 68372) (\GETBRUSHBBT 68374 . 70402) (
-\InitCurveBrushes 70404 . 71470) (\BrushFromWidth 71472 . 71604)) (71607 74674 (\MAKEBRUSH.DIAGONAL 
-71617 . 71897) (\MAKEBRUSH.HORIZONTAL 71899 . 72293) (\MAKEBRUSH.VERTICAL 72295 . 72607) (
-\MAKEBRUSH.SQUARE 72609 . 72886) (\MAKEBRUSH.ROUND 72888 . 74672)) (74675 75840 (INSTALLBRUSH 74685 . 
-75838)) (76241 87643 (\DRAWLINE.DISPLAY 76251 . 86358) (RELMOVETO 86360 . 86747) (MOVETOUPPERLEFT 
-86749 . 87641)) (87644 111129 (\CLIPANDDRAWLINE 87654 . 94100) (\CLIPANDDRAWLINE1 94102 . 105850) (
-\CLIPCODE 105852 . 107226) (\LEASTPTAT 107228 . 107826) (\GREATESTPTAT 107828 . 108456) (\DRAWLINE1 
-108458 . 109574) (\DRAWLINE.UFN 109576 . 111127)) (115659 161706 (\DRAWCIRCLE.DISPLAY 115669 . 124482)
- (\DRAWARC.DISPLAY 124484 . 124774) (\DRAWARC.GENERIC 124776 . 125529) (\COMPUTE.ARC.POINTS 125531 . 
-127796) (\DRAWELLIPSE.DISPLAY 127798 . 143467) (\DRAWCURVE.DISPLAY 143469 . 145758) (
-\DRAWPOINT.DISPLAY 145760 . 146956) (\DRAWPOLYGON.DISPLAY 146958 . 150486) (\LINEWITHBRUSH 150488 . 
-161704)) (161707 193399 (LOADPOLY 161717 . 162277) (PARAMETRICSPLINE 162279 . 172476) (\CURVE 172478
- . 178080) (\CURVE2 178082 . 189413) (\CURVEEND 189415 . 189897) (\CURVESLOPE 189899 . 192382) (
-\CURVESTART 192384 . 192708) (\FDIFS/FROM/DERIVS 192710 . 193397)) (205928 220264 (\FILLCIRCLE.DISPLAY
- 205938 . 216686) (\LINEBLT 216688 . 220262)) (220308 221930 (SCREENBITMAP 220318 . 220795) (BITMAPP 
-220797 . 221031) (BITSPERPIXEL 221033 . 221928)) (222571 223564 (DSPFILL 222581 . 223264) (INVERTW 
-223266 . 223562)) (223565 227208 (\DSPCOLOR.DISPLAY 223575 . 224872) (\DSPBACKCOLOR.DISPLAY 224874 . 
-226253) (DSPEOLFN 226255 . 227206)) (227641 232295 (DSPCLEOL 227651 . 228527) (DSPRUBOUTCHAR 228529 . 
-228961) (\DSPMOVELR 228963 . 232293)) (232425 233543 (\CURSOR.DEFPRINT 232435 . 233541)) (233955 
-242529 (TEXTUREOFCOLOR 233965 . 235227) (\PRIMARYTEXTURE 235229 . 235811) (\LEVELTEXTURE 235813 . 
-236314) (INSURE.B&W.TEXTURE 236316 . 237711) (INSURE.RGB.COLOR 237713 . 239141) (\LOOKUPCOLORNAME 
-239143 . 239413) (RGBP 239415 . 240180) (HLSP 240182 . 240557) (HLSTORGB 240559 . 241699) (\HLSVALUEFN
- 241701 . 242527)))))
+  (FILEMAP (NIL (10493 10687 (SCREENREGIONP 10503 . 10685)) (12131 19492 (\BBTCURVEPT 12141 . 19490)) (
+19493 29301 (CREATETEXTUREFROMBITMAP 19503 . 21433) (PRINTBITMAP 21435 . 22782) (PRINT-BITMAPS-NICELY 
+22784 . 26631) (PRINTCURSOR 26633 . 27666) (\WRITEBITMAP 27668 . 29299)) (29344 31892 (\GETINTEGERPART
+ 29354 . 30899) (\CONVERTTOFRACTION 30901 . 31890)) (32029 32901 (CURSORP 32039 . 32258) (CURSORBITMAP
+ 32260 . 32306) (CreateCursorBitMap 32308 . 32899)) (37263 46194 (CARET 37273 . 39037) (\CARET.CREATE 
+39039 . 39219) (\CARET.DOWN 39221 . 40573) (\CARET.FLASH? 40575 . 42269) (\CARET.SHOW 42271 . 42840) (
+CARETRATE 42842 . 43500) (\CARET.FLASH.AGAIN 43502 . 44670) (\CARET.FLASH.MULTIPLE 44672 . 45195) (
+\CARET.FLASH 45197 . 46192)) (46195 51267 (\MEDW.CARET.SHOW 46205 . 51265)) (51631 53466 (
+\AREAVISIBLE? 51641 . 52565) (\REGIONOVERLAPAREAP 52567 . 53112) (\AREAINREGIONP 53114 . 53464)) (
+53515 66031 (CREATEREGION 53525 . 53869) (REGIONP 53871 . 54017) (INTERSECTREGIONS 54019 . 56805) (
+UNIONREGIONS 56807 . 58966) (REGIONSINTERSECTP 58968 . 59576) (SUBREGIONP 59578 . 60223) (EXTENDREGION
+ 60225 . 62382) (EXTENDREGIONBOTTOM 62384 . 63026) (EXTENDREGIONLEFT 63028 . 63647) (EXTENDREGIONRIGHT
+ 63649 . 64202) (EXTENDREGIONTOP 64204 . 64745) (INSIDEP 64747 . 65515) (STRINGREGION 65517 . 66029)) 
+(66276 71550 (\BRUSHBITMAP 66286 . 68003) (\GETBRUSH 68005 . 68316) (\GETBRUSHBBT 68318 . 70346) (
+\InitCurveBrushes 70348 . 71414) (\BrushFromWidth 71416 . 71548)) (71551 74618 (\MAKEBRUSH.DIAGONAL 
+71561 . 71841) (\MAKEBRUSH.HORIZONTAL 71843 . 72237) (\MAKEBRUSH.VERTICAL 72239 . 72551) (
+\MAKEBRUSH.SQUARE 72553 . 72830) (\MAKEBRUSH.ROUND 72832 . 74616)) (74619 75788 (INSTALLBRUSH 74629 . 
+75786)) (76189 87575 (\DRAWLINE.DISPLAY 76199 . 86290) (RELMOVETO 86292 . 86679) (MOVETOUPPERLEFT 
+86681 . 87573)) (87576 111061 (\CLIPANDDRAWLINE 87586 . 94032) (\CLIPANDDRAWLINE1 94034 . 105782) (
+\CLIPCODE 105784 . 107158) (\LEASTPTAT 107160 . 107758) (\GREATESTPTAT 107760 . 108388) (\DRAWLINE1 
+108390 . 109506) (\DRAWLINE.UFN 109508 . 111059)) (115595 161648 (\DRAWCIRCLE.DISPLAY 115605 . 124418)
+ (\DRAWARC.DISPLAY 124420 . 124710) (\DRAWARC.GENERIC 124712 . 125465) (\COMPUTE.ARC.POINTS 125467 . 
+127736) (\DRAWELLIPSE.DISPLAY 127738 . 143407) (\DRAWCURVE.DISPLAY 143409 . 145698) (
+\DRAWPOINT.DISPLAY 145700 . 146896) (\DRAWPOLYGON.DISPLAY 146898 . 150428) (\LINEWITHBRUSH 150430 . 
+161646)) (161649 193360 (LOADPOLY 161659 . 162219) (PARAMETRICSPLINE 162221 . 172436) (\CURVE 172438
+ . 178040) (\CURVE2 178042 . 189374) (\CURVEEND 189376 . 189858) (\CURVESLOPE 189860 . 192343) (
+\CURVESTART 192345 . 192669) (\FDIFS/FROM/DERIVS 192671 . 193358)) (205889 220225 (\FILLCIRCLE.DISPLAY
+ 205899 . 216647) (\LINEBLT 216649 . 220223)) (220269 221891 (SCREENBITMAP 220279 . 220756) (BITMAPP 
+220758 . 220992) (BITSPERPIXEL 220994 . 221889)) (222532 223525 (DSPFILL 222542 . 223225) (INVERTW 
+223227 . 223523)) (223526 227169 (\DSPCOLOR.DISPLAY 223536 . 224833) (\DSPBACKCOLOR.DISPLAY 224835 . 
+226214) (DSPEOLFN 226216 . 227167)) (227602 232256 (DSPCLEOL 227612 . 228488) (DSPRUBOUTCHAR 228490 . 
+228922) (\DSPMOVELR 228924 . 232254)) (232386 233504 (\CURSOR.DEFPRINT 232396 . 233502)) (233916 
+242496 (TEXTUREOFCOLOR 233926 . 235188) (\PRIMARYTEXTURE 235190 . 235772) (\LEVELTEXTURE 235774 . 
+236275) (INSURE.B&W.TEXTURE 236277 . 237672) (INSURE.RGB.COLOR 237674 . 239102) (\LOOKUPCOLORNAME 
+239104 . 239374) (RGBP 239376 . 240141) (HLSP 240143 . 240518) (HLSTORGB 240520 . 241666) (\HLSVALUEFN
+ 241668 . 242494)))))
 STOP
diff --git a/sources/ADISPLAY.LCOM b/sources/ADISPLAY.LCOM
index 106b5996..a967e4e1 100644
Binary files a/sources/ADISPLAY.LCOM and b/sources/ADISPLAY.LCOM differ
diff --git a/sources/ATBL b/sources/ATBL
index b8edac7d..86d4db20 100644
--- a/sources/ATBL
+++ b/sources/ATBL
@@ -1,12 +1,12 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
 
-(FILECREATED "24-Apr-2025 21:52:35" {WMEDLEY}<sources>ATBL.;33 91754  
+(FILECREATED "25-Feb-2026 12:02:51" {WMEDLEY}<sources>ATBL.;35 92262  
 
       :EDIT-BY rmk
 
-      :CHANGES-TO (FNS \ATBLSET EQUAL-READER-ENVIRONMENT)
+      :CHANGES-TO (VARS ATBLCOMS)
 
-      :PREVIOUS-DATE "26-Dec-2021 14:32:50" {WMEDLEY}<sources>ATBL.;32)
+      :PREVIOUS-DATE "24-Apr-2025 21:52:35" {WMEDLEY}<sources>ATBL.;33)
 
 
 (PRETTYCOMPRINT ATBLCOMS)
@@ -56,12 +56,13 @@
                             (CONSTANTS * READCLASSES)
                             (CONSTANTS * READMACROWAKEUPS)
                             (CONSTANTS * READMACROESCAPES)
-                            (RECORDS READCODE READMACRODEF READTABLEP))
+                            (RECORDS READCODE READMACRODEF READTABLEP)
+                            (RECORDS READER-ENVIRONMENT))
                      (GLOBALVARS \ORIGREADTABLE \READTABLEHASH \ORIGTERMTABLE))
-              (INITRECORDS READTABLEP))
+              (INITRECORDS READTABLEP)
+              (INITRECORDS READER-ENVIRONMENT))
         [COMS (INITVARS (\READTABLEHASH))
               (FNS \ATBLSET)
-              (INITRECORDS READER-ENVIRONMENT)
                                                              (* ; 
               "Definition is on CMLREAD, need it here to initialize *OLD-INTERLISP-READ-ENVIRONMENT*")
               (FNS MAKE-READER-ENVIRONMENT EQUAL-READER-ENVIRONMENT SET-READER-ENVIRONMENT)
@@ -1691,6 +1692,19 @@
          (READTABLEP 8 (BITS . 7))
          (READTABLEP 10 POINTER))
        '12)
+(DECLARE%: EVAL@COMPILE
+
+(DATATYPE READER-ENVIRONMENT (REPACKAGE REREADTABLE REBASE REPACKAGEFORM REFORMAT REREADTABLEFORM))
+)
+
+(/DECLAREDATATYPE 'READER-ENVIRONMENT '(POINTER POINTER POINTER POINTER POINTER POINTER)
+       '((READER-ENVIRONMENT 0 POINTER)
+         (READER-ENVIRONMENT 2 POINTER)
+         (READER-ENVIRONMENT 4 POINTER)
+         (READER-ENVIRONMENT 6 POINTER)
+         (READER-ENVIRONMENT 8 POINTER)
+         (READER-ENVIRONMENT 10 POINTER))
+       '12)
 
 (* "END EXPORTED DEFINITIONS")
 
@@ -1726,6 +1740,15 @@
          (READTABLEP 10 POINTER))
        '12)
 
+(/DECLAREDATATYPE 'READER-ENVIRONMENT '(POINTER POINTER POINTER POINTER POINTER POINTER)
+       '((READER-ENVIRONMENT 0 POINTER)
+         (READER-ENVIRONMENT 2 POINTER)
+         (READER-ENVIRONMENT 4 POINTER)
+         (READER-ENVIRONMENT 6 POINTER)
+         (READER-ENVIRONMENT 8 POINTER)
+         (READER-ENVIRONMENT 10 POINTER))
+       '12)
+
 (RPAQ? \READTABLEHASH )
 (DEFINEQ
 
@@ -1813,15 +1836,6 @@
         NIL])
 )
 
-(/DECLAREDATATYPE 'READER-ENVIRONMENT '(POINTER POINTER POINTER POINTER POINTER POINTER)
-       '((READER-ENVIRONMENT 0 POINTER)
-         (READER-ENVIRONMENT 2 POINTER)
-         (READER-ENVIRONMENT 4 POINTER)
-         (READER-ENVIRONMENT 6 POINTER)
-         (READER-ENVIRONMENT 8 POINTER)
-         (READER-ENVIRONMENT 10 POINTER))
-       '12)
-
 
 
 (* ; "Definition is on CMLREAD, need it here to initialize *OLD-INTERLISP-READ-ENVIRONMENT*")
@@ -1922,22 +1936,22 @@
 (ADDTOVAR LAMA READTABLEPROP)
 )
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (17619 28771 (GETSYNTAX 17629 . 22460) (SETSYNTAX 22462 . 23535) (SYNTAXP 23537 . 26034)
- (\COPYSYNTAX 26036 . 26753) (\GETCHARCODE 26755 . 27043) (\SETFATSYNCODE 27045 . 28336) (
-\MAPCHARTABLE 28338 . 28769)) (28804 43770 (CONTROL 28814 . 29066) (COPYTERMTABLE 29068 . 29435) (
-DELETECONTROL 29437 . 32078) (GETDELETECONTROL 32080 . 33042) (ECHOCHAR 33044 . 34485) (ECHOCONTROL 
-34487 . 34944) (ECHOMODE 34946 . 35192) (GETECHOMODE 35194 . 35358) (GETCONTROL 35360 . 35526) (
-GETTERMTABLE 35528 . 35595) (RAISE 35597 . 36023) (GETRAISE 36025 . 36187) (RESETTERMTABLE 36189 . 
-37273) (SETTERMTABLE 37275 . 37509) (TERMTABLEP 37511 . 37672) (\GETTERMSYNTAX 37674 . 37945) (
-\GTTERMTABLE 37947 . 38283) (\ORIGTERMTABLE 38285 . 41895) (\SETTERMSYNTAX 41897 . 42532) (
-\TERMCLASSTOCODE 42534 . 42963) (\TERMCODETOCLASS 42965 . 43352) (\LITCHECK 43354 . 43768)) (46281 
-70105 (COPYREADTABLE 46291 . 46489) (FIND-READTABLE 46491 . 46638) (IN-READTABLE 46640 . 46800) (
-ESCAPE 46802 . 47055) (GETBRK 47057 . 47195) (GETREADTABLE 47197 . 47333) (GETSEPR 47335 . 47473) (
-READMACROS 47475 . 47738) (READTABLEP 47740 . 47903) (READTABLEPROP 47905 . 53063) (RESETREADTABLE 
-53065 . 57312) (SETBRK 57314 . 58924) (SETREADTABLE 58926 . 59114) (SETSEPR 59116 . 60658) (
-\GETREADSYNTAX 60660 . 63350) (\GTREADTABLE 63352 . 63577) (\GTREADTABLE1 63579 . 63835) (
-\ORIGREADTABLE 63837 . 65745) (\READCLASSTOCODE 65747 . 66198) (\SETMACROSYNTAX 66200 . 67995) (
-\SETREADSYNTAX 67997 . 69058) (\READTABLEP.DEFPRINT 69060 . 70103)) (82937 87494 (\ATBLSET 82947 . 
-87492)) (87941 91385 (MAKE-READER-ENVIRONMENT 87951 . 89608) (EQUAL-READER-ENVIRONMENT 89610 . 90787) 
-(SET-READER-ENVIRONMENT 90789 . 91383)))))
+  (FILEMAP (NIL (17652 28804 (GETSYNTAX 17662 . 22493) (SETSYNTAX 22495 . 23568) (SYNTAXP 23570 . 26067)
+ (\COPYSYNTAX 26069 . 26786) (\GETCHARCODE 26788 . 27076) (\SETFATSYNCODE 27078 . 28369) (
+\MAPCHARTABLE 28371 . 28802)) (28837 43803 (CONTROL 28847 . 29099) (COPYTERMTABLE 29101 . 29468) (
+DELETECONTROL 29470 . 32111) (GETDELETECONTROL 32113 . 33075) (ECHOCHAR 33077 . 34518) (ECHOCONTROL 
+34520 . 34977) (ECHOMODE 34979 . 35225) (GETECHOMODE 35227 . 35391) (GETCONTROL 35393 . 35559) (
+GETTERMTABLE 35561 . 35628) (RAISE 35630 . 36056) (GETRAISE 36058 . 36220) (RESETTERMTABLE 36222 . 
+37306) (SETTERMTABLE 37308 . 37542) (TERMTABLEP 37544 . 37705) (\GETTERMSYNTAX 37707 . 37978) (
+\GTTERMTABLE 37980 . 38316) (\ORIGTERMTABLE 38318 . 41928) (\SETTERMSYNTAX 41930 . 42565) (
+\TERMCLASSTOCODE 42567 . 42996) (\TERMCODETOCLASS 42998 . 43385) (\LITCHECK 43387 . 43801)) (46314 
+70138 (COPYREADTABLE 46324 . 46522) (FIND-READTABLE 46524 . 46671) (IN-READTABLE 46673 . 46833) (
+ESCAPE 46835 . 47088) (GETBRK 47090 . 47228) (GETREADTABLE 47230 . 47366) (GETSEPR 47368 . 47506) (
+READMACROS 47508 . 47771) (READTABLEP 47773 . 47936) (READTABLEPROP 47938 . 53096) (RESETREADTABLE 
+53098 . 57345) (SETBRK 57347 . 58957) (SETREADTABLE 58959 . 59147) (SETSEPR 59149 . 60691) (
+\GETREADSYNTAX 60693 . 63383) (\GTREADTABLE 63385 . 63610) (\GTREADTABLE1 63612 . 63868) (
+\ORIGREADTABLE 63870 . 65778) (\READCLASSTOCODE 65780 . 66231) (\SETMACROSYNTAX 66233 . 68028) (
+\SETREADSYNTAX 68030 . 69091) (\READTABLEP.DEFPRINT 69093 . 70136)) (83789 88346 (\ATBLSET 83799 . 
+88344)) (88449 91893 (MAKE-READER-ENVIRONMENT 88459 . 90116) (EQUAL-READER-ENVIRONMENT 90118 . 91295) 
+(SET-READER-ENVIRONMENT 91297 . 91891)))))
 STOP
diff --git a/sources/ATBL.LCOM b/sources/ATBL.LCOM
index 0ca35895..21f08bb3 100644
Binary files a/sources/ATBL.LCOM and b/sources/ATBL.LCOM differ
diff --git a/sources/BOOTSTRAP b/sources/BOOTSTRAP
index 6dc3543d..61339fa6 100644
--- a/sources/BOOTSTRAP
+++ b/sources/BOOTSTRAP
@@ -1,12 +1,12 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
 
-(FILECREATED "23-Apr-2025 23:39:10" {WMEDLEY}<sources>BOOTSTRAP.;61 47417  
+(FILECREATED "25-Feb-2026 15:03:24" {WMEDLEY}<sources>BOOTSTRAP.;69 47041  
 
       :EDIT-BY rmk
 
-      :CHANGES-TO (FNS PRINT-READER-ENVIRONMENT \DO-DEFINE-FILE-INFO)
+      :CHANGES-TO (FNS MAKE-DEFINE-FILE-INFO-ENV READ-READER-ENVIRONMENT)
 
-      :PREVIOUS-DATE "27-Sep-2021 10:25:31" {WMEDLEY}<sources>BOOTSTRAP.;59)
+      :PREVIOUS-DATE "25-Feb-2026 13:52:00" {WMEDLEY}<sources>BOOTSTRAP.;66)
 
 
 (PRETTYCOMPRINT BOOTSTRAPCOMS)
@@ -365,15 +365,15 @@
 
 (\LOAD-STREAM
   [LAMBDA (STREAM LDFLG PRINTFLG LOAD-VERBOSE-STREAM PACKAGE)
-    (DECLARE (SPECVARS LDFLG PRINTFLG LOAD-VERBOSE-STREAM))
-                                                            (* ; "Edited 17-Jul-2021 21:58 by rmk:")
+    (DECLARE (SPECVARS LDFLG PRINTFLG LOAD-VERBOSE-STREAM))  (* ; "Edited 25-Feb-2026 13:46 by rmk")
+                                                            (* ; "Edited 17-Jul-2021 21:58 by rmk:")
 
-(* ;;; "Internal function that loads from an already open stream.  LOAD-VERBOSE-STREAM if non-nil is the stream to which to print %"file created%" messages and such.  Similarly, PRINTFLG, if non-nil, is the stream to which to print the value of each expression.")
+(* ;;; "Internal function that loads from an already open stream.  LOAD-VERBOSE-STREAM if non-nil is the stream to which to print %"file created%" messages and such.  Similarly, PRINTFLG, if non-nil, is the stream to which to print the value of each expression.")
 
     (PROG ((*STANDARD-INPUT* STREAM)
            (FILE (FULLNAME STREAM))
            (*PACKAGE* *PACKAGE*)
-           (*READTABLE* (PROG1 FILERDTBL                     (* ; "This initial value important for SKIPSEPRCODES below, but *READTABLE* gets reset appropriately before anything else is read")
+           (*READTABLE* (PROG1 FILERDTBL                     (* ; "This initial value important for SKIPSEPRCODES below, but *READTABLE* gets reset appropriately before anything else is read")
                                ))
            (DFNFLG DFNFLG)
            (BUILDMAPFLG BUILDMAPFLG)
@@ -385,176 +385,168 @@
            FILEMAP FNADRLST ROOTNAME TEM FILECREATEDLST LOADA MAYBEWANTFILEMAP INTERLISP-P 
            FILECREATEDLOC)
           (DECLARE (SPECVARS DFNFLG BUILDMAPFLG FILEPKGFLG ADDSPELLFLG LISPXHIST FILECREATEDLST 
-                              DEFINEDENV FILECREATEDLOC FILE))
+                          DEFINEDENV FILECREATEDLOC FILE))
           (if (AND LOAD-VERBOSE-STREAM FILE)
               then (LISPXTERPRI LOAD-VERBOSE-STREAM)
-                    (if (NEQ LOAD-VERBOSE-STREAM T)
-                        then                             (* ; 
-                                            "CL:LOAD says to prefix this stuff with comment marker")
-                              (PRIN1 "; Loading " LOAD-VERBOSE-STREAM)) 
-                                                             (* ; 
-                          "Might use EXEC-FORMAT here except that it isn't defined early in loadup")
-                    (LISPXPRIN1 FILE LOAD-VERBOSE-STREAM)
-                    (LISPXTERPRI LOAD-VERBOSE-STREAM))
+                   (if (NEQ LOAD-VERBOSE-STREAM T)
+                       then                                  (* ; 
+                                              "CL:LOAD says to prefix this stuff with comment marker")
+                            (PRIN1 "; Loading " LOAD-VERBOSE-STREAM)) 
+                                                             (* ; 
+                            "Might use EXEC-FORMAT here except that it isn't defined early in loadup")
+                   (LISPXPRIN1 FILE LOAD-VERBOSE-STREAM)
+                   (LISPXTERPRI LOAD-VERBOSE-STREAM))
           (if (EQ (SETQ DFNFLG LDFLG)
-                      'SYSLOAD)
+                  'SYSLOAD)
               then (SETQ DFNFLG T)
-                    (SETQ ADDSPELLFLG NIL)
-                    (SETQ BUILDMAPFLG NIL)
-                    (SETQ FILEPKGFLG NIL)
-                    (SETQ LISPXHIST NIL))
+                   (SETQ ADDSPELLFLG NIL)
+                   (SETQ BUILDMAPFLG NIL)
+                   (SETQ FILEPKGFLG NIL)
+                   (SETQ LISPXHIST NIL))
           (if LISPXHIST
-              then                                       (* ; 
-                       "Want UNDOSAVE to keep saving regardless of how many undosaves are involved")
-                    (if (SETQ LOADA (FMEMB 'SIDE LISPXHIST))
-                        then (FRPLACA (CADR LOADA)
-                                        -1)
-                      else (LISPXPUT 'SIDE (LIST -1)
-                                      NIL LISPXHIST)))
+              then                                           (* ; 
+                         "Want UNDOSAVE to keep saving regardless of how many undosaves are involved")
+                   (if (SETQ LOADA (FMEMB 'SIDE LISPXHIST))
+                       then (FRPLACA (CADR LOADA)
+                                   -1)
+                     else (LISPXPUT 'SIDE (LIST -1)
+                                 NIL LISPXHIST)))
           (if (EQ (SETQ TEM (SKIPSEPRCODES STREAM))
-                      FASL:SIGNATURE)
-              then                                       (* ; 
-                                                           "FASL file handled by FASL loader")
-                    (FASL:PROCESS-FILE STREAM)
-                    [LET [(MANAGED-FILE-P (GET (SETQ ROOTNAME (ROOTFILENAME FILE T))
-                                               'FILEDATES]
-                         (if (NOT (MEMB FILE LOADEDFILELST))
-                             then                        (* ; 
-                                                           "Keep track of every file loaded.")
-                                   (SETQ LOADEDFILELST (CONS FILE LOADEDFILELST)))
-                         (if MANAGED-FILE-P
-                             then (if (EQ LDFLG 'SYSLOAD)
-                                          then 
+                  FASL:SIGNATURE)
+              then                                           (* ; "FASL file handled by FASL loader")
+                   (FASL:PROCESS-FILE STREAM)
+                   [LET [(MANAGED-FILE-P (GET (SETQ ROOTNAME (ROOTFILENAME FILE T))
+                                              'FILEDATES]
+                        (if (NOT (MEMB FILE LOADEDFILELST))
+                            then                             (* ; "Keep track of every file loaded.")
+                                 (SETQ LOADEDFILELST (CONS FILE LOADEDFILELST)))
+                        (if MANAGED-FILE-P
+                            then (if (EQ LDFLG 'SYSLOAD)
+                                     then 
+                                          (* ;; 
+     "Don't notice DFASL's when you are coming from CL:LOAD, and the user didn't specify a load flag")
 
-                                                (* ;; 
-   "Don't notice DFASL's when you are coming from CL:LOAD, and the user didn't specify a load flag")
-
-                                                (if (NOT (MEMB ROOTNAME SYSFILES))
-                                                    then (SETQ SYSFILES (NCONC1 SYSFILES 
-                                                                                   ROOTNAME)))
-                                                (SMASHFILECOMS ROOTNAME)
-                                        elseif FILEPKGFLG
-                                          then (ADDFILE ROOTNAME 'Compiled]
-                    (RETURN FILE)
+                                          (if (NOT (MEMB ROOTNAME SYSFILES))
+                                              then (SETQ SYSFILES (NCONC1 SYSFILES ROOTNAME)))
+                                          (SMASHFILECOMS ROOTNAME)
+                                   elseif FILEPKGFLG
+                                     then (ADDFILE ROOTNAME 'Compiled]
+                   (RETURN FILE)
             elseif (NEQ TEM (CHARCODE "("))
               then (RETURN (\CML-LOAD STREAM PRINTFLG LOAD-VERBOSE-STREAM PACKAGE)))
           (if (AND BUILDMAPFLG (RANDACCESSP STREAM))
               then (SETQ MAYBEWANTFILEMAP T))
 
-     (* ;; "Get the environment from the DEFINE-FILE-INFO expression.  This is read in the DEFINE-FILE-INFO-ENVIRONMENT.")
+     (* ;; "Get the environment from the DEFINE-FILE-INFO expression.  This is read in the DEFINE-FILE-INFO-ENVIRONMENT.")
 
-          (SETQ DEFINEDENV (READ-READER-ENVIRONMENT STREAM *OLD-INTERLISP-READ-ENVIRONMENT*))
+          (SETQ DEFINEDENV (READ-READER-ENVIRONMENT STREAM))
           (CL:WHEN PACKAGE
 
-              (* ;; "Caller better really mean it--overrides what's on file! But we don't want to smash what the reader returned, couldbe the old-interlisp-file-env.")
+              (* ;; "Caller better really mean it--overrides what's on file! But we don't want to smash what the reader returned, couldbe the old-interlisp-file-env.")
 
               [SETQ DEFINEDENV (CREATE READER-ENVIRONMENT USING DEFINEDENV REPACKAGE _
-                                                                    (SETQ *PACKAGE*
-                                                                     (\DTEST PACKAGE 'PACKAGE])
+                                                                (SETQ *PACKAGE* (\DTEST PACKAGE
+                                                                                       'PACKAGE])
 
-     (* ;; "At this point we have the environment for the file, the external format is set.  We now read/interpret all the other forms.")
+     (* ;; "At this point we have the environment for the file, the external format is set.  We now read/interpret all the other forms.")
 
           (WITH-READER-ENVIRONMENT DEFINEDENV
               (PROG (ADR)
                 LP  (if FILEMAP
-                        then                             (* ; 
-                                                           "need to build map, so read carefully")
-                              (SETQ LOADA (SKIPSEPRCODES STREAM))
-                              (if (OR (SYNTAXP LOADA 'LEFTPAREN)
-                                          (SYNTAXP LOADA 'LEFTBRACKET))
-                                  then                   (* ; "See if we have a DEFINEQ")
-                                        (SETQ ADR (GETFILEPTR STREAM))
-                                        (READCCODE STREAM)   (* ; "Eat paren")
-                                        (if (EQ (RATOM STREAM)
-                                                    'DEFINEQ)
-                                            then (SETQ FNADRLST (TCONC NIL ADR))
-                                                  (TCONC FNADRLST NIL)
-                                                  (TCONC FILEMAP (CAR FNADRLST))
-                                                  (GO DEFQLP)) 
-                                                             (* ; "Not a DEFINEQ, so back out")
-                                        (SETFILEPTR STREAM ADR)))
+                        then                                 (* ; 
+                                                             "need to build map, so read carefully")
+                             (SETQ LOADA (SKIPSEPRCODES STREAM))
+                             (if (OR (SYNTAXP LOADA 'LEFTPAREN)
+                                     (SYNTAXP LOADA 'LEFTBRACKET))
+                                 then                        (* ; "See if we have a DEFINEQ")
+                                      (SETQ ADR (GETFILEPTR STREAM))
+                                      (READCCODE STREAM)     (* ; "Eat paren")
+                                      (if (EQ (RATOM STREAM)
+                                              'DEFINEQ)
+                                          then (SETQ FNADRLST (TCONC NIL ADR))
+                                               (TCONC FNADRLST NIL)
+                                               (TCONC FILEMAP (CAR FNADRLST))
+                                               (GO DEFQLP))  (* ; "Not a DEFINEQ, so back out")
+                                      (SETFILEPTR STREAM ADR)))
                     (SELECTQ (SETQ LOADA (READ STREAM))
-                          ((STOP NIL) 
-                                 (if (EQ LDFLG 'SYSLOAD)
-                                     then (if (NOT (MEMB (SETQ ROOTNAME
-                                                                      (ROOTFILENAME FILE
-                                                                             (CDR FILECREATEDLST)))
-                                                                  SYSFILES))
-                                                  then (SETQ SYSFILES (NCONC1 SYSFILES 
-                                                                                 ROOTNAME)))
-                                           (SMASHFILECOMS ROOTNAME)
-                                   elseif FILEPKGFLG
-                                     then 
+                        ((STOP NIL) 
+                             (if (EQ LDFLG 'SYSLOAD)
+                                 then (if (NOT (MEMB (SETQ ROOTNAME (ROOTFILENAME FILE (CDR 
+                                                                                       FILECREATEDLST
+                                                                                            )))
+                                                     SYSFILES))
+                                          then (SETQ SYSFILES (NCONC1 SYSFILES ROOTNAME)))
+                                      (SMASHFILECOMS ROOTNAME)
+                               elseif FILEPKGFLG
+                                 then 
 
-                                 (* ;; "Do not want any items that are added to FILEPKGCHANGES as a result of being mentioned in this file to remain on FILEPKGCHANGES.  Also, we want items mentioned earlier to be deleted if they are taken care of by this file.  The extra argument to ADDFILE allows it to restore FILEPKGCHANGES to the intersection of its current value and its previous value.")
+                                 (* ;; "Do not want any items that are added to FILEPKGCHANGES as a result of being mentioned in this file to remain on FILEPKGCHANGES.  Also, we want items mentioned earlier to be deleted if they are taken care of by this file.  The extra argument to ADDFILE allows it to restore FILEPKGCHANGES to the intersection of its current value and its previous value.")
 
-                                           (ADDFILE FILE T PRLST FILECREATEDLST))
-                                 [if FILEMAP
-                                     then (PUTFILEMAP FILE (CAR FILEMAP)
-                                                     FILECREATEDLST DEFINEDENV NIL FILECREATEDLOC)
-                                           (if UPDATEMAPFLG
-                                               then (SETFILEPTR STREAM ADR) 
-                                                             (* ; 
-                                  "address of last expression read.  good hint for finding filemap")
-                                                     (UPDATEFILEMAP STREAM (CAR FILEMAP]
-                                 (if (NOT (MEMB FILE LOADEDFILELST))
-                                     then (/SETTOPVAL 'LOADEDFILELST (CONS FILE LOADEDFILELST)))
-                                 (RETURN))
-                          NIL)
+                                      (ADDFILE FILE T PRLST FILECREATEDLST))
+                             [if FILEMAP
+                                 then (PUTFILEMAP FILE (CAR FILEMAP)
+                                             FILECREATEDLST DEFINEDENV NIL FILECREATEDLOC)
+                                      (if UPDATEMAPFLG
+                                          then (SETFILEPTR STREAM ADR) 
+                                                             (* ; 
+                                    "address of last expression read.  good hint for finding filemap")
+                                               (UPDATEFILEMAP STREAM (CAR FILEMAP]
+                             (if (NOT (MEMB FILE LOADEDFILELST))
+                                 then (/SETTOPVAL 'LOADEDFILELST (CONS FILE LOADEDFILELST)))
+                             (RETURN))
+                        NIL)
                     [if (LISTP LOADA)
                         then
                         (SELECTQ (CAR LOADA)
-                              (FILECREATED (if MAYBEWANTFILEMAP
-                                               then      (* ; "See if we have a valid file map")
-                                               (SETQ ADR (GETFILEPTR STREAM))
-                                               (if [AND (FIXP (SETQ TEM (CADDDR LOADA)))
-                                                            [SETQ TEM (CAR (NLSETQ (SETFILEPTR STREAM
-                                                                                          TEM)
-                                                                                  (READ STREAM]
-                                                            (EQ (CAR TEM)
-                                                                'FILEMAP)
-                                                            (NULL (CAR (SETQ TEM (CADR TEM]
-                                                   then  (* ; "Has ok map")
-                                                         (PUTFILEMAP FILE TEM NIL DEFINEDENV)
-                                                 else    (* ; 
-                                                           "Need to build a file map as we go")
-                                                       (SETQ FILEMAP (TCONC NIL NIL)))
-                                               (SETFILEPTR STREAM ADR)
-                                               (SETQ MAYBEWANTFILEMAP NIL))
-                                           (SETQ LOADA (\EVAL LOADA)))
-                              (SETQ LOADA (\EVAL LOADA)))
-                      else                               (* ; 
-                                                           "Atom found.  Compiled code definition.")
-                            (if ADDSPELLFLG
-                                then (ADDSPELL LOADA))
-                            (if FILEMAP
-                                then (SETQ ADR (GETFILEPTR STREAM)))
-                            (LAPRD LOADA)
-                            (if FILEMAP
-                                then (TCONC FILEMAP (CONS ADR (CONS (GETFILEPTR STREAM)
-                                                                        LOADA]
+                            (FILECREATED (if MAYBEWANTFILEMAP
+                                             then            (* ; "See if we have a valid file map")
+                                                  (SETQ ADR (GETFILEPTR STREAM))
+                                                  (if [AND (FIXP (SETQ TEM (CADDDR LOADA)))
+                                                           [SETQ TEM (CAR (NLSETQ (SETFILEPTR STREAM
+                                                                                         TEM)
+                                                                                 (READ STREAM]
+                                                           (EQ (CAR TEM)
+                                                               'FILEMAP)
+                                                           (NULL (CAR (SETQ TEM (CADR TEM]
+                                                      then   (* ; "Has ok map")
+                                                           (PUTFILEMAP FILE TEM NIL DEFINEDENV)
+                                                    else     (* ; "Need to build a file map as we go")
+                                                         (SETQ FILEMAP (TCONC NIL NIL)))
+                                                  (SETFILEPTR STREAM ADR)
+                                                  (SETQ MAYBEWANTFILEMAP NIL))
+                                         (SETQ LOADA (\EVAL LOADA)))
+                            (SETQ LOADA (\EVAL LOADA)))
+                      else                                   (* ; 
+                                                             "Atom found.  Compiled code definition.")
+                           (if ADDSPELLFLG
+                               then (ADDSPELL LOADA))
+                           (if FILEMAP
+                               then (SETQ ADR (GETFILEPTR STREAM)))
+                           (LAPRD LOADA)
+                           (if FILEMAP
+                               then (TCONC FILEMAP (CONS ADR (CONS (GETFILEPTR STREAM)
+                                                                   LOADA]
                 LP1 (if PRINTFLG
                         then (PRINT LOADA PRINTFLG))
                     (GO LP)
                 DEFQLP
                     (SELCHARQ (SKIPSEPRCODES STREAM)
-                         ((%) %])                            (* ; "Closes DEFINEQ.")
+                         ((%) %])                            (* ; "Closes DEFINEQ.")
                               (READCCODE STREAM)
                               (if FNADRLST
                                   then (RPLACA (CDAR FNADRLST)
-                                                  (GETFILEPTR STREAM)))
-                                                             (* ; 
-                        "FNADRLST is a TCONC format list, hence want to RPLACA CDAR, not just CDR.")
+                                              (GETFILEPTR STREAM)))
+                                                             (* ; 
+                          "FNADRLST is a TCONC format list, hence want to RPLACA CDAR, not just CDR.")
                               (SETQ LOADA (DEFINE (DREVERSE LOADA)))
                               (GO LP1))
-                         ((%( %[)                            (* ; 
-                                                           "another function/definition pair")
+                         ((%( %[)                            (* ; "another function/definition pair")
                               (SETQ ADR (GETFILEPTR STREAM))
                               (SETQ LOADA (CONS (READ STREAM)
                                                 LOADA))
                               [if FNADRLST
                                   then (TCONC FNADRLST (CONS (CAAR LOADA)
-                                                                 (CONS ADR (GETFILEPTR STREAM]
+                                                             (CONS ADR (GETFILEPTR STREAM]
                               (GO DEFQLP))
                          NIL)
                     (ERROR "illegal argument in defineq")))
@@ -808,20 +800,22 @@
              (TERPRI STREAM)))])
 
 (READ-READER-ENVIRONMENT
-  [LAMBDA (STREAM DEFAULTENV RETURNFORM)                (* ; "Edited 26-Sep-2021 23:31 by rmk:")
+  [LAMBDA (STREAM DEFAULTENV RETURNFORM)                     (* ; "Edited 25-Feb-2026 14:15 by rmk")
+                                                            (* ; "Edited 26-Sep-2021 23:31 by rmk:")
 
     (* ;; "Starting environment is the old interlisp file, just for the seprchar scans.")
 
+    (* ;; "On exit, if the stream begins with a DEFINE-FILE-INFO expression, it is positioned just after that expression.  If not, it is left at its starting position. ")
+
     (* ;; "RETURNFORM=T means return the DEFINE-FILE-INFO as a second value, for READFILE")
 
     (CL:UNLESS DEFAULTENV (SETQ DEFAULTENV *OLD-INTERLISP-READ-ENVIRONMENT*))
     (LET ((START (GETFILEPTR STREAM))
           ARGS
           (ENV DEFAULTENV)
-          (*READTABLE* (FETCH (READER-ENVIRONMENT REREADTABLE) OF 
-                                                                     *OLD-INTERLISP-READ-ENVIRONMENT*
-                              )))
+          (*READTABLE* (FETCH (READER-ENVIRONMENT REREADTABLE) OF *OLD-INTERLISP-READ-ENVIRONMENT*)))
          (DECLARE (SPECVARS *READTABLE*))
+         (SETFILEPTR STREAM 0)                               (* ; "Hope we are RANDACCESSP")
          (SELCHARQ (SKIPSEPRCODES STREAM)
               (";"                                           (* ; "Assume it's a common lisp file")
                    (\EXTERNALFORMAT STREAM (FETCH (READER-ENVIRONMENT REFORMAT) OF 
@@ -831,24 +825,21 @@
               ("(" (\EXTERNALFORMAT STREAM (FETCH (READER-ENVIRONMENT REFORMAT) OF 
                                                                                *DEFINE-FILE-INFO-ENV*
                                                   ))         (* ; 
-                                                           "Should we reset the format if we fail?")
+                                                             "Should we reset the format if we fail?")
                    (READCCODE STREAM)
                    (WITH-READER-ENVIRONMENT *DEFINE-FILE-INFO-ENV*
-                       (IF (STREQUAL "DEFINE-FILE-INFO" (RSTRING STREAM))
-                           THEN 
+                       (if (STREQUAL "DEFINE-FILE-INFO" (RSTRING STREAM))
+                           then 
+                                (* ;; 
+        "After the \DO-DEFINE-FILE-INFO, we have the new environment and we have set the new format.")
 
-                                 (* ;; 
-      "After the \DO-DEFINE-FILE-INFO, we have the new environment and we have set the new format.")
-
-                                 [SETQ ENV (\DO-DEFINE-FILE-INFO STREAM (SETQ ARGS
-                                                                             (CL:READ-DELIMITED-LIST
-                                                                              (CHARCODE ")")
-                                                                              STREAM]
-                         ELSE                            (* ; "Hope we are RANDACCESSP")
-                               (SETFILEPTR STREAM START))
+                                (SETQ ARGS (CL:READ-DELIMITED-LIST (CHARCODE ")")
+                                                  STREAM))
+                                (SETQ ENV (\DO-DEFINE-FILE-INFO STREAM ARGS))
+                         else (SETFILEPTR STREAM START))
 
                        (* ;; 
-                 "If we didn't see ARGS, then we didn't see a DEFINE-FILE-INFO, no form to return.")
+                   "If we didn't see ARGS, then we didn't see a DEFINE-FILE-INFO, no form to return.")
 
                        (CL:IF (AND RETURNFORM ARGS)
                            (CL:VALUES ENV (CONS 'DEFINE-FILE-INFO ARGS))
@@ -856,25 +847,26 @@
               DEFAULTENV])
 
 (MAKE-DEFINE-FILE-INFO-ENV
-  [LAMBDA NIL                                           (* ; "Edited 29-Jul-2021 20:29 by rmk:")
+  [LAMBDA NIL                                                (* ; "Edited 25-Feb-2026 15:03 by rmk")
+                                                            (* ; "Edited 29-Jul-2021 20:29 by rmk:")
 
-    (* ;; "Makes the reader environment and read table used for printing and reading the DEFINE-FILE-INFO expression.  Like the OLD-INTERLISP-FILE, but : is the preferred package delim")
+    (* ;; "Makes the reader environment and read table used for printing and reading the DEFINE-FILE-INFO expression.  Like the OLD-INTERLISP-FILE, but : is the preferred package delim")
 
     (LET [(RTBL (COPYREADTABLE (FETCH REREADTABLE OF *OLD-INTERLISP-READ-ENVIRONMENT*]
 
-         (* ;; 
-   "But this is all rather silly:  Why not just have ordinary Interlisp atoms for the key words.  ")
-                                                             (* (READTABLEPROP RTBL
-                                                           (QUOTE PACKAGECHAR)
-                                                           (CHARCODE %:)))
+         (* ;; 
+     "But this is all rather silly:  Why not just have ordinary Interlisp atoms for the key words.  ")
+                                                             (* (READTABLEPROP RTBL
+                                                             (QUOTE PACKAGECHAR) (CHARCODE %:)))
          (SETSYNTAX (CHARCODE %:)
-                'PACKAGEDELIM RTBL)                          (* ; 
-                                                   "In transition: read : but don't yet put it out")
+                'PACKAGEDELIM RTBL)
+         (replace (READTABLEP PACKAGECHAR) of RTBL with (CHARCODE %:))
+                                                             (* ; 
+                                                             "Use : instead of ^^ for printing too")
 
-         (* ;; "The INTERLISP package doesn't exist in bootstrap, the REPACKAGE field is filled in in PACKAGE-ENABLE in PACKAGE-STARTUP")
+         (* ;; "The INTERLISP package doesn't exist in bootstrap, the REPACKAGE field is filled in in PACKAGE-ENABLE in PACKAGE-STARTUP")
 
-         (CREATE READER-ENVIRONMENT USING *OLD-INTERLISP-READ-ENVIRONMENT* REREADTABLE _ RTBL
-                ])
+         (CREATE READER-ENVIRONMENT USING *OLD-INTERLISP-READ-ENVIRONMENT* REREADTABLE _ RTBL])
 )
 
 (RPAQ? *DEFINE-FILE-INFO-ENV* (MAKE-DEFINE-FILE-INFO-ENV))
@@ -977,13 +969,13 @@
 (ADDTOVAR LAMA )
 )
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (4617 14289 (GETPROP 4627 . 5199) (SETATOMVAL 5201 . 5330) (RPAQQ 5332 . 5385) (RPAQ 
-5387 . 5699) (RPAQ? 5701 . 6071) (MOVD 6073 . 7937) (MOVD? 7939 . 8369) (SELECTQ 8371 . 8558) (
-SELECTQ1 8560 . 8902) (NCONC1 8904 . 9100) (PUTPROP 9102 . 10586) (PROPNAMES 10588 . 10779) (ADDPROP 
-10781 . 12844) (REMPROP 12846 . 13700) (MEMB 13702 . 13961) (CLOSEF? 13963 . 14287)) (14362 34926 (
-LOAD 14372 . 15541) (\LOAD-STREAM 15543 . 28617) (FILECREATED 28619 . 30037) (FILECREATED1 30039 . 
-31147) (PRETTYCOMPRINT 31149 . 31634) (BOOTSTRAP-NAMEFIELD 31636 . 32596) (PUTPROPS 32598 . 32966) (
-DECLARE%: 32968 . 33100) (DECLARE%:1 33102 . 33974) (ROOTFILENAME 33976 . 34924)) (34964 45363 (
-DEFINE-FILE-INFO 34974 . 35409) (\DO-DEFINE-FILE-INFO 35411 . 39554) (PRINT-READER-ENVIRONMENT 39556
- . 41308) (READ-READER-ENVIRONMENT 41310 . 44085) (MAKE-DEFINE-FILE-INFO-ENV 44087 . 45361)))))
+  (FILEMAP (NIL (4621 14293 (GETPROP 4631 . 5203) (SETATOMVAL 5205 . 5334) (RPAQQ 5336 . 5389) (RPAQ 
+5391 . 5703) (RPAQ? 5705 . 6075) (MOVD 6077 . 7941) (MOVD? 7943 . 8373) (SELECTQ 8375 . 8562) (
+SELECTQ1 8564 . 8906) (NCONC1 8908 . 9104) (PUTPROP 9106 . 10590) (PROPNAMES 10592 . 10783) (ADDPROP 
+10785 . 12848) (REMPROP 12850 . 13704) (MEMB 13706 . 13965) (CLOSEF? 13967 . 14291)) (14366 34343 (
+LOAD 14376 . 15545) (\LOAD-STREAM 15547 . 28034) (FILECREATED 28036 . 29454) (FILECREATED1 29456 . 
+30564) (PRETTYCOMPRINT 30566 . 31051) (BOOTSTRAP-NAMEFIELD 31053 . 32013) (PUTPROPS 32015 . 32383) (
+DECLARE%: 32385 . 32517) (DECLARE%:1 32519 . 33391) (ROOTFILENAME 33393 . 34341)) (34381 44987 (
+DEFINE-FILE-INFO 34391 . 34826) (\DO-DEFINE-FILE-INFO 34828 . 38971) (PRINT-READER-ENVIRONMENT 38973
+ . 40725) (READ-READER-ENVIRONMENT 40727 . 43553) (MAKE-DEFINE-FILE-INFO-ENV 43555 . 44985)))))
 STOP
diff --git a/sources/BOOTSTRAP.LCOM b/sources/BOOTSTRAP.LCOM
index ea5f8795..043018dc 100644
Binary files a/sources/BOOTSTRAP.LCOM and b/sources/BOOTSTRAP.LCOM differ
diff --git a/sources/CLISP b/sources/CLISP
index e0c640c0..35ec32c1 100644
--- a/sources/CLISP
+++ b/sources/CLISP
@@ -1,18 +1,11 @@
-(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
-(FILECREATED "16-May-90 12:27:02" {DSK}<usr>local>lde>lispcore>sources>CLISP.;2 45083  
+(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT UTF-8)
 
-      changes to%:  (VARS CLISPCOMS)
+(FILECREATED "19-Feb-2026 12:00:55" {WMEDLEY}<sources>CLISP.;2 44501  
 
-      previous date%: "26-Nov-86 12:32:58" {DSK}<usr>local>lde>lispcore>sources>CLISP.;1)
+      :EDIT-BY rmk
 
+      :PREVIOUS-DATE "16-May-90 12:27:02" {WMEDLEY}<sources>CLISP.;1)
 
-(* ; "
-Copyright (c) 1982, 1983, 1984, 1985, 1986, 1990 by Venue & Xerox Corporation.  All rights reserved.
-The following program was created in 1982 but has not been published
-within the meaning of the copyright law, is furnished under license,
-and may not be used, copied and/or disclosed except in accordance
-with the terms of said license.
-")
 
 (PRETTYCOMPRINT CLISPCOMS)
 
@@ -57,16 +50,16 @@ with the terms of said license.
         (COMS (* CLISP props)
               (PROP CLISPTYPE %')
               [E (SETQQ CLISPCHARS
-                        (^ * / + - = _ %: %' ~ +- ~= < > @ ! � �))
+                        (↑ * / + - = ← %: %' ~ +- ~= < > @ ! _ ^))
                  (CLISPDEC '(STANDARD MIXED]
               [VARS (CLISPFLG T)
-                    (CLISPCHARS '(^ * / + - = _ %: %' ~ +- ~= < > @ ! � �]
+                    (CLISPCHARS '(↑ * / + - = ← %: %' ~ +- ~= < > @ ! _ ^]
               (INITVARS (CLISPHELPFLG T)
                      (TREATASCLISPFLG)
                      (CLISPINFIXSPLST)
                      (CLISPCHARRAY (MAKEBITTABLE CLISPCHARS))
-                     [LEFT.ARROWS.BITTABLE (MAKEBITTABLE '(_ �]
-                     (LEFT.ARROW '_)
+                     [LEFT.ARROWS.BITTABLE (MAKEBITTABLE '(← _]
+                     (LEFT.ARROW '←)
                      (CLISPISWORDSPLST)
                      (CLISPLASTSUB (CONS))
                      (CHECKCARATOMFLG)
@@ -74,7 +67,7 @@ with the terms of said license.
                      (CLISPARITHCLASSLST '(INTEGER FIXED MIXED FLOATING))
                      (DWIMINMACROSFLG NIL))
               (IFPROP (CLISPTYPE LISPFN UNARYOP CLISPCLASS CLISPCLASSDEF CLISPNEG CLISPBRACKET)
-                     � ^ * / + - = _ � %: %' ~ +- ~= < > @ !)
+                     ^ ↑ * / + - = ← _ %: %' ~ +- ~= < > @ !)
               (VARS DECLWORDS)
               (IFPROP (CLISPTYPE LISPFN UNARYOP CLISPINFIX CLISPCLASS CLISPCLASSDEF CLISPNEG 
                              BROADSCOPE)
@@ -160,34 +153,14 @@ with the terms of said license.
 
 (RPAQ? RPARKEY 0)
 
-(RPAQ? WTFIXCHCONLST '(NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL 
-                               NIL NIL))
+(RPAQ? WTFIXCHCONLST '(NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL 
+                           NIL))
 
-(RPAQ? WTFIXCHCONLST1 '(NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL 
-                                NIL NIL))
+(RPAQ? WTFIXCHCONLST1 '(NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL 
+                            NIL))
 
 (ADDTOVAR EDITMACROS
-          (FIX9 (X N)
-                (BIND (E (SETQ %#1 (EDITFPAT 'X))
-                         T)
-                      (IF (NOT (ATOM (%##)))
-                          (1))
-                      (COMS (SPLIT89 RPARKEY N))
-                      (I F RPARKEY T)
-                      (E [SETQ %#2 (ADD1 (LENGTH (CAR L]
-                         T)
-                      !0 MARK (LPQ [IF (OR (NULL %#1)
-                                           (NOT (EDIT4E %#1 (%## 1]
-                                   UP
-                                   (E (SETQ %#3 (LENGTH (CAR L)))
-                                      T)
-                                   (I RI 1 (MINUS %#2))
-                                   (E (SETQ %#2 %#3)
-                                      T)
-                                   1 !0)
-                      __
-                      (DELETE NX)))
-          (FIX9 NIL (FIX9))
+          (FIX8 NIL (FIX8))
           (FIX8 (X N)
                 (BIND (E (SETQ %#1 (EDITFPAT 'X))
                          T)
@@ -206,14 +179,34 @@ with the terms of said license.
                            UP
                            (RO 1)
                            !0)))
-          (FIX8 NIL (FIX8)))
+          (FIX9 NIL (FIX9))
+          (FIX9 (X N)
+                (BIND (E (SETQ %#1 (EDITFPAT 'X))
+                         T)
+                      (IF (NOT (ATOM (%##)))
+                          (1))
+                      (COMS (SPLIT89 RPARKEY N))
+                      (I F RPARKEY T)
+                      (E [SETQ %#2 (ADD1 (LENGTH (CAR L]
+                         T)
+                      !0 MARK (LPQ [IF (OR (NULL %#1)
+                                           (NOT (EDIT4E %#1 (%## 1]
+                                   UP
+                                   (E (SETQ %#3 (LENGTH (CAR L)))
+                                      T)
+                                   (I RI 1 (MINUS %#2))
+                                   (E (SETQ %#2 %#3)
+                                      T)
+                                   1 !0)
+                      ←←
+                      (DELETE NX))))
 
 (ADDTOVAR DWIMUSERFORMS )
 
 (ADDTOVAR LAMBDASPLST LAMBDA NLAMBDA)
 
-(ADDTOVAR OKREEVALST AND OR PROGN SAVESETQ CAR CDR ADD1 SUB1 CONS LIST EQ EQUAL PRINT PRIN1 
-                             APPEND NEQ NOT NULL)
+(ADDTOVAR OKREEVALST AND OR PROGN SAVESETQ CAR CDR ADD1 SUB1 CONS LIST EQ EQUAL PRINT PRIN1 APPEND 
+                         NEQ NOT NULL)
 
 (ADDTOVAR NOFIXFNSLST )
 
@@ -266,6 +259,17 @@ with the terms of said license.
 (ADDTOVAR DWIMEQUIVLST )
 
 (ADDTOVAR EDITMACROS
+          (CLISP%: NIL (BIND (E (COND ((SETQ %#1 (AND CLISPARRAY (GETHASH (%##)
+                                                                        CLISPARRAY)))
+                                       (SETQQ COM CLISP%:)
+                                       (EDITE %#1))
+                                      (T (PRIN1 '"not translated.
+" T)))
+                                T)))
+          (NOCLISP COMS (RESETVAR CLISPTRANFLG NIL . COMS))
+          (NOCLISP NIL (NOCLISP TTY%:))
+          (!DW NIL (RESETVAR CLISPRETRANFLG T DW))
+          (PPT NIL (RESETVAR PRETTYTRANFLG T PP))
           (DW NIL (BIND (E (PROGN (SETQ %#1 (%##))
                                   (AND (CDR L)
                                        (%## !0 (E (SETQ %#2 L)
@@ -280,18 +284,7 @@ with the terms of said license.
                              (IF (LISTP %#3)
                                  (1)
                                  NIL))
-                            NIL)))
-          (PPT NIL (RESETVAR PRETTYTRANFLG T PP))
-          (!DW NIL (RESETVAR CLISPRETRANFLG T DW))
-          (NOCLISP NIL (NOCLISP TTY%:))
-          (NOCLISP COMS (RESETVAR CLISPTRANFLG NIL . COMS))
-          (CLISP%: NIL (BIND (E (COND ((SETQ %#1 (AND CLISPARRAY (GETHASH (%##)
-                                                                        CLISPARRAY)))
-                                       (SETQQ COM CLISP%:)
-                                       (EDITE %#1))
-                                      (T (PRIN1 '"not translated.
-" T)))
-                                T))))
+                            NIL))))
 
 (ADDTOVAR EDITCOMSA PPT DW !DW CLISP%:)
 
@@ -304,7 +297,7 @@ with the terms of said license.
 
 (RPAQQ CLISPFLG T)
 
-(RPAQQ CLISPCHARS (^ * / + - = _ %: %' ~ +- ~= < > @ ! � �))
+(RPAQQ CLISPCHARS (↑ * / + - = ← %: %' ~ +- ~= < > @ ! _ ^))
 
 (RPAQ? CLISPHELPFLG T)
 
@@ -314,9 +307,9 @@ with the terms of said license.
 
 (RPAQ? CLISPCHARRAY (MAKEBITTABLE CLISPCHARS))
 
-(RPAQ? LEFT.ARROWS.BITTABLE (MAKEBITTABLE '(_ �)))
+(RPAQ? LEFT.ARROWS.BITTABLE (MAKEBITTABLE '(← _)))
 
-(RPAQ? LEFT.ARROW '_)
+(RPAQ? LEFT.ARROW '←)
 
 (RPAQ? CLISPISWORDSPLST )
 
@@ -330,10 +323,10 @@ with the terms of said license.
 
 (RPAQ? DWIMINMACROSFLG NIL)
 
-(PUTPROPS � CLISPTYPE 6)
-
 (PUTPROPS ^ CLISPTYPE 6)
 
+(PUTPROPS ↑ CLISPTYPE 6)
+
 (PUTPROPS * CLISPTYPE 4)
 
 (PUTPROPS / CLISPTYPE 4)
@@ -344,9 +337,9 @@ with the terms of said license.
 
 (PUTPROPS = CLISPTYPE -20)
 
-(PUTPROPS _ CLISPTYPE (8 . -12))
+(PUTPROPS ← CLISPTYPE (8 . -12))
 
-(PUTPROPS � CLISPTYPE (8 . -12))
+(PUTPROPS _ CLISPTYPE (8 . -12))
 
 (PUTPROPS %: CLISPTYPE (14 . 13))
 
@@ -360,10 +353,10 @@ with the terms of said license.
 
 (PUTPROPS > CLISPTYPE BRACKET)
 
-(PUTPROPS � LISPFN EXPT)
-
 (PUTPROPS ^ LISPFN EXPT)
 
+(PUTPROPS ↑ LISPFN EXPT)
+
 (PUTPROPS * LISPFN TIMES)
 
 (PUTPROPS / LISPFN QUOTIENT)
@@ -374,9 +367,9 @@ with the terms of said license.
 
 (PUTPROPS = LISPFN EQ)
 
-(PUTPROPS _ LISPFN SETQ)
+(PUTPROPS ← LISPFN SETQ)
 
-(PUTPROPS � LISPFN SETQ)
+(PUTPROPS _ LISPFN SETQ)
 
 (PUTPROPS %' LISPFN QUOTE)
 
@@ -750,7 +743,7 @@ with the terms of said license.
 
 (PUTPROPS OR CLISPINFIX or)
 
-(PUTPROPS SETQ CLISPINFIX _)
+(PUTPROPS SETQ CLISPINFIX ←)
 
 (PUTPROPS IPLUS CLISPINFIX +)
 
@@ -780,7 +773,7 @@ with the terms of said license.
 
 (PUTPROPS GREATERP CLISPINFIX gt)
 
-(PUTPROPS EXPT CLISPINFIX ^)
+(PUTPROPS EXPT CLISPINFIX ↑)
 
 (PUTPROPS LT CLISPCLASS LT)
 
@@ -931,7 +924,7 @@ with the terms of said license.
 (PUTPROPS SETA SETFN (ELT))
 
 (DEFOPTIMIZER CLISP%  (X &REST Y)
-                          X)
+                      X)
 
 (PUTPROPS AND CLISPWORD T)
 
@@ -1146,83 +1139,82 @@ with the terms of said license.
 (PUTPROPS while CLISPWORD (FORWORD . while))
 
 (PUTPROPS always I.S.OPR ((COND ((NULL BODY)
-                                         (SETQ $$VAL NIL)
-                                         (GO $$OUT)))
-                                  BIND
-                                  (SETQ $$VAL T)))
+                                 (SETQ $$VAL NIL)
+                                 (GO $$OUT)))
+                          BIND
+                          (SETQ $$VAL T)))
 
 (PUTPROPS collect I.S.OPR ((SETQ $$VAL (NCONC1 $$VAL BODY))))
 
 (PUTPROPS count I.S.OPR ((AND BODY (SETQ $$VAL (ADD1 $$VAL)))
-                                 BIND
-                                 ($$VAL _ 0)))
+                         BIND
+                         ($$VAL ← 0)))
 
 (PUTPROPS do I.S.OPR (BODY))
 
 (PUTPROPS fcollect I.S.OPR [(= SUBPAIR '(VAR1 VAR2)
-                                       (LIST (GETDUMMYVAR T)
-                                             (GETDUMMYVAR T))
-                                       '(PROGN (SETQ VAR1 BODY)
-                                               (COND [VAR2 (FRPLACD VAR2 (SETQ VAR2 (LIST VAR1]
-                                                     (T (SETQ $$VAL (SETQ VAR2 (LIST VAR1])
+                               (LIST (GETDUMMYVAR T)
+                                     (GETDUMMYVAR T))
+                               '(PROGN (SETQ VAR1 BODY)
+                                       (COND [VAR2 (FRPLACD VAR2 (SETQ VAR2 (LIST VAR1]
+                                             (T (SETQ $$VAL (SETQ VAR2 (LIST VAR1])
 
 (PUTPROPS inside I.S.OPR [NIL = SUBST (GETDUMMYVAR)
-                                      'VAR
-                                      '(bind (VAR _ BODY)
-                                             eachtime
-                                             (COND ((NULL VAR)
-                                                    (GO $$OUT))
-                                                   ((NLISTP VAR)
-                                                    (SETQ I.V. VAR)
-                                                    (SETQ VAR NIL))
-                                                   (T (SETQ I.V. (CAR VAR))
-                                                      (SETQ VAR (CDR VAR])
+                              'VAR
+                              '(bind (VAR ← BODY)
+                                     eachtime
+                                     (COND ((NULL VAR)
+                                            (GO $$OUT))
+                                           ((NLISTP VAR)
+                                            (SETQ I.V. VAR)
+                                            (SETQ VAR NIL))
+                                           (T (SETQ I.V. (CAR VAR))
+                                              (SETQ VAR (CDR VAR])
 
 (PUTPROPS join I.S.OPR ((SETQ $$VAL (NCONC $$VAL BODY))))
 
 (PUTPROPS largest I.S.OPR [NIL = SUBST (GETDUMMYVAR)
-                                       '$$TEMP
-                                       '(BIND $$EXTREME $$TEMP DO (SETQ $$TEMP BODY)
-                                              (COND ((OR (NULL $$EXTREME)
-                                                         (GREATERP $$TEMP $$EXTREME))
-                                                     (SETQ $$EXTREME $$TEMP)
-                                                     (SETQ $$VAL I.V.])
+                               '$$TEMP
+                               '(BIND $$EXTREME $$TEMP DO (SETQ $$TEMP BODY)
+                                      (COND ((OR (NULL $$EXTREME)
+                                                 (GREATERP $$TEMP $$EXTREME))
+                                             (SETQ $$EXTREME $$TEMP)
+                                             (SETQ $$VAL I.V.])
 
 (PUTPROPS never I.S.OPR ((COND (BODY (SETQ $$VAL NIL)
-                                             (GO $$OUT)))
-                                 BIND
-                                 ($$VAL _ T)))
+                                     (GO $$OUT)))
+                         BIND
+                         ($$VAL ← T)))
 
 (PUTPROPS old I.S.OPR MODIFIER)
 
 (PUTPROPS smallest I.S.OPR [NIL = SUBST (GETDUMMYVAR)
-                                        '$$TEMP
-                                        '(BIND $$EXTREME $$TEMP DO (SETQ $$TEMP BODY)
-                                               (COND ((OR (NULL $$EXTREME)
-                                                          (LESSP $$TEMP $$EXTREME))
-                                                      (SETQ $$EXTREME $$TEMP)
-                                                      (SETQ $$VAL I.V.])
+                                '$$TEMP
+                                '(BIND $$EXTREME $$TEMP DO (SETQ $$TEMP BODY)
+                                       (COND ((OR (NULL $$EXTREME)
+                                                  (LESSP $$TEMP $$EXTREME))
+                                              (SETQ $$EXTREME $$TEMP)
+                                              (SETQ $$VAL I.V.])
 
 (PUTPROPS sum I.S.OPR ((SETQ $$VAL (PLUS $$VAL BODY))
-                               BIND
-                               ($$VAL _ 0)))
+                       BIND
+                       ($$VAL ← 0)))
 
 (PUTPROPS thereis I.S.OPR [(COND (BODY (SETQ $$VAL (OR I.V. T))
-                                               (GO $$OUT])
+                                       (GO $$OUT])
 
-(ADDTOVAR I.S.OPRLST ALWAYS AS BIND BY COLLECT COUNT DECLARE DECLARE%: DO EACHTIME FCOLLECT 
-                               FINALLY FIND FIRST FOR FROM IN INSIDE ISTHERE JOIN LARGEST NEVER OLD 
-                               ON ORIGINAL REPEATUNTIL REPEATWHILE SMALLEST SUCHTHAT SUM THEREIS THRU
-                               TO UNLESS UNTIL WHEN WHERE WHILE always as bind by collect count 
-                               declare declare%: do eachtime fcollect finally find first for from in
-                               inside isthere join largest never old on original repeatuntil 
-                               repeatwhile smallest suchthat sum thereis thru to unless until when 
-                               where while)
+(ADDTOVAR I.S.OPRLST ALWAYS AS BIND BY COLLECT COUNT DECLARE DECLARE%: DO EACHTIME FCOLLECT FINALLY 
+                           FIND FIRST FOR FROM IN INSIDE ISTHERE JOIN LARGEST NEVER OLD ON ORIGINAL 
+                           REPEATUNTIL REPEATWHILE SMALLEST SUCHTHAT SUM THEREIS THRU TO UNLESS UNTIL
+                           WHEN WHERE WHILE always as bind by collect count declare declare%: do 
+                           eachtime fcollect finally find first for from in inside isthere join 
+                           largest never old on original repeatuntil repeatwhile smallest suchthat 
+                           sum thereis thru to unless until when where while)
 
-(ADDTOVAR CLISPFORWORDSPLST ALWAYS AS BIND BY COLLECT COUNT DECLARE DECLARE%: DO EACHTIME 
-                                      FCOLLECT FINALLY FIND FIRST FOR FROM IN INSIDE ISTHERE JOIN 
-                                      LARGEST NEVER OLD ON ORIGINAL REPEATUNTIL REPEATWHILE SMALLEST
-                                      SUCHTHAT SUM THEREIS THRU TO UNLESS UNTIL WHEN WHERE WHILE)
+(ADDTOVAR CLISPFORWORDSPLST ALWAYS AS BIND BY COLLECT COUNT DECLARE DECLARE%: DO EACHTIME FCOLLECT 
+                                  FINALLY FIND FIRST FOR FROM IN INSIDE ISTHERE JOIN LARGEST NEVER 
+                                  OLD ON ORIGINAL REPEATUNTIL REPEATWHILE SMALLEST SUCHTHAT SUM 
+                                  THEREIS THRU TO UNLESS UNTIL WHEN WHERE WHILE)
 
 (RPAQQ CLISPDUMMYFORVARS ($$TEM0 $$TEM1 $$TEM2 $$TEM3 $$TEM4 $$TEM5 $$TEM6))
 
@@ -1241,17 +1233,18 @@ with the terms of said license.
 (DEFINEQ
 
 (DUMPI.S.OPRS
-  [NLAMBDA X                                                 (* lmm "14-Aug-84 18:34")
-          
-          (* Dump I.S.OPRS definitions. -
-          redefined to dump out same case as given)
-
+  [NLAMBDA X                                                 (* lmm "14-Aug-84 18:34")
+                                                             (* Dump I.S.OPRS definitions.
+                                                             -
+                                                             redefined to dump out same case as 
+                                                             given)
     (for Y in X collect (OR (GETDEF.I.S.OPR Y)
-                            (PROG1 NIL (LISPXPRINT (LIST 'I.S.OPR Y 'not 'defined)
-                                              T T])
+                            (PROG1 NIL
+                                (LISPXPRINT (LIST 'I.S.OPR Y 'not 'defined)
+                                       T T))])
 
 (GETDEF.I.S.OPR
-  [LAMBDA (Y)                                                (* lmm "14-Aug-84 18:34")
+  [LAMBDA (Y)                                                (* lmm "14-Aug-84 18:34")
     (PROG (TEM BODY EVALFLG)
           (RETURN
            (CONS 'I.S.OPR
@@ -1279,9 +1272,9 @@ with the terms of said license.
                                                  [(CDR BODY)
                                                   (COND
                                                      (EVALFLG (SHOULDNT)))
-          
-          (* somehow there was an = in front of the i.s.type and not in front of the 
-          others. this shouldnt happen)
+
+         (* somehow there was an = in front of the i.s.type and not in front of the 
+         others. this shouldnt happen)
 
                                                   (LIST (KWOTE (CDR BODY]
                                                  (EVALFLG '(NIL T]
@@ -1298,11 +1291,11 @@ with the terms of said license.
 
 
 (ADDTOVAR DURATIONCLISPWORDS (TIMERUNITS timerUnits timerunits)
-                                 (USINGBOX usingBox usingbox)
-                                 (USINGTIMER usingTimer usingtimer)
-                                 (FORDURATION forDuration forduration DURING during)
-                                 (RESOURCENAME resourceName resourcename)
-                                 (UNTILDATE untilDate untildate))
+                             (USINGBOX usingBox usingbox)
+                             (USINGTIMER usingTimer usingtimer)
+                             (FORDURATION forDuration forduration DURING during)
+                             (RESOURCENAME resourceName resourcename)
+                             (UNTILDATE untilDate untildate))
 
 (PUTPROPS TIMERUNITS CLISPWORD (FORWORD . timerUnits))
 
@@ -1477,7 +1470,6 @@ with the terms of said license.
 
 (ADDTOVAR LAMA )
 )
-(PUTPROPS CLISP COPYRIGHT ("Venue & Xerox Corporation" T 1982 1983 1984 1985 1986 1990))
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (37614 40224 (DUMPI.S.OPRS 37624 . 38032) (GETDEF.I.S.OPR 38034 . 40222)))))
+  (FILEMAP (NIL (36881 39751 (DUMPI.S.OPRS 36891 . 37559) (GETDEF.I.S.OPR 37561 . 39749)))))
 STOP
diff --git a/sources/CLISP.DFASL b/sources/CLISP.DFASL
new file mode 100644
index 00000000..6948cd7a
Binary files /dev/null and b/sources/CLISP.DFASL differ
diff --git a/sources/CLISP.LCOM b/sources/CLISP.LCOM
deleted file mode 100644
index cb47bd38..00000000
--- a/sources/CLISP.LCOM
+++ /dev/null
@@ -1,3 +0,0 @@
-(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
(FILECREATED "25-Jan-98 09:32:34" ("compiled on " {DSK}<lispcore>sources>CLISP.;1) 
"30-Mar-95 20:33:04" "COMPILE-FILEd" in "Medley 14-Aug-95 ..." dated "14-Aug-95 15:27:48")
(FILECREATED "16-May-90 12:27:02" {DSK}<usr>local>lde>lispcore>sources>CLISP.;2 45083 changes to%: (
VARS CLISPCOMS) previous date%: "26-Nov-86 12:32:58" {DSK}<usr>local>lde>lispcore>sources>CLISP.;1)
(RPAQQ CLISPCOMS ((COMS (* ; "DWIM stuff") (INITVARS (NOFIXFNSLST0) (NOFIXVARSLST0) (NOSPELLFLG) (
LPARKEY 9) (RPARKEY 0) (WTFIXCHCONLST (QUOTE (NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL 
NIL NIL NIL NIL NIL NIL))) (WTFIXCHCONLST1 (QUOTE (NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL
 NIL NIL NIL NIL NIL NIL NIL)))) (USERMACROS FIX8 FIX9) (ADDVARS (DWIMUSERFORMS) (LAMBDASPLST LAMBDA 
NLAMBDA) (OKREEVALST AND OR PROGN SAVESETQ CAR CDR ADD1 SUB1 CONS LIST EQ EQUAL PRINT PRIN1 APPEND NEQ
 NOT NULL) (NOFIXFNSLST) (NOFIXVARSLST) (GLOBALVARS) (LOCALVARS) (SPECVARS) (NLAMA) (NLAML) (LAMA) (
LAMS)) (P (MOVD? (QUOTE NILL) (QUOTE FREEVARS))) (PROP FILEDEF BREAKDOWN CALLS CLISPRECORD 
SETUPHASHARRAY MAKEMATCH) (VARS (DWIMIFYFLG (QUOTE EVAL)) (COMPILEUSERFN (QUOTE COMPILEUSERFN)) (
CLISPTRANFLG (QUOTE CLISP% )) (DWIMESSGAG)) (INITVARS (DWIMCHECK#ARGSFLG T) (DWIMCHECKPROGLABELSFLG T)
 (%#CLISPARRAY 250) (RECORDHASHFLG T) (CLISPRETRANFLG)) (ADDVARS (DWIMEQUIVLST)) (USERMACROS DW !DW 
CLISP%: NOCLISP PPT)) (COMS (* CLISP props) (PROP CLISPTYPE %') (E (SETQQ CLISPCHARS (^ * / + - = _ %:
 %' ~ +- ~= < > @ ! � �)) (CLISPDEC (QUOTE (STANDARD MIXED)))) (VARS (CLISPFLG T) (CLISPCHARS (QUOTE (
^ * / + - = _ %: %' ~ +- ~= < > @ ! � �)))) (INITVARS (CLISPHELPFLG T) (TREATASCLISPFLG) (
CLISPINFIXSPLST) (CLISPCHARRAY (MAKEBITTABLE CLISPCHARS)) (LEFT.ARROWS.BITTABLE (MAKEBITTABLE (QUOTE (
_ �)))) (LEFT.ARROW (QUOTE _)) (CLISPISWORDSPLST) (CLISPLASTSUB (CONS)) (CHECKCARATOMFLG) (
CLISPARITHOPLST (QUOTE (+ - * / +- LT GT lt gt GEQ LEQ GE LE geq leq ge le))) (CLISPARITHCLASSLST (
QUOTE (INTEGER FIXED MIXED FLOATING))) (DWIMINMACROSFLG NIL)) (IFPROP (CLISPTYPE LISPFN UNARYOP 
CLISPCLASS CLISPCLASSDEF CLISPNEG CLISPBRACKET) � ^ * / + - = _ � %: %' ~ +- ~= < > @ !) (VARS 
DECLWORDS) (IFPROP (CLISPTYPE LISPFN UNARYOP CLISPINFIX CLISPCLASS CLISPCLASSDEF CLISPNEG BROADSCOPE) 
* (PROGN DECLWORDS)) (IFPROP (CLISPTYPE LISPFN UNARYOP CLISPINFIX CLISPCLASS CLISPCLASSDEF CLISPNEG 
BROADSCOPE) LT lt GT gt LE le GE ge LEQ leq GEQ geq EQ NEQ EQP EQUAL EQUALS NOT AND OR and or NOR nor 
MEMBER SETQ IPLUS IMINUS IDIFFERENCE ITIMES IQUOTIENT ILESSP IGREATERP FPLUS FMINUS FDIFFERENCE FTIMES
 FQUOTIENT FGTP PLUS MINUS DIFFERENCE TIMES QUOTIENT LESSP GREATERP EXPT -> =>) (PROP SETFN ELT SETA) 
(OPTIMIZERS CLISP% )) (PROP CLISPWORD AND OR and or ! !! CLISP clisp MATCH match) (COMS (* IF) (VARS 
CLISPIFWORDSPLST) (INITVARS (CLISPIFTRANFLG T)) (PROP CLISPWORD IF THEN ELSE ELSEIF if then else 
elseif)) (COMS (* I.S.OPR) (VARS (CLISPI.S.GAG)) (PROP CLISPWORD * INITISOPRS) (IFPROP I.S.OPR * (
PROGN INITISOPRS)) (ADDVARS * (LIST (CONS (QUOTE I.S.OPRLST) INITISOPRS) (CONS (QUOTE 
CLISPFORWORDSPLST) (SUBSET INITISOPRS (QUOTE U-CASEP))))) (VARS (CLISPDUMMYFORVARS (QUOTE ($$TEM0 
$$TEM1 $$TEM2 $$TEM3 $$TEM4 $$TEM5 $$TEM6)))) (ADDVARS * (LIST (CONS (QUOTE SYSLOCALVARS) 
CLISPDUMMYFORVARS) (CONS (QUOTE INVISIBLEVARS) CLISPDUMMYFORVARS))) (ADDVARS (SYSLOCALVARS $$VAL $$TEM
 $$LST1 $$LST2 $$LST3 $$LST4 $$LST5 $$LST6 $$END $$EXTREME) (INVISIBLEVARS $$VAL $$END $$TEM $$LST1 
$$LST2 $$LST3 $$LST4 $$LST5 $$LST6 $$EXTREME)) (FILEPKGCOMS I.S.OPRS) (FNS DUMPI.S.OPRS GETDEF.I.S.OPR
)) (COMS (* forDuration) (ADDVARS (DURATIONCLISPWORDS (TIMERUNITS timerUnits timerunits) (USINGBOX 
usingBox usingbox) (USINGTIMER usingTimer usingtimer) (FORDURATION forDuration forduration DURING 
during) (RESOURCENAME resourceName resourcename) (UNTILDATE untilDate untildate))) (IFPROP (CLISPWORD 
\DURATIONTRAN) * (APPLY (QUOTE APPEND) DURATIONCLISPWORDS)) (RESOURCES \ForDurationOfBox)) (COMS (* ;;
 
"Currently there are four possible entries for the INFO property: EVAL, BINDS, LABELS, PROGN, or a list containg any or all of these."
) (* ;; 
"EVAL is used to indicate that an nlambda evaluates its arguments.  EVAL affects DWIMIFY and CLISPIFY: neither will touch an nlambda that does not have this property."
) (* ;; 
"BINDS tells clispify and dwimify that CADR of the form is a list of variables being bound, a la prog."
) (* ;; 
"PROGN says that only the last top level expression is being used for value. This affects the way OR's and AND's are clispified, for example."
) (* ;; 
"Finally, LABELS indicates that top level atoms in this expression are not being evaluated. This tells clispify not to create atoms out of lists at the top level.  LABELS also implies that none of the top level expressions are being used for value."
) (* ;; 
"For example, FOR has info property just BINDS, (EVAL is unnecssary since FOR is not a function and its dwimifying and clispifying affected by its clispword property), whereas PROG has (BINDS EVAL LABELS), and LAMBDA has (EVAL BINDS PROGN)"
) (PROP INFO PROG PROG* RESETVARS RESETBUFS RESETLST ADV-PROG ADV-SETQ AND ARG COND ERSETQ NLSETQ OR 
PROG1 PROG2 PROGN RESETFORM RESETSAVE RESETVAR RPAQ RPTQ FRPTQ SAVESETQ SETN SETQ UNDONLSETQ XNLSETQ 
SETARG LET LET* RETURN)) (PROP FILETYPE CLISP) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY 
COMPILERVARS (ADDVARS (NLAMA DUMPI.S.OPRS) (NLAML) (LAMA)))))
(RPAQ? NOFIXFNSLST0)
(RPAQ? NOFIXVARSLST0)
(RPAQ? NOSPELLFLG)
(RPAQ? LPARKEY 9)
(RPAQ? RPARKEY 0)
(RPAQ? WTFIXCHCONLST (QUOTE (NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL 
NIL NIL)))
(RPAQ? WTFIXCHCONLST1 (QUOTE (NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL 
NIL NIL)))
(ADDTOVAR EDITMACROS (FIX9 (X N) (BIND (E (SETQ %#1 (EDITFPAT (QUOTE X))) T) (IF (NOT (ATOM (%##))) (1
)) (COMS (SPLIT89 RPARKEY N)) (I F RPARKEY T) (E (SETQ %#2 (ADD1 (LENGTH (CAR L)))) T) !0 MARK (LPQ (
IF (OR (NULL %#1) (NOT (EDIT4E %#1 (%## 1))))) UP (E (SETQ %#3 (LENGTH (CAR L))) T) (I RI 1 (MINUS %#2
)) (E (SETQ %#2 %#3) T) 1 !0) __ (DELETE NX))) (FIX9 NIL (FIX9)) (FIX8 (X N) (BIND (E (SETQ %#1 (
EDITFPAT (QUOTE X))) T) (IF (LISTP (%##)) (1)) (COMS (SPLIT89 LPARKEY N)) (I F LPARKEY T) (1) (LI 1) (
IF (TAILP (CAR L) (CADR L)) (!0) NIL) (LPQ (IF (OR (NULL %#1) (NOT (EDIT4E %#1 (%## 1))))) UP (RO 1) 
!0))) (FIX8 NIL (FIX8)))
(ADDTOVAR DWIMUSERFORMS)
(ADDTOVAR LAMBDASPLST LAMBDA NLAMBDA)
(ADDTOVAR OKREEVALST AND OR PROGN SAVESETQ CAR CDR ADD1 SUB1 CONS LIST EQ EQUAL PRINT PRIN1 APPEND NEQ
 NOT NULL)
(ADDTOVAR NOFIXFNSLST)
(ADDTOVAR NOFIXVARSLST)
(ADDTOVAR GLOBALVARS)
(ADDTOVAR LOCALVARS)
(ADDTOVAR SPECVARS)
(ADDTOVAR NLAMA)
(ADDTOVAR NLAML)
(ADDTOVAR LAMA)
(ADDTOVAR LAMS)
(MOVD? (QUOTE NILL) (QUOTE FREEVARS))
(PUTPROPS BREAKDOWN FILEDEF BRKDWN)
(PUTPROPS CALLS FILEDEF MSANALYZE)
(PUTPROPS CLISPRECORD FILEDEF RECORD)
(PUTPROPS SETUPHASHARRAY FILEDEF (RECORD SETUPHASHARRAY))
(PUTPROPS MAKEMATCH FILEDEF MATCH)
(RPAQQ DWIMIFYFLG EVAL)
(RPAQQ COMPILEUSERFN COMPILEUSERFN)
(RPAQQ CLISPTRANFLG CLISP% )
(RPAQQ DWIMESSGAG NIL)
(RPAQ? DWIMCHECK#ARGSFLG T)
(RPAQ? DWIMCHECKPROGLABELSFLG T)
(RPAQ? %#CLISPARRAY 250)
(RPAQ? RECORDHASHFLG T)
(RPAQ? CLISPRETRANFLG)
(ADDTOVAR DWIMEQUIVLST)
(ADDTOVAR EDITMACROS (DW NIL (BIND (E (PROGN (SETQ %#1 (%##)) (AND (CDR L) (%## !0 (E (SETQ %#2 L) T))
) (AND (SETQ %#3 (DWIMIFY %#1 T (OR %#2 (QUOTE (NIL))))) EDITCHANGES (RPLACA (CDR EDITCHANGES) T))) T)
 (IF (NLISTP %#1) ((I %: %#3) (IF (LISTP %#3) (1) NIL)) NIL))) (PPT NIL (RESETVAR PRETTYTRANFLG T PP))
 (!DW NIL (RESETVAR CLISPRETRANFLG T DW)) (NOCLISP NIL (NOCLISP TTY%:)) (NOCLISP COMS (RESETVAR 
CLISPTRANFLG NIL . COMS)) (CLISP%: NIL (BIND (E (COND ((SETQ %#1 (AND CLISPARRAY (GETHASH (%##) 
CLISPARRAY))) (SETQQ COM CLISP%:) (EDITE %#1)) (T (PRIN1 (QUOTE "not translated.
") T))) T))))
(ADDTOVAR EDITCOMSA PPT DW !DW CLISP%:)
(PUTPROPS %' CLISPTYPE 15)
(RPAQQ CLISPFLG T)
(RPAQQ CLISPCHARS (^ * / + - = _ %: %' ~ +- ~= < > @ ! � �))
(RPAQ? CLISPHELPFLG T)
(RPAQ? TREATASCLISPFLG)
(RPAQ? CLISPINFIXSPLST)
(RPAQ? CLISPCHARRAY (MAKEBITTABLE CLISPCHARS))
(RPAQ? LEFT.ARROWS.BITTABLE (MAKEBITTABLE (QUOTE (_ �))))
(RPAQ? LEFT.ARROW (QUOTE _))
(RPAQ? CLISPISWORDSPLST)
(RPAQ? CLISPLASTSUB (CONS))
(RPAQ? CHECKCARATOMFLG)
(RPAQ? CLISPARITHOPLST (QUOTE (+ - * / +- LT GT lt gt GEQ LEQ GE LE geq leq ge le)))
(RPAQ? CLISPARITHCLASSLST (QUOTE (INTEGER FIXED MIXED FLOATING)))
(RPAQ? DWIMINMACROSFLG NIL)
(PUTPROPS � CLISPTYPE 6)
(PUTPROPS ^ CLISPTYPE 6)
(PUTPROPS * CLISPTYPE 4)
(PUTPROPS / CLISPTYPE 4)
(PUTPROPS + CLISPTYPE 2)
(PUTPROPS - CLISPTYPE 7)
(PUTPROPS = CLISPTYPE -20)
(PUTPROPS _ CLISPTYPE (8 . -12))
(PUTPROPS � CLISPTYPE (8 . -12))
(PUTPROPS %: CLISPTYPE (14 . 13))
(PUTPROPS %' CLISPTYPE 15)
(PUTPROPS ~ CLISPTYPE 7)
(PUTPROPS +- CLISPTYPE 2)
(PUTPROPS < CLISPTYPE BRACKET)
(PUTPROPS > CLISPTYPE BRACKET)
(PUTPROPS � LISPFN EXPT)
(PUTPROPS ^ LISPFN EXPT)
(PUTPROPS * LISPFN TIMES)
(PUTPROPS / LISPFN QUOTIENT)
(PUTPROPS + LISPFN PLUS)
(PUTPROPS - LISPFN MINUS)
(PUTPROPS = LISPFN EQ)
(PUTPROPS _ LISPFN SETQ)
(PUTPROPS � LISPFN SETQ)
(PUTPROPS %' LISPFN QUOTE)
(PUTPROPS ~ LISPFN NOT)
(PUTPROPS +- LISPFN DIFFERENCE)
(PUTPROPS - UNARYOP T)
(PUTPROPS %' UNARYOP T)
(PUTPROPS ~ UNARYOP T)
(PUTPROPS < UNARYOP T)
(PUTPROPS > UNARYOP T)
(PUTPROPS * CLISPCLASS *)
(PUTPROPS / CLISPCLASS /)
(PUTPROPS + CLISPCLASS +)
(PUTPROPS - CLISPCLASS -)
(PUTPROPS +- CLISPCLASS +-)
(PUTPROPS * CLISPCLASSDEF (ARITH ITIMES FTIMES TIMES))
(PUTPROPS / CLISPCLASSDEF (ARITH IQUOTIENT FQUOTIENT QUOTIENT))
(PUTPROPS + CLISPCLASSDEF (ARITH IPLUS FPLUS PLUS))
(PUTPROPS - CLISPCLASSDEF (ARITH IMINUS FMINUS MINUS))
(PUTPROPS +- CLISPCLASSDEF (ARITH IDIFFERENCE FDIFFERENCE DIFFERENCE))
(PUTPROPS = CLISPNEG ~=)
(PUTPROPS < CLISPBRACKET (< > SEPARATOR ! DWIMIFY CLISPANGLEBRACKETS CLISPIFY SHRIEKIFY))
(PUTPROPS > CLISPBRACKET (< > SEPARATOR ! DWIMIFY CLISPANGLEBRACKETS CLISPIFY SHRIEKIFY))
(RPAQQ DECLWORDS (FLOATING FAST FFETCHFIELD FETCHFIELD REPLACEFIELD FREPLACEFIELD /REPLACEFIELD 
/LISTPUT /LISTPUT1 /MAPCON /MAPCONC /NCONC /NCONC1 /PUT /PUTASSOC /PUTHASH /PUTPROP /RPLACA /RPLACD 
/RPLNODE /RPLNODE2 /SETA ASSOC CLISPIFY FASSOC FIXED FLAST FMEMB FNTH FRPLACA FRPLACD FRPLNODE 
FRPLNODE2 INTEGER LAST LISTPUT LISTPUT1 MAPCON MAPCONC MEMB MIXED NCONC NCONC1 NTH PUT PUTASSOC 
PUTHASH PUTPROP RPLACA RPLACD RPLNODE RPLNODE2 SETA STANDARD UNDOABLE))
(PUTPROPS FMEMB CLISPTYPE -20)
(PUTPROPS MEMB CLISPTYPE -20)
(PUTPROPS FETCHFIELD LISPFN FETCHFIELD)
(PUTPROPS REPLACEFIELD LISPFN REPLACEFIELD)
(PUTPROPS FREPLACEFIELD LISPFN FREPLACEFIELD)
(PUTPROPS ASSOC LISPFN ASSOC)
(PUTPROPS LAST LISPFN LAST)
(PUTPROPS LISTPUT LISPFN LISTPUT)
(PUTPROPS LISTPUT1 LISPFN LISTPUT1)
(PUTPROPS MAPCON LISPFN MAPCON)
(PUTPROPS MAPCONC LISPFN MAPCONC)
(PUTPROPS MEMB LISPFN MEMB)
(PUTPROPS NCONC LISPFN NCONC)
(PUTPROPS NCONC1 LISPFN NCONC1)
(PUTPROPS NTH LISPFN NTH)
(PUTPROPS PUT LISPFN PUT)
(PUTPROPS PUTASSOC LISPFN PUTASSOC)
(PUTPROPS PUTHASH LISPFN PUTHASH)
(PUTPROPS PUTPROP LISPFN PUTPROP)
(PUTPROPS RPLACA LISPFN RPLACA)
(PUTPROPS RPLACD LISPFN RPLACD)
(PUTPROPS RPLNODE LISPFN RPLNODE)
(PUTPROPS RPLNODE2 LISPFN RPLNODE2)
(PUTPROPS SETA LISPFN SETA)
(PUTPROPS FLOATING CLISPCLASS (ARITH . 2))
(PUTPROPS FAST CLISPCLASS (ACCESS . 3))
(PUTPROPS FFETCHFIELD CLISPCLASS FETCHFIELD)
(PUTPROPS FETCHFIELD CLISPCLASS FETCHFIELD)
(PUTPROPS REPLACEFIELD CLISPCLASS REPLACEFIELD)
(PUTPROPS FREPLACEFIELD CLISPCLASS REPLACEFIELD)
(PUTPROPS /REPLACEFIELD CLISPCLASS REPLACEFIELD)
(PUTPROPS /LISTPUT CLISPCLASS LISTPUT)
(PUTPROPS /MAPCON CLISPCLASS MAPCON)
(PUTPROPS /MAPCONC CLISPCLASS MAPCONC)
(PUTPROPS /NCONC CLISPCLASS NCONC)
(PUTPROPS /NCONC1 CLISPCLASS NCONC1)
(PUTPROPS /PUT CLISPCLASS PUT)
(PUTPROPS /PUTASSOC CLISPCLASS PUTASSOC)
(PUTPROPS /PUTHASH CLISPCLASS PUTHASH)
(PUTPROPS /PUTPROP CLISPCLASS PUTPROP)
(PUTPROPS /RPLACA CLISPCLASS RPLACA)
(PUTPROPS /RPLACD CLISPCLASS RPLACD)
(PUTPROPS /RPLNODE CLISPCLASS RPLNODE)
(PUTPROPS /RPLNODE2 CLISPCLASS RPLNODE2)
(PUTPROPS /SETA CLISPCLASS SETA)
(PUTPROPS ASSOC CLISPCLASS ASSOC)
(PUTPROPS FASSOC CLISPCLASS ASSOC)
(PUTPROPS FIXED CLISPCLASS (ARITH . 1))
(PUTPROPS FLAST CLISPCLASS LAST)
(PUTPROPS FMEMB CLISPCLASS MEMB)
(PUTPROPS FNTH CLISPCLASS NTH)
(PUTPROPS FRPLACA CLISPCLASS RPLACA)
(PUTPROPS FRPLACD CLISPCLASS RPLACD)
(PUTPROPS FRPLNODE CLISPCLASS RPLNODE)
(PUTPROPS FRPLNODE2 CLISPCLASS RPLNODE2)
(PUTPROPS INTEGER CLISPCLASS (ARITH . 1))
(PUTPROPS LAST CLISPCLASS LAST)
(PUTPROPS LISTPUT CLISPCLASS LISTPUT)
(PUTPROPS LISTPUT1 CLISPCLASS LISTPUT1)
(PUTPROPS MAPCON CLISPCLASS MAPCON)
(PUTPROPS MAPCONC CLISPCLASS MAPCONC)
(PUTPROPS MEMB CLISPCLASS MEMB)
(PUTPROPS MIXED CLISPCLASS (ARITH . 3))
(PUTPROPS NCONC CLISPCLASS NCONC)
(PUTPROPS NCONC1 CLISPCLASS NCONC1)
(PUTPROPS NTH CLISPCLASS NTH)
(PUTPROPS PUT CLISPCLASS PUT)
(PUTPROPS PUTASSOC CLISPCLASS PUTASSOC)
(PUTPROPS PUTHASH CLISPCLASS PUTHASH)
(PUTPROPS PUTPROP CLISPCLASS PUTPROP)
(PUTPROPS RPLACA CLISPCLASS RPLACA)
(PUTPROPS RPLACD CLISPCLASS RPLACD)
(PUTPROPS RPLNODE CLISPCLASS RPLNODE)
(PUTPROPS RPLNODE2 CLISPCLASS RPLNODE2)
(PUTPROPS SETA CLISPCLASS SETA)
(PUTPROPS STANDARD CLISPCLASS (ACCESS . 1))
(PUTPROPS UNDOABLE CLISPCLASS (ACCESS . 2))
(PUTPROPS FETCHFIELD CLISPCLASSDEF (ACCESS FETCHFIELD NIL FFETCHFIELD))
(PUTPROPS REPLACEFIELD CLISPCLASSDEF (ACCESS REPLACEFIELD /REPLACEFIELD FREPLACEFIELD))
(PUTPROPS ASSOC CLISPCLASSDEF (ACCESS ASSOC NIL FASSOC))
(PUTPROPS LAST CLISPCLASSDEF (ACCESS LAST NIL FLAST))
(PUTPROPS LISTPUT CLISPCLASSDEF (ACCESS LISTPUT /LISTPUT))
(PUTPROPS LISTPUT1 CLISPCLASSDEF (ACCESS LISTPUT1 /LISTPUT1))
(PUTPROPS MAPCON CLISPCLASSDEF (ACCESS MAPCON /MAPCON))
(PUTPROPS MAPCONC CLISPCLASSDEF (ACCESS MAPCONC /MAPCONC))
(PUTPROPS MEMB CLISPCLASSDEF (ACCESS MEMB NIL FMEMB))
(PUTPROPS NCONC CLISPCLASSDEF (ACCESS NCONC /NCONC))
(PUTPROPS NCONC1 CLISPCLASSDEF (ACCESS NCONC1 /NCONC1))
(PUTPROPS NTH CLISPCLASSDEF (ACCESS NTH NIL FNTH))
(PUTPROPS PUT CLISPCLASSDEF (ACCESS PUT /PUT))
(PUTPROPS PUTASSOC CLISPCLASSDEF (ACCESS PUTASSOC /PUTASSOC))
(PUTPROPS PUTHASH CLISPCLASSDEF (ACCESS PUTHASH /PUTHASH))
(PUTPROPS PUTPROP CLISPCLASSDEF (ACCESS PUTPROP /PUTPROP))
(PUTPROPS RPLACA CLISPCLASSDEF (ACCESS RPLACA /RPLACA FRPLACA))
(PUTPROPS RPLACD CLISPCLASSDEF (ACCESS RPLACD /RPLACD FRPLACD))
(PUTPROPS RPLNODE CLISPCLASSDEF (ACCESS RPLNODE /RPLNODE FRPLNODE))
(PUTPROPS RPLNODE2 CLISPCLASSDEF (ACCESS RPLNODE2 /RPLNODE2 FRPLNODE2))
(PUTPROPS SETA CLISPCLASSDEF (ACCESS SETA /SETA))
(PUTPROPS FMEMB CLISPNEG ~FMEMB)
(PUTPROPS MEMB CLISPNEG ~MEMB)
(PUTPROPS FMEMB BROADSCOPE T)
(PUTPROPS MEMB BROADSCOPE T)
(PUTPROPS LT CLISPTYPE -20)
(PUTPROPS lt CLISPTYPE -20)
(PUTPROPS GT CLISPTYPE -20)
(PUTPROPS gt CLISPTYPE -20)
(PUTPROPS LE CLISPTYPE -20)
(PUTPROPS le CLISPTYPE -20)
(PUTPROPS GE CLISPTYPE -20)
(PUTPROPS ge CLISPTYPE -20)
(PUTPROPS LEQ CLISPTYPE -20)
(PUTPROPS leq CLISPTYPE -20)
(PUTPROPS GEQ CLISPTYPE -20)
(PUTPROPS geq CLISPTYPE -20)
(PUTPROPS EQ CLISPTYPE -20)
(PUTPROPS NEQ CLISPTYPE -20)
(PUTPROPS EQP CLISPTYPE -20)
(PUTPROPS EQUAL CLISPTYPE -20)
(PUTPROPS EQUALS CLISPTYPE -20)
(PUTPROPS AND CLISPTYPE -25)
(PUTPROPS OR CLISPTYPE -26)
(PUTPROPS and CLISPTYPE -25)
(PUTPROPS or CLISPTYPE -26)
(PUTPROPS NOR CLISPTYPE -25)
(PUTPROPS nor CLISPTYPE -25)
(PUTPROPS MEMBER CLISPTYPE -20)
(PUTPROPS ILESSP CLISPTYPE -20)
(PUTPROPS IGREATERP CLISPTYPE -20)
(PUTPROPS FGTP CLISPTYPE -20)
(PUTPROPS MINUS CLISPTYPE 8)
(PUTPROPS LESSP CLISPTYPE -20)
(PUTPROPS GREATERP CLISPTYPE -20)
(PUTPROPS -> CLISPTYPE 7)
(PUTPROPS => CLISPTYPE 7)
(PUTPROPS LT LISPFN LESSP)
(PUTPROPS lt LISPFN LESSP)
(PUTPROPS GT LISPFN GREATERP)
(PUTPROPS gt LISPFN GREATERP)
(PUTPROPS LE LISPFN LEQ)
(PUTPROPS le LISPFN LEQ)
(PUTPROPS GE LISPFN GEQ)
(PUTPROPS ge LISPFN GEQ)
(PUTPROPS LEQ LISPFN LEQ)
(PUTPROPS leq LISPFN LEQ)
(PUTPROPS GEQ LISPFN GEQ)
(PUTPROPS geq LISPFN GEQ)
(PUTPROPS EQUALS LISPFN EQUAL)
(PUTPROPS AND LISPFN AND)
(PUTPROPS OR LISPFN OR)
(PUTPROPS and LISPFN AND)
(PUTPROPS or LISPFN OR)
(PUTPROPS NOR LISPFN AND)
(PUTPROPS nor LISPFN AND)
(PUTPROPS NOT UNARYOP T)
(PUTPROPS MINUS UNARYOP T)
(PUTPROPS LEQ CLISPINFIX le)
(PUTPROPS GEQ CLISPINFIX ge)
(PUTPROPS EQ CLISPINFIX =)
(PUTPROPS NOT CLISPINFIX ~)
(PUTPROPS AND CLISPINFIX and)
(PUTPROPS OR CLISPINFIX or)
(PUTPROPS SETQ CLISPINFIX _)
(PUTPROPS IPLUS CLISPINFIX +)
(PUTPROPS IMINUS CLISPINFIX -)
(PUTPROPS IDIFFERENCE CLISPINFIX +-)
(PUTPROPS ITIMES CLISPINFIX *)
(PUTPROPS IQUOTIENT CLISPINFIX /)
(PUTPROPS ILESSP CLISPINFIX lt)
(PUTPROPS IGREATERP CLISPINFIX gt)
(PUTPROPS PLUS CLISPINFIX +)
(PUTPROPS MINUS CLISPINFIX -)
(PUTPROPS DIFFERENCE CLISPINFIX +-)
(PUTPROPS TIMES CLISPINFIX *)
(PUTPROPS QUOTIENT CLISPINFIX /)
(PUTPROPS LESSP CLISPINFIX lt)
(PUTPROPS GREATERP CLISPINFIX gt)
(PUTPROPS EXPT CLISPINFIX ^)
(PUTPROPS LT CLISPCLASS LT)
(PUTPROPS lt CLISPCLASS LT)
(PUTPROPS GT CLISPCLASS GT)
(PUTPROPS gt CLISPCLASS GT)
(PUTPROPS LE CLISPCLASS LEQ)
(PUTPROPS le CLISPCLASS LEQ)
(PUTPROPS GE CLISPCLASS GEQ)
(PUTPROPS ge CLISPCLASS GEQ)
(PUTPROPS LEQ CLISPCLASS LEQ)
(PUTPROPS leq CLISPCLASS LEQ)
(PUTPROPS GEQ CLISPCLASS GEQ)
(PUTPROPS geq CLISPCLASS GEQ)
(PUTPROPS IPLUS CLISPCLASS +)
(PUTPROPS IMINUS CLISPCLASS -)
(PUTPROPS IDIFFERENCE CLISPCLASS +-)
(PUTPROPS ITIMES CLISPCLASS *)
(PUTPROPS IQUOTIENT CLISPCLASS /)
(PUTPROPS ILESSP CLISPCLASS LT)
(PUTPROPS IGREATERP CLISPCLASS GT)
(PUTPROPS FPLUS CLISPCLASS +)
(PUTPROPS FMINUS CLISPCLASS -)
(PUTPROPS FDIFFERENCE CLISPCLASS +-)
(PUTPROPS FTIMES CLISPCLASS *)
(PUTPROPS FQUOTIENT CLISPCLASS /)
(PUTPROPS FGTP CLISPCLASS GT)
(PUTPROPS PLUS CLISPCLASS +)
(PUTPROPS MINUS CLISPCLASS -)
(PUTPROPS DIFFERENCE CLISPCLASS +-)
(PUTPROPS TIMES CLISPCLASS *)
(PUTPROPS QUOTIENT CLISPCLASS /)
(PUTPROPS LESSP CLISPCLASS LT)
(PUTPROPS GREATERP CLISPCLASS GT)
(PUTPROPS LT CLISPCLASSDEF (ARITH ILESSP LESSP LESSP))
(PUTPROPS GT CLISPCLASSDEF (ARITH IGREATERP FGTP GREATERP))
(PUTPROPS LE CLISPCLASSDEF (ARITH ILEQ LEQ LEQ))
(PUTPROPS GE CLISPCLASSDEF (ARITH IGEQ GEQ GEQ))
(PUTPROPS LEQ CLISPCLASSDEF (ARITH ILEQ LEQ LEQ))
(PUTPROPS GEQ CLISPCLASSDEF (ARITH IGEQ GEQ GEQ))
(PUTPROPS LT CLISPNEG GEQ)
(PUTPROPS GT CLISPNEG LEQ)
(PUTPROPS EQUALS CLISPNEG ~EQUAL)
(PUTPROPS MEMBER CLISPNEG ~MEMBER)
(PUTPROPS LT BROADSCOPE T)
(PUTPROPS lt BROADSCOPE T)
(PUTPROPS GT BROADSCOPE T)
(PUTPROPS gt BROADSCOPE T)
(PUTPROPS LE BROADSCOPE T)
(PUTPROPS le BROADSCOPE T)
(PUTPROPS GE BROADSCOPE T)
(PUTPROPS ge BROADSCOPE T)
(PUTPROPS LEQ BROADSCOPE T)
(PUTPROPS leq BROADSCOPE T)
(PUTPROPS GEQ BROADSCOPE T)
(PUTPROPS geq BROADSCOPE T)
(PUTPROPS EQ BROADSCOPE T)
(PUTPROPS NEQ BROADSCOPE T)
(PUTPROPS EQP BROADSCOPE T)
(PUTPROPS EQUAL BROADSCOPE T)
(PUTPROPS EQUALS BROADSCOPE T)
(PUTPROPS NOT BROADSCOPE T)
(PUTPROPS AND BROADSCOPE T)
(PUTPROPS OR BROADSCOPE T)
(PUTPROPS and BROADSCOPE T)
(PUTPROPS or BROADSCOPE T)
(PUTPROPS NOR BROADSCOPE T)
(PUTPROPS nor BROADSCOPE T)
(PUTPROPS MEMBER BROADSCOPE T)
(PUTPROPS ILESSP BROADSCOPE T)
(PUTPROPS IGREATERP BROADSCOPE T)
(PUTPROPS FGTP BROADSCOPE T)
(PUTPROPS LESSP BROADSCOPE T)
(PUTPROPS GREATERP BROADSCOPE T)
(PUTPROPS ELT SETFN SETA)
(PUTPROPS SETA SETFN (ELT))
optimize-CLISP%  :D8
(L (2 $$CTX 1 $$ENV 0 $$WHOLE)) @NIL
NIL
()
(PUTPROP (QUOTE CLISP% ) (QUOTE COMPILER:OPTIMIZER-LIST) (CL:ADJOIN (QUOTE optimize-CLISP% ) (GET (
QUOTE CLISP% ) (QUOTE COMPILER:OPTIMIZER-LIST))))
(PUTPROPS AND CLISPWORD T)
(PUTPROPS OR CLISPWORD T)
(PUTPROPS and CLISPWORD T)
(PUTPROPS or CLISPWORD T)
(PUTPROPS ! CLISPWORD T)
(PUTPROPS !! CLISPWORD T)
(PUTPROPS CLISP CLISPWORD (PREFIXFN . clisp))
(PUTPROPS clisp CLISPWORD (PREFIXFN . clisp))
(PUTPROPS MATCH CLISPWORD (MATCHWORD . match))
(PUTPROPS match CLISPWORD (MATCHWORD . match))
(RPAQQ CLISPIFWORDSPLST (THEN ELSE ELSEIF IF))
(RPAQ? CLISPIFTRANFLG T)
(PUTPROPS IF CLISPWORD (IFWORD . if))
(PUTPROPS THEN CLISPWORD (IFWORD . then))
(PUTPROPS ELSE CLISPWORD (IFWORD . else))
(PUTPROPS ELSEIF CLISPWORD (IFWORD . elseif))
(PUTPROPS if CLISPWORD (IFWORD . if))
(PUTPROPS then CLISPWORD (IFWORD . then))
(PUTPROPS else CLISPWORD (IFWORD . else))
(PUTPROPS elseif CLISPWORD (IFWORD . elseif))
(RPAQQ CLISPI.S.GAG NIL)
(RPAQQ INITISOPRS (ALWAYS AS BIND BY COLLECT COUNT DECLARE DECLARE%: DO EACHTIME FCOLLECT FINALLY FIND
 FIRST FOR FROM IN INSIDE ISTHERE JOIN LARGEST NEVER OLD ON ORIGINAL REPEATUNTIL REPEATWHILE SMALLEST 
SUCHTHAT SUM THEREIS THRU TO UNLESS UNTIL WHEN WHERE WHILE always as bind by collect count declare 
declare%: do eachtime fcollect finally find first for from in inside isthere join largest never old on
 original repeatuntil repeatwhile smallest suchthat sum thereis thru to unless until when where while)
)
(PUTPROPS ALWAYS CLISPWORD (FORWORD . always))
(PUTPROPS AS CLISPWORD (FORWORD . as))
(PUTPROPS BIND CLISPWORD (FORWORD . bind))
(PUTPROPS BY CLISPWORD (FORWORD . by))
(PUTPROPS COLLECT CLISPWORD (FORWORD . collect))
(PUTPROPS COUNT CLISPWORD (FORWORD . count))
(PUTPROPS DECLARE CLISPWORD (FORWORD . declare))
(PUTPROPS DECLARE%: CLISPWORD (FORWORD declare%: DECLARE))
(PUTPROPS DO CLISPWORD (FORWORD . do))
(PUTPROPS EACHTIME CLISPWORD (FORWORD . eachtime))
(PUTPROPS FCOLLECT CLISPWORD (FORWORD . fcollect))
(PUTPROPS FINALLY CLISPWORD (FORWORD . finally))
(PUTPROPS FIND CLISPWORD (FORWORD find FOR))
(PUTPROPS FIRST CLISPWORD (FORWORD . first))
(PUTPROPS FOR CLISPWORD (FORWORD . for))
(PUTPROPS FROM CLISPWORD (FORWORD . from))
(PUTPROPS IN CLISPWORD (FORWORD . in))
(PUTPROPS INSIDE CLISPWORD (FORWORD . inside))
(PUTPROPS ISTHERE CLISPWORD (FORWORD isthere THEREIS))
(PUTPROPS JOIN CLISPWORD (FORWORD . join))
(PUTPROPS LARGEST CLISPWORD (FORWORD . largest))
(PUTPROPS NEVER CLISPWORD (FORWORD . never))
(PUTPROPS OLD CLISPWORD (FORWORD . old))
(PUTPROPS ON CLISPWORD (FORWORD . on))
(PUTPROPS ORIGINAL CLISPWORD (FORWORD . original))
(PUTPROPS REPEATUNTIL CLISPWORD (FORWORD . repeatuntil))
(PUTPROPS REPEATWHILE CLISPWORD (FORWORD . repeatwhile))
(PUTPROPS SMALLEST CLISPWORD (FORWORD . smallest))
(PUTPROPS SUCHTHAT CLISPWORD (FORWORD suchthat THEREIS))
(PUTPROPS SUM CLISPWORD (FORWORD . sum))
(PUTPROPS THEREIS CLISPWORD (FORWORD . thereis))
(PUTPROPS THRU CLISPWORD (FORWORD thru TO))
(PUTPROPS TO CLISPWORD (FORWORD . to))
(PUTPROPS UNLESS CLISPWORD (FORWORD . unless))
(PUTPROPS UNTIL CLISPWORD (FORWORD . until))
(PUTPROPS WHEN CLISPWORD (FORWORD . when))
(PUTPROPS WHERE CLISPWORD (FORWORD where WHEN))
(PUTPROPS WHILE CLISPWORD (FORWORD . while))
(PUTPROPS always CLISPWORD (FORWORD . always))
(PUTPROPS as CLISPWORD (FORWORD . as))
(PUTPROPS bind CLISPWORD (FORWORD . bind))
(PUTPROPS by CLISPWORD (FORWORD . by))
(PUTPROPS collect CLISPWORD (FORWORD . collect))
(PUTPROPS count CLISPWORD (FORWORD . count))
(PUTPROPS declare CLISPWORD (FORWORD . declare))
(PUTPROPS declare%: CLISPWORD (FORWORD declare%: DECLARE))
(PUTPROPS do CLISPWORD (FORWORD . do))
(PUTPROPS eachtime CLISPWORD (FORWORD . eachtime))
(PUTPROPS fcollect CLISPWORD (FORWORD . fcollect))
(PUTPROPS finally CLISPWORD (FORWORD . finally))
(PUTPROPS find CLISPWORD (FORWORD find FOR))
(PUTPROPS first CLISPWORD (FORWORD . first))
(PUTPROPS for CLISPWORD (FORWORD . for))
(PUTPROPS from CLISPWORD (FORWORD . from))
(PUTPROPS in CLISPWORD (FORWORD . in))
(PUTPROPS inside CLISPWORD (FORWORD . inside))
(PUTPROPS isthere CLISPWORD (FORWORD isthere thereis))
(PUTPROPS join CLISPWORD (FORWORD . join))
(PUTPROPS largest CLISPWORD (FORWORD . largest))
(PUTPROPS never CLISPWORD (FORWORD . never))
(PUTPROPS old CLISPWORD (FORWORD . old))
(PUTPROPS on CLISPWORD (FORWORD . on))
(PUTPROPS original CLISPWORD (FORWORD . original))
(PUTPROPS repeatuntil CLISPWORD (FORWORD . repeatuntil))
(PUTPROPS repeatwhile CLISPWORD (FORWORD . repeatwhile))
(PUTPROPS smallest CLISPWORD (FORWORD . smallest))
(PUTPROPS suchthat CLISPWORD (FORWORD suchthat THEREIS))
(PUTPROPS sum CLISPWORD (FORWORD . sum))
(PUTPROPS thereis CLISPWORD (FORWORD . thereis))
(PUTPROPS thru CLISPWORD (FORWORD thru TO))
(PUTPROPS to CLISPWORD (FORWORD . to))
(PUTPROPS unless CLISPWORD (FORWORD . unless))
(PUTPROPS until CLISPWORD (FORWORD . until))
(PUTPROPS when CLISPWORD (FORWORD . when))
(PUTPROPS where CLISPWORD (FORWORD where WHEN))
(PUTPROPS while CLISPWORD (FORWORD . while))
(PUTPROPS always I.S.OPR ((COND ((NULL BODY) (SETQ $$VAL NIL) (GO $$OUT))) BIND (SETQ $$VAL T)))
(PUTPROPS collect I.S.OPR ((SETQ $$VAL (NCONC1 $$VAL BODY))))
(PUTPROPS count I.S.OPR ((AND BODY (SETQ $$VAL (ADD1 $$VAL))) BIND ($$VAL _ 0)))
(PUTPROPS do I.S.OPR (BODY))
(PUTPROPS fcollect I.S.OPR ((= SUBPAIR (QUOTE (VAR1 VAR2)) (LIST (GETDUMMYVAR T) (GETDUMMYVAR T)) (
QUOTE (PROGN (SETQ VAR1 BODY) (COND (VAR2 (FRPLACD VAR2 (SETQ VAR2 (LIST VAR1)))) (T (SETQ $$VAL (SETQ
 VAR2 (LIST VAR1))))))))))
(PUTPROPS inside I.S.OPR (NIL = SUBST (GETDUMMYVAR) (QUOTE VAR) (QUOTE (bind (VAR _ BODY) eachtime (
COND ((NULL VAR) (GO $$OUT)) ((NLISTP VAR) (SETQ I.V. VAR) (SETQ VAR NIL)) (T (SETQ I.V. (CAR VAR)) (
SETQ VAR (CDR VAR))))))))
(PUTPROPS join I.S.OPR ((SETQ $$VAL (NCONC $$VAL BODY))))
(PUTPROPS largest I.S.OPR (NIL = SUBST (GETDUMMYVAR) (QUOTE $$TEMP) (QUOTE (BIND $$EXTREME $$TEMP DO (
SETQ $$TEMP BODY) (COND ((OR (NULL $$EXTREME) (GREATERP $$TEMP $$EXTREME)) (SETQ $$EXTREME $$TEMP) (
SETQ $$VAL I.V.)))))))
(PUTPROPS never I.S.OPR ((COND (BODY (SETQ $$VAL NIL) (GO $$OUT))) BIND ($$VAL _ T)))
(PUTPROPS old I.S.OPR MODIFIER)
(PUTPROPS smallest I.S.OPR (NIL = SUBST (GETDUMMYVAR) (QUOTE $$TEMP) (QUOTE (BIND $$EXTREME $$TEMP DO 
(SETQ $$TEMP BODY) (COND ((OR (NULL $$EXTREME) (LESSP $$TEMP $$EXTREME)) (SETQ $$EXTREME $$TEMP) (SETQ
 $$VAL I.V.)))))))
(PUTPROPS sum I.S.OPR ((SETQ $$VAL (PLUS $$VAL BODY)) BIND ($$VAL _ 0)))
(PUTPROPS thereis I.S.OPR ((COND (BODY (SETQ $$VAL (OR I.V. T)) (GO $$OUT)))))
(ADDTOVAR I.S.OPRLST ALWAYS AS BIND BY COLLECT COUNT DECLARE DECLARE%: DO EACHTIME FCOLLECT FINALLY 
FIND FIRST FOR FROM IN INSIDE ISTHERE JOIN LARGEST NEVER OLD ON ORIGINAL REPEATUNTIL REPEATWHILE 
SMALLEST SUCHTHAT SUM THEREIS THRU TO UNLESS UNTIL WHEN WHERE WHILE always as bind by collect count 
declare declare%: do eachtime fcollect finally find first for from in inside isthere join largest 
never old on original repeatuntil repeatwhile smallest suchthat sum thereis thru to unless until when 
where while)
(ADDTOVAR CLISPFORWORDSPLST ALWAYS AS BIND BY COLLECT COUNT DECLARE DECLARE%: DO EACHTIME FCOLLECT 
FINALLY FIND FIRST FOR FROM IN INSIDE ISTHERE JOIN LARGEST NEVER OLD ON ORIGINAL REPEATUNTIL 
REPEATWHILE SMALLEST SUCHTHAT SUM THEREIS THRU TO UNLESS UNTIL WHEN WHERE WHILE)
(RPAQQ CLISPDUMMYFORVARS ($$TEM0 $$TEM1 $$TEM2 $$TEM3 $$TEM4 $$TEM5 $$TEM6))
(ADDTOVAR SYSLOCALVARS $$TEM0 $$TEM1 $$TEM2 $$TEM3 $$TEM4 $$TEM5 $$TEM6)
(ADDTOVAR INVISIBLEVARS $$TEM0 $$TEM1 $$TEM2 $$TEM3 $$TEM4 $$TEM5 $$TEM6)
(ADDTOVAR SYSLOCALVARS $$VAL $$TEM $$LST1 $$LST2 $$LST3 $$LST4 $$LST5 $$LST6 $$END $$EXTREME)
(ADDTOVAR INVISIBLEVARS $$VAL $$END $$TEM $$LST1 $$LST2 $$LST3 $$LST4 $$LST5 $$LST6 $$EXTREME)
(PUTDEF (QUOTE I.S.OPRS) (QUOTE FILEPKGCOMS) (QUOTE ((COM MACRO (X (DECLARE%: EVAL@COMPILE (P * (
DUMPI.S.OPRS . X)))) CONTENTS NILL) (TYPE DESCRIPTION "i.s. operators" GETDEF GETDEF.I.S.OPR 
WHENCHANGED (CLEARCLISPARRAY)))))
DUMPI.S.OPRS :D8
(P 3 Y I 0 X) A@@�7d[	d�gKgghid��I�HhZ�H&���J(44 LISPXPRINT 13 GETDEF.I.S.OPR)
(32 defined 27 not 21 I.S.OPR)
()
GETDEF.I.S.OPR :D8
(P 2 EVALFLG P 1 BODY P 0 TEM I 0 Y) 4pg@d�ddi���@3�g@h@g
-Xd���g����Hd�g
-Y�<H����H����H^d����di��3����gNh��d���dg�i�I�[d�di�3�gKhIdg�\d�di�3�gLhih�I�%J��I]d�di�3�gMhh�#J� o��Idi�3�
gIh�Ihd�(238 SHOULDNT 80 GETPROP 44 GETPROP)
(292 QUOTE 258 QUOTE 218 QUOTE 196 = 183 QUOTE 156 = 134 QUOTE 75 I.S.OPR 57 FORWORD 39 CLISPWORD 29 QUOTE 7 I.S.OPR)
( 274 (NIL T))
(ADDTOVAR DURATIONCLISPWORDS (TIMERUNITS timerUnits timerunits) (USINGBOX usingBox usingbox) (
USINGTIMER usingTimer usingtimer) (FORDURATION forDuration forduration DURING during) (RESOURCENAME 
resourceName resourcename) (UNTILDATE untilDate untildate))
(PUTPROPS TIMERUNITS CLISPWORD (FORWORD . timerUnits))
(PUTPROPS timerUnits CLISPWORD (FORWORD . timerUnits))
(PUTPROPS timerunits CLISPWORD (FORWORD . timerUnits))
(PUTPROPS USINGBOX CLISPWORD (FORWORD . usingBox))
(PUTPROPS usingBox CLISPWORD (FORWORD . usingBox))
(PUTPROPS usingbox CLISPWORD (FORWORD . usingBox))
(PUTPROPS USINGTIMER CLISPWORD (FORWORD . usingTimer))
(PUTPROPS usingTimer CLISPWORD (FORWORD . usingTimer))
(PUTPROPS usingtimer CLISPWORD (FORWORD . usingTimer))
(PUTPROPS FORDURATION CLISPWORD (FORWORD . forDuration))
(PUTPROPS forDuration CLISPWORD (FORWORD . forDuration))
(PUTPROPS forduration CLISPWORD (FORWORD . forDuration))
(PUTPROPS DURING CLISPWORD (FORWORD . during))
(PUTPROPS during CLISPWORD (FORWORD . during))
(PUTPROPS RESOURCENAME CLISPWORD (FORWORD . resourceName))
(PUTPROPS resourceName CLISPWORD (FORWORD . resourceName))
(PUTPROPS resourcename CLISPWORD (FORWORD . resourceName))
(PUTPROPS UNTILDATE CLISPWORD (FORWORD . untildate))
(PUTPROPS untilDate CLISPWORD (FORWORD . untilDate))
(PUTPROPS untildate CLISPWORD (FORWORD . untildate))
(PUTPROPS timerUnits \DURATIONTRAN T)
(PUTPROPS usingBox \DURATIONTRAN T)
(PUTPROPS usingTimer \DURATIONTRAN T)
(PUTPROPS forDuration \DURATIONTRAN T)
(PUTPROPS during \DURATIONTRAN T)
(PUTPROPS resourceName \DURATIONTRAN T)
(PUTPROPS untilDate \DURATIONTRAN T)
(PUTPROPS untildate \DURATIONTRAN T)
(PUTDEF (QUOTE \ForDurationOfBox) (QUOTE RESOURCES) (QUOTE (NEW (\TIMER.MAKETIMER))))
(PUTPROPS PROG INFO (EVAL BINDS LABELS))
(PUTPROPS PROG* INFO (EVAL BINDS LABELS))
(PUTPROPS RESETVARS INFO (EVAL BINDS LABELS))
(PUTPROPS RESETBUFS INFO EVAL)
(PUTPROPS RESETLST INFO (EVAL PROGN))
(PUTPROPS ADV-PROG INFO (EVAL BINDS LABELS))
(PUTPROPS ADV-SETQ INFO EVAL)
(PUTPROPS AND INFO EVAL)
(PUTPROPS ARG INFO EVAL)
(PUTPROPS COND INFO EVAL)
(PUTPROPS ERSETQ INFO EVAL)
(PUTPROPS NLSETQ INFO EVAL)
(PUTPROPS OR INFO EVAL)
(PUTPROPS PROG1 INFO EVAL)
(PUTPROPS PROG2 INFO EVAL)
(PUTPROPS PROGN INFO (EVAL PROGN))
(PUTPROPS RESETFORM INFO EVAL)
(PUTPROPS RESETSAVE INFO EVAL)
(PUTPROPS RESETVAR INFO EVAL)
(PUTPROPS RPAQ INFO EVAL)
(PUTPROPS RPTQ INFO EVAL)
(PUTPROPS FRPTQ INFO EVAL)
(PUTPROPS SAVESETQ INFO EVAL)
(PUTPROPS SETN INFO EVAL)
(PUTPROPS SETQ INFO EVAL)
(PUTPROPS UNDONLSETQ INFO EVAL)
(PUTPROPS XNLSETQ INFO EVAL)
(PUTPROPS SETARG INFO EVAL)
(PUTPROPS LET INFO (BINDS EVAL))
(PUTPROPS LET* INFO (BINDS EVAL))
(PUTPROPS RETURN INFO EVAL)
(PUTPROPS CLISP FILETYPE CL:COMPILE-FILE)
(PUTPROPS CLISP COPYRIGHT ("Venue & Xerox Corporation" T 1982 1983 1984 1985 1986 1990))
NIL
\ No newline at end of file
diff --git a/sources/CMLCOMPILE b/sources/CMLCOMPILE
index 9d3854ee..0471744e 100644
--- a/sources/CMLCOMPILE
+++ b/sources/CMLCOMPILE
@@ -1,18 +1,14 @@
-(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
+(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10)
 
-(FILECREATED "24-Sep-2023 14:11:25" {WMEDLEY}<sources>CMLCOMPILE.;2 22597  
+(FILECREATED "25-Feb-2026 23:03:38" {WMEDLEY}<sources>CMLCOMPILE.;4 25235  
 
       :EDIT-BY rmk
 
-      :CHANGES-TO (FNS COMPILE-IN-CORE)
+      :CHANGES-TO (FNS FAKE-COMPILE-FILE)
 
-      :PREVIOUS-DATE " 2-Jul-90 20:24:02" {WMEDLEY}<sources>CMLCOMPILE.;1)
+      :PREVIOUS-DATE "25-Feb-2026 19:50:29" {WMEDLEY}<sources>CMLCOMPILE.;3)
 
 
-(* ; "
-Copyright (c) 1985-1987, 1990 by Venue & Xerox Corporation.
-")
-
 (PRETTYCOMPRINT CMLCOMPILECOMS)
 
 (RPAQQ CMLCOMPILECOMS
@@ -46,8 +42,111 @@ Copyright (c) 1985-1987, 1990 by Venue & Xerox Corporation.
 (DEFINEQ
 
 (FAKE-COMPILE-FILE
-(CL:LAMBDA (FILENAME &KEY LAP REDEFINE OUTPUT-FILE (SAVE-EXPRS T) (COMPILER-OUTPUT T) (PROCESS-ENTIRE-FILE NIL PEFP)) (* ; "Edited 29-Jun-90 19:19 by nm") (LET (COMPILE.FILE.AFTER VALUE COMPILE.FILE.VALUE (NLAML NLAML) (NLAMA NLAMA) (LAMS LAMS) (LAMA LAMA) (DFNFLG NIL)) (DECLARE (CL:SPECIAL COMPILE.FILE.AFTER COMPILE.FILE.VALUE NLAML NLAMA LAMS LAMA DFNFLG)) (RESETLST (RESETSAVE NIL (LIST (QUOTE RESETUNDO)) (RESETUNDO)) (RESETSAVE COUTFILE COMPILER-OUTPUT) (RESETSAVE STRF REDEFINE) (RESETSAVE SVFLG (AND SAVE-EXPRS REDEFINE (QUOTE DEFER))) (RESETSAVE LAPFLG LAP) (LET ((*PACKAGE* *INTERLISP-PACKAGE*) (*READ-BASE* 10) (LOCALVARS SYSLOCALVARS) (SPECVARS T) STREAM LSTFIL ROOTNAME INTERLISP-FORMAT ENV FORM) (DECLARE (CL:SPECIAL *PACKAGE* *READ-BASE* LOCALVARS SPECVARS LSTFIL)) (RESETSAVE NIL (LIST (FUNCTION CLOSEF?) (SETQ STREAM (OPENSTREAM FILENAME (QUOTE INPUT))))) (CL:MULTIPLE-VALUE-SETQ (ENV FORM) (\PARSE-FILE-HEADER STREAM (QUOTE RETURN) T)) (SETQ INTERLISP-FORMAT (AND ENV (NEQ ENV *COMMON-LISP-READ-ENVIRONMENT*))) (if (NOT PEFP) then (SETQ PROCESS-ENTIRE-FILE INTERLISP-FORMAT)) (if LAP then (SETQ LSTFIL COUTFILE)) (SETQ FILENAME (FULLNAME STREAM)) (RESETSAVE NIL (LIST (FUNCTION COMPILE.FILE.RESET) (SETQ OUTPUT-FILE (OPENSTREAM (OR OUTPUT-FILE (PACKFILENAME.STRING (QUOTE VERSION) NIL (QUOTE EXTENSION) COMPILE.EXT (QUOTE BODY) FILENAME)) (QUOTE OUTPUT) (QUOTE NEW) (QUOTE ((TYPE BINARY))))) STREAM (ROOTFILENAME FILENAME))) (if OUTPUT-FILE then (RESETSAVE LCFIL OUTPUT-FILE) (PRINT-COMPILE-HEADER (LIST STREAM) (QUOTE ("COMPILE-FILEd")) ENV)) (WITH-READER-ENVIRONMENT ENV (PROG ((DEFERRED.EXPRESSIONS NIL) (*PRINT-ARRAY* T) (*PRINT-LEVEL* NIL) (*PRINT-LENGTH* NIL) (FIRSTFORMS NIL) (AFTERS NIL) (SCRATCH.LCOM (QUOTE {CORE}SCRATCH.LCOM)) DUMMYFILE TEMPVAL) (DECLARE (CL:SPECIAL DEFERRED.EXPRESSIONS *PRINT-ARRAY* *PRINT-LEVEL* *PRINT-LENGTH* FIRSTFORMS AFTERS DEFERS)) (* ; "Edited by TT (11-June-90 : for AR#11185) all contents of file are read, and each forms are compiled.(This reading method is for supporting %"FIRST%", %"NOTFIRST%" tag.)") (RESETSAVE NIL (LIST (FUNCTION CLOSEF?) (SETQ DUMMYFILE (OPENSTREAM SCRATCH.LCOM (QUOTE BOTH) (QUOTE NEW))))) LPDUMP (if (EQUAL (CAR FORM) (QUOTE RPAQQ)) then (* ; "This is the support method of %"COMPILERVARS%" (2-July-1990 TT)") (SETQ TEMPVAL (CADDR FORM)) (if (SETQ TEMPVAL (ASSOC (QUOTE DECLARE%:) TEMPVAL)) then (if (SETQ TEMPVAL (FMEMB (QUOTE COMPILERVARS) (FMEMB (QUOTE DOEVAL@COMPILE) TEMPVAL))) then (SETQ DFNFLG T) (if (SETQ TEMPVAL (FMEMB (QUOTE ADDVARS) (SETQ TEMPVAL (CADR TEMPVAL)))) then (CL:DOLIST (ARG (CDR TEMPVAL)) (APPLY (QUOTE ADDTOVAR) ARG)))))) (COMPILE-FILE-EXPRESSION FORM DUMMYFILE NIL PROCESS-ENTIRE-FILE) (SKIPSEPRCODES STREAM) (if (EOFP STREAM) then (CLOSEF STREAM) (for FORM in FIRSTFORMS do (COMPILE-FILE-EXPRESSION FORM OUTPUT-FILE NIL PROCESS-ENTIRE-FILE T)) (COPYBYTES DUMMYFILE OUTPUT-FILE 0 (GETFILEPTR DUMMYFILE)) (CLOSEF? DUMMYFILE) (DELFILE (FULLNAME DUMMYFILE)) (AND PROCESS-ENTIRE-FILE (for EXP in (REVERSE DEFERRED.EXPRESSIONS) do (APPLY* (CAR EXP) (CDR EXP) OUTPUT-FILE))) (for FORM in AFTERS do (COMPILE-FILE-EXPRESSION FORM OUTPUT-FILE NIL PROCESS-ENTIRE-FILE T)) (RETURN)) (SETQ FORM (READ STREAM)) (GO LPDUMP)) (PRINT NIL OUTPUT-FILE)) (SETQ COMPILE.FILE.VALUE (CLOSEF OUTPUT-FILE)))) (* ; "Do these after UNDONLSETQ entered") (MAPC (REVERSE COMPILE.FILE.AFTER) (FUNCTION EVAL)) COMPILE.FILE.VALUE))
-)
+  (CL:LAMBDA
+   (FILENAME &KEY LAP REDEFINE OUTPUT-FILE (SAVE-EXPRS T)
+          (COMPILER-OUTPUT T)
+          (PROCESS-ENTIRE-FILE NIL PEFP))                    (* ; "Edited 25-Feb-2026 23:02 by rmk")
+                                                             (* ; "Edited 29-Jun-90 19:19 by nm")
+   (LET
+    (COMPILE.FILE.AFTER VALUE COMPILE.FILE.VALUE (NLAML NLAML)
+           (NLAMA NLAMA)
+           (LAMS LAMS)
+           (LAMA LAMA)
+           (DFNFLG NIL))
+    (DECLARE (CL:SPECIAL COMPILE.FILE.AFTER COMPILE.FILE.VALUE NLAML NLAMA LAMS LAMA DFNFLG))
+    (RESETLST
+        (RESETSAVE NIL (LIST 'RESETUNDO)
+               (RESETUNDO))
+        (RESETSAVE COUTFILE COMPILER-OUTPUT)
+        (RESETSAVE STRF REDEFINE)
+        (RESETSAVE SVFLG (AND SAVE-EXPRS REDEFINE 'DEFER))
+        (RESETSAVE LAPFLG LAP)
+        (LET
+         ((*PACKAGE* *INTERLISP-PACKAGE*)
+          (*READ-BASE* 10)
+          (LOCALVARS SYSLOCALVARS)
+          (SPECVARS T)
+          STREAM LSTFIL ROOTNAME INTERLISP-FORMAT ENV FORM)
+         (DECLARE (CL:SPECIAL *PACKAGE* *READ-BASE* LOCALVARS SPECVARS LSTFIL))
+         [RESETSAVE NIL (LIST (FUNCTION CLOSEF?)
+                              (SETQ STREAM (OPENSTREAM FILENAME 'INPUT]
+         (CL:MULTIPLE-VALUE-SETQ (ENV FORM)
+                (\PARSE-FILE-HEADER STREAM 'RETURN T))
+         (SETQ INTERLISP-FORMAT (AND ENV (NEQ ENV *COMMON-LISP-READ-ENVIRONMENT*)))
+         (if (NOT PEFP)
+             then (SETQ PROCESS-ENTIRE-FILE INTERLISP-FORMAT))
+         (if LAP
+             then (SETQ LSTFIL COUTFILE))
+         (SETQ FILENAME (FULLNAME STREAM))
+         (RESETSAVE NIL (LIST (FUNCTION COMPILE.FILE.RESET)
+                              [SETQ OUTPUT-FILE (OPENSTREAM (OR OUTPUT-FILE (PACKFILENAME.STRING
+                                                                             'VERSION NIL
+                                                                             'EXTENSION COMPILE.EXT
+                                                                             'BODY FILENAME))
+                                                       'OUTPUT
+                                                       'NEW
+                                                       `((TYPE BINARY)
+                                                         (:EXTERNAL-FORMAT ,ENV]
+                              STREAM
+                              (ROOTFILENAME FILENAME)))
+         (if OUTPUT-FILE
+             then (RESETSAVE LCFIL OUTPUT-FILE)
+                  (PRINT-COMPILE-HEADER (LIST STREAM)
+                         '("COMPILE-FILEd")
+                         ENV))
+         (WITH-READER-ENVIRONMENT ENV
+             (PROG ((DEFERRED.EXPRESSIONS NIL)
+                    (*PRINT-ARRAY* T)
+                    (*PRINT-LEVEL* NIL)
+                    (*PRINT-LENGTH* NIL)
+                    (FIRSTFORMS NIL)
+                    (AFTERS NIL)
+                    (SCRATCH.LCOM '{CORE}SCRATCH.LCOM)
+                    DUMMYFILE TEMPVAL)
+                   (DECLARE (CL:SPECIAL DEFERRED.EXPRESSIONS *PRINT-ARRAY* *PRINT-LEVEL* 
+                                   *PRINT-LENGTH* FIRSTFORMS AFTERS DEFERS))
+                                                             (* ; "Edited by TT (11-June-90 : for AR#11185) all contents of file are read, and each forms are compiled.(This reading method is for supporting %"FIRST%", %"NOTFIRST%" tag.)")
+                   [RESETSAVE NIL (LIST (FUNCTION CLOSEF?)
+                                        (SETQ DUMMYFILE (OPENSTREAM SCRATCH.LCOM 'BOTH 'NEW
+                                                               `((:EXTERNAL-FORMAT ,ENV]
+               LPDUMP
+                   [if (EQUAL (CAR FORM)
+                              'RPAQQ)
+                       then                                  (* ; 
+                                    "This is the support method of %"COMPILERVARS%" (2-July-1990 TT)")
+                            (SETQ TEMPVAL (CADDR FORM))
+                            (if (SETQ TEMPVAL (ASSOC 'DECLARE%: TEMPVAL))
+                                then (if (SETQ TEMPVAL (FMEMB 'COMPILERVARS (FMEMB 'DOEVAL@COMPILE 
+                                                                                   TEMPVAL)))
+                                         then (SETQ DFNFLG T)
+                                              (if [SETQ TEMPVAL (FMEMB 'ADDVARS (SETQ TEMPVAL
+                                                                                 (CADR TEMPVAL]
+                                                  then (CL:DOLIST (ARG (CDR TEMPVAL))
+                                                           (APPLY 'ADDTOVAR ARG))]
+                   (COMPILE-FILE-EXPRESSION FORM DUMMYFILE NIL PROCESS-ENTIRE-FILE)
+                   (SKIPSEPRCODES STREAM)
+                   (if (EOFP STREAM)
+                       then (CLOSEF STREAM)
+                            (for FORM in FIRSTFORMS do (COMPILE-FILE-EXPRESSION FORM OUTPUT-FILE NIL
+                                                              PROCESS-ENTIRE-FILE T))
+                            (COPYBYTES DUMMYFILE OUTPUT-FILE 0 (GETFILEPTR DUMMYFILE))
+                            (CLOSEF? DUMMYFILE)
+                            (DELFILE (FULLNAME DUMMYFILE))
+                            (CL:WHEN PROCESS-ENTIRE-FILE
+                                (for EXP in (REVERSE DEFERRED.EXPRESSIONS)
+                                   do (APPLY* (CAR EXP)
+                                             (CDR EXP)
+                                             OUTPUT-FILE)))
+                            (for FORM in AFTERS do (COMPILE-FILE-EXPRESSION FORM OUTPUT-FILE NIL 
+                                                          PROCESS-ENTIRE-FILE T))
+                            (RETURN))
+                   (SETQ FORM (READ STREAM))
+                   (GO LPDUMP))
+             (PRINT NIL OUTPUT-FILE))
+         (SETQ COMPILE.FILE.VALUE (CLOSEF OUTPUT-FILE))))    (* ; "Do these after UNDONLSETQ entered")
+    (MAPC (REVERSE COMPILE.FILE.AFTER)
+          (FUNCTION EVAL))
+    COMPILE.FILE.VALUE)))
 
 (INTERLISP-FORMAT-P
   [LAMBDA (STREAM)                                       (* bvm%: " 3-Aug-86 14:01")
@@ -302,14 +401,13 @@ Copyright (c) 1985-1987, 1990 by Venue & Xerox Corporation.
 
 (ADDTOVAR LAMA FAKE-COMPILE-FILE)
 )
-(PUTPROPS CMLCOMPILE COPYRIGHT ("Venue & Xerox Corporation" 1985 1986 1987 1990))
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (1636 2253 (CL:DISASSEMBLE 1636 . 2253)) (2254 17523 (FAKE-COMPILE-FILE 2264 . 5700) (
-INTERLISP-FORMAT-P 5702 . 5920) (INTERLISP-NLAMBDA-FUNCTION-P 5922 . 6156) (COMPILE-FILE-EXPRESSION 
-6158 . 9508) (COMPILE-FILE-WALK-FUNCTION 9510 . 9757) (ARGTYPE.STATE 9759 . 9919) (
-COMPILE.CHECK.ARGTYPE 9921 . 11913) (COMPILE.FILE.DEFINEQ 11915 . 12408) (
-COMPILE-FILE-SETF-SYMBOL-FUNCTION 12410 . 13004) (COMPILE-FILE-EX/IMPORT 13006 . 13334) (
-COMPILE.FILE.APPLY 13336 . 13596) (COMPILE.FILE.RESET 13598 . 14459) (COMPILE-IN-CORE 14461 . 17521)) 
-(17524 19253 (COMPILE-FILE-SCAN-FIRST 17534 . 19251)) (19796 21163 (COMPILE-FILE-DECLARE%: 19796 . 
-21163)) (21164 22228 (NEWDEFC 21174 . 22226)))))
+  (FILEMAP (NIL (1569 2186 (CL:DISASSEMBLE 1569 . 2186)) (2187 20243 (FAKE-COMPILE-FILE 2197 . 8420) (
+INTERLISP-FORMAT-P 8422 . 8640) (INTERLISP-NLAMBDA-FUNCTION-P 8642 . 8876) (COMPILE-FILE-EXPRESSION 
+8878 . 12228) (COMPILE-FILE-WALK-FUNCTION 12230 . 12477) (ARGTYPE.STATE 12479 . 12639) (
+COMPILE.CHECK.ARGTYPE 12641 . 14633) (COMPILE.FILE.DEFINEQ 14635 . 15128) (
+COMPILE-FILE-SETF-SYMBOL-FUNCTION 15130 . 15724) (COMPILE-FILE-EX/IMPORT 15726 . 16054) (
+COMPILE.FILE.APPLY 16056 . 16316) (COMPILE.FILE.RESET 16318 . 17179) (COMPILE-IN-CORE 17181 . 20241)) 
+(20244 21973 (COMPILE-FILE-SCAN-FIRST 20254 . 21971)) (22516 23883 (COMPILE-FILE-DECLARE%: 22516 . 
+23883)) (23884 24948 (NEWDEFC 23894 . 24946)))))
 STOP
diff --git a/sources/CMLCOMPILE.DFASL b/sources/CMLCOMPILE.DFASL
new file mode 100644
index 00000000..21cbba7f
Binary files /dev/null and b/sources/CMLCOMPILE.DFASL differ
diff --git a/sources/CMLREAD b/sources/CMLREAD
index 2542b14f..81c044d3 100644
--- a/sources/CMLREAD
+++ b/sources/CMLREAD
@@ -1,12 +1,13 @@
-(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
+(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT UTF-8)
 
-(FILECREATED "24-Apr-2025 21:59:48" {WMEDLEY}<sources>CMLREAD.;17 12829  
+(FILECREATED "25-Feb-2026 11:51:19" {WMEDLEY}<sources>CMLREAD.;24 12180  
 
       :EDIT-BY rmk
 
       :CHANGES-TO (VARS CMLREADCOMS)
+                  (FUNCTIONS WITH-READER-ENVIRONMENT)
 
-      :PREVIOUS-DATE "23-Sep-2024 11:55:33" {WMEDLEY}<sources>CMLREAD.;16)
+      :PREVIOUS-DATE "25-Feb-2026 09:25:29" {WMEDLEY}<sources>CMLREAD.;21)
 
 
 (PRETTYCOMPRINT CMLREADCOMS)
@@ -26,18 +27,14 @@
                     (DWIMINMACROSFLG))
               (VARIABLES *READ-DEFAULT-FLOAT-FORMAT*)
               (GLOBALVARS CMLRDTBL READ-LINE-RDTBL))
-        [COMS 
-              (* ;; "Crude means to aid reading and printing things in same reader environment.  There are some fns and an INITRECORDS for this on ATBL to get it early in the loadup")
-
-              (RECORDS READER-ENVIRONMENT)
-              (FUNCTIONS WITH-READER-ENVIRONMENT)
-              (ADDVARS (SYSSPECVARS *PACKAGE* *READTABLE* *READ-BASE* *PRINT-BASE*))
+        [COMS (FUNCTIONS WITH-READER-ENVIRONMENT)
               (PROP INFO WITH-READER-ENVIRONMENT)
+              (ADDVARS (SYSSPECVARS *PACKAGE* *READTABLE* *READ-BASE* *PRINT-BASE*))
               (GLOBALVARS *COMMON-LISP-READ-ENVIRONMENT*)
-              (INITVARS (*COMMON-LISP-READ-ENVIRONMENT* (create READER-ENVIRONMENT REPACKAGE _
+              (INITVARS (*COMMON-LISP-READ-ENVIRONMENT* (create READER-ENVIRONMENT REPACKAGE ←
                                                                (CL:FIND-PACKAGE "USER")
-                                                               REREADTABLE _ CMLRDTBL REBASE _ 10 
-                                                               REFORMAT _ :MCCS]
+                                                               REREADTABLE ← CMLRDTBL REBASE ← 10 
+                                                               REFORMAT ← :MCCS]
         (PROP FILETYPE CMLREAD)
         (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS
                (ADDVARS (NLAMA)
@@ -53,48 +50,48 @@
 
 (CL:COPY-READTABLE
   [CL:LAMBDA (&OPTIONAL (FROM-READTABLE *READTABLE*)
-                    TO-READTABLE)                        (* bvm%: "13-Oct-86 15:21")
+                    TO-READTABLE)                            (* bvm%: "13-Oct-86 15:21")
                                                              (* ; 
-               "If FROM-READTABLE is NIL, then a copy of a standard Common Lisp readtable is made.")
+                 "If FROM-READTABLE is NIL, then a copy of a standard Common Lisp readtable is made.")
          (if (AND (NULL FROM-READTABLE)
-                      (NULL TO-READTABLE))
-             then                                        (* ; "just make a brand new one")
-                   (CMLRDTBL)
+                  (NULL TO-READTABLE))
+             then                                            (* ; "just make a brand new one")
+                  (CMLRDTBL)
            else (SETQ FROM-READTABLE (\DTEST (OR FROM-READTABLE (CMLRDTBL))
-                                                'READTABLEP))
-                 (if TO-READTABLE
-                     then (RESETREADTABLE (\DTEST TO-READTABLE 'READTABLEP)
-                                     FROM-READTABLE)
-                           TO-READTABLE
-                   else (COPYREADTABLE FROM-READTABLE])
+                                            'READTABLEP))
+                (if TO-READTABLE
+                    then (RESETREADTABLE (\DTEST TO-READTABLE 'READTABLEP)
+                                FROM-READTABLE)
+                         TO-READTABLE
+                  else (COPYREADTABLE FROM-READTABLE])
 )
 (DEFINEQ
 
 (CL:READ-LINE
   [CL:LAMBDA (&OPTIONAL STREAM (EOF-ERRORP T)
-                    EOF-VALUE RECURSIVE-P)               (* ; "Edited 31-Mar-87 18:36 by bvm:")
+                    EOF-VALUE RECURSIVE-P)                   (* ; "Edited 31-Mar-87 18:36 by bvm:")
 
          (* ;; 
-       "Returns a line of text read from the STREAM as a string, discarding the newline character.")
+         "Returns a line of text read from the STREAM as a string, discarding the newline character.")
 
          (CL:SETQ STREAM (\GETSTREAM STREAM 'INPUT))
          (if (AND (NULL EOF-ERRORP)
-                      (NULL RECURSIVE-P)
-                      (\EOFP STREAM))
+                  (NULL RECURSIVE-P)
+                  (\EOFP STREAM))
              then EOF-VALUE
            else (LET ((RESULT (RSTRING STREAM READ-LINE-RDTBL)))
-                         (if (\EOFP STREAM)
-                             then (CL:VALUES RESULT T)
-                           else                          (* ; "consume the eol")
-                                 (READCCODE STREAM)
-                                 (CL:VALUES RESULT NIL])
+                     (if (\EOFP STREAM)
+                         then (CL:VALUES RESULT T)
+                       else                                  (* ; "consume the eol")
+                            (READCCODE STREAM)
+                            (CL:VALUES RESULT NIL])
 
 (CL:READ-CHAR
   [CL:LAMBDA (&OPTIONAL (STREAM *STANDARD-INPUT*)
                     (EOF-ERRORP T)
-                    EOF-VALUE RECURSIVE-P)               (* ; "Edited 14-Dec-86 20:41 by bvm:")
+                    EOF-VALUE RECURSIVE-P)                   (* ; "Edited 14-Dec-86 20:41 by bvm:")
 
-         (* ;; "Inputs a character from STREAM and returns it.")
+         (* ;; "Inputs a character from STREAM and returns it.")
 
          (LET [(STREAM (\GETSTREAM STREAM 'INPUT]
               (COND
@@ -105,10 +102,10 @@
                  (T (CL:CODE-CHAR (READCCODE STREAM])
 
 (CL:UNREAD-CHAR
-  (CL:LAMBDA (CHARACTER &OPTIONAL (INPUT-STREAM *STANDARD-INPUT*))
-                                                            (* ; "Edited 23-Jun-2021 13:05 by rmk:")
+  (CL:LAMBDA (CHARACTER &OPTIONAL (INPUT-STREAM *STANDARD-INPUT*))
+                                                            (* ; "Edited 23-Jun-2021 13:05 by rmk:")
 
-         (* ;; "Puts the CHARACTER back on the front of the input STREAM.  According to the manual, `One may apply UNREAD-CHAR only to the character most recently read from INPUT-STREAM.'")
+         (* ;; "Puts the CHARACTER back on the front of the input STREAM.  According to the manual, `One may apply UNREAD-CHAR only to the character most recently read from INPUT-STREAM.'")
 
          (\BACKCCODE (\GETSTREAM INPUT-STREAM 'INPUT))
          NIL))
@@ -153,7 +150,7 @@
                     else (\ILLEGAL.ARG PEEK-TYPE])
 
 (CL:LISTEN
-  (CL:LAMBDA (&OPTIONAL STREAM)                          (* ; "Edited 14-Apr-87 16:49 by bvm:")
+  (CL:LAMBDA (&OPTIONAL STREAM)                              (* ; "Edited 14-Apr-87 16:49 by bvm:")
 
          (* ;; "Returns T if a character is available on the given STREAM ")
 
@@ -162,7 +159,7 @@
 
 (CL:READ-CHAR-NO-HANG
   (CL:LAMBDA (&OPTIONAL STREAM (EOF-ERRORP T)
-                    EOF-VALUE RECURSIVE-P)               (* ; "Edited 14-Apr-87 16:40 by bvm:")
+                    EOF-VALUE RECURSIVE-P)                   (* ; "Edited 14-Apr-87 16:40 by bvm:")
 
          (* ;; "Returns the next character from the STREAM if one is available, or NIL.  However, if STREAM is at eof, do eof handling.")
 
@@ -170,13 +167,13 @@
             ((READP STREAM T)                                (* ; "there is input, get it")
              (CL:READ-CHAR STREAM EOF-ERRORP EOF-VALUE RECURSIVE-P))
             ((NOT (EOFP STREAM))                             (* ; 
-                                             "there could be more input, so don't wait, return NIL")
+                                               "there could be more input, so don't wait, return NIL")
              NIL)
             (EOF-ERRORP (\EOF.ACTION STREAM))
             (T EOF-VALUE))))
 
 (CL:CLEAR-INPUT
-  [CL:LAMBDA (&OPTIONAL (STREAM *STANDARD-INPUT*))       (* bvm%: "13-Oct-86 15:46")
+  [CL:LAMBDA (&OPTIONAL (STREAM *STANDARD-INPUT*))           (* bvm%: "13-Oct-86 15:46")
 
          (* ;; "Clears any buffered input associated with the Stream.")
 
@@ -200,7 +197,7 @@
 
 (CL:READ-BYTE
   [CL:LAMBDA (BINARY-INPUT-STREAM &OPTIONAL (EOF-ERRORP T)
-                    EOF-VALUE)                           (* bvm%: "13-Oct-86 15:49")
+                    EOF-VALUE)                               (* bvm%: "13-Oct-86 15:49")
 
          (* ;; "Returns the next byte of the BINARY-INPUT-STREAM")
 
@@ -211,7 +208,7 @@
                   (\BIN STREAM))])
 
 (CL:WRITE-BYTE
-  (CL:LAMBDA (INTEGER BINARY-OUTPUT-STREAM)              (* bvm%: "13-Oct-86 15:49")
+  (CL:LAMBDA (INTEGER BINARY-OUTPUT-STREAM)                  (* bvm%: "13-Oct-86 15:49")
 
          (* ;; "Outputs the INTEGER to the binary BINARY-OUTPUT-STREAM")
 
@@ -236,47 +233,30 @@
 (GLOBALVARS CMLRDTBL READ-LINE-RDTBL)
 )
 
-
-
-(* ;; 
-"Crude means to aid reading and printing things in same reader environment.  There are some fns and an INITRECORDS for this on ATBL to get it early in the loadup"
-)
-
-(DECLARE%: EVAL@COMPILE
-
-(DATATYPE READER-ENVIRONMENT (REPACKAGE REREADTABLE REBASE REPACKAGEFORM REFORMAT REREADTABLEFORM))
-)
-
-(/DECLAREDATATYPE 'READER-ENVIRONMENT '(POINTER POINTER POINTER POINTER POINTER POINTER)
-       '((READER-ENVIRONMENT 0 POINTER)
-         (READER-ENVIRONMENT 2 POINTER)
-         (READER-ENVIRONMENT 4 POINTER)
-         (READER-ENVIRONMENT 6 POINTER)
-         (READER-ENVIRONMENT 8 POINTER)
-         (READER-ENVIRONMENT 10 POINTER))
-       '12)
-
-(DEFMACRO WITH-READER-ENVIRONMENT (ENV . BODY)
+(DEFMACRO WITH-READER-ENVIRONMENT (ENV . BODY)               (* ; "Edited 25-Feb-2026 09:23 by rmk")
    `((CL:LAMBDA (E)
+            (CL:WHEN (\GETSTREAM E 'INPUT T)
+                (SETQ E (READ-READER-ENVIRONMENT STREAM)))
+            (\DTEST E 'READER-ENVIRONMENT)
             (LET ((*PACKAGE* (ffetch (READER-ENVIRONMENT REPACKAGE) of E))
                   (*READTABLE* (ffetch (READER-ENVIRONMENT REREADTABLE) of E))
                   (*READ-BASE* (ffetch (READER-ENVIRONMENT REBASE) of E))
                   (*PRINT-BASE* (ffetch (READER-ENVIRONMENT REBASE) of E)))
                  ,@BODY))
-     (\DTEST ,ENV 'READER-ENVIRONMENT)))
-
-(ADDTOVAR SYSSPECVARS *PACKAGE* *READTABLE* *READ-BASE* *PRINT-BASE*)
+     ,ENV))
 
 (PUTPROPS WITH-READER-ENVIRONMENT INFO EVAL)
+
+(ADDTOVAR SYSSPECVARS *PACKAGE* *READTABLE* *READ-BASE* *PRINT-BASE*)
 (DECLARE%: DOEVAL@COMPILE DONTCOPY
 
 (GLOBALVARS *COMMON-LISP-READ-ENVIRONMENT*)
 )
 
-(RPAQ? *COMMON-LISP-READ-ENVIRONMENT* (create READER-ENVIRONMENT REPACKAGE _ (CL:FIND-PACKAGE "USER")
-                                             REREADTABLE _ CMLRDTBL REBASE _ 10 REFORMAT _ :MCCS))
+(RPAQ? *COMMON-LISP-READ-ENVIRONMENT* (create READER-ENVIRONMENT REPACKAGE ← (CL:FIND-PACKAGE "USER")
+                                             REREADTABLE ← CMLRDTBL REBASE ← 10 REFORMAT ← :MCCS))
 
-(PUTPROPS CMLREAD FILETYPE CL:COMPILE-FILE)
+(PUTPROPS CMLREAD FILETYPE :FAKE-COMPILE-FILE)
 (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS 
 
 (ADDTOVAR NLAMA )
@@ -287,9 +267,9 @@
                      CL:UNREAD-CHAR CL:READ-CHAR CL:READ-LINE CL:COPY-READTABLE)
 )
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (2380 3365 (CL:COPY-READTABLE 2390 . 3363)) (3366 10574 (CL:READ-LINE 3376 . 4248) (
-CL:READ-CHAR 4250 . 4800) (CL:UNREAD-CHAR 4802 . 5263) (CL:PEEK-CHAR 5265 . 7559) (CL:LISTEN 7561 . 
-7826) (CL:READ-CHAR-NO-HANG 7828 . 8600) (CL:CLEAR-INPUT 8602 . 8839) (CL:READ-FROM-STRING 8841 . 9861
-) (CL:READ-BYTE 9863 . 10316) (CL:WRITE-BYTE 10318 . 10572)) (11568 12041 (WITH-READER-ENVIRONMENT 
-11568 . 12041)))))
+  (FILEMAP (NIL (2210 3182 (CL:COPY-READTABLE 2220 . 3180)) (3183 10389 (CL:READ-LINE 3193 . 4049) (
+CL:READ-CHAR 4051 . 4605) (CL:UNREAD-CHAR 4607 . 5068) (CL:PEEK-CHAR 5070 . 7364) (CL:LISTEN 7366 . 
+7635) (CL:READ-CHAR-NO-HANG 7637 . 8415) (CL:CLEAR-INPUT 8417 . 8654) (CL:READ-FROM-STRING 8656 . 9676
+) (CL:READ-BYTE 9678 . 10131) (CL:WRITE-BYTE 10133 . 10387)) (10728 11381 (WITH-READER-ENVIRONMENT 
+10728 . 11381)))))
 STOP
diff --git a/sources/CMLREAD.LCOM b/sources/CMLREAD.LCOM
index d2e4be96..d0d98f4a 100644
Binary files a/sources/CMLREAD.LCOM and b/sources/CMLREAD.LCOM differ
diff --git a/sources/COMPILE b/sources/COMPILE
index 7b2a941c..28cdf840 100644
--- a/sources/COMPILE
+++ b/sources/COMPILE
@@ -1,12 +1,12 @@
-(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
+(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10)
 
-(FILECREATED "24-Apr-2025 22:04:20" {WMEDLEY}<sources>COMPILE.;6 76628  
+(FILECREATED "26-Feb-2026 10:41:28" {WMEDLEY}<sources>COMPILE.;9 77027  
 
       :EDIT-BY rmk
 
-      :CHANGES-TO (FNS BCOMPL.BODY BRECOMPILE)
+      :CHANGES-TO (FNS BRECOMPILE)
 
-      :PREVIOUS-DATE "24-Sep-2023 13:59:34" {WMEDLEY}<sources>COMPILE.;5)
+      :PREVIOUS-DATE "26-Feb-2026 00:46:08" {WMEDLEY}<sources>COMPILE.;8)
 
 
 (PRETTYCOMPRINT COMPILECOMS)
@@ -104,7 +104,8 @@
                     CFILE NOBLOCKSFLG OPTIONSSET)))])
 
 (BCOMPL.BODY
-  [LAMBDA (STREAMS CFILE NOBLOCKSFLG OPTIONSSET)             (* ; "Edited 24-Apr-2025 22:03 by rmk")
+  [LAMBDA (STREAMS CFILE NOBLOCKSFLG OPTIONSSET)             (* ; "Edited 26-Feb-2026 00:43 by rmk")
+                                                             (* ; "Edited 24-Apr-2025 22:03 by rmk")
                                                             (* ; "Edited  5-Jul-2021 13:46 by rmk:")
 
 (* ;;; "STREAMS is a list of streams.  Compile everything on them, dumping to CFILE (default first stream.dcom).  NOBLOCKSFLG means TCOMPL instead of BCOMPL.  OPTIONSSET is true if the Listing? question has already been asked.")
@@ -146,7 +147,7 @@
                          (RESETSAVE NIL (LIST 'CLOSEF STREAM))
                          (RESETSAVE (INPUT STREAM))          (* ; 
                               "Needs to be primary input for some of the filepkg expressions to work")
-                         (WITH-READER-ENVIRONMENT *OLD-INTERLISP-READ-ENVIRONMENT*
+                         (WITH-READER-ENVIRONMENT *DEFINE-FILE-INFO-ENV*
                              (until (OR (NULL (SETQ TEM (READ STREAM)))
                                         (EQ TEM 'STOP))
                                 do (CL:WHEN (EQ (CAR (LISTP TEM))
@@ -491,7 +492,9 @@
     (SETQ BLOCKS (NCONC1 BLOCKS X))))
 
 (BRECOMPILE
-  [LAMBDA (FILES CFILE FNS NOBLOCKSFLG)                      (* ; "Edited 24-Apr-2025 22:04 by rmk")
+  [LAMBDA (FILES CFILE FNS NOBLOCKSFLG)                      (* ; "Edited 26-Feb-2026 10:35 by rmk")
+                                                             (* ; "Edited 24-Feb-2026 10:00 by rmk")
+                                                             (* ; "Edited 24-Apr-2025 22:04 by rmk")
                                                             (* ; "Edited  5-Jul-2021 09:28 by rmk:")
 
 (* ;;; "FNS is a list of functions to be recompiled.  The object is to make a file that looks exactly like that produced by BCOMPL except to greatly reduce the work by copying from CFILE the compiled definitions those functions not being recompiled.")
@@ -632,6 +635,7 @@
                                       (DECLARE (CL:SPECIAL FILECREATEDLOC))
                                                              (* ; " used by LOADFNSCAN")
                                       (WITH-READER-ENVIRONMENT ENV
+                                          (\EXTERNALFORMAT STREAM ENV)
                                           (create COMPFILEDESCR
                                                  COMPFILESTREAM _ STREAM
                                                  COMPFILEENV _ ENV
@@ -653,8 +657,7 @@
                                                              (* ; 
  "Start writing the compiled file.  Use environment of one of the source files--usually the only one")
                   (if LCFIL
-                      then (\EXTERNALFORMAT LCFIL (OR (LISTGET DESTINATIONENV :FORMAT)
-                                                      :MCCS))
+                      then (\EXTERNALFORMAT LCFIL (OR DESTINATIONENV :MCCS))
                            (PRINT-COMPILE-HEADER
                             FILES
                             [CONS (if NOBLOCKSFLG
@@ -851,27 +854,31 @@
                       (T (GO LP])
 
 (BRECOMPILE3
-  (LAMBDA (FN FILEMAPLST COREOK)                             (* bvm%: "29-Aug-86 22:07")
-          
-          (* * "returns definition of FN, either from in core, or from the file.")
+  [LAMBDA (FN FILEMAPLST COREOK)                             (* ; "Edited 24-Feb-2026 09:59 by rmk")
+                                                             (* bvm%: "29-Aug-86 22:07")
+
+(* ;;; "returns definition of FN, either from in core, or from the file.")
 
     (LET (DEF STREAM)
          (COND
-            ((AND COREOK (EXPRP (SETQ DEF (VIRGINFN FN T)))) (* "Value is of the form (FN DEF FLG) where FLG=T means the definition was obtained from in core, so that it is ok to do spelling correction.")
+            ([AND COREOK (EXPRP (SETQ DEF (VIRGINFN FN T]
+
+             (* ;; "Value is of the form (FN DEF FLG) where FLG=T means the definition was obtained from in core, so that it is ok to do spelling correction.")
+
              (LIST FN DEF T))
             (T (for FILEDESCR in FILEMAPLST
-                  when (PROGN (SETQ STREAM (fetch COMPFILESTREAM of FILEDESCR))
+                  when [PROGN (SETQ STREAM (fetch COMPFILESTREAM of FILEDESCR))
                               (for Y in (CDR (fetch COMPFILEMAP of FILEDESCR))
-                                 thereis (SETQ DEF (FASSOC FN (CDDR Y)))))
+                                 thereis (SETQ DEF (FASSOC FN (CDDR Y]
                   do (SETFILEPTR STREAM (CADR DEF))
                      (SETQ DEF (WITH-READER-ENVIRONMENT (fetch COMPFILEENV of FILEDESCR)
-                                      (READ STREAM)))        (* 
-                                                     "TEM is an arg to DEFINEQ, of the form (fn def)")
+                                      (READ STREAM)))        (* ; 
+                                                     "TEM is an arg to DEFINEQ, of the form (fn def)")
                      (COND
                         ((NEQ FN (CAR DEF))
                          (ERROR '"filemap does not agree with contents of" (FULLNAME STREAM)
                                 T)))
-                     (RETURN DEF)))))))
+                     (RETURN DEF])
 
 (BLOCKCOMPILE
   [LAMBDA (BLKNAME BLKFNS ENTRIES FLG)                       (* ; "Edited  6-Dec-86 03:59 by lmm")
@@ -1518,14 +1525,14 @@
 (ADDTOVAR LAMA )
 )
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (3379 73129 (BCOMPL 3389 . 5039) (BCOMPL.BODY 5041 . 11639) (PRINT-COMPILE-HEADER 11641
- . 12704) (RESETOPENFILES 12706 . 13059) (BCOMPL1A 13061 . 19074) (BCOMPL2 19076 . 25891) (BCOMPL3 
-25893 . 27242) (BLOCK%: 27244 . 27876) (BRECOMPILE 27878 . 42562) (BRECOMPILE1 42564 . 48416) (
-BRECOMPILE2 48418 . 49220) (BRECOMPILE3 49222 . 50598) (BLOCKCOMPILE 50600 . 52460) (BLOCKCOMPILE1 
-52462 . 57547) (COMPSET 57549 . 60246) (COMPSETREAD 60248 . 61559) (COMPSETY 61561 . 61685) (COMPSETF 
-61687 . 61853) (RCOMP3 61855 . 63562) (TCOMPL 63564 . 63863) (RECOMPILE 63865 . 63948) (RECOMP? 63950
- . 64410) (COMPILE 64412 . 66401) (COMPILE1 66403 . 66991) (COMPILE1A 66993 . 68640) (
-SHOULD-BE-DWIMIFIED? 68642 . 69331) (COMPEM 69333 . 70057) (GETCFILE 70059 . 71790) (SPECVARS 71792 . 
-72347) (LOCALVARS 72349 . 72923) (GLOBALVARS 72925 . 73127)) (75479 76428 (COMPILEMODE 75489 . 76426))
+  (FILEMAP (NIL (3367 73528 (BCOMPL 3377 . 5027) (BCOMPL.BODY 5029 . 11726) (PRINT-COMPILE-HEADER 11728
+ . 12791) (RESETOPENFILES 12793 . 13146) (BCOMPL1A 13148 . 19161) (BCOMPL2 19163 . 25978) (BCOMPL3 
+25980 . 27329) (BLOCK%: 27331 . 27963) (BRECOMPILE 27965 . 42866) (BRECOMPILE1 42868 . 48720) (
+BRECOMPILE2 48722 . 49524) (BRECOMPILE3 49526 . 50997) (BLOCKCOMPILE 50999 . 52859) (BLOCKCOMPILE1 
+52861 . 57946) (COMPSET 57948 . 60645) (COMPSETREAD 60647 . 61958) (COMPSETY 61960 . 62084) (COMPSETF 
+62086 . 62252) (RCOMP3 62254 . 63961) (TCOMPL 63963 . 64262) (RECOMPILE 64264 . 64347) (RECOMP? 64349
+ . 64809) (COMPILE 64811 . 66800) (COMPILE1 66802 . 67390) (COMPILE1A 67392 . 69039) (
+SHOULD-BE-DWIMIFIED? 69041 . 69730) (COMPEM 69732 . 70456) (GETCFILE 70458 . 72189) (SPECVARS 72191 . 
+72746) (LOCALVARS 72748 . 73322) (GLOBALVARS 73324 . 73526)) (75878 76827 (COMPILEMODE 75888 . 76825))
 )))
 STOP
diff --git a/sources/COMPILE.LCOM b/sources/COMPILE.LCOM
index ecab8389..aa0f4704 100644
Binary files a/sources/COMPILE.LCOM and b/sources/COMPILE.LCOM differ
diff --git a/sources/DWIMIFY b/sources/DWIMIFY
index 69cf1192..e3fb9223 100644
--- a/sources/DWIMIFY
+++ b/sources/DWIMIFY
@@ -1,21 +1,13 @@
-(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
+(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT UTF-8)
 
-(FILECREATED "14-Sep-2022 10:25:44" 
-{DSK}<users>kaplan>local>medley3.5>working-medley>sources>DWIMIFY.;2 310341 
+(FILECREATED "21-Feb-2026 16:14:43" {WMEDLEY}<sources>DWIMIFY.;3 309375 
 
-      :CHANGES-TO (FNS CLISPFOR0)
+      :EDIT-BY rmk
 
-      :PREVIOUS-DATE "16-May-90 16:21:27" 
-{DSK}<users>kaplan>local>medley3.5>working-medley>sources>DWIMIFY.;1)
+      :CHANGES-TO (VARS DWIMIFYCOMS)
 
+      :PREVIOUS-DATE "14-Sep-2022 10:25:44" {WMEDLEY}<sources>DWIMIFY.;2)
 
-(* ; "
-Copyright (c) 1978, 1984-1986, 1990 by Venue & Xerox Corporation.
-The following program was created in 1978 but has not been published
-within the meaning of the copyright law, is furnished under license,
-and may not be used, copied and/or disclosed except in accordance
-with the terms of said license.
-")
 
 (PRETTYCOMPRINT DWIMIFYCOMS)
 
@@ -35,33 +27,36 @@ with the terms of said license.
              CLISPFORVARS1 CLISPFOR4 CLISPFORF/L CLISPDSUBST GETDUMMYVAR CLISPFORINITVAR)
         (COMS (FNS \DURATIONTRAN \CLISPKEYWORDPROCESS))
         (DECLARE%: EVAL@COMPILE DONTCOPY (MACROS DWIMUNDOCATCH))
-        (BLOCKS (FORBLOCK (ENTRIES CLISPFOR)
-                       CLISPFORVARS CLISPFOR0 CLISPFOR2 CLISPFORINITVAR CLISPDSUBST 
-                       \CLISPKEYWORDPROCESS CLISPFORF/L CLISPFOR4 CLISPFORVARS1 CLISPFOR3 CLISPFOR1 
-                       CLISPFOR0A CLISPFOR \DURATIONTRAN
-                       (SPECVARS UNDOSIDE LISPXHIST BODY I.S.TYPE1 I.S.TYPE TERMINATEFLG FIRSTI.V. 
-                              I.V. PROGVARS MAKEPROGFLG IVINITFLG INITVARS UNDOLST DWIMIFYING VARS 
-                              DWIMIFYCHANGE DUMMYVARS I.S.OPRSLST CLISPCONTEXT UNDOSIDE0 EXP))
-               (DWIMIFYBLOCK CLBINARYMINUS? CLISPANGLEBRACKETS CLISPATOM CLISPATOM0 CLISPATOM1 
-                      CLISPATOM1A CLISPATOM1B CLISPATOM2 CLISPATOM2A CLISPATOM2C CLISPATOM2D 
-                      CLISPATOMARE1 CLISPATOMARE2 CLISPATOMIS1 CLISPATOMIS2 CLISPBROADSCOPE 
-                      CLISPBROADSCOPE1 CLISPCAR/CDR CLISPCAR/CDR1 CLISPCAR/CDR2 CLISPIF CLISPIF0 
-                      CLISPIF1 CLISPIF2 CLISPIF3 CLISPLOOKUP CLISPRESPELL CLRPLNODE CLUNARYMINUS? 
-                      DWIMIFY DWIMIFY0 DWIMIFY0? DWIMIFY1 DWIMIFY1? DWIMIFY1A DWIMIFY2 DWIMIFY2? 
-                      DWIMIFY2A DWIMIFYFNS DWMFY0 DWMFY1 DWMFY2 FIX89 FIX89A FIX89TYPEIN FIXAPPLY 
-                      FIXATOM FIXATOM1 FIXCONTINUE FIXCONTINUE1 FIXLAMBDA GETDUMMYVAR GETVARS 
-                      GETVARS1 RETDWIM RETDWIM1 SHRIEKER STOPSCAN? WTFIX WTFIX0 WTFIX1
-                      (ENTRIES WTFIX WTFIX1 DWIMIFYFNS DWIMIFY DWIMIFY0 DWIMIFY0? DWIMIFY1A 
-                             GETDUMMYVAR DWIMIFY2 DWIMIFY2? DWIMIFY1? DWIMIFY1 DWIMIFY2A CLISPLOOKUP)
-                      (SPECVARS 89CHANGE 89FLG BRACKET BRACKETCNT ATTEMPTFLG BACKUPFLG BODY BREAKFLG
-                             BROADSCOPE CLISPCHANGE CLISPCHANGES CLISPCONTEXT CLISPERTYPE CLTYP 
-                             CURRTAIL DWIMIFYCHANGE DWIMIFY0CHANGE DWIMIFYFLG DWIMIFYING ENDTAIL EXP
-                             EXPR FAULTAPPLYFLG FAULTARGS FAULTFN FAULTPOS FAULTX FAULTXX FIRSTI.V. 
-                             FIXCLK FORMSFLG I.S.TYPE I.S.TYPE1 HISTENTRY I.S. I.V. INITVARS 
-                             IVINITFLG LISPFN CHARLST MAKEPROGFLG NCONC1LKUP NCONCLKUP NEGFLG NEWTAIL
-                             NEXTAIL SUBPARENT NOFIX89 NOSAVEFLG ONEFLG ONLYSPELLFLG PARENT SIDES 
-                             TAIL TENTATIVE TERMINATEFLG TYP TYPE-IN? UNDOLST UNDOSIDE UNDOSIDE0 VAR1
-                             VAR2 VARS WORKFLAG UNARYFLG DEST FOR I.S.OPRSLST PROGVARS)))
+        (* BLOCKS
+           (FORBLOCK (ENTRIES CLISPFOR)
+                  CLISPFORVARS CLISPFOR0 CLISPFOR2 CLISPFORINITVAR CLISPDSUBST \CLISPKEYWORDPROCESS 
+                  CLISPFORF/L CLISPFOR4 CLISPFORVARS1 CLISPFOR3 CLISPFOR1 CLISPFOR0A CLISPFOR 
+                  \DURATIONTRAN
+                  (SPECVARS UNDOSIDE LISPXHIST BODY I.S.TYPE1 I.S.TYPE TERMINATEFLG FIRSTI.V. I.V. 
+                         PROGVARS MAKEPROGFLG IVINITFLG INITVARS UNDOLST DWIMIFYING VARS 
+                         DWIMIFYCHANGE DUMMYVARS I.S.OPRSLST CLISPCONTEXT UNDOSIDE0 EXP)))
+        (BLOCKS (DWIMIFYBLOCK CLBINARYMINUS? CLISPANGLEBRACKETS CLISPATOM CLISPATOM0 CLISPATOM1 
+                       CLISPATOM1A CLISPATOM1B CLISPATOM2 CLISPATOM2A CLISPATOM2C CLISPATOM2D 
+                       CLISPATOMARE1 CLISPATOMARE2 CLISPATOMIS1 CLISPATOMIS2 CLISPBROADSCOPE 
+                       CLISPBROADSCOPE1 CLISPCAR/CDR CLISPCAR/CDR1 CLISPCAR/CDR2 CLISPIF CLISPIF0 
+                       CLISPIF1 CLISPIF2 CLISPIF3 CLISPLOOKUP CLISPRESPELL CLRPLNODE CLUNARYMINUS? 
+                       DWIMIFY DWIMIFY0 DWIMIFY0? DWIMIFY1 DWIMIFY1? DWIMIFY1A DWIMIFY2 DWIMIFY2? 
+                       DWIMIFY2A DWIMIFYFNS DWMFY0 DWMFY1 DWMFY2 FIX89 FIX89A FIX89TYPEIN FIXAPPLY 
+                       FIXATOM FIXATOM1 FIXCONTINUE FIXCONTINUE1 FIXLAMBDA GETDUMMYVAR GETVARS 
+                       GETVARS1 RETDWIM RETDWIM1 SHRIEKER STOPSCAN? WTFIX WTFIX0 WTFIX1
+                       (ENTRIES WTFIX WTFIX1 DWIMIFYFNS DWIMIFY DWIMIFY0 DWIMIFY0? DWIMIFY1A 
+                              GETDUMMYVAR DWIMIFY2 DWIMIFY2? DWIMIFY1? DWIMIFY1 DWIMIFY2A CLISPLOOKUP
+                              )
+                       (SPECVARS 89CHANGE 89FLG BRACKET BRACKETCNT ATTEMPTFLG BACKUPFLG BODY BREAKFLG
+                              BROADSCOPE CLISPCHANGE CLISPCHANGES CLISPCONTEXT CLISPERTYPE CLTYP 
+                              CURRTAIL DWIMIFYCHANGE DWIMIFY0CHANGE DWIMIFYFLG DWIMIFYING ENDTAIL EXP
+                              EXPR FAULTAPPLYFLG FAULTARGS FAULTFN FAULTPOS FAULTX FAULTXX FIRSTI.V.
+                              FIXCLK FORMSFLG I.S.TYPE I.S.TYPE1 HISTENTRY I.S. I.V. INITVARS 
+                              IVINITFLG LISPFN CHARLST MAKEPROGFLG NCONC1LKUP NCONCLKUP NEGFLG 
+                              NEWTAIL NEXTAIL SUBPARENT NOFIX89 NOSAVEFLG ONEFLG ONLYSPELLFLG PARENT
+                              SIDES TAIL TENTATIVE TERMINATEFLG TYP TYPE-IN? UNDOLST UNDOSIDE 
+                              UNDOSIDE0 VAR1 VAR2 VARS WORKFLAG UNARYFLG DEST FOR I.S.OPRSLST 
+                              PROGVARS)))
         (GLOBALVARS DWIMINMACROSFLG CHECKCARATOMFLG TREATASCLISPFLG CLISPHELPFLG CLISPIFTRANFLG 
                CLISPRETRANFLG DWIMCHECKPROGLABELSFLG DWIMCHECK#ARGSFLG SHALLOWFLG PRETTYTRANFLG 
                CLEARSTKLST LCASEFLG LAMBDASPLST DURATIONCLISPWORDS CLISPTRANFLG CLISPIFWORDSPLST 
@@ -79,7 +74,7 @@ with the terms of said license.
 (DEFINEQ
 
 (DWIMIFYFNS
-  [NLAMBDA FNS                                               (* lmm "20-May-84 19:57")
+  [NLAMBDA FNS                                               (* lmm "20-May-84 19:57")
     (PROG ((CLK (CLOCK 0))
            TEM)
           (SETQ NOFIXFNSLST0 NOFIXFNSLST)
@@ -91,8 +86,8 @@ with the terms of said license.
                                 (STKEVAL 'DWIMIFYFNS (CAR FNS)
                                        NIL
                                        'INTERNAL))
-                               (T                            (* ; 
-                                    "If (CAR FNS) is name of a file, do dwimifyfns on its functions.")
+                               (T                            (* ; 
+                                    "If (CAR FNS) is name of a file, do dwimifyfns on its functions.")
                                   (OR (LISTP (EVALV (CAR FNS)
                                                     'DWIMIFYFNS))
                                       (AND (GETPROP (OR (AND DWIMFLG (MISSPELLED? (CAR FNS)
@@ -107,13 +102,16 @@ with the terms of said license.
           (RETURN TEM])
 
 (DWIMIFY
-  [LAMBDA (X QUIETFLG L)                                     (* lmm "20-May-84 19:57")
+  [LAMBDA (X QUIETFLG L)                                     (* lmm "20-May-84 19:57")
     (PROG (VAL)
           (COND
              ((NULL DWIMFLG)
               (LISPXPRIN1 "DWIM is turned off!
 " T)
-              (RETURN NIL)))                                 (* ;; "If X is an atom and L is NIL, X is treated as the name of a function, and its entire definition is DWIMIFIED.  Otherwise, X is a piece of a function, and L the edit puh down list that leads to X (i.e. L is the push-dwown list after performing a !0) L is used to compute the bound variables, as well as to determine whether X is an element or tail.")
+              (RETURN NIL)))
+
+     (* ;; "If X is an atom and L is NIL, X is treated as the name of a function, and its entire definition is DWIMIFIED.  Otherwise, X is a piece of a function, and L the edit puh down list that leads to X (i.e. L is the push-dwown list after performing a !0) L is used to compute the bound variables, as well as to determine whether X is an element or tail.")
+
           (SETQ NOFIXFNSLST0 NOFIXFNSLST)
           (SETQ NOFIXVARSLST0 NOFIXVARSLST)
           (SETQ VAL (DWIMIFY0 X L))
@@ -128,23 +126,25 @@ with the terms of said license.
           (RETURN VAL])
 
 (DWIMIFY0
-  [LAMBDA (X Y VARS EXPR)                                    (* lmm "27-FEB-83 10:55")
-                                                             (* ;; "Some general comments: --- DWIMIFYFLG is bound in DWIMIFY0, WTFIX, and WTFIX0.  It is set to T whenever WTFIX is called and given EXPR, TAIL, PARENT, etc. as arguments, i.e. from DWIMIFY1 or DWIMIFY2.  Note that this may occur due to an explicit call to DWIMIFY0, or due to evaluating certain CLISP expressions, e.g. IF statements, which call DWIMIFY1 or DWIMIFY2.  These two cases are distinguished by the value of DWIMIFYING.  --- DWIMIFYING is bound in DWIMIFY0 (to T), and whenever DWIMIFY1 or DWIMIFY2 are called from contexts where DWIMIFYING may not be bound, e.g. from CLISPIF.  In these latter cases, DWIMIFYING is bound to (AND DWIMIFYFLG DWIMIFYING).  Thus DWIMIFYING is always bound when DWIMIFYFLG is bound, and is T when under a call to DWIMIFY0, otherwise NIL.  Note that checking DWIMIFYING without also checking DWIMIFYFLG may cause a U.B.A.  DWIMIFYING error.  Similary, other state variables that are bound in DWIMIFY0 but not rebound by DWIMIFY1 or DWIMIFY2 such as CLISPCONTEXT, DWIMIFYCHANGE, etc., are assumed to be bound when DWIMIFYFLG is T, so that any call to DWIMIFY1 or DWIMIFY2 must also guarantee that these variables are bound.  If the caller is not sure, it should use DWIMIFY1?  and DWIMIFY2?  since these do the appropriate checks.  --- NOFIXFNSLST0 and NOFIXVARSLST0 are global varaales.  They are initializaed to NOFIXFNSLST and NOFIXVARLST by DWIMIFY and DWIMIFYFNS, as well as CLISPIF, CLISPFOR, etc. when they enter the DWIMIFY functions, i.e. DWIMIFY1 and DWIMIFY2 for the first time.  NOFIXFNSLST and NOFIXVARLST are the variable that the user can add things to.  --- VARS is bound in WTFIX and in DWIMIFY0.  DWIMIFY1 and DWIMIFY2 supply VARS in their call to WTFIX.  Otherwise WTFIX comptes them.  --- ATTEMPTFLG is bound in DWIMIFY1 and DWIMIFY2.  It is used to inform DWIMIFY1 or DWIMIFY2, in the event that WTFIX was unable to make a correction, NOT to add the atom to NOFIXLST.  For example, this occurs when a correction was offered to the user but rejected, e.g. U.D.F.  T, and user declines the fix, T is not added to NOFIXLST.")
+  [LAMBDA (X Y VARS EXPR)                                    (* lmm "27-FEB-83 10:55")
+
+    (* ;; "Some general comments: --- DWIMIFYFLG is bound in DWIMIFY0, WTFIX, and WTFIX0.  It is set to T whenever WTFIX is called and given EXPR, TAIL, PARENT, etc. as arguments, i.e. from DWIMIFY1 or DWIMIFY2.  Note that this may occur due to an explicit call to DWIMIFY0, or due to evaluating certain CLISP expressions, e.g. IF statements, which call DWIMIFY1 or DWIMIFY2.  These two cases are distinguished by the value of DWIMIFYING.  --- DWIMIFYING is bound in DWIMIFY0 (to T), and whenever DWIMIFY1 or DWIMIFY2 are called from contexts where DWIMIFYING may not be bound, e.g. from CLISPIF.  In these latter cases, DWIMIFYING is bound to (AND DWIMIFYFLG DWIMIFYING).  Thus DWIMIFYING is always bound when DWIMIFYFLG is bound, and is T when under a call to DWIMIFY0, otherwise NIL.  Note that checking DWIMIFYING without also checking DWIMIFYFLG may cause a U.B.A.  DWIMIFYING error.  Similary, other state variables that are bound in DWIMIFY0 but not rebound by DWIMIFY1 or DWIMIFY2 such as CLISPCONTEXT, DWIMIFYCHANGE, etc., are assumed to be bound when DWIMIFYFLG is T, so that any call to DWIMIFY1 or DWIMIFY2 must also guarantee that these variables are bound.  If the caller is not sure, it should use DWIMIFY1?  and DWIMIFY2?  since these do the appropriate checks.  --- NOFIXFNSLST0 and NOFIXVARSLST0 are global varaales.  They are initializaed to NOFIXFNSLST and NOFIXVARLST by DWIMIFY and DWIMIFYFNS, as well as CLISPIF, CLISPFOR, etc. when they enter the DWIMIFY functions, i.e. DWIMIFY1 and DWIMIFY2 for the first time.  NOFIXFNSLST and NOFIXVARLST are the variable that the user can add things to.  --- VARS is bound in WTFIX and in DWIMIFY0.  DWIMIFY1 and DWIMIFY2 supply VARS in their call to WTFIX.  Otherwise WTFIX comptes them.  --- ATTEMPTFLG is bound in DWIMIFY1 and DWIMIFY2.  It is used to inform DWIMIFY1 or DWIMIFY2, in the event that WTFIX was unable to make a correction, NOT to add the atom to NOFIXLST.  For example, this occurs when a correction was offered to the user but rejected, e.g. U.D.F.  T, and user declines the fix, T is not added to NOFIXLST.")
+
     (PROG (FN FAULTFN DWIMIFY0CHANGE DWIMIFYCHANGE TEM CLISPCONTEXT ONEFLG (DWIMIFYING T)
               (DWIMIFYFLG T)
               [SIDES (CDR (LISTGET1 LISPXHIST 'SIDE]
               TYPE-IN?
               (FIXSPELLDEFAULT 'n))
           (RETURN (COND
-                     [(LISTP Y)                              (* ; "from DW command")
+                     [(LISTP Y)                              (* ; "from DW command")
                       [COND
                          ([LISTP (SETQ FAULTFN (EVALV 'ATM]
-                          (SETQ FAULTFN (CAR FAULTFN]        (* ; "ATM is bound in EDITE.")
+                          (SETQ FAULTFN (CAR FAULTFN]        (* ; "ATM is bound in EDITE.")
                       (SETQ VARS (VARSBOUNDINEDITCHAIN Y))
                       (SETQ EXPR (OR (CAR (LAST Y))
                                      X))
-                      (LISPXPUT 'RESPELLS NIL NIL LISPXHIST) (* ; 
-                                           "Essentially, a new call to DW is treated as a new event.")
+                      (LISPXPUT 'RESPELLS NIL NIL LISPXHIST) (* ; 
+                                           "Essentially, a new call to DW is treated as a new event.")
                       (COND
                          ((TAILP X (CAR Y))
                           (DWIMIFY2 X (CAR Y)))
@@ -169,26 +169,32 @@ with the terms of said license.
                                  X)
                           X)
                          (T (DWIMIFY1 X]
-                     (Y                                      (* ; 
-                      "called from compileuserfn or compile1a.  X is the expression to be dwimified.")
+                     (Y                                      (* ; 
+                      "called from compileuserfn or compile1a.  X is the expression to be dwimified.")
                         (SETQ FAULTFN Y)
                         (AND (NULL EXPR)
-                             (SETQ EXPR X))                  (* ;; "EXPR is supplied on calls from compileuserfn.  it is the top level def.  on calls from compile1a, x and expr are the same")
+                             (SETQ EXPR X))
+
+                        (* ;; "EXPR is supplied on calls from compileuserfn.  it is the top level def.  on calls from compile1a, x and expr are the same")
+
                         (SETQ TEM (DWIMIFY1 X))
                         (AND DWIMIFY0CHANGE (DWIMARKASCHANGED FAULTFN SIDES))
                         TEM)
-                     ((LISTP X)                              (* ; 
-                                           "e.g. user types in a direct call to dwimify an xpression")
+                     ((LISTP X)                              (* ; 
+                                           "e.g. user types in a direct call to dwimify an xpression")
                       (SETQQ FAULTFN TYPE-IN)
                       (SETQ EXPR X)
                       (DWIMIFY1 X))
-                     (T                                      (* ; "DWIMIFY (functon-name)")
-                        (SETQ TEM (EXPRCHECK X))             (* ; 
-                                        "If EXPRCHECK performs spelling correction, it will rset FN.")
+                     (T                                      (* ; "DWIMIFY (functon-name)")
+                        (SETQ TEM (EXPRCHECK X))             (* ; 
+                                        "If EXPRCHECK performs spelling correction, it will rset FN.")
                         (SETQ FAULTFN (SETQ FN (CAR TEM)))
                         (DWIMIFY1 (SETQ EXPR (CDR TEM)))
                         [COND
-                           (DWIMIFY0CHANGE                   (* ;; "DWIMIFY0CHANGE is only bound in DWIMIFY0.  it is only reset (in RETDWIM) when DWIMIFYFLG and DWIMIFYING are both T.  It is true if there was ANY change in the entire expression.  DWIMIFYCHANGE on the other hand is bound wheever DWIMIFYFLG is T, and it is true if there was any change in the prticular level expression being worked on.")
+                           (DWIMIFY0CHANGE 
+
+                                 (* ;; "DWIMIFY0CHANGE is only bound in DWIMIFY0.  it is only reset (in RETDWIM) when DWIMIFYFLG and DWIMIFYING are both T.  It is true if there was ANY change in the entire expression.  DWIMIFYCHANGE on the other hand is bound wheever DWIMIFYFLG is T, and it is true if there was any change in the prticular level expression being worked on.")
+
                                   (DWIMARKASCHANGED FN SIDES)
                                   (COND
                                      ([OR (NOT (FGETD FN))
@@ -199,23 +205,31 @@ with the terms of said license.
 
 (DWIMIFY0?
   [LAMBDA (TAIL PARENT SUBPARENT FORMSFLG ONEFLG FAULTFN CLISPCONTEXT)
-                                                             (* lmm "27-MAY-82 09:54")
-                                                             (* ;; "DWIMIFY0?  is an external entry to DWIMIFYBLOCK It is used to dwimify an expression where the contxt may or may not be under aother call to dwimify.  it is used by RECORD, MATCH etc. as well s by CLISP4 in CLISPIFY.")
-                                                             (* ;; "The value of DWIMIFY0?  is NOT the expression (dwiified) but T or NIL depending on whether or not there was any change, i.e. the value of dwiifychange.")
+                                                             (* lmm "27-MAY-82 09:54")
+
+    (* ;; "DWIMIFY0?  is an external entry to DWIMIFYBLOCK It is used to dwimify an expression where the contxt may or may not be under aother call to dwimify.  it is used by RECORD, MATCH etc. as well s by CLISP4 in CLISPIFY.")
+
+    (* ;; "The value of DWIMIFY0?  is NOT the expression (dwiified) but T or NIL depending on whether or not there was any change, i.e. the value of dwiifychange.")
+
     (PROG NIL
           (SELECTQ DWIMIFYFLG
-              (NIL                                           (* ;; "Under a call to WTFIX, but not under a call to DWIMIFY, e.g. from evaluating a CREATE expression in a user program.")
+              (NIL 
+                   (* ;; "Under a call to WTFIX, but not under a call to DWIMIFY, e.g. from evaluating a CREATE expression in a user program.")
+
                    (SETQ NOFIXFNSLST0 NOFIXFNSLST)
                    (SETQ NOFIXVARSLST0 NOFIXVARSLST))
-              ((CLISPIFY VARSBOUND)                          (* ;; "e.g. call from clispify or record package.  WAnt it to look like we are inside of a call to dwimify.  calling function has already set up VARS and EXPR.")
+              ((CLISPIFY VARSBOUND) 
+
+                                 (* ;; "e.g. call from clispify or record package.  WAnt it to look like we are inside of a call to dwimify.  calling function has already set up VARS and EXPR.")
+
                    (SETQ NOFIXFNSLST0 NOFIXFNSLST)
                    (SETQ NOFIXVARSLST0 NOFIXVARSLST)
                    [RETURN (PROG ((DWIMIFY0CHANGE T)
-                                  (DWIMIFYING T))            (* ; 
-                                      "This is going to be treated as though were a caal to dwimify.")
+                                  (DWIMIFYING T))            (* ; 
+                                      "This is going to be treated as though were a caal to dwimify.")
                                  (RETURN (DWMFY0])
-              (EVAL                                          (* ; 
-                                "random call to dwimify0?  EVAL IS THE TOP LEVEL VALUE OF DWIMIFYFLG")
+              (EVAL                                          (* ; 
+                                "random call to dwimify0?  EVAL IS THE TOP LEVEL VALUE OF DWIMIFYFLG")
                     (SETQ NOFIXFNSLST0 NOFIXFNSLST)
                     (SETQ NOFIXVARSLST0 NOFIXVARSLST)
                     [RETURN (PROG (DWIMIFYFLG FAULTPOS EXPR VARS)
@@ -243,7 +257,9 @@ with the terms of said license.
   [LAMBDA (FORM CLISPCONTEXT FORMSFLG)
     (COND
        (DWIMIFYFLG (DWMFY1 FORM))
-       (T                                                    (* ;; "See comment in dwimify0.  DWIMIFY1?  is used where caller is not sure whether state variables have been set up.")
+       (T 
+          (* ;; "See comment in dwimify0.  DWIMIFY1?  is used where caller is not sure whether state variables have been set up.")
+
           (PROG ((DWIMIFYING (AND DWIMIFYFLG DWIMIFYING))
                  (DWIMIFYFLG T)
                  DWIMIFYCHANGE)
@@ -252,7 +268,7 @@ with the terms of said license.
                 (RETURN (DWMFY1 FORM])
 
 (DWMFY1
-  [LAMBDA (FORM)                                             (* lmm " 3-Jan-86 21:29")
+  [LAMBDA (FORM)                                             (* lmm " 3-Jan-86 21:29")
     (PROG ((X FORM)
            CARFORM TEM CLISPCHANGE 89CHANGE ATTEMPTFLG CARISOKFLG)
           [COND
@@ -273,7 +289,10 @@ with the terms of said license.
                        CLISPRETRANFLG
                        (RETURN X))
                    (NOT (COND
-                           [(LISTP CARFORM)                  (* ;; "Checks whether CAR is a function object with a remote translation.  Also converts to hash array from CLISP  if hash array exists.  CARISOKFLG is set so dont have to recheck at LP1.")
+                           [(LISTP CARFORM)
+
+                            (* ;; "Checks whether CAR is a function object with a remote translation.  Also converts to hash array from CLISP  if hash array exists.  CARISOKFLG is set so dont have to recheck at LP1.")
+
                             (OR (EQ (SETQ TEM (OR (CDR (FASSOC (CAAR X)
                                                               DWIMEQUIVLST))
                                                   (CAAR X)))
@@ -282,37 +301,46 @@ with the terms of said license.
                                 (SETQ CARISOKFLG (AND (CHECKTRAN CARFORM)
                                                       (NULL CLISPRETRANFLG]
                            ((LITATOM CARFORM)
-                            (CLISP-SIMPLE-FUNCTION-P CARFORM](* ; 
-                                                  "The AND is true if CAR of form is not recognized.")
+                            (CLISP-SIMPLE-FUNCTION-P CARFORM](* ; 
+                                                  "The AND is true if CAR of form is not recognized.")
               (COND
                  [(PROG (NEXTAIL)
-                        (RETURN (WTFIX0 X X X X)))           (* ; "Successful correction.")
+                        (RETURN (WTFIX0 X X X X)))           (* ; "Successful correction.")
                   (COND
                      ((CHECKTRAN X)
                       (RETURN X))
                      [CLISPCHANGE (COND
                                      ((NEQ CLISPCHANGE 'PARTIAL)
-                                                             (* ;; "The tail must be DWIMIFIED if the transformation did not affect the entire form, e.g. (FOO<...> ...)")
+
+                                      (* ;; "The tail must be DWIMIFIED if the transformation did not affect the entire form, e.g. (FOO<...> ...)")
+
                                       (RETURN FORM))
                                      ((LISTP CARFORM)
                                       (GO DWIMIFYTAIL))
                                      (T (SETQ CLISPCHANGE NIL)
-                                        (GO TOP)             (* ; 
-                                                "Recheck CAR of FORM, as it may still be misspelled.")
+                                        (GO TOP)             (* ; 
+                                                "Recheck CAR of FORM, as it may still be misspelled.")
                                         ]
                      (89CHANGE (SETQ 89CHANGE NIL)
-                            (GO TOP)                         (* ; 
-                             "Recheck CAR of FORM, as it still may be misspelled, e.g. (conss8car X)")
+                            (GO TOP)                         (* ; 
+                             "Recheck CAR of FORM, as it still may be misspelled, e.g. (conss8car X)")
                             ]
                  ((AND CLISPCHANGE (NEQ CLISPCHANGE 'PARTIAL))
-                                                             (* ;; "This means a CLISPCHANGE failed and not to bother with dwimifying rest of form, e.g. a bad IF or FOR statement.")
+
+                  (* ;; "This means a CLISPCHANGE failed and not to bother with dwimifying rest of form, e.g. a bad IF or FOR statement.")
+
                   (RETURN FORM))
                  ((AND (NULL ATTEMPTFLG)
-                       (LITATOM CARFORM))                    (* ;; "ATTEMPTFLG is used to distinguish between the case where DWIM does not recognize the problem at all, and that where it did but was unable to make the correction, e.g. a malformed IF, or else the user vetoed the correction.")
+                       (LITATOM CARFORM))
+
+                  (* ;; "ATTEMPTFLG is used to distinguish between the case where DWIM does not recognize the problem at all, and that where it did but was unable to make the correction, e.g. a malformed IF, or else the user vetoed the correction.")
+
                   (SETQ NOFIXFNSLST0 (CONS CARFORM NOFIXFNSLST0]
-                                                             (* ;; "The call to WTFIX is made before specific checks on CAR of FORM, since CAR of the FORM may be misspelled.")
+
+     (* ;; "The call to WTFIX is made before specific checks on CAR of FORM, since CAR of the FORM may be misspelled.")
+
           (COND
-             ((LISTP CARFORM)                                (* ; "Skip selectq")
+             ((LISTP CARFORM)                                (* ; "Skip selectq")
               (GO DWIMIFYTAIL)))
           [SELECTQ CARFORM
               (* ; "NIL")
@@ -320,8 +348,8 @@ with the terms of said license.
                              (FUNCTION (LAMBDA (X)
                                          (SELECTQ (CAR X)
                                              ((USEDFREE GLOBALVARS) 
-                                                             (* ; 
-                  "SPECVARS AND LOCALVARS WOULD PRESUMABLY BE BOUND SOMEWHERE SO NO NEED TO ADD THEM")
+                                                             (* ; 
+                  "SPECVARS AND LOCALVARS WOULD PRESUMABLY BE BOUND SOMEWHERE SO NO NEED TO ADD THEM")
                                                   (SETQ NOFIXVARSLST0 (UNION (LISTP (CDR X))
                                                                              NOFIXVARSLST0)))
                                              NIL])
@@ -358,8 +386,8 @@ with the terms of said license.
                                       (DWIMIFY2 X X NIL T])
               (FUNCTION [DWIMIFY1 (COND
                                      ((LISTP (CADR X)))
-                                     ((NULL (CDDR X))        (* ; 
-                          "Doesnt DWIMIFY for (FUCNTION FOO (X Y)) i.e. FUNARY with atomic argument.")
+                                     ((NULL (CDDR X))        (* ; 
+                          "Doesnt DWIMIFY for (FUCNTION FOO (X Y)) i.e. FUNARY with atomic argument.")
                                       (CDR X])
               (RESETVAR (DWIMIFY2 (CDDR X)
                                FORM T))
@@ -372,7 +400,7 @@ with the terms of said license.
                                      (LIST (CADR X]
                            VARS)))
               (COND
-                 ((EQMEMB 'BINDS (GETPROP CARFORM 'INFO))    (* ; "PROG EQUIVALENTS")
+                 ((EQMEMB 'BINDS (GETPROP CARFORM 'INFO))    (* ; "PROG EQUIVALENTS")
                   ([LAMBDA (VARS)
                      (DWIMIFY2 (CDDR X)
                             FORM T]
@@ -389,8 +417,8 @@ with the terms of said license.
                                                               (FMEMB X (CADR FORM]
                                                    (CAR X]
                           VARS)))
-                 ((CLISPNOEVAL CARFORM)                      (* ; 
-                                                             "Don't DWIMIFY the tails of nlambdas.")
+                 ((CLISPNOEVAL CARFORM)                      (* ; 
+                                                             "Don't DWIMIFY the tails of nlambdas.")
                   )
                  (T (GO DWIMIFYTAIL]
           (RETURN FORM)
@@ -399,13 +427,16 @@ with the terms of said license.
                  FORM)
           (SETQ CARFORM (OR (CDR (FASSOC (CAR X)
                                         DWIMEQUIVLST))
-                            (CAR X)))                        (* ; 
-                                                     "CARFORM may have changed if DWIMIFY2 changed X")
+                            (CAR X)))                        (* ; 
+                                                     "CARFORM may have changed if DWIMIFY2 changed X")
           (COND
              [(LISTP CARFORM)
               (AND (NULL CARISOKFLG)
                    (NULL CLISPCHANGE)
-                   (DWIMIFY1 CARFORM))                       (* ;; "Note that if CAR is a list, it itself has not yet been dwimified, e.g. may be a misspelled LAMBDA.  However If CLISPCHANGE is not NIL, this expression was produced by the call to WTFIX and hence is already dwimified.")
+                   (DWIMIFY1 CARFORM))
+
+              (* ;; "Note that if CAR is a list, it itself has not yet been dwimified, e.g. may be a misspelled LAMBDA.  However If CLISPCHANGE is not NIL, this expression was produced by the call to WTFIX and hence is already dwimified.")
+
               (COND
                  ((AND (NULL FORMSFLG)
                        (NEQ (SETQ TEM (OR (CDR (FASSOC (CAAR X)
@@ -429,11 +460,11 @@ with the terms of said license.
           (RETURN FORM])
 
 (DWIMIFY1A
-  [LAMBDA (PARENT TAIL FN)                                   (* wt%: "10-DEC-80 23:36")
+  [LAMBDA (PARENT TAIL FN)                                   (* wt%: "10-DEC-80 23:36")
     (COND
        ((AND (NULL DWIMESSGAG)
              (OR FN (AND DWIMIFYFLG DWIMIFYING))
-             (NEQ CLISPCONTEXT 'IFWORD))                     (* ; "clispif handles this itself.")
+             (NEQ CLISPCONTEXT 'IFWORD))                     (* ; "clispif handles this itself.")
         (AND (FIXPRINTIN (OR FN FAULTFN))
              (LISPXSPACES 1 T))
         (COND
@@ -461,7 +492,9 @@ with the terms of said license.
   [LAMBDA (TAIL PARENT SUBPARENT FORMSFLG ONEFLG ONLYSPELLFLG CLISPCONTEXT)
     (COND
        (DWIMIFYFLG (DWMFY2))
-       (T                                                    (* ;; "See comment in dwimify0.  DWIMIFY2?  is used where caller is not sure whether state variables have been set up.")
+       (T 
+          (* ;; "See comment in dwimify0.  DWIMIFY2?  is used where caller is not sure whether state variables have been set up.")
+
           (PROG ((DWIMIFYING (AND DWIMIFYFLG DWIMIFYING))
                  (DWIMIFYFLG T)
                  DWIMIFYCHANGE)
@@ -478,7 +511,7 @@ with the terms of said license.
                (AND (OR (EQ SUBPARENT T)
                         (EQ PARENT TAIL))
                     (SETQ SUBPARENT TAIL))
-          
+
           (* ;; "Means dont ever back up beyond this point, e.g. in prog variables, if you write (PROG ((X FOO Y LT 3) ..  dont want LT to gobble the x.))")
 
                (SETQ CARPARENT (OR (CDR (FASSOC (CAR PARENT)
@@ -514,25 +547,24 @@ with the terms of said license.
                                                            "none of the following corrections wanted")
                          )
                   ((CLISPNOTVARP X)
-          
-          (* ;; "(CAR TAIL) is not recognized as a variable.  Note that when DWIMIFYING, WTFIX will be called on a variable which is used freely, but does not have a top level binding, i.e. DWIMIFYING hile the variable is bound is not sufficient, because we do not do a STKSCAN for its value, as this would be expensive.  (STKSCAN is done when DWIMIFY2 is called out of an evaluation.)")
+
+                   (* ;; "(CAR TAIL) is not recognized as a variable.  Note that when DWIMIFYING, WTFIX will be called on a variable which is used freely, but does not have a top level binding, i.e. DWIMIFYING hile the variable is bound is not sufficient, because we do not do a STKSCAN for its value, as this would be expensive.  (STKSCAN is done when DWIMIFY2 is called out of an evaluation.)")
 
                    (COND
                       [(AND FORMSFLG (EQ TAIL PARENT)
                             (DWIMIFY2A TAIL 'QUIET))
-          
-          (* ;; "DWIMIFY2A calls CLISPFUNCTION?  to see if (CAR TAIL) is the name of a function.  If FORMSFLG is true and (CAR TAIL) is name of function, then TAIL may be one form with parenteeses removed.")
+
+                       (* ;; "DWIMIFY2A calls CLISPFUNCTION?  to see if (CAR TAIL) is the name of a function.  If FORMSFLG is true and (CAR TAIL) is name of function, then TAIL may be one form with parenteeses removed.")
 
                        (COND
                           ((OR (NEQ X (CAR TAIL))
                                (NEQ FORMSFLG 'FORWORD))
-          
-          (* ;; "Either the user has approved the combined spelling correction and insertion of paentheses, or else we are not under an I>S> without an oerator.  (E.g. FOR X IN Y WHILE ATOM PRINT X, In this cae dont want to insert parentheses.) Note that if FOO is also the name of a variable as well as a function, no harm will be done in cases like IF A THEN FOO _ X.  Only possible problem is for case like IF A THEN FOO _ X Y, where FFO is both a functionand a variable.  In this case, parens would be inserted, and then an error generated.  HOwever, this is extremely unlikely, since in most cases it would be written as IF A THEN FOO_X Y (not to mention the added improbability of FOO being both the name of a function and a variable.)")
+
+                           (* ;; "Either the user has approved the combined spelling correction and insertion of paentheses, or else we are not under an I>S> without an oerator.  (E.g. FOR X IN Y WHILE ATOM PRINT X, In this cae dont want to insert parentheses.) Note that if FOO is also the name of a variable as well as a function, no harm will be done in cases like IF A THEN FOO ← X.  Only possible problem is for case like IF A THEN FOO ← X Y, where FFO is both a functionand a variable.  In this case, parens would be inserted, and then an error generated.  HOwever, this is extremely unlikely, since in most cases it would be written as IF A THEN FOO←X Y (not to mention the added improbability of FOO being both the name of a function and a variable.)")
 
                            (GO ASK))
                           (T 
-          
-          (* ;; "(CAR TAIL) is the name of a function, but user hasnt been consulted, and we are under a FOR with no operator, so wait.")
+                             (* ;; "(CAR TAIL) is the name of a function, but user hasnt been consulted, and we are under a FOR with no operator, so wait.")
 
                              (SETQ FNFLG T)                  (* ; 
  "Now drop through to next COND and call to WTFIX (because (CAR TAIL) may be a miispelled variable.)")
@@ -545,8 +577,8 @@ with the terms of said license.
                             (DWIMIFY2A TAIL 'QUIET)
                             (OR (NEQ X (CAR TAIL))
                                 (LISTP CARPARENT)))
-          
-          (* ;; "Corresponds to the case where the user left a DO out of a for statement.  Already know that the first thing in TAIL is not the name of a function.  However, only take action if the usr approves combined correction, (or (CAR PARENT) is a list.) since it is still possible that X is the (misspelled) name of a variable.")
+
+                       (* ;; "Corresponds to the case where the user left a DO out of a for statement.  Already know that the first thing in TAIL is not the name of a function.  However, only take action if the usr approves combined correction, (or (CAR PARENT) is a list.) since it is still possible that X is the (misspelled) name of a variable.")
 
                        (SETQQ FORMSFLG FOR1)
                        (GO INSERT))
@@ -556,8 +588,8 @@ with the terms of said license.
                             (CDDR TAIL))
                        (AND (EQ TAIL PARENT)
                             (SETQ NOTOKFLG T))
-          
-          (* ;; "E.g. (LIST X FOR X IN A --) The CDDR check is because very seldom you have an iterative statement only two elements long, but lots of places where iterative words can appear in another context, e.g. OF, TO, etc. See comment below on NOTOKFLG.  Note that if FORMSFLG is true and (EQ TAIL PARENT), then CLISPFUNCTION?  (via DWIMIFY2A) above would have returned T.")
+
+                       (* ;; "E.g. (LIST X FOR X IN A --) The CDDR check is because very seldom you have an iterative statement only two elements long, but lots of places where iterative words can appear in another context, e.g. OF, TO, etc. See comment below on NOTOKFLG.  Note that if FORMSFLG is true and (EQ TAIL PARENT), then CLISPFUNCTION?  (via DWIMIFY2A) above would have returned T.")
 
                        (DWIMIFY1A PARENT TAIL)               (* ; 
                                     "Stop dwimifying, strong evidence that expression is screwed up.")
@@ -566,8 +598,8 @@ with the terms of said license.
                       ((AND [NULL (AND ONLYSPELLFLG (OR (EQ NOSPELLFLG T)
                                                         (AND NOSPELLFLG (NULL TYPE-IN?]
                             (WTFIX0 X TAIL PARENT SUBPARENT ONLYSPELLFLG))
-          
-          (* ;; "If both ONLYSPELLFLG and NOSPELLFLG are true, no point in calling WTFIX.  ONLYSPELLFLG is true on calls fro CLISPATOM2A.")
+
+                       (* ;; "If both ONLYSPELLFLG and NOSPELLFLG are true, no point in calling WTFIX.  ONLYSPELLFLG is true on calls fro CLISPATOM2A.")
 
                        (COND
                           (89CHANGE (SETQ NOTOKFLG NIL)
@@ -581,13 +613,13 @@ with the terms of said license.
                         "NOTOKFLG=T means first expression in TAIL was not recognized as a variable.")
                    [COND
                       ((AND FORMSFLG (EQ TAIL PARENT))
-          
-          (* ;; "After DWIMIFYING the whole tail, if CAR is still an atom, we may want to insert parentheses, e.g. (FOO _ X Y) is ok, but (FOO X Y) may need to be converted to ((FOO X Y))")
+
+                       (* ;; "After DWIMIFYING the whole tail, if CAR is still an atom, we may want to insert parentheses, e.g. (FOO ← X Y) is ok, but (FOO X Y) may need to be converted to ((FOO X Y))")
 
                        )
                       [(FGETD X)
-          
-          (* ;; "Don't add a function name to NOFIXVARSLST0 since this is tantamount to sanctiooning it as a variale.")
+
+                       (* ;; "Don't add a function name to NOFIXVARSLST0 since this is tantamount to sanctiooning it as a variale.")
 
                        (COND
                           ((AND (EQ FORMSFLG 'FORWORD)
@@ -629,8 +661,8 @@ with the terms of said license.
                             (OR (NULL NOTOKFLG)
                                 (NULL FNFLG))
                             (LISTP (CADR TAIL0]
-          
-          (* ;; "Corresponds to the cse where the user left out a DO.  Want to check this before below as in this case dont want to stick in paens around entire form.")
+
+                   (* ;; "Corresponds to the cse where the user left out a DO.  Want to check this before below as in this case dont want to stick in paens around entire form.")
 
                    (GO OUT1))
                   ((EQ FORMSFLG T)                           (* ; 
@@ -639,15 +671,15 @@ with the terms of said license.
                   [(CDR TAIL0)                               (* ; "FORMSFLG is FOR or IF")
                    (COND
                       ((OR NOTOKFLG (DWIMIFY2A TAIL0 'QUIET))
-          
-          (* ;; "(CAR TAIL) is not the name of a variable, or else IS the name of a function.  The reason for the call to CLISPFUNCTION?  (via DWIMIFY2A) instead of checking FNFLG is that in the case that (CAR TAIL) was the name of a variable as indicated by NOTOKFLG=NIL, CLISPFUNCTION?  would not have been called earlier.")
+
+                       (* ;; "(CAR TAIL) is not the name of a variable, or else IS the name of a function.  The reason for the call to CLISPFUNCTION?  (via DWIMIFY2A) instead of checking FNFLG is that in the case that (CAR TAIL) was the name of a variable as indicated by NOTOKFLG=NIL, CLISPFUNCTION?  would not have been called earlier.")
 
                        (/RPLNODE TAIL0 (CONS (CAR TAIL0)
                                              (CDR TAIL0)))
                        (GO OUT1]
                   ((AND NOTOKFLG FNFLG)
-          
-          (* ;; "(CAR TAIL) is not the name of a variable and is the name of a function, but nothing follows it.  E.g. IF -- THEN RETURN ELSE --")
+
+                   (* ;; "(CAR TAIL) is not the name of a variable and is the name of a function, but nothing follows it.  E.g. IF -- THEN RETURN ELSE --")
 
                    (/RPLNODE TAIL0 (CONS (CAR TAIL0)
                                          (CDR TAIL0)))
@@ -657,8 +689,8 @@ with the terms of said license.
                           ((NULL ONEFLG)
                            TAIL0)
                           (NOTOKFLG 
-          
-          (* ;; "In this way, the function thatcaled DWIMIFY2 can find out whether or not the atom in question is OK.  NOte that if it appears on NOFIXLST, it is OK, i.e. havng been seen before, we treat it the same as a variable or what not.")
+
+                                 (* ;; "In this way, the function thatcaled DWIMIFY2 can find out whether or not the atom in question is OK.  NOte that if it appears on NOFIXLST, it is OK, i.e. havng been seen before, we treat it the same as a variable or what not.")
 
                                  NIL)
                           ((NULL NEXTAIL)
@@ -683,14 +715,14 @@ with the terms of said license.
                (GO DROPTHRU])
 
 (DWIMIFY2A
-  [LAMBDA ($TAIL $TYP)                                       (* wt%: 25-FEB-76 1 54)
+  [LAMBDA ($TAIL $TYP)                                       (* wt%: 25-FEB-76 1 54)
     (CLISPFUNCTION? $TAIL $TYP [FUNCTION (LAMBDA (X Y)
                                            (SUBSTRING (RETDWIM2 Y)
                                                   2 -1]
            [FUNCTION (LAMBDA (X Y)
                        (CONCAT [MKSTRING (RETDWIM2 (COND
                                                       [(LISTP X)
-                                                             (* ; "Run-on.")
+                                                             (* ; "Run-on.")
                                                        (CONS (CAR X)
                                                              (CONS (CDR X)
                                                                    (CDR Y]
@@ -699,19 +731,25 @@ with the terms of said license.
            $TAIL])
 
 (CLISPANGLEBRACKETS
-  [LAMBDA (LST)                                              (* wt%: "26-JUN-78 01:20")
+  [LAMBDA (LST)                                              (* wt%: "26-JUN-78 01:20")
     (PROG [WORKFLAG (NCONCLKUP (CLISPLOOKUP 'NCONC))
                  (NCONC1LKUP (CLISPLOOKUP 'NCONC1]
           (RETURN (SHRIEKER LST])
 
 (SHRIEKER
-  [LAMBDA (LOOKAT)                                           (* ;; "Shrieker is designed to 'understand' expressions of the form (! A B !! C !! D E F), where A, B, C,...  represent lists, ! indicates that the list following it is to be (non-destructively) expanded (e.g. A's elements are to be brought to the top level of the list which contains A), and !! indicates that the list following it is to be destructively expanded.  Thus, if A= (H I J), B= (K L M), C= (N O P), the result of evaluating (! A !! B C) should be a list (H I J K L M C).  SHRIEKER does not actually evaluate the list given to it, but rather returns a form which will have the correct evaluation.  Thus, if SHRIEKER is given the (shriekified) list (! A !! B C), it will return the form (APPEND A (NCONC1 B C)).  Should A,B,C have the values given above, then evaluation of this form will leave A unchanged, but B will have been destructively altered, and will now evaluate to the list (K L M (N O P)).")
+  [LAMBDA (LOOKAT)
+
+    (* ;; "Shrieker is designed to 'understand' expressions of the form (! A B !! C !! D E F), where A, B, C,...  represent lists, ! indicates that the list following it is to be (non-destructively) expanded (e.g. A's elements are to be brought to the top level of the list which contains A), and !! indicates that the list following it is to be destructively expanded.  Thus, if A= (H I J), B= (K L M), C= (N O P), the result of evaluating (! A !! B C) should be a list (H I J K L M C).  SHRIEKER does not actually evaluate the list given to it, but rather returns a form which will have the correct evaluation.  Thus, if SHRIEKER is given the (shriekified) list (! A !! B C), it will return the form (APPEND A (NCONC1 B C)).  Should A,B,C have the values given above, then evaluation of this form will leave A unchanged, but B will have been destructively altered, and will now evaluate to the list (K L M (N O P)).")
+
     (PROG (CARTEST RESULTP)
           (COND
              ((OR (ATOM LOOKAT)
                   (NLISTP LOOKAT))
               (SETQ WORKFLAG NIL)
-              (RETURN LOOKAT)))                              (* ;; "As is evident from a look at the code, SHRIEKER is a fairly straightforward recursive prog;  analysis of the argument, LOOKAT, is doen in effect from the tail of LOOKat to its head.  I>e.  given LOOKAT SHRIEKER separates it into two parts (roughly car and cdr), where one part (CARTEST) is the first element of LOOKAT that is not ! or !! , and the other part is the tail of LOOKAT below CARTEST-- LOOKAT is reset to evaluate to this tail and SHRIEKER is called recursively on the new LOOKAT, eventually returning a list structure, to which we setq RESULTP, that is the LISP equivalent of LOOKAT (which, with its !'s and !!'s is an expression in CLISP).  The calling incarnation of SHRIEKER uses RESULTP and its knowledge of the shriek-sysmbol (! or ! ! or !!) immediately before CARTEST, to determine how CARTEST and RESULTP should be used to form the list structure that will be returned, possibly to higher level incarnations of SHRIEKER.  into then possibly incarnations SHRIEKER.")
+              (RETURN LOOKAT)))
+
+     (* ;; "As is evident from a look at the code, SHRIEKER is a fairly straightforward recursive prog;  analysis of the argument, LOOKAT, is doen in effect from the tail of LOOKat to its head.  I>e.  given LOOKAT SHRIEKER separates it into two parts (roughly car and cdr), where one part (CARTEST) is the first element of LOOKAT that is not ! or !! , and the other part is the tail of LOOKAT below CARTEST-- LOOKAT is reset to evaluate to this tail and SHRIEKER is called recursively on the new LOOKAT, eventually returning a list structure, to which we setq RESULTP, that is the LISP equivalent of LOOKAT (which, with its !'s and !!'s is an expression in CLISP).  The calling incarnation of SHRIEKER uses RESULTP and its knowledge of the shriek-sysmbol (! or ! ! or !!) immediately before CARTEST, to determine how CARTEST and RESULTP should be used to form the list structure that will be returned, possibly to higher level incarnations of SHRIEKER.  into then possibly incarnations SHRIEKER.")
+
           (SETQ CARTEST (CAR LOOKAT))
           (SETQ LOOKAT (CDR LOOKAT))
           [RETURN (COND
@@ -723,12 +761,18 @@ with the terms of said license.
                                 (SETQ LOOKAT (CDR LOOKAT))
                                 (COND
                                    ((EQ CARTEST '!)
-                                    (GO A1)))                (* ;; "This conditional insures that SHRIEKER will understnad that the sequence ! ! means the atom !!.  Control will be sent to the statement after A1, which will make sure that CARTEST is NCONCed onto RESULTP (if car of RESULTP is APPEND, CONS, NCONC1, or LIST) or will stuff CARTEST into second place in RESULTP, which is presumalby an NCONC expression-- all provided that WORKFLAG is NIL...")
+                                    (GO A1)))
+
+                                (* ;; "This conditional insures that SHRIEKER will understnad that the sequence ! ! means the atom !!.  Control will be sent to the statement after A1, which will make sure that CARTEST is NCONCed onto RESULTP (if car of RESULTP is APPEND, CONS, NCONC1, or LIST) or will stuff CARTEST into second place in RESULTP, which is presumalby an NCONC expression-- all provided that WORKFLAG is NIL...")
+
                                 (SETQ RESULTP (SHRIEKER LOOKAT))
-                                                             (* ; 
-                                                            "Here's our recursive call to SHRIEKER..")
+                                                             (* ; 
+                                                            "Here's our recursive call to SHRIEKER..")
                                 (COND
-                                   ((NULL RESULTP)           (* ;; "WORKFLAG is a flag that is passed between incarnations of SHRIEKER and is the means by which SHRIEKER is able to distinguish between user-created code and SHRIEKER-created code.  If WORKFLAG eq's T then SHRIEKER knows that what has been returned as RESULTP is user-created code and should not be altered.")
+                                   ((NULL RESULTP)
+
+                                 (* ;; "WORKFLAG is a flag that is passed between incarnations of SHRIEKER and is the means by which SHRIEKER is able to distinguish between user-created code and SHRIEKER-created code.  If WORKFLAG eq's T then SHRIEKER knows that what has been returned as RESULTP is user-created code and should not be altered.")
+
                                     (SETQQ WORKFLAG !IT)
                                     (LIST 'APPEND CARTEST))
                                    ((ATOM RESULTP)
@@ -737,7 +781,10 @@ with the terms of said license.
                                    ((NULL WORKFLAG)
                                     (SETQQ WORKFLAG APPENDING)
                                     (LIST 'APPEND CARTEST RESULTP))
-                                   (T                        (* ;; "If the COND falls througn to this point then we may assume that RESULTP is SHRIEKER-created and do a SELECTQ on car of RESULTP (which should be either APPEND, NCONC, NCONC1, CONS, or LIST) to determine whether we should stuff CARTEST into RESULTP or not.")
+                                   (T 
+
+                                 (* ;; "If the COND falls througn to this point then we may assume that RESULTP is SHRIEKER-created and do a SELECTQ on car of RESULTP (which should be either APPEND, NCONC, NCONC1, CONS, or LIST) to determine whether we should stuff CARTEST into RESULTP or not.")
+
                                       (SELECTQ WORKFLAG
                                           (APPENDING (ATTACH CARTEST (CDR RESULTP))
                                                      RESULTP)
@@ -750,7 +797,10 @@ with the terms of said license.
                                           (!!IT (SETQQ WORKFLAG APPENDING)
                                                 (LIST 'APPEND CARTEST (CADR RESULTP)))
                                           (LIST 'APPEND CARTEST RESULTP]
-                     [LOOKAT                                 (* ;; "If we arrive here then we know that SHRIEKER's arguemnt-- hte intial value of LOOKAT--is a list, the first element of which is not ! or !!.  Accordingly, we attempt to CONS or LIST together CARTEST and RESULTP, depending on the nature of RESULTP and the value of WORKFLAG left by the recursive call to SHRIEKER in the statement below.")
+                     [LOOKAT 
+
+                            (* ;; "If we arrive here then we know that SHRIEKER's arguemnt-- hte intial value of LOOKAT--is a list, the first element of which is not ! or !!.  Accordingly, we attempt to CONS or LIST together CARTEST and RESULTP, depending on the nature of RESULTP and the value of WORKFLAG left by the recursive call to SHRIEKER in the statement below.")
+
                             (SETQ RESULTP (SHRIEKER LOOKAT))
                             (COND
                                ((NULL WORKFLAG)
@@ -766,7 +816,9 @@ with the terms of said license.
                                            (SETQQ WORKFLAG CONSING)
                                            (LIST 'CONS CARTEST (CADR RESULTP)))
                                       (LIST 'CONS CARTEST RESULTP]
-                     (T                                      (* ;; "If we reach this point then we know that SHRIEKER was called on a singleton, i.e. the intial vlaue of LOOKAT was a list of one element, so we create the appropriate list structure around that element and setq WORKFLAG to NIL, enabling a possible parent SHRIEKER to modify our code.")
+                     (T 
+                        (* ;; "If we reach this point then we know that SHRIEKER was called on a singleton, i.e. the intial vlaue of LOOKAT was a list of one element, so we create the appropriate list structure around that element and setq WORKFLAG to NIL, enabling a possible parent SHRIEKER to modify our code.")
+
                         (SETQQ WORKFLAG LISTING)
                         (LIST 'LIST CARTEST]
       A1  (RETURN (COND
@@ -806,8 +858,10 @@ with the terms of said license.
                                       (LIST NCONCLKUP CARTEST RESULTP])
 
 (CLISPRESPELL
-  [LAMBDA (TL WORDS FLG)                                     (* lmm " 4-SEP-83 23:31")
-                                                             (* ;; "CLISPRESPELL essentially asks is it possible to inerpret (CAR TAIL) as one of WORDS.  It first checks to make sure (CAR TAIL) isnt already something else-- e.g. a function, variable, member of NOFIXFNSLST (which is the same as being a function) etc.")
+  [LAMBDA (TL WORDS FLG)                                     (* lmm " 4-SEP-83 23:31")
+
+    (* ;; "CLISPRESPELL essentially asks is it possible to inerpret (CAR TAIL) as one of WORDS.  It first checks to make sure (CAR TAIL) isnt already something else-- e.g. a function, variable, member of NOFIXFNSLST (which is the same as being a function) etc.")
+
     (AND (NEQ NOSPELLFLG T)
          (OR (NOT NOSPELLFLG)
              TYPE-IN?)
@@ -819,7 +873,7 @@ with the terms of said license.
                 NIL WORDS FLG])
 
 (EXPRCHECK
-  [LAMBDA (X)                                                (* wt%: "14-FEB-78 00:06")
+  [LAMBDA (X)                                                (* wt%: "14-FEB-78 00:06")
     (PROG (D)
           (COND
              ((NOT (LITATOM X))
@@ -839,30 +893,32 @@ with the terms of said license.
 (DEFINEQ
 
 (CLISPATOM0
-  [LAMBDA (CHARLST TAIL PARENT)                              (* bvm%: "21-Nov-86 18:05")
+  [LAMBDA (CHARLST TAIL PARENT)                              (* bvm%: "21-Nov-86 18:05")
     (AND (NULL SUBPARENT)
          (SETQ SUBPARENT PARENT))
     (PROG ((CURRTAIL TAIL)
            (NOFIXVARSLST1 NOFIXVARSLST0)
            89FLG TEM)
       TOP (SELECTQ (DWIMUNDOCATCH 'CLISPATOM1 (SETQ TEM (CLISPATOM1 TAIL)))
-              (:RESPELL                                      (* ; 
-                                                   "A misspelling was detected.  Need to fix it now.")
+              (:RESPELL                                      (* ; 
+                                                   "A misspelling was detected.  Need to fix it now.")
                         (SETQ NOFIXVARSLST0 NOFIXVARSLST1)
                         (AND DWIMIFYFLG (SETQ CLISPCHANGE NIL))
                         (COND
                            ((PROG1 (CLISPELL TAIL)
-                                   (SETQ CHARLST (DUNPACK (CAR TAIL)
-                                                        WTFIXCHCONLST)))
-                                                             (* ;; "MIsspelling found.  Note that even if the word wasnt found, LST is reset since some tentative changes were tried, it was probably clobbered.")
+                                (SETQ CHARLST (DUNPACK (CAR TAIL)
+                                                     WTFIXCHCONLST)))
+
+                            (* ;; "MIsspelling found.  Note that even if the word wasnt found, LST is reset since some tentative changes were tried, it was probably clobbered.")
+
                             (SETQ CURRTAIL TAIL)
                             (GO TOP))))
-              (NIL                                           (* ; "error")
+              (NIL                                           (* ; "error")
                    (SETQ NOFIXVARSLST0 NOFIXVARSLST1))
               (RETURN TEM))
           (RETURN (COND
-                     (89FLG                                  (* ; 
-                                                            "E.G. N*8FOO -- fix the 8-9 error first.")
+                     (89FLG                                  (* ; 
+                                                            "E.G. N*8FOO -- fix the 8-9 error first.")
                             [PROG ((FAULTX (CAR CURRTAIL)))
                                   (SETQ TEM (FIX89 FAULTX (CAR 89FLG)
                                                    (LENGTH 89FLG]
@@ -873,9 +929,12 @@ with the terms of said license.
                                        TAIL PARENT])
 
 (CLISPATOM1
-  [LAMBDA (TAIL)                                             (* lmm "29-Jul-86 00:25")
-                                                             (* ;;; "This function and its subfunctions handle infix operators.  LST is an exploded list of characters for CAR of TAIL, which is a tail of PARENT.  If LST contains an CLISP operator, or CAR of TAIL is one, CLISPATOM1 scans the rest of tail until it reaches the end of this cluster.  For example, if TAIL is (...  A* B + C D+E ...), the scan will stop after C.  The scan separates out the operators from the operands.  Note that because any operand can be a list, and hence separated from its operator, an operator can occur interior to an atom, as in A*B, at the end of an atom, as in (A* (--)), at the front of an atom, as in ((--) *A), or by itself, as in ((--) * (--)).  Therefore, we permit the same options when the operand is a atomic, i.e. the user can type A*B, A* B, A *B, or A * B.  Note that in the latter two cases, the first argument to the operator is not contained in TAIL, and it is necessary for CLISPATOM1 to back tail up one element using PARENT.")
-                                                             (* ;; "After the scan has been completed, the form for the first operator is assembled.  Since operators are always processed left to right, the first operand to this operator is always the single element preceding it (unless it is a unary operator).  The right boundary, and hence the second operand, is determined by the operator, e.g. * is tighter than +, which is tighter than LS, etc. Thus ...  A*B+C ...  becomes ...  (ITIMES A B) + C ...  while ...  A+B*C ...  becomes ...  (IPLUS A B * C) In either case, the rest of this cluster is processed from within this call to CLISPATOM1, thereby taking advantage of the fact that we know that the atoms do not contain operators, and therefore don't have to be unpacked and examined character by character.")
+  [LAMBDA (TAIL)                                             (* lmm "29-Jul-86 00:25")
+
+(* ;;; "This function and its subfunctions handle infix operators.  LST is an exploded list of characters for CAR of TAIL, which is a tail of PARENT.  If LST contains an CLISP operator, or CAR of TAIL is one, CLISPATOM1 scans the rest of tail until it reaches the end of this cluster.  For example, if TAIL is (...  A* B + C D+E ...), the scan will stop after C.  The scan separates out the operators from the operands.  Note that because any operand can be a list, and hence separated from its operator, an operator can occur interior to an atom, as in A*B, at the end of an atom, as in (A* (--)), at the front of an atom, as in ((--) *A), or by itself, as in ((--) * (--)).  Therefore, we permit the same options when the operand is a atomic, i.e. the user can type A*B, A* B, A *B, or A * B.  Note that in the latter two cases, the first argument to the operator is not contained in TAIL, and it is necessary for CLISPATOM1 to back tail up one element using PARENT.")
+
+    (* ;; "After the scan has been completed, the form for the first operator is assembled.  Since operators are always processed left to right, the first operand to this operator is always the single element preceding it (unless it is a unary operator).  The right boundary, and hence the second operand, is determined by the operator, e.g. * is tighter than +, which is tighter than LS, etc. Thus ...  A*B+C ...  becomes ...  (ITIMES A B) + C ...  while ...  A+B*C ...  becomes ...  (IPLUS A B * C) In either case, the rest of this cluster is processed from within this call to CLISPATOM1, thereby taking advantage of the fact that we know that the atoms do not contain operators, and therefore don't have to be unpacked and examined character by character.")
+
     (PROG ((L CHARLST)
            (LST0 CHARLST)
            CURRTAIL-1 CLTYP CLTYP1 ENDTAIL BROADSCOPE BACKUPFLG OPRFLAG NOTFLG TYP ATMS NOSAVEFLG 
@@ -887,15 +946,18 @@ with the terms of said license.
               (GO NEXT2)))
       TOP (SETQ ATMS NIL)
       LP  (COND
-             ((NULL L)                                       (* ; "End of an atom.")
+             ((NULL L)                                       (* ; "End of an atom.")
               (COND
-                 ((NULL TYP)                                 (* ; 
-             "If we have gone through the first atom without finding an CLISP operator, we are done.")
+                 ((NULL TYP)                                 (* ; 
+             "If we have gone through the first atom without finding an CLISP operator, we are done.")
                   (COND
-                     ((NULL 89FLG)                           (* ; 
-                  "The case where there was an 8 or 9 and an operator has been handled in CL89CHECK.")
+                     ((NULL 89FLG)                           (* ; 
+                  "The case where there was an 8 or 9 and an operator has been handled in CL89CHECK.")
                       )
-                     (CURRTAIL                               (* ;; "8 and 9 errors are handled here instead of back in CLISPATOM where there is similar code, because there may be more than one 8 or 9 in the expression, and the first one may be ok, e.g. 8*X*8ADD1 Y")
+                     (CURRTAIL 
+
+                            (* ;; "8 and 9 errors are handled here instead of back in CLISPATOM where there is similar code, because there may be more than one 8 or 9 in the expression, and the first one may be ok, e.g. 8*X*8ADD1 Y")
+
                             (AND [FIX89A (CAR CURRTAIL)
                                         (CAR (LISTP 89FLG))
                                         (IMINUS (SETQ TEM (LENGTH 89FLG]
@@ -906,13 +968,19 @@ with the terms of said license.
                            (EQ (CAR (LISTP 89FLG))
                                LPARKEY)
                            (EQ (CAR (SETQ TEM (FLAST CHARLST)))
-                               RPARKEY))                     (* ;; "This corresponds to the case where an atom was typed in containing both an 8 and a 9, e.g. FILES?89 or 8EDITF9.  Note that if the atom were part of a larger expression, either CAR of form, or appearing in a tail, (as indicated by CURRTAIL being non-NIL), the fix is performed by FIX89, and involves editing the expression.  In the case covered here, the fix requires changing the EVAL to an apppropriate APPLY.")
+                               RPARKEY))
+
+                      (* ;; "This corresponds to the case where an atom was typed in containing both an 8 and a 9, e.g. FILES?89 or 8EDITF9.  Note that if the atom were part of a larger expression, either CAR of form, or appearing in a tail, (as indicated by CURRTAIL being non-NIL), the fix is performed by FIX89, and involves editing the expression.  In the case covered here, the fix requires changing the EVAL to an apppropriate APPLY.")
+
                       (FIX89TYPEIN (FMEMB LPARKEY (SETQ TEM (LDIFF CHARLST TEM)))
                              TEM T)))
                   (RETURN NIL))
-                 (LST0 (SETQ OPRFLAG T)                      (* ; 
-     "OPRFLAG is T means the element just processed did NOT end in an operator, e.g. A+B, or just A.")
-                       (SETQ TEM (PACK LST0))                (* ;; "Collects characters to the right of the last operator in the atom, or all the characters in the atom, if it contained no operator.")
+                 (LST0 (SETQ OPRFLAG T)                      (* ; 
+     "OPRFLAG is T means the element just processed did NOT end in an operator, e.g. A+B, or just A.")
+                       (SETQ TEM (PACK LST0))
+
+                       (* ;; "Collects characters to the right of the last operator in the atom, or all the characters in the atom, if it contained no operator.")
+
                        (SETQ ATMS (NCONC1 ATMS TEM))
                        (SETQ NOTFLG NIL)))
               (SETQ 89FLG NIL)
@@ -927,11 +995,16 @@ with the terms of said license.
                       (- [COND
                             ((NULL (AND (EQ L LST0)
                                         (CLUNARYMINUS? OPRFLAG)))
-                                                             (* ;; "Says minus is binary.  See comments i CLUNARYMINUS?.  By replacing binary minus with +- in CLISPATOM1, all the rest of the CLISP function can treat minus as unary.")
+
+                             (* ;; "Says minus is binary.  See comments i CLUNARYMINUS?.  By replacing binary minus with +- in CLISPATOM1, all the rest of the CLISP function can treat minus as unary.")
+
                              (FRPLACA L '+-)
                              (SETQ CLTYP1 (GETPROP '+- 'CLISPTYPE])
                       (%' (AND (NEQ L LST0)
-                               (GO LP1))                     (* ;; "' is ignored interior to atoms, e.g. USER can have a function named ATOM' or a variable named A' which is not necessarily defined or bound at time of DWIMIFYing.")
+                               (GO LP1))
+
+                          (* ;; "' is ignored interior to atoms, e.g. USER can have a function named ATOM' or a variable named A' which is not necessarily defined or bound at time of DWIMIFYing.")
+
                           )
                       (COND
                          [BRACKET (COND
@@ -968,38 +1041,50 @@ with the terms of said license.
       LP1 (COND
              ((AND OPRFLAG (NULL BROADSCOPE)
                    (ZEROP BRACKETCNT)
-                   (EQ L CHARLST))                           (* ;; "If OPRFLAG is T and the first character in LST is not an operator, no need to scan further, e.g. A*B C unless we are processing a broad scope operator, e.g. (A EQ FOO B) or unless ANGCNT is not 0, i.e. we are inside of an <> pair.")
-              (OR ENDTAIL (SETQ ENDTAIL CURRTAIL))           (* ;; "If ENDTAIL has not been set yet, set it.  Note that ENDTAIL may already have been set, e.g. A*B+C D, in which case ENDTAIL would correspnd to the position of the +.")
-              (GO OUT)                                       (* ;; "If this is the first character in an atom, then we cango to out, e.g. A+B C.  HOwever, this may be the first character following a >, as in FOO_<A B>C, in which case we have to finish out the atom.")
+                   (EQ L CHARLST))
+
+              (* ;; "If OPRFLAG is T and the first character in LST is not an operator, no need to scan further, e.g. A*B C unless we are processing a broad scope operator, e.g. (A EQ FOO B) or unless ANGCNT is not 0, i.e. we are inside of an <> pair.")
+
+              (OR ENDTAIL (SETQ ENDTAIL CURRTAIL))
+
+              (* ;; "If ENDTAIL has not been set yet, set it.  Note that ENDTAIL may already have been set, e.g. A*B+C D, in which case ENDTAIL would correspnd to the position of the +.")
+
+              (GO OUT)
+
+              (* ;; "If this is the first character in an atom, then we cango to out, e.g. A+B C.  HOwever, this may be the first character following a >, as in FOO←<A B>C, in which case we have to finish out the atom.")
+
               ))
-          (SETQ L (CDR L))                                   (* ; 
-                                                          "Peel off the current character and go on.")
+          (SETQ L (CDR L))                                   (* ; 
+                                                          "Peel off the current character and go on.")
           (GO LP)
       NEXT
-                                                             (* ; 
-                                           "We have just exhausted the lit of characters for an atm.")
+                                                             (* ; 
+                                           "We have just exhausted the lit of characters for an atm.")
           [COND
-             ((NULL TAIL)                                    (* ; 
-                                    "We were originally given just an atom, e.g. user types FOO_FIE.")
+             ((NULL TAIL)                                    (* ; 
+                                    "We were originally given just an atom, e.g. user types FOO←FIE.")
               (SETQ TAIL ATMS)
               (OR PARENT (SETQ PARENT TAIL)))
              ([AND TAIL (OR (CDR ATMS)
                             (NEQ (CAR (LISTP ATMS))
-                                 (CAR CURRTAIL]              (* ;; "Splice burst version of atom into CURRTAIL, and set CURRTAIL to point to the as yet unexamined part of it.  If the OR is not true, CURRTAIL would not be changd so don't bother e.g. (LIST A + B * C)")
+                                 (CAR CURRTAIL]
+
+              (* ;; "Splice burst version of atom into CURRTAIL, and set CURRTAIL to point to the as yet unexamined part of it.  If the OR is not true, CURRTAIL would not be changd so don't bother e.g. (LIST A + B * C)")
+
               [/RPLNODE CURRTAIL (CAR (LISTP ATMS))
                      (NCONC (CDR ATMS)
                             (SETQ CURRTAIL (LISTP (CDR (SETQ CURRTAIL-1 CURRTAIL]
-                                                             (* ; 
-                                                      "CURRTAIL-1 is used for backing up, see below.")
+                                                             (* ; 
+                                                      "CURRTAIL-1 is used for backing up, see below.")
               )
              (T (SETQ CURRTAIL (LISTP (CDR (SETQ CURRTAIL-1 CURRTAIL]
           (COND
-             ((NULL CURRTAIL)                                (* ; 
-                                                        "We have reached the end of the faulty form.")
+             ((NULL CURRTAIL)                                (* ; 
+                                                        "We have reached the end of the faulty form.")
               (GO OUT)))
       NEXT1
-                                                             (* ; 
-                                                             "Look at the next thing in CURRTAIL.")
+                                                             (* ; 
+                                                             "Look at the next thing in CURRTAIL.")
           (COND
              ([AND OPRFLAG DWIMIFYFLG ONEFLG (NULL BROADSCOPE)
                    (ZEROP BRACKETCNT)
@@ -1019,9 +1104,11 @@ with the terms of said license.
                             (AND (NULL BRACKET)
                                  OPRFLAG
                                  (CLBINARYMINUS? CURRTAIL-1 CURRTAIL]
-                   (CLISPNOTVARP (CAR CURRTAIL)))            (* ;; "The OR check is to handle cases like (..  ' F/L) which I think means wquote the whole thing.  NOte that this comes up in expressions like <A 'F/L> since when SHRIEKER calls DWIMIFY2, the ' and F/L have already been split apart.")
-                                                             (* ; 
-                   "dont call clbinaryminus?  if last thing ended in an operator.  e.g. ((foo) + -2)")
+                   (CLISPNOTVARP (CAR CURRTAIL)))
+
+              (* ;; "The OR check is to handle cases like (..  ' F/L) which I think means wquote the whole thing.  NOte that this comes up in expressions like <A 'F/L> since when SHRIEKER calls DWIMIFY2, the ' and F/L have already been split apart.")
+                                                             (* ; 
+                   "dont call clbinaryminus?  if last thing ended in an operator.  e.g. ((foo) + -2)")
               (COND
                  ([AND (SETQ CLTYP1 (GETPROP (CAR CURRTAIL)
                                            'CLISPTYPE))
@@ -1034,7 +1121,10 @@ with the terms of said license.
                  ((AND BRACKET (SETQ TEM (FMEMB (CADR BRACKET)
                                                 (CDDR L)))
                        (NOT (FMEMB (CAR BRACKET)
-                                   L)))                      (* ;; "< and > are thought of as brackets, rather than operaaors.  Therefore this is necessary in order thatthings like <1 2 -1> work, i.e. --- not treated as binary in this case, also <a b 'c>, and finally if A*B is the name of a variable <X A*B> Note that this doesnt quite handle all cases: <A*B> where A*B is the name of a variable, will be broken apart, but then it isnt clear whats intended.")
+                                   L)))
+
+                  (* ;; "< and > are thought of as brackets, rather than operaaors.  Therefore this is necessary in order thatthings like <1 2 -1> work, i.e. --- not treated as binary in this case, also <a b 'c>, and finally if A*B is the name of a variable <X A*B> Note that this doesnt quite handle all cases: <A*B> where A*B is the name of a variable, will be broken apart, but then it isnt clear whats intended.")
+
                   (CLRPLNODE CURRTAIL (PACK (LDIFF L TEM))
                          (CONS (PACK TEM)
                                (CDR CURRTAIL)))
@@ -1058,10 +1148,10 @@ with the terms of said license.
                                                    (T (RETDWIM2 Y]
                           [FUNCTION (LAMBDA (X Y)
                                       (MKSTRING (CONS X (RETDWIM2 Y]
-                          (CAR CURRTAIL)))                   (* ; 
-                                "This clause checks for user typing in apply mode, e.g. X_CONS (A B)")
-              (SETQQ TENTATIVE CERTAINLY)                    (* ; 
-                      "Once you print a message, you dont want to go and try another interpretation.")
+                          (CAR CURRTAIL)))                   (* ; 
+                                "This clause checks for user typing in apply mode, e.g. X←CONS (A B)")
+              (SETQQ TENTATIVE CERTAINLY)                    (* ; 
+                      "Once you print a message, you dont want to go and try another interpretation.")
               (/RPLNODE TEM (CONS (CAR TEM)
                                   (CAR CURRTAIL))
                      (CDR CURRTAIL))
@@ -1071,22 +1161,22 @@ with the terms of said license.
               (GO NEXT1)))
           (COND
              ((AND OPRFLAG (NULL BROADSCOPE)
-                   (ZEROP BRACKETCNT))                       (* ; "Finished.  E.g. A*B (--)")
+                   (ZEROP BRACKETCNT))                       (* ; "Finished.  E.g. A*B (--)")
               (OR ENDTAIL (SETQ ENDTAIL CURRTAIL))
               (GO OUT))
              ([SETQ CURRTAIL (LISTP (CDR (SETQ CURRTAIL-1 CURRTAIL]
-                                                             (* ; "E.g. A* (--)")
+                                                             (* ; "E.g. A* (--)")
               (SETQ OPRFLAG T)
               (SETQ NOTFLG NIL)
               (GO NEXT1))
              (T (GO OUT)))
       NEXT2
-                                                             (* ; 
-                                           "(CAR CURRTAIL) is an operaaor.  CLTYP1 is its CLISPTYPe.")
+                                                             (* ; 
+                                           "(CAR CURRTAIL) is an operaaor.  CLTYP1 is its CLISPTYPe.")
           [SELECTQ (CAR CURRTAIL)
               (- [COND
-                    ((NULL (CLUNARYMINUS? OPRFLAG))          (* ; 
-                  "The minus is biary.  SEe comments at earlier call to CLUNARYMINUS?  in CLSPATOM1.")
+                    ((NULL (CLUNARYMINUS? OPRFLAG))          (* ; 
+                  "The minus is biary.  SEe comments at earlier call to CLUNARYMINUS?  in CLSPATOM1.")
                      (/RPLNODE CURRTAIL '+- (CDR CURRTAIL))
                      (SETQ CLTYP1 (GETPROP '+- 'CLISPTYPE])
               ((-> =>) 
@@ -1114,36 +1204,42 @@ with the terms of said license.
                                                PARENT]
           (COND
              (ENDTAIL)
-             [(NULL TYP)                                     (* ; "This is the first operator.")
+             [(NULL TYP)                                     (* ; "This is the first operator.")
               (SETQ TYP (CAR CURRTAIL))
               (SETQ CLTYP CLTYP1)
               (SETQ BROADSCOPE (GETPROP TYP 'BROADSCOPE))
               (SETQ NOTFLG (EQ (SETQ TEM (GETPROP TYP 'LISPFN))
                                'NOT]
-             (NOTFLG                                         (* ;; "NOTFLG is true when we are processing a NOT opeator, and it immediately precedes the current operator.  In this case, the scope of the NOT is the scope of the next opeator, e.g. (X ~GR FOO Y)")
+             (NOTFLG 
+
+                    (* ;; "NOTFLG is true when we are processing a NOT opeator, and it immediately precedes the current operator.  In this case, the scope of the NOT is the scope of the next opeator, e.g. (X ~GR FOO Y)")
+
                     (SETQ CLTYP CLTYP1)
                     (SETQ BROADSCOPE (GETPROP (CAR CURRTAIL)
                                             'BROADSCOPE))
                     (SETQ NOTFLG (EQ (GETPROP (CAR CURRTAIL)
                                             'LISPFN)
-                                     'NOT))                  (* ; 
-         "So that NOTFLG is not turned off when there are two ~'s in a row, e.g. (X ~~GR FOO Y OR Z)")
+                                     'NOT))                  (* ; 
+         "So that NOTFLG is not turned off when there are two ~'s in a row, e.g. (X ~~GR FOO Y OR Z)")
                     )
              ((STOPSCAN? CLTYP1 CLTYP (CAR CURRTAIL)
-                     OPRFLAG)                                (* ;; "This operator delimits the scope of the first operator found.  Set ENDTAIL to be the first thing not within the scope of the operator.  The AND is so that a unary operator will terminate the scope of a binary operator that has a right hand operand, e.g. X+Y -Z, X_Y 'Z, etc.")
+                     OPRFLAG)
+
+              (* ;; "This operator delimits the scope of the first operator found.  Set ENDTAIL to be the first thing not within the scope of the operator.  The AND is so that a unary operator will terminate the scope of a binary operator that has a right hand operand, e.g. X+Y -Z, X←Y 'Z, etc.")
+
               (SETQ ENDTAIL CURRTAIL)))
           (SETQ ISFLG (EQ [CAR (LISTP (GETPROP (CAR CURRTAIL)
                                              'CLISPCLASS]
                           'ISWORD))
       NEXT3
           [SETQ OPRFLAG (AND BRACKET (EQ (CAR CURRTAIL)
-                                         (CADR BRACKET]      (* ; 
-                                       "OPRFLAG is T aater > since no right hand operand is reuired.")
+                                         (CADR BRACKET]      (* ; 
+                                       "OPRFLAG is T aater > since no right hand operand is reuired.")
           (COND
              ([SETQ CURRTAIL (LISTP (CDR (SETQ CURRTAIL-1 CURRTAIL]
               (GO NEXT1)))
-      OUT                                                    (* ; 
-                       "We are finished scanning.  Now call CLISPATOM2 to assemble the correct form.")
+      OUT                                                    (* ; 
+                       "We are finished scanning.  Now call CLISPATOM2 to assemble the correct form.")
           [COND
              ((NEQ (CAR (LISTP TAIL))
                    TYP)
@@ -1151,10 +1247,13 @@ with the terms of said license.
              ((GETPROP TYP 'UNARYOP)
               (GO OUT1))
              ((OR (EQ PARENT TAIL)
-                  (EQ SUBPARENT TAIL))                       (* ; "E.g. (+ X) or (SETQ Y + X)")
+                  (EQ SUBPARENT TAIL))                       (* ; "E.g. (+ X) or (SETQ Y + X)")
               (DWIMERRORRETURN (LIST 1 TAIL PARENT]
           (SETQ TAIL (NLEFT (OR SUBPARENT PARENT)
-                            1 TAIL))                         (* ;; "SUBPARENT can be used to mark that point in a list beyond which not to back up, e.g. (LAMBDA (X) FOO X LT Y)")
+                            1 TAIL))
+
+     (* ;; "SUBPARENT can be used to mark that point in a list beyond which not to back up, e.g. (LAMBDA (X) FOO X LT Y)")
+
           (SETQ BACKUPFLG T)
       OUT1
           (CLISPATOM2)
@@ -1167,9 +1266,11 @@ with the terms of said license.
                                                                              'CLISPWORD]
                                                           'FORWORD)
                               (OR (EQ CLISPCONTEXT 'FORWORD)
-                                  (EQ CLISPCONTEXT 'FOR/BIND](* ;; "i used to have just a (NULL (AND DWIMIFYFLG ONEFLG)) but this means tht if you have a predicate in an iterative statement, e.g. when x=y+z that it doesnt dwimify completely.  the above clause handles it but i dont remember why i had the original one in there.")
-                                                             (* ; 
-    "reason for the or check is so that DO doesnt get treated as an IS word when coming from an i.s.")
+                                  (EQ CLISPCONTEXT 'FOR/BIND]
+
+              (* ;; "i used to have just a (NULL (AND DWIMIFYFLG ONEFLG)) but this means tht if you have a predicate in an iterative statement, e.g. when x=y+z that it doesnt dwimify completely.  the above clause handles it but i dont remember why i had the original one in there.")
+                                                             (* ; 
+    "reason for the or check is so that DO doesnt get treated as an IS word when coming from an i.s.")
               (SETQ TEM (CLISPATOM1A TYP CLTYP TAIL))
               (COND
                  ((OR DWIMIFYFLG (EQ TEM PARENT))
@@ -1190,21 +1291,26 @@ with the terms of said license.
                         TAIL)
                        (T (CAR (LISTP TAIL]
           (COND
-             ((AND TENTATIVE (NEQ TENTATIVE 'CERTAINLY))     (* ;; "Tentative is set to CERTAINLY when we are sure the correction will be CLISP, and to avoid somebody else setting to T .  IN this casse there will be no message.  This occurs when a message has already been printed, e.g. in X*FOO Y , when user is asked FOO Y -> (FOO Y), the approveal of the CLISP transformation is implicit.")
+             ((AND TENTATIVE (NEQ TENTATIVE 'CERTAINLY))
+
+              (* ;; "Tentative is set to CERTAINLY when we are sure the correction will be CLISP, and to avoid somebody else setting to T .  IN this casse there will be no message.  This occurs when a message has already been printed, e.g. in X*FOO Y , when user is asked FOO Y -> (FOO Y), the approveal of the CLISP transformation is implicit.")
+
               (SETQ CLISPCHANGES (LIST TEM (CLISPATOM1B)
                                        TAIL
                                        (CDR TAIL)
                                        TENTATIVE NOFIXVARSLST0))
-                                                             (* ;; "note --- (CDR TAIL) used to be endtail in above expression, however, for situations where clispatom1a munches for a while, this does not produce the right message, e.g. dwimifying ....  FOO:1='ZAP ...")
+
+              (* ;; "note --- (CDR TAIL) used to be endtail in above expression, however, for situations where clispatom1a munches for a while, this does not produce the right message, e.g. dwimifying ....  FOO:1='ZAP ...")
+
               (AND DWIMIFYFLG (SETQ CLISPCHANGE NIL))
               (DWIMERRORRETURN)))
           (RETURN TEM)
-      OPR                                                    (* ; 
-                                                         "We have hit an operator inside of an atom.")
+      OPR                                                    (* ; 
+                                                         "We have hit an operator inside of an atom.")
           (COND
              ((NEQ L LST0)
-              (SETQ TEM (PACK (LDIFF LST0 L)))               (* ; 
-                                 "Collects characters to the right of the last operator in the atom.")
+              (SETQ TEM (PACK (LDIFF LST0 L)))               (* ; 
+                                 "Collects characters to the right of the last operator in the atom.")
               (COND
                  ((AND (FLOATP TEM)
                        (OR (EQ (CAR L)
@@ -1212,7 +1318,7 @@ with the terms of said license.
                            (EQ (CAR L)
                                '+-))
                        (EQ (CAR (NLEFT LST0 1 L))
-                           'E))                              (* ; "E.G. X+1.0E-5*Y")
+                           'E))                              (* ; "E.G. X+1.0E-5*Y")
                   (AND (EQ (CAR L)
                            '+-)
                        (FRPLACA L '-))
@@ -1222,13 +1328,16 @@ with the terms of said license.
           (SETQ ATMS (NCONC1 ATMS (CAR L)))
           [COND
              (ENDTAIL)
-             [(NULL TYP)                                     (* ; "First operator.")
+             [(NULL TYP)                                     (* ; "First operator.")
               (SETQ TYP (CAR L))
               (SETQ CLTYP CLTYP1)
               (SETQ BROADSCOPE (GETPROP TYP 'BROADSCOPE))
               (SETQ NOTFLG (EQ (GETPROP TYP 'LISPFN)
                                'NOT]
-             [NOTFLG                                         (* ;; "It is not only necessary that we are processing a NOT, but that it immediately precede the current operator.")
+             [NOTFLG 
+
+                    (* ;; "It is not only necessary that we are processing a NOT, but that it immediately precede the current operator.")
+
                     (SETQ CLTYP CLTYP1)
                     (SETQ BROADSCOPE (GETPROP (CAR L)
                                             'BROADSCOPE))
@@ -1237,22 +1346,28 @@ with the terms of said license.
                                      'NOT]
              ((STOPSCAN? CLTYP1 CLTYP (CAR L)
                      (OR (NEQ L LST0)
-                         OPRFLAG))                           (* ;; "This operator delimits the scope of the first operator found.  Set ENDTAIL to be the first thing not within the scope of the operator.")
+                         OPRFLAG))
+
+              (* ;; "This operator delimits the scope of the first operator found.  Set ENDTAIL to be the first thing not within the scope of the operator.")
+
               (SETQ ENDTAIL (COND
-                               ((EQ L CHARLST)               (* ; 
-              "The scope delimiting operator was the first thing in an atom, e.g. A*B +C or A*B + C.")
+                               ((EQ L CHARLST)               (* ; 
+              "The scope delimiting operator was the first thing in an atom, e.g. A*B +C or A*B + C.")
                                 CURRTAIL)
                                (T (FLAST ATMS]
           [SETQ OPRFLAG (AND BRACKET (EQ (CAR L)
-                                         (CADR BRACKET]      (* ; 
-                                       "OPRFLAG is T aater > since no right hand operand is reuired.")
+                                         (CADR BRACKET]      (* ; 
+                                       "OPRFLAG is T aater > since no right hand operand is reuired.")
           (COND
              ([AND (CDR L)
                    CURRTAIL
                    (OR (AND BRACKET (EQ (CAR L)
                                         (CADR BRACKET)))
                        (EQ (CAR L)
-                           '~]                               (* ;; "So that the rest of the atom will be looked at as a unit before being unpacked, e.g. ~GR, want to look up GR.  Also want to look at rest of atom as a unit following >, e.g. FOO_<A B>EQUAL C.  By starting over with a new atom, we also perform the OPRFLAG terminating check, as in FOO_<A B>C.")
+                           '~]
+
+              (* ;; "So that the rest of the atom will be looked at as a unit before being unpacked, e.g. ~GR, want to look up GR.  Also want to look at rest of atom as a unit following >, e.g. FOO←<A B>EQUAL C.  By starting over with a new atom, we also perform the OPRFLAG terminating check, as in FOO←<A B>C.")
+
               (/RPLNODE CURRTAIL (CAR CURRTAIL)
                      (CONS (PACK (CDR L))
                            (CDR CURRTAIL)))
@@ -1261,22 +1376,25 @@ with the terms of said license.
           (SETQ LST0 (CDR L))
           (SETQ L (AND (NEQ (CAR L)
                             '%')
-                       (CDR L)))                             (* ; 
-                                   "Following a ' no operaars are recognized in the rest of the atm.")
+                       (CDR L)))                             (* ; 
+                                   "Following a ' no operaars are recognized in the rest of the atm.")
           (GO LP])
 
 (CLRPLNODE
   [LAMBDA (X A D)
     (PROG ((L (CDR UNDOSIDE)))
           (COND
-             (NOSAVEFLG                                      (* ; 
-                                 "X is not contained in original expression, so don't bother to save")
+             (NOSAVEFLG                                      (* ; 
+                                 "X is not contained in original expression, so don't bother to save")
                     (GO OUT)))
       LP  (COND
-             ((EQ L (CDR UNDOSIDE0))                         (* ; "X has not previously been saved")
+             ((EQ L (CDR UNDOSIDE0))                         (* ; "X has not previously been saved")
               (/RPLNODE X A D)
               (RETURN X))
-             ((NEQ X (CAAR L))                               (* ;; "If X is EQ to CAR of one of the entries on UNDOOSIDE, then the contents of this node have already been saved, so it is ok to smash it.")
+             ((NEQ X (CAAR L))
+
+              (* ;; "If X is EQ to CAR of one of the entries on UNDOOSIDE, then the contents of this node have already been saved, so it is ok to smash it.")
+
               (SETQ L (CDR L))
               (GO LP)))
       OUT (FRPLACA X A)
@@ -1284,8 +1402,10 @@ with the terms of said license.
           (RETURN X])
 
 (STOPSCAN?
-  [LAMBDA (CLTYP2 CLTYP1 OPR OPRFLAG)                        (* wt%: "16-AUG-78 21:47")
-                                                             (* ;; "STOPSCAN?  is T if operator corresponding to CLTYPX would stop scan for operator corresponding to CLTYP, i.e. if former is of lower or same precedence as latter.")
+  [LAMBDA (CLTYP2 CLTYP1 OPR OPRFLAG)                        (* wt%: "16-AUG-78 21:47")
+
+    (* ;; "STOPSCAN?  is T if operator corresponding to CLTYPX would stop scan for operator corresponding to CLTYP, i.e. if former is of lower or same precedence as latter.")
+
     (AND CLTYP2 CLTYP1 (PROG NIL
                              (COND
                                 [BROADSCOPE (COND
@@ -1295,18 +1415,26 @@ with the terms of said license.
                                 [(EQ CLTYP2 'BRACKET)
                                  (RETURN (COND
                                             [(EQ OPR (CAR BRACKET))
-                                                             (* ; "a left bracket")
-                                                             (* ;; "e.g. for X+Y< -- stop scanning.  note that for binary brackets, it never stops as is consistent with them being very tight operators, i.e. FOO_A{..} parses as FOO_ (A{..})")
+                                                             (* ; "a left bracket")
+
+                                 (* ;; "e.g. for X+Y< -- stop scanning.  note that for binary brackets, it never stops as is consistent with them being very tight operators, i.e. FOO←A{..} parses as FOO← (A{..})")
+
                                              (AND OPRFLAG (EQ BRACKETCNT 1)
                                                   (GETP OPR 'UNARYOP]
                                             ((EQ CLTYP1 'BRACKET)
-                                                             (* ;; "i.e. if OPR is the right bracket for BRACKET, or if OPR is some other bracket inside of scope of BRACKET.")
-                                                             (* ;; "if cltyp1 is ot a bracket, then bracket is not the operator, and should really treat the whole bracketed expression as an operand and not stop the scan.")
+
+                                             (* ;; "i.e. if OPR is the right bracket for BRACKET, or if OPR is some other bracket inside of scope of BRACKET.")
+
+                                 (* ;; "if cltyp1 is ot a bracket, then bracket is not the operator, and should really treat the whole bracketed expression as an operand and not stop the scan.")
+
                                              (ZEROP BRACKETCNT]
                                 ((NOT (ZEROP BRACKETCNT))
                                  (RETURN NIL))
                                 ((GETPROP OPR 'UNARYOP)
-                                 (RETURN OPRFLAG)            (* ;; "If OPRFLAG is NIL, we have just seen a unary operator with no operand, so under no circumstance stop the scan.  E.g. X*-Y.  Note that this does NOT say do not consider next operand as possible operatr, so that X*-+Y will generate an error, not try to multiply X by (minus +).  The case whee the unary operaar is ' is handled specially in CLISPATOM1 and CLISPATOM1A.")
+                                 (RETURN OPRFLAG)
+
+                                 (* ;; "If OPRFLAG is NIL, we have just seen a unary operator with no operand, so under no circumstance stop the scan.  E.g. X*-Y.  Note that this does NOT say do not consider next operand as possible operatr, so that X*-+Y will generate an error, not try to multiply X by (minus +).  The case whee the unary operaar is ' is handled specially in CLISPATOM1 and CLISPATOM1A.")
+
                                  ))
                              (RETURN (COND
                                         ([NOT (ILESSP (COND
@@ -1324,13 +1452,17 @@ with the terms of said license.
                                                         ((ATOM CLTYP1)
                                                          CLTYP1)
                                                         (T (CDR CLTYP1]
-                                                             (* ;; "Not sure of this.  it is an attempt to handle the A*B_C+D case.  Here the initial cltyp is that of *, but since the right precedence of _ is looser than that of *, means that it should be operative.")
+
+                                 (* ;; "Not sure of this.  it is an attempt to handle the A*B←C+D case.  Here the initial cltyp is that of *, but since the right precedence of ← is looser than that of *, means that it should be operative.")
+
                                          (SETQ CLTYP CLTYP2)
                                          NIL])
 
 (CLUNARYMINUS?
-  [LAMBDA (OPRFLAG)                                          (* lmm "20-May-84 20:02")
-                                                             (* ;; "True if minus is unary.  This is the case when either (1) it immediately follows an operator (the (AND TYP (NULL OPRFLAG)) check) or (2) it is the first thing in a list (the (EQ CURRTAIL SUBPARENT) check) or else, car of form is a function and not a variable, and --- negates its first argument.  The case where car of form is amisspeleed function is handled, because the tentatitve correction for binry minus will be tried, and then when spelling correction on function name suceeds, this will be implemeneted.  then there will be another call to clispatom when its aagument is evaluated, and this time the functionis spelled right.  Note that the cse where car of a form is a misspelled variable works also, even when the variabl could be confusec for a function, since the correction on the variable is tried first.")
+  [LAMBDA (OPRFLAG)                                          (* lmm "20-May-84 20:02")
+
+    (* ;; "True if minus is unary.  This is the case when either (1) it immediately follows an operator (the (AND TYP (NULL OPRFLAG)) check) or (2) it is the first thing in a list (the (EQ CURRTAIL SUBPARENT) check) or else, car of form is a function and not a variable, and --- negates its first argument.  The case where car of form is amisspeleed function is handled, because the tentatitve correction for binry minus will be tried, and then when spelling correction on function name suceeds, this will be implemeneted.  then there will be another call to clispatom when its aagument is evaluated, and this time the functionis spelled right.  Note that the cse where car of a form is a misspelled variable works also, even when the variabl could be confusec for a function, since the correction on the variable is tried first.")
+
     (OR (AND TYP (NULL OPRFLAG))
         (EQ CURRTAIL SUBPARENT)
         (AND (EQ CURRTAIL (CDR SUBPARENT))
@@ -1352,9 +1484,12 @@ with the terms of said license.
                                       '" " T])
 
 (CLBINARYMINUS?
-  [LAMBDA ($TAIL MINUSTAIL)                                  (* wt%: "10-OCT-78 21:22")
-                                                             (* ;; "used when a negative number follows a list.  we dont know if a space was typed before the --- or not, so in situation ike ((list) -2) or (x* (list) -2) we ask.  warren ^Z")
-                                                             (* ;; "the EQ used to check tail against subparent.  i changed it because on calls to dwimify0?  from record, e.g. (ADD z:1 -1), was trying to treat -1 as binary even though it shouldnt have.")
+  [LAMBDA ($TAIL MINUSTAIL)                                  (* wt%: "10-OCT-78 21:22")
+
+    (* ;; "used when a negative number follows a list.  we dont know if a space was typed before the --- or not, so in situation ike ((list) -2) or (x* (list) -2) we ask.  warren ↑Z")
+
+    (* ;; "the EQ used to check tail against subparent.  i changed it because on calls to dwimify0?  from record, e.g. (ADD z:1 -1), was trying to treat -1 as binary even though it shouldnt have.")
+
     (AND (EQ TAIL PARENT)
          [OR (LISTP (CAR TAIL))
              (NUMBERP (CAR TAIL))
@@ -1379,8 +1514,10 @@ with the terms of said license.
                                           (CDR MINUSTAIL])
 
 (CLISPATOM1A
-  [LAMBDA (TYP CLTYP TAIL NOSAVEFLG)                         (* lmm " 4-SEP-83 22:50")
-                                                             (* ;;; "This function is similar to CLISPATOM1 except that elements of TAIL do not have to be unpacked.  It is called from either CLISPATOM1 or CLISPATOM2 when more than one operator was encountered in a cluster.  CADR of TAIL is TYP, the next operator to be processed, and CLTYP is its CLISPTYPE.  CLISPATOM1A scans down TAIL looking for the right hand boundary of TYP, but does not unpack any atoms.  It then calls CLISPATOM2 to assemble the form, and then if necessary repeats the process.  For example, if the original cluster was A+B*C, the call to CLISPATOM2 from CLISPATOM1 would replace this with (IPLUS A B * C).  CLISPATOM2 would then call CLISPATOM1A with TAIL= (B * C).  Similary, if the original cluster were A*B+C, the call to CLISPATOM2 from CLISPATOM1 would replace this with (ITIMES A B) with + C having been spliced into the tail.  CLISPATOM1 would then call CLISPATOM1A with TAIL= ((ITIMES A B) + C ...)")
+  [LAMBDA (TYP CLTYP TAIL NOSAVEFLG)                         (* lmm " 4-SEP-83 22:50")
+
+(* ;;; "This function is similar to CLISPATOM1 except that elements of TAIL do not have to be unpacked.  It is called from either CLISPATOM1 or CLISPATOM2 when more than one operator was encountered in a cluster.  CADR of TAIL is TYP, the next operator to be processed, and CLTYP is its CLISPTYPE.  CLISPATOM1A scans down TAIL looking for the right hand boundary of TYP, but does not unpack any atoms.  It then calls CLISPATOM2 to assemble the form, and then if necessary repeats the process.  For example, if the original cluster was A+B*C, the call to CLISPATOM2 from CLISPATOM1 would replace this with (IPLUS A B * C).  CLISPATOM2 would then call CLISPATOM1A with TAIL= (B * C).  Similary, if the original cluster were A*B+C, the call to CLISPATOM2 from CLISPATOM1 would replace this with (ITIMES A B) with + C having been spliced into the tail.  CLISPATOM1 would then call CLISPATOM1A with TAIL= ((ITIMES A B) + C ...)")
+
     (PROG (ENDTAIL OPRFLAG BROADSCOPE CLTYP0 BRACKETCNT BRACKET ISFLG)
       TOP (SETQ ISFLG (EQ (CAR (GETPROP TYP 'CLISPCLASS))
                           'ISWORD))
@@ -1389,8 +1526,8 @@ with the terms of said license.
                                1)
                               (T 0)))
           [SETQ ENDTAIL (COND
-                           ((EQ TYP (CAR TAIL))              (* ; 
-                                            "TYP is car of TAIL for unary operatrs, CADR for binary.")
+                           ((EQ TYP (CAR TAIL))              (* ; 
+                                            "TYP is car of TAIL for unary operatrs, CADR for binary.")
                             TAIL)
                            (T (CDR TAIL]
           [COND
@@ -1437,8 +1574,8 @@ with the terms of said license.
                    (GO OUT))
               [SETQ OPRFLAG (AND (EQ CLTYP0 'BRACKET)
                                  (EQ (CAR ENDTAIL)
-                                     (CADR BRACKET]          (* ; 
-                                                             "E.g. X_<A B> see comment in CLISPATOM1")
+                                     (CADR BRACKET]          (* ; 
+                                                             "E.g. X←<A B> see comment in CLISPATOM1")
               )
              ((AND OPRFLAG (ZEROP BRACKETCNT)
                    (NULL BROADSCOPE))
@@ -1453,15 +1590,20 @@ with the terms of said license.
                                                                              'CLISPWORD))
                                                                  'FORWORD)
                               (OR (EQ CLISPCONTEXT 'FORWORD)
-                                  (EQ CLISPCONTEXT 'FOR/BIND](* ;; "E.g. A+B*C+D.  The first call to CLISPATOM1A is with TAIL (B * C + D).  The first call to CLISPATOM2 changes this to ((ITIMES B C) + D), and then we loop back to the top of CLISPATOM1A.  The reason for the OR is so that do does not get treated as an IS WORD when coming from an i.s.")
+                                  (EQ CLISPCONTEXT 'FOR/BIND]
+
+              (* ;; "E.g. A+B*C+D.  The first call to CLISPATOM1A is with TAIL (B * C + D).  The first call to CLISPATOM2 changes this to ((ITIMES B C) + D), and then we loop back to the top of CLISPATOM1A.  The reason for the OR is so that do does not get treated as an IS WORD when coming from an i.s.")
+
               (GO TOP)))
-          (AND TENTATIVE (SETQQ TENTATIVE PROBABLY))         (* ; 
-    "Don't consider another interpretation if there are two or more CLISP operators in this cluster.")
+          (AND TENTATIVE (SETQQ TENTATIVE PROBABLY))         (* ; 
+    "Don't consider another interpretation if there are two or more CLISP operators in this cluster.")
           (RETURN TAIL])
 
 (CLISPATOM1B
-  [LAMBDA NIL                                                (* wt%: 25-FEB-76 1 41)
-                                                             (* ;; "Copies changes.")
+  [LAMBDA NIL                                                (* wt%: 25-FEB-76 1 41)
+
+    (* ;; "Copies changes.")
+
     (PROG ((L UNDOSIDE)
            (L1 (CDR UNDOSIDE0))
            LST)
@@ -1475,7 +1617,7 @@ with the terms of said license.
                                           (CDAAR L)))
                               LST)))
              ((EQ (CAAR L)
-                  '/PUTHASH)                                 (* ; "Pattern match.")
+                  '/PUTHASH)                                 (* ; "Pattern match.")
               (SETQ LST (CONS (LIST '/PUTHASH (CADAR L)
                                     (GETHASH (CADAR L)
                                            CLISPARRAY)
@@ -1484,9 +1626,10 @@ with the terms of said license.
           (GO LP])
 
 (CLISPATOM2
-  [LAMBDA NIL                                                (* bvm%: "21-Nov-86 11:56")
-                                                             (* ;; 
-                                                    "Assembles LISP forms from the CLISP expressions")
+  [LAMBDA NIL                                                (* bvm%: "21-Nov-86 11:56")
+
+    (* ;; "Assembles LISP forms from the CLISP expressions")
+
     (PROG ((PARENT PARENT)
            VAR1 VAR2 Z (UNARYFLG (GETPROP TYP 'UNARYOP))
            (LISPFN (GETPROP TYP 'LISPFN))
@@ -1494,7 +1637,10 @@ with the terms of said license.
            ENDTAIL-1)
           (AND (NEQ TYP (CAR TAIL))
                UNARYFLG
-               (SETQ TAIL (CDR TAIL)))                       (* ;; "On calls from CLISPATOM1A, TYP is always CADR of TAIL.  e.g. in X+Y 'Z, on the call to CLISPATOM2 to process ', TAIL would be (IPLUS X Y) ' Z.")
+               (SETQ TAIL (CDR TAIL)))
+
+     (* ;; "On calls from CLISPATOM1A, TYP is always CADR of TAIL.  e.g. in X+Y 'Z, on the call to CLISPATOM2 to process ', TAIL would be (IPLUS X Y) ' Z.")
+
           [COND
              ((AND (SETQ TEM (GETP (CAR ENDTAIL)
                                    'CLISPBRACKET))
@@ -1523,42 +1669,55 @@ with the terms of said license.
                       (AND (EQ (CAR ENDTAIL)
                                '~)
                            (GETPROP (CADR ENDTAIL)
-                                  'CLISPTYPE]                (* ; "X+Y~=Z is OK.")
+                                  'CLISPTYPE]                (* ; "X+Y~=Z is OK.")
                   )
-                 ((AND UNARYFLG (CLISPATOM2C TAIL))          (* ; "E.G. (~FOO 'X Y) is OK.")
+                 ((AND UNARYFLG (CLISPATOM2C TAIL))          (* ; "E.G. (~FOO 'X Y) is OK.")
                   )
-                 (T                                          (* ; "E.G. (X + Y ' Z)")
+                 (T                                          (* ; "E.G. (X + Y ' Z)")
                     (DWIMERRORRETURN (LIST 2 ENDTAIL PARENT]
              [(AND (NULL FORMSFLG)
-                   (EQ PARENT TAIL))                         (* ;; "An missing operand error is going to be generated if something isnt done in the next COND, e.g (X*Y Z)")
+                   (EQ PARENT TAIL))
+
+              (* ;; "An missing operand error is going to be generated if something isnt done in the next COND, e.g (X*Y Z)")
+
               (COND
                  ((AND ENDTAIL DWIMIFYFLG (EQ CLISPCONTEXT 'IFWORD)
                        (CLISPRESPELL ENDTAIL CLISPIFWORDSPLST))
-                                                             (* ; 
-                                                     "Found a correction; tell CLISPIF to try again.")
+                                                             (* ; 
+                                                     "Found a correction; tell CLISPIF to try again.")
                   (CL:THROW 'CLISPIF0 :RESPELL))
                  [(AND ENDTAIL (CLISPRESPELL ENDTAIL CLISPINFIXSPLST))
-                                                             (* ;; "E.g. (X + Y LSS Z).  Note that we do not try to correct spelling on infixes unless the form is otherwise going to cause an eror, e.g. in (FOO X_Y ORR --), the ORR is not checked for here.  Thus in the event that the next thing on ENDTAIL is a CLISP transformation, e.g. (FOO X_Y Z_W), we do not have to do any extra work.  This algorithm contains the implicit assumption that all the operatrs on CLISPINFIXSPLST (i.e. the ones we correct for) will terminate the scope of all non-broadscope operators.  Otherwise, if FOO is a non-broadscope operator, and FIE would not terminate FOO, and FIE is on CLISPINFIXSPLST, the form (LIST A FOO B FIEE C) would parse as (LIST (A FOO B) FIE C), which is wrong.  In this case, not only would we have to backup to CLISPATOM1 using RETEVAL as in CLIPATOMB, we would also have to check for misspelled operaaors appearng in CAR of ENDTAIL even when an error would not otherwise be generated, e.g. in (LIST X_Y Z_W) we would have to check the spelling of Z_W.  Note that when the current operator is broadscope, we always perform spelling correction (via the call to DWIIFY! in CLISPTOM2B) since once parentheses are inserted, we can't distinguish e.g. (X AND Y ORR Z) from (X AND (Y ORR Z)).")
+
+                  (* ;; "E.g. (X + Y LSS Z).  Note that we do not try to correct spelling on infixes unless the form is otherwise going to cause an eror, e.g. in (FOO X←Y ORR --), the ORR is not checked for here.  Thus in the event that the next thing on ENDTAIL is a CLISP transformation, e.g. (FOO X←Y Z←W), we do not have to do any extra work.  This algorithm contains the implicit assumption that all the operatrs on CLISPINFIXSPLST (i.e. the ones we correct for) will terminate the scope of all non-broadscope operators.  Otherwise, if FOO is a non-broadscope operator, and FIE would not terminate FOO, and FIE is on CLISPINFIXSPLST, the form (LIST A FOO B FIEE C) would parse as (LIST (A FOO B) FIE C), which is wrong.  In this case, not only would we have to backup to CLISPATOM1 using RETEVAL as in CLIPATOMB, we would also have to check for misspelled operaaors appearng in CAR of ENDTAIL even when an error would not otherwise be generated, e.g. in (LIST X←Y Z←W) we would have to check the spelling of Z←W.  Note that when the current operator is broadscope, we always perform spelling correction (via the call to DWIIFY! in CLISPTOM2B) since once parentheses are inserted, we can't distinguish e.g. (X AND Y ORR Z) from (X AND (Y ORR Z)).")
+
                   (COND
                      (DWIMIFYFLG (CL:THROW (COND
                                               ((LISTP CLISPCONTEXT)
-                                                             (* ;; "We want to go back to the clispatom1 above this call to wtfix, e.g. consider X AND Y_T ORR Z.  In this case, we are dwimifying (Y_T ORR Z) but we want to go back to higher level.  Used to do this via (RETDWIM0 'CLISPATOM1 (RETDWIM0 'WTFIX)), but now we just tell WTFIX to throw again.")
+
+                                 (* ;; "We want to go back to the clispatom1 above this call to wtfix, e.g. consider X AND Y←T ORR Z.  In this case, we are dwimifying (Y←T ORR Z) but we want to go back to higher level.  Used to do this via (RETDWIM0 'CLISPATOM1 (RETDWIM0 'WTFIX)), but now we just tell WTFIX to throw again.")
+
                                                'WTFIX)
                                               (T 'CLISPATOM1))
                                         :RESPELL]
                  ([CLISPATOM2C (COND
                                   (UNARYFLG TAIL)
-                                  (T (CDR TAIL]              (* ; "E.G. FOO_GETP 'FIE 'EXPR")
+                                  (T (CDR TAIL]              (* ; "E.G. FOO←GETP 'FIE 'EXPR")
                   )
-                 (T                                          (* ; "E.g. (LIST * X Y)")
+                 (T                                          (* ; "E.g. (LIST * X Y)")
                     (DWIMERRORRETURN (LIST 2 ENDTAIL PARENT]
              ((CLISPATOM2C (COND
                               (UNARYFLG TAIL)
                               (T (CDR TAIL]
           (COND
-             ((EQ CLTYP 'BRACKET)                            (* ;; "Note that as currently implemented, ENDTAIL can be NIL.  i.e. there is no check for whether or not matching > where actually found.  This enables user to insert expressions like <<X <Y and terminate them with a ] instead of having to balance out the angle brackets.")
+             ((EQ CLTYP 'BRACKET)
+
+              (* ;; "Note that as currently implemented, ENDTAIL can be NIL.  i.e. there is no check for whether or not matching > where actually found.  This enables user to insert expressions like <<X <Y and terminate them with a ] instead of having to balance out the angle brackets.")
+
               [SETQ Z (COND
-                         (UNARYFLG                           (* ;; "IFCONTEXT is preserved because in the case of an unpaired <, i.e., if CAR of ENDTAIL was not >, the scope may include the entire IF statement, e.g. IF A THEN <B C ELSSE D If we generated an error when there was no matching <, then IFCONTEXT could be bound to NIL here.  This is not done in order that angle brackets can be closed with a ')' or ']' , e.g. typing in << -- < -- ']'")
+                         (UNARYFLG 
+
+                                (* ;; "IFCONTEXT is preserved because in the case of an unpaired <, i.e., if CAR of ENDTAIL was not >, the scope may include the entire IF statement, e.g. IF A THEN <B C ELSSE D If we generated an error when there was no matching <, then IFCONTEXT could be bound to NIL here.  This is not done in order that angle brackets can be closed with a ')' or ']' , e.g. typing in << -- < -- ']'")
+
                                 (DWIMIFY2? (SETQ TEM (LDIFF (CDR TAIL)
                                                             ENDTAIL-1))
                                        TEM NIL T NIL NIL (AND DWIMIFYFLG (EQ CLISPCONTEXT
@@ -1602,22 +1761,25 @@ with the terms of said license.
              [(EQ TYP '~)
               (COND
                  ((NEQ (CAR TAIL)
-                       TYP)                                  (* ;; "In most cases, CAR TAIL will be TYP.  However, can also case where user leaves out a space, e.g. (LIST~X Y) or (X~MEMB Y) or (X~=Y).  Performing this check simplifies the code considerably.")
+                       TYP)
+
+                  (* ;; "In most cases, CAR TAIL will be TYP.  However, can also case where user leaves out a space, e.g. (LIST~X Y) or (X~MEMB Y) or (X~=Y).  Performing this check simplifies the code considerably.")
+
                   (SETQ TAIL (CDR TAIL))
                   (SETQ UNARYFLG T)))
               (COND
-                 ((EQ TAIL PARENT)                           (* ; 
-                                                      "E.g. (~ FOO X) or (~ X) or (~FOO XXA) or (~X)")
+                 ((EQ TAIL PARENT)                           (* ; 
+                                                      "E.g. (~ FOO X) or (~ X) or (~FOO XXA) or (~X)")
                   )
                  ([OR (EQ (SETQ TEM (CADR TAIL))
                           '~)
                       (AND (GETPROP TEM 'CLISPTYPE)
-                           (NOT (GETPROP TEM 'UNARYOP]       (* ; 
-                       "E.G. (X ~MEMB Y), or (X~MEMB Y), i.e. ~ is being used to negate an operator.")
+                           (NOT (GETPROP TEM 'UNARYOP]       (* ; 
+                       "E.G. (X ~MEMB Y), or (X~MEMB Y), i.e. ~ is being used to negate an operator.")
                   (SETQ BACKUPFLG T)
                   (SETQ TAIL (NLEFT PARENT 1 TAIL))
                   (CLRPLNODE TAIL (CAR TAIL)
-                         (CDDR TAIL))                        (* ; "Remove the NOT.")
+                         (CDDR TAIL))                        (* ; "Remove the NOT.")
                   (SETQ UNARYFLG NIL)
                   (SETQ TYP (CADR TAIL))
                   (SETQ LISPFN (GETPROP TYP 'LISPFN))
@@ -1631,14 +1793,17 @@ with the terms of said license.
                      (CONS (CADDR TAIL)
                            (CDDDR TAIL]
           (COND
-             ((EQ ENDTAIL (CDR TAIL))                        (* ;; "Occurs when a unary operator is immediately followed by another operatr, e.g. X='+ or -*X.  In former case, ' will be transformed above in CLISPATOM.  Note that ' MUST be a CLISP operator in order for things like FOO_' (--) to work.")
+             ((EQ ENDTAIL (CDR TAIL))
+
+              (* ;; "Occurs when a unary operator is immediately followed by another operatr, e.g. X='+ or -*X.  In former case, ' will be transformed above in CLISPATOM.  Note that ' MUST be a CLISP operator in order for things like FOO←' (--) to work.")
+
               (DWIMERRORRETURN 2)))
       A   (COND
              ((AND (NULL (SETQ VAR2 (LDIFF (COND
                                               (UNARYFLG (CDR TAIL))
                                               (T (CDDR TAIL)))
                                            ENDTAIL)))
-                   (NULL UNARYFLG))                          (* ; "E.G. (LIST X*)")
+                   (NULL UNARYFLG))                          (* ; "E.G. (LIST X*)")
               (DWIMERRORRETURN 1)))
           [COND
              (BROADSCOPE (CLISPBROADSCOPE TYP VAR2 (COND
@@ -1646,13 +1811,17 @@ with the terms of said license.
                                                            'ISWORD)
                                                        'IS)
                                                       (T PARENT)))
-                                                             (* ;; "Inserts parens in VAR2 e.g. converts (FOO X AND FIE Y) to (FOO X AND (FIE Y)) see comment in clispbroadscope")
+
+                    (* ;; "Inserts parens in VAR2 e.g. converts (FOO X AND FIE Y) to (FOO X AND (FIE Y)) see comment in clispbroadscope")
+
                     (COND
                        ((NEQ TAIL (SETQ TEM (OR SUBPARENT PARENT)))
-                                                             (* ;; "SUBPARENT can be used to mark that point in a list beyond which not to back up, e.g. (LAMBDA (X) FOO X LT Y)")
+
+                        (* ;; "SUBPARENT can be used to mark that point in a list beyond which not to back up, e.g. (LAMBDA (X) FOO X LT Y)")
+
                         (CLRPLNODE TEM (LDIFF TEM (CDR TAIL))
-                               (CDR TAIL))                   (* ; 
-                                      "inserts parens in VAR1, e.g. (FOO X AND Y) -> ((FOO X) AND Y)")
+                               (CDR TAIL))                   (* ; 
+                                      "inserts parens in VAR1, e.g. (FOO X AND Y) -> ((FOO X) AND Y)")
                         (SETQ BACKUPFLG T)
                         (SETQ TAIL TEM)))
                     (COND
@@ -1661,10 +1830,13 @@ with the terms of said license.
                         (CLISPBROADSCOPE1 TAIL PARENT BACKUPFLG]
       B   (SETQ VAR1 (CAR TAIL))
           (SELECTQ TYP
-              (%: (AND LISPFN (GO C))                        (* ; 
-                                               "means user has redefined : as a normal lisp operator")
-                  (SETQ Z (CLISPCAR/CDR (SETQ TEM VAR2)))    (* ;; "the value returned by CLISPCAR/CDR indicates whether there was more than one operator involved, and is used to set CLISPCHANGE below.")
-                  (SETQ TEM (CLISPATOM2D NIL VAR1))          (* ; "Inserts new expressioninto TAIL.")
+              (%: (AND LISPFN (GO C))                        (* ; 
+                                               "means user has redefined : as a normal lisp operator")
+                  (SETQ Z (CLISPCAR/CDR (SETQ TEM VAR2)))
+
+                  (* ;; "the value returned by CLISPCAR/CDR indicates whether there was more than one operator involved, and is used to set CLISPCHANGE below.")
+
+                  (SETQ TEM (CLISPATOM2D NIL VAR1))          (* ; "Inserts new expressioninto TAIL.")
                   (COND
                      (DWIMIFYFLG (AND CLISPCHANGE (GO OUT))
                             (SETQ CLISPCHANGE TEM))
@@ -1673,24 +1845,24 @@ with the terms of said license.
                   (CLISPATOM2A (CDR VAR2)
                          VAR2)
                   (AND TENTATIVE Z (SETQQ TENTATIVE PROBABLY))
-                                                             (* ; 
-                                                          "Means there was more than one : operator.")
+                                                             (* ; 
+                                                          "Means there was more than one : operator.")
                   (GO OUT))
-              (_ [COND
+              (← [COND
                     ((NLISTP VAR1)
                      (SETQ TEM TYP))
-                    (T                                       (* ; 
-                                                             "_ in connection with a : operator.")
+                    (T                                       (* ; 
+                                                             "← in connection with a : operator.")
                        [SETQ TEM (SELECTQ (CAR VAR1)
                                      (CAR 'RPLACA)
                                      (CDR 'RPLACD)
                                      ((NCONC NCONC1) 
                                           (CAR VAR1))
-                                     ((replace REPLACE)      (* ; 
-                                                             "From record declaration assigmnent.")
+                                     ((replace REPLACE)      (* ; 
+                                                             "From record declaration assigmnent.")
                                           (CLISPATOM2D NIL (CLISPRECORD VAR1 VAR2 T))
-                                                             (* ; 
-                   "Where the right hand operand to the _ will be DWIMIFIED, and TENTATIVE set, etc.")
+                                                             (* ; 
+                   "Where the right hand operand to the ← will be DWIMIFIED, and TENTATIVE set, etc.")
                                           (GO C1))
                                      (COND
                                         ([OR (SETQ TEM (GETPROP (CAR VAR1)
@@ -1698,13 +1870,17 @@ with the terms of said license.
                                              (PROGN (DWIMIFY1? VAR1)
                                                     (SETQ TEM (GETPROP (CAR VAR1)
                                                                      'SETFN]
-                                                             (* ;; "E.G. User converts X \ FOO to (GETP X FOO), and puts PUT on SETFN of GETP, so that X \ FOO_T becomes (PUT X FOO T)")
+
+                                         (* ;; "E.G. User converts X \ FOO to (GETP X FOO), and puts PUT on SETFN of GETP, so that X \ FOO←T becomes (PUT X FOO T)")
+
                                          (CLISPATOM2D NIL (CONS (CLISPLOOKUP TEM (CADR VAR1))
                                                                 (APPEND (CDR VAR1)
                                                                        VAR2)))
-                                                             (* ;; "SETFN.  Must be handled this way because VAR1 may correspond to more than one operand, e.g. X \ FOO_T -> (ELT X FOO) _T and must go to (SETA X FOO T)")
+
+                                 (* ;; "SETFN.  Must be handled this way because VAR1 may correspond to more than one operand, e.g. X \ FOO←T -> (ELT X FOO) ←T and must go to (SETA X FOO T)")
+
                                          (GO C1))
-                                        (T (DWIMERRORRETURN '_]
+                                        (T (DWIMERRORRETURN '←]
                        (SETQ LISPFN (GETPROP TEM 'LISPFN))
                        (SETQ VAR1 (CADR VAR1]
                  (SETQ LISPFN (CLISPLOOKUP TEM VAR1 NIL LISPFN))
@@ -1712,8 +1888,8 @@ with the terms of said license.
                     ((AND (EQ LISPFN 'SETQ)
                           (EQ (CAR VAR2)
                               '%')
-                          (NULL (CDDR VAR2)))                (* ; 
-                                      "Last AND clause to detect FOO _ ' FIE : 2 type of operations.")
+                          (NULL (CDDR VAR2)))                (* ; 
+                                      "Last AND clause to detect FOO ← ' FIE : 2 type of operations.")
                      (SETQQ LISPFN SETQQ)
                      (SETQ VAR2 (CDR VAR2]
                  (COND
@@ -1727,8 +1903,8 @@ with the terms of said license.
                               LISPFN))
           (COND
              (UNARYFLG [SETQ VAR1 (COND
-                                     ((CDR VAR2)             (* ; 
-               "E.g. NOT is a unary operator which may take more than one expression, e.g. NOT A = B")
+                                     ((CDR VAR2)             (* ; 
+               "E.g. NOT is a unary operator which may take more than one expression, e.g. NOT A = B")
                                       VAR2)
                                      ((AND TYPE-IN? (EQ LISPFN 'QUOTE)
                                            (EQ (CAR VAR2)
@@ -1740,8 +1916,8 @@ with the terms of said license.
                     (GO INSERT)))
           [SETQ TEM (COND
                        ((AND VAR2 (NULL (CDR VAR2)))
-                        (CAR VAR2]                           (* ; 
-                                            "TEM is the right-hand argument, if it is a single item.")
+                        (CAR VAR2]                           (* ; 
+                                            "TEM is the right-hand argument, if it is a single item.")
           (COND
              ((SELECTQ LISPFN
                   (EQ (COND
@@ -1751,8 +1927,8 @@ with the terms of said license.
                   (IPLUS (COND
                             ((AND (LISTP VAR1)
                                   (EQ (CAR VAR1)
-                                      'IPLUS))               (* ; 
-                           "Leave asis, so X+Y+1 goes to (IPLUS X Y 1) instead of (ADD1 (IPLUS X Y))")
+                                      'IPLUS))               (* ; 
+                           "Leave asis, so X+Y+1 goes to (IPLUS X Y 1) instead of (ADD1 (IPLUS X Y))")
                              NIL)
                             ((EQ TEM 1)
                              (SETQQ LISPFN ADD1))
@@ -1778,25 +1954,40 @@ with the terms of said license.
           (COND
              ((AND PARENT (ATOM PARENT))
               (CLISPATOM2A TAIL TAIL)
-              (GO OUT)))                                     (* ;; "Corresponds to the case where the entire expression became an atom, e.g. X~=NIL gging to X, or --- 3 going to -3.0")
-          (SETQ Z (CDR PARENT))                              (* ;; "Z is used to find the operands for DWIMIFYING.  It is now set so that CAR of it coresponds VAR1 and CADR of it coresponds CAR of VAR2.")
+              (GO OUT)))
+
+     (* ;; "Corresponds to the case where the entire expression became an atom, e.g. X~=NIL gging to X, or --- 3 going to -3.0")
+
+          (SETQ Z (CDR PARENT))
+
+     (* ;; "Z is used to find the operands for DWIMIFYING.  It is now set so that CAR of it coresponds VAR1 and CADR of it coresponds CAR of VAR2.")
+
           (COND
              ((CLISPNOEVAL LISPFN)
               (AND DWIMIFYFLG (SETQ CLISPCHANGE TEM))
               (GO NEG))
              (DWIMIFYFLG (AND CLISPCHANGE (NULL UNARYFLG)
-                              (GO C1))                       (* ;; "If CLISPCHANGE is T and this is not a UNARY operation, the first operand has already been dwimified.")
+                              (GO C1))
+
+                    (* ;; "If CLISPCHANGE is T and this is not a UNARY operation, the first operand has already been dwimified.")
+
                     (SETQ CLISPCHANGE TEM))
              ((NOT (ATOM (CAR Z)))
               (GO C1)))
           (AND (NEQ LISPFN 'SETQ)
-               (CLISPATOM2A Z PARENT))                       (* ;; "Dwimifies VAR1, e.g. ((A+B) *C).  If CLISPCHANGE is T, VAR1 has already been processed, e.g. A*B+C, becomes ((ITIMES A A) + C), and the A and B have already been checked by the first call to CLISPATOM2.  VAR1 is also dwimified when running provided it is atomic.  so that if it or VAR2 is unbound, an alternate correction will be tried, e.g. mistyping a variable named FOO-1 as FOOO-1.")
+               (CLISPATOM2A Z PARENT))
+
+     (* ;; "Dwimifies VAR1, e.g. ((A+B) *C).  If CLISPCHANGE is T, VAR1 has already been processed, e.g. A*B+C, becomes ((ITIMES A A) + C), and the A and B have already been checked by the first call to CLISPATOM2.  VAR1 is also dwimified when running provided it is atomic.  so that if it or VAR2 is unbound, an alternate correction will be tried, e.g. mistyping a variable named FOO-1 as FOOO-1.")
+
       C1  [COND
              (UNARYFLG (GO C2))
              ((AND (LISTP VAR1)
                    (EQ LISPFN (CAR VAR1))
                    (FMEMB LISPFN '(AND OR IPLUS ITIMES FPLUS FTIMES PLUS TIMES))
-                   (NEQ VAR1 (CAR CLISPLASTSUB)))            (* ;; "Handles nospreads, e.g. A+B+C becomes (IPLUS A B C) Note that where necessary, VAR1 has already been dwimified.  The CLISPLASTSUB check is to prevent parens from beig taken out when VAR1 is the result of an IS PHRASE since this is needed later.")
+                   (NEQ VAR1 (CAR CLISPLASTSUB)))
+
+              (* ;; "Handles nospreads, e.g. A+B+C becomes (IPLUS A B C) Note that where necessary, VAR1 has already been dwimified.  The CLISPLASTSUB check is to prevent parens from beig taken out when VAR1 is the result of an IS PHRASE since this is needed later.")
+
               (CLRPLNODE Z (CADR VAR1)
                      (APPEND (CDDR VAR1)
                             VAR2]
@@ -1804,33 +1995,39 @@ with the terms of said license.
           (COND
              ((OR DWIMIFYFLG (LITATOM (CAR Z)))
               (CLISPATOM2A Z PARENT)))
-      C2                                                     (* ; 
-                     "Z is now set so that it corresponds to the right hand argument of the oprator.")
+      C2                                                     (* ; 
+                     "Z is now set so that it corresponds to the right hand argument of the oprator.")
           (COND
              ([AND Z (SETQ CLTYP (GETPROP (SETQ LISPFN (CAR Z))
-                                        'CLISPTYPE]          (* ; 
-                                               "The second operand is itself an operator, e.g. a+*b.")
+                                        'CLISPTYPE]          (* ; 
+                                               "The second operand is itself an operator, e.g. a+*b.")
               (COND
                  ([OR (NULL (CDR Z))
-                      (NULL (GETPROP LISPFN 'UNARYOP]        (* ; 
-                           "The GETP check is because this is not an error if the operator is unary.")
+                      (NULL (GETPROP LISPFN 'UNARYOP]        (* ; 
+                           "The GETP check is because this is not an error if the operator is unary.")
                   (DWIMERRORRETURN 2)))
-              (CLISPATOM1A LISPFN CLTYP Z ENDTAIL)           (* ;; "If ENDTAIL is non-nil, the LDIFF copied this portion of TAIL, so it is not necessary to do any saving.")
+              (CLISPATOM1A LISPFN CLTYP Z ENDTAIL)
+
+              (* ;; "If ENDTAIL is non-nil, the LDIFF copied this portion of TAIL, so it is not necessary to do any saving.")
+
               )
              ((NULL (CDR Z)))
              ((SETQ CLTYP (GETPROP (SETQ LISPFN (CADR Z))
                                  'CLISPTYPE))
               (CLISPATOM1A LISPFN CLTYP Z ENDTAIL)))
       NEG [COND
-             (NEGFLG                                         (* ; 
-                                                            "An operator was negated, e.g. X ~MEMB y")
+             (NEGFLG                                         (* ; 
+                                                            "An operator was negated, e.g. X ~MEMB y")
                     (CLRPLNODE PARENT 'NOT (LIST (CONS (CAR PARENT)
                                                        (CDR PARENT]
           [COND
              ([AND (EQ (CAR PARENT)
                        'NOT)
                    (LISTP (SETQ TEM (CADR PARENT)))
-                   (NOT (EQUAL PARENT (SETQ TEM (NEGATE TEM] (* ;; "Special stuff for negation.  Done fter everything to take care of both X~=Y, and ~ (EQ X Y) in the same way.")
+                   (NOT (EQUAL PARENT (SETQ TEM (NEGATE TEM]
+
+              (* ;; "Special stuff for negation.  Done fter everything to take care of both X~=Y, and ~ (EQ X Y) in the same way.")
+
               [COND
                  ((EQ PARENT (CAR TAIL))
                   (CLRPLNODE TAIL TEM (CDR TAIL)))
@@ -1841,26 +2038,27 @@ with the terms of said license.
       OUT (RETURN TAIL])
 
 (CLISPNOEVAL
-  [LAMBDA (FN DEFAULT)                                       (* lmm "29-Jul-86 00:00")
-                                                             (* ;; 
-                         "returns true if FN doesn't evaluate its args.  If not sure, return DEFAULT")
+  [LAMBDA (FN DEFAULT)                                       (* lmm "29-Jul-86 00:00")
+
+    (* ;; "returns true if FN doesn't evaluate its args.  If not sure, return DEFAULT")
+
     (PROG (TEM)
           [COND
              ((SETQ TEM (FASSOC FN DWIMEQUIVLST))
               (SETQ FN (CDR TEM]
           (RETURN (AND (SELECTQ (ARGTYPE FN)
-                           ((1 3)                            (* ; "NLAMBDA")
+                           ((1 3)                            (* ; "NLAMBDA")
                                 T)
-                           (NIL                              (* ; 
-                                                             "udf -- see what else we know about it")
+                           (NIL                              (* ; 
+                                                             "udf -- see what else we know about it")
                                 (OR (FMEMB FN NLAMA)
                                     (FMEMB FN NLAML)
                                     (COND
                                        ((NOT (OR (GETPROP FN 'MACRO-FN)
                                                  (GETLIS FN MACROPROPS)))
                                         DEFAULT)
-                                       [DWIMINMACROSFLG      (* ; 
-                                 "Macros are treated as LAMBDA forms unless INFO prop says otherwise")
+                                       [DWIMINMACROSFLG      (* ; 
+                                 "Macros are treated as LAMBDA forms unless INFO prop says otherwise")
                                               (RETURN (EQMEMB 'NOEVAL (GETPROP FN 'INFO]
                                        (T T))))
                            (OR (FMEMB FN NLAMA)
@@ -1868,14 +2066,21 @@ with the terms of said license.
                        (NOT (EQMEMB 'EVAL (GETPROP FN 'INFO])
 
 (CLISPLOOKUP
-  [LAMBDA (WORD $VAR1 $VAR2 $LISPFN)                         (* lmm "20-May-84 19:08")
-                                                             (* ;; "In most cases, it is not necessary to do a full lookup.  This is quick an dirty check inside of the block to avoid calling CLISPLOOKUP0 It will work whenever there are no local declarations.")
+  [LAMBDA (WORD $VAR1 $VAR2 $LISPFN)                         (* lmm "20-May-84 19:08")
+
+    (* ;; "In most cases, it is not necessary to do a full lookup.  This is quick an dirty check inside of the block to avoid calling CLISPLOOKUP0 It will work whenever there are no local declarations.")
+
     (PROG (TEM CLASS CLASSDEF)
           (SETQ CLASS (GETPROP WORD 'CLISPCLASS))
-          (SETQ CLASSDEF (GETPROP CLASS 'CLISPCLASSDEF))     (* ;; "used to be getprop word, but this meant GT worked differently than gt.  also this new way is consistent with clispifylooup.  shuld it bb (OR (getprop word) (getprop class))?")
+          (SETQ CLASSDEF (GETPROP CLASS 'CLISPCLASSDEF))
+
+     (* ;; "used to be getprop word, but this meant GT worked differently than gt.  also this new way is consistent with clispifylooup.  shuld it bb (OR (getprop word) (getprop class))?")
+
           [SETQ TEM (COND
                        ((AND CLASSDEF (SETQ TEM (GETLOCALDEC EXPR FAULTFN)))
-                                                             (* ;; "must do full lookup.  Note that it is not necessary to do a call to CLISPLOOKUP0 if word has a CLASS, but no CLASSDEF, e.g. FGTP, FMEMB, etc., since if these are ued as infix operators, they mean the corresponding functin regardless of declaraton.  I.e. The CLASSDEF property says that this is the name of an infix operator.  The CLASS property is used as a back pointer to the name of the operator/class of which this word is a member.")
+
+                        (* ;; "must do full lookup.  Note that it is not necessary to do a call to CLISPLOOKUP0 if word has a CLASS, but no CLASSDEF, e.g. FGTP, FMEMB, etc., since if these are ued as infix operators, they mean the corresponding functin regardless of declaraton.  I.e. The CLASSDEF property says that this is the name of an infix operator.  The CLASS property is used as a back pointer to the name of the operator/class of which this word is a member.")
+
                         (CLISPLOOKUP0 WORD $VAR1 $VAR2 TEM $LISPFN CLASS CLASSDEF))
                        (T (SELECTQ CLASS
                               (VALUE (RETURN (GETATOMVAL WORD)))
@@ -1901,22 +2106,26 @@ with the terms of said license.
           (RETURN TEM])
 
 (CLISPATOM2A
-  [LAMBDA (TAIL PARENT)                                      (* lmm "21-Jun-85 16:49")
+  [LAMBDA (TAIL PARENT)                                      (* lmm "21-Jun-85 16:49")
     (AND TAIL (NULL BROADSCOPE)
          (PROG ((DWIMIFYING (AND DWIMIFYFLG DWIMIFYING))
                 (CLISPCONTEXT (AND DWIMIFYFLG CLISPCONTEXT))
-                DWIMIFYCHANGE TEM)                           (* ;; "If BROADSCOPE is T, everything has already been dwimified.  See comments in clispatm2 and clispatom2b1")
-                                                             (* ;; "CLISPATOM2A sets up state variables itself rather than calling DWIMIFY1?  or DWIMIFY2?  because it wants to be able to add to NOFIXVARSLST0.")
+                DWIMIFYCHANGE TEM)
+
+          (* ;; "If BROADSCOPE is T, everything has already been dwimified.  See comments in clispatm2 and clispatom2b1")
+
+          (* ;; "CLISPATOM2A sets up state variables itself rather than calling DWIMIFY1?  or DWIMIFY2?  because it wants to be able to add to NOFIXVARSLST0.")
+
                (COND
                   ((NULL DWIMIFYFLG)
                    (SETQ NOFIXFNSLST0 NOFIXFNSLST)
                    (SETQ NOFIXVARSLST0 NOFIXVARSLST)))
                [SETQ TEM
                 (COND
-                   ((OR (AND (NEQ TYP '_)
-                             (NEQ TYP '�))
-                        (LISTP VAR1))                        (* ; 
-                                                  "VAR1 is a list when the _ is a record expression.")
+                   ((OR (AND (NEQ TYP '←)
+                             (NEQ TYP '_))
+                        (LISTP VAR1))                        (* ; 
+                                                  "VAR1 is a list when the ← is a record expression.")
                     'DONTKNOW)
                    ((OR (FMEMB VAR1 VARS)
                         (FMEMB VAR1 NOFIXVARSLST0))
@@ -1925,8 +2134,8 @@ with the terms of said license.
                         (AND (NULL DWIMIFYING)
                              (STKSCAN VAR1 FAULTPOS))
                         (GETPROP VAR1 'GLOBALVAR)
-                        (FMEMB VAR1 GLOBALVARS))             (* ; 
-                  "Added to NOFIXVARSLST0 so will be avilable for spelling correction in the future.")
+                        (FMEMB VAR1 GLOBALVARS))             (* ; 
+                  "Added to NOFIXVARSLST0 so will be avilable for spelling correction in the future.")
                     (SETQ NOFIXVARSLST0 (CONS VAR1 NOFIXVARSLST0))
                     'PROBABLY)
                    ([AND (NEQ CLISPCONTEXT 'FOR/BIND)
@@ -1937,14 +2146,17 @@ with the terms of said license.
                          (OR [AND VARS (SETQ TEM (FIXSPELL VAR1 NIL VARS NIL NIL NIL NIL NIL T
                                                         'MUSTAPPROVE]
                              (SETQ TEM (FIXSPELL VAR1 NIL SPELLINGS3 NIL NIL NIL NIL NIL T
-                                              'MUSTAPPROVE]  (* ;; "FIXSPELL is called instead of CLISPRESPELL because we dont want runon corrections, and also we have performed msot of the checks of CLISPRESPELL.")
+                                              'MUSTAPPROVE]
+
+                    (* ;; "FIXSPELL is called instead of CLISPRESPELL because we dont want runon corrections, and also we have performed msot of the checks of CLISPRESPELL.")
+
                     (CLRPLNODE (CDR PARENT)
                            TEM
                            (CDDR PARENT))
                     'CERTAINLY)
                    (T (SETQ NOFIXVARSLST0 (CONS VAR1 NOFIXVARSLST0))
-                                                             (* ; 
-         "Added to NOFIXVARSLST0 so that it will be available for spelling correction in the future.")
+                                                             (* ; 
+         "Added to NOFIXVARSLST0 so that it will be available for spelling correction in the future.")
                       'DONTKNOW]
                (RETURN (COND
                           [(LISTP (CAR TAIL))
@@ -1955,8 +2167,8 @@ with the terms of said license.
                           ([AND TAIL (CAR TAIL)
                                 (LITATOM (CAR TAIL))
                                 (NOT (GETPROP (CAR TAIL)
-                                            'CLISPTYPE]      (* ; 
-  "We already know that the atom has no operators internal to it, having scanned through it earlier.")
+                                            'CLISPTYPE]      (* ; 
+  "We already know that the atom has no operators internal to it, having scanned through it earlier.")
                            (SETQ CLISPCONTEXT NIL)
                            (COND
                               ((AND (NULL (DWIMIFY2 TAIL PARENT T NIL T 'NORUNONS))
@@ -1965,7 +2177,7 @@ with the terms of said license.
                                (SETQ TENTATIVE TEM])
 
 (CLISPBROADSCOPE
-  [LAMBDA ($TYP L CONTEXT)                                   (* lmm "29-Jul-86 00:26")
+  [LAMBDA ($TYP L CONTEXT)                                   (* lmm "29-Jul-86 00:26")
     (PROG ((BRACKETCNT 0)
            (L0 L))
       LP  [COND
@@ -2012,7 +2224,9 @@ with the terms of said license.
                                                               ((EQ CONTEXT 'IS)
                                                                'IS)
                                                               (T 
-                                                             (* ;; "Reason for the OR is to handle things like X IS A NUMBER AND NOT LT Y.  In this case would be dwimifying (NOT LT Y) but when go to dwimify (NOT) want CLISPATOMIS?  to be able to se the higher context.")
+
+                                 (* ;; "Reason for the OR is to handle things like X IS A NUMBER AND NOT LT Y.  In this case would be dwimifying (NOT LT Y) but when go to dwimify (NOT) want CLISPATOMIS?  to be able to se the higher context.")
+
                                                                  (OR (AND DWIMIFYFLG (LISTP 
                                                                                          CLISPCONTEXT
                                                                                             ))
@@ -2026,15 +2240,19 @@ with the terms of said license.
                              (CAR X)
                              (CAR X)
                              NIL NIL NIL CONTEXT))
-                     (T                                      (* ;; "FLG says that the parens were inserted here, so that CONTEXT should be passed on to DWIMIFY1 in case there is a spelling error, e.g. (TAIL AND Y ORR Z) gets handled differently than (TAIL AND Y OR Z)")
+                     (T 
+                        (* ;; "FLG says that the parens were inserted here, so that CONTEXT should be passed on to DWIMIFY1 in case there is a spelling error, e.g. (TAIL AND Y ORR Z) gets handled differently than (TAIL AND Y OR Z)")
+
                         (DWIMIFY1? (CAR X)
                                (AND FLG CONTEXT])
 
 (CLISPATOM2C
-  [LAMBDA (TAIL0)                                            (* lmm "20-May-84 19:55")
-                                                             (* ;; "Checks for the case where user leaves out arentheses in front of functon name that follows an operator, e.g. (LIST X+ADD1 Y)")
-    (SETQ TAIL0 (CDR TAIL0))                                 (* ; 
-                                                             "TAIL0 is as of the right hand operand.")
+  [LAMBDA (TAIL0)                                            (* lmm "20-May-84 19:55")
+
+    (* ;; "Checks for the case where user leaves out arentheses in front of functon name that follows an operator, e.g. (LIST X+ADD1 Y)")
+
+    (SETQ TAIL0 (CDR TAIL0))                                 (* ; 
+                                                             "TAIL0 is as of the right hand operand.")
     (COND
        ([AND (NEQ TYP '%')
              (NEQ TYP '%:)
@@ -2047,7 +2265,7 @@ with the terms of said license.
                                                              [COND
                                                                 ((EQ (CDR Y)
                                                                      (CDAR Y))
-                                                             (* ; "Unary operator")
+                                                             (* ; "Unary operator")
                                                                  (CAAR Y))
                                                                 (T (CONCAT (RETDWIM2 (CAAR Y))
                                                                           (COND
@@ -2061,7 +2279,7 @@ with the terms of said license.
                                      (CONCAT [COND
                                                 ((EQ (CDR Y)
                                                      (CDAR Y))
-                                                             (* ; "Unary operator")
+                                                             (* ; "Unary operator")
                                                  (CAAR Y))
                                                 (T (CONCAT (RETDWIM2 (CAAR Y))
                                                           (COND
@@ -2076,34 +2294,52 @@ with the terms of said license.
                                                                       (CDDR Y]
                                                          (T (CONS X (CDDR Y]
                                             '")"]
-                         (CONS TAIL TAIL0]                   (* ;; "The GETP check is for situations like (LIST X_'FOO Y) i.e. a unary operator could never take care of the rest of the list.")
+                         (CONS TAIL TAIL0]
+
+        (* ;; "The GETP check is for situations like (LIST X←'FOO Y) i.e. a unary operator could never take care of the rest of the list.")
+
         (/RPLNODE TAIL0 (CONS (CAR TAIL0)
                               (CDR TAIL0)))
-        (SETQ ENDTAIL NIL)                                   (* ; 
-                      "Once you print a message, you dont want to go and try another interpretation.")
+        (SETQ ENDTAIL NIL)                                   (* ; 
+                      "Once you print a message, you dont want to go and try another interpretation.")
         (SETQQ TENTATIVE CERTAINLY])
 
 (CLISPATOM2D
-  [LAMBDA (X Y)                                              (* ;; "Inserts new expression into TAIL.  Value is T if expression was not parenthesized, PARTIAL if it was, i.e. if it corresponded to the new CAR of TAIL.  If X is NIL, Y is the whole expression.")
+  [LAMBDA (X Y)
+
+    (* ;; "Inserts new expression into TAIL.  Value is T if expression was not parenthesized, PARTIAL if it was, i.e. if it corresponded to the new CAR of TAIL.  If X is NIL, Y is the whole expression.")
+
     (COND
        ((AND (NULL ENDTAIL)
              (NULL FORMSFLG)
              (OR (NULL PARENT)
-                 (EQ PARENT TAIL)))                          (* ;; "This is the case in which we do not want to 'subordinate' the expression with an extra pair of parentheses.  E.g. (LIST (A+B)).  The ENDTAIL check is necessary because if it is not NIL, there are more expressions following the first one, e.g. (LIST (A*B+C)) and we must keep this expression separate, i.e. make (A*B+C) become ((ITIMES A A) + C)")
+                 (EQ PARENT TAIL)))
+
+        (* ;; "This is the case in which we do not want to 'subordinate' the expression with an extra pair of parentheses.  E.g. (LIST (A+B)).  The ENDTAIL check is necessary because if it is not NIL, there are more expressions following the first one, e.g. (LIST (A*B+C)) and we must keep this expression separate, i.e. make (A*B+C) become ((ITIMES A A) + C)")
+
         (COND
-           ((NULL X)                                         (* ;; "Y is the entire expression to be inserted, but we can't use it because we have to 'take out' the parentheses.")
+           ((NULL X)
+
+            (* ;; "Y is the entire expression to be inserted, but we can't use it because we have to 'take out' the parentheses.")
+
             (CLRPLNODE TAIL (CAR Y)
                    (CDR Y))
             (AND (SETQ X (GETHASH Y CLISPARRAY))
-                 (CLISPTRAN TAIL X))                         (* ;; "Must move translation to new expression.  This only occurs if the expression is enclosed in prentheses, e.g. (X: (--))")
+                 (CLISPTRAN TAIL X))
+
+            (* ;; "Must move translation to new expression.  This only occurs if the expression is enclosed in prentheses, e.g. (X: (--))")
+
             (AND (EQ Y (CAR CLISPLASTSUB))
-                 (FRPLACA CLISPLASTSUB TAIL))                (* ;; "Y is the expression returned by CLISPATOMIS but it is not going to apear in the new expression, so must change clisplastsub to correspnd")
+                 (FRPLACA CLISPLASTSUB TAIL))
+
+            (* ;; "Y is the expression returned by CLISPATOMIS but it is not going to apear in the new expression, so must change clisplastsub to correspnd")
+
             )
            (T (CLRPLNODE TAIL X Y)))
         (SETQ PARENT TAIL)
         T)
-       (T                                                    (* ; 
-                                  "Here we must parenthesize the expression so as to subordinate it.")
+       (T                                                    (* ; 
+                                  "Here we must parenthesize the expression so as to subordinate it.")
           [SETQ Y (COND
                      ((NULL X)
                       Y)
@@ -2111,24 +2347,26 @@ with the terms of said license.
                            (NUMBERP (CAR Y)))
                       (MINUS (CAR Y)))
                      (T (CONS X Y]
-          (CLRPLNODE TAIL Y ENDTAIL)                         (* ; 
-          "ENDTAIL being all the stuff not belonging to the CLISP expression, i.e. beyond its scope.")
+          (CLRPLNODE TAIL Y ENDTAIL)                         (* ; 
+          "ENDTAIL being all the stuff not belonging to the CLISP expression, i.e. beyond its scope.")
           (SETQ PARENT (CAR TAIL))
           'PARTIAL])
 
 (CLISPCAR/CDR
-  [LAMBDA (LST)                                              (* lmm "21-Jun-85 16:50")
-                                                             (* ;; "Handles the : infix operatr.")
+  [LAMBDA (LST)                                              (* lmm "21-Jun-85 16:50")
+
+    (* ;; "Handles the : infix operatr.")
+
     (PROG ([SETQFLG (OR (EQ (CAR ENDTAIL)
-                            '_)
+                            '←)
                         (EQ (CAR ENDTAIL)
-                            '�]
+                            '_]
            TAILFLG N TEM VAL)
           (SETQ VAR2 NIL)
       LP  (SETQ TAILFLG NIL)
           [COND
              ((EQ (CAR LST)
-                  '%:)                                       (* ; "Tail")
+                  '%:)                                       (* ; "Tail")
               (SETQ TAILFLG T)
               (SETQ LST (CDR LST]
           (COND
@@ -2136,7 +2374,7 @@ with the terms of said license.
               (SETQ VAR1 (LIST (COND
                                   ((NULL SETQFLG)
                                    (GO ERROR))
-                                  (TAILFLG                   (* ; "X::_")
+                                  (TAILFLG                   (* ; "X::←")
                                          'NCONC)
                                   (T 'NCONC1))
                                VAR1))
@@ -2181,12 +2419,12 @@ with the terms of said license.
               (GO NEG)))
       LP1 [COND
              ((AND (IGREATERP N 4)
-                   (ILESSP N 9))                             (* ; 
-                                                         "X:N for N greater than 8 goes to (NTH X N)")
+                   (ILESSP N 9))                             (* ; 
+                                                         "X:N for N greater than 8 goes to (NTH X N)")
               (SETQ N (IPLUS N -4))
               (SETQ VAR1 (LIST 'CDDDDR VAR1))
               (AND (NULL VAR2)
-                   (SETQ VAR2 VAR1))                         (* ; "VAR2 marks the TAIL where the original operand appears, so thaadwimifying will continue from there.")
+                   (SETQ VAR2 VAR1))                         (* ; "VAR2 marks the TAIL where the original operand appears, so thaadwimifying will continue from there.")
               (GO LP1))
              ((AND SETQFLG (NULL (CDR LST)))
               (SETQ VAR1 (CLISPCAR/CDR1 1 (CLISPCAR/CDR1 (SUB1 N)
@@ -2226,15 +2464,17 @@ with the terms of said license.
           (GO LP2])
 
 (CLISPCAR/CDR1
-  [LAMBDA (N X TAILFLG SETQFLG)                              (* lmm "20-May-84 19:56")
-                                                             (* ;; "All three level car and cdr operations go back to the corresponding function, i.e. CDAAR clispifies to X:1:1::1 and goes back to CDAAR.")
+  [LAMBDA (N X TAILFLG SETQFLG)                              (* lmm "20-May-84 19:56")
+
+    (* ;; "All three level car and cdr operations go back to the corresponding function, i.e. CDAAR clispifies to X:1:1::1 and goes back to CDAAR.")
+
     (PROG (TEM)
           (COND
              ((ZEROP N)
               (RETURN X))
              ((AND (NULL DWIMIFYFLG)
-                   CHECKCARATOMFLG)                          (* ; 
-   "If CHECKCARATOMFLG is T, then checks to see if the car/cdr chain goes through an atom (non-list)")
+                   CHECKCARATOMFLG)                          (* ; 
+   "If CHECKCARATOMFLG is T, then checks to see if the car/cdr chain goes through an atom (non-list)")
               (CLISPCAR/CDR2 N X)))
           [SETQ TEM (COND
                        ([AND (NULL SETQFLG)
@@ -2242,11 +2482,17 @@ with the terms of said license.
                              (SETQ TEM (COND
                                           ((EQ N 1)
                                            (SELECTQ (CAR X)
-                                               (CAR          (* ;; "The apparent incompleteness of the SELECTQ is bcause CAR of CDR would appear in CLISS as 2 and be handled directly, similarly for CDR of CDR.")
+                                               (CAR 
+
+                                 (* ;; "The apparent incompleteness of the SELECTQ is bcause CAR of CDR would appear in CLISS as 2 and be handled directly, similarly for CDR of CDR.")
+
                                                     (COND
                                                        (TAILFLG 'CDAR)
                                                        (T 'CAAR)))
-                                               (CAAR         (* ;; "Similarly, CAR of CDAR would come in as CADR of CAR, CDR of CDAR as CDDR of CAR, so checks for CDAR and CDDR are not necessary.")
+                                               (CAAR 
+
+                                   (* ;; "Similarly, CAR of CDAR would come in as CADR of CAR, CDR of CDAR as CDDR of CAR, so checks for CDAR and CDDR are not necessary.")
+
                                                      (COND
                                                         (TAILFLG 'CDAAR)
                                                         (T 'CAAAR)))
@@ -2256,11 +2502,14 @@ with the terms of said license.
                                                NIL))
                                           ((AND (EQ N 2)
                                                 (EQ (CAR X)
-                                                    'CAR))   (* ;; "CADR of CDR would be written as X:3, similaly CAAR of CDR, CDAR of CDR, and CDDR of CDR are all taken care of.")
+                                                    'CAR))
+
+                                           (* ;; "CADR of CDR would be written as X:3, similaly CAAR of CDR, CDAR of CDR, and CDDR of CDR are all taken care of.")
+
                                            (COND
                                               (TAILFLG 'CDDAR)
-                                              (T 'CADAR]     (* ; 
-       "If SETQFLG is T, want to leave the outer CAR or CDR because gets replaced by rplaca/d later.")
+                                              (T 'CADAR]     (* ; 
+       "If SETQFLG is T, want to leave the outer CAR or CDR because gets replaced by rplaca/d later.")
                         (FRPLACA X TEM))
                        [(IGREATERP N 4)
                         (SETQ TEM (CLISPLOOKUP 'NTH VAR1))
@@ -2284,7 +2533,7 @@ with the terms of said license.
           (RETURN TEM])
 
 (CLISPCAR/CDR2
-  [LAMBDA (N X)                                              (* lmm "20-May-84 19:56")
+  [LAMBDA (N X)                                              (* lmm "20-May-84 19:56")
     (PROG ((NODE (STKEVAL FAULTPOS X)))
       LP  [COND
              ((ZEROP N)
@@ -2296,13 +2545,18 @@ with the terms of said license.
           (GO LP])
 
 (CLISPATOMIS1
-  [LAMBDA (SUBJ OBJ ALST EXP NEGATE)                         (* lmm "20-May-84 20:03")
-                                                             (* ;; "ALST is cdr of the value returned by clispmatchup.  CAR is split into the two arguments SUBJ and OBJ.")
+  [LAMBDA (SUBJ OBJ ALST EXP NEGATE)                         (* lmm "20-May-84 20:03")
+
+    (* ;; "ALST is cdr of the value returned by clispmatchup.  CAR is split into the two arguments SUBJ and OBJ.")
+
     (SELECTQ (CAR SUBJ)
         ((AND OR) 
              [CONS (CAR SUBJ)
                    (MAPCAR (CDR SUBJ)
-                          (FUNCTION (LAMBDA (X)              (* ;; "The AND is bcause it is ok for NEGFLG to be T instead of LISTONLY on recursive calls, because (NOT (NULL X)) can go to X in this case since we have the tail to put it in.")
+                          (FUNCTION (LAMBDA (X)
+
+                                 (* ;; "The AND is bcause it is ok for NEGFLG to be T instead of LISTONLY on recursive calls, because (NOT (NULL X)) can go to X in this case since we have the tail to put it in.")
+
                                       (CLISPATOMIS1 X OBJ ALST EXP (AND NEGATE T])
         (PROGN (SETQ EXP (SUBLIS (CONS (CONS OBJ SUBJ)
                                        ALST)
@@ -2312,9 +2566,10 @@ with the terms of said license.
                   (T EXP])
 
 (CLISPATOMARE1
-  [LAMBDA (X FLG)                                            (* lmm "29-Jul-86 00:27")
-                                                             (* ;; 
-              "value is an edit pushdown list (of tails) leding to the place of the last is subject.")
+  [LAMBDA (X FLG)                                            (* lmm "29-Jul-86 00:27")
+
+    (* ;; "value is an edit pushdown list (of tails) leding to the place of the last is subject.")
+
     (PROG (L TEM)
           (SETQ L (CDR X))
       LP  (COND
@@ -2333,21 +2588,24 @@ with the terms of said license.
           (RETURN NIL])
 
 (CLISPATOMARE2
-  [LAMBDA (L Z)                                              (* lmm " 4-SEP-83 23:07")
+  [LAMBDA (L Z)                                              (* lmm " 4-SEP-83 23:07")
     (PROG (X X1)
           [COND
              ((NULL (CDR L))
               (COND
                  (Z (RETURN (CAR Z)))
-                 (T                                          (* ; 
-                                                             "E.g. X AND Y IS A NUMBER ARE ATOMS.")
+                 (T                                          (* ; 
+                                                             "E.g. X AND Y IS A NUMBER ARE ATOMS.")
                     (DWIMERRORRETURN (LIST 'PHRASE (CDR TAIL)
                                            PARENT]
-          (SETQ X (CAADR L))                                 (* ; "the parent of (CAR L)")
+          (SETQ X (CAADR L))                                 (* ; "the parent of (CAR L)")
           (SETQ X1 (CDAR L))
           [COND
              ((AND DEST (EQ (CAR L)
-                            (CDR X)))                        (* ;; "move inner expression out.  case 1: (A OR B ARE NUMBERS AND C OR D ARE LISTS) VAR1 is (OR (AND (OR (NUMBERP A) (NUMBERP B)) C) D) but the AND is reaaly the top leveloperator.  case 2: (A OR B IS A NUMBER AND C OR D ARE LISTS) VAR1 is (OR A (AND (NUMBERP B) C) D) here the OR should be the top leveloperator.  The difference is that")
+                            (CDR X)))
+
+              (* ;; "move inner expression out.  case 1: (A OR B ARE NUMBERS AND C OR D ARE LISTS) VAR1 is (OR (AND (OR (NUMBERP A) (NUMBERP B)) C) D) but the AND is reaaly the top leveloperator.  case 2: (A OR B IS A NUMBER AND C OR D ARE LISTS) VAR1 is (OR A (AND (NUMBERP B) C) D) here the OR should be the top leveloperator.  The difference is that")
+
               (FRPLACA (CADR L)
                      (CADR X)))
              (T (FRPLACD (CAR L]
@@ -2363,8 +2621,10 @@ with the terms of said license.
                             (T X1])
 
 (CLISPATOMIS2
-  [LAMBDA (X)                                                (* ; "wt: 25-FEB-76 1 51")
-                                                             (* ;; "Used by clispatomaRE and clispatomIis?  to eliminate unnecessary nesting of ands and ors after finishing processing.  (Too hard to do on the fly as we built pushdown list of tails etc.) NOte that we cant remove parens from around clisplastsub since it might be needed later in parsing.  Thus X AND Y ARE NUMBERS AND GREATER THAN 3 must be left as (AND (NUMBERP X) (NUMBER Y) (AND (IGREATERP X 3) (IGREATERP Y 3)))")
+  [LAMBDA (X)                                                (* ; "wt: 25-FEB-76 1 51")
+
+    (* ;; "Used by clispatomaRE and clispatomIis?  to eliminate unnecessary nesting of ands and ors after finishing processing.  (Too hard to do on the fly as we built pushdown list of tails etc.) NOte that we cant remove parens from around clisplastsub since it might be needed later in parsing.  Thus X AND Y ARE NUMBERS AND GREATER THAN 3 must be left as (AND (NUMBERP X) (NUMBER Y) (AND (IGREATERP X 3) (IGREATERP Y 3)))")
+
     (PROG (($TYP (CAR X)))
       LP  [AND (LISTP (CAR X))
                (NEQ (CAR X)
@@ -2388,299 +2648,335 @@ with the terms of said license.
 (DEFINEQ
 
 (WTFIX
-  [LAMBDA (FAULTX FAULTARGS FAULTAPPLYFLG)                   (* lmm "15-Apr-86 09:59")
+  [LAMBDA (FAULTX FAULTARGS FAULTAPPLYFLG)                   (* lmm "15-Apr-86 09:59")
     (PROG (FAULTPOS FAULTFN EXPR VARS TAIL PARENT SUBPARENT FORMSFLG ONLYSPELLFLG DWIMIFYFLG TEM)
           (RETURN (WTFIX1])
 
 (WTFIX0
-  [LAMBDA (FAULTX TAIL PARENT SUBPARENT ONLYSPELLFLG)        (* ;; "Internal entry from dwimify1 and dwimify2.  EXPR, FAULTFN, VARS, TAIL, and FORMSFLG already correctly bound.")
+  [LAMBDA (FAULTX TAIL PARENT SUBPARENT ONLYSPELLFLG)
+
+    (* ;; "Internal entry from dwimify1 and dwimify2.  EXPR, FAULTFN, VARS, TAIL, and FORMSFLG already correctly bound.")
+
     (PROG (FAULTARGS FAULTAPPLYFLG (FAULTPOS (COND
                                                 ((NULL (AND DWIMIFYFLG DWIMIFYING))
-                                                             (* ; 
-                                   "Originally started out evaluting, so there is a higher faultpos.")
+                                                             (* ; 
+                                   "Originally started out evaluting, so there is a higher faultpos.")
                                                  FAULTPOS)))
                  (DWIMIFYFLG T))
           (RETURN (WTFIX1])
 
 (WTFIX1
-  [LAMBDA NIL                                                (* bvm%: "21-Nov-86 18:37")
-                                                             (* ;; "Replaces FAULT1 when DWIM is on.  on u.b.a.'s FAULTX is the atom.  On u.d.f.'s involving forms, FAULTX is the form.  On u.d.f.'s from APPLY, faultx is the name of the function, FAULTARGS the arguments, and FAULTAPPLYFLG is T.  Also is called directly to process a form from DWIMIFY.  In this case, EXPR, VARS, ..., NOSPELLFLG0 are supplied, and FINDFN is not called.")
+  [LAMBDA NIL                                                (* bvm%: "21-Nov-86 18:37")
+
+    (* ;; "Replaces FAULT1 when DWIM is on.  on u.b.a.'s FAULTX is the atom.  On u.d.f.'s involving forms, FAULTX is the form.  On u.d.f.'s from APPLY, faultx is the name of the function, FAULTARGS the arguments, and FAULTAPPLYFLG is T.  Also is called directly to process a form from DWIMIFY.  In this case, EXPR, VARS, ..., NOSPELLFLG0 are supplied, and FINDFN is not called.")
+
     (AND
      DWIMFLG
      (LET
       [(RESULT
-        (CL:CATCH
-         'WTFIX
-         (XNLSETQ
-          (PROG ((NOSPELLFLG0 NOSPELLFLG)
-                 (CLISPERTYPE)
-                 (DWIM.GIVE.UP.TIME (OR DWIM.GIVE.UP.TIME (SETUPTIMER DWIM.GIVE.UP.INTERVAL)))
-                 TYPE-IN? BREAKFLG FAULTXX CHARLST FAULTEM1 NEWTAIL HISTENTRY FIXCLK CLISPCHANGES 
-                 SIDES)                                      (* ; "LIST because this used to be a XNLSETQ.  I think callers only want to know whether we returned something interesting, or somebody called (RETDWIM)")
-                [COND
-                   (DWIMIFYFLG                               (* ;; "Call from WTFIX0.  Note that while this call from DWIMIFY1 or DWIMIFY2, the user may or may not have been DWIMIFYING, e.g. when IF's are encountered in evaluation, DWIMIFY1 and DWIMIFY2 are used.  The variable DWIMIFYING is T if the call to DWIMIFY! or DWIMIFY2 is from an explicit call to DWIMIFY (or DWIMIFYFNS)")
-                          (SETQ TYPE-IN? (EQ FAULTFN 'TYPE-IN))
-                                                             (* ;; "DWIMIFY is called on typein for processing FOR's and IF's.  In this case, want to treat user approval the same as for type-in.")
-                          )
-                   (T (SETQ FIXCLK (CLOCK 2))                (* ;; "If EXPR is given, i.e. if DWIMIFYFLG is gong to be T, the clkock is being measured at some higher caal to WTFIX or DWIMIIY.")
-                      [SETQ FAULTPOS (STKPOS (COND
-                                                (FAULTAPPLYFLG 'FAULTAPPLY)
-                                                (T 'FAULTEVAL]
-                      (AND (NEQ CLEARSTKLST T)
-                           (SETQ CLEARSTKLST (CONS FAULTPOS CLEARSTKLST)))
-                                                             (* ; 
-                               "In case user control-ds out of correction, this will relstk faultpos")
-                      (SETQ FAULTFN (FINDFN (FSTKNTH -1 FAULTPOS)
-                                           T))               (* ;; "The value of FINDFN is the name of the (interpreted) function in which the error occurred.  FINDFN also sets the free variable EXPR to the definition of that function.  If the error occurred under a call to EVAL, the value of FINDFN is EVAL, and EXPR is set to the expression being evaluated, i.e. the argument to EVAL.  If the error occurred under an APPLY, the value of FINDFN is the first argument to APPLY, and EXPR is set to the second argument to APPLY, i.e. the list of arguments.  In this case, FAULTX will usually be EQ to the value returned by FINDFN, and FAULTARGS EQ to EXPR.  However, WTFIX may also be called from FAULTAPPLY, and FINDFN not find an APPLY, as occurs on undefined functions called from compiled code.  For this reason, FIXAPPLY always uses FAULTX and FAULTARGS, not FAULTFN and EXPR.")
-                      (SETQ VARS (AND (SETQ FAULTEM1 (OR BREAKFLG (LISTP EXPR)))
-                                      (GETVARS FAULTEM1]
-                [AND (NULL TYPE-IN?)
-                     (SETQ SIDES (CDR (LISTGET1 LISPXHIST 'SIDE]
-                (AND TYPE-IN? (NULL DWIMIFYFLG)
-                     [COND
-                        (FAULTAPPLYFLG (EQ FAULTX (CAAAAR LISPXHISTORY)))
-                        (T (OR (EQ FAULTX (CAAAAR LISPXHISTORY))
-                               (EQUAL FAULTX (CAAAR LISPXHISTORY]
-                     (SETQ HISTENTRY (CAAR LISPXHISTORY)))
-                [COND
-                   ([LITATOM (SETQ FAULTXX (COND
-                                              (FAULTAPPLYFLG FAULTX)
-                                              ((NLISTP FAULTX)
-                                               FAULTX)
-                                              (T (CAR FAULTX]
-                    (SETQ CHARLST (DUNPACK FAULTXX WTFIXCHCONLST]
-                (COND
-                   ((AND (NULL FAULTAPPLYFLG)
-                         (LITATOM FAULTX))
-                    (FIXATOM)
-                    (SHOULDNT))
-                   (FAULTAPPLYFLG (FIXAPPLY)
-                          (SHOULDNT))
-                   ([AND TYPE-IN? (EQ FAULTXX (CAAR HISTENTRY))
-                         (AND (NEQ NOSPELLFLG T)
-                              (AND (SETQ FAULTEM1 (FMEMB LPARKEY CHARLST))
-                                   (NULL (AND CLISPFLG (STRPOSL CLISPCHARRAY FAULTXX]
-                                                             (* ;; "LPARKEY is the lowercase version of left prentheses, normally 8, rparkey is normally 9, but user can reset them for different terminals.  The EQ distinguishes between (CONS8ADD1 3) which is handled by a call to FIX89 from CLISPATOM, and FOO8A B C ']' , which is handled by FIX89TYPEIN, since it requires changing an EVAL to an APPLY.")
-                    (FIX89TYPEIN FAULTEM1 CHARLST))
-                   ((AND CLISPFLG CHARLST (LITATOM (SETQ FAULTEM1 (CADR FAULTX)))
-                         (OR (GETPROP FAULTEM1 'CLISPTYPE)
-                             (FMEMB (SETQ FAULTEM1 (NTHCHAR FAULTEM1 1))
-                                    CLISPCHARS))
-                         [OR (NOT (GETPROP FAULTEM1 'UNARYOP))
-                             (AND (EQ FAULTEM1 '~)
-                                  (GETPROP (PACK (CDR (DUNPACK (CADR FAULTX)
-                                                             WTFIXCHCONLST1)))
-                                         'CLISPTYPE]
-                         (NOT (CLISPNOTVARP (CAR FAULTX)))
-                         (CLISPNOTVARP (CADR FAULTX)))       (* ; 
-           "So that things like (SUM + X) will work, i.e. not be interpreted as iterative statement.")
-                    (GO NX0))
-                   ((NULL CHARLST)
-                    (GO NX2)))                               (* ; 
-         "Both FIXAPPLY and FIXATOM exit via RETDWIM so there is no need for a return here in WTFIX.")
-            TOP [SELECTQ (CAR FAULTX)
-                    (F/L [/RPLNODE
-                          FAULTX
-                          'FUNCTION
-                          (LIST (CONS 'LAMBDA
-                                      (COND
-                                         ([AND (CDDR FAULTX)
-                                               [OR (NULL (CADR FAULTX))
-                                                   (AND (LISTP (CADR FAULTX))
-                                                        (EVERY (CADR FAULTX)
-                                                               (FUNCTION (LAMBDA (X)
-                                                                           (AND X (NEQ X T)
-                                                                                (LITATOM X]
-                                               (OR (MEMB (CAADR FAULTX)
-                                                         (FREEVARS (CDDR FAULTX)))
-                                                   (NOT (CLISPFUNCTION? (CADR FAULTX)
-                                                               'OKVAR]
-                                          (CDR FAULTX))
-                                         (T (CONS (LIST 'X)
-                                                  (CDR FAULTX]
-                         (GO OUT))
-                    (CLISP%: (ERSETQ (CLISPDEC0 FAULTX FAULTFN))
-                             (SETQ FAULTX T))
-                    (COND
-                       [[CAR (LISTP (SETQ FAULTEM1 (GETPROP (CAR FAULTX)
-                                                          'CLISPWORD]
-                        (RESETVARS [(LCASEFLG (AND LCASEFLG (NULL TYPE-IN?]
-                                   (SELECTQ (CAR FAULTEM1)
-                                       (FORWORD (SETQ FAULTX (OR (CLISPFOR FAULTX)
-                                                                 (RETDWIM))))
-                                       (IFWORD (SETQ FAULTX (CLISPIF FAULTX))
-                                               (SETQ HISTENTRY NIL))
-                                       (MATCHWORD            (* ; 
-                                                             "CAR of FAULTX either MATCH or match.")
-                                                  (CLISPTRAN FAULTX (MAKEMATCH FAULTX)))
-                                       (PREFIXFN (PROG ((EXPR FAULTX))
-                                                       (SETQ FAULTEM1 (CDR FAULTX))
-                                                       [COND
-                                                          ((EQ (CAR (LISTP (CAR FAULTEM1)))
-                                                               'CLISP%:)
-                                                           (ERSETQ (CLISPDEC0 (CAR FAULTEM1)
-                                                                          FAULTFN]
-                                                       [COND
-                                                          ((EQ (CAR (LISTP (CAR FAULTEM1)))
-                                                               COMMENTFLG)
-                                                           (SETQ FAULTEM1 (CDR FAULTEM1]
-                                                       [SETQ FAULTEM1
-                                                        (APPEND (COND
-                                                                   [(AND (NULL (CDR FAULTEM1))
-                                                                         (LISTP (CAR FAULTEM1]
-                                                                   (T FAULTEM1]
-                                                       (RESETVARS ((CLISPFLG T))
-                                                                  (DWIMIFY1? FAULTEM1))
-                                                       (CLISPELL FAULTX)
-                                                       (CLISPTRAN FAULTX FAULTEM1)))
-                                       (SETQ FAULTX (APPLY* (CAR FAULTEM1)
-                                                           FAULTX]
-                       (T (GO NX0]
-                (AND DWIMIFYFLG (SETQ CLISPCHANGE T))
-                (GO OUT)
-            NX0 (COND
-                   [(GETD (CAR FAULTX))
-                    (COND
-                       ([NULL (PROG (TYPE-IN? (FAULTFN (CAR FAULTX)))
-                                    (RETURN (COND
-                                               ((FIXLAMBDA (GETD (CAR FAULTX)))
-                                                             (* ; 
-              "This is the case where (FOO --) is being evaluated, and the definition of FOO is bad.")
-                                                (AND FILEPKGFLG (LITATOM FAULTFN)
-                                                     (MARKASCHANGED FAULTFN 'FNS))
-                                                T]
-                        (SETQ NOSPELLFLG0 T)
-                        (GO NX3)                             (* ; "So DWIMUSERFN can be called.")
-                        ]
-                   ((AND (OR (GETPROP (CAR FAULTX)
-                                    'EXPR)
-                             (GETPROP (CAR FAULTX)
-                                    'CODE))
-                         (DWIMUNSAVEDEF (CAR FAULTX)))
-                    (SETQ FAULTFN NIL)                       (* ; 
-                                                           "So that RETDWIM won't do a MARKASCHANGED")
-                    )
-                   ((SETQ FAULTEM1 (GETPROP (CAR FAULTX)
-                                          'FILEDEF))
-                    (COND
-                       ((WTFIXLOADEF FAULTEM1)
-                        (GO OUT)))
-                    (RETDWIM))
-                   (T (GO NX1)))
-                (GO OUT)
-            NX1 (COND
-                   ((AND (CLISPNOTVARP (CAR FAULTX))
-                         (SETQ FAULTEM1 (CLISPATOM CHARLST FAULTX FAULTX)))
-                                                             (* ; "E.g. (FOO_ATOM) OR (FOO_ form)")
-                    (SETQ FAULTX FAULTEM1)
-                    (GO OUT)))
-            NX2 (COND
-                   ([AND CLISPFLG (SETQ FAULTEM1 (CADR FAULTX))
-                         (OR (LITATOM FAULTEM1)
-                             (AND (NUMBERP FAULTEM1)
-                                  (MINUSP FAULTEM1)
-                                  (CLBINARYMINUS? FAULTX)))
-                         (OR (GETPROP FAULTEM1 'CLISPTYPE)
-                             (FMEMB (CAR (SETQ FAULTEM1 (DUNPACK FAULTEM1 WTFIXCHCONLST1)))
-                                    CLISPCHARS))
-                         (SETQ FAULTEM1 (CLISPATOM FAULTEM1 (CDR FAULTX)
-                                               FAULTX T))
-                         (COND
-                            [(OR (NEQ FAULTXX (CAR FAULTX))
-                                 (AND CLISPARRAY (GETHASH FAULTX CLISPARRAY]
-                            (DWIMIFYFLG (SETQ CHARLST (DUNPACK FAULTXX WTFIXCHCONLST))
-                                                             (* ; "LST may have been clobbered")
-                                   (SETQ CLISPCHANGE NIL]    (* ;; "E.g. (FOO _atom) or (FOO _ form).  The NEQ check is necessary to handle situations like (FOOO N-1) where an CLISP transformation is performed, but it does not correct CAR of the form.  (In this case, we must continue to the spelling correction part below, and set CLISPCHANGE to NIL so that DWIMIFY1 will not be confused.) Note that if FOO also happens to be the name of a function, then WTFIX will not be called and the CLISP transformation not be performed until the arguments of FOO are evaluated and cause a u.b.a.  error.  Then DWIM will have to back up as described in FIXATOM and FIXATOM1.")
-                    (SETQ FAULTX FAULTEM1)
-                    (GO OUT))
-                   ((AND (NULL NOSPELLFLG0)
-                         DWIMIFYFLG
-                         (LISTP (CADR FAULTX))
-                         (FIXLAMBDA FAULTX))                 (* ;; "The DWIMIFYFLG check is because in normal course of events, it never makes sense for LAMBDA to appear as CAR of a FORM.  However, DWIMIFY1 is called on open LAMBDA expressions.")
-                    (GO OUT))
-                   ((AND (NULL NOSPELLFLG0)
-                         (LISTP (CAR FAULTX))
-                         (LISTP (CADAR FAULTX))
-                         (FIXLAMBDA (CAR FAULTX)))           (* ;; "This corresponds to the case where LAMBDA is misspelled in an open LAMBDA expression.  Note that an open lambda expression only makes sense when there is a non-atomic argument list, so dont both spelling correcting if this is notthe case.")
-                    (GO OUT)))
-            NX3 (COND
-                   [[SOME DWIMUSERFORMS (FUNCTION (LAMBDA (DWIMUSERFORM)
-                                                    (SETQ FAULTEM1 (EVAL DWIMUSERFORM]
-                    (COND
-                       (FAULTAPPLYFLG (RETDWIM FAULTPOS FAULTEM1 T FAULTARGS))
-                       (T (RETDWIM FAULTPOS FAULTEM1]
-                   (NOSPELLFLG0 (GO FAIL))
-                   [[AND CHARLST (SETQ FAULTXX
-                                  (OR (FIXSPELL (CAR FAULTX)
-                                             NIL SPELLINGS2 NIL FAULTX NIL NIL NIL T)
-                                      (AND DWIMIFYFLG NOFIXFNSLST0
-                                           (FIXSPELL (CAR FAULTX)
-                                                  NIL NOFIXFNSLST0 NIL FAULTX NIL NIL NIL T]
-                                                             (* ; 
-                 "The extra argument to FIXSPELL indicates that SPLITS re tolerated, e.g. (BREAKFOO)")
-                    (COND
-                       ((EQ (CAAR HISTENTRY)
-                            (CAR FAULTX))
-                        (/RPLNODE HISTENTRY FAULTX (CDR HISTENTRY))
-                                                             (* ;; "Normally, RETDWIM patches the histroy entry to corresond to a list input, even if it was typed in as a line.  In the special case of a pselling correction, we leave the entry as a line.")
-                        ))
-                    (SETQ HISTENTRY NIL)
-                    (COND
-                       ((NOT (FGETD FAULTXX))                (* ; 
-                       "E.g. USER misspells FOR, IF, F/L etc. These are all contained on SPELLINGS2.")
-                        (GO TOP]
-                   ((AND CLISPFLG DWIMIFYFLG (CDR FAULTX)
-                         (LISTP CLISPCONTEXT)
-                         (FIXSPELL (CAR FAULTX)
-                                NIL CLISPISWORDSPLST NIL FAULTX NIL NIL NIL T)
-                         (SETQ FAULTEM1 (CLISPATOM (DUNPACK (CAR FAULTX)
-                                                          WTFIXCHCONLST)
-                                               TAIL PARENT)))(* ;; "E.g. X IS A NUMBER AND LESS THAN Y.  CLISPATOM will call CLISPATOMIS?  which will retfrom back past here or generate an error.  NOte that if (CAR FAUULTX) had been spelled correctly, thiswold have happened in first call to CLISPATOM at NX1 earlir.  However, we dont do the misspelled check until here because it is more likely user has misspelled the name of one of his functions.")
-                    )
-                   ([AND CLISPFLG (NULL CLISPCHANGES)
-                         (NULL CLISPERTYPE)
-                         (SETQ FAULTEM1 (CADR FAULTX))
-                         (LITATOM FAULTEM1)
-                         (SETQ FAULTEM1 (FIXSPELL FAULTEM1 NIL CLISPINFIXSPLST NIL
-                                               (OR (AND DWIMIFYFLG (LISTP CLISPCONTEXT))
-                                                   (CDR FAULTX))
-                                               NIL NIL NIL T))
-                         (COND
-                            ((AND DWIMIFYFLG (LISTP CLISPCONTEXT))
-                                                             (* ;; 
-           "Return from the corresponding DWIMUNDOCATCH with a value telling CLISPATOM to try again.")
-                             (CL:THROW 'CLISPATOM1 :RESPELL))
-                            (T (LET (CLISPERTYPE)
-                                    (SETQ FAULTEM1 (CLISPATOM FAULTEM1 (CDR FAULTX)
-                                                          FAULTX T]
-                    (SETQ FAULTX FAULTEM1))
-                   (T (GO FAIL)))
-            OUT (RETDWIM FAULTPOS FAULTX)
-            FAIL
-                (RETDWIM]
+        (CL:CATCH 'WTFIX
+            (XNLSETQ
+             (PROG ((NOSPELLFLG0 NOSPELLFLG)
+                    (CLISPERTYPE)
+                    (DWIM.GIVE.UP.TIME (OR DWIM.GIVE.UP.TIME (SETUPTIMER DWIM.GIVE.UP.INTERVAL)))
+                    TYPE-IN? BREAKFLG FAULTXX CHARLST FAULTEM1 NEWTAIL HISTENTRY FIXCLK CLISPCHANGES
+                    SIDES)                                   (* ; "LIST because this used to be a XNLSETQ.  I think callers only want to know whether we returned something interesting, or somebody called (RETDWIM)")
+                   [COND
+                      (DWIMIFYFLG 
+
+                             (* ;; "Call from WTFIX0.  Note that while this call from DWIMIFY1 or DWIMIFY2, the user may or may not have been DWIMIFYING, e.g. when IF's are encountered in evaluation, DWIMIFY1 and DWIMIFY2 are used.  The variable DWIMIFYING is T if the call to DWIMIFY! or DWIMIFY2 is from an explicit call to DWIMIFY (or DWIMIFYFNS)")
+
+                             (SETQ TYPE-IN? (EQ FAULTFN 'TYPE-IN))
+
+                             (* ;; "DWIMIFY is called on typein for processing FOR's and IF's.  In this case, want to treat user approval the same as for type-in.")
+
+                             )
+                      (T (SETQ FIXCLK (CLOCK 2))
+
+                         (* ;; "If EXPR is given, i.e. if DWIMIFYFLG is gong to be T, the clkock is being measured at some higher caal to WTFIX or DWIMIIY.")
+
+                         [SETQ FAULTPOS (STKPOS (COND
+                                                   (FAULTAPPLYFLG 'FAULTAPPLY)
+                                                   (T 'FAULTEVAL]
+                         (AND (NEQ CLEARSTKLST T)
+                              (SETQ CLEARSTKLST (CONS FAULTPOS CLEARSTKLST)))
+                                                             (* ; 
+                               "In case user control-ds out of correction, this will relstk faultpos")
+                         (SETQ FAULTFN (FINDFN (FSTKNTH -1 FAULTPOS)
+                                              T))
+
+                         (* ;; "The value of FINDFN is the name of the (interpreted) function in which the error occurred.  FINDFN also sets the free variable EXPR to the definition of that function.  If the error occurred under a call to EVAL, the value of FINDFN is EVAL, and EXPR is set to the expression being evaluated, i.e. the argument to EVAL.  If the error occurred under an APPLY, the value of FINDFN is the first argument to APPLY, and EXPR is set to the second argument to APPLY, i.e. the list of arguments.  In this case, FAULTX will usually be EQ to the value returned by FINDFN, and FAULTARGS EQ to EXPR.  However, WTFIX may also be called from FAULTAPPLY, and FINDFN not find an APPLY, as occurs on undefined functions called from compiled code.  For this reason, FIXAPPLY always uses FAULTX and FAULTARGS, not FAULTFN and EXPR.")
+
+                         (SETQ VARS (AND (SETQ FAULTEM1 (OR BREAKFLG (LISTP EXPR)))
+                                         (GETVARS FAULTEM1]
+                   [AND (NULL TYPE-IN?)
+                        (SETQ SIDES (CDR (LISTGET1 LISPXHIST 'SIDE]
+                   (AND TYPE-IN? (NULL DWIMIFYFLG)
+                        [COND
+                           (FAULTAPPLYFLG (EQ FAULTX (CAAAAR LISPXHISTORY)))
+                           (T (OR (EQ FAULTX (CAAAAR LISPXHISTORY))
+                                  (EQUAL FAULTX (CAAAR LISPXHISTORY]
+                        (SETQ HISTENTRY (CAAR LISPXHISTORY)))
+                   [COND
+                      ([LITATOM (SETQ FAULTXX (COND
+                                                 (FAULTAPPLYFLG FAULTX)
+                                                 ((NLISTP FAULTX)
+                                                  FAULTX)
+                                                 (T (CAR FAULTX]
+                       (SETQ CHARLST (DUNPACK FAULTXX WTFIXCHCONLST]
+                   (COND
+                      ((AND (NULL FAULTAPPLYFLG)
+                            (LITATOM FAULTX))
+                       (FIXATOM)
+                       (SHOULDNT))
+                      (FAULTAPPLYFLG (FIXAPPLY)
+                             (SHOULDNT))
+                      ([AND TYPE-IN? (EQ FAULTXX (CAAR HISTENTRY))
+                            (AND (NEQ NOSPELLFLG T)
+                                 (AND (SETQ FAULTEM1 (FMEMB LPARKEY CHARLST))
+                                      (NULL (AND CLISPFLG (STRPOSL CLISPCHARRAY FAULTXX]
+
+                       (* ;; "LPARKEY is the lowercase version of left prentheses, normally 8, rparkey is normally 9, but user can reset them for different terminals.  The EQ distinguishes between (CONS8ADD1 3) which is handled by a call to FIX89 from CLISPATOM, and FOO8A B C ']' , which is handled by FIX89TYPEIN, since it requires changing an EVAL to an APPLY.")
+
+                       (FIX89TYPEIN FAULTEM1 CHARLST))
+                      ((AND CLISPFLG CHARLST (LITATOM (SETQ FAULTEM1 (CADR FAULTX)))
+                            (OR (GETPROP FAULTEM1 'CLISPTYPE)
+                                (FMEMB (SETQ FAULTEM1 (NTHCHAR FAULTEM1 1))
+                                       CLISPCHARS))
+                            [OR (NOT (GETPROP FAULTEM1 'UNARYOP))
+                                (AND (EQ FAULTEM1 '~)
+                                     (GETPROP (PACK (CDR (DUNPACK (CADR FAULTX)
+                                                                WTFIXCHCONLST1)))
+                                            'CLISPTYPE]
+                            (NOT (CLISPNOTVARP (CAR FAULTX)))
+                            (CLISPNOTVARP (CADR FAULTX)))    (* ; 
+           "So that things like (SUM + X) will work, i.e. not be interpreted as iterative statement.")
+                       (GO NX0))
+                      ((NULL CHARLST)
+                       (GO NX2)))                            (* ; 
+         "Both FIXAPPLY and FIXATOM exit via RETDWIM so there is no need for a return here in WTFIX.")
+               TOP [SELECTQ (CAR FAULTX)
+                       (F/L [/RPLNODE
+                             FAULTX
+                             'FUNCTION
+                             (LIST (CONS 'LAMBDA
+                                         (COND
+                                            ([AND (CDDR FAULTX)
+                                                  [OR (NULL (CADR FAULTX))
+                                                      (AND (LISTP (CADR FAULTX))
+                                                           (EVERY (CADR FAULTX)
+                                                                  (FUNCTION (LAMBDA (X)
+                                                                              (AND X (NEQ X T)
+                                                                                   (LITATOM X]
+                                                  (OR (MEMB (CAADR FAULTX)
+                                                            (FREEVARS (CDDR FAULTX)))
+                                                      (NOT (CLISPFUNCTION? (CADR FAULTX)
+                                                                  'OKVAR]
+                                             (CDR FAULTX))
+                                            (T (CONS (LIST 'X)
+                                                     (CDR FAULTX]
+                            (GO OUT))
+                       (CLISP%: (ERSETQ (CLISPDEC0 FAULTX FAULTFN))
+                                (SETQ FAULTX T))
+                       (COND
+                          [[CAR (LISTP (SETQ FAULTEM1 (GETPROP (CAR FAULTX)
+                                                             'CLISPWORD]
+                           (RESETVARS [(LCASEFLG (AND LCASEFLG (NULL TYPE-IN?]
+                                      (SELECTQ (CAR FAULTEM1)
+                                          (FORWORD (SETQ FAULTX (OR (CLISPFOR FAULTX)
+                                                                    (RETDWIM))))
+                                          (IFWORD (SETQ FAULTX (CLISPIF FAULTX))
+                                                  (SETQ HISTENTRY NIL))
+                                          (MATCHWORD         (* ; 
+                                                             "CAR of FAULTX either MATCH or match.")
+                                                     (CLISPTRAN FAULTX (MAKEMATCH FAULTX)))
+                                          (PREFIXFN (PROG ((EXPR FAULTX))
+                                                          (SETQ FAULTEM1 (CDR FAULTX))
+                                                          [COND
+                                                             ((EQ (CAR (LISTP (CAR FAULTEM1)))
+                                                                  'CLISP%:)
+                                                              (ERSETQ (CLISPDEC0 (CAR FAULTEM1)
+                                                                             FAULTFN]
+                                                          [COND
+                                                             ((EQ (CAR (LISTP (CAR FAULTEM1)))
+                                                                  COMMENTFLG)
+                                                              (SETQ FAULTEM1 (CDR FAULTEM1]
+                                                          [SETQ FAULTEM1
+                                                           (APPEND (COND
+                                                                      [(AND (NULL (CDR FAULTEM1))
+                                                                            (LISTP (CAR FAULTEM1]
+                                                                      (T FAULTEM1]
+                                                          (RESETVARS ((CLISPFLG T))
+                                                                     (DWIMIFY1? FAULTEM1))
+                                                          (CLISPELL FAULTX)
+                                                          (CLISPTRAN FAULTX FAULTEM1)))
+                                          (SETQ FAULTX (APPLY* (CAR FAULTEM1)
+                                                              FAULTX]
+                          (T (GO NX0]
+                   (AND DWIMIFYFLG (SETQ CLISPCHANGE T))
+                   (GO OUT)
+               NX0 (COND
+                      [(GETD (CAR FAULTX))
+                       (COND
+                          ([NULL (PROG (TYPE-IN? (FAULTFN (CAR FAULTX)))
+                                       (RETURN (COND
+                                                  ((FIXLAMBDA (GETD (CAR FAULTX)))
+                                                             (* ; 
+              "This is the case where (FOO --) is being evaluated, and the definition of FOO is bad.")
+                                                   (AND FILEPKGFLG (LITATOM FAULTFN)
+                                                        (MARKASCHANGED FAULTFN 'FNS))
+                                                   T]
+                           (SETQ NOSPELLFLG0 T)
+                           (GO NX3)                          (* ; "So DWIMUSERFN can be called.")
+                           ]
+                      ((AND (OR (GETPROP (CAR FAULTX)
+                                       'EXPR)
+                                (GETPROP (CAR FAULTX)
+                                       'CODE))
+                            (DWIMUNSAVEDEF (CAR FAULTX)))
+                       (SETQ FAULTFN NIL)                    (* ; 
+                                                           "So that RETDWIM won't do a MARKASCHANGED")
+                       )
+                      ((SETQ FAULTEM1 (GETPROP (CAR FAULTX)
+                                             'FILEDEF))
+                       (COND
+                          ((WTFIXLOADEF FAULTEM1)
+                           (GO OUT)))
+                       (RETDWIM))
+                      (T (GO NX1)))
+                   (GO OUT)
+               NX1 (COND
+                      ((AND (CLISPNOTVARP (CAR FAULTX))
+                            (SETQ FAULTEM1 (CLISPATOM CHARLST FAULTX FAULTX)))
+                                                             (* ; "E.g. (FOO←ATOM) OR (FOO← form)")
+                       (SETQ FAULTX FAULTEM1)
+                       (GO OUT)))
+               NX2 (COND
+                      ([AND CLISPFLG (SETQ FAULTEM1 (CADR FAULTX))
+                            (OR (LITATOM FAULTEM1)
+                                (AND (NUMBERP FAULTEM1)
+                                     (MINUSP FAULTEM1)
+                                     (CLBINARYMINUS? FAULTX)))
+                            (OR (GETPROP FAULTEM1 'CLISPTYPE)
+                                (FMEMB (CAR (SETQ FAULTEM1 (DUNPACK FAULTEM1 WTFIXCHCONLST1)))
+                                       CLISPCHARS))
+                            (SETQ FAULTEM1 (CLISPATOM FAULTEM1 (CDR FAULTX)
+                                                  FAULTX T))
+                            (COND
+                               [(OR (NEQ FAULTXX (CAR FAULTX))
+                                    (AND CLISPARRAY (GETHASH FAULTX CLISPARRAY]
+                               (DWIMIFYFLG (SETQ CHARLST (DUNPACK FAULTXX WTFIXCHCONLST))
+                                                             (* ; "LST may have been clobbered")
+                                      (SETQ CLISPCHANGE NIL]
+
+                       (* ;; "E.g. (FOO ←atom) or (FOO ← form).  The NEQ check is necessary to handle situations like (FOOO N-1) where an CLISP transformation is performed, but it does not correct CAR of the form.  (In this case, we must continue to the spelling correction part below, and set CLISPCHANGE to NIL so that DWIMIFY1 will not be confused.) Note that if FOO also happens to be the name of a function, then WTFIX will not be called and the CLISP transformation not be performed until the arguments of FOO are evaluated and cause a u.b.a.  error.  Then DWIM will have to back up as described in FIXATOM and FIXATOM1.")
+
+                       (SETQ FAULTX FAULTEM1)
+                       (GO OUT))
+                      ((AND (NULL NOSPELLFLG0)
+                            DWIMIFYFLG
+                            (LISTP (CADR FAULTX))
+                            (FIXLAMBDA FAULTX))
+
+                       (* ;; "The DWIMIFYFLG check is because in normal course of events, it never makes sense for LAMBDA to appear as CAR of a FORM.  However, DWIMIFY1 is called on open LAMBDA expressions.")
+
+                       (GO OUT))
+                      ((AND (NULL NOSPELLFLG0)
+                            (LISTP (CAR FAULTX))
+                            (LISTP (CADAR FAULTX))
+                            (FIXLAMBDA (CAR FAULTX)))
+
+                       (* ;; "This corresponds to the case where LAMBDA is misspelled in an open LAMBDA expression.  Note that an open lambda expression only makes sense when there is a non-atomic argument list, so dont both spelling correcting if this is notthe case.")
+
+                       (GO OUT)))
+               NX3 (COND
+                      [[SOME DWIMUSERFORMS (FUNCTION (LAMBDA (DWIMUSERFORM)
+                                                       (SETQ FAULTEM1 (EVAL DWIMUSERFORM]
+                       (COND
+                          (FAULTAPPLYFLG (RETDWIM FAULTPOS FAULTEM1 T FAULTARGS))
+                          (T (RETDWIM FAULTPOS FAULTEM1]
+                      (NOSPELLFLG0 (GO FAIL))
+                      [[AND CHARLST (SETQ FAULTXX
+                                     (OR (FIXSPELL (CAR FAULTX)
+                                                NIL SPELLINGS2 NIL FAULTX NIL NIL NIL T)
+                                         (AND DWIMIFYFLG NOFIXFNSLST0
+                                              (FIXSPELL (CAR FAULTX)
+                                                     NIL NOFIXFNSLST0 NIL FAULTX NIL NIL NIL T]
+                                                             (* ; 
+                 "The extra argument to FIXSPELL indicates that SPLITS re tolerated, e.g. (BREAKFOO)")
+                       (COND
+                          ((EQ (CAAR HISTENTRY)
+                               (CAR FAULTX))
+                           (/RPLNODE HISTENTRY FAULTX (CDR HISTENTRY))
+
+                           (* ;; "Normally, RETDWIM patches the histroy entry to corresond to a list input, even if it was typed in as a line.  In the special case of a pselling correction, we leave the entry as a line.")
+
+                           ))
+                       (SETQ HISTENTRY NIL)
+                       (COND
+                          ((NOT (FGETD FAULTXX))             (* ; 
+                       "E.g. USER misspells FOR, IF, F/L etc. These are all contained on SPELLINGS2.")
+                           (GO TOP]
+                      ((AND CLISPFLG DWIMIFYFLG (CDR FAULTX)
+                            (LISTP CLISPCONTEXT)
+                            (FIXSPELL (CAR FAULTX)
+                                   NIL CLISPISWORDSPLST NIL FAULTX NIL NIL NIL T)
+                            (SETQ FAULTEM1 (CLISPATOM (DUNPACK (CAR FAULTX)
+                                                             WTFIXCHCONLST)
+                                                  TAIL PARENT)))
+
+                       (* ;; "E.g. X IS A NUMBER AND LESS THAN Y.  CLISPATOM will call CLISPATOMIS?  which will retfrom back past here or generate an error.  NOte that if (CAR FAUULTX) had been spelled correctly, thiswold have happened in first call to CLISPATOM at NX1 earlir.  However, we dont do the misspelled check until here because it is more likely user has misspelled the name of one of his functions.")
+
+                       )
+                      ([AND CLISPFLG (NULL CLISPCHANGES)
+                            (NULL CLISPERTYPE)
+                            (SETQ FAULTEM1 (CADR FAULTX))
+                            (LITATOM FAULTEM1)
+                            (SETQ FAULTEM1 (FIXSPELL FAULTEM1 NIL CLISPINFIXSPLST NIL
+                                                  (OR (AND DWIMIFYFLG (LISTP CLISPCONTEXT))
+                                                      (CDR FAULTX))
+                                                  NIL NIL NIL T))
+                            (COND
+                               ((AND DWIMIFYFLG (LISTP CLISPCONTEXT))
+
+                                (* ;; 
+           "Return from the corresponding DWIMUNDOCATCH with a value telling CLISPATOM to try again.")
+
+                                (CL:THROW 'CLISPATOM1 :RESPELL))
+                               (T (LET (CLISPERTYPE)
+                                       (SETQ FAULTEM1 (CLISPATOM FAULTEM1 (CDR FAULTX)
+                                                             FAULTX T]
+                       (SETQ FAULTX FAULTEM1))
+                      (T (GO FAIL)))
+               OUT (RETDWIM FAULTPOS FAULTX)
+               FAIL
+                   (RETDWIM))))]
       (SELECTQ RESULT
-          (:RESPELL                                          (* ; 
-                       "from CLISPATOM2 -- wants us to throw this message back to a higher CLISPATOM")
+          (:RESPELL                                          (* ; 
+                       "from CLISPATOM2 -- wants us to throw this message back to a higher CLISPATOM")
                     (CL:THROW 'CLISPATOM1 :RESPELL))
-          (PROGN                                             (* ; 
-                                          "something interesting to return, or a value from RETDWIM ")
+          (PROGN                                             (* ; 
+                                          "something interesting to return, or a value from RETDWIM ")
                  RESULT])
 
 (RETDWIM
-  [LAMBDA (POS X APPLYFLG ARGS)                              (* bvm%: "21-Nov-86 18:02")
+  [LAMBDA (POS X APPLYFLG ARGS)                              (* bvm%: "21-Nov-86 18:02")
     (PROG NIL
           [AND FIXCLK HELPCLOCK (SETQ HELPCLOCK (IPLUS HELPCLOCK (IDIFFERENCE (CLOCK 2)
                                                                         FIXCLK]
-                                                             (* ; 
-                                              "So time spent in DWIM will not count towards a break.")
+                                                             (* ; 
+                                              "So time spent in DWIM will not count towards a break.")
       TOP [COND
-             [(OR POS X)                                     (* ; "Successful correction.")
+             [(OR POS X)                                     (* ; "Successful correction.")
               (AND (EQ (CAR SIDES)
                        'CLISP% )
                    [NCONC1 (CADR SIDES)
                           (CDR (LISTGET1 LISPXHIST 'SIDE]
                    (LISPXPUT '*LISPXPRINT* (LIST SIDES)
-                          T LISPXHIST))                      (* ;; "Some messages were printed, and the undo informaton marked.  This completes the process enabling user to undo just the effects associated with the dwim change corresponding to the message printed between (CADR of this mark) and the place where the mark appears.  The use of CLISP  makes the mark invisible to the editor, and also does not i nterefere with printing the event.")
+                          T LISPXHIST))
+
+              (* ;; "Some messages were printed, and the undo informaton marked.  This completes the process enabling user to undo just the effects associated with the dwim change corresponding to the message printed between (CADR of this mark) and the place where the mark appears.  The use of CLISP  makes the mark invisible to the editor, and also does not i nterefere with printing the event.")
+
               [COND
                  ((AND DWIMIFYFLG DWIMIFYING)
                   (SETQ DWIMIFY0CHANGE T))
@@ -2710,7 +3006,10 @@ with the terms of said license.
                    (EQ FAULTX (CAR TAIL))
                    (EQ TAIL PARENT)
                    (STRPOSL CLISPCHARRAY (CAR TAIL))
-                   (DWIMIFY2A TAIL CHARLST))                 (* ;; "In the event that a parenthesis was left out, and (CAR TAIL) is really the name of a function (or misspelled function), spelling correction would nothave been attempted earlier in DWIMIFY2 until seeing if this was ok CLISP, so try it now.  E.g. (IF A THEN FOOX-1), where FOO is name of a function, or (IF A THEN R/PLNODE X).  Note that CLISPCHANGES might be NIL in the case that the clisp transformationdidn't go throuh, e.g. missing operand.")
+                   (DWIMIFY2A TAIL CHARLST))
+
+              (* ;; "In the event that a parenthesis was left out, and (CAR TAIL) is really the name of a function (or misspelled function), spelling correction would nothave been attempted earlier in DWIMIFY2 until seeing if this was ok CLISP, so try it now.  E.g. (IF A THEN FOOX-1), where FOO is name of a function, or (IF A THEN R/PLNODE X).  Note that CLISPCHANGES might be NIL in the case that the clisp transformationdidn't go throuh, e.g. missing operand.")
+
               (/RPLNODE TAIL (CONS (CAR TAIL)
                                    (CDR TAIL)))
               (SETQ X (DWIMIFY1? (CAR TAIL)))
@@ -2735,14 +3034,20 @@ with the terms of said license.
                                                    (CDR X]
                     (SETQ POS FAULTPOS)
                     (GO TOP))
-             (CLISPERTYPE                                    (* ;; "Error messages are postponed till this point because what looks like a bad clisp expression may be interpreted correctly in a different way --- e.g. _PENP will correct to openp.")
+             (CLISPERTYPE 
+
+                    (* ;; "Error messages are postponed till this point because what looks like a bad clisp expression may be interpreted correctly in a different way --- e.g. ←PENP will correct to openp.")
+
                     (AND DWIMIFYFLG (SETQ ATTEMPTFLG T)
-                         (SETQ CLISPCHANGE T))               (* ;; "ATTEMPTFLG to inform DWIMMFY not to add FAUTX to NOFIXLST.  CLISPCHANGE is to prevent analysing cdr of the form in the case the error occurred in CAR of the form.")
+                         (SETQ CLISPCHANGE T))
+
+                    (* ;; "ATTEMPTFLG to inform DWIMMFY not to add FAUTX to NOFIXLST.  CLISPCHANGE is to prevent analysing cdr of the form in the case the error occurred in CAR of the form.")
+
                     (AND (OR DWIMIFYFLG (NULL TYPE-IN?))
                          (CLISPERROR CLISPERTYPE]
           (COND
-             (DWIMIFYFLG                                     (* ; 
-                                   "ERROR! instead of CL:THROW so that UNDONLSETQ changes are undone")
+             (DWIMIFYFLG                                     (* ; 
+                                   "ERROR! instead of CL:THROW so that UNDONLSETQ changes are undone")
                     (ERROR!))
              (T (RELSTK FAULTPOS)
                 [CL:THROW 'WTFIX (AND (NULL TYPE-IN?)
@@ -2750,18 +3055,20 @@ with the terms of said license.
                                                        ((ATOM FAULTX)
                                                         (RETDWIM2 PARENT TAIL))
                                                        (T (RETDWIM2 FAULTX NIL 2]
-                                                             (* ; 
-            "The vaue retunred by WTFIX is used on the call to OLDFAULT1 for printing out a message.")
+                                                             (* ; 
+            "The vaue retunred by WTFIX is used on the call to OLDFAULT1 for printing out a message.")
                 ])
 
 (DWIMERRORRETURN
-  [LAMBDA (ARG)                                              (* lmm " 5-SEP-83 23:51")
+  [LAMBDA (ARG)                                              (* lmm " 5-SEP-83 23:51")
     (AND ARG (SETQ CLISPERTYPE ARG))
     (ERROR!])
 
 (DWIMARKASCHANGED
-  [LAMBDA (FN $SIDES)                                        (* rmk%: "18-FEB-83 17:07")
-                                                             (* ;; "Informs the file package that FN has been changed, giving CLISP as the reason if we detect (because no messages were printed) that the only changes are because of valid clisp dwimifications.  Otherwise, the reason is CHANGED")
+  [LAMBDA (FN $SIDES)                                        (* rmk%: "18-FEB-83 17:07")
+
+    (* ;; "Informs the file package that FN has been changed, giving CLISP as the reason if we detect (because no messages were printed) that the only changes are because of valid clisp dwimifications.  Otherwise, the reason is CHANGED")
+
     (AND (LITATOM FN)
          (PROG [(L (CDR (LISTGET1 LISPXHIST 'SIDE]
            LP  (COND
@@ -2769,8 +3076,8 @@ with the terms of said license.
                        (EQ L $SIDES))
                    (RETURN)))
                [SELECTQ (CAAR L)
-                   ((/PUTHASH CLISPRPLNODE *)                (* ; 
-                                    "For some reason (ask wt!), these aren't counted as real changes")
+                   ((/PUTHASH CLISPRPLNODE *)                (* ; 
+                                    "For some reason (ask wt!), these aren't counted as real changes")
                         NIL)
                    (RETURN (MARKASCHANGED FN 'FNS (COND
                                                      ((FASSOC 'CLISP%  (LISTGET1 LISPXHIST
@@ -2781,12 +3088,14 @@ with the terms of said license.
                (GO LP])
 
 (RETDWIM1
-  [LAMBDA (L)                                                (* lmm "20-May-84 19:58")
-                                                             (* ;; "Called when about to make a CLISP transformation for which one of the atmic operands are not bound.")
+  [LAMBDA (L)                                                (* lmm "20-May-84 19:58")
+
+    (* ;; "Called when about to make a CLISP transformation for which one of the atmic operands are not bound.")
+
     (PROG (($TAIL (CAR L))
            ($CURRTAIL (CADR L))
-           FLG TEM)                                          (* ; 
-          "CLISPCHANGES rebound so that FIXSPELL1 will only ask for approval if dwim mode indicates.")
+           FLG TEM)                                          (* ; 
+          "CLISPCHANGES rebound so that FIXSPELL1 will only ask for approval if dwim mode indicates.")
           [SETQ TEM (COND
                        ((EQ (CDR $TAIL)
                             $CURRTAIL)
@@ -2811,19 +3120,25 @@ with the terms of said license.
              ([OR TREATASCLISPFLG (AND (EQ (CADDR L)
                                            'PROBABLY)
                                        (OR (AND DWIMIFYFLG DWIMIFYING)
-                                           (NULL TYPE-IN?]   (* ;; "The idea here is that it does not make sense to automatcaaly go ahead and perform a transformation to typein that is then going to produce an error, e.g. user type FOO_FIE where FIE is unbound.  Therefore we will always ask him for type-in?  Note that he may say YES even though it will produce an error, so that he can then say  ' or -> something.  --- In functons, if the operation involves more than one CLISP operator (or an assignment where the variable is one of the bound varables.) we will just tell him.")
+                                           (NULL TYPE-IN?]
+
+              (* ;; "The idea here is that it does not make sense to automatcaaly go ahead and perform a transformation to typein that is then going to produce an error, e.g. user type FOO←FIE where FIE is unbound.  Therefore we will always ask him for type-in?  Note that he may say YES even though it will produce an error, so that he can then say  ' or -> something.  --- In functons, if the operation involves more than one CLISP operator (or an assignment where the variable is one of the bound varables.) we will just tell him.")
+
               (SETQQ FLG NEEDNOTAPPROVE))
              (T (SETQQ FLG MUSTAPPROVE)))
           (COND
              ((COND
-                 ((AND TREATASCLISPFLG (NULL CLISPHELPFLG))  (* ; 
-                                                   "dont print any message, but do treat it as clisp")
+                 ((AND TREATASCLISPFLG (NULL CLISPHELPFLG))  (* ; 
+                                                   "dont print any message, but do treat it as clisp")
                   T)
-                 ((OR TREATASCLISPFLG CLISPHELPFLG)          (* ; 
- "interact (ask or inform) with user if either treatasclispflg is T, or clisphelpflg is T , or both.")
+                 ((OR TREATASCLISPFLG CLISPHELPFLG)          (* ; 
+ "interact (ask or inform) with user if either treatasclispflg is T, or clisphelpflg is T , or both.")
                   (FIXSPELL1 TEM (COND
                                     (LCASEFLG '" as clisp")
-                                    (T                       (* ;; "The reason for the check is that the user may want to key on this message for an UNDO : operation, and if he is on a 33 and it is printed as a lowercase string (even though he sees it in uppercase) he wont be able to fnd it.")
+                                    (T 
+
+                                 (* ;; "The reason for the check is that the user may want to key on this message for an UNDO : operation, and if he is on a 33 and it is printed as a lowercase string (even though he sees it in uppercase) he wont be able to fnd it.")
+
                                        '" AS CLISP"))
                          (COND
                             [(EQ FLG 'NEEDNOTAPPROVE)
@@ -2836,19 +3151,24 @@ with the terms of said license.
                                 (T '" TREAT"]
                             (T (SHOULDNT)))
                          T FLG))
-                 ((EQ FLG 'NEEDNOTAPPROVE)                   (* ; "dont interact, but treat it as clisp, e.g. when transformation is a PROBABLY and we are dwimifying.")
+                 ((EQ FLG 'NEEDNOTAPPROVE)                   (* ; "dont interact, but treat it as clisp, e.g. when transformation is a PROBABLY and we are dwimifying.")
                   T))
-              (SETQ NOFIXVARSLST0 (CADDDR L))                (* ;; "Since user has approved CLISP, it is ok to set NOFIXVARSLST0 to include any variabes detected during analysis of CLISP expression, e.g. if expression were A*B A and B can now be added NOFIXVARSLST0")
+              (SETQ NOFIXVARSLST0 (CADDDR L))
+
+              (* ;; "Since user has approved CLISP, it is ok to set NOFIXVARSLST0 to include any variabes detected during analysis of CLISP expression, e.g. if expression were A*B A and B can now be added NOFIXVARSLST0")
+
               (RETURN T)))
           (RETURN (COND
                      (DWIMIFYFLG (SETQ NEXTAIL (NLEFT (CAR L)
                                                       1 $CURRTAIL))
-                                                             (* ; "Tells DWIMIFY where to continue.")
+                                                             (* ; "Tells DWIMIFY where to continue.")
                             (COND
                                ((LISTP (CAR NEXTAIL))
                                 (SETQ NEXTAIL (NLEFT (CAR L)
                                                      2 $CURRTAIL))
-                                                             (* ;; "E.G. In A* (FOO --), this will enable (FOO --) to be processed.  If the expression immediately before CURRTAIL is an atom, we have no way of knowing if it contains a CLISP operator or not, e.g. is it A + B, or A+B.  If we were to back up NEXTAIL so that DWIMIFYING continued as of this atom, it might cause a loop.")
+
+                                (* ;; "E.G. In A* (FOO --), this will enable (FOO --) to be processed.  If the expression immediately before CURRTAIL is an atom, we have no way of knowing if it contains a CLISP operator or not, e.g. is it A + B, or A+B.  If we were to back up NEXTAIL so that DWIMIFYING continued as of this atom, it might cause a loop.")
+
                                 ))
                             NIL])
 
@@ -2857,20 +3177,20 @@ with the terms of said license.
     (PROG (TEM)
           (PRIN1 '= T)
           (COND
-             [(EQ X CLST)                                    (* ; "THE 8 is the first character.")
+             [(EQ X CLST)                                    (* ; "THE 8 is the first character.")
               (PRINT (SETQ TEM (PACK (CDR X)))
                      T T)
               (RETDWIM FAULTPOS (CONS TEM (COND
-                                             ((NULL APPLYFLG)(* ; "E.g. 8FOO X Y")
+                                             ((NULL APPLYFLG)(* ; "E.g. 8FOO X Y")
                                               (CDR FAULTX))
-                                             (FAULTARGS      (* ; "E.G. 8FOO (A B)")
+                                             (FAULTARGS      (* ; "E.G. 8FOO (A B)")
                                                     (LIST FAULTARGS]
              (T [SETQ FAULTARGS (COND
-                                   ((AND APPLYFLG FAULTARGS) (* ; 
-                                                             "E.g. 'FOO8)' or 'FOO8A)' or 'FOO8A B]'")
+                                   ((AND APPLYFLG FAULTARGS) (* ; 
+                                                             "E.g. 'FOO8)' or 'FOO8A)' or 'FOO8A B]'")
                                     (LIST FAULTARGS))
-                                   (T                        (* ; 
-                                                             "E.g. 'FOO8A B C]' (or 'FOO8 A B]')")
+                                   (T                        (* ; 
+                                                             "E.g. 'FOO8A B C]' (or 'FOO8 A B]')")
                                       (CDR FAULTX]
                 (RETDWIM FAULTPOS (PRINT (SETQ TEM (PACK (LDIFF CLST X)))
                                          T T)
@@ -2882,8 +3202,10 @@ with the terms of said license.
                                    FAULTARGS])
 
 (FIXLAMBDA
-  [LAMBDA (DEF)                                              (* lmm "20-May-84 19:57")
-                                                             (* ;; "LAMBDASPLST is initialized to (LAMBDA NLAMBDA).  HOwever users can add to it for 'function' handled by DWIMMUSERFN.  QLISP uses this feature.")
+  [LAMBDA (DEF)                                              (* lmm "20-May-84 19:57")
+
+    (* ;; "LAMBDASPLST is initialized to (LAMBDA NLAMBDA).  HOwever users can add to it for 'function' handled by DWIMMUSERFN.  QLISP uses this feature.")
+
     (AND (LITATOM (CAR DEF))
          (CDDR DEF)
          (NOT (FMEMB (CAR DEF)
@@ -2892,10 +3214,13 @@ with the terms of said license.
                 NIL LAMBDASPLST NIL DEF NIL NIL NIL T])
 
 (FIXAPPLY
-  [LAMBDA NIL                                                (* lmm "19-MAY-84 21:44")
+  [LAMBDA NIL                                                (* lmm "19-MAY-84 21:44")
     (PROG (X TEM)
           (COND
-             ((NEQ FAULTFN FAULTX)                           (* ;; "means the call came out of compiled code, e.g. user types in FOO which contains a call to a mispelled function.")
+             ((NEQ FAULTFN FAULTX)
+
+              (* ;; "means the call came out of compiled code, e.g. user types in FOO which contains a call to a mispelled function.")
+
               (SETQ TYPE-IN? NIL)))
           (COND
              ((AND (LITATOM FAULTX)
@@ -2912,8 +3237,8 @@ with the terms of said license.
                        (GETPROP FAULTX 'CODE))
                    (DWIMUNSAVEDEF FAULTX))
               (SETQ X FAULTX)
-              (SETQ FAULTFN NIL)                             (* ; 
-                                                             "So that RETDWIM won't do a NEWFILE?")
+              (SETQ FAULTFN NIL)                             (* ; 
+                                                             "So that RETDWIM won't do a NEWFILE?")
               (GO OUT))
              ((SETQ TEM (GETPROP FAULTX 'FILEDEF))
               (COND
@@ -2923,16 +3248,16 @@ with the terms of said license.
               (RETDWIM))
              ((AND TYPE-IN? CLISPFLG (STRPOSL CLISPCHARRAY FAULTX)
                    (SETQ X (CLISPATOM CHARLST (SETQ TEM (LIST FAULTX FAULTARGS))
-                                  TEM T)))                   (* ; 
-        "E.g. FOO_ form.  FOO _form is caught by a special check in LISPX and treated as (FOO _form)")
+                                  TEM T)))                   (* ; 
+        "E.g. FOO← form.  FOO ←form is caught by a special check in LISPX and treated as (FOO ←form)")
               (RETDWIM FAULTPOS X))
              ((AND TYPE-IN? (NEQ NOSPELLFLG T)
                    (EQ FAULTXX (CAAR HISTENTRY))
                    (SETQ TEM (FMEMB LPARKEY CHARLST)))
               (FIX89TYPEIN TEM CHARLST T))
              ((AND (LISTP FAULTX)
-                   (FIXLAMBDA FAULTX))                       (* ; 
-       "LAMBDA or NLAMBDA misspelled in LAMBDA expression being applied, e.g. a functional argument.")
+                   (FIXLAMBDA FAULTX))                       (* ; 
+       "LAMBDA or NLAMBDA misspelled in LAMBDA expression being applied, e.g. a functional argument.")
               (SETQ X FAULTX)
               (GO OUT)))
       NX  (COND
@@ -2950,7 +3275,7 @@ with the terms of said license.
           (RETDWIM FAULTPOS X T FAULTARGS])
 
 (FIXATOM
-  [LAMBDA NIL                                                (* bvm%: "21-Nov-86 16:38")
+  [LAMBDA NIL                                                (* bvm%: "21-Nov-86 16:38")
     (PROG (X Y TAIL0)
           (COND
              ((NULL TAIL)
@@ -2958,19 +3283,22 @@ with the terms of said license.
                                 (BLIPVAL '*FORM* X)))
               (RELSTK X)))
           (SETQ TAIL0 (AND (NEQ ONLYSPELLFLG 'NORUNONS)
-                           TAIL))                            (* ;; "ONLYSPELLFLG is NORUNONS for calls from CLISPATOM2A, i.e. when DWIMIYING one of the operands to an infix operator.  IN this case it never makes sense to do a runon spelling correction, e.g. FOOX*A shouldnt correct to (ITIMES FOO X A), althouh it may correct to FOO X*A.")
+                           TAIL))
+
+     (* ;; "ONLYSPELLFLG is NORUNONS for calls from CLISPATOM2A, i.e. when DWIMIYING one of the operands to an infix operator.  IN this case it never makes sense to do a runon spelling correction, e.g. FOOX*A shouldnt correct to (ITIMES FOO X A), althouh it may correct to FOO X*A.")
+
           (COND
              ((SETQ X (CLISPATOM CHARLST TAIL PARENT))
               (GO OUT))
              ([AND (CDR TAIL)
                    (LITATOM (SETQ Y (CADR TAIL)))
                    (FMEMB (CHCON1 Y)
-                          (CHARCODE (_ �)))
+                          (CHARCODE (← _)))
                    (PROG (CLISPERTYPE)
                          (RETURN (SETQ X (CLISPATOM (UNPACK Y)
                                                 (CDR TAIL)
-                                                PARENT T]    (* ; 
-                       "E.G. (LIST FOO _ 3) where FOO is unbound at the time.  See comment in WTFIX.")
+                                                PARENT T]    (* ; 
+                       "E.G. (LIST FOO ← 3) where FOO is unbound at the time.  See comment in WTFIX.")
               (GO OUT))
              ([AND DWIMUSERFORMS (SOME DWIMUSERFORMS (FUNCTION (LAMBDA (DWIMUSERFORM)
                                                                  (SETQ X (EVAL DWIMUSERFORM]
@@ -2978,10 +3306,15 @@ with the terms of said license.
              ((OR (EQ NOSPELLFLG T)
                   (AND NOSPELLFLG (NULL TYPE-IN?))
                   (GETPROP FAULTX 'GLOBALVAR)
-                  (FMEMB FAULTX GLOBALVARS))                 (* ;; "For efficiency, GLOBALVARS is a global variable itself for DWIMBLOCK.  Thus FIXATOM obtains the top level value, not the one rebound by BCOMPL2.  However, in the case that there are block declarations aafecting globalvars, the variables would also have been added to NOFIXVARSLST, so this is ok.")
+                  (FMEMB FAULTX GLOBALVARS))
+
+              (* ;; "For efficiency, GLOBALVARS is a global variable itself for DWIMBLOCK.  Thus FIXATOM obtains the top level value, not the one rebound by BCOMPL2.  However, in the case that there are block declarations aafecting globalvars, the variables would also have been added to NOFIXVARSLST, so this is ok.")
+
               (RETDWIM))
              ((AND VARS (SETQ X (FIXSPELL FAULTX NIL VARS NIL TAIL0 NIL NIL NIL T)))
-                                                             (* ;; "Corrects spellings using LAMBDA and PROG variables of function in which error occurred, or function that is broken.")
+
+              (* ;; "Corrects spellings using LAMBDA and PROG variables of function in which error occurred, or function that is broken.")
+
               )
              ((SETQ X (FIXSPELL FAULTX NIL SPELLINGS3 NIL TAIL0 NIL NIL NIL T)))
              ((AND DWIMIFYFLG (EQ CLISPCONTEXT 'IFWORD)
@@ -2991,7 +3324,7 @@ with the terms of said license.
                    (FIXSPELL FAULTX NIL CLISPFORWORDSPLST NIL T NIL NIL NIL T))
               (CL:THROW 'CLISPFOR0 :RESPELL))
              [(AND DWIMIFYFLG NOFIXVARSLST0 (SETQ X
-                                             (FIXSPELL FAULTX NIL NOFIXVARSLST0 NIL TAIL0 NIL NIL NIL 
+                                             (FIXSPELL FAULTX NIL NOFIXVARSLST0 NIL TAIL0 NIL NIL NIL
                                                     T]
              ((AND DWIMIFYFLG CLISPFLG (OR (EQ CLISPCONTEXT 'IS)
                                            (AND (LISTP CLISPCONTEXT)
@@ -2999,11 +3332,14 @@ with the terms of said license.
                                                 (EQ TAIL PARENT)))
                    (SETQ X (FIXSPELL FAULTX NIL CLISPISWORDSPLST NIL TAIL NIL NIL NIL T)))
               (COND
-                 ((EQ CLISPCONTEXT 'IS)                      (* ;; "In this case, we are dwimifying the tail before processing it in clispatomis so is sufficient just to correct spelling and return.")
+                 ((EQ CLISPCONTEXT 'IS)
+
+                  (* ;; "In this case, we are dwimifying the tail before processing it in clispatomis so is sufficient just to correct spelling and return.")
+
                   )
                  ((SETQ X (CLISPATOM (DUNPACK X WTFIXCHCONLST)
-                                 TAIL PARENT))               (* ; 
-  "E.g. X IS A NUMBER OR STRNG, STRNG being misspelled.  Will call CLISPATOMIS?  which will retfrom.")
+                                 TAIL PARENT))               (* ; 
+  "E.g. X IS A NUMBER OR STRNG, STRNG being misspelled.  Will call CLISPATOMIS?  which will retfrom.")
                   ))
               (GO OUT))
              ([AND CLISPFLG (NULL CLISPCHANGES)
@@ -3037,18 +3373,23 @@ with the terms of said license.
              (T (RETDWIM)))
           [COND
              ((AND (NULL TAIL0)
-                   (EQ FAULTX (CAR TAIL)))                   (* ; 
-                                             "If TAIL0 is not NIL, the RPLNODE has aleady been done.")
+                   (EQ FAULTX (CAR TAIL)))                   (* ; 
+                                             "If TAIL0 is not NIL, the RPLNODE has aleady been done.")
               (/RPLNODE TAIL X (CDR TAIL]
       OUT [COND
-             ((AND NEWTAIL (NULL DWIMIFYFLG))                (* ;; "The interpreter has already made up its mind about how to handle the first operand of the CLISP expression, e.g. it has already been evaluated as an argument, or else is about to be called as a function.  Therefore continuing the computation requires some fiddling around.")
+             ((AND NEWTAIL (NULL DWIMIFYFLG))
+
+              (* ;; "The interpreter has already made up its mind about how to handle the first operand of the CLISP expression, e.g. it has already been evaluated as an argument, or else is about to be called as a function.  Therefore continuing the computation requires some fiddling around.")
+
               (SETQ X (FIXATOM1]
           (RETDWIM FAULTPOS X])
 
 (FIXATOM1
-  [LAMBDA NIL                                                (* lmm "20-SEP-83 23:37")
-                                                             (* ;; 
- "Called when evaluation went too far before DWIM fixed an CLISP expression.  See comment in FIXATOM")
+  [LAMBDA NIL                                                (* lmm "20-SEP-83 23:37")
+
+    (* ;; 
+ "Called when evaluation went too far before DWIM fixed an CLISP expression.  See comment in FIXATOM")
+
     (PROG ((POS (STKNTH -1 FAULTPOS))
            X OLDTAIL OLDFN)
           (SETQ OLDTAIL (BLIPVAL '*TAIL* POS))
@@ -3058,7 +3399,7 @@ with the terms of said license.
                         (COND
                            ((NEQ TAIL OLDTAIL)
                             (GO ERROR)))
-                        (SETBLIPVAL '*TAIL* POS NIL NEWTAIL) (* ; "Change the binding for the tai")
+                        (SETBLIPVAL '*TAIL* POS NIL NEWTAIL) (* ; "Change the binding for the tai")
                         (FIXCONTINUE (CADAR NEWTAIL))
                         (SETQ X (CAR NEWTAIL))
                         (GO OUT))
@@ -3066,52 +3407,76 @@ with the terms of said license.
           (SETQ OLDFN (BLIPVAL '*FN* POS))
           [COND
              ([COND
-                 ((NEQ TAIL OLDTAIL)                         (* ; 
-                                                      "E.g. (COND (ZAP _ T 3)) where ZAP is A u.b.a.")
+                 ((NEQ TAIL OLDTAIL)                         (* ; 
+                                                      "E.g. (COND (ZAP ← T 3)) where ZAP is A u.b.a.")
                   T)
-                 ((LISTP NEWTAIL)                            (* ; "E.G. (LIST FOO X + Y)")
+                 ((LISTP NEWTAIL)                            (* ; "E.G. (LIST FOO X + Y)")
                   (NEQ OLDFN (CAR PARENT)))
-                 [(ATOM (CADR PARENT))                       (* ;; "e.g. (FOO AND T) where FOO is the name of a function as well as a variable.  the check here used to be (NEQ OLDFN (CADR PARENT)).  however this fails for things like (FOO : FIE) which at this point would be (fetch FIE of FOO), i.e. cant assume that car of form is now CADR")
+                 [(ATOM (CADR PARENT))
+
+                  (* ;; "e.g. (FOO AND T) where FOO is the name of a function as well as a variable.  the check here used to be (NEQ OLDFN (CADR PARENT)).  however this fails for things like (FOO : FIE) which at this point would be (fetch FIE of FOO), i.e. cant assume that car of form is now CADR")
+
                   (AND (NEQ OLDFN (CADR PARENT))
                        (NEQ OLDFN (CADDDR PARENT]
-                 (T                                          (* ;; "For infixes like EQ, AND, OR, the function that was about to be called may now be parenthesized, e.g. (FOO X EQ Y) becomes (EQ (FOO X) Y) However, it is also possible that it was not a function at all, e.g. (FOO GT 4 AND FOO LT 6)")
-                    (NOT (FMEMB OLDFN (CADR PARENT]          (* ;; "The procedure followed assumes that Y gives the binding for TAIL, and Z gives the binding for the name of the function that is about to be called.  This checks to make sure that this is in fact the cas")
+                 (T 
+                    (* ;; "For infixes like EQ, AND, OR, the function that was about to be called may now be parenthesized, e.g. (FOO X EQ Y) becomes (EQ (FOO X) Y) However, it is also possible that it was not a function at all, e.g. (FOO GT 4 AND FOO LT 6)")
+
+                    (NOT (FMEMB OLDFN (CADR PARENT]
+
+              (* ;; "The procedure followed assumes that Y gives the binding for TAIL, and Z gives the binding for the name of the function that is about to be called.  This checks to make sure that this is in fact the cas")
+
               (GO BAD))
-             ((NLISTP NEWTAIL)                               (* ;; "Occurs when CAR of an xpression in which a CLISP operator is used is the name of a function, e.g. (FOO + X), (FOO X AND FIE Y).  Note that at this point in the evaluton, the nterpreter is evaluating the 'arguments' for that function, and plans to call it when they have all been evaluated")
+             ((NLISTP NEWTAIL)
+
+              (* ;; "Occurs when CAR of an xpression in which a CLISP operator is used is the name of a function, e.g. (FOO + X), (FOO X AND FIE Y).  Note that at this point in the evaluton, the nterpreter is evaluating the 'arguments' for that function, and plans to call it when they have all been evaluated")
+
               NIL)
              ((OR (CDR NEWTAIL)
                   (ZEROP (LOGAND (ARGTYPE (CAR PARENT))
-                                2)))                         (* ;; "Either there are more arguments following the CLISP expression, or, in the case of a spread, evaluate, it doesn't matter if an extra NIL is passed.  Therefore, proceed by smashing the last argument with the value of the CLISP expression, (CAR NEWTAIL), change the binding for the tail to be (CDR NEWTAIL), and RETDWIM with the next expression on TAIL, (CADR NEWTAIL) e.g. (LIST T 2 + 3 6)")
+                                2)))
+
+              (* ;; "Either there are more arguments following the CLISP expression, or, in the case of a spread, evaluate, it doesn't matter if an extra NIL is passed.  Therefore, proceed by smashing the last argument with the value of the CLISP expression, (CAR NEWTAIL), change the binding for the tail to be (CDR NEWTAIL), and RETDWIM with the next expression on TAIL, (CADR NEWTAIL) e.g. (LIST T 2 + 3 6)")
+
               [SETBLIPVAL '*ARGVAL* POS NIL (STKEVAL POS (FIXLISPX/ (CAR NEWTAIL]
               (SETBLIPVAL '*TAIL* POS NIL (CDR NEWTAIL))
               (SETQ X (CADR NEWTAIL))
               (GO OUT))
-             (T                                              (* ;; "The function to be called is a nospread function, e.g. LIST, and the CLISP expression was its last argument, e.g. (LIST X (--) *2) Therefore can only continue by reevaluating the whole form")
+             (T 
+                (* ;; "The function to be called is a nospread function, e.g. LIST, and the CLISP expression was its last argument, e.g. (LIST X (--) *2) Therefore can only continue by reevaluating the whole form")
+
                 (FIXCONTINUE (CADAR NEWTAIL)
                        (AND (NULL TYPE-IN?)
                             FAULTFN]
-          (SETBLIPVAL '*TAIL* POS NIL NIL)                   (* ; 
-                                                             "Makes tail of the argument list be NIL")
-          (SETBLIPVAL '*FN* POS NIL 'FIXATOM2)               (* ; 
-                        "A nospread, evaluate function whose value is the value of its last argument")
+          (SETBLIPVAL '*TAIL* POS NIL NIL)                   (* ; 
+                                                             "Makes tail of the argument list be NIL")
+          (SETBLIPVAL '*FN* POS NIL 'FIXATOM2)               (* ; 
+                        "A nospread, evaluate function whose value is the value of its last argument")
           (SETQ X PARENT)
-          (GO OUT)                                           (* ;; "PARENT will be evaluated, and its value stored on the stack.  Then since the tail of the argument list is now NIL, the interpreter figures that the evaluation of arguments is finished, and calls the function.  However since Z was changed, FIXATOM2 will be called instead, and it will return as its value its last argument, which will be the value of PARENT.  Voila")
-      BAD                                                    (* ; "Stack not in normal state")
+          (GO OUT)
+
+     (* ;; "PARENT will be evaluated, and its value stored on the stack.  Then since the tail of the argument list is now NIL, the interpreter figures that the evaluation of arguments is finished, and calls the function.  However since Z was changed, FIXATOM2 will be called instead, and it will return as its value its last argument, which will be the value of PARENT.  Voila")
+
+      BAD                                                    (* ; "Stack not in normal state")
           (SELECTQ (STKNAME (SELECTQ (SYSTEMTYPE)
-                                ((JERICHO D)                 (* ; "Skip over internal frames")
+                                ((JERICHO D)                 (* ; "Skip over internal frames")
                                      (REALSTKNTH -1 POS T POS))
                                 POS))
               (COND (COND
-                       ((EQ PARENT NEWTAIL)                  (* ;; "The CLISP transformation changed the predicate of a COND clause, e.g. (COND (FOO _ form --) --) Since the COND would ordinarily continue down that clause, it is necessary to continue by constructing an appropriate COND expression, and returning its value as the value of the entire COND")
+                       ((EQ PARENT NEWTAIL)
+
+                        (* ;; "The CLISP transformation changed the predicate of a COND clause, e.g. (COND (FOO ← form --) --) Since the COND would ordinarily continue down that clause, it is necessary to continue by constructing an appropriate COND expression, and returning its value as the value of the entire COND")
+
                         [SETQ X (CONS 'COND (FMEMB PARENT (STKARG 1 POS]
                         (RELSTK FAULTPOS)
                         (SETQ FAULTPOS POS)
                         (GO OUT))
-                       (T                                    (* ;; "The CLISP transformation did not affect the predicate of a COND clause, so can continue by just evaluating PARENT E.G. (COND (T FOO _ 2))")
+                       (T 
+                          (* ;; "The CLISP transformation did not affect the predicate of a COND clause, so can continue by just evaluating PARENT E.G. (COND (T FOO ← 2))")
+
                           (SETQ X (CAR NEWTAIL))
                           (GO OUT))))
-              ((PROGN PROG1)                                 (* ; 
-                         "Error in SELECTQ clause, e.g. (SELECTQ -- (-- A * B)) or error in savesetq")
+              ((PROGN PROG1)                                 (* ; 
+                         "Error in SELECTQ clause, e.g. (SELECTQ -- (-- A * B)) or error in savesetq")
                    (SETQ X (CONS (STKNAME POS)
                                  NEWTAIL))
                    (RELSTK FAULTPOS)
@@ -3141,7 +3506,7 @@ with the terms of said license.
               (RETDWIM])
 
 (FIXCONTINUE1
-  [LAMBDA (X)                                                (* True if it is ok to reevaluate X.)
+  [LAMBDA (X)                                                (* True if it is ok to reevaluate X.)
     (OR (EQ (CAR X)
             'QUOTE)
         (AND [OR (FMEMB (CAR X)
@@ -3166,26 +3531,31 @@ with the terms of said license.
                    (GO LP])
 
 (CLISPATOM
-  [LAMBDA (CLST TAIL PARENT NOFIX89)                         (* lmm "20-May-84 19:46")
-                                                             (* ;; "CLST is an exploded character list for CAR of TAIL, which is a tail of PARENT, although not necessarily a proper tail.  ONLYSPELLFLG=T indicates that the ONLY corrections to be attempted are spelling corrections.  Occurs on calls from CLISPATOM2a.")
+  [LAMBDA (CLST TAIL PARENT NOFIX89)                         (* lmm "20-May-84 19:46")
+
+    (* ;; "CLST is an exploded character list for CAR of TAIL, which is a tail of PARENT, although not necessarily a proper tail.  ONLYSPELLFLG=T indicates that the ONLY corrections to be attempted are spelling corrections.  Occurs on calls from CLISPATOM2a.")
+
     (AND (NULL ONLYSPELLFLG)
          (PROG (TEM)
                (COND
                   [(AND (NULL CLISPCHANGES)
                         (OR (EQ CLISPFLG T)
                             (AND (EQ CLISPFLG 'TYPE-IN)
-                                 TYPE-IN?)))                 (* ;; "If CLISPCHANGES is not NIL, a CLISP correction has already been found, so don't bother to find another, e.g. in (X+Y + Z), if X and Y are not bound vriables, after ggetting (IPLUS X Y Z), this would be undone and saved, pending spelling correction on X+Y.  Therefore don't do the transformation that staats with +Z.")
+                                 TYPE-IN?)))
+
+                   (* ;; "If CLISPCHANGES is not NIL, a CLISP correction has already been found, so don't bother to find another, e.g. in (X+Y + Z), if X and Y are not bound vriables, after ggetting (IPLUS X Y Z), this would be undone and saved, pending spelling correction on X+Y.  Therefore don't do the transformation that staats with +Z.")
+
                    (RETURN (COND
                               ((SETQ TEM (CLISPATOM0 CLST TAIL PARENT))
                                TEM)
                               (CLISPCHANGES (SETQ CHARLST (DUNPACK FAULTXX WTFIXCHCONLST))
-                                                             (* ; 
-                "Since DWIMIFY2, and hence WTFIX, may have been called, LST may have been clobbered.")
+                                                             (* ; 
+                "Since DWIMIFY2, and hence WTFIX, may have been called, LST may have been clobbered.")
                                      NIL]
                   ((AND (EQ (CAR CLST)
                             '%')
-                        (GETPROP '%' 'CLISPTYPE))            (* ; 
-                                             "So ' can be disabled when CLISP is turned off as well.")
+                        (GETPROP '%' 'CLISPTYPE))            (* ; 
+                                             "So ' can be disabled when CLISP is turned off as well.")
                    [COND
                       [(CDR CLST)
                        [SETQ TEM (LIST 'QUOTE (PACK (CDR CLST]
@@ -3218,29 +3588,32 @@ with the terms of said license.
                   ((AND TYPE-IN? (EQ (CAR TEM)
                                      LPARKEY)
                         (EQ (CAR (SETQ TEM (FLAST CLST)))
-                            RPARKEY))                        (* ;; "This corresponds to the case where an atom was typed in containing both an 8 and a 9, e.g. FILES?89 or 8EDITF9.  Note that if the atom were part of a larger expression, either CAR of form, or appearing in a tail, (as indicated by TAIL being non-NIL), the fix is performed by FIX89, and involves editing the expression.  In the case covered here, the fix requires changing the EVAL to an apppropriate APPLY.  The case where the 8 or 9 error appears in an APPLY context, or line format, is taken care of in WTFIX.")
+                            RPARKEY))
+
+                   (* ;; "This corresponds to the case where an atom was typed in containing both an 8 and a 9, e.g. FILES?89 or 8EDITF9.  Note that if the atom were part of a larger expression, either CAR of form, or appearing in a tail, (as indicated by TAIL being non-NIL), the fix is performed by FIX89, and involves editing the expression.  In the case covered here, the fix requires changing the EVAL to an apppropriate APPLY.  The case where the 8 or 9 error appears in an APPLY context, or line format, is taken care of in WTFIX.")
+
                    (FIX89TYPEIN (FMEMB LPARKEY (SETQ TEM (LDIFF CLST TEM)))
                           TEM T])
 
 (GETVARS
-  [LAMBDA (X)                                                (* lmm "20-May-84 19:24")
+  [LAMBDA (X)                                                (* lmm "20-May-84 19:24")
     (PROG (L POS TEM)
           (COND
-             ((EQ X T)                                       (* ; 
-                                          "context is inside of a BREAK --- Gets variables of BRKFN.")
+             ((EQ X T)                                       (* ; 
+                                          "context is inside of a BREAK --- Gets variables of BRKFN.")
               (SETQ POS (STKPOS 'BREAK1 -1 FAULTPOS))
               [COND
                  ((AND [NOT (EQ 0 (STKNARGS (SETQ TEM (FSTKNTH -1 POS]
-                       (LITATOM (STKARGNAME 1 TEM)))         (* ; 
-                        "If the first argument's name is #0 or #100, there are no genuine variables.")
+                       (LITATOM (STKARGNAME 1 TEM)))         (* ; 
+                        "If the first argument's name is #0 or #100, there are no genuine variables.")
                   (SETQ L (VARIABLES TEM]
               (SETQ X (STKARG 1 POS))
               (RELSTK TEM)
-              (RELSTK POS)                                   (* ; 
-             "Sets X to BRKEXP the first argument to BREAK1.  Used for getting PROG variables below.")
+              (RELSTK POS)                                   (* ; 
+             "Sets X to BRKEXP the first argument to BREAK1.  Used for getting PROG variables below.")
               )
              [(EQ (CAR X)
-                  'LAMBDA)                                   (* ; "Gets variables for expression X.")
+                  'LAMBDA)                                   (* ; "Gets variables for expression X.")
               (SETQ L (APPEND (CADR X]
              (T (RETURN NIL)))
           (RETURN (NCONC L (AND (LISTP X)
@@ -3252,18 +3625,24 @@ with the terms of said license.
                                                       (T (CAR X])
 
 (GETVARS1
-  [LAMBDA (X)                                                (* DD%: " 2-Dec-81 16:49")
-                                                             (* ;; "Looks for a PROG.")
+  [LAMBDA (X)                                                (* DD%: " 2-Dec-81 16:49")
+
+    (* ;; "Looks for a PROG.")
+
     (SELECTQ [CAR (SETQ X (CAR (LISTP (LAST (LISTP X]
         ((PROG RESETVARS) 
              X)
-        ((RESETLST RESETVAR RESETFORM) 
+        ((RESETLST
+             RESETVAR
+             RESETFORM) 
              (GETVARS1 X))
         NIL])
 
 (FIX89
-  [LAMBDA (FORM N POS)                                       (* bvm%: "21-Nov-86 18:47")
-                                                             (* ;; "Handles corrections for 8 and 9 errors.  N is either 8 or 9.0 POS is optional, and if given, it is the position of the 8 or 9 in the offending atom, and also indicates that the user has already approved the correction.")
+  [LAMBDA (FORM N POS)                                       (* bvm%: "21-Nov-86 18:47")
+
+    (* ;; "Handles corrections for 8 and 9 errors.  N is either 8 or 9.0 POS is optional, and if given, it is the position of the 8 or 9 in the offending atom, and also indicates that the user has already approved the correction.")
+
     (PROG [SPLIT89FLG (C (COND
                             ((EQ N LPARKEY)
                              'FIX8)
@@ -3272,29 +3651,30 @@ with the terms of said license.
              ([OR (AND (ATOM FAULTX)
                        (NULL TAIL))
                   (AND (NULL POS)
-                       (NULL (FIX89A FAULTX N]               (* ; 
-                                          "pointless to attempt an 8 or 9 correction if TAIL is NIL.")
-              (RETURN NIL)))                                 (* ; 
-                     "Gets user approval if necessary, i.e. if TYPE-IN?  is NIL and APPROVEFLG is T.")
+                       (NULL (FIX89A FAULTX N]               (* ; 
+                                          "pointless to attempt an 8 or 9 correction if TAIL is NIL.")
+              (RETURN NIL)))                                 (* ; 
+                     "Gets user approval if necessary, i.e. if TYPE-IN?  is NIL and APPROVEFLG is T.")
           (EDITE EXPR (LIST (LIST 'ORR (LIST (LIST (COND
                                                       ((ATOM FORM)
                                                        'F)
                                                       (T 'F=))
                                                    FORM T)
                                              (LIST C NIL POS))
-                                  NIL)))                     (* ; 
- "Constructs command of form ((ORR ((F= FORM T) C) NIL)) C is either FIX8 or FIX9 depending on call.")
+                                  NIL)))                     (* ; 
+ "Constructs command of form ((ORR ((F= FORM T) C) NIL)) C is either FIX8 or FIX9 depending on call.")
           (RETURN (COND
-                     ((NULL SPLIT89FLG)                      (* ; "Set in SPLIT89 if successful.")
+                     ((NULL SPLIT89FLG)                      (* ; "Set in SPLIT89 if successful.")
                       (EXEC-FORMAT "couldn't~%%")
                       NIL)
                      (T (AND DWIMIFYFLG (SETQ 89CHANGE T))
                         T])
 
 (FIXPRINTIN
-  [LAMBDA (FN FLG)                                           (* wt%: 12-OCT-76 21 40)
-                                                             (* ;; 
-                                                         "If FLG is T, printing goes on history lst.")
+  [LAMBDA (FN FLG)                                           (* wt%: 12-OCT-76 21 40)
+
+    (* ;; "If FLG is T, printing goes on history lst.")
+
     (AND FN (NEQ FN 'TYPE-IN)
          (PROG ((LISPXHIST (AND FLG LISPXHIST)))
                (AND (NEQ (POSITION T)
@@ -3305,7 +3685,10 @@ with the terms of said license.
                               [(OR (AND DWIMIFYFLG DWIMIFYING)
                                    (NULL FAULTAPPLYFLG))
                                (COND
-                                  (LCASEFLG                  (* ;; "Done this way instead of just printing the lower case version because users may want to efer to the message to undo a dwim correction, e.g. by typing UNDO : $IN$.")
+                                  (LCASEFLG 
+
+                                 (* ;; "Done this way instead of just printing the lower case version because users may want to efer to the message to undo a dwim correction, e.g. by typing UNDO : $IN$.")
+
                                          '"in ")
                                   (T '"IN "]
                               (LCASEFLG '"below ")
@@ -3316,7 +3699,7 @@ with the terms of said license.
                (RETURN FN])
 
 (FIX89A
-  [LAMBDA (X N POS)                                          (* wt%: 25-FEB-76 1 40)
+  [LAMBDA (X N POS)                                          (* wt%: 25-FEB-76 1 40)
     [COND
        ((LISTP X)
         (SETQ X (CAR X]
@@ -3337,14 +3720,20 @@ with the terms of said license.
               NIL])
 
 (CLISPFUNCTION?
-  [LAMBDA (TL TYPE FN1 FN2 Y)                                (* lmm "20-May-84 18:56")
-                                                             (* ;; "returns TRUE if (CAR TAIL) corresponds to the name of a function (Possibly misspelled).  If TYP=NOTVAR, checks first to make sure (CAR TAIL) does not correspond to the name of a variable.")
-                                                             (* ;; "FN1 and FN2 are used to compute the arguments to FIXSPELL1.  FN1 is given (CAR TAIL) and Y as its arguments, FN2 (CAR TAIL) or the corrected spelling, and Y.  If FN1 is supplied, FIXSPELL is called so as not to print any messages, and the interaction takes place under CLISPUNCTION?  control via a direct call to FIXSPELL1.  In this case, if TYP=QUIET, no message is printed at all.  --- If FN1 is not suppied, FIXSPELL will take care of the interaction, if any, othrwisre there are no error messages.")
+  [LAMBDA (TL TYPE FN1 FN2 Y)                                (* lmm "20-May-84 18:56")
+
+    (* ;; "returns TRUE if (CAR TAIL) corresponds to the name of a function (Possibly misspelled).  If TYP=NOTVAR, checks first to make sure (CAR TAIL) does not correspond to the name of a variable.")
+
+    (* ;; "FN1 and FN2 are used to compute the arguments to FIXSPELL1.  FN1 is given (CAR TAIL) and Y as its arguments, FN2 (CAR TAIL) or the corrected spelling, and Y.  If FN1 is supplied, FIXSPELL is called so as not to print any messages, and the interaction takes place under CLISPUNCTION?  control via a direct call to FIXSPELL1.  In this case, if TYP=QUIET, no message is printed at all.  --- If FN1 is not suppied, FIXSPELL will take care of the interaction, if any, othrwisre there are no error messages.")
+
     (PROG (TEM CHRLST)
           (COND
              ((NULL (LITATOM (CAR TL)))
               (RETURN NIL))
-             ((LISTP TYPE)                                   (* ;; "Means that we already know that (CAR TAIL) is not the name of a variable, and is also not the name of a function.")
+             ((LISTP TYPE)
+
+              (* ;; "Means that we already know that (CAR TAIL) is not the name of a variable, and is also not the name of a function.")
+
               (SETQ CHRLST TYPE)
               (GO SPELL))
              ([AND (EQ TYPE 'NOTVAR)
@@ -3394,19 +3783,24 @@ with the terms of said license.
                                                    NIL T (AND (OR FN1 (LISTP TEM))
                                                               'MUSTAPPROVE)
                                                    (AND (LISTP TEM)
-                                                        'n]  (* ;; "If TYP=QUIET (from DWIMIFY2), the message is printed only on spelling correction.  For other calls, e.g. TYP=OKVAR, or TYP=NOTVAR, the message is printed even if no correction involved.")
+                                                        'n]
+
+                      (* ;; "If TYP=QUIET (from DWIMIFY2), the message is printed only on spelling correction.  For other calls, e.g. TYP=OKVAR, or TYP=NOTVAR, the message is printed even if no correction involved.")
+
                       [AND TEM FN1 (COND
-                                      ((LISTP TEM)           (* ; "Run on correction.")
+                                      ((LISTP TEM)           (* ; "Run on correction.")
                                        (/RPLNODE TL (CAR TEM)
                                               (CONS (CDR TEM)
                                                     (CDR TL)))
                                        (SETQ TEM (CAR TEM)))
                                       (T (/RPLNODE TL TEM (CDR TL]
-                                                             (* ;; "If FN1 is NIL, TAIL would have been given to FIXSPPELL, and in this case the correction would already have been stmashed into TAIL.")
+
+                      (* ;; "If FN1 is NIL, TAIL would have been given to FIXSPPELL, and in this case the correction would already have been stmashed into TAIL.")
+
                       (CAR TL])
 
 (CLISPNOTVARP
-  [LAMBDA (X)                                                (* lmm "20-May-84 19:45")
+  [LAMBDA (X)                                                (* lmm "20-May-84 19:45")
     (AND (NOT (BOUNDP X))
          (NOT (FMEMB X VARS))
          [NOT (FMEMB X (COND
@@ -3421,7 +3815,7 @@ with the terms of said license.
          (NOT (FMEMB X (LISTP SPECVARS])
 
 (CLISP-SIMPLE-FUNCTION-P
-  [LAMBDA (CARFORM)                                          (* lmm "18-Jul-86 16:45")
+  [LAMBDA (CARFORM)                                          (* lmm "18-Jul-86 16:45")
     (AND (OR (FGETD CARFORM)
              (GET CARFORM 'EXPR)
              (AND (NOT (GET CARFORM 'CLISPWORD))
@@ -3430,7 +3824,7 @@ with the terms of said license.
          T])
 
 (CLISPELL
-  [LAMBDA (FORM TYPE)                                        (* lmm "20-May-84 18:54")
+  [LAMBDA (FORM TYPE)                                        (* lmm "20-May-84 18:54")
     (PROG (VAL TEM RESPELLTAIL)
           [MAPC (LISTGET1 LISPXHIST 'RESPELLS)
                 (FUNCTION (LAMBDA (X)
@@ -3452,9 +3846,12 @@ with the terms of said license.
           (RETURN VAL])
 
 (FINDFN
-  [LAMBDA (POS FLG)                                          (* lmm "21-May-84 00:40")
-                                                             (* ;; "Used by HELPFIX and WTFIX.  Locates highest interpreted form in the current chain of interpretation, sets free variable EXPR to this expression and returns the NAME of the corresponding function, or 'BREAK-EXP', 'EVAL', or 'TYPE-IN' depending on context.  also sets free variable TYPE-IN?  to T if the expression was typed in by the user.")
-                                                             (* ;; "When called from WTFIX, (FLG is T) and sets the variable BREAKFLG to T if the expression was typed into a BREAK, (In this case, DWIM uses the lambda and/or prog variables for spelling corrections.)")
+  [LAMBDA (POS FLG)                                          (* lmm "21-May-84 00:40")
+
+    (* ;; "Used by HELPFIX and WTFIX.  Locates highest interpreted form in the current chain of interpretation, sets free variable EXPR to this expression and returns the NAME of the corresponding function, or 'BREAK-EXP', 'EVAL', or 'TYPE-IN' depending on context.  also sets free variable TYPE-IN?  to T if the expression was typed in by the user.")
+
+    (* ;; "When called from WTFIX, (FLG is T) and sets the variable BREAKFLG to T if the expression was typed into a BREAK, (In this case, DWIM uses the lambda and/or prog variables for spelling corrections.)")
+
     (PROG1 [PROG (NAME TOKEN TEM)
                  [COND
                     ((NULL POS)
@@ -3515,31 +3912,36 @@ with the terms of said license.
                                   (GO LP))
                              (INTERNAL (GO LP3))
                              (NIL 'EVAL)
-                             (%:                             (* ; 
-                   "Call to EVAL comes from a BREAK (i.e. via a LISPX which was called from BREAK1.)")
+                             (%:                             (* ; 
+                   "Call to EVAL comes from a BREAK (i.e. via a LISPX which was called from BREAK1.)")
                                  (AND FLG (SETQ BREAKFLG T))
                                  (SETQ TYPE-IN? T)
                                  'TYPE-IN)
-                             (BREAK                          (* ; 
-                                                    "Call to EVAL from evaluation of a breakcommand.")
+                             (BREAK                          (* ; 
+                                                    "Call to EVAL from evaluation of a breakcommand.")
                                     (AND FLG (SETQ BREAKFLG T))
                                     'BREAKCOMS)
-                             (BREAK-EXP                      (* ; 
-                                                         "Call to EVAL from EVAL, OK, or GO command.")
+                             (BREAK-EXP                      (* ; 
+                                                         "Call to EVAL from EVAL, OK, or GO command.")
                                         (COND
                                            ((NULL (EVALV 'BRKTYPE POS))
-                                                             (* ;; "Since BRKTYPE is NIL, we are in a user BREAK.  Therefore, if broken function is an EXPR, want to stop searching, otherwise continue (latter can only occur when FINDFN is called as result of EDIT command since WTFIX will never be called out of compiled function.)")
+
+                                 (* ;; "Since BRKTYPE is NIL, we are in a user BREAK.  Therefore, if broken function is an EXPR, want to stop searching, otherwise continue (latter can only occur when FINDFN is called as result of EDIT command since WTFIX will never be called out of compiled function.)")
+
                                             (SETQ TEM (STKPOS 'BREAK1 -1 POS))
                                             (RELSTK POS)
                                             [SETQ NAME (STKNAME (SETQ POS (STKNTH -1 TEM TEM]
                                             (GO LP2))
-                                           (T                (* ;; "EVAL, OK, or GO command to non-user BREAK expression, e.g. get a non-numeric arg BREAK, fix the BRKEXP, do an EVAL, and get another error.")
+                                           (T 
+
+                                 (* ;; "EVAL, OK, or GO command to non-user BREAK expression, e.g. get a non-numeric arg BREAK, fix the BRKEXP, do an EVAL, and get another error.")
+
                                               'BREAK-EXP)))
                              (COND
                                 ((LISTP TOKEN)
                                  (COND
-                                    ((NLISTP EXPR)           (* ; 
-                                                             "permits caller to specify the tail")
+                                    ((NLISTP EXPR)           (* ; 
+                                                             "permits caller to specify the tail")
                                      (SETQ TAIL TOKEN)))
                                  'EVAL)
                                 (T (SETQ TYPE-IN? T)
@@ -3551,7 +3953,10 @@ with the terms of said license.
                           (GO LP))
                      (INTERNAL (GO LP3))
                      NIL)
-                 (SETQ TYPE-IN? TOKEN)                       (* ;; "WTFIX would already know that this was an apply error because of FAULTAPPLYFLG.  However, FINDFN is called to find out whether the expression was typed in or not.")
+                 (SETQ TYPE-IN? TOKEN)
+
+            (* ;; "WTFIX would already know that this was an apply error because of FAULTAPPLYFLG.  However, FINDFN is called to find out whether the expression was typed in or not.")
+
                  (RETURN (COND
                             (FLG (SETQ EXPR (STKARG 2 POS))
                                  (STKARG 1 POS))
@@ -3559,21 +3964,21 @@ with the terms of said license.
            (RELSTK POS])
 
 (DWIMUNSAVEDEF
-  [LAMBDA (FN FLG)                                           (* lmm "11-DEC-81 21:23")
+  [LAMBDA (FN FLG)                                           (* lmm "11-DEC-81 21:23")
     (LISPXPRIN2 FN T T)
     [AND (NULL FLG)
          (NULL TYPE-IN?)
          (NEQ (CAR SIDES)
               'CLISP% )
          (SETQ SIDES (LIST 'CLISP%  (LIST COMMENTFLG (FLAST (LISTGET1 LISPXHIST '*LISPXPRINT*))
-                                          SIDES]             (* ; 
-            "FLG is TRUE on calls from CLISPIFY, in which case SIDES is not relevant (or even bound)")
+                                          SIDES]             (* ; 
+            "FLG is TRUE on calls from CLISPIFY, in which case SIDES is not relevant (or even bound)")
     (LISPXPRIN1 '" unsaved" T)
     (LISPXTERPRI T)
     (UNSAVEDEF FN])
 
 (CHECKTRAN
-  [LAMBDA (X)                                                (* lmm "20-May-84 19:01")
+  [LAMBDA (X)                                                (* lmm "20-May-84 19:01")
     (DECLARE (GLOBALVARS %#CLISPARRAY CLISPARRAY CLISPTRANFLG))
     (OR (AND CLISPARRAY (GETHASH X CLISPARRAY))
         (AND CLISPTRANFLG (EQ (CAR X)
@@ -3583,9 +3988,10 @@ with the terms of said license.
 (DEFINEQ
 
 (CLISPIF
-  [LAMBDA (FORM)                                             (* bvm%: "21-Nov-86 18:09")
-                                                             (* ;; 
-                           "Translates (IF -- THEN -- ELSEIF -- THEN -- ELSE --) to equivalent COND.")
+  [LAMBDA (FORM)                                             (* bvm%: "21-Nov-86 18:09")
+
+    (* ;; "Translates (IF -- THEN -- ELSEIF -- THEN -- ELSE --) to equivalent COND.")
+
     (COND
        (DWIMIFYFLG (SETQ ATTEMPTFLG T)
               (SETQ CLISPCHANGE T)))
@@ -3601,18 +4007,23 @@ with the terms of said license.
               (SETQ NOFIXFNSLST0 NOFIXFNSLST)
               (SETQ NOFIXVARSLST0 NOFIXVARSLST)))
           (SELECTQ (DWIMUNDOCATCH 'CLISPIF0 (SETQ TEM (CLISPIF0 FORM)))
-              (:RESPELL                                      (* ;; "A misspelled IF word was detected.  We now go through respellings and make any corrections that occur in FORM.  Note that more than one correction may have been involved, e.g. IF FOO XTHENN PRINT X.")
+              (:RESPELL 
+                        (* ;; "A misspelled IF word was detected.  We now go through respellings and make any corrections that occur in FORM.  Note that more than one correction may have been involved, e.g. IF FOO XTHENN PRINT X.")
+
                         (COND
                            ((CLISPELL FORM 'IFWORD)
                             (SETQ NOFIXFNSLST0 FNSLST0)
-                            (SETQ NOFIXVARSLST0 VARSLST0)    (* ;; "The additions made to these lists may be wrong as a result of the misspelling of the IF word, e.g. a variaae kay have appeared in a function slot.")
+                            (SETQ NOFIXVARSLST0 VARSLST0)
+
+                            (* ;; "The additions made to these lists may be wrong as a result of the misspelling of the IF word, e.g. a variaae kay have appeared in a function slot.")
+
                             (GO LP))))
-              (NIL                                           (* ; "error"))
+              (NIL                                           (* ; "error"))
               (RETURN TEM))
           (RETDWIM])
 
 (CLISPIF0
-  [LAMBDA (FORM)                                             (* lmm " 4-SEP-83 22:54")
+  [LAMBDA (FORM)                                             (* lmm " 4-SEP-83 22:54")
     (PROG (X Y PRED TEM L L0 L-1 CLAUSE DWIMIFYCHANGE $SIDES)
           (SETQ L FORM)
           [AND CLISPIFTRANFLG (SETQ Y (LIST (CONS (CAR L]
@@ -3620,7 +4031,10 @@ with the terms of said license.
       LP  (SELECTQ (CAR L)
               ((IF if) 
                    (COND
-                      [(EQ L (CDR L-1))                      (* ;; "No IF's should be seen after the initial one except when immediately following an ELSE.  In this case the two words are treated the same as ELSEIF.")
+                      [(EQ L (CDR L-1))
+
+                       (* ;; "No IF's should be seen after the initial one except when immediately following an ELSE.  In this case the two words are treated the same as ELSEIF.")
+
                        (SETQ PRED NIL)
                        (COND
                           (CLISPIFTRANFLG (OR [EQ (CAR L-1)
@@ -3638,7 +4052,7 @@ with the terms of said license.
                                                      Y))))
               ((ELSE else) 
                    (SETQ X (NCONC1 X (CLISPIF1 PRED L0 L FORM)))
-                   (SETQ L-1 L)                              (* ; "To enable ELSE IF as two words.")
+                   (SETQ L-1 L)                              (* ; "To enable ELSE IF as two words.")
                    (SETQ PRED T)
                    (AND CLISPIFTRANFLG (SETQ Y (CONS (CONS (CAR L))
                                                      Y))))
@@ -3646,7 +4060,10 @@ with the terms of said license.
                    [SETQ PRED (COND
                                  ((EQ L0 L)
                                   (GO ERROR))
-                                 (T                          (* ;; "The reason for doing the LDIFF even when L is (CDR L0) is that can't just set pred to CAR of L is becuase then couldnt distinguish no predicate from IF NIL THEN -- (Actually encountered by one user.)")
+                                 (T 
+
+                                 (* ;; "The reason for doing the LDIFF even when L is (CDR L0) is that can't just set pred to CAR of L is becuase then couldnt distinguish no predicate from IF NIL THEN -- (Actually encountered by one user.)")
+
                                     (LDIFF L0 L]
                    [COND
                       (CLISPIFTRANFLG (OR (LISTP (CAR Y))
@@ -3662,7 +4079,10 @@ with the terms of said license.
           (AND CLISPIFTRANFLG (SETQ Y (DREVERSE Y)))
           (/RPLNODE FORM 'COND X)
           [SETQ $SIDES (CDR (LISTGET1 LISPXHIST 'SIDE]
-          (SETQ L (CDR FORM))                                (* ;; "The COND must appear in the original definition before DWIMIFYing can be done, or else correction of 8 and 9 errors won't work.  Some unnecessary work may be done by virtue of DWIMIFYING the whole IF statement, even when it is being evaluated (as opposed to being dwimified).  however, in most cases, if the user employs IF, there will be other CLISP constructs in the predicates and consequents.")
+          (SETQ L (CDR FORM))
+
+     (* ;; "The COND must appear in the original definition before DWIMIFYing can be done, or else correction of 8 and 9 errors won't work.  Some unnecessary work may be done by virtue of DWIMIFYING the whole IF statement, even when it is being evaluated (as opposed to being dwimified).  however, in most cases, if the user employs IF, there will be other CLISP constructs in the predicates and consequents.")
+
       LP2 (SETQ CLAUSE (CAR L))
           (COND
              [(LISTP (CAR CLAUSE))
@@ -3692,7 +4112,10 @@ with the terms of said license.
               (GO LP2)))
           (CLISPIF2 FORM)
           (COND
-             (CLISPIFTRANFLG                                 (* ;; "Bletcherous PROG here because fool Interlisp-D compiler can't handle MAP2CAR right when inside a BLOCKS")
+             (CLISPIFTRANFLG 
+
+                    (* ;; "Bletcherous PROG here because fool Interlisp-D compiler can't handle MAP2CAR right when inside a BLOCKS")
+
                     (PROG ((LF (CDR FORM))
                            (LY Y)
                            (FIRSTP T)
@@ -3711,16 +4134,19 @@ with the terms of said license.
                           (SETQ FIRSTP)
                           (GO LP))
                     (SETQ TEM (CONS (CAR FORM)
-                                    (CDR FORM)))             (* ; 
-               "the conditional expression, which is now in the function, and is going to be smashed")
+                                    (CDR FORM)))             (* ; 
+               "the conditional expression, which is now in the function, and is going to be smashed")
                     (RPLNODE FORM (CAR X)
-                           (CDR X))                          (* ; 
-                    "puts the clisp back in /rplnode unnecessary since this was already saved above.")
+                           (CDR X))                          (* ; 
+                    "puts the clisp back in /rplnode unnecessary since this was already saved above.")
                     [COND
                        ((AND (EQ (CAAR $SIDES)
                                  FORM)
                              (EQUAL (CAAR $SIDES)
-                                    (CDAR $SIDES)))          (* ;; "so function wont be marked as changed reason for EQUAL check is if it was converted to lower case, than do want to retain side informaton.")
+                                    (CDAR $SIDES)))
+
+                        (* ;; "so function wont be marked as changed reason for EQUAL check is if it was converted to lower case, than do want to retain side informaton.")
+
                         (FRPLACA (CAR $SIDES)
                                '*]
                     (CLISPTRAN FORM TEM)))
@@ -3729,7 +4155,7 @@ with the terms of said license.
           (DWIMERRORRETURN (LIST 4 L FORM])
 
 (CLISPIF1
-  [LAMBDA (PRED L0 L FORM)                                   (* lmm "26-Jul-84 05:01")
+  [LAMBDA (PRED L0 L FORM)                                   (* lmm "26-Jul-84 05:01")
     (COND
        (PRED (CONS (COND
                       ((OR (NLISTP PRED)
@@ -3737,7 +4163,10 @@ with the terms of said license.
                        PRED)
                       (T (CAR PRED)))
                    (LDIFF L0 L)))
-       ((EQ L0 L)                                            (* ;; "Note that ELSE or ELSEIF can imediately follow a THEN by virtue of the PRED check in earlier clause.")
+       ((EQ L0 L)
+
+        (* ;; "Note that ELSE or ELSEIF can imediately follow a THEN by virtue of the PRED check in earlier clause.")
+
         (DWIMERRORRETURN (LIST 4 L FORM)))
        ((EQ (CDR L0)
             L)
@@ -3745,7 +4174,7 @@ with the terms of said license.
        (T (LIST (LDIFF L0 L])
 
 (CLISPIF2
-  [LAMBDA (X)                                                (* lmm "16-Sep-85 18:15")
+  [LAMBDA (X)                                                (* lmm "16-Sep-85 18:15")
     (PROG (TEM1 TEM2 TEM3)
           (COND
              ((NEQ (CAR X)
@@ -3754,21 +4183,24 @@ with the terms of said license.
                        X)
                    (EQ (CAR TEM1)
                        T)
-                   (NULL (CDDR TEM1)))                       (* ;; "Changes expression of X (COND -- (T (COND **))) to (COND -- **) useful for producing more aesthetic code when the 'DO' portion of a 'FOR' statement is an 'IF' Converts")
+                   (NULL (CDDR TEM1)))
+
+              (* ;; "Changes expression of X (COND -- (T (COND **))) to (COND -- **) useful for producing more aesthetic code when the 'DO' portion of a 'FOR' statement is an 'IF' Converts")
+
               (/RPLNODE TEM2 (CADR X)
                      (CDDR X)))
              ((AND (EQ (CAR TEM1)
                        T)
                    (EQ [CADR (LISTP (SETQ TEM3 (CAR (SETQ TEM2 (NLEFT X 2]
                        X)
-                   (NULL (CDDR TEM2)))                       (* ; 
-                "Converts expression of X (COND (& (COND --)) (T **)) to (COND ((NEGATION &) **) --)")
+                   (NULL (CDDR TEM2)))                       (* ; 
+                "Converts expression of X (COND (& (COND --)) (T **)) to (COND ((NEGATION &) **) --)")
               (/RPLNODE TEM1 (CAR TEM3)
                      (CDR TEM1))
               (/RPLNODE TEM2 TEM1 (CDADR TEM3])
 
 (CLISPIF3
-  [LAMBDA (CLAUSE ORIGWORDPAIR FIRSTCLAUSEFLG)               (* JonL "22-APR-83 19:46")
+  [LAMBDA (CLAUSE ORIGWORDPAIR FIRSTCLAUSEFLG)               (* JonL "22-APR-83 19:46")
     (PROG NIL
           (RETURN (CONS [COND
                            [FIRSTCLAUSEFLG (COND
@@ -3798,9 +4230,10 @@ with the terms of said license.
 (DEFINEQ
 
 (CLISPFOR
-  [LAMBDA (FORM)                                             (* bvm%: "21-Nov-86 18:10")
-                                                             (* ;; 
-                                       "Translates iterative statements, e.g., (for X in Y until --)")
+  [LAMBDA (FORM)                                             (* bvm%: "21-Nov-86 18:10")
+
+    (* ;; "Translates iterative statements, e.g., (for X in Y until --)")
+
     (COND
        (DWIMIFYFLG (SETQ ATTEMPTFLG T)
               (SETQ CLISPCHANGE T)))
@@ -3813,11 +4246,13 @@ with the terms of said license.
               (SETQ NOFIXFNSLST0 NOFIXFNSLST)
               (SETQ NOFIXVARSLST0 NOFIXVARSLST)))
           (SELECTQ (DWIMUNDOCATCH 'CLISPFOR0 (SETQ TEM (CLISPFOR0 FORM)))
-              (:RESPELL                                      (* ;; "A misspelled I.S. word was detected.  We now go through respellings and make any corrections that occur in FORM.  Note that more than one correction may have been involved, e.g. FOR X IN YWHILLE Z FOO XTHENN PRINT X.")
+              (:RESPELL 
+                        (* ;; "A misspelled I.S. word was detected.  We now go through respellings and make any corrections that occur in FORM.  Note that more than one correction may have been involved, e.g. FOR X IN YWHILLE Z FOO XTHENN PRINT X.")
+
                         (COND
                            ((CLISPELL FORM 'FORWORD)
                             (GO LP))))
-              (NIL                                           (* ; "error"))
+              (NIL                                           (* ; "error"))
               (RETURN TEM))
           (RETURN])
 
@@ -3904,7 +4339,7 @@ with the terms of said license.
               [COND
                  [(NULL (CAR I.S.OPR))
 
-                  (* ;; "The i.s.type does not define the i.s.type for the i.s.  e.g. Larry's UPTO which is defined as (BIND $$MAX_BODY TO $$MAX)")
+                  (* ;; "The i.s.type does not define the i.s.type for the i.s.  e.g. Larry's UPTO which is defined as (BIND $$MAX←BODY TO $$MAX)")
 
                   (COND
                      ((NULL (CDR I.S.OPR))
@@ -4240,7 +4675,7 @@ with the terms of said license.
                                    'SETQ)
                                (EQ (CAR TEM)
                                    'SETQQ))                  (* ; 
-                         "IN OLD X _ ..  or IN (OLD X _ ..), or IN OLD (X _ ..) or IN (OLD (X _ ..))")
+                         "IN OLD X ← ..  or IN (OLD X ← ..), or IN OLD (X ← ..) or IN (OLD (X ← ..))")
                            (CLISPFORINITVAR (SETQ LSTVAR (CADR TEM))
                                   (CADDR TEM)))
                           (T (SHOULDNT 'CLISPFOR0]
@@ -4424,12 +4859,17 @@ with the terms of said license.
           (RETURN EXP])
 
 (CLISPFOR0A
-  [LAMBDA ($I.S.OPR I.S. LASTPTR)                            (* rmk%: " 6-Oct-84 12:11")
-                                                             (* ;; "Thisfunction is called when we hit the first i.s.opr following one defined via an istype property.  The problems with such operaaors is that we cannot dwiify their operands (or any operands in the i.s.) until we have scanned the entire i.s.  and found aal the VARS.  This requires that we obtain the definitions of each i.s.opr from its property list, since there may be BIND's in the defiition.  However, we cannot substiute in the operands until after we dwimify the operands, since otherwise any errors corrected in the operands wont be seen in the original i.s.  when the user prints it after it is dwimified.  Furthermore, if we substitute in before we dwimify, we cant distinguish the case where the usr writes a $$VAL, thereby requiring a PROG in the translation, from that where a $$VAL is specified in the definition for the i.s.opr e.g. for COLLECT or JOIN, but nevertheless it is ok to translate to a mapping function.  Therefore we insert the definition and take note of thoe things requiring substiution later.  and furthermore leave in the original i.s.opr so its operand can also be dwimified.")
-    (DECLARE (SPECVARS LASTPTR))                             (* ; 
-                                                             "Used freely by IS.OPRS in IDL -- Ron")
+  [LAMBDA ($I.S.OPR I.S. LASTPTR)                            (* rmk%: " 6-Oct-84 12:11")
+
+    (* ;; "Thisfunction is called when we hit the first i.s.opr following one defined via an istype property.  The problems with such operaaors is that we cannot dwiify their operands (or any operands in the i.s.) until we have scanned the entire i.s.  and found aal the VARS.  This requires that we obtain the definitions of each i.s.opr from its property list, since there may be BIND's in the defiition.  However, we cannot substiute in the operands until after we dwimify the operands, since otherwise any errors corrected in the operands wont be seen in the original i.s.  when the user prints it after it is dwimified.  Furthermore, if we substitute in before we dwimify, we cant distinguish the case where the usr writes a $$VAL, thereby requiring a PROG in the translation, from that where a $$VAL is specified in the definition for the i.s.opr e.g. for COLLECT or JOIN, but nevertheless it is ok to translate to a mapping function.  Therefore we insert the definition and take note of thoe things requiring substiution later.  and furthermore leave in the original i.s.opr so its operand can also be dwimified.")
+
+    (DECLARE (SPECVARS LASTPTR))                             (* ; 
+                                                             "Used freely by IS.OPRS in IDL -- Ron")
     [COND
-       ((CDR (LISTP $I.S.OPR))                               (* ;; "OTHERS.  Note that an i.s.opr defned by an i.s.opr property can specify an i.s.type, OTHERS, or both.")
+       ((CDR (LISTP $I.S.OPR))
+
+        (* ;; "OTHERS.  Note that an i.s.opr defned by an i.s.opr property can specify an i.s.type, OTHERS, or both.")
+
         (SETQ I.S.OPRSLST (CONS LASTPTR I.S.OPRSLST))
         (SETQ I.S. (NCONC [COPY (COND
                                    ((EQ (CADR $I.S.OPR)
@@ -4440,17 +4880,20 @@ with the terms of said license.
     I.S.])
 
 (CLISPFOR1
-  [LAMBDA (PTRS FLG)                                         (* wt%: "28-APR-80 16:11")
+  [LAMBDA (PTRS FLG)                                         (* wt%: "28-APR-80 16:11")
     (PROG ((OPRTAIL (CADAR PTRS))
            BODYTAIL
            (NXTOPRTAIL (CADDAR PTRS))
-           Z TEM LSTFLG BODY)                                (* ;; "X is the TAIL of the iterative statement beginning with the operator, Y the tail beginning with the next opeator.")
+           Z TEM LSTFLG BODY)
+
+     (* ;; "X is the TAIL of the iterative statement beginning with the operator, Y the tail beginning with the next opeator.")
+
           (SELECTQ (CAAR PTRS)
               ((FOR BIND DECLARE ORIGINAL NIL) 
                    (GO OUT))
               ((IN ON) 
                    (AND (NULL FLG)
-                        (GO OUT))                            (* ; "Already done.")
+                        (GO OUT))                            (* ; "Already done.")
                    )
               (AS (SETQ I.V. (CADDDR (CAR PTRS)))
                   (GO OUT))
@@ -4470,14 +4913,16 @@ with the terms of said license.
                                       'MODIFIER))
                              (CDDR OPRTAIL))
                             ((CDR OPRTAIL))
-                            (T                               (* ;; "special kluge to allow an i.s.opr to smash lastptr to indicate that this operator/operand is to be ignored, e.g. for handling (EVERY CHARACTER IN Z IS --)")
+                            (T 
+                               (* ;; "special kluge to allow an i.s.opr to smash lastptr to indicate that this operator/operand is to be ignored, e.g. for handling (EVERY CHARACTER IN Z IS --)")
+
                                (GO OUT]
           (COND
-             ((EQ BODYTAIL NXTOPRTAIL)                       (* ; "2 FORWORDS in a row.")
+             ((EQ BODYTAIL NXTOPRTAIL)                       (* ; "2 FORWORDS in a row.")
               (CLISPFORERR OPRTAIL NXTOPRTAIL 'MISSING))
              ((NEQ (CDR BODYTAIL)
-                   NXTOPRTAIL)                               (* ; 
-                                                     "More than one expression between two forwords.")
+                   NXTOPRTAIL)                               (* ; 
+                                                     "More than one expression between two forwords.")
               (GO BREAK)))
           [COND
              ((NLISTP (CAR BODYTAIL))
@@ -4491,7 +4936,7 @@ with the terms of said license.
                        (NEQ (CAAR PTRS)
                             'TO)
                        (SETQ Z (CLISPFUNCTION? BODYTAIL 'NOTVAR]
-                                                             (* ; "E.G. DO PRINT, BY SUB1, etc.")
+                                                             (* ; "E.G. DO PRINT, BY SUB1, etc.")
                   [COND
                      ((NULL (SETQ TEM (OR FIRSTI.V. I.V.)))
                       (CLISPFORERR OPRTAIL NIL 'WHAT))
@@ -4499,8 +4944,8 @@ with the terms of said license.
                              ((EQ OPRTAIL I.S.TYPE)
                               TEM)
                              (T (SETQ TEM I.V.)))
-                          (CAR DUMMYVARS))                   (* ; 
-      "In the case that an i.v.  was supplied, make the change permanent.  For $$TEM, undo it later.")
+                          (CAR DUMMYVARS))                   (* ; 
+      "In the case that an i.v.  was supplied, make the change permanent.  For $$TEM, undo it later.")
                       (SETQ UNDOLST (CONS (CONS BODYTAIL (CONS (CAR BODYTAIL)
                                                                (CDR BODYTAIL)))
                                           UNDOLST]
@@ -4532,40 +4977,53 @@ with the terms of said license.
           (COND
              (NXTOPRTAIL (CLISPRPLNODE (SETQ Z (NLEFT OPRTAIL 1 NXTOPRTAIL))
                                 (CAR Z)
-                                NIL)))                       (* ; 
-                                                      "Breaks the list justbefore the next operator.")
+                                NIL)))                       (* ; 
+                                                      "Breaks the list justbefore the next operator.")
           (CLISPRPLNODE BODYTAIL (SETQ Z (CONS (CAR BODYTAIL)
                                                (CDR BODYTAIL)))
-                 NXTOPRTAIL)                                 (* ;; "Puts parentheses in --- E.g. For X in FOO Y do -- becomes for X in (FOO Y) do necessary in order to call DWIMIFY.  Maybe should give DWIMIFY an rgument like stoptail?")
-                                                             (* ;; "Done this way instead of changing CDR X because CDR of first PTR is not EQ to the entry in the history list.")
+                 NXTOPRTAIL)
+
+     (* ;; "Puts parentheses in --- E.g. For X in FOO Y do -- becomes for X in (FOO Y) do necessary in order to call DWIMIFY.  Maybe should give DWIMIFY an rgument like stoptail?")
+
+     (* ;; "Done this way instead of changing CDR X because CDR of first PTR is not EQ to the entry in the history list.")
+
           [DWIMIFY2 Z Z T (COND
                              (I.S.TYPE 'IFWORD)
-                             (T                              (* ; 
-    "so if it sees a function in a variable position, it will insert parens, e.g. FOR X IN Y PRINT Z")
+                             (T                              (* ; 
+    "so if it sees a function in a variable position, it will insert parens, e.g. FOR X IN Y PRINT Z")
                                 'FORWORD]
       A   (COND
-             ((NULL (CDR Z))                                 (* ;; "Because DWIMIFY2 was called with FORMSFLG T, this came out as a list of forms, but there was only one form.  E.g. X_ (FOO) became ((SETQ X (FOO))).")
+             ((NULL (CDR Z))
+
+              (* ;; "Because DWIMIFY2 was called with FORMSFLG T, this came out as a list of forms, but there was only one form.  E.g. X← (FOO) became ((SETQ X (FOO))).")
+
               (/RPLNODE Z (CAAR Z)
                      (CDAR Z))
               (GO C)))
       B   [SELECTQ (CAAR PTRS)
-              ((I.S.TYPE FIRST FINALLY EACHTIME)             (* ; 
-                                 "More than one form permitted in operator --- means implicit progn.")
+              ((I.S.TYPE FIRST FINALLY EACHTIME)             (* ; 
+                                 "More than one form permitted in operator --- means implicit progn.")
                    (SETQ UNDOLST (CONS (CONS OPRTAIL (CONS (CAR OPRTAIL)
                                                            (CDR OPRTAIL)))
                                        UNDOLST))
-                   (SETQ BODY (CONS 'PROGN (APPEND Z)))      (* ; 
-                                                   "for possible use in substituting into an i.s.opr")
+                   (SETQ BODY (CONS 'PROGN (APPEND Z)))      (* ; 
+                                                   "for possible use in substituting into an i.s.opr")
                    (CLISPRPLNODE OPRTAIL (CDR BODY)
-                          (CDR OPRTAIL))                     (* ;; "Smashes the operatr itself with the body of i.s.  so that when we get back to clispfor0, can distinguish the implicit progn case from others.  The setting of UNDOLST is to enable restoration.")
+                          (CDR OPRTAIL))
+
+                   (* ;; "Smashes the operatr itself with the body of i.s.  so that when we get back to clispfor0, can distinguish the implicit progn case from others.  The setting of UNDOLST is to enable restoration.")
+
                    [AND (NULL LSTFLG)
                         (CLISPRPLNODE BODYTAIL (CAR Z)
                                (NCONC (CDR Z)
-                                      (CDR BODYTAIL]         (* ; "Takes parentheses back out.")
+                                      (CDR BODYTAIL]         (* ; "Takes parentheses back out.")
                    (GO C))
               (COND
                  [(FMEMB (CAR PTRS)
-                         I.S.OPRSLST)                        (* ;; "ok for a user defined opeator to have several arguments.  (maybe we should phase out the errors and insertion of automatic DO??)")
+                         I.S.OPRSLST)
+
+                  (* ;; "ok for a user defined opeator to have several arguments.  (maybe we should phase out the errors and insertion of automatic DO??)")
+
                   (SETQ BODY (CONS 'PROGN (APPEND Z)))
                   (SETQ UNDOLST (CONS (CONS OPRTAIL (CONS (CAR OPRTAIL)
                                                           (CDR OPRTAIL)))
@@ -4578,9 +5036,9 @@ with the terms of said license.
                  (LSTFLG (CLISPFORERR OPRTAIL))
                  (I.S.TYPE (CLISPFORERR I.S.TYPE BODYTAIL))
                  ((EVERY (CDR Z)
-                         (FUNCTION LISTP))                   (* ; "E.g. For X in Y print Z --.")
-                                                             (* ; 
-                              "This really should be taken care of in DWIMIFY2 --- I.e. (Y prinnt Z)")
+                         (FUNCTION LISTP))                   (* ; "E.g. For X in Y print Z --.")
+                                                             (* ; 
+                              "This really should be taken care of in DWIMIFY2 --- I.e. (Y prinnt Z)")
                   (/RPLNODE BODYTAIL (CAR Z)
                          (/NCONC (CDR Z)
                                 NXTOPRTAIL))
@@ -4593,22 +5051,24 @@ with the terms of said license.
                (CLISPFOR4 Z))
           [COND
              ((FMEMB (CAR PTRS)
-                     I.S.OPRSLST)                            (* ; 
-                          "I.S.OPRLST is the list of those entries on forptrs defined by an I.S.OPR.")
+                     I.S.OPRSLST)                            (* ; 
+                          "I.S.OPRLST is the list of those entries on forptrs defined by an I.S.OPR.")
               (RETURN (PROG ((END (CADDAR PTRS))
                              LST)
                             [OR BODY (COND
                                         ((EQ (CAR (GETPROP (CADR (SETQ BODY (CADAR PTRS)))
                                                          'CLISPWORD))
-                                             'FORWORD)       (* ; "modifier")
+                                             'FORWORD)       (* ; "modifier")
                                          (SETQ BODY (CADDR BODY)))
                                         (T (SETQ BODY (CADR BODY]
-                                                             (* ;; "BODY is the operand to the I.S.OPR operator.  END is the tail of the i.s.  beginning with the next operator following it.  The in between operators are the result of the expansion, and need to be dwiified, i.e. processed by clispfor1, and then have i.v.  and body substituted into them.")
+
+                       (* ;; "BODY is the operand to the I.S.OPR operator.  END is the tail of the i.s.  beginning with the next operator following it.  The in between operators are the result of the expansion, and need to be dwiified, i.e. processed by clispfor1, and then have i.v.  and body substituted into them.")
+
                             (SETQ LST (CDR PTRS))
                         LP1 (COND
                                ((NEQ (CADAR LST)
-                                     END)                    (* ; 
-                                                     "CADR of each entry on PTRS is the actual tail.")
+                                     END)                    (* ; 
+                                                     "CADR of each entry on PTRS is the actual tail.")
                                 (SETQ LST (CLISPFOR1 LST))
                                 (GO LP1)))
                             (SETQ LST (CDR PTRS))
@@ -4616,9 +5076,11 @@ with the terms of said license.
                                ((NEQ (CADAR LST)
                                      END)
                                 (PROG ((LST1 (CADAR LST))
-                                       (END1 (CADDAR LST)))  (* ; 
-                                      "The tail of the iterative statement begining with the opeator")
-                                                             (* ;; "tail of iterative statement beginning with next operator the segment between tem and nxt corresponds to the body of this opeator")
+                                       (END1 (CADDAR LST)))  (* ; 
+                                      "The tail of the iterative statement begining with the opeator")
+
+                                 (* ;; "tail of iterative statement beginning with next operator the segment between tem and nxt corresponds to the body of this opeator")
+
                                   LP3 (COND
                                          ((EQ (SETQ LST1 (CDR LST1))
                                               END1)
@@ -4635,9 +5097,10 @@ with the terms of said license.
       OUT (RETURN (CDR PTRS])
 
 (CLISPRPLNODE
-  [LAMBDA (X A D)                                            (* wt%: 16-DEC-75 23 43)
-                                                             (* ;; 
-              "like /rplnode, except that dwimnewfile? does not count it as a change to the function")
+  [LAMBDA (X A D)                                            (* wt%: 16-DEC-75 23 43)
+
+    (* ;; "like /rplnode, except that dwimnewfile? does not count it as a change to the function")
+
     (COND
        ((LISTP X)
         [AND LISPXHIST (UNDOSAVE (LIST 'CLISPRPLNODE X (CAR X)
@@ -4647,12 +5110,15 @@ with the terms of said license.
        (T (ERRORX (LIST 4 X])
 
 (CLISPFOR2
-  [LAMBDA (LST FLG)                                          (* lmm "13-Aug-84 16:42")
+  [LAMBDA (LST FLG)                                          (* lmm "13-Aug-84 16:42")
     [MAP (SETQ LST (DREVERSE LST))
          (FUNCTION (LAMBDA (X)
                      (SELECTQ (CAAR X)
                          (WHEN [RPLACA X (COND
-                                            (FLG             (* ;; "When FLG is true, we are computing a condition forDOING it, and when FLG=NIL, for not doing it, hence difference in sign.")
+                                            (FLG 
+
+                                      (* ;; "When FLG is true, we are computing a condition forDOING it, and when FLG=NIL, for not doing it, hence difference in sign.")
+
                                                  (CADADR (CAR X)))
                                             (T (NEGATE (CADADR (CAR X])
                          (UNLESS [RPLACA X (COND
@@ -4666,9 +5132,11 @@ with the terms of said license.
     LST])
 
 (CLISPFOR3
-  [LAMBDA (LST)                                              (* wt%: 25-FEB-76 1 59)
-                                                             (* ;; 
-        "Used to process FINALLY, EACHTIME, and FIRST lists.  LST is a list of form (FINALLY . tail)")
+  [LAMBDA (LST)                                              (* wt%: 25-FEB-76 1 59)
+
+    (* ;; 
+    "Used to process FINALLY, EACHTIME, and FIRST lists.  LST is a list of form (FINALLY . tail)")
+
     (PROG (TEM)
           (RETURN (MAPCONC (DREVERSE LST)
                          (FUNCTION (LAMBDA (X)
@@ -4677,11 +5145,13 @@ with the terms of said license.
                                          (LIST (CADR TEM])
 
 (CLISPFORVARS
-  [LAMBDA (PTRS)                                             (* lmm "20-Jul-86 12:40")
-                                                             (* ;; "Does for FOR and BIND what CLISPFOR1 does for the rest of the ptrs.  LST is either a (FOR --) or (BIND --) entry from PTRS.  CLISPFOR3 handles the following pathological cases.  The variables may be spread out, or listed, they may involve assignments, either spread out or listed, and they may be terminated by a form or function in the case that there is no FOROPR.  E.g. FOR X Y Z (PRINT X), FOR (X Y Z) PRINT X, FOR X Y _ T Z PRINTT X, FOR (X (Y_T) Z) (PRINT X) etc.")
+  [LAMBDA (PTRS)                                             (* lmm "20-Jul-86 12:40")
+
+    (* ;; "Does for FOR and BIND what CLISPFOR1 does for the rest of the ptrs.  LST is either a (FOR --) or (BIND --) entry from PTRS.  CLISPFOR3 handles the following pathological cases.  The variables may be spread out, or listed, they may involve assignments, either spread out or listed, and they may be terminated by a form or function in the case that there is no FOROPR.  E.g. FOR X Y Z (PRINT X), FOR (X Y Z) PRINT X, FOR X Y ← T Z PRINTT X, FOR (X (Y←T) Z) (PRINT X) etc.")
+
     (PROG (TEM OLDFLG LST LST0 L1 VARLST IV (CLISPCONTEXT 'FOR/BIND))
-                                                             (* ; 
-                 "clispcontext tells CLISPATOM2 not to try spelling correction on the variable name.")
+                                                             (* ; 
+                 "clispcontext tells CLISPATOM2 not to try spelling correction on the variable name.")
           (SETQ L1 (CADDR (CAR PTRS)))
           [SETQ LST0 (SETQ LST (CDR (CADAR PTRS]
       LP  (COND
@@ -4690,7 +5160,7 @@ with the terms of said license.
           (COND
              ((LITATOM (CAR LST0))
               (SELECTQ (CADR LST0)
-                  ((_ �) 
+                  ((← _) 
                        (RPLACA LST0 (LIST 'SETQ (CAR LST0)
                                           (CADDR LST0)))
                        (RPLACD LST0 (CDDDR LST0))
@@ -4701,8 +5171,8 @@ with the terms of said license.
                    (SETQ LST0 TEM)))
              [(LISTP (CAR LST0))
               (SELECTQ (CAAR LST0)
-                  ((SETQQ SAVESETQQ)                         (* ; 
-   "SAVESETQ and SAVESETQQ can occur on typein if the user should happen to DW a portion of the I.s.")
+                  ((SETQQ SAVESETQQ)                         (* ; 
+   "SAVESETQ and SAVESETQQ can occur on typein if the user should happen to DW a portion of the I.s.")
                        )
                   ((SETQ SAVESETQ) 
                        (DWIMIFY2 (CDDAR LST0)
@@ -4710,9 +5180,9 @@ with the terms of said license.
                               T))
                   (COND
                      ((AND (OR (EQ (CADAR LST0)
-                                   '_)
+                                   '←)
                                (EQ (CADAR LST0)
-                                   '�))
+                                   '_))
                            (NULL (CDDDAR LST0)))
                       [FRPLACA LST0 (CONS 'SETQ (CONS (CAAR LST0)
                                                       (CDDAR LST0]
@@ -4727,22 +5197,33 @@ with the terms of said license.
                                           (SETQ X (CDR X))
                                           (GO LX)))
                       (CLISPFORVARS1 (CAR LST0)
-                             (EQ L1 (CDR LST)))              (* ;; "The second argument to CLISPFORVARS1 corresonds to FORMSFLG in the call to DWIMIFY2, e.g. FOR X (Y_T) want FORMSFLG to be NIL.  but FOR (X_T Y) want it to be T.")
+                             (EQ L1 (CDR LST)))
+
+                      (* ;; "The second argument to CLISPFORVARS1 corresonds to FORMSFLG in the call to DWIMIFY2, e.g. FOR X (Y←T) want FORMSFLG to be NIL.  but FOR (X←T Y) want it to be T.")
+
                       (COND
                          ((AND (LISTP (CAAR LST0))
-                               (NULL (CDAR LST0)))           (* ;; "form was (A_form) and now is ((SETQ A form)) so remove extra parentheses inserted because formsflg was (incorrectly) T.  Note that when we called clispforvars1, we donot know whether (CAR LST0) is of the form (A_B C_D) or (A _ B), i.e. one or two assignments.")
+                               (NULL (CDAR LST0)))
+
+                          (* ;; "form was (A←form) and now is ((SETQ A form)) so remove extra parentheses inserted because formsflg was (incorrectly) T.  Note that when we called clispforvars1, we donot know whether (CAR LST0) is of the form (A←B C←D) or (A ← B), i.e. one or two assignments.")
+
                           (FRPLACA LST0 (CAAR LST0]
                      ((AND (EQ LST0 LST)
-                           (EQ L1 (CDR LST0)))               (* ; "Says this is the first argument.")
+                           (EQ L1 (CDR LST0)))               (* ; "Says this is the first argument.")
                       (CLISPFORVARS1 (CAR LST0)
                              T))
                      (I.S.TYPE (CLISPFORERR LST0 I.S.TYPE))
-                     (T                                      (* ;; "Necessary because LST0 may not really correspnd to ssructure in the original statement, because of ldiff.")
+                     (T 
+                        (* ;; "Necessary because LST0 may not really correspnd to ssructure in the original statement, because of ldiff.")
+
                         (GO ADDDO]
              (T (CLISPFORERR LST0)))
           (SETQ LST0 (CDR LST0))
           (GO LP)
-      NX                                                     (* ;; "The area between LST and LST0 now corresponds to the (dwimified) variables.  They may appears as a segment or as a list.")
+      NX  
+
+     (* ;; "The area between LST and LST0 now corresponds to the (dwimified) variables.  They may appears as a segment or as a list.")
+
           (SETQ LST0 (COND
                         ([AND (EQ LST0 (CDR LST))
                               (LISTP (CAR LST))
@@ -4750,15 +5231,18 @@ with the terms of said license.
                                           '(SETQ SETQQ OLD old SAVESETQ SAVESETQQ]
                          (SETQ L1 NIL)
                          (CAR LST))
-                        (T LST)))                            (* ;; "LST0 now corresponds to the beginning of the list of variables, L1 to its end.  VARLST will be used to assemble the vlue.")
+                        (T LST)))
+
+     (* ;; "LST0 now corresponds to the beginning of the list of variables, L1 to its end.  VARLST will be used to assemble the vlue.")
+
       LP1 [COND
              ((EQ LST0 L1)
               [COND
                  ((AND IV (NEQ (CAAR PTRS)
                                'BIND)
                        (NULL I.V.))
-                  (SETQ FIRSTI.V. (SETQ I.V. IV]             (* ; 
-                     "IV is the first variable encountered in the variable list (may be OLD vriable)")
+                  (SETQ FIRSTI.V. (SETQ I.V. IV]             (* ; 
+                     "IV is the first variable encountered in the variable list (may be OLD vriable)")
               (RETURN (DREVERSE VARLST)))
              ((FMEMB (CAR LST0)
                      '(OLD old))
@@ -4783,7 +5267,10 @@ with the terms of said license.
                      ((EQ (CAAR PTRS)
                           'AS)
                       (FRPLACD (CDDAR PTRS)
-                             (LIST IV]                       (* ;; "Marks the i.v. for this AS.  used by clispfor11 when you specify an operatand which is just a functon name.")
+                             (LIST IV]
+
+                  (* ;; "Marks the i.v. for this AS.  used by clispfor11 when you specify an operatand which is just a functon name.")
+
                   ))
               (COND
                  ((NULL OLDFLG)
@@ -4797,8 +5284,8 @@ with the terms of said license.
                               (LIST 'QUOTE (CADDR TEM)))
                        T)
                   NIL)
-              (SETQ MAKEPROGFLG T)                           (* ; 
-                                              "Says the expression must translate into an open prog.")
+              (SETQ MAKEPROGFLG T)                           (* ; 
+                                              "Says the expression must translate into an open prog.")
               (SETQ VARS (CONS (CADR TEM)
                                VARS))
               [COND
@@ -4832,7 +5319,7 @@ with the terms of said license.
           (GO NX])
 
 (CLISPFORVARS1
-  [LAMBDA (L FLG)                                            (* lmm "21-Jun-85 16:59")
+  [LAMBDA (L FLG)                                            (* lmm "21-Jun-85 16:59")
     (PROG ($TAIL)
           (SETQ $TAIL L)
       LP  [COND
@@ -4848,7 +5335,7 @@ with the terms of said license.
           (GO LP])
 
 (CLISPFOR4
-  [LAMBDA (X)                                                (* wt%: 17-DEC-76 19 8)
+  [LAMBDA (X)                                                (* wt%: 17-DEC-76 19 8)
     (SELECTQ (CAR X)
         ((GO RETURN ERROR! RETFROM RETEVAL) 
              (SETQ TERMINATEFLG T)
@@ -4857,21 +5344,24 @@ with the terms of said license.
         (SOME X (FUNCTION (LAMBDA (X)
                             (COND
                                ((EQ X '$$VAL)
-                                (SETQ MAKEPROGFLG T)         (* ; "keep on looking for RETURN or GO")
+                                (SETQ MAKEPROGFLG T)         (* ; "keep on looking for RETURN or GO")
                                 NIL)
                                ((LISTP X)
                                 (CLISPFOR4 X])
 
 (CLISPFORF/L
-  [LAMBDA (EXP VAR DECLARELST)                               (* lmm "29-Jul-86 00:24")
-                                                             (* ;; 
-                       "Build the FUNCTIONal expression to be executed as the MAPFN for the FOR loop")
+  [LAMBDA (EXP VAR DECLARELST)                               (* lmm "29-Jul-86 00:24")
+
+    (* ;; "Build the FUNCTIONal expression to be executed as the MAPFN for the FOR loop")
+
     (LIST 'FUNCTION
           (COND
-             (NIL                                            (* ;; "This originally tried to elimate the dummy variable when the FOR was a unary function, but in this case, there was still a problem --- thus this is commented out")
+             (NIL 
+                  (* ;; "This originally tried to elimate the dummy variable when the FOR was a unary function, but in this case, there was still a problem --- thus this is commented out")
+
                   (CAAR EXP))
-             (T                                              (* ; 
-            "Otherwise, build a LAMBDA expression that contains all the expressions to be evaluated.")
+             (T                                              (* ; 
+            "Otherwise, build a LAMBDA expression that contains all the expressions to be evaluated.")
                 `(LAMBDA ,VAR
                    ,@[AND DECLARELST `((DECLARE ,@(MAPCONC (DREVERSE DECLARELST)
                                                          (FUNCTION (LAMBDA (X)
@@ -4880,8 +5370,11 @@ with the terms of said license.
                    ,@EXP])
 
 (CLISPDSUBST
-  [LAMBDA (X)                                                (* wt%: "21-JAN-80 20:11")
-    (PROG (TEM)                                              (* ;; "goes through X and does a dsubst of I.V. for (QUOTE I.V.) and BODY for (QUOTE BODY) in X AND all of the translations in the hasharray")
+  [LAMBDA (X)                                                (* wt%: "21-JAN-80 20:11")
+    (PROG (TEM)
+
+     (* ;; "goes through X and does a dsubst of I.V. for (QUOTE I.V.) and BODY for (QUOTE BODY) in X AND all of the translations in the hasharray")
+
           [MAP X (FUNCTION (LAMBDA (X)
                              (SELECTQ (CAR X)
                                  (BODY (FRPLACA X BODY))
@@ -4893,13 +5386,16 @@ with the terms of said license.
               (COND
                  ((EQ (CAR (GETP (CAR X)
                                  'CLISPWORD))
-                      'CHANGETRAN)                           (* ;; "these constructs have the property that translation differs depending on expression, e.g. while (fetch foo of x) is always the same regardless of what x is, (change x y) differs depending on what x is.")
+                      'CHANGETRAN)
+
+                  (* ;; "these constructs have the property that translation differs depending on expression, e.g. while (fetch foo of x) is always the same regardless of what x is, (change x y) differs depending on what x is.")
+
                   (PUTHASH X NIL CLISPARRAY)
                   (DWIMIFY1 X))
                  (T (CLISPDSUBST TEM])
 
 (GETDUMMYVAR
-  [LAMBDA (BINDITFLG)                                        (* lmm "28-MAY-83 18:01")
+  [LAMBDA (BINDITFLG)                                        (* lmm "28-MAY-83 18:01")
     (PROG (VAR)
           [SETQ VAR (CAR (SETQ DUMMYVARS (OR (CDR DUMMYVARS)
                                              (CDR (RPLACD DUMMYVARS (LIST (GENSYM]
@@ -4909,8 +5405,10 @@ with the terms of said license.
           (RETURN VAR])
 
 (CLISPFORINITVAR
-  [LAMBDA (VAR EXP)                                          (* wt%: "21-JAN-80 20:44")
-                                                             (* ;; "this function is called when is necessary to initialize a variable to an expression outside of tje scope of anyvariables bound by i.s., i.e. in the prog binding.  it generates a dummy variabe, binds it to exp, and then initializes var to that expresssin")
+  [LAMBDA (VAR EXP)                                          (* wt%: "21-JAN-80 20:44")
+
+    (* ;; "this function is called when is necessary to initialize a variable to an expression outside of tje scope of anyvariables bound by i.s., i.e. in the prog binding.  it generates a dummy variabe, binds it to exp, and then initializes var to that expresssin")
+
     (SETQ PROGVARS (CONS (LIST (GETDUMMYVAR)
                                EXP)
                          PROGVARS))
@@ -4919,7 +5417,7 @@ with the terms of said license.
 (DEFINEQ
 
 (\DURATIONTRAN
-  [LAMBDA (FORM)                                             (* JonL "23-Jul-84 15:39")
+  [LAMBDA (FORM)                                             (* JonL "23-Jul-84 15:39")
     (PROG ((BODY FORM)
            (OLDTIMER)
            (EXPANSION)
@@ -4927,7 +5425,10 @@ with the terms of said license.
            (EXPIREDFORM '(TIMEREXPIRED? \DurationLimit . TIMERUNITSLST))
            USINGTIMER USINGBOX FORDURATION RESOURCENAME UNTILDATE TIMERUNITS TIMERUNITSLST TEMP)
           (DECLARE (SPECVARS TIMERUNITS USINGTIMER USINGBOX FORDURATION RESOURCENAME UNTILDATE)
-                 (GLOBALVARS DURATIONCLISPWORDS LCASEFLG))   (* ;; "DURATIONCLISPWORDS is a list of lists, each one of which has the canonical word for some CLISPWORD as second element.  First element is the all-caps version, so that SPECVARS communication can take place.")
+                 (GLOBALVARS DURATIONCLISPWORDS LCASEFLG))
+
+     (* ;; "DURATIONCLISPWORDS is a list of lists, each one of which has the canonical word for some CLISPWORD as second element.  First element is the all-caps version, so that SPECVARS communication can take place.")
+
           (PROG ((L DURATIONCLISPWORDS)
                  (Z BODY))
             LP  (AND (NLISTP L)
@@ -4946,7 +5447,7 @@ with the terms of said license.
                                                 ))
                     (SETQ USINGTIMER USINGBOX)))
           [COND
-             ((NULL TIMERUNITS)                              (* ; "Standard case")
+             ((NULL TIMERUNITS)                              (* ; "Standard case")
               NIL)
              (UNTILDATE (ERROR "Can't specify timerUnits for 'untilDate'" FORM))
              [(SETQ TEMP (CONSTANTEXPRESSIONP TIMERUNITS))
@@ -4962,23 +5463,25 @@ with the terms of said license.
              ((AND FORDURATION UNTILDATE)
               (ERROR "Both 'untilDate' and 'forDuration' specified" FORM)))
           [COND
-             (UNTILDATE (SETQ FORDURATION UNTILDATE)         (* ; 
-                                           "Make the 'interval' be the thing supplied for the 'date'")
+             (UNTILDATE (SETQ FORDURATION UNTILDATE)         (* ; 
+                                           "Make the 'interval' be the thing supplied for the 'date'")
                     (SETQ SETUPFORM '(SETUPTIMER.DATE FORDURATION OLDTIMER))
                     (SETQ TIMERUNITSLST '('SECONDS]
           (COND
-             ([AND (PROG1 RESOURCENAME                       (* ; "Comment PPLossage"))
+             ([AND (PROG1 RESOURCENAME                       (* ; "Comment PPLossage"))
                    (NOT (\TIMER.TIMERP (EVAL (LISTGET (GETDEF RESOURCENAME 'RESOURCES NIL
                                                              'NOERROR)
                                                     'NEW]
               (ERROR RESOURCENAME "is not a timer RESOURCE")))
-          (SETQ EXPANSION (LIST [LIST 'LAMBDA '(\DurationLimit) '(DECLARE (LOCALVARS \DurationLimit))
+          (SETQ EXPANSION (LIST [LIST 'LAMBDA '(\DurationLimit)
+                                      '(DECLARE (LOCALVARS \DurationLimit))
                                       (CONS 'until (CONS EXPIREDFORM 'BODY]
                                 SETUPFORM))
           [AND (LISTP (CAR TIMERUNITSLST))
                (NEQ (CAAR TIMERUNITSLST)
                     'QUOTE)
-               (SETQ EXPANSION (LIST (LIST 'LAMBDA '(\TimerUnit) '(DECLARE (LOCALVARS \TimerUnit)) 
+               (SETQ EXPANSION (LIST (LIST 'LAMBDA '(\TimerUnit)
+                                           '(DECLARE (LOCALVARS \TimerUnit))
                                            EXPANSION)
                                      (CAR TIMERUNITSLST)))
                (SETQ TIMERUNITSLST '(\TimerUnit]
@@ -5004,8 +5507,10 @@ with the terms of said license.
           (RETURN EXPANSION])
 
 (\CLISPKEYWORDPROCESS
-  [LAMBDA (FORM WORDLST)                                     (* JonL "27-APR-83 04:39")
-                                                             (* ;; "Looks for the first 'keyword' in the list FORM which is mentioned in the WORDLST -- and if one is found, the the first keyword in WORDLST is presumed to be the name of a variable to be set to the keyword's value.  Returns the original list with the keyword pair non-destructively spliced out.")
+  [LAMBDA (FORM WORDLST)                                     (* JonL "27-APR-83 04:39")
+
+    (* ;; "Looks for the first 'keyword' in the list FORM which is mentioned in the WORDLST -- and if one is found, the the first keyword in WORDLST is presumed to be the name of a variable to be set to the keyword's value.  Returns the original list with the keyword pair non-destructively spliced out.")
+
     (COND
        ((NULL FORM)
         NIL)
@@ -5064,14 +5569,16 @@ with the terms of said license.
                                      (RETURN UNDOTEM))))
 )
 )
-(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY
 
-(BLOCK%: FORBLOCK (ENTRIES CLISPFOR)
-       CLISPFORVARS CLISPFOR0 CLISPFOR2 CLISPFORINITVAR CLISPDSUBST \CLISPKEYWORDPROCESS CLISPFORF/L
-       CLISPFOR4 CLISPFORVARS1 CLISPFOR3 CLISPFOR1 CLISPFOR0A CLISPFOR \DURATIONTRAN
-       (SPECVARS UNDOSIDE LISPXHIST BODY I.S.TYPE1 I.S.TYPE TERMINATEFLG FIRSTI.V. I.V. PROGVARS 
-              MAKEPROGFLG IVINITFLG INITVARS UNDOLST DWIMIFYING VARS DWIMIFYCHANGE DUMMYVARS 
-              I.S.OPRSLST CLISPCONTEXT UNDOSIDE0 EXP))
+
+
+(* BLOCKS (FORBLOCK (ENTRIES CLISPFOR) CLISPFORVARS CLISPFOR0 CLISPFOR2 CLISPFORINITVAR CLISPDSUBST 
+\CLISPKEYWORDPROCESS CLISPFORF/L CLISPFOR4 CLISPFORVARS1 CLISPFOR3 CLISPFOR1 CLISPFOR0A CLISPFOR 
+\DURATIONTRAN (SPECVARS UNDOSIDE LISPXHIST BODY I.S.TYPE1 I.S.TYPE TERMINATEFLG FIRSTI.V. I.V. 
+PROGVARS MAKEPROGFLG IVINITFLG INITVARS UNDOLST DWIMIFYING VARS DWIMIFYCHANGE DUMMYVARS I.S.OPRSLST 
+CLISPCONTEXT UNDOSIDE0 EXP)))
+
+(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY
 
 (BLOCK%: DWIMIFYBLOCK CLBINARYMINUS? CLISPANGLEBRACKETS CLISPATOM CLISPATOM0 CLISPATOM1 CLISPATOM1A 
        CLISPATOM1B CLISPATOM2 CLISPATOM2A CLISPATOM2C CLISPATOM2D CLISPATOMARE1 CLISPATOMARE2 
@@ -5118,33 +5625,32 @@ with the terms of said license.
 (RPAQ? DWIM.GIVE.UP.TIME )
 
 (RPAQ? DWIM.GIVE.UP.INTERVAL 2000)
-(PUTPROPS DWIMIFY COPYRIGHT ("Venue & Xerox Corporation" T 1978 1984 1985 1986 1990))
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (5666 53378 (DWIMIFYFNS 5676 . 7159) (DWIMIFY 7161 . 8220) (DWIMIFY0 8222 . 14599) (
-DWIMIFY0? 14601 . 16670) (DWMFY0 16672 . 17042) (DWIMIFY1 17044 . 17119) (DWIMIFY1? 17121 . 17667) (
-DWMFY1 17669 . 27351) (DWIMIFY1A 27353 . 28288) (DWIMIFY2 28290 . 28384) (DWIMIFY2? 28386 . 28959) (
-DWMFY2 28961 . 41417) (DWIMIFY2A 41419 . 42281) (CLISPANGLEBRACKETS 42283 . 42544) (SHRIEKER 42546 . 
-52023) (CLISPRESPELL 52025 . 52732) (EXPRCHECK 52734 . 53376)) (53379 148618 (CLISPATOM0 53389 . 55380
-) (CLISPATOM1 55382 . 81128) (CLRPLNODE 81130 . 81914) (STOPSCAN? 81916 . 85782) (CLUNARYMINUS? 85784
- . 88030) (CLBINARYMINUS? 88032 . 89969) (CLISPATOM1A 89971 . 94956) (CLISPATOM1B 94958 . 95916) (
-CLISPATOM2 95918 . 119052) (CLISPNOEVAL 119054 . 120579) (CLISPLOOKUP 120581 . 122889) (CLISPATOM2A 
-122891 . 126671) (CLISPBROADSCOPE 126673 . 128023) (CLISPBROADSCOPE1 128025 . 129895) (CLISPATOM2C 
-129897 . 133566) (CLISPATOM2D 133568 . 135840) (CLISPCAR/CDR 135842 . 140140) (CLISPCAR/CDR1 140142 . 
-143701) (CLISPCAR/CDR2 143703 . 144076) (CLISPATOMIS1 144078 . 145021) (CLISPATOMARE1 145023 . 145857)
- (CLISPATOMARE2 145859 . 147403) (CLISPATOMIS2 147405 . 148616)) (148619 224380 (WTFIX 148629 . 148856
-) (WTFIX0 148858 . 149479) (WTFIX1 149481 . 168902) (RETDWIM 168904 . 174471) (DWIMERRORRETURN 174473
- . 174631) (DWIMARKASCHANGED 174633 . 175889) (RETDWIM1 175891 . 181400) (FIX89TYPEIN 181402 . 182856)
- (FIXLAMBDA 182858 . 183371) (FIXAPPLY 183373 . 186168) (FIXATOM 186170 . 192376) (FIXATOM1 192378 . 
-198795) (FIXCONTINUE 198797 . 199250) (FIXCONTINUE1 199252 . 200186) (CLISPATOM 200188 . 204070) (
-GETVARS 204072 . 205599) (GETVARS1 205601 . 205972) (FIX89 205974 . 207803) (FIXPRINTIN 207805 . 
-209032) (FIX89A 209034 . 209782) (CLISPFUNCTION? 209784 . 214688) (CLISPNOTVARP 214690 . 215254) (
-CLISP-SIMPLE-FUNCTION-P 215256 . 215592) (CLISPELL 215594 . 216713) (FINDFN 216715 . 223491) (
-DWIMUNSAVEDEF 223493 . 224054) (CHECKTRAN 224056 . 224378)) (224381 235346 (CLISPIF 224391 . 226056) (
-CLISPIF0 226058 . 232254) (CLISPIF1 232256 . 232881) (CLISPIF2 232883 . 233992) (CLISPIF3 233994 . 
-235344)) (235347 298653 (CLISPFOR 235357 . 236601) (CLISPFOR0 236603 . 270380) (CLISPFOR0A 270382 . 
-272367) (CLISPFOR1 272369 . 283772) (CLISPRPLNODE 283774 . 284261) (CLISPFOR2 284263 . 285295) (
-CLISPFOR3 285297 . 285847) (CLISPFORVARS 285849 . 294129) (CLISPFORVARS1 294131 . 294679) (CLISPFOR4 
-294681 . 295285) (CLISPFORF/L 295287 . 296422) (CLISPDSUBST 296424 . 297615) (GETDUMMYVAR 297617 . 
-298027) (CLISPFORINITVAR 298029 . 298651)) (298654 304767 (\DURATIONTRAN 298664 . 303526) (
-\CLISPKEYWORDPROCESS 303528 . 304765)))))
+  (FILEMAP (NIL (5377 52993 (DWIMIFYFNS 5387 . 6882) (DWIMIFY 6884 . 7926) (DWIMIFY0 7928 . 14337) (
+DWIMIFY0? 14339 . 16323) (DWMFY0 16325 . 16695) (DWIMIFY1 16697 . 16772) (DWIMIFY1? 16774 . 17285) (
+DWMFY1 17287 . 26957) (DWIMIFY1A 26959 . 27902) (DWIMIFY2 27904 . 27998) (DWIMIFY2? 28000 . 28538) (
+DWMFY2 28540 . 41040) (DWIMIFY2A 41042 . 41912) (CLISPANGLEBRACKETS 41914 . 42179) (SHRIEKER 42181 . 
+51681) (CLISPRESPELL 51683 . 52343) (EXPRCHECK 52345 . 52991)) (52994 147675 (CLISPATOM0 53004 . 54986
+) (CLISPATOM1 54988 . 80801) (CLRPLNODE 80803 . 81589) (STOPSCAN? 81591 . 85373) (CLUNARYMINUS? 85375
+ . 87574) (CLBINARYMINUS? 87576 . 89416) (CLISPATOM1A 89418 . 94399) (CLISPATOM1B 94401 . 95316) (
+CLISPATOM2 95318 . 118384) (CLISPNOEVAL 118386 . 119858) (CLISPLOOKUP 119860 . 122097) (CLISPATOM2A 
+122099 . 125888) (CLISPBROADSCOPE 125890 . 127244) (CLISPBROADSCOPE1 127246 . 129087) (CLISPATOM2C 
+129089 . 132733) (CLISPATOM2D 132735 . 134952) (CLISPCAR/CDR 134954 . 139229) (CLISPCAR/CDR1 139231 . 
+142871) (CLISPCAR/CDR2 142873 . 143250) (CLISPATOMIS1 143252 . 144174) (CLISPATOMARE1 144176 . 144948)
+ (CLISPATOMARE2 144950 . 146507) (CLISPATOMIS2 146509 . 147673)) (147676 223891 (WTFIX 147686 . 147917
+) (WTFIX0 147919 . 148551) (WTFIX1 148553 . 168713) (RETDWIM 168715 . 174323) (DWIMERRORRETURN 174325
+ . 174487) (DWIMARKASCHANGED 174489 . 175706) (RETDWIM1 175708 . 181222) (FIX89TYPEIN 181224 . 182706)
+ (FIXLAMBDA 182708 . 183174) (FIXAPPLY 183176 . 185999) (FIXATOM 186001 . 192193) (FIXATOM1 192195 . 
+198563) (FIXCONTINUE 198565 . 199018) (FIXCONTINUE1 199020 . 199958) (CLISPATOM 199960 . 203822) (
+GETVARS 203824 . 205383) (GETVARS1 205385 . 205735) (FIX89 205737 . 207547) (FIXPRINTIN 207549 . 
+208694) (FIX89A 208696 . 209448) (CLISPFUNCTION? 209450 . 214239) (CLISPNOTVARP 214241 . 214809) (
+CLISP-SIMPLE-FUNCTION-P 214811 . 215151) (CLISPELL 215153 . 216276) (FINDFN 216278 . 222986) (
+DWIMUNSAVEDEF 222988 . 223561) (CHECKTRAN 223563 . 223889)) (223892 234842 (CLISPIF 223902 . 225520) (
+CLISPIF0 225522 . 231761) (CLISPIF1 231763 . 232363) (CLISPIF2 232365 . 233484) (CLISPIF3 233486 . 
+234840)) (234843 297748 (CLISPFOR 234853 . 236007) (CLISPFOR0 236009 . 269796) (CLISPFOR0A 269798 . 
+271728) (CLISPFOR1 271730 . 283098) (CLISPRPLNODE 283100 . 283525) (CLISPFOR2 283527 . 284596) (
+CLISPFOR3 284598 . 285101) (CLISPFORVARS 285103 . 293369) (CLISPFORVARS1 293371 . 293923) (CLISPFOR4 
+293925 . 294537) (CLISPFORF/L 294539 . 295592) (CLISPDSUBST 295594 . 296753) (GETDUMMYVAR 296755 . 
+297169) (CLISPFORINITVAR 297171 . 297746)) (297749 303924 (\DURATIONTRAN 297759 . 302730) (
+\CLISPKEYWORDPROCESS 302732 . 303922)))))
 STOP
diff --git a/sources/DWIMIFY.LCOM b/sources/DWIMIFY.LCOM
index 4ea34731..f71619db 100644
Binary files a/sources/DWIMIFY.LCOM and b/sources/DWIMIFY.LCOM differ
diff --git a/sources/EXTERNALFORMAT b/sources/EXTERNALFORMAT
index 452ec1e9..51142e8a 100644
--- a/sources/EXTERNALFORMAT
+++ b/sources/EXTERNALFORMAT
@@ -1,13 +1,12 @@
-(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
+(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT UTF-8)
 
-(FILECREATED " 9-Feb-2026 15:54:22" {WMEDLEY}<sources>EXTERNALFORMAT.;120 47422  
+(FILECREATED "22-Feb-2026 12:29:38" {WMEDLEY}<sources>EXTERNALFORMAT.;124 45411  
 
       :EDIT-BY rmk
 
       :CHANGES-TO (VARS EXTERNALFORMATCOMS)
-                  (FNS \CREATE.THROUGH16.EXTERNALFORMAT \CREATE.THROUGH.EXTERNALFORMAT)
 
-      :PREVIOUS-DATE " 6-Feb-2026 23:21:32" {WMEDLEY}<sources>EXTERNALFORMAT.;116)
+      :PREVIOUS-DATE "20-Feb-2026 09:18:35" {WMEDLEY}<sources>EXTERNALFORMAT.;123)
 
 
 (PRETTYCOMPRINT EXTERNALFORMATCOMS)
@@ -23,9 +22,6 @@
               (EXPORT (GLOBALVARS *EXTERNALFORMATS* *DEFAULT-EXTERNALFORMAT*))
               (INITVARS (*EXTERNALFORMATS* NIL)
                      (*DEFAULT-EXTERNALFORMAT* :MCCS))
-              (COMS (FNS SYSTEM-EXTERNALFORMAT MTOSYSSTRING SYSTOMSTRING)
-                    (EXPORT (GLOBALVARS *SYSTEM-EXTERNALFORMAT*))
-                    (INITVARS (*SYSTEM-EXTERNALFORMAT* :UTF-8)))
               (DECLARE%: DONTEVAL@LOAD DOCOPY (P (DEFPRINT 'EXTERNALFORMAT (FUNCTION 
                                                                              \EXTERNALFORMAT.DEFPRINT
                                                                                   ]
@@ -243,18 +239,18 @@
                   (NIL)
                   (SHOULDNT)))
     (\INSTALL.EXTERNALFORMAT (CREATE EXTERNALFORMAT
-                                    NAME _ NAME
-                                    INCCODEFN _ INCCODEFN
-                                    PEEKCCODEFN _ PEEKCCODEFN
-                                    BACKCCODEFN _ BACKCCODEFN
-                                    OUTCHARFN _ OUTCHARFN
-                                    FORMATBYTESTREAMFN _ FORMATBYTESTREAMFN
-                                    EOLVALID _ EOL
-                                    EOL _ (OR EOL LF.EOLC)
-                                    UNSTABLE _ UNSTABLE
-                                    MCCSTOFORMATBYTESFN _ MCCSTOFORMATBYTESFN
-                                    FORMATBYTESTOMCCSFN _ FORMATBYTESTOMCCSFN
-                                    FORMATCHARSETFN _ (OR FORMATCHARSETFN (FUNCTION NILL])
+                                    NAME ← NAME
+                                    INCCODEFN ← INCCODEFN
+                                    PEEKCCODEFN ← PEEKCCODEFN
+                                    BACKCCODEFN ← BACKCCODEFN
+                                    OUTCHARFN ← OUTCHARFN
+                                    FORMATBYTESTREAMFN ← FORMATBYTESTREAMFN
+                                    EOLVALID ← EOL
+                                    EOL ← (OR EOL LF.EOLC)
+                                    UNSTABLE ← UNSTABLE
+                                    MCCSTOFORMATBYTESFN ← MCCSTOFORMATBYTESFN
+                                    FORMATBYTESTOMCCSFN ← FORMATBYTESTOMCCSFN
+                                    FORMATCHARSETFN ← (OR FORMATCHARSETFN (FUNCTION NILL])
 
 (\EXTERNALFORMAT.DEFPRINT
   [LAMBDA (EXTERNALFORMAT STREAM)                            (* ; "Edited  2-Jul-2022 11:40 by rmk")
@@ -268,7 +264,7 @@
 (DEFINEQ
 
 (\INSTALL.EXTERNALFORMAT
-  [LAMBDA (EXTFORMAT/NAME EXTERNALFORMAT)               (* ; "Edited  5-Aug-2021 14:22 by rmk:")
+  [LAMBDA (EXTFORMAT/NAME EXTERNALFORMAT)                   (* ; "Edited  5-Aug-2021 14:22 by rmk:")
 
 (* ;;; "Register an instance of the datatype EXTERNALFORMAT.")
 
@@ -277,25 +273,23 @@
     (LET (NAME)
          (IF EXTERNALFORMAT
              THEN 
+                  (* ;; "Backwards compatibility")
 
-                   (* ;; "Backwards compatibility")
-
-                   (SETQ NAME (MKATOM EXTFORMAT/NAME))
-                   (IF (EQ NAME (FETCH (EXTERNALFORMAT NAME) OF EXTERNALFORMAT))
-                     ELSEIF (FETCH (EXTERNALFORMAT NAME) OF EXTERNALFORMAT)
-                       THEN (ERROR "Mismatch of specified name and name of the external format")
-                     ELSE (REPLACE (EXTERNALFORMAT NAME) OF EXTERNALFORMAT WITH
-                                                                                       NAME))
+                  (SETQ NAME (MKATOM EXTFORMAT/NAME))
+                  (IF (EQ NAME (FETCH (EXTERNALFORMAT NAME) OF EXTERNALFORMAT))
+                    ELSEIF (FETCH (EXTERNALFORMAT NAME) OF EXTERNALFORMAT)
+                      THEN (ERROR "Mismatch of specified name and name of the external format")
+                    ELSE (REPLACE (EXTERNALFORMAT NAME) OF EXTERNALFORMAT WITH NAME))
            ELSE (SETQ EXTERNALFORMAT EXTFORMAT/NAME)
-                 (SETQ NAME (FETCH (EXTERNALFORMAT NAME) OF EXTERNALFORMAT)))
+                (SETQ NAME (FETCH (EXTERNALFORMAT NAME) OF EXTERNALFORMAT)))
          (IF (type? EXTERNALFORMAT EXTERNALFORMAT)
              THEN (\REMOVE.EXTERNALFORMAT NAME)
-                   (push *EXTERNALFORMATS* EXTERNALFORMAT)
+                  (push *EXTERNALFORMATS* EXTERNALFORMAT)
            ELSE (ERROR "INVALID EXTERNALFORMAT " EXTERNALFORMAT))
          EXTERNALFORMAT])
 
 (\REMOVE.EXTERNALFORMAT
-  [LAMBDA (NAME/EXTFORMAT)                              (* ; "Edited  5-May-2021 15:42 by rmk:")
+  [LAMBDA (NAME/EXTFORMAT)                                  (* ; "Edited  5-May-2021 15:42 by rmk:")
 
 (* ;;; "Deregisters external format EXTERNALFORMAT .")
 
@@ -303,9 +297,8 @@
                              THEN (FETCH (EXTERNALFORMAT NAME) OF NAME/EXTFORMAT)
                            ELSE (MKATOM NAME/EXTFORMAT)))
     (SETQ *EXTERNALFORMATS* (DREMOVE (FIND EF IN *EXTERNALFORMATS*
-                                        SUCHTHAT (EQ NAME/EXTFORMAT (FETCH (EXTERNALFORMAT
-                                                                                    NAME)
-                                                                           OF EF)))
+                                        SUCHTHAT (EQ NAME/EXTFORMAT (FETCH (EXTERNALFORMAT NAME)
+                                                                       OF EF)))
                                    *EXTERNALFORMATS*])
 
 (FIND-FORMAT
@@ -330,41 +323,6 @@
 (RPAQ? *EXTERNALFORMATS* NIL)
 
 (RPAQ? *DEFAULT-EXTERNALFORMAT* :MCCS)
-(DEFINEQ
-
-(SYSTEM-EXTERNALFORMAT
-  [LAMBDA NIL                                                (* ; "Edited  6-Feb-2026 11:29 by rmk")
-                                                             (* ; "Edited 31-Jan-2026 18:51 by rmk")
-                                                             (* ; "Edited 10-Oct-2022 11:55 by lmm")
-                                                             (* ; "Edited  7-Jul-2022 10:41 by rmk")
-
-    (* ;; "Returns the name, sets the global.  For now, UTF-8 or through, could be something else.")
-
-    (fetch (EXTERNALFORMAT NAME) of (SETQ *SYSTEM-EXTERNALFORMAT*
-                                     (FIND-FORMAT (FOR X IN '("LC�CTYPE" "LC�ALL" "LANG")
-                                                     WHEN (STRPOS ".UTF-8" (UNIX-GETENV X))
-                                                     DO (RETURN :UTF-8) FINALLY (RETURN :THROUGH])
-
-(MTOSYSSTRING
-  [LAMBDA (MSTRING)                                          (* ; "Edited  6-Feb-2026 00:20 by rmk")
-    (MCCSTOFORMATBYTES *SYSTEM-EXTERNALFORMAT* (MKSTRING MSTRING])
-
-(SYSTOMSTRING
-  [LAMBDA (SYSTRING)                                         (* ; "Edited  5-Feb-2026 23:36 by rmk")
-
-    (* ;; "SYSSTRING is presumably shared with Unix, guarantee a copy on the way out")
-
-    (CONCAT (FORMATBYTESTOMCCS *SYSTEM-EXTERNALFORMAT* SYSTRING])
-)
-(* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: DOEVAL@COMPILE DONTCOPY
-
-(GLOBALVARS *SYSTEM-EXTERNALFORMAT*)
-)
-
-(* "END EXPORTED DEFINITIONS")
-
-
-(RPAQ? *SYSTEM-EXTERNALFORMAT* :UTF-8)
 (DECLARE%: DONTEVAL@LOAD DOCOPY 
 
 (DEFPRINT 'EXTERNALFORMAT (FUNCTION \EXTERNALFORMAT.DEFPRINT))
@@ -730,41 +688,41 @@
     (* ;; "Defines the NULL device, an infinite source or sink")
 
     (\DEFINEDEVICE 'NULL (create FDEV
-                                DEVICENAME _ 'NULL
-                                RANDOMACCESSP _ T
-                                NODIRECTORIES _ T
-                                CLOSEFILE _ (FUNCTION NILL)
-                                DELETEFILE _ (FUNCTION NILL)
-                                OPENFILE _ (FUNCTION \NULL.OPENFILE)
-                                REOPENFILE _ (FUNCTION \NULL.OPENFILE)
-                                BIN _ (FUNCTION \EOF.ACTION)
-                                BOUT _ (FUNCTION NILL)
-                                PEEKBIN _ [FUNCTION (LAMBDA (STREAM NOERRORFLG)
+                                DEVICENAME ← 'NULL
+                                RANDOMACCESSP ← T
+                                NODIRECTORIES ← T
+                                CLOSEFILE ← (FUNCTION NILL)
+                                DELETEFILE ← (FUNCTION NILL)
+                                OPENFILE ← (FUNCTION \NULL.OPENFILE)
+                                REOPENFILE ← (FUNCTION \NULL.OPENFILE)
+                                BIN ← (FUNCTION \EOF.ACTION)
+                                BOUT ← (FUNCTION NILL)
+                                PEEKBIN ← [FUNCTION (LAMBDA (STREAM NOERRORFLG)
                                                       (AND (NULL NOERRORFLG)
                                                            (BIN STREAM]
-                                READP _ (FUNCTION NILL)
-                                BACKFILEPTR _ (FUNCTION NILL)
-                                EOFP _ (FUNCTION TRUE)
-                                RENAMEFILE _ (FUNCTION NILL)
-                                GETFILENAME _ (FUNCTION NILL)
-                                EVENTFN _ (FUNCTION NILL)
-                                BLOCKIN _ (FUNCTION \EOF.ACTION)
-                                BLOCKOUT _ (FUNCTION NILL)
-                                GENERATEFILES _ (FUNCTION \NULLFILEGENERATOR)
-                                GETFILEPTR _ (FUNCTION ZERO)
-                                GETEOFPTR _ (FUNCTION ZERO)
-                                SETFILEPTR _ (FUNCTION NILL)
-                                GETFILEINFO _ (FUNCTION NILL)
-                                SETFILEINFO _ (FUNCTION NILL)
-                                SETEOFPTR _ (FUNCTION NILL])
+                                READP ← (FUNCTION NILL)
+                                BACKFILEPTR ← (FUNCTION NILL)
+                                EOFP ← (FUNCTION TRUE)
+                                RENAMEFILE ← (FUNCTION NILL)
+                                GETFILENAME ← (FUNCTION NILL)
+                                EVENTFN ← (FUNCTION NILL)
+                                BLOCKIN ← (FUNCTION \EOF.ACTION)
+                                BLOCKOUT ← (FUNCTION NILL)
+                                GENERATEFILES ← (FUNCTION \NULLFILEGENERATOR)
+                                GETFILEPTR ← (FUNCTION ZERO)
+                                GETEOFPTR ← (FUNCTION ZERO)
+                                SETFILEPTR ← (FUNCTION NILL)
+                                GETFILEINFO ← (FUNCTION NILL)
+                                SETFILEINFO ← (FUNCTION NILL)
+                                SETEOFPTR ← (FUNCTION NILL])
 
 (\NULL.OPENFILE
   [LAMBDA (NAME ACCESS RECOG PARAMETERS DEVICE OLDSTREAM)    (* bvm%: "30-Jan-85 22:05")
     (OR OLDSTREAM (create STREAM
-                         USERCLOSEABLE _ T
-                         ACCESS _ ACCESS
-                         FULLFILENAME _ NIL
-                         DEVICE _ DEVICE])
+                         USERCLOSEABLE ← T
+                         ACCESS ← ACCESS
+                         FULLFILENAME ← NIL
+                         DEVICE ← DEVICE])
 )
 (DECLARE%: DONTEVAL@LOAD DOCOPY 
 
@@ -883,15 +841,14 @@
 (\CREATE.THROUGH16.EXTERNALFORMAT)
 )
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (7446 15343 (\EXTERNALFORMAT 7456 . 12055) (MAKE-EXTERNALFORMAT 12057 . 14870) (
-\EXTERNALFORMAT.DEFPRINT 14872 . 15341)) (15344 18385 (\INSTALL.EXTERNALFORMAT 15354 . 16803) (
-\REMOVE.EXTERNALFORMAT 16805 . 17636) (FIND-FORMAT 17638 . 18383)) (18628 20078 (SYSTEM-EXTERNALFORMAT
- 18638 . 19586) (MTOSYSSTRING 19588 . 19785) (SYSTOMSTRING 19787 . 20076)) (20442 34717 (\OUTCHAR 
-20452 . 21669) (\INCCODE 21671 . 22824) (\BACKCCODE 22826 . 24505) (\BACKCCODE.EOLC 24507 . 26697) (
-\PEEKCCODE 26699 . 27024) (\PEEKCCODE.EOLC 27026 . 27405) (\INCCODE.EOLC 27407 . 29206) (
-\FORMATBYTESTREAM 29208 . 31652) (\CHECKEOLC.CRLF 31654 . 34715)) (34718 38634 (MCCSTOFORMATBYTES 
-34728 . 37127) (FORMATBYTESTOMCCS 37129 . 38632)) (40045 42281 (\NULLDEVICE 40055 . 41957) (
-\NULL.OPENFILE 41959 . 42279)) (42371 47286 (\CREATE.THROUGH.EXTERNALFORMAT 42381 . 44050) (
-\CREATE.THROUGH16.EXTERNALFORMAT 44052 . 46243) (\THROUGHIN 46245 . 46669) (\THROUGHBACKCCODE 46671 . 
-46942) (\THROUGHOUTCHARFN 46944 . 47284)))))
+  (FILEMAP (NIL (7168 15089 (\EXTERNALFORMAT 7178 . 11777) (MAKE-EXTERNALFORMAT 11779 . 14616) (
+\EXTERNALFORMAT.DEFPRINT 14618 . 15087)) (15090 17955 (\INSTALL.EXTERNALFORMAT 15100 . 16457) (
+\REMOVE.EXTERNALFORMAT 16459 . 17206) (FIND-FORMAT 17208 . 17953)) (18373 32648 (\OUTCHAR 18383 . 
+19600) (\INCCODE 19602 . 20755) (\BACKCCODE 20757 . 22436) (\BACKCCODE.EOLC 22438 . 24628) (\PEEKCCODE
+ 24630 . 24955) (\PEEKCCODE.EOLC 24957 . 25336) (\INCCODE.EOLC 25338 . 27137) (\FORMATBYTESTREAM 27139
+ . 29583) (\CHECKEOLC.CRLF 29585 . 32646)) (32649 36565 (MCCSTOFORMATBYTES 32659 . 35058) (
+FORMATBYTESTOMCCS 35060 . 36563)) (37976 40270 (\NULLDEVICE 37986 . 39938) (\NULL.OPENFILE 39940 . 
+40268)) (40360 45275 (\CREATE.THROUGH.EXTERNALFORMAT 40370 . 42039) (\CREATE.THROUGH16.EXTERNALFORMAT 
+42041 . 44232) (\THROUGHIN 44234 . 44658) (\THROUGHBACKCCODE 44660 . 44931) (\THROUGHOUTCHARFN 44933
+ . 45273)))))
 STOP
diff --git a/sources/EXTERNALFORMAT.LCOM b/sources/EXTERNALFORMAT.LCOM
index 8a026d97..5a9fc5f6 100644
Binary files a/sources/EXTERNALFORMAT.LCOM and b/sources/EXTERNALFORMAT.LCOM differ
diff --git a/sources/FILEPKG b/sources/FILEPKG
index c71bd967..46d6906b 100644
--- a/sources/FILEPKG
+++ b/sources/FILEPKG
@@ -1,14 +1,12 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
 
-(FILECREATED "27-Sep-2025 19:56:28" 
-{DSK}<Users>kaplan>Local>medley3.5>working-medley>sources>FILEPKG.;53 274937 
+(FILECREATED "25-Feb-2026 10:07:03" {WMEDLEY}<sources>FILEPKG.;61 275774 
 
       :EDIT-BY rmk
 
-      :CHANGES-TO (FNS COMPILE-FILE?)
+      :CHANGES-TO (FNS FILEGETDEF.FNS)
 
-      :PREVIOUS-DATE "24-Apr-2025 11:18:44" 
-{DSK}<Users>kaplan>Local>medley3.5>working-medley>sources>FILEPKG.;52)
+      :PREVIOUS-DATE "23-Feb-2026 00:54:21" {WMEDLEY}<sources>FILEPKG.;59)
 
 
 (PRETTYCOMPRINT FILEPKGCOMS)
@@ -2910,18 +2908,20 @@ compiling " T)
                                                        NIL) finally (RETURN 'NOBIND])
 
 (FILEGETDEF.FNS
-  [LAMBDA (NAME TYPE SOURCE OPTIONS)                         (* bvm%: "29-Aug-86 22:30")
+  [LAMBDA (NAME TYPE SOURCE OPTIONS)                         (* ; "Edited 25-Feb-2026 10:06 by rmk")
+                                                             (* ; "Edited 23-Feb-2026 00:37 by rmk")
+                                                             (* bvm%: "29-Aug-86 22:30")
     (LET (MAP ENV)
          (COND
             [(AND (EQMEMB 'FAST OPTIONS)
                   (PROGN (CL:MULTIPLE-VALUE-SETQ (ENV MAP)
                                 (GET-ENVIRONMENT-AND-FILEMAP SOURCE))
                          MAP))
+             (CL:UNLESS (OPENP SOURCE)
+                 [RESETSAVE NIL (LIST 'CLOSEF? (SETQ SOURCE (OPENSTREAM SOURCE 'INPUT 'OLD])
+             (\EXTERNALFORMAT SOURCE ENV)
              (for PAIR MAPLOC in (CDR MAP) when [SETQ MAPLOC (CADR (ASSOC NAME (CDDR PAIR]
-                do [OR (OPENP SOURCE)
-                       (RESETSAVE NIL (LIST 'CLOSEF? (SETQ SOURCE (OPENSTREAM SOURCE 'INPUT
-                                                                         'OLD]
-                   (SETFILEPTR SOURCE MAPLOC)
+                do (SETFILEPTR SOURCE MAPLOC)
                    (RETURN (WITH-READER-ENVIRONMENT ENV
                                [COND
                                   ((EQMEMB 'ARGLIST OPTIONS)
@@ -2931,7 +2931,12 @@ compiling " T)
                                    (LIST (READ SOURCE)
                                          (READ SOURCE)))
                                   (T (CADR (READ SOURCE])]
-            (T (CADR (FASSOC NAME (LOADEFS NAME SOURCE])
+            (T 
+               (* ;; "RMK:  The NLSETQ is because LOADFNS for FNS seems to disregard NOERROR and crash out when the target is FUNCTIONS, like WITH-READER-ENVIRONMENT")
+
+               (CADR (FASSOC NAME (CL:IF (EQMEMB 'NOERROR OPTIONS)
+                                      [CAR (NLSETQ (LOADFNS NAME SOURCE 'GETDEF]
+                                      (LOADFNS NAME SOURCE 'GETDEF))])
 
 (FILEPKGCOMS.PUTDEF
   [LAMBDA (NAME TYPE DEFINITION REASON)                      (* lmm "15-Jul-85 11:29")
@@ -3335,7 +3340,8 @@ compiling " T)
                             (RETFROM 'GETDEFCOM])
 
 (GETDEFCURRENT
-  [LAMBDA (NAME TYPE OPTIONS)                                (* ; "Edited  2-May-87 19:00 by Pavel")
+  [LAMBDA (NAME TYPE OPTIONS)                                (* ; "Edited 23-Feb-2026 00:27 by rmk")
+                                                             (* ; "Edited  2-May-87 19:00 by Pavel")
                                                              (* ; 
                                                              "Gets the current definition--source=0")
     (LET
@@ -3422,6 +3428,7 @@ compiling " T)
                              (RESETSAVE PRETTYFLG)
                              (RESETSAVE FONTCHANGEFLG)
                              [RESETSAVE (OUTPUT (SETQ FILE (OPENSTREAM '{NODIRCORE} 'BOTH]
+                             (\EXTERNALFORMAT FILE *OLD-INTERLISP-READ-ENVIRONMENT*)
                              (PRETTYDEFCOMS COMS)
                              (SETFILEPTR FILE 0)
                              [SETQ DEF
@@ -4689,11 +4696,14 @@ compiling " T)
                     (AND RETURNFLG (LIST FORM])
 
 (IMPORTFILESCAN
-  [LAMBDA (FILE RETURNFLG)                                   (* bvm%: "24-Oct-86 19:31")
-    (WITH-READER-ENVIRONMENT (GET-ENVIRONMENT-AND-FILEMAP FILE)
-        (while (FFILEPOS BEGINEXPORTDEFSTRING FILE NIL NIL NIL T) bind DEF
-           join (until (EQUAL (SETQ DEF (READ FILE))
-                              ENDEXPORTDEFFORM) join (IMPORTEVAL DEF RETURNFLG))))])
+  [LAMBDA (FILE RETURNFLG)                                   (* ; "Edited 22-Feb-2026 18:20 by rmk")
+                                                             (* bvm%: "24-Oct-86 19:31")
+    (LET ((ENV (GET-ENVIRONMENT-AND-FILEMAP FILE)))
+         (WITH-READER-ENVIRONMENT ENV
+             (\EXTERNALFORMAT FILE ENV)
+             (while (FFILEPOS BEGINEXPORTDEFSTRING FILE NIL NIL NIL T) bind DEF
+                join (until (EQUAL (SETQ DEF (READ FILE))
+                                   ENDEXPORTDEFFORM) join (IMPORTEVAL DEF RETURNFLG))))])
 
 (CHECKIMPORTS
   [LAMBDA (FILES NOASKFLG)                                   (* rmk%: "19-FEB-83 16:31")
@@ -4868,46 +4878,46 @@ compiling " T)
 (ADDTOVAR LAMA FILEPKGTYPE FILEPKGCOM FILEPKGCHANGES)
 )
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (18974 20647 (SEARCHPRETTYTYPELST 18984 . 19953) (PRETTYDEFMACROS 19955 . 20391) (
-FILEPKGCOMPROPS 20393 . 20645)) (21460 55859 (CLEANUP 21470 . 22860) (COMPILEFILES 22862 . 23138) (
-COMPILEFILES0 23140 . 23953) (CONTINUEDIT 23955 . 25332) (MAKEFILE 25334 . 37060) (FILECHANGES 37062
- . 39826) (FILEPKG.MERGECHANGES 39828 . 40463) (FILEPKG.CHANGEDFNS 40465 . 40777) (MAKEFILE1 40779 . 
-44991) (COMPILE-FILE? 44993 . 46687) (MAKEFILES 46689 . 48217) (ADDFILE 48219 . 50762) (ADDFILE0 50764
- . 54888) (LISTFILES 54890 . 55857)) (56531 90330 (FILEPKGCHANGES 56541 . 57720) (GETFILEPKGTYPE 57722
- . 60672) (MARKASCHANGED 60674 . 62305) (FILECOMS 62307 . 62691) (WHEREIS 62693 . 64435) (
-SMASHFILECOMS 64437 . 64665) (FILEFNSLST 64667 . 64833) (FILECOMSLST 64835 . 65321) (UPDATEFILES 65323
- . 69821) (INFILECOMS? 69823 . 71666) (INFILECOMTAIL 71668 . 72786) (INFILECOMS 72788 . 72949) (
-INFILECOM 72951 . 82969) (INFILECOMSVALS 82971 . 83278) (INFILECOMSVAL 83280 . 84288) (INFILECOMSPROP 
-84290 . 85083) (IFCPROPS 85085 . 86165) (IFCEXPRTYPE 86167 . 86783) (IFCPROPSCAN 86785 . 87746) (
-IFCDECLARE 87748 . 89007) (INFILEPAIRS 89009 . 89308) (INFILECOMSMACRO 89310 . 90328)) (90365 121051 (
-FILES? 90375 . 92486) (FILES?1 92488 . 93190) (FILES?PRINTLST 93192 . 93974) (ADDTOFILES? 93976 . 
-104519) (ADDTOFILE 104521 . 105437) (WHATIS 105439 . 107415) (ADDTOCOMS 107417 . 108955) (ADDTOCOM 
-108957 . 115444) (ADDTOCOM1 115446 . 116617) (ADDNEWCOM 116619 . 117669) (MAKENEWCOM 117671 . 119518) 
-(DEFAULTMAKENEWCOM 119520 . 121049)) (121121 123938 (MERGEINSERT 121131 . 123474) (MERGEINSERT1 123476
- . 123936)) (124092 125453 (ADDTOFILEKEYLST 124102 . 125451)) (125570 136371 (DELFROMFILES 125580 . 
-126410) (DELFROMCOMS 126412 . 128091) (DELFROMCOM 128093 . 133858) (DELFROMCOM1 133860 . 134659) (
-REMOVEITEM 134661 . 135537) (MOVETOFILE 135539 . 136369)) (136585 138956 (SAVEPUT 136595 . 138954)) (
-139081 147324 (UNMARKASCHANGED 139091 . 140575) (PREEDITFN 140577 . 143058) (POSTEDITPROPS 143060 . 
-145354) (POSTEDITALISTS 145356 . 147322)) (147469 166939 (ALISTS.GETDEF 147479 . 147858) (
-ALISTS.WHENCHANGED 147860 . 148506) (CLEARCLISPARRAY 148508 . 149686) (EXPRESSIONS.WHENCHANGED 149688
- . 150066) (MAKEALISTCOMS 150068 . 151083) (MAKEFILESCOMS 151085 . 152415) (MAKELISPXMACROSCOMS 152417
- . 154435) (MAKEPROPSCOMS 154437 . 155063) (MAKEUSERMACROSCOMS 155065 . 156882) (PROPS.WHENCHANGED 
-156884 . 157505) (FILEGETDEF.LISPXMACROS 157507 . 158806) (FILEGETDEF.ALISTS 158808 . 159399) (
-FILEGETDEF.RECORDS 159401 . 160328) (FILEGETDEF.PROPS 160330 . 161125) (FILEGETDEF.MACROS 161127 . 
-162009) (FILEGETDEF.VARS 162011 . 162614) (FILEGETDEF.FNS 162616 . 163856) (FILEPKGCOMS.PUTDEF 163858
- . 165800) (FILES.PUTDEF 165802 . 166670) (VARS.PUTDEF 166672 . 166815) (FILES.WHENCHANGED 166817 . 
-166937)) (168961 176192 (RENAME 168971 . 170416) (CHANGECALLERS 170418 . 176190)) (176193 224102 (
-SHOWDEF 176203 . 177400) (COPYDEF 177402 . 180150) (GETDEF 180152 . 182695) (GETDEFCOM 182697 . 183663
-) (GETDEFCOM0 183665 . 184858) (GETDEFCURRENT 184860 . 191172) (GETDEFERR 191174 . 192444) (
-GETDEFFROMFILE 192446 . 196675) (GETDEFSAVED 196677 . 197765) (PUTDEF 197767 . 198474) (EDITDEF 198476
- . 199459) (DEFAULT.EDITDEF 199461 . 202299) (EDITDEF.FILES 202301 . 202506) (LOADDEF 202508 . 202684)
- (DWIMDEF 202686 . 203540) (DELDEF 203542 . 206436) (DELFROMLIST 206438 . 206942) (HASDEF 206944 . 
-213181) (GETFILEDEF 213183 . 213695) (SAVEDEF 213697 . 215385) (UNSAVEDEF 215387 . 216283) (
-COMPAREDEFS 216285 . 220091) (COMPARE 220093 . 220797) (TYPESOF 220799 . 224100)) (224252 232500 (
-FILEPKGCOM 224262 . 229038) (FILEPKGTYPE 229040 . 232498)) (244533 262222 (FINDCALLERS 244543 . 245173
-) (EDITCALLERS 245175 . 256106) (EDITFROMFILE 256108 . 261537) (FINDATS 261539 . 261811) (LOOKIN 
-261813 . 262220)) (262223 263894 (SEPRCASE 262233 . 263892)) (264411 269414 (IMPORTFILE 264421 . 
-265391) (IMPORTEVAL 265393 . 266279) (IMPORTFILESCAN 266281 . 266694) (CHECKIMPORTS 266696 . 267952) (
-GATHEREXPORTS 267954 . 268822) (\DUMPEXPORTS 268824 . 269412)) (269752 271822 (CLEARFILEPKG 269762 . 
-271820)))))
+  (FILEMAP (NIL (18893 20566 (SEARCHPRETTYTYPELST 18903 . 19872) (PRETTYDEFMACROS 19874 . 20310) (
+FILEPKGCOMPROPS 20312 . 20564)) (21379 55778 (CLEANUP 21389 . 22779) (COMPILEFILES 22781 . 23057) (
+COMPILEFILES0 23059 . 23872) (CONTINUEDIT 23874 . 25251) (MAKEFILE 25253 . 36979) (FILECHANGES 36981
+ . 39745) (FILEPKG.MERGECHANGES 39747 . 40382) (FILEPKG.CHANGEDFNS 40384 . 40696) (MAKEFILE1 40698 . 
+44910) (COMPILE-FILE? 44912 . 46606) (MAKEFILES 46608 . 48136) (ADDFILE 48138 . 50681) (ADDFILE0 50683
+ . 54807) (LISTFILES 54809 . 55776)) (56450 90249 (FILEPKGCHANGES 56460 . 57639) (GETFILEPKGTYPE 57641
+ . 60591) (MARKASCHANGED 60593 . 62224) (FILECOMS 62226 . 62610) (WHEREIS 62612 . 64354) (
+SMASHFILECOMS 64356 . 64584) (FILEFNSLST 64586 . 64752) (FILECOMSLST 64754 . 65240) (UPDATEFILES 65242
+ . 69740) (INFILECOMS? 69742 . 71585) (INFILECOMTAIL 71587 . 72705) (INFILECOMS 72707 . 72868) (
+INFILECOM 72870 . 82888) (INFILECOMSVALS 82890 . 83197) (INFILECOMSVAL 83199 . 84207) (INFILECOMSPROP 
+84209 . 85002) (IFCPROPS 85004 . 86084) (IFCEXPRTYPE 86086 . 86702) (IFCPROPSCAN 86704 . 87665) (
+IFCDECLARE 87667 . 88926) (INFILEPAIRS 88928 . 89227) (INFILECOMSMACRO 89229 . 90247)) (90284 120970 (
+FILES? 90294 . 92405) (FILES?1 92407 . 93109) (FILES?PRINTLST 93111 . 93893) (ADDTOFILES? 93895 . 
+104438) (ADDTOFILE 104440 . 105356) (WHATIS 105358 . 107334) (ADDTOCOMS 107336 . 108874) (ADDTOCOM 
+108876 . 115363) (ADDTOCOM1 115365 . 116536) (ADDNEWCOM 116538 . 117588) (MAKENEWCOM 117590 . 119437) 
+(DEFAULTMAKENEWCOM 119439 . 120968)) (121040 123857 (MERGEINSERT 121050 . 123393) (MERGEINSERT1 123395
+ . 123855)) (124011 125372 (ADDTOFILEKEYLST 124021 . 125370)) (125489 136290 (DELFROMFILES 125499 . 
+126329) (DELFROMCOMS 126331 . 128010) (DELFROMCOM 128012 . 133777) (DELFROMCOM1 133779 . 134578) (
+REMOVEITEM 134580 . 135456) (MOVETOFILE 135458 . 136288)) (136504 138875 (SAVEPUT 136514 . 138873)) (
+139000 147243 (UNMARKASCHANGED 139010 . 140494) (PREEDITFN 140496 . 142977) (POSTEDITPROPS 142979 . 
+145273) (POSTEDITALISTS 145275 . 147241)) (147388 167392 (ALISTS.GETDEF 147398 . 147777) (
+ALISTS.WHENCHANGED 147779 . 148425) (CLEARCLISPARRAY 148427 . 149605) (EXPRESSIONS.WHENCHANGED 149607
+ . 149985) (MAKEALISTCOMS 149987 . 151002) (MAKEFILESCOMS 151004 . 152334) (MAKELISPXMACROSCOMS 152336
+ . 154354) (MAKEPROPSCOMS 154356 . 154982) (MAKEUSERMACROSCOMS 154984 . 156801) (PROPS.WHENCHANGED 
+156803 . 157424) (FILEGETDEF.LISPXMACROS 157426 . 158725) (FILEGETDEF.ALISTS 158727 . 159318) (
+FILEGETDEF.RECORDS 159320 . 160247) (FILEGETDEF.PROPS 160249 . 161044) (FILEGETDEF.MACROS 161046 . 
+161928) (FILEGETDEF.VARS 161930 . 162533) (FILEGETDEF.FNS 162535 . 164309) (FILEPKGCOMS.PUTDEF 164311
+ . 166253) (FILES.PUTDEF 166255 . 167123) (VARS.PUTDEF 167125 . 167268) (FILES.WHENCHANGED 167270 . 
+167390)) (169414 176645 (RENAME 169424 . 170869) (CHANGECALLERS 170871 . 176643)) (176646 224749 (
+SHOWDEF 176656 . 177853) (COPYDEF 177855 . 180603) (GETDEF 180605 . 183148) (GETDEFCOM 183150 . 184116
+) (GETDEFCOM0 184118 . 185311) (GETDEFCURRENT 185313 . 191819) (GETDEFERR 191821 . 193091) (
+GETDEFFROMFILE 193093 . 197322) (GETDEFSAVED 197324 . 198412) (PUTDEF 198414 . 199121) (EDITDEF 199123
+ . 200106) (DEFAULT.EDITDEF 200108 . 202946) (EDITDEF.FILES 202948 . 203153) (LOADDEF 203155 . 203331)
+ (DWIMDEF 203333 . 204187) (DELDEF 204189 . 207083) (DELFROMLIST 207085 . 207589) (HASDEF 207591 . 
+213828) (GETFILEDEF 213830 . 214342) (SAVEDEF 214344 . 216032) (UNSAVEDEF 216034 . 216930) (
+COMPAREDEFS 216932 . 220738) (COMPARE 220740 . 221444) (TYPESOF 221446 . 224747)) (224899 233147 (
+FILEPKGCOM 224909 . 229685) (FILEPKGTYPE 229687 . 233145)) (245180 262869 (FINDCALLERS 245190 . 245820
+) (EDITCALLERS 245822 . 256753) (EDITFROMFILE 256755 . 262184) (FINDATS 262186 . 262458) (LOOKIN 
+262460 . 262867)) (262870 264541 (SEPRCASE 262880 . 264539)) (265058 270251 (IMPORTFILE 265068 . 
+266038) (IMPORTEVAL 266040 . 266926) (IMPORTFILESCAN 266928 . 267531) (CHECKIMPORTS 267533 . 268789) (
+GATHEREXPORTS 268791 . 269659) (\DUMPEXPORTS 269661 . 270249)) (270589 272659 (CLEARFILEPKG 270599 . 
+272657)))))
 STOP
diff --git a/sources/FILEPKG.LCOM b/sources/FILEPKG.LCOM
index 85ae095b..5becfbc7 100644
Binary files a/sources/FILEPKG.LCOM and b/sources/FILEPKG.LCOM differ
diff --git a/sources/FILESETS b/sources/FILESETS
index 0cc75efb..15ac01f1 100644
--- a/sources/FILESETS
+++ b/sources/FILESETS
@@ -1,12 +1,12 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
 
-(FILECREATED " 7-Aug-2025 10:11:01" {WMEDLEY}<sources>FILESETS.;24 6210   
+(FILECREATED "23-Feb-2026 10:32:36" {WMEDLEY}<sources>FILESETS.;32 6226   
 
       :EDIT-BY rmk
 
       :CHANGES-TO (VARS 0LISPSET)
 
-      :PREVIOUS-DATE "10-Jun-2025 18:00:09" {WMEDLEY}<sources>FILESETS.;23)
+      :PREVIOUS-DATE "23-Feb-2026 09:36:51" {WMEDLEY}<sources>FILESETS.;31)
 
 
 (PRETTYCOMPRINT FILESETSCOMS)
@@ -48,10 +48,10 @@
 
 (RPAQQ FILESETS (0LISPSET 1LISPSET 2LISPSET 3LISPSET))
 
-(RPAQQ 0LISPSET (PACKAGE-CONVERSION-TABLE LLFAULT LLSUBRS LLBFS LLNEW FILEIO EXTERNALFORMAT IMAGEIO 
-                       LLBASIC LLGC LLARRAYELT LLINTERP LLMVS DEFSTRUCT-RUN-TIME SETF-RUNTIME 
-                       CMLSEQBASICS LLARITH LLFLOAT LLBIGNUM LLREAD IOCHAR MCCS LLCHAR LLSTK 
-                       LLDATATYPE LLKEY LLTIMER))
+(RPAQQ 0LISPSET (PACKAGE-CONVERSION-TABLE LLFAULT LLSUBRS LLBFS LLNEW FILEIO LLARRAYELT 
+                       EXTERNALFORMAT IOCHAR UNICODE-FORMATS IMAGEIO LLBASIC LLGC LLINTERP LLMVS 
+                       DEFSTRUCT-RUN-TIME SETF-RUNTIME CMLSEQBASICS LLARITH LLFLOAT LLBIGNUM LLREAD 
+                       MCCS LLCHAR LLSTK LLDATATYPE LLKEY LLTIMER))
 
 (RPAQQ 1LISPSET
        (ASTACK DTDECLARE ATBL LLCODE ACODE COREIO AOFD ADIR PMAP VANILLADISK ATERM APRINT ABASIC 
diff --git a/sources/FONT b/sources/FONT
index 2859beb2..1a92ec84 100644
--- a/sources/FONT
+++ b/sources/FONT
@@ -1,12 +1,12 @@
-(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
+(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10 :FORMAT :UTF-8)
 
-(FILECREATED "19-Feb-2026 00:10:22" {WMEDLEY}<sources>FONT.;674 277477 
+(FILECREATED "26-Feb-2026 17:01:47" {WMEDLEY}<sources>FONT.;677 278005 
 
       :EDIT-BY rmk
 
-      :CHANGES-TO (FNS \FONT.CHECKARGS1)
+      :CHANGES-TO (FNS MOVEFONTCHARS)
 
-      :PREVIOUS-DATE "14-Feb-2026 13:14:08" {WMEDLEY}<sources>FONT.;673)
+      :PREVIOUS-DATE "20-Feb-2026 12:54:44" {WMEDLEY}<sources>FONT.;675)
 
 
 (PRETTYCOMPRINT FONTCOMS)
@@ -203,9 +203,9 @@
 (DEFINEQ
 
 (CHARWIDTH
-  [LAMBDA (CHARCODE FONT)                                (* rmk%: "12-Apr-85 09:46")
+  [LAMBDA (CHARCODE FONT)                                    (* rmk%: "12-Apr-85 09:46")
                                                              (* ; 
-                                              "gets the width of a character code in a font/stream")
+                                                "gets the width of a character code in a font/stream")
     (OR (\CHARCODEP CHARCODE)
         (\ILLEGAL.ARG CHARCODE))
     (LET (TEMP)
@@ -213,7 +213,7 @@
             ((type? FONTDESCRIPTOR FONT)
              (\FGETCHARWIDTH FONT CHARCODE))
             ((SETQ TEMP (\OUTSTREAMARG FONT T))              (* ; 
-                                                     "NIL font goes thru here--primary output file")
+                                                       "NIL font goes thru here--primary output file")
              (IMAGEOP 'IMCHARWIDTH TEMP TEMP CHARCODE))
             (T (\FGETCHARWIDTH (FONTCREATE FONT)
                       CHARCODE])
@@ -246,7 +246,7 @@
                   (T 0])
 
 (STRINGWIDTH
-  [LAMBDA (STR FONT FLG RDTBL)                           (* ; "Edited  8-Jan-88 14:41 by Snow")
+  [LAMBDA (STR FONT FLG RDTBL)                               (* ; "Edited  8-Jan-88 14:41 by Snow")
 
     (* ;; "Returns the width of STR according to FONT")
 
@@ -259,22 +259,21 @@
              (\STRINGWIDTH.GENERIC STR FONT (AND FLG (\GTREADTABLE RDTBL))
                     (\FGETCHARWIDTH FONT (CHARCODE SPACE]
             [(AND FONT (SETQ TEMP (\OUTSTREAMARG FONT T)))   (* ; 
-  "if you gave something for FONT, coerce it to a stream, and call the stringwidth function of it.")
+    "if you gave something for FONT, coerce it to a stream, and call the stringwidth function of it.")
              (IMAGEOP 'IMSTRINGWIDTH TEMP TEMP STR (AND FLG (\GTREADTABLE RDTBL]
-            (T (SETQ TEMP (FONTCREATE (OR FONT DEFAULTFONT)))
-                                                             (* ; "NIL font will pass thru here.  ie, defaultfont is used to do the stringwidth instead of the font of *standard-output*")
+            (T (SETQ TEMP (FONTCREATE (OR FONT DEFAULTFONT)))(* ; "NIL font will pass thru here.  ie, defaultfont is used to do the stringwidth instead of the font of *standard-output*")
                (\STRINGWIDTH.GENERIC STR TEMP (AND FLG (\GTREADTABLE RDTBL))
                       (\FGETCHARWIDTH TEMP (CHARCODE SPACE])
 
 (\CHARWIDTH.DISPLAY
-  [LAMBDA (STREAM CHARCODE)                              (* rmk%: "12-Apr-85 09:42")
+  [LAMBDA (STREAM CHARCODE)                                  (* rmk%: "12-Apr-85 09:42")
                                                              (* ; 
-         "gets the width of a character code in a display stream.  Need to fix up for spacefactor.")
+           "gets the width of a character code in a display stream.  Need to fix up for spacefactor.")
     (\FGETCHARWIDTH (ffetch (\DISPLAYDATA DDFONT) of (ffetch IMAGEDATA of STREAM))
            CHARCODE])
 
 (\STRINGWIDTH.DISPLAY
-  [LAMBDA (STREAM STR RDTBL)                             (* ; "Edited  3-Apr-87 12:07 by jop")
+  [LAMBDA (STREAM STR RDTBL)                                 (* ; "Edited  3-Apr-87 12:07 by jop")
 
     (* ;; "Returns the width of for the current font/spacefactor in STREAM.")
 
@@ -383,7 +382,7 @@
         (FONTCREATE DEFAULTFONT NIL NIL NIL DEVICE NOERRORFLG))])
 
 (FONTCLASS
-  [LAMBDA (NAME FONTLIST CREATEFORDEVICES)               (* jds " 9-Sep-86 18:49")
+  [LAMBDA (NAME FONTLIST CREATEFORDEVICES)                   (* jds " 9-Sep-86 18:49")
 
     (* ;; "This builds D style font classes, which are datatypes containing entries for the various known devices.")
 
@@ -392,30 +391,30 @@
     (PROG (F FC FL)
           (SETQ FL FONTLIST)
           [SETQ FC (create FONTCLASS
-                          FONTCLASSNAME _ NAME
-                          PRETTYFONT# _ (OR (FIXP (pop FL))
+                          FONTCLASSNAME ← NAME
+                          PRETTYFONT# ← (OR (FIXP (pop FL))
                                             1)
-                          DISPLAYFD _ (AND (SETQ F (pop FL))
+                          DISPLAYFD ← (AND (SETQ F (pop FL))
                                            (FONTCREATE F NIL NIL NIL 'DISPLAY))
-                          PRESSFD _ (pop FL)
-                          INTERPRESSFD _ (pop FL)
-                          OTHERFDS _ (for FSPEC in FL
-                                        collect (OR (AND (LISTP FSPEC)
-                                                             (ATOM (CAR FSPEC))
-                                                             (CAR FSPEC))
-                                                        (ERROR "illegal font class specification"
-                                                               (LIST NAME FONTLIST))) 
+                          PRESSFD ← (pop FL)
+                          INTERPRESSFD ← (pop FL)
+                          OTHERFDS ← (for FSPEC in FL collect (OR (AND (LISTP FSPEC)
+                                                                       (ATOM (CAR FSPEC))
+                                                                       (CAR FSPEC))
+                                                                  (ERROR 
+                                                                   "illegal font class specification"
+                                                                         (LIST NAME FONTLIST))) 
                                                              (* ; 
-                                     "Copy the alist entry so it can be smashed in \COERCEFONTDESC")
-                                              (CONS (CAR FSPEC)
-                                                    (CAR (LISTP (CDR FSPEC]
+                                       "Copy the alist entry so it can be smashed in \COERCEFONTDESC")
+                                                            (CONS (CAR FSPEC)
+                                                                  (CAR (LISTP (CDR FSPEC]
           (for D inside CREATEFORDEVICES do (FONTCREATE FC NIL NIL NIL D))
           (RETURN FC])
 
 (FONTCLASSUNPARSE
-  [LAMBDA (FONTCLASS DEVICE FONT NOERRORFLG)         (* jds "24-Jan-86 11:58")
+  [LAMBDA (FONTCLASS DEVICE FONT NOERRORFLG)                 (* jds "24-Jan-86 11:58")
                                                              (* ; 
-                                "Given a font class, unparse it to a form that might be reparsable")
+                                  "Given a font class, unparse it to a form that might be reparsable")
     (APPEND (LIST (fetch (FONTCLASS FONTCLASSNAME) of FONTCLASS)
                   (fetch (FONTCLASS PRETTYFONT#) of FONTCLASS)
                   (FONTUNPARSE (ffetch (FONTCLASS DISPLAYFD) of FONTCLASS))
@@ -423,7 +422,7 @@
                   (FONTUNPARSE (ffetch (FONTCLASS INTERPRESSFD) of FONTCLASS)))
            (for X in (fetch (FONTCLASS OTHERFDS) of FONTCLASS)
               collect (LIST (CAR X)
-                                (FONTUNPARSE (CDR X])
+                            (FONTUNPARSE (CDR X])
 
 (FONTCLASSCOMPONENT
   [LAMBDA (FONTCLASS DEVICE FONT NOERRORFLG)                 (* ; "Edited  4-Jul-2025 10:32 by rmk")
@@ -590,17 +589,17 @@
     (* ;; "For the REMEMBER case,  dummy font descriptor completely fillled with a slug charsetinfo")
 
     (LET* ([FONTDESC (create FONTDESCRIPTOR
-                            FONTDEVICE _ DEVICE
-                            FONTFAMILY _ FAMILY
-                            FONTSIZE _ SIZE
-                            FONTFACE _ FACE
-                            \SFAscent _ SIZE
-                            \SFDescent _ 0
-                            \SFHeight _ SIZE
-                            ROTATION _ ROTATION
-                            FONTDEVICESPEC _ (LIST FAMILY SIZE FACE ROTATION DEVICE)
-                            FONTCHARENCODING _ 'MCCS
-                            FONTAVGCHARWIDTH _ (FIXR (FTIMES SIZE 0.75]
+                            FONTDEVICE ← DEVICE
+                            FONTFAMILY ← FAMILY
+                            FONTSIZE ← SIZE
+                            FONTFACE ← FACE
+                            \SFAscent ← SIZE
+                            \SFDescent ← 0
+                            \SFHeight ← SIZE
+                            ROTATION ← ROTATION
+                            FONTDEVICESPEC ← (LIST FAMILY SIZE FACE ROTATION DEVICE)
+                            FONTCHARENCODING ← 'MCCS
+                            FONTAVGCHARWIDTH ← (FIXR (FTIMES SIZE 0.75]
            (SLUGCSINFO (\BUILDSLUGCSINFO FONTDESC)))
           (if CHARSET
               then (\SETCHARSETINFO FONTDESC CHARSET SLUGCSINFO)
@@ -1033,11 +1032,11 @@
     (CL:WHEN (FONTP BASE)
         (SETQ BASE (FONTPROP BASE 'SPEC)))
     (create FONTSPEC
-           FSFAMILY _ (OR FAMILY (fetch (FONTSPEC FSFAMILY) of BASE))
-           FSSIZE _ (OR SIZE (fetch (FONTSPEC FSSIZE) of BASE))
-           FSFACE _ (OR FACE (fetch (FONTSPEC FSFACE) of BASE))
-           FSROTATION _ (OR ROTATION (fetch (FONTSPEC FSROTATION) of BASE))
-           FSDEVICE _ (OR DEVICE (fetch (FONTSPEC FSDEVICE) of BASE])
+           FSFAMILY ← (OR FAMILY (fetch (FONTSPEC FSFAMILY) of BASE))
+           FSSIZE ← (OR SIZE (fetch (FONTSPEC FSSIZE) of BASE))
+           FSFACE ← (OR FACE (fetch (FONTSPEC FSFACE) of BASE))
+           FSROTATION ← (OR ROTATION (fetch (FONTSPEC FSROTATION) of BASE))
+           FSDEVICE ← (OR DEVICE (fetch (FONTSPEC FSDEVICE) of BASE])
 )
 (DEFINEQ
 
@@ -1218,11 +1217,11 @@
                                       then 'MCCS
                                     else (fetch (FONTDESCRIPTOR FONTFAMILY) of FONT])
         (SPEC (create FONTSPEC
-                     FSFAMILY _ (ffetch FONTFAMILY of FONT)
-                     FSSIZE _ (ffetch FONTSIZE of FONT)
-                     FSFACE _ (COPY (ffetch FONTFACE of FONT))
-                     FSROTATION _ (ffetch ROTATION of FONT)
-                     FSDEVICE _ (ffetch FONTDEVICE of FONT)))
+                     FSFAMILY ← (ffetch FONTFAMILY of FONT)
+                     FSSIZE ← (ffetch FONTSIZE of FONT)
+                     FSFACE ← (COPY (ffetch FONTFACE of FONT))
+                     FSROTATION ← (ffetch ROTATION of FONT)
+                     FSDEVICE ← (ffetch FONTDEVICE of FONT)))
         (DEVICESPEC                                          (* ; 
                     "DEVICE fields are for communicating coercions to the particular printing device")
                     (CL:IF (ffetch FONTDEVICESPEC of FONT)
@@ -1250,7 +1249,7 @@
                                      (fetch (FONTSPEC FSFACE) of (ffetch FONTDEVICESPEC of FONT))
                                      (ffetch FONTFACE of FONT))))
         (SCALE (ffetch FONTSCALE of FONT))
-        (CHARSETS (for CS CSINFO (CSVECTOR _ (ffetch FONTCHARSETVECTOR of FONT)) from 0 to 
+        (CHARSETS (for CS CSINFO (CSVECTOR ← (ffetch FONTCHARSETVECTOR of FONT)) from 0 to 
                                                                                           \MAXCHARSET
                      eachtime (SETQ CSINFO (\GETBASEPTR CSVECTOR (UNFOLD CS 2))) when CSINFO
                      unless (fetch (CHARSETINFO CSSLUGP) of CSINFO) collect CS))
@@ -1551,7 +1550,8 @@
                  NEWDESCENT])
 
 (MOVEFONTCHARS
-  [LAMBDA (PAIRS DESTFONT DEFAULTSOURCEFONT)                 (* ; "Edited  4-Sep-2025 11:07 by rmk")
+  [LAMBDA (PAIRS DESTFONT DEFAULTSOURCEFONT)                 (* ; "Edited 26-Feb-2026 16:59 by rmk")
+                                                             (* ; "Edited  4-Sep-2025 11:07 by rmk")
                                                              (* ; "Edited 30-Aug-2025 23:20 by rmk")
                                                              (* ; "Edited 26-Aug-2025 23:10 by rmk")
                                                              (* ; "Edited 25-Aug-2025 09:12 by rmk")
@@ -1578,27 +1578,37 @@
                                     (FONTCREATE DEFAULTSOURCEFONT NIL NIL NIL (FONTPROP DESTFONT
                                                                                      'DEVICE))
                                     DESTFONT))
-        (LET (PAIRINFO)
+        [if (HARRAYP PAIRS)
+            then 
+                 (* ;; "E.g. *UNICODETOMCCS*")
 
-             (* ;; "Fix/check arguments, and expand out the information for all the source characters, so there is no toe-stepping if there are overlaps.")
+                 [MAPHASH PAIRS (FUNCTION (LAMBDA (VAL KEY)
+                                            (CL:UNLESS (EQ VAL KEY)
+                                                (\MOVEFONTCHAR (\MOVEFONTCHARS.SOURCEDATA KEY 
+                                                                      DEFAULTSOURCEFONT)
+                                                       VAL DESTFONT))]
+          else (LET (PAIRINFO)
 
-             (SETQ PAIRINFO (for P S DCODE in PAIRS collect (CL:WHEN (SMALLP P)
-                                                                (SETQ P (LIST P P)))
-                                                          (SETQ DCODE (CADR P))
-                                                          (CL:UNLESS (CHARCODEP DCODE)
-                                                              (SETQ DCODE (CHARCODE.DECODE DCODE)))
-                                                          (\INSURECHARSETINFO DESTFONT (\CHARSET
-                                                                                        DCODE))
-                                                          (LIST (\MOVEFONTCHARS.SOURCEDATA
-                                                                 (CAR P)
-                                                                 DEFAULTSOURCEFONT)
-                                                                DCODE)))
+                    (* ;; "Fix/check arguments, and expand out the information for all the source characters, so there is no toe-stepping if there are overlaps.")
 
-             (* ;; "Install source character information into the destination font.  ")
+                    (SETQ PAIRINFO (for P S DCODE in PAIRS collect (CL:WHEN (SMALLP P)
+                                                                       (SETQ P (LIST P P)))
+                                                                 (SETQ DCODE (CADR P))
+                                                                 (CL:UNLESS (CHARCODEP DCODE)
+                                                                     (SETQ DCODE (CHARCODE.DECODE
+                                                                                  DCODE)))
+                                                                 (\INSURECHARSETINFO DESTFONT
+                                                                        (\CHARSET DCODE))
+                                                                 (LIST (\MOVEFONTCHARS.SOURCEDATA
+                                                                        (CAR P)
+                                                                        DEFAULTSOURCEFONT)
+                                                                       DCODE)))
 
-             (for P in PAIRINFO do (\MOVEFONTCHAR (CAR P)
-                                          (CADR P)
-                                          DESTFONT))))
+                    (* ;; "Install source character information into the destination font.  ")
+
+                    (for P in PAIRINFO do (\MOVEFONTCHAR (CAR P)
+                                                 (CADR P)
+                                                 DESTFONT])
     DESTFONT])
 
 (\MOVEFONTCHAR
@@ -1639,7 +1649,7 @@
              then (\MAKESLUGCHAR DTHINCODE DCSINFO)
            else (CL:WHEN (fetch (CHARSETINFO CSSLUGP) of DCSINFO)
                                                              (* ; "No longer a slug csinfo")
-                    (SETQ DCSINFO (create CHARSETINFO copying DCSINFO CSSLUGP _ NIL CSCOMPLETEP _ NIL
+                    (SETQ DCSINFO (create CHARSETINFO copying DCSINFO CSSLUGP ← NIL CSCOMPLETEP ← NIL
                                          ))
                     (\SETCHARSETINFO DFONT (\CHARSET DCODE)
                            DCSINFO))
@@ -1696,23 +1706,23 @@
                  then (SETQ SFONT (MKLIST SFONT))            (* ; 
                                                 "Make it look like a fontspec, then fill in defaults")
                       [SETQ SFONT (FONTCREATE (create FONTSPEC
-                                                     FSFAMILY _ (OR (fetch (FONTSPEC FSFAMILY)
+                                                     FSFAMILY ← (OR (fetch (FONTSPEC FSFAMILY)
                                                                        of SFONT)
                                                                     (FONTPROP DEFAULTSOURCEFONT
                                                                            'FAMILY))
-                                                     FSSIZE _ (OR (fetch (FONTSPEC FSSIZE)
+                                                     FSSIZE ← (OR (fetch (FONTSPEC FSSIZE)
                                                                      of SFONT)
                                                                   (FONTPROP DEFAULTSOURCEFONT
                                                                          'SIZE))
-                                                     FSFACE _ (OR (fetch (FONTSPEC FSFACE)
+                                                     FSFACE ← (OR (fetch (FONTSPEC FSFACE)
                                                                      of SFONT)
                                                                   (FONTPROP DEFAULTSOURCEFONT
                                                                          'FACE))
-                                                     FSROTATION _ (OR (fetch (FONTSPEC FSROTATION)
+                                                     FSROTATION ← (OR (fetch (FONTSPEC FSROTATION)
                                                                          of SFONT)
                                                                       (FONTPROP DEFAULTSOURCEFONT
                                                                              'ROTATION))
-                                                     FSDEVICE _ (OR (fetch (FONTSPEC FSDEVICE)
+                                                     FSDEVICE ← (OR (fetch (FONTSPEC FSDEVICE)
                                                                        of SFONT)
                                                                     (FONTPROP DEFAULTSOURCEFONT
                                                                            'DEVICE]
@@ -1991,7 +2001,7 @@
                          ((STREAMP DEVICE)
                           (IMAGESTREAMTYPE DEVICE))
                          [(NULL DEVICE)
-                          (CAR (find I DEXTS (EXT _ (LISTGET FILENAMELIST 'EXTENSION)) in 
+                          (CAR (find I DEXTS (EXT ← (LISTGET FILENAMELIST 'EXTENSION)) in 
                                                                                      IMAGESTREAMTYPES
                                   suchthat (thereis E inside (FONTDEVICEPROP (CAR I)
                                                                     'FONTEXTENSIONS)
@@ -2001,11 +2011,11 @@
                          (T DEVICE)))
          (CL:WHEN (AND FAMILY SIZE FACE DEVICE)
                 (create FONTSPEC
-                       FSFAMILY _ FAMILY
-                       FSSIZE _ SIZE
-                       FSFACE _ FACE
-                       FSROTATION _ 0
-                       FSDEVICE _ DEVICE])
+                       FSFAMILY ← FAMILY
+                       FSSIZE ← SIZE
+                       FSFACE ← FACE
+                       FSROTATION ← 0
+                       FSDEVICE ← DEVICE])
 )
 (DEFINEQ
 
@@ -2046,11 +2056,11 @@
                     (FAMILY (SETQ FAMILY VAL))
                     (SIZE (SETQ SIZE VAL))
                     (FACE (SETQ FACE (\FONTFACE VAL)))
-                    (WEIGHT (SETQ FACE (create FONTFACE using FACE WEIGHT _ VAL)))
-                    (SLOPE (SETQ FACE (create FONTFACE using FACE SLOPE _ VAL)))
-                    (EXPANSION (SETQ FACE (create FONTFACE using FACE EXPANSION _ VAL)))
-                    (BACKCOLOR (SETQ FACE (create FONTFACE using FACE BACKCOLOR _ VAL)))
-                    (FORECOLOR (SETQ FACE (create FONTFACE using FACE FORECOLOR _ VAL)))
+                    (WEIGHT (SETQ FACE (create FONTFACE using FACE WEIGHT ← VAL)))
+                    (SLOPE (SETQ FACE (create FONTFACE using FACE SLOPE ← VAL)))
+                    (EXPANSION (SETQ FACE (create FONTFACE using FACE EXPANSION ← VAL)))
+                    (BACKCOLOR (SETQ FACE (create FONTFACE using FACE BACKCOLOR ← VAL)))
+                    (FORECOLOR (SETQ FACE (create FONTFACE using FACE FORECOLOR ← VAL)))
                     (ROTATION (SETQ ROTATION VAL))
                     (DEVICE (SETQ DEVICE VAL))
                     (NOERROR (SETQ NOERROR VAL))
@@ -2064,11 +2074,11 @@
                                   (FAMILY (SETQ FAMILY VAL))
                                   (SIZE (SETQ SIZE VAL))
                                   (FACE (SETQ FACE (\FONTFACE VAL)))
-                                  (WEIGHT (SETQ FACE (create FONTFACE using FACE WEIGHT _ VAL)))
-                                  (SLOPE (SETQ FACE (create FONTFACE using FACE SLOPE _ VAL)))
-                                  (EXPANSION (SETQ FACE (create FONTFACE using FACE EXPANSION _ VAL)))
-                                  (BACKCOLOR (SETQ FACE (create FONTFACE using FACE BACKCOLOR _ VAL)))
-                                  (FORECOLOR (SETQ FACE (create FONTFACE using FACE FORECOLOR _ VAL)))
+                                  (WEIGHT (SETQ FACE (create FONTFACE using FACE WEIGHT ← VAL)))
+                                  (SLOPE (SETQ FACE (create FONTFACE using FACE SLOPE ← VAL)))
+                                  (EXPANSION (SETQ FACE (create FONTFACE using FACE EXPANSION ← VAL)))
+                                  (BACKCOLOR (SETQ FACE (create FONTFACE using FACE BACKCOLOR ← VAL)))
+                                  (FORECOLOR (SETQ FACE (create FONTFACE using FACE FORECOLOR ← VAL)))
                                   (ROTATION (SETQ ROTATION VAL))
                                   (DEVICE (SETQ DEVICE VAL))
                                   (NOERROR (SETQ NOERROR VAL))
@@ -2088,7 +2098,7 @@
                     else (FONTCREATE FAMILY SIZE FACE ROTATION DEVICE NOERROR])
 
 (FONTP
-  [LAMBDA (X)                                            (* rmk%: "13-Sep-84 09:04")
+  [LAMBDA (X)                                                (* rmk%: "13-Sep-84 09:04")
                                                              (* ; "is X a FONTDESCRIPTOR?")
     (COND
        ((OR (type? FONTDESCRIPTOR X)
@@ -2117,7 +2127,7 @@
 
                   (* ;; "Seems harmless to include a 0 rotation--any caller would have expected that something might appear there.")
                                                              (* (create FONTSPEC using SPEC FSFACE 
-                                                             _ FACE FSDEVICE _ NIL))
+                                                             ← FACE FSDEVICE ← NIL))
                   (LIST (fetch (FONTSPEC FSFAMILY) of SPEC)
                         (fetch (FONTSPEC FSSIZE) of SPEC)
                         FACE
@@ -2142,34 +2152,33 @@
                                                                              DEVICE])
 
 (\STREAMCHARWIDTH
-  [LAMBDA (CHARCODE STREAM TTBL)                         (* JonL " 8-NOV-83 03:31")
+  [LAMBDA (CHARCODE STREAM TTBL)                             (* JonL " 8-NOV-83 03:31")
 
     (* ;; "Returns the width that the printed representation of CHARCODE would occupy if printed on STREAM, allowing for the various escape sequences.  Used by \ECHOCHAR")
 
     (SETQ CHARCODE (LOGAND CHARCODE \CHARMASK))
     ((LAMBDA (WIDTHSVECTOR)
 
-       (* ;; "Note in following that if the DDWIDTHSCACHE exists and has a 0 entry for some character, that may someday mean that the character's glyph simply isn't loaded;  e.g., it may want #^A")
+       (* ;; "Note in following that if the DDWIDTHSCACHE exists and has a 0 entry for some character, that may someday mean that the character's glyph simply isn't loaded;  e.g., it may want #↑A")
 
        (SETQ WIDTHSVECTOR (OR (AND (DISPLAYSTREAMP STREAM)
                                    (SETQ WIDTHSVECTOR (ffetch IMAGEDATA of STREAM))
                                    (ffetch DDWIDTHSCACHE of WIDTHSVECTOR))
                               \UNITWIDTHSVECTOR))
-       (SELECTC (fetch CCECHO of (\SYNCODE (fetch (TERMTABLEP TERMSA)
-                                                      of (OR (TERMTABLEP TTBL)
-                                                                 \PRIMTERMTABLE))
-                                                CHARCODE))
+       (SELECTC (fetch CCECHO of (\SYNCODE (fetch (TERMTABLEP TERMSA) of (OR (TERMTABLEP TTBL)
+                                                                             \PRIMTERMTABLE))
+                                        CHARCODE))
            (INDICATE.CCE ([LAMBDA (CC)
-                            (IPLUS (if (IGEQ CHARCODE (CHARCODE %#^@))
-                                       then              (* ; 
-                                          "A META charcode -- implies that the 8th bit is non-zero")
-                                             (SETQ CC (LOADBYTE CHARCODE 0 7))
-                                             (\FGETWIDTH WIDTHSVECTOR (CHARCODE %#))
+                            (IPLUS (if (IGEQ CHARCODE (CHARCODE %#↑@))
+                                       then                  (* ; 
+                                            "A META charcode -- implies that the 8th bit is non-zero")
+                                            (SETQ CC (LOADBYTE CHARCODE 0 7))
+                                            (\FGETWIDTH WIDTHSVECTOR (CHARCODE %#))
                                      else 0)
                                    (if (ILESSP CC (CHARCODE SPACE))
-                                       then              (* ; "A CONTROL charcode")
-                                             (add CC (CONSTANT (LLSH 1 6)))
-                                             (\FGETWIDTH WIDTHSVECTOR (CHARCODE ^))
+                                       then                  (* ; "A CONTROL charcode")
+                                            (add CC (CONSTANT (LLSH 1 6)))
+                                            (\FGETWIDTH WIDTHSVECTOR (CHARCODE ↑))
                                      else 0)
                                    (\FGETWIDTH WIDTHSVECTOR CC]
                           CHARCODE))
@@ -2182,18 +2191,16 @@
                                           TABWIDTH)
                                          (SETQ TABWIDTH (UNFOLD SPACEWIDTH 8))
                                          [add NEWXPOSITON (SETQ TABWIDTH
-                                                               (IDIFFERENCE
-                                                                TABWIDTH
-                                                                (IMOD (IDIFFERENCE NEWXPOSITON
-                                                                             (DSPLEFTMARGIN NIL 
-                                                                                    STREAM))
-                                                                      TABWIDTH]
-                                         (RETURN (if (IGREATERP NEWXPOSITON (DSPRIGHTMARGIN
-                                                                                 NIL STREAM))
-                                                     then 
-                                                             (* ; 
-                                                           "tab was past rightmargin, force cr.")
-                                                           NIL
+                                                           (IDIFFERENCE TABWIDTH
+                                                                  (IMOD (IDIFFERENCE NEWXPOSITON
+                                                                               (DSPLEFTMARGIN NIL 
+                                                                                      STREAM))
+                                                                        TABWIDTH]
+                                         (RETURN (if (IGREATERP NEWXPOSITON (DSPRIGHTMARGIN NIL 
+                                                                                   STREAM))
+                                                     then    (* ; 
+                                                             "tab was past rightmargin, force cr.")
+                                                          NIL
                                                    else TABWIDTH))))
                               (\FGETWIDTH WIDTHSVECTOR CHARCODE)))
            (REAL.CCE (SELECTC CHARCODE
@@ -2282,10 +2289,10 @@
                                  (fetch (FONTDESCRIPTOR FONTAVGCHARWIDTH) of FONT)))
              (replace (FONTDESCRIPTOR FONTSLUGWIDTH) of FONT with SLUGWIDTH))
          (SETQ CSINFO (create CHARSETINFO
-                             CHARSETASCENT _ (IDIFFERENCE SLUGHEIGHT DESCENT)
-                             CHARSETDESCENT _ DESCENT
-                             CSSLUGP _ T
-                             CSCOMPLETEP _ T))
+                             CHARSETASCENT ← (IDIFFERENCE SLUGHEIGHT DESCENT)
+                             CHARSETDESCENT ← DESCENT
+                             CSSLUGP ← T
+                             CSCOMPLETEP ← T))
          (SETQ WIDTHS (fetch (CHARSETINFO WIDTHS) of CSINFO))
          (for I from 0 to \MAXTHINCHAR do (\FSETWIDTH WIDTHS I SLUGWIDTH))
          (replace IMAGEWIDTHS OF CSINFO with WIDTHS)
@@ -2300,7 +2307,7 @@
          CSINFO])
 
 (\FONTSYMBOL
-  [LAMBDA (X ElseReturnXFlg)                             (* ; "Edited 28-Jul-88 11:59 by rmk:")
+  [LAMBDA (X ElseReturnXFlg)                                 (* ; "Edited 28-Jul-88 11:59 by rmk:")
                                                              (* ; "Edited 24-Mar-87 14:32 by FS")
 
     (* ;; "Return a symbol in IL package and is in uppercase.  Currently the function IL:U-CASE is believed to do this, but if it changes, this is the font hook.  ElseReturnXFlg is if you want an IL symbol if X is a symbol or string, otherwise just X.")
@@ -2314,7 +2321,7 @@
        (T (ERROR "Want an IL symbol"])
 
 (\DEVICESYMBOL
-  [LAMBDA (X ElseReturnXFlg)                             (* ; "Edited  7-Oct-88 20:07 by rmk:")
+  [LAMBDA (X ElseReturnXFlg)                                 (* ; "Edited  7-Oct-88 20:07 by rmk:")
                                                              (* ; "Edited 28-Jul-88 14:43 by rmk:")
                                                              (* ; "Edited 24-Mar-87 14:33 by FS")
 
@@ -2322,8 +2329,7 @@
 
     (LET ((STRM (\GETSTREAM X 'OUTPUT T)))
          (COND
-            (STRM (fetch (IMAGEOPS IMFONTCREATE) of (fetch (STREAM IMAGEOPS) of
-                                                                                         STRM)))
+            (STRM (fetch (IMAGEOPS IMFONTCREATE) of (fetch (STREAM IMAGEOPS) of STRM)))
             ((NULL X)
              'DISPLAY)
             (T                                               (* ; "because its used in ASSOC.")
@@ -2451,26 +2457,26 @@
                            (EQ SLOPE 'REGULAR)
                            (EQ EXPANSION 'REGULAR))          (* ; "BRR")
                       (CONSTANT (create FONTFACE
-                                       WEIGHT _ 'BOLD]
+                                       WEIGHT ← 'BOLD]
                      [(AND (EQ WEIGHT 'MEDIUM)
                            (EQ SLOPE 'ITALIC)
                            (EQ EXPANSION 'REGULAR))          (* ; "MIR")
                       (CONSTANT (create FONTFACE
-                                       SLOPE _ 'ITALIC]
+                                       SLOPE ← 'ITALIC]
                      [(AND (EQ WEIGHT 'BOLD)
                            (EQ SLOPE 'ITALIC)
                            (EQ EXPANSION 'REGULAR))          (* ; "BIR")
                       (CONSTANT (create FONTFACE
-                                       WEIGHT _ 'BOLD
-                                       SLOPE _ 'ITALIC]
+                                       WEIGHT ← 'BOLD
+                                       SLOPE ← 'ITALIC]
                      (T                                      (* ; "Otherwise, cons up")
                         (create FONTFACE
-                               WEIGHT _ WEIGHT
-                               SLOPE _ SLOPE
-                               EXPANSION _ EXPANSION])
+                               WEIGHT ← WEIGHT
+                               SLOPE ← SLOPE
+                               EXPANSION ← EXPANSION])
 
 (\FONTFACE.COLOR
-  [LAMBDA (FACE NOERRORFLG DEV)                          (* ; "Edited 28-Jul-88 14:51 by rmk:")
+  [LAMBDA (FACE NOERRORFLG DEV)                              (* ; "Edited 28-Jul-88 14:51 by rmk:")
                                                              (* ; "Edited 28-Jul-88 13:09 by rmk:")
                                                              (* ; "Edited 24-Mar-87 17:03 by FS")
 
@@ -2501,32 +2507,32 @@
                            [SETQ ANSWER (SELECTQ BWFACE
                                             ((* ***) 
                                                  (CONSTANT (create FONTFACE
-                                                                  WEIGHT _ '*
-                                                                  SLOPE _ '*
-                                                                  EXPANSION _ '*)))
+                                                                  WEIGHT ← '*
+                                                                  SLOPE ← '*
+                                                                  EXPANSION ← '*)))
                                             ((NIL MRR STANDARD NNN) 
                                                  (CONSTANT (create FONTFACE)))
                                             ((ITALIC MIR) 
                                                  (CONSTANT (create FONTFACE
-                                                                  SLOPE _ 'ITALIC)))
+                                                                  SLOPE ← 'ITALIC)))
                                             ((BOLD BRR) 
                                                  (CONSTANT (create FONTFACE
-                                                                  WEIGHT _ 'BOLD)))
+                                                                  WEIGHT ← 'BOLD)))
                                             ((BOLDITALIC BIR) 
                                                  (CONSTANT (create FONTFACE
-                                                                  WEIGHT _ 'BOLD
-                                                                  SLOPE _ 'ITALIC)))
+                                                                  WEIGHT ← 'BOLD
+                                                                  SLOPE ← 'ITALIC)))
                                             (create FONTFACE
-                                                   WEIGHT _ (SELCHARQ (NTHCHARCODE FACE 1)
+                                                   WEIGHT ← (SELCHARQ (NTHCHARCODE FACE 1)
                                                                  (M 'MEDIUM)
                                                                  (B 'BOLD)
                                                                  (L 'LIGHT)
                                                                  (GO ERROR))
-                                                   SLOPE _ (SELCHARQ (NTHCHARCODE FACE 2)
+                                                   SLOPE ← (SELCHARQ (NTHCHARCODE FACE 2)
                                                                 (R 'REGULAR)
                                                                 (I 'ITALIC)
                                                                 (GO ERROR))
-                                                   EXPANSION _ (SELCHARQ (NTHCHARCODE FACE 3)
+                                                   EXPANSION ← (SELCHARQ (NTHCHARCODE FACE 3)
                                                                     (R 'REGULAR)
                                                                     (C 'COMPRESSED)
                                                                     (E 'EXPANDED)
@@ -2547,12 +2553,10 @@
                                                                         -1)
                                                           BITSPERPIXEL))
                                                              (* ; 
-                                                         "COPY ANSWER to avoid smashing constants.")
+                                                           "COPY ANSWER to avoid smashing constants.")
                                    (SETQ ANSWER (COPY ANSWER))
-                                   (replace (FONTFACE BACKCOLOR) of ANSWER with BACKCOLOR
-                                          )
-                                   (replace (FONTFACE FORECOLOR) of ANSWER with FORECOLOR
-                                          )))
+                                   (replace (FONTFACE BACKCOLOR) of ANSWER with BACKCOLOR)
+                                   (replace (FONTFACE FORECOLOR) of ANSWER with FORECOLOR)))
                            ANSWER)
                           (T (GO ERROR]
 
@@ -2568,10 +2572,9 @@
                                 (NULL (fetch (FONTFACE COLOR) of ANSWER)))
                            (SETQ FACE (COPY FACE))
                            (replace (FONTFACE BACKCOLOR) of ANSWER with 0)
-                           (replace (FONTFACE FORECOLOR) of ANSWER with
-                                                                           (MAXIMUMCOLOR (
+                           (replace (FONTFACE FORECOLOR) of ANSWER with (MAXIMUMCOLOR (
                                                                                 \DISPLAYSTREAMTYPEBPP
-                                                                                          DEV)))
+                                                                                       DEV)))
                            ANSWER)
                           (T ANSWER)))
           (RETURN ANSWER)
@@ -2645,11 +2648,11 @@
                                                         (EQ DEVICE '*]
                                           (push $$COLLECT
                                                 (create FONTSPEC
-                                                       FSFAMILY _ FM
-                                                       FSSIZE _ S
-                                                       FSFACE _ FC
-                                                       FSROTATION _ R
-                                                       FSDEVICE _ D)))])
+                                                       FSFAMILY ← FM
+                                                       FSSIZE ← S
+                                                       FSFACE ← FC
+                                                       FSROTATION ← R
+                                                       FSDEVICE ← D)))])
                (CL:WHEN CHECKFILESTOO?                       (* ; 
                                                              "apply the device font lookup function.")
                    (SETQ FILEFONTS (SGETMULTI \FONTSAVAILABLEFILECACHE FAMILY SIZE FACE ROTATION 
@@ -2706,7 +2709,7 @@
                 (SETQ DEVICE (fetch (FONTSPEC FSDEVICE) of FONTSPEC))
                 (SETQ VAL (OR (CAR (FONTFILES (CL:IF (MEMB (fetch (FONTSPEC FSROTATION) of FONTSPEC)
                                                            '(90 270))
-                                                  (create FONTSPEC using FONTSPEC FSROTATION _ 0)
+                                                  (create FONTSPEC using FONTSPEC FSROTATION ← 0)
                                                   FONTSPEC)))
                               (APPLY* (OR (CAR (GETMULTI IMAGESTREAMTYPES DEVICE 'FONTEXISTS?))
                                           (CAR (GETMULTI IMAGESTREAMTYPES DEVICE 'FONTSAVAILABLE))
@@ -2740,7 +2743,7 @@
 
     (LET (FAMILY SIZE FACE ROTATION DEVICE)
          (SPREADFONTSPEC FONTSPEC)
-         (for FILEPATTERN FILEDIR FONTSFOUND (FILING.ENUMERATION.DEPTH _ 1)
+         (for FILEPATTERN FILEDIR FONTSFOUND (FILING.ENUMERATION.DEPTH ← 1)
             in [\FONTFILENAMES FAMILY SIZE FACE DEVICE (MKLIST (FONTDEVICEPROP DEVICE 
                                                                       'FONTEXTENSIONS]
             do (SETQ FILEDIR (FILENAMEFIELD FILEPATTERN 'DIRECTORY))
@@ -2829,7 +2832,7 @@
         [SETQ DIRLST (MKLIST (FONTDEVICEPROP DEVICE 'FONTDIRECTORIES])
     (CL:UNLESS EXTLST
         [SETQ EXTLST (MKLIST (FONTDEVICEPROP DEVICE 'FONTEXTENSIONS])
-    (for FILEPATTERN FILEDIR FONTSFOUND (FILING.ENUMERATION.DEPTH _ 1)
+    (for FILEPATTERN FILEDIR FONTSFOUND (FILING.ENUMERATION.DEPTH ← 1)
        IN (\FONTFILENAMES FAMILY SIZE FACE DEVICE EXTLST)
        do (SETQ FILEDIR (FILENAMEFIELD FILEPATTERN 'DIRECTORY))
           (SETQ FILEDIR (CL:IF FILEDIR
@@ -2930,10 +2933,10 @@
     (CL:UNLESS COLOR
         (SETQ COLOR (COPY (fetch (FONTFACE COLOR) of BASE))))
     (create FONTFACE
-           WEIGHT _ WEIGHT
-           SLOPE _ SLOPE
-           EXPANSION _ EXPANSION
-           COLOR _ COLOR])
+           WEIGHT ← WEIGHT
+           SLOPE ← SLOPE
+           EXPANSION ← EXPANSION
+           COLOR ← COLOR])
 
 (FONTFACETOATOM
   [LAMBDA (FACE NOERROR)                                     (* ; "Edited 22-Jan-2026 08:13 by rmk")
@@ -3043,7 +3046,7 @@
                           (FONTHASLEFTKERNS FLAG)            (* ; 
                                         "T if at least one character set has an entry for left kerns")
                           (FONTEXTRAFIELD2 POINTER))
-                         FONTCHARSETVECTOR _ (\CREATEFONTCHARSETVECTOR)
+                         FONTCHARSETVECTOR ← (\CREATEFONTCHARSETVECTOR)
                          (INIT (DEFPRINT 'FONTDESCRIPTOR (FUNCTION FONTDESCRIPTOR.DEFPRINT))))
 
 (RECORD FONTFACE (WEIGHT SLOPE EXPANSION)
@@ -3068,7 +3071,7 @@
                                                       (LIST NIL NIL]
                                            (RPLACA (CDR (CDDDR DATUM))
                                                   NEWVALUE]
-                 WEIGHT _ 'MEDIUM SLOPE _ 'REGULAR EXPANSION _ 'REGULAR (TYPE? LISTP))
+                 WEIGHT ← 'MEDIUM SLOPE ← 'REGULAR EXPANSION ← 'REGULAR (TYPE? LISTP))
 
 (DATATYPE CHARSETINFO (WIDTHS                                (* ; "The advance-width of each character, an array indexed by charcode.  Usually the same as the imagewidth, but can differ for accents, kerns kerns.  This is what should be used for stringwidth calculations.")
                              (CSSLUGP FLAG)                  (* ; "True if this is a slug charset")
@@ -3087,9 +3090,9 @@
                              LEFTKERN CSINFOPROPS            (* ; "Alist of extra properties")
                              (CHARSETNO WORD))               (* ; 
                                "The number of this CSINFO in its font--MAX.SMALLP if not initialized")
-                      WIDTHS _ (\CREATECSINFOELEMENT)
-                      OFFSETS _ (\CREATECSINFOELEMENT)
-                      CHARSETNO _ MAX.SMALLP)
+                      WIDTHS ← (\CREATECSINFOELEMENT)
+                      OFFSETS ← (\CREATECSINFOELEMENT)
+                      CHARSETNO ← MAX.SMALLP)
 
 (RECORD FONTSPEC (FSFAMILY FSSIZE FSFACE FSROTATION FSDEVICE)
                  (TYPE? LISTP))
@@ -3489,15 +3492,15 @@
                                          then (APPLY* FN FONTSPEC)
                                        else (APPLY FN FONTSPEC)))))
            else (SETQ FONT (create FONTDESCRIPTOR
-                                  FONTFAMILY _ (fetch (FONTSPEC FSFAMILY) of FONTSPEC)
-                                  FONTSIZE _ (fetch (FONTSPEC FSSIZE) of FONTSPEC)
-                                  FONTFACE _ (fetch (FONTSPEC FSFACE) of FONTSPEC)
-                                  ROTATION _ (fetch (FONTSPEC FSROTATION) of FONTSPEC)
-                                  FONTDEVICE _ (fetch (FONTSPEC FSDEVICE) of FONTSPEC)
-                                  \SFAscent _ 0
-                                  \SFDescent _ 0
-                                  \SFHeight _ 0
-                                  FONTDEVICESPEC _ (create FONTSPEC using FONTSPEC]
+                                  FONTFAMILY ← (fetch (FONTSPEC FSFAMILY) of FONTSPEC)
+                                  FONTSIZE ← (fetch (FONTSPEC FSSIZE) of FONTSPEC)
+                                  FONTFACE ← (fetch (FONTSPEC FSFACE) of FONTSPEC)
+                                  ROTATION ← (fetch (FONTSPEC FSROTATION) of FONTSPEC)
+                                  FONTDEVICE ← (fetch (FONTSPEC FSDEVICE) of FONTSPEC)
+                                  \SFAscent ← 0
+                                  \SFDescent ← 0
+                                  \SFHeight ← 0
+                                  FONTDEVICESPEC ← (create FONTSPEC using FONTSPEC]
          FONT])
 
 (\CREATECHARSET
@@ -3626,9 +3629,9 @@
   [LAMBDA (CSINFO FIRSTCHAR LASTCHAR)                        (* ; "Edited  3-Aug-2025 20:59 by rmk")
                                                              (* ; "Edited  1-Aug-2025 23:50 by rmk")
                                                              (* AJB " 6-Dec-85 14:42")
-    (for CHARCODE LEFT RIGHT SLUGCHAROFFSET SLUGCHARWIDTH (OFFSETS _ (fetch (CHARSETINFO OFFSETS)
+    (for CHARCODE LEFT RIGHT SLUGCHAROFFSET SLUGCHARWIDTH (OFFSETS ← (fetch (CHARSETINFO OFFSETS)
                                                                         of CSINFO))
-         (WIDTHS _ (fetch (CHARSETINFO WIDTHS) of CSINFO)) from 0 to SLUGCHARINDEX
+         (WIDTHS ← (fetch (CHARSETINFO WIDTHS) of CSINFO)) from 0 to SLUGCHARINDEX
        first (SETQ SLUGCHAROFFSET (\FGETOFFSET OFFSETS SLUGCHARINDEX))
              (SETQ SLUGCHARWIDTH (IDIFFERENCE (\FGETOFFSET OFFSETS (ADD1 SLUGCHARINDEX))
                                         SLUGCHAROFFSET))
@@ -3687,15 +3690,15 @@
     (* ;; "FONTEXISTS? has determined that there is at least one source file for this font, so the font exists in at least some character sets, d FONTCREATED1 tells us that the font descriptor is not yet availabe.")
 
     (create FONTDESCRIPTOR
-           FONTFAMILY _ (fetch (FONTSPEC FSFAMILY) of FONTSPEC)
-           FONTSIZE _ (fetch (FONTSPEC FSSIZE) of FONTSPEC)
-           FONTFACE _ (fetch (FONTSPEC FSFACE) of FONTSPEC)
-           ROTATION _ (fetch (FONTSPEC FSROTATION) of FONTSPEC)
-           FONTDEVICE _ (fetch (FONTSPEC FSDEVICE) of FONTSPEC)
-           \SFAscent _ 0
-           \SFDescent _ 0
-           \SFHeight _ 0
-           FONTDEVICESPEC _ (create FONTSPEC using FONTSPEC])
+           FONTFAMILY ← (fetch (FONTSPEC FSFAMILY) of FONTSPEC)
+           FONTSIZE ← (fetch (FONTSPEC FSSIZE) of FONTSPEC)
+           FONTFACE ← (fetch (FONTSPEC FSFACE) of FONTSPEC)
+           ROTATION ← (fetch (FONTSPEC FSROTATION) of FONTSPEC)
+           FONTDEVICE ← (fetch (FONTSPEC FSDEVICE) of FONTSPEC)
+           \SFAscent ← 0
+           \SFDescent ← 0
+           \SFHeight ← 0
+           FONTDEVICESPEC ← (create FONTSPEC using FONTSPEC])
 
 (\CREATECHARSET.DISPLAY
   [LAMBDA (FONTSPEC FONT CHARSET)                            (* ; "Edited  7-Oct-2025 17:05 by rmk")
@@ -3748,14 +3751,14 @@
                                              ))
                                (CL:WHEN (SETQ CSINFO (\CREATECHARSET.DISPLAY (create FONTSPEC
                                                                                 using FONTSPEC 
-                                                                                      FSROTATION _ 0)
+                                                                                      FSROTATION ← 0)
                                                             FONT CHARSET))
                                       (\SFROTATECSINFO CSINFO ROTATION))
                         elseif (OR (KANJICHARSETP CHARSET)
                                    (CHINESECHARSETP CHARSET))
                           then (CL:UNLESS (EQUAL FACE '(MEDIUM REGULAR REGULAR))
                                    (\CREATECHARSET.DISPLAY (create FONTSPEC
-                                                              using FONTSPEC FSFACE _
+                                                              using FONTSPEC FSFACE ←
                                                                     '(MEDIUM REGULAR REGULAR))
                                           FONT CHARSET))
                         elseif (EQ 'BOLD (fetch (FONTFACE WEIGHT) of FACE))
@@ -3764,7 +3767,7 @@
                           then (MAKEITALIC.CHARSET FONTSPEC CHARSET FONT)
                         elseif (EQ 'COMPRESSED (fetch (FONTFACE EXPANSION) of FACE))
                           then (\CREATECHARSET.DISPLAY (create FONTSPEC
-                                                          using FONTSPEC FSFACE _
+                                                          using FONTSPEC FSFACE ←
                                                                 '(MEDIUM REGULAR REGULAR))
                                       FONT CHARSET)))
          CSINFO])
@@ -3785,16 +3788,16 @@
 
     (LET ((FACE (fetch (FONTSPEC FSFACE) of FONTSPEC)))
          (OR [AND (EQ 'BOLD (fetch (FONTFACE WEIGHT) of FACE))
-                  (FONTEXISTS? (create FONTSPEC using FONTSPEC FSFACE _
-                                                      (create FONTFACE using FACE WEIGHT _
+                  (FONTEXISTS? (create FONTSPEC using FONTSPEC FSFACE ←
+                                                      (create FONTFACE using FACE WEIGHT ←
                                                                              'MEDIUM]
              [AND (EQ 'ITALIC (fetch (FONTFACE SLOPE) of FACE))
-                  (FONTEXISTS? (create FONTSPEC using FONTSPEC FSFACE _
-                                                      (create FONTFACE using FACE SLOPE _
+                  (FONTEXISTS? (create FONTSPEC using FONTSPEC FSFACE ←
+                                                      (create FONTFACE using FACE SLOPE ←
                                                                              'REGULAR]
              [AND (EQ 'COMPRESSED (fetch (FONTFACE EXPANSION) of FACE))
-                  (FONTEXISTS? (create FONTSPEC using FONTSPEC FSFACE _
-                                                      (create FONTFACE using FACE EXPANSION _
+                  (FONTEXISTS? (create FONTSPEC using FONTSPEC FSFACE ←
+                                                      (create FONTFACE using FACE EXPANSION ←
                                                                              'REGULAR]
              (COERCEFONTSPEC FONTSPEC (APPEND (FONTDEVICEPROP 'DISPLAY 'FONTCOERCIONS)
                                              (FONTDEVICEPROP 'DISPLAY 'CHARCOERCIONS])
@@ -3881,7 +3884,7 @@
                                         "J starts at 1 because we know that the offset of J=0 is 0 ?")
 
                                                                (\FSETOFFSET OFFSETS I (\WIN STRM)))
-             (for I (SLUGOFFSET _ (\WIN STRM)) from 0 to \MAXTHINCHAR
+             (for I (SLUGOFFSET ← (\WIN STRM)) from 0 to \MAXTHINCHAR
                 when (EQ 0 (\FGETOFFSET OFFSETS I)) unless (EQ I FIRSTCHAR)
                 do (\FSETOFFSET OFFSETS I SLUGOFFSET) finally (\FSETOFFSET OFFSETS SLUGCHARINDEX 
                                                                      SLUGOFFSET) 
@@ -3955,7 +3958,7 @@
                 (ITIMES 2 RASTERWIDTH (IPLUS (fetch (CHARSETINFO CHARSETASCENT) of CSINFO)
                                              (fetch (CHARSETINFO CHARSETDESCENT) of CSINFO]
                                                              (* ; "Offsets.  ")
-         [for I (OFFSET _ 0) from FIRSTCHAR to LASTCHAR first (\WOUT STREAM OFFSET) 
+         [for I (OFFSET ← 0) from FIRSTCHAR to LASTCHAR first (\WOUT STREAM OFFSET) 
                                                              (* ; "Offset of the first char")
             do (CL:UNLESS (EQ SLUGOFFSET (\FGETOFFSET OFFSETS I))
                                                              (* ; 
@@ -3968,7 +3971,7 @@
          (CLOSEF STREAM])
 
 (STRIKECSINFO
-  [LAMBDA (CSINFO)                                       (* ; "Edited 27-Apr-89 13:39 by atm")
+  [LAMBDA (CSINFO)                                           (* ; "Edited 27-Apr-89 13:39 by atm")
 
     (* ;; "Returns a STRIKE type font descriptor (EQ WIDTHS IMAGEWIDTHS), cause we know how to write those guys out (they read quicker  but display slower).  If (EQ WIDTHS IMAGEWIDTHS), just return original.")
 
@@ -3984,9 +3987,9 @@
           (SETQ BMHEIGHT (BITMAPHEIGHT OLDBM))
           [SETQ BMWIDTH (for I from 0 to \MAXTHINCHAR
                            sum (if (IEQP DUMMYOFFSET (\FGETOFFSET OFFSETS I))
-                                       then 0
-                                     else (IMAX (\FGETIMAGEWIDTH IMWIDTHS I)
-                                                    (\FGETWIDTH WIDTHS I]
+                                   then 0
+                                 else (IMAX (\FGETIMAGEWIDTH IMWIDTHS I)
+                                            (\FGETWIDTH WIDTHS I]
 
      (* ;; "")
 
@@ -4007,17 +4010,17 @@
 
           (SETQ NEWBM (BITMAPCREATE BMWIDTH BMHEIGHT 1))
           (SETQ NEWOFFSET 0)
-          [for I from 0 to 255
-             do (SETQ OLDOFFSET (\FGETOFFSET OFFSETS I))
-                   (if (IEQP DUMMYOFFSET OLDOFFSET)
-                       then (\FSETOFFSET NEWOFFSETS I BMWIDTH)
-                     else (\FSETOFFSET NEWOFFSETS I NEWOFFSET)
-                           (SETQ NEWWIDTH (IMAX (\FGETIMAGEWIDTH IMWIDTHS I)
-                                                (\FGETWIDTH WIDTHS I)))
-                           (BITBLT OLDBM OLDOFFSET 0 NEWBM NEWOFFSET 0 (\FGETWIDTH IMWIDTHS I)
-                                  BMHEIGHT
-                                  'REPLACE)
-                           (SETQ NEWOFFSET (IPLUS NEWOFFSET NEWWIDTH]
+          [for I from 0 to 255 do (SETQ OLDOFFSET (\FGETOFFSET OFFSETS I))
+                                  (if (IEQP DUMMYOFFSET OLDOFFSET)
+                                      then (\FSETOFFSET NEWOFFSETS I BMWIDTH)
+                                    else (\FSETOFFSET NEWOFFSETS I NEWOFFSET)
+                                         (SETQ NEWWIDTH (IMAX (\FGETIMAGEWIDTH IMWIDTHS I)
+                                                              (\FGETWIDTH WIDTHS I)))
+                                         (BITBLT OLDBM OLDOFFSET 0 NEWBM NEWOFFSET 0 (\FGETWIDTH
+                                                                                      IMWIDTHS I)
+                                                BMHEIGHT
+                                                'REPLACE)
+                                         (SETQ NEWOFFSET (IPLUS NEWOFFSET NEWWIDTH]
 
      (* ;; "")
 
@@ -4026,17 +4029,16 @@
      (* ;; "")
 
           (SETQ WIDTHS (COPYALL WIDTHS))
-          [for I from 0 to \MAXTHINCHAR do (\FSETWIDTH WIDTHS I
-                                                                  (IMAX (\FGETWIDTH WIDTHS I)
-                                                                        (\FGETIMAGEWIDTH IMWIDTHS I]
+          [for I from 0 to \MAXTHINCHAR do (\FSETWIDTH WIDTHS I (IMAX (\FGETWIDTH WIDTHS I)
+                                                                      (\FGETIMAGEWIDTH IMWIDTHS I]
           (RETURN (create CHARSETINFO
-                         WIDTHS _ WIDTHS
-                         OFFSETS _ NEWOFFSETS
-                         IMAGEWIDTHS _ WIDTHS
-                         CHARSETBITMAP _ NEWBM
-                         YWIDTHS _ (fetch (CHARSETINFO YWIDTHS) of CSINFO)
-                         CHARSETASCENT _ (fetch (CHARSETINFO CHARSETASCENT) of CSINFO)
-                         CHARSETDESCENT _ (fetch (CHARSETINFO CHARSETDESCENT) of CSINFO])
+                         WIDTHS ← WIDTHS
+                         OFFSETS ← NEWOFFSETS
+                         IMAGEWIDTHS ← WIDTHS
+                         CHARSETBITMAP ← NEWBM
+                         YWIDTHS ← (fetch (CHARSETINFO YWIDTHS) of CSINFO)
+                         CHARSETASCENT ← (fetch (CHARSETINFO CHARSETASCENT) of CSINFO)
+                         CHARSETDESCENT ← (fetch (CHARSETINFO CHARSETDESCENT) of CSINFO])
 )
 
 
@@ -4056,11 +4058,11 @@
 
     (* ;; "BOLD is requested in FACE, so we look for an MRR or MIR that we can bold.  If we find one, we presume that it is complete for all characters in its face.  But there may be other fonts in the coercion chain that have true information about the bold face that we are after. We look for those before we try to adjust the characters in the non-bold CSINFO that we found.")
 
-    (LET ([MFONT (FONTCREATE1 (create FONTSPEC using FONTSPEC FSFACE _ (create FONTFACE
+    (LET ([MFONT (FONTCREATE1 (create FONTSPEC using FONTSPEC FSFACE ← (create FONTFACE
                                                                           using (fetch (FONTSPEC
                                                                                         FSFACE)
                                                                                    of FONTSPEC)
-                                                                                WEIGHT _ 'MEDIUM]
+                                                                                WEIGHT ← 'MEDIUM]
           CSINFO)
 
          (* ;; "MFONT is the corresponding Medium font.")
@@ -4074,7 +4076,7 @@
                                                                     of MFONT))
              (SETQ CSINFO (COPYALL CSINFO))                  (* ; "CSINFO is now the CS to be bolded")
              (\SETCHARSETINFO FONT CHARSET CSINFO)
-             (for CODE SOURCEFONT (CHARCOERCIONS _ (FONTDEVICEPROP FONT 'CHARCOERCIONS))
+             (for CODE SOURCEFONT (CHARCOERCIONS ← (FONTDEVICEPROP FONT 'CHARCOERCIONS))
                 from (FIRSTCHARSETCODE CHARSET) to (LASTCHARSETCODE CHARSET)
                 do (if (SLUGCHARP.DISPLAY CODE FONT)
                        then 
@@ -4127,11 +4129,11 @@
 
     (* ;; "ITALIC is requested, so we look for an MRR or MIR that we can italicize.  If we find one, we presume that it is complete for all characters in its face.  But there may be other fonts in the coercion chain that have true information about the italic face that we are after. We look for those before we try to adjust the characters in  non-italic CSINFO that we found.")
 
-    (LET ([RFONT (FONTCREATE1 (create FONTSPEC using FONTSPEC FSFACE _ (create FONTFACE
+    (LET ([RFONT (FONTCREATE1 (create FONTSPEC using FONTSPEC FSFACE ← (create FONTFACE
                                                                           using (fetch (FONTSPEC
                                                                                         FSFACE)
                                                                                    of FONTSPEC)
-                                                                                SLOPE _ 'REGULAR]
+                                                                                SLOPE ← 'REGULAR]
           CSINFO)
 
          (* ;; "RFONT is the corresponding Regular font.")
@@ -4146,7 +4148,7 @@
              (SETQ CSINFO (COPYALL CSINFO))                  (* ; 
                                                              "CSINFO is now the CS to be italicized")
              (\SETCHARSETINFO FONT CHARSET CSINFO)
-             (for CODE SOURCEFONT (CHARCOERCIONS _ (FONTDEVICEPROP FONT 'CHARCOERCIONS))
+             (for CODE SOURCEFONT (CHARCOERCIONS ← (FONTDEVICEPROP FONT 'CHARCOERCIONS))
                 from (FIRSTCHARSETCODE CHARSET) to (LASTCHARSETCODE CHARSET)
                 do (if (SLUGCHARP.DISPLAY CODE FONT)
                        then 
@@ -4229,7 +4231,7 @@
                                                             "fill in the slug for the magic charcode")
          (BITBLT OLDCHARBITMAP SLUGOFFSET 0 NEWCHARBITMAP SLUGOFFSET 0 SLUGWIDTH HEIGHT 'INPUT
                 'REPLACE)
-         (create CHARSETINFO using CSINFO CHARSETBITMAP _ NEWCHARBITMAP])
+         (create CHARSETINFO using CSINFO CHARSETBITMAP ← NEWCHARBITMAP])
 
 (\SFMAKEITALIC
   [LAMBDA (CSINFO)                                           (* ; "Edited 16-Jun-2025 23:20 by rmk")
@@ -4267,12 +4269,12 @@
                                                 'INPUT
                                                 'REPLACE))]
          (BITBLT OLDBITMAP SLUGOFFSET 0 NEWBITMAP SLUGOFFSET 0 SLUGWIDTH HEIGHT 'INPUT 'REPLACE)
-         (create CHARSETINFO using CSINFO CHARSETBITMAP _ NEWBITMAP])
+         (create CHARSETINFO using CSINFO CHARSETBITMAP ← NEWBITMAP])
 )
 (DEFINEQ
 
 (\SFMAKEROTATEDFONT
-  [LAMBDA (FONTDESC ROTATION)                            (* ; "Edited 30-Mar-87 20:35 by FS")
+  [LAMBDA (FONTDESC ROTATION)                                (* ; "Edited 30-Mar-87 20:35 by FS")
 
     (* ;; "takes a fontdecriptor and rotates it.")
 
@@ -4280,33 +4282,31 @@
 
     (HELP "ROTATED fonts need to be fixed for NS Chars & New FONTDESCRIPTOR fields")
                                                              (* (create FONTDESCRIPTOR using 
-                                                           FONTDESC (SETQ CHARACTERBITMAP
-                                                           (\SFROTATEFONTCHARACTERS
-                                                           (fetch (FONTDESCRIPTOR 
-                                                           CHARACTERBITMAP) of FONTDESC) 
-                                                           ROTATION)) (SETQ ROTATION ROTATION)
-                                                           (SETQ \SFOffsets (
-                                                           \SFFIXOFFSETSAFTERROTATION FONTDESC 
-                                                           ROTATION)) (SETQ FONTCHARSETVECTOR
-                                                           (\ALLOCBLOCK (ADD1 \MAXCHARSET) T))))
+                                                             FONTDESC (SETQ CHARACTERBITMAP
+                                                             (\SFROTATEFONTCHARACTERS
+                                                             (fetch (FONTDESCRIPTOR CHARACTERBITMAP)
+    of FONTDESC) ROTATION)) (SETQ ROTATION ROTATION) (SETQ \SFOffsets (\SFFIXOFFSETSAFTERROTATION 
+                                                             FONTDESC ROTATION)) (SETQ 
+                                                             FONTCHARSETVECTOR (\ALLOCBLOCK
+                                                             (ADD1 \MAXCHARSET) T))))
 
     (* ;; "If you uncomment out the code above, remove this comment and the NIL below")
 
     NIL])
 
 (\SFROTATECSINFO
-  [LAMBDA (CSINFO ROTATION)                              (* gbn "15-Sep-85 14:38")
+  [LAMBDA (CSINFO ROTATION)                                  (* gbn "15-Sep-85 14:38")
 
     (* ;; "takes a CHARSETINFO and rotates it and produces a rotated equivalent one.")
 
-    (create CHARSETINFO using CSINFO CHARSETBITMAP _ (\SFROTATEFONTCHARACTERS
-                                                              (fetch (CHARSETINFO CHARSETBITMAP)
-                                                                 of CSINFO)
-                                                              ROTATION)
-                                  OFFSETS _ (\SFROTATECSINFOOFFSETS CSINFO ROTATION])
+    (create CHARSETINFO using CSINFO CHARSETBITMAP ← (\SFROTATEFONTCHARACTERS (fetch (CHARSETINFO
+                                                                                      CHARSETBITMAP)
+                                                                                 of CSINFO)
+                                                            ROTATION)
+                              OFFSETS ← (\SFROTATECSINFOOFFSETS CSINFO ROTATION])
 
 (\SFROTATEFONTCHARACTERS
-  [LAMBDA (CHARBITMAP ROTATION)                          (* ; "Edited 22-Sep-87 10:38 by Snow")
+  [LAMBDA (CHARBITMAP ROTATION)                              (* ; "Edited 22-Sep-87 10:38 by Snow")
 
 (* ;;; "rotate a bitmap either 90 or 270 for fonts.")
 
@@ -4343,7 +4343,7 @@
 (DEFINEQ
 
 (\SFMAKECOLOR
-  [LAMBDA (BWCSINFO BACKCOLOR FORECOLOR BITSPERPIXEL)    (* kbr%: " 6-Feb-86 18:17")
+  [LAMBDA (BWCSINFO BACKCOLOR FORECOLOR BITSPERPIXEL)        (* kbr%: " 6-Feb-86 18:17")
 
     (* ;; "makes a csinfo that has a character bitmap that is colorized.")
 
@@ -4359,12 +4359,9 @@
                                 (T (\DISPLAYSTREAMTYPEBPP BITSPERPIXEL]
           (SETQ BACKCOLOR (COLORNUMBERP BACKCOLOR BITSPERPIXEL))
           (SETQ FORECOLOR (COLORNUMBERP FORECOLOR BITSPERPIXEL))
-          (SETQ CHARACTERBITMAP (COLORIZEBITMAP (fetch (CHARSETINFO CHARSETBITMAP) of 
-                                                                                             BWCSINFO
-                                                       )
+          (SETQ CHARACTERBITMAP (COLORIZEBITMAP (fetch (CHARSETINFO CHARSETBITMAP) of BWCSINFO)
                                        BACKCOLOR FORECOLOR BITSPERPIXEL))
-          (SETQ COLORCSINFO (create CHARSETINFO using BWCSINFO CHARSETBITMAP _ 
-                                                          CHARACTERBITMAP))
+          (SETQ COLORCSINFO (create CHARSETINFO using BWCSINFO CHARSETBITMAP ← CHARACTERBITMAP))
           (RETURN COLORCSINFO])
 )
 (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: DOEVAL@COMPILE DONTCOPY
@@ -4496,43 +4493,43 @@
 (ADDTOVAR LAMA FONTCOPY)
 )
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (11417 21130 (CHARWIDTH 11427 . 12212) (CHARWIDTHY 12214 . 13731) (STRINGWIDTH 13733 . 
-14826) (\CHARWIDTH.DISPLAY 14828 . 15241) (\STRINGWIDTH.DISPLAY 15243 . 15667) (\STRINGWIDTH.GENERIC 
-15669 . 21128)) (21131 27651 (DEFAULTFONT 21141 . 22426) (FONTCLASS 22428 . 24590) (FONTCLASSUNPARSE 
-24592 . 25491) (FONTCLASSCOMPONENT 25493 . 26081) (SETFONTCLASSCOMPONENT 26083 . 26525) (
-GETFONTCLASSCOMPONENT 26527 . 27649)) (29364 47382 (FONTCREATE 29374 . 32619) (FONTCREATE1 32621 . 
-35236) (FONTCREATE.SLUGFD 35238 . 36720) (\FONT.CHECKARGS1 36722 . 41427) (\FONTCREATE1.NOFN 41429 . 
-41643) (FONTFILEP 41645 . 42533) (\READCHARSET 42535 . 47380)) (47383 54459 (\FONT.CHECKARGS 47393 . 
-54142) (\CHARSET.CHECK 54144 . 54457)) (54460 61071 (COERCEFONTSPEC 54470 . 60382) (
-COERCEFONTSPEC.TARGETFACE 60384 . 61069)) (63266 64605 (MAKEFONTSPEC 63276 . 64603)) (64606 72783 (
-COMPLETE.FONT 64616 . 67139) (COMPLETEFONTP 67141 . 67764) (COMPLETE.CHARSET 67766 . 70451) (
-PRUNESLUGCSINFOS 70453 . 71378) (MONOSPACEFONTP 71380 . 72781)) (72822 81268 (FONTASCENT 72832 . 73216
-) (FONTDESCENT 73218 . 73703) (FONTHEIGHT 73705 . 74107) (FONTPROP 74109 . 80545) (\AVGCHARWIDTH 80547
- . 81266)) (81925 82833 (FONTDEVICEPROP 81935 . 82831)) (82879 83733 (EDITCHAR 82889 . 83731)) (83779 
-95969 (GETCHARBITMAP 83789 . 84913) (PUTCHARBITMAP 84915 . 87073) (\GETCHARBITMAP.CSINFO 87075 . 89091
-) (\PUTCHARBITMAP.CSINFO 89093 . 95967)) (95970 116450 (MOVECHARBITMAP 95980 . 97874) (MOVEFONTCHARS 
-97876 . 101836) (\MOVEFONTCHAR 101838 . 106681) (\MOVEFONTCHARS.SOURCEDATA 106683 . 112788) (
-\MAKESLUGCHAR 112790 . 115325) (SLUGCHARP.DISPLAY 115327 . 116448)) (117108 128945 (FONTFILES 117118
- . 118951) (\FINDFONTFILE 118953 . 120930) (\FONTFILENAMES 120932 . 121492) (\FONTFILENAME 121494 . 
-124405) (FONTSPECFROMFILENAME 124407 . 128943)) (128946 165521 (FONTCOPY 128956 . 134019) (FONTP 
-134021 . 134320) (FONTUNPARSE 134322 . 136041) (SETFONTDESCRIPTOR 136043 . 137507) (\STREAMCHARWIDTH 
-137509 . 141673) (\COERCECHARSET 141675 . 145042) (\BUILDSLUGCSINFO 145044 . 148667) (\FONTSYMBOL 
-148669 . 149319) (\DEVICESYMBOL 149321 . 150190) (\FONTFACE 150192 . 157382) (\FONTFACE.COLOR 157384
- . 164304) (SETFONTCHARENCODING 164306 . 165519)) (165522 185183 (FONTSAVAILABLE 165532 . 170886) (
-FONTEXISTS? 170888 . 174427) (\SEARCHFONTFILES 174429 . 177514) (FLUSHFONTCACHE 177516 . 179739) (
-FINDFONTFILES 179741 . 182955) (SORTFONTSPECS 182957 . 185181)) (185184 189291 (MATCHFONTFACE 185194
- . 186009) (MAKEFONTFACE 186011 . 187037) (FONTFACETOATOM 187039 . 189289)) (189922 190414 (
-\UNITWIDTHSVECTOR 189932 . 190412)) (205043 207110 (FONTDESCRIPTOR.DEFPRINT 205053 . 206632) (
-FONTCLASS.DEFPRINT 206634 . 207108)) (210939 213729 (\CREATEKERNELEMENT 210949 . 211307) (
-\FSETLEFTKERN 211309 . 211800) (\FGETLEFTKERN 211802 . 213727)) (213730 225378 (\CREATEFONT 213740 . 
-216618) (\CREATECHARSET 216620 . 221129) (\INSTALLCHARSETINFO 221131 . 224465) (
-\INSTALLCHARSETINFO.CHARENCODING 224467 . 225376)) (225700 227064 (\FONTRESETCHARWIDTHS 225710 . 
-227062)) (227694 237735 (\CREATEDISPLAYFONT 227704 . 229553) (\CREATECHARSET.DISPLAY 229555 . 235264) 
-(\FONTEXISTS?.DISPLAY 235266 . 237733)) (237736 252601 (STRIKEFONT.FILEP 237746 . 238634) (
-STRIKEFONT.GETCHARSET 238636 . 244228) (WRITESTRIKEFONTFILE 244230 . 249141) (STRIKECSINFO 249143 . 
-252599)) (252632 268949 (MAKEBOLD.CHARSET 252642 . 256291) (MAKEBOLD.CHAR 256293 . 258045) (
-MAKEITALIC.CHARSET 258047 . 261720) (MAKEITALIC.CHAR 261722 . 264068) (\SFMAKEBOLD 264070 . 266294) (
-\SFMAKEITALIC 266296 . 268947)) (268950 273099 (\SFMAKEROTATEDFONT 268960 . 270361) (\SFROTATECSINFO 
-270363 . 271000) (\SFROTATEFONTCHARACTERS 271002 . 271382) (\SFROTATECSINFOOFFSETS 271384 . 273097)) (
-273100 274481 (\SFMAKECOLOR 273110 . 274479)))))
+  (FILEMAP (NIL (11429 21096 (CHARWIDTH 11439 . 12228) (CHARWIDTHY 12230 . 13747) (STRINGWIDTH 13749 . 
+14786) (\CHARWIDTH.DISPLAY 14788 . 15203) (\STRINGWIDTH.DISPLAY 15205 . 15633) (\STRINGWIDTH.GENERIC 
+15635 . 21094)) (21097 27729 (DEFAULTFONT 21107 . 22392) (FONTCLASS 22394 . 24666) (FONTCLASSUNPARSE 
+24668 . 25569) (FONTCLASSCOMPONENT 25571 . 26159) (SETFONTCLASSCOMPONENT 26161 . 26603) (
+GETFONTCLASSCOMPONENT 26605 . 27727)) (29442 47482 (FONTCREATE 29452 . 32697) (FONTCREATE1 32699 . 
+35314) (FONTCREATE.SLUGFD 35316 . 36820) (\FONT.CHECKARGS1 36822 . 41527) (\FONTCREATE1.NOFN 41529 . 
+41743) (FONTFILEP 41745 . 42633) (\READCHARSET 42635 . 47480)) (47483 54559 (\FONT.CHECKARGS 47493 . 
+54242) (\CHARSET.CHECK 54244 . 54557)) (54560 61171 (COERCEFONTSPEC 54570 . 60482) (
+COERCEFONTSPEC.TARGETFACE 60484 . 61169)) (63366 64715 (MAKEFONTSPEC 63376 . 64713)) (64716 72893 (
+COMPLETE.FONT 64726 . 67249) (COMPLETEFONTP 67251 . 67874) (COMPLETE.CHARSET 67876 . 70561) (
+PRUNESLUGCSINFOS 70563 . 71488) (MONOSPACEFONTP 71490 . 72891)) (72932 81390 (FONTASCENT 72942 . 73326
+) (FONTDESCENT 73328 . 73813) (FONTHEIGHT 73815 . 74217) (FONTPROP 74219 . 80667) (\AVGCHARWIDTH 80669
+ . 81388)) (82047 82955 (FONTDEVICEPROP 82057 . 82953)) (83001 83855 (EDITCHAR 83011 . 83853)) (83901 
+96091 (GETCHARBITMAP 83911 . 85035) (PUTCHARBITMAP 85037 . 87195) (\GETCHARBITMAP.CSINFO 87197 . 89213
+) (\PUTCHARBITMAP.CSINFO 89215 . 96089)) (96092 117372 (MOVECHARBITMAP 96102 . 97996) (MOVEFONTCHARS 
+97998 . 102744) (\MOVEFONTCHAR 102746 . 107593) (\MOVEFONTCHARS.SOURCEDATA 107595 . 113710) (
+\MAKESLUGCHAR 113712 . 116247) (SLUGCHARP.DISPLAY 116249 . 117370)) (118030 129879 (FONTFILES 118040
+ . 119873) (\FINDFONTFILE 119875 . 121852) (\FONTFILENAMES 121854 . 122414) (\FONTFILENAME 122416 . 
+125327) (FONTSPECFROMFILENAME 125329 . 129877)) (129880 166129 (FONTCOPY 129890 . 134973) (FONTP 
+134975 . 135274) (FONTUNPARSE 135276 . 136999) (SETFONTDESCRIPTOR 137001 . 138465) (\STREAMCHARWIDTH 
+138467 . 142478) (\COERCECHARSET 142480 . 145847) (\BUILDSLUGCSINFO 145849 . 149480) (\FONTSYMBOL 
+149482 . 150136) (\DEVICESYMBOL 150138 . 150922) (\FONTFACE 150924 . 158128) (\FONTFACE.COLOR 158130
+ . 164912) (SETFONTCHARENCODING 164914 . 166127)) (166130 185807 (FONTSAVAILABLE 166140 . 171504) (
+FONTEXISTS? 171506 . 175047) (\SEARCHFONTFILES 175049 . 178136) (FLUSHFONTCACHE 178138 . 180361) (
+FINDFONTFILES 180363 . 183579) (SORTFONTSPECS 183581 . 185805)) (185808 189923 (MATCHFONTFACE 185818
+ . 186633) (MAKEFONTFACE 186635 . 187669) (FONTFACETOATOM 187671 . 189921)) (190554 191046 (
+\UNITWIDTHSVECTOR 190564 . 191044)) (205689 207756 (FONTDESCRIPTOR.DEFPRINT 205699 . 207278) (
+FONTCLASS.DEFPRINT 207280 . 207754)) (211585 214375 (\CREATEKERNELEMENT 211595 . 211953) (
+\FSETLEFTKERN 211955 . 212446) (\FGETLEFTKERN 212448 . 214373)) (214376 226042 (\CREATEFONT 214386 . 
+217282) (\CREATECHARSET 217284 . 221793) (\INSTALLCHARSETINFO 221795 . 225129) (
+\INSTALLCHARSETINFO.CHARENCODING 225131 . 226040)) (226364 227732 (\FONTRESETCHARWIDTHS 226374 . 
+227730)) (228362 238439 (\CREATEDISPLAYFONT 228372 . 230239) (\CREATECHARSET.DISPLAY 230241 . 235956) 
+(\FONTEXISTS?.DISPLAY 235958 . 238437)) (238440 253445 (STRIKEFONT.FILEP 238450 . 239338) (
+STRIKEFONT.GETCHARSET 239340 . 244934) (WRITESTRIKEFONTFILE 244936 . 249849) (STRIKECSINFO 249851 . 
+253443)) (253476 269809 (MAKEBOLD.CHARSET 253486 . 257141) (MAKEBOLD.CHAR 257143 . 258895) (
+MAKEITALIC.CHARSET 258897 . 262576) (MAKEITALIC.CHAR 262578 . 264924) (\SFMAKEBOLD 264926 . 267152) (
+\SFMAKEITALIC 267154 . 269807)) (269810 273834 (\SFMAKEROTATEDFONT 269820 . 271054) (\SFROTATECSINFO 
+271056 . 271731) (\SFROTATEFONTCHARACTERS 271733 . 272117) (\SFROTATECSINFOOFFSETS 272119 . 273832)) (
+273835 275009 (\SFMAKECOLOR 273845 . 275007)))))
 STOP
diff --git a/sources/FONT.LCOM b/sources/FONT.LCOM
index 4d534cc7..a5dd6584 100644
Binary files a/sources/FONT.LCOM and b/sources/FONT.LCOM differ
diff --git a/sources/LLARRAYELT b/sources/LLARRAYELT
index f546409a..1ad5146d 100644
--- a/sources/LLARRAYELT
+++ b/sources/LLARRAYELT
@@ -1,20 +1,19 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
-(FILECREATED "15-Sep-94 11:08:59" {DSK}<lispcore>sources>LLARRAYELT.;7 155360 
 
-      changes to%:  (RECORDS ARRAYP)
+(FILECREATED "22-Feb-2026 13:54:48" {WMEDLEY}<sources>LLARRAYELT.;2 169614 
 
-      previous date%: "28-Jul-94 13:41:50" {DSK}<lispcore>sources>LLARRAYELT.;6)
+      :EDIT-BY rmk
 
+      :CHANGES-TO (VARS LLARRAYELTCOMS)
+
+      :PREVIOUS-DATE "15-Sep-94 11:08:59" {WMEDLEY}<sources>LLARRAYELT.;1)
 
-(* ; "
-Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994 by Venue & Xerox Corporation.  All rights reserved.
-")
 
 (PRETTYCOMPRINT LLARRAYELTCOMS)
 
-(RPAQQ LLARRAYELTCOMS 
+(RPAQQ LLARRAYELTCOMS
        [(COMS                                                (* ; 
-                     "Because we use the UNLESSINEW macro in this file, we need it when compiling.")
+                       "Because we use the UNLESSINEW macro in this file, we need it when compiling.")
               (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (SOURCE)
                                                       RENAMEMACROS)))
         (PROPS (LLARRAYELT FILETYPE))
@@ -26,6 +25,10 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
               (FNS HARRAY HASHARRAY HARRAYP HARRAYPROP HARRAYSIZE CLRHASH MAPHASH GETHASH PUTHASH 
                    CL::PUTHASH REMHASH \HASHRECLAIM \HASHACCESS REHASH \COPYHARRAYP 
                    \HASHTABLE.DEFPRINT)
+              (COMS                                          (* ; "Originally on MACHINEINDEPENDENT")
+                    (FNS DMPHASH HASHOVERFLOW)
+                    (DECLARE%: EVAL@COMPILE DONTCOPY (MACROS HASHOVERFLOW.ARRAYTEST 
+                                                            HASHOVERFLOW.UPDATEARRAY)))
               (FNS STRINGHASHBITS STRING-EQUAL-HASHBITS)
               (FNS \STRINGHASHBITS-UFN \STRING-EQUAL-HASHBITS-UFN)
               (DECLARE%: DONTCOPY (EXPORT (RECORDS HARRAYP)
@@ -44,7 +47,7 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
               (DECLARE%: DONTCOPY (MACROS EQPTR BUCKETINDEX FREEBLOCKCHAIN.N)
                      (CONSTANTS \MAXBUCKETINDEX)
                                                              (* ; 
-                                "\ADDBASE2 and \ADDBASE4 do \ADDBASE of 2*N and 4*N without boxing")
+                                  "\ADDBASE2 and \ADDBASE4 do \ADDBASE of 2*N and 4*N without boxing")
                      (EXPORT (MACROS \ADDBASE2 \ADDBASE4 HUNKSIZEFROMNUMBER \BYTELT \BYTESETA 
                                     \WORDELT)
                             (CONSTANTS * BLOCKGCTYPECONSTANTS)
@@ -77,7 +80,7 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
               (FNS \ALLOCHUNK)
               (VARS \HUNK.PTRSIZES)
                                                              (* ; 
-                                  "Compiler needs \HUNK.PTRSIZES for creating closure environments")
+                                    "Compiler needs \HUNK.PTRSIZES for creating closure environments")
               (DECLARE%: EVAL@COMPILE DONTCOPY (EXPORT (MACROS HUNKSIZEFROMNUMBER))
                      (CONSTANTS \HUNK.UNBOXEDSIZES \HUNK.CODESIZES \HUNK.PTRSIZES)
                      (GLOBALVARS \HUNKING? \UNBOXEDHUNK.TYPENUM.TABLE \CODEHUNK.TYPENUM.TABLE 
@@ -152,7 +155,7 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
        RENAMEMACROS)
 )
 
-(PUTPROPS LLARRAYELT FILETYPE :BCOMPL)
+(PUTPROPS LLARRAYELT FILETYPE :BCOMPL)
 
 
 
@@ -407,8 +410,8 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
 (DECLARE%: DONTCOPY 
 (DECLARE%: EVAL@COMPILE 
 
-[PUTPROPS ARRAYSIZE DMACRO ((A)
-                            (ffetch (ARRAYP LENGTH) of (\DTEST A 'ARRAYP]
+(PUTPROPS ARRAYSIZE DMACRO [(A)
+                            (ffetch (ARRAYP LENGTH) of (\DTEST A 'ARRAYP])
 )
 )
 (DEFINEQ
@@ -996,6 +999,108 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
                                                           "Return T to say we printed it ourselves")
     T])
 )
+
+
+
+(* ; "Originally on MACHINEINDEPENDENT")
+
+(DEFINEQ
+
+(DMPHASH
+  [NLAMBDA L                                                 (* rmk%: " 6-Apr-84 14:30")
+    (MAPC L (FUNCTION (LAMBDA (ARRAYNAME)
+                        (DECLARE (SPECVARS ARRAYNAME))
+                        (ERSETQ (PROG ((A (EVALV ARRAYNAME 'DMPHASH))
+                                       AP)
+                                      [PRINT (LIST 'RPAQ ARRAYNAME
+                                                   (COND
+                                                      [(LISTP A)
+                                                       (SETQ AP (CAR A))
+                                                       (LIST 'CONS [LIST 'HARRAY (HARRAYSIZE AP)
+                                                                         (KWOTE (HARRAYPROP
+                                                                                 AP
+                                                                                 'OVERFLOW]
+                                                             (KWOTE (CDR A]
+                                                      (T (LIST 'HASHARRAY (HARRAYSIZE A)
+                                                               (KWOTE (HARRAYPROP AP 'OVERFLOW]
+                                      (MAPHASH (OR AP A)
+                                             (FUNCTION (LAMBDA (VAL ITEM)
+                                                         (PRINT (LIST 'PUTHASH (KWOTE ITEM)
+                                                                      (KWOTE VAL)
+                                                                      ARRAYNAME])
+
+(HASHOVERFLOW
+  [LAMBDA (HARRAY)                                           (* ; "Edited 26-Feb-91 13:16 by jds")
+
+    (* ;; "Should be called from PUTHASH on hash overflow, but for implementations where PUTHASH calls ERRORX directly, may be called from ERRORX2 when the offender is a listp.  HARRAY is guaranteed to be either HARRAYP or (LIST HARRAYP)")
+
+    (PROG ((OLDARRAY (HASHOVERFLOW.ARRAYTEST HARRAY))
+           NEWARRAY NEWSIZE OLDNUMKEYS OVACTION NEWOVFLW)
+          [COND
+             ((LISTP HARRAY)
+              (SETQ OVACTION (CDR HARRAY))
+
+              (* ;; "Get OVERFLOW method from original HARRAY since it would erroneously be ERROR if we got the method from the coerced OLDARRAY")
+
+              (SETQ NEWOVFLW 'ERROR))
+             (T (SETQ OVACTION (SETQ NEWOVFLW (HARRAYPROP OLDARRAY 'OVERFLOW]
+          (SETQ OLDNUMKEYS (HARRAYPROP OLDARRAY 'NUMKEYS))
+
+     (* ;; "Compute the new array size:")
+
+          [SETQ NEWSIZE (SELECTQ OVACTION
+                            (NIL 
+                                 (* ;; "SIZE*1.5 --- favor to bbn, since pdp-11 doesnt have floatng point, and LRSH on other systems might be faster than IQUOTIENT")
+
+                                 (* ;; 
+                                 "[32749 IS THE BIGGEST PRIME < 32765, THE LIMIT ON ARRAY SIZES]")
+
+                                 [IMAX (+ OLDNUMKEYS 3)
+                                       (IMIN 32749 (+ OLDNUMKEYS (LRSH (CL:1+ OLDNUMKEYS)
+                                                                       1])
+                            (ERROR (do (ERRORX (LIST 26 HARRAY))))
+                            (if (FLOATP OVACTION)
+                                then [IMAX (+ OLDNUMKEYS 3)
+                                           (IMIN 32760 (FIXR (FTIMES OLDNUMKEYS OVACTION]
+                              elseif (FIXP OVACTION)
+                                then (IMAX (+ OLDNUMKEYS 3)
+                                           (IMIN 32749 (+ OLDNUMKEYS OVACTION)))
+                              elseif [AND (FNTYP OVACTION)
+                                          (NUMBERP (SETQ OVACTION (APPLY* OVACTION HARRAY]
+                                then (if (FLOATP OVACTION)
+                                         then                (* ; 
+                                           "recompute NUMKEYS since OVACTION might have removed keys")
+                                              [IMAX (+ (SETQ OLDNUMKEYS (HARRAYPROP OLDARRAY
+                                                                               'NUMKEYS))
+                                                       3)
+                                                    (IMIN 32749 (FIXR (FTIMES OLDNUMKEYS OVACTION]
+                                       else OVACTION)
+                              else                           (* ; "Default: multiply by 1.5")
+                                   (SETQ OLDNUMKEYS (HARRAYPROP OLDARRAY 'NUMKEYS))
+                                   (IMAX (+ OLDNUMKEYS 3)
+                                         (IMIN 32749 (+ OLDNUMKEYS (LRSH (CL:1+ OLDNUMKEYS)
+                                                                         1]
+          [SETQ NEWARRAY (REHASH OLDARRAY (HASHARRAY NEWSIZE NEWOVFLW (HARRAYPROP OLDARRAY
+                                                                             'HASHBITSFN)
+                                                 (HARRAYPROP OLDARRAY 'EQUIVFN]
+          (HASHOVERFLOW.UPDATEARRAY HARRAY NEWARRAY OLDARRAY)
+          (RETURN HARRAY])
+)
+(DECLARE%: EVAL@COMPILE DONTCOPY 
+(DECLARE%: EVAL@COMPILE 
+
+[PROGN (PUTPROPS HASHOVERFLOW.ARRAYTEST MACRO [(HARRAY)
+                                               (CAR (OR (LISTP HARRAY)
+                                                        (ERRORX (LIST 27 HARRAY])
+       (PUTPROPS HASHOVERFLOW.ARRAYTEST DMACRO ((HARRAY)
+                                                (\DTEST HARRAY 'HARRAYP)))]
+
+[PROGN (PUTPROPS HASHOVERFLOW.UPDATEARRAY MACRO ((HARRAY NEWARRAY OLDARRAY)
+                                                 (FRPLACA HARRAY NEWARRAY)))
+       (PUTPROPS HASHOVERFLOW.UPDATEARRAY DMACRO ((HARRAY NEWARRAY OLDARRAY)
+                                                  (\COPYHARRAYP NEWARRAY OLDARRAY)))]
+)
+)
 (DEFINEQ
 
 (STRINGHASHBITS
@@ -1048,20 +1153,20 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
 (DECLARE%: DONTCOPY 
 (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE
 
-(DATATYPE HARRAYP ((NULLSLOTS WORD)                      (* ; 
-                                                      "Number of NIL-NIL slots, which break chains")
-                       (LASTINDEX WORD)                      (* ; "Slot offset of last slot.  Used in probe computations computations.  Microcode support for \ADDBASE4 would help")
-                       (HARRAYPBASE POINTER)
-                       (RECLAIMABLE FLAG)                    (* ; 
-                                                      "True if keys can go away when no other refs")
-                       (OVERFLOWACTION POINTER)
-                       (NUMSLOTS WORD)                       (* ; 
-                                      "The maximum number of logical slots--returned by HARRAYSIZE")
-                       (NUMKEYS WORD)                        (* ; 
-                                                         "The number of distinct keys in the array")
-                       (HASHBITSFN POINTER)
-                       (EQUIVFN POINTER)
-                       (HASHUSERDATA POINTER)))
+(DATATYPE HARRAYP ((NULLSLOTS WORD)                          (* ; 
+                                                        "Number of NIL-NIL slots, which break chains")
+                   (LASTINDEX WORD)                          (* ; "Slot offset of last slot.  Used in probe computations computations.  Microcode support for \ADDBASE4 would help")
+                   (HARRAYPBASE POINTER)
+                   (RECLAIMABLE FLAG)                        (* ; 
+                                                        "True if keys can go away when no other refs")
+                   (OVERFLOWACTION POINTER)
+                   (NUMSLOTS WORD)                           (* ; 
+                                        "The maximum number of logical slots--returned by HARRAYSIZE")
+                   (NUMKEYS WORD)                            (* ; 
+                                                           "The number of distinct keys in the array")
+                   (HASHBITSFN POINTER)
+                   (EQUIVFN POINTER)
+                   (HASHUSERDATA POINTER)))
 )
 
 (/DECLAREDATATYPE 'HARRAYP '(WORD WORD POINTER FLAG POINTER WORD WORD POINTER POINTER POINTER)
@@ -1078,14 +1183,14 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
        '14)
 (DECLARE%: EVAL@COMPILE 
 
-[PUTPROPS \EQHASHINGBITS MACRO (OPENLAMBDA (X)               (* ; 
-                 "Spread out objects whose low bits are in small arithmetic progression, esp atoms")
-                                      (LOGXOR (\HILOC X)
-                                             (LOGXOR (LLSH (LOGAND (\LOLOC X)
-                                                                  8191)
-                                                           3)
-                                                    (LRSH (\LOLOC X)
-                                                          9]
+(PUTPROPS \EQHASHINGBITS MACRO [OPENLAMBDA (X)               (* ; 
+                   "Spread out objects whose low bits are in small arithmetic progression, esp atoms")
+                                 (LOGXOR (\HILOC X)
+                                        (LOGXOR (LLSH (LOGAND (\LOLOC X)
+                                                             8191)
+                                                      3)
+                                               (LRSH (\LOLOC X)
+                                                     9])
 )
 
 (* "END EXPORTED DEFINITIONS")
@@ -1094,21 +1199,20 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
 (DECLARE%: EVAL@COMPILE
 
 (BLOCKRECORD HASHSLOT ((KEY POINTER)
-                           (VALUE POINTER))
-                          [ACCESSFNS ((NEXTSLOT (\ADDBASE DATUM (UNFOLD WORDSPERCELL CELLSPERSLOT])
+                       (VALUE POINTER))
+                      [ACCESSFNS ((NEXTSLOT (\ADDBASE DATUM (UNFOLD WORDSPERCELL CELLSPERSLOT])
 )
 
 (DECLARE%: EVAL@COMPILE 
 
-[PUTPROPS \FIRSTINDEX MACRO ((BITS APTR1)
-                             (IREMAINDER BITS (ADD1 (fetch (HARRAYP LASTINDEX) of APTR1]
+(PUTPROPS \FIRSTINDEX MACRO [(BITS APTR1)
+                             (IREMAINDER BITS (ADD1 (fetch (HARRAYP LASTINDEX) of APTR1])
 
-(PUTPROPS \HASHSLOT MACRO (= . \ADDBASE4))
+(PUTPROPS \HASHSLOT MACRO (= . \ADDBASE4))
 
-(PUTPROPS \REPROBE MACRO ((BITS HA)
+(PUTPROPS \REPROBE MACRO ((BITS HA)
                           (LOGOR [IREMAINDER (LOGXOR BITS (LRSH BITS 8))
-                                        (IMIN 64 (ADD1 (fetch (HARRAYP LASTINDEX)
-                                                          of HA]
+                                        (IMIN 64 (ADD1 (fetch (HARRAYP LASTINDEX) of HA]
                                  1)))
 )
 
@@ -1145,15 +1249,15 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
 (ADDTOVAR SYSTEMRECLST
 
 (DATATYPE HARRAYP ((NULLSLOTS WORD)
-                       (LASTINDEX WORD)
-                       (HARRAYPBASE POINTER)
-                       (RECLAIMABLE FLAG)
-                       (OVERFLOWACTION POINTER)
-                       (NUMSLOTS WORD)
-                       (NUMKEYS WORD)
-                       (HASHBITSFN POINTER)
-                       (EQUIVFN POINTER)
-                       (HASHUSERDATA POINTER)))
+                   (LASTINDEX WORD)
+                   (HARRAYPBASE POINTER)
+                   (RECLAIMABLE FLAG)
+                   (OVERFLOWACTION POINTER)
+                   (NUMSLOTS WORD)
+                   (NUMKEYS WORD)
+                   (HASHBITSFN POINTER)
+                   (EQUIVFN POINTER)
+                   (HASHUSERDATA POINTER)))
 )
 
 (RPAQQ \HASH.NULL.VALUE \Hash\Null\Value\)
@@ -1277,14 +1381,14 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
 (DECLARE%: DONTCOPY 
 (DECLARE%: EVAL@COMPILE 
 
-(PUTPROPS EQPTR DMACRO (= . EQ))
+(PUTPROPS EQPTR DMACRO (= . EQ))
 
-(PUTPROPS BUCKETINDEX MACRO ((N)
+(PUTPROPS BUCKETINDEX MACRO ((N)
                              (IMIN (INTEGERLENGTH N)
                                    \MAXBUCKETINDEX)))
 
-[PUTPROPS FREEBLOCKCHAIN.N MACRO ((N)
-                                  (\ADDBASE2 \FREEBLOCKBUCKETS (BUCKETINDEX N]
+(PUTPROPS FREEBLOCKCHAIN.N MACRO ((N)
+                                  (\ADDBASE2 \FREEBLOCKBUCKETS (BUCKETINDEX N))))
 )
 
 (DECLARE%: EVAL@COMPILE 
@@ -1297,43 +1401,43 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
 
 (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE 
 
-(PUTPROPS \ADDBASE2 MACRO (OPENLAMBDA (BASE N)
-                                 (\ADDBASE (\ADDBASE BASE N)
-                                        N)))
+(PUTPROPS \ADDBASE2 MACRO (OPENLAMBDA (BASE N)
+                            (\ADDBASE (\ADDBASE BASE N)
+                                   N)))
 
-(PUTPROPS \ADDBASE4 MACRO (OPENLAMBDA (BASE N)
-                                 (\ADDBASE2 (\ADDBASE2 BASE N)
-                                        N)))
+(PUTPROPS \ADDBASE4 MACRO (OPENLAMBDA (BASE N)
+                            (\ADDBASE2 (\ADDBASE2 BASE N)
+                                   N)))
 
-(PUTPROPS HUNKSIZEFROMNUMBER MACRO ((NTYPX)
+(PUTPROPS HUNKSIZEFROMNUMBER MACRO ((NTYPX)
                                     (FOLDLO (fetch DTDSIZE of (\GETDTD NTYPX))
                                            WORDSPERCELL)))
 
-[PUTPROPS \BYTELT DMACRO (OPENLAMBDA (A J)
-                                (\GETBASEBYTE (fetch (ARRAYP BASE) of A)
-                                       (IPLUS (fetch (ARRAYP OFFST) of A)
-                                              J]
+(PUTPROPS \BYTELT DMACRO (OPENLAMBDA (A J)
+                           (\GETBASEBYTE (fetch (ARRAYP BASE) of A)
+                                  (IPLUS (fetch (ARRAYP OFFST) of A)
+                                         J))))
 
-(PUTPROPS \BYTESETA DMACRO (OPENLAMBDA (A J V)
-                                  (\PUTBASEBYTE (fetch (ARRAYP BASE) of A)
-                                         (IPLUS (fetch (ARRAYP OFFST) of A)
-                                                J)
-                                         V)))
+(PUTPROPS \BYTESETA DMACRO (OPENLAMBDA (A J V)
+                             (\PUTBASEBYTE (fetch (ARRAYP BASE) of A)
+                                    (IPLUS (fetch (ARRAYP OFFST) of A)
+                                           J)
+                                    V)))
 
-[PUTPROPS \WORDELT DMACRO (OPENLAMBDA (A J)
-                                 [CHECK (AND (ARRAYP A)
-                                             (EQ 0 (fetch (ARRAYP ORIG) of A))
-                                             (EQ \ST.POS16 (fetch (ARRAYP TYP) of A]
-                                 (CHECK (IGREATERP (fetch (ARRAYP LENGTH) of A)
-                                               J))
-                                 (\GETBASE (fetch (ARRAYP BASE) of A)
-                                        (IPLUS (fetch (ARRAYP OFFST) of A)
-                                               J]
+(PUTPROPS \WORDELT DMACRO (OPENLAMBDA (A J)
+                            [CHECK (AND (ARRAYP A)
+                                        (EQ 0 (fetch (ARRAYP ORIG) of A))
+                                        (EQ \ST.POS16 (fetch (ARRAYP TYP) of A]
+                            (CHECK (IGREATERP (fetch (ARRAYP LENGTH) of A)
+                                          J))
+                            (\GETBASE (fetch (ARRAYP BASE) of A)
+                                   (IPLUS (fetch (ARRAYP OFFST) of A)
+                                          J))))
 )
 
 (RPAQQ BLOCKGCTYPECONSTANTS ((CODEBLOCK.GCT 2)
-                                 (PTRBLOCK.GCT 1)
-                                 (UNBOXEDBLOCK.GCT 0)))
+                             (PTRBLOCK.GCT 1)
+                             (UNBOXEDBLOCK.GCT 0)))
 (DECLARE%: EVAL@COMPILE 
 
 (RPAQQ CODEBLOCK.GCT 2)
@@ -1348,33 +1452,24 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
        (UNBOXEDBLOCK.GCT 0))
 )
 
-(RPAQQ ARRAYCONSTANTS (\ArrayBlockHeaderCells \ArrayBlockHeaderWords \ArrayBlockTrailerCells 
-                                 \ArrayBlockTrailerWords (\ArrayBlockOverheadCells (IPLUS 
-                                                                               \ArrayBlockHeaderCells
-                                                                                          
-                                                                              \ArrayBlockTrailerCells
-                                                                                          ))
-                                 (\ArrayBlockOverheadWords (IPLUS \ArrayBlockHeaderWords 
-                                                                  \ArrayBlockTrailerWords))
-                                 \ArrayBlockLinkingCells
-                                 (\MinArrayBlockSize (IPLUS \ArrayBlockOverheadCells 
-                                                            \ArrayBlockLinkingCells))
-                                 (\MaxArrayBlockSize 65535)
-                                 (\MaxArrayNCells (IDIFFERENCE \MaxArrayBlockSize 
-                                                         \ArrayBlockOverheadCells))
-                                 \MaxArrayLen
-                                 (\ABPASSWORDSHIFT 3)
-                                 (\ArrayBlockPassword (LRSH 43690 \ABPASSWORDSHIFT))
-                                 (\FreeArrayFlagWord (LOGOR (LLSH \ArrayBlockPassword 
-                                                                  \ABPASSWORDSHIFT)
-                                                            (LLSH UNBOXEDBLOCK.GCT 1)))
-                                 (\UsedArrayFlagWord (LOGOR (LLSH \ArrayBlockPassword 
-                                                                  \ABPASSWORDSHIFT)
-                                                            1))
-                                 (\CodeArrayFlagWord (LOGOR (LLSH \ArrayBlockPassword 
-                                                                  \ABPASSWORDSHIFT)
-                                                            (LLSH CODEBLOCK.GCT 1)
-                                                            1))))
+(RPAQQ ARRAYCONSTANTS
+       (\ArrayBlockHeaderCells \ArrayBlockHeaderWords \ArrayBlockTrailerCells \ArrayBlockTrailerWords
+              (\ArrayBlockOverheadCells (IPLUS \ArrayBlockHeaderCells \ArrayBlockTrailerCells))
+              (\ArrayBlockOverheadWords (IPLUS \ArrayBlockHeaderWords \ArrayBlockTrailerWords))
+              \ArrayBlockLinkingCells
+              (\MinArrayBlockSize (IPLUS \ArrayBlockOverheadCells \ArrayBlockLinkingCells))
+              (\MaxArrayBlockSize 65535)
+              (\MaxArrayNCells (IDIFFERENCE \MaxArrayBlockSize \ArrayBlockOverheadCells))
+              \MaxArrayLen
+              (\ABPASSWORDSHIFT 3)
+              (\ArrayBlockPassword (LRSH 43690 \ABPASSWORDSHIFT))
+              (\FreeArrayFlagWord (LOGOR (LLSH \ArrayBlockPassword \ABPASSWORDSHIFT)
+                                         (LLSH UNBOXEDBLOCK.GCT 1)))
+              (\UsedArrayFlagWord (LOGOR (LLSH \ArrayBlockPassword \ABPASSWORDSHIFT)
+                                         1))
+              (\CodeArrayFlagWord (LOGOR (LLSH \ArrayBlockPassword \ABPASSWORDSHIFT)
+                                         (LLSH CODEBLOCK.GCT 1)
+                                         1))))
 (DECLARE%: EVAL@COMPILE 
 
 (RPAQQ \ArrayBlockHeaderCells 1)
@@ -1404,14 +1499,14 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
 (RPAQ \ArrayBlockPassword (LRSH 43690 \ABPASSWORDSHIFT))
 
 (RPAQ \FreeArrayFlagWord (LOGOR (LLSH \ArrayBlockPassword \ABPASSWORDSHIFT)
-                                    (LLSH UNBOXEDBLOCK.GCT 1)))
+                                (LLSH UNBOXEDBLOCK.GCT 1)))
 
 (RPAQ \UsedArrayFlagWord (LOGOR (LLSH \ArrayBlockPassword \ABPASSWORDSHIFT)
-                                    1))
+                                1))
 
 (RPAQ \CodeArrayFlagWord (LOGOR (LLSH \ArrayBlockPassword \ABPASSWORDSHIFT)
-                                    (LLSH CODEBLOCK.GCT 1)
-                                    1))
+                                (LLSH CODEBLOCK.GCT 1)
+                                1))
 
 
 (CONSTANTS \ArrayBlockHeaderCells \ArrayBlockHeaderWords \ArrayBlockTrailerCells 
@@ -1435,13 +1530,13 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
 )
 
 (RPAQQ ARRAYTYPES ((\ST.BYTE 0)
-                       (\ST.POS16 1)
-                       (\ST.INT32 2)
-                       (\ST.CODE 4)
-                       (\ST.PTR 6)
-                       (\ST.FLOAT 7)
-                       (\ST.BIT 8)
-                       (\ST.PTR2 11)))
+                   (\ST.POS16 1)
+                   (\ST.INT32 2)
+                   (\ST.CODE 4)
+                   (\ST.PTR 6)
+                   (\ST.FLOAT 7)
+                   (\ST.BIT 8)
+                   (\ST.PTR2 11)))
 (DECLARE%: EVAL@COMPILE 
 
 (RPAQQ \ST.BYTE 0)
@@ -1487,52 +1582,51 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
 (DECLARE%: EVAL@COMPILE
 
 (BLOCKRECORD SEQUENCEDESCRIPTOR ((ORIG BITS 1)
-                                     (NIL BITS 1)
-                                     (READONLY FLAG)
-                                     (NIL BITS 1)
-                                     (BASE POINTER)
-                                     (TYP BITS 4)
-                                     (NIL BITS 4)
-                                     (LENGTH BITS 24)
-                                     (OFFST FIXP)))
+                                 (NIL BITS 1)
+                                 (READONLY FLAG)
+                                 (NIL BITS 1)
+                                 (BASE POINTER)
+                                 (TYP BITS 4)
+                                 (NIL BITS 4)
+                                 (LENGTH BITS 24)
+                                 (OFFST FIXP)))
 
 (DATATYPE ARRAYP (
-                      (* ;; "Describes an INTERLISP ARRAYP, as opposed to a CL array.")
+                  (* ;; "Describes an INTERLISP ARRAYP, as opposed to a CL array.")
 
-                      (ORIG BITS 1)                          (* ; "Origin, 0 or 1")
-                      (NIL BITS 1)
-                      (READONLY FLAG)                        (* ; "probably no READONLY arrays now")
-                      (NIL BITS 1)
-                      (BASE POINTER)
-                      (TYP BITS 4)                           (* ; "Type of the contents")
-                      (NIL BITS 4)
-                      (LENGTH BITS 24)                       (* ; "Array's length")
-                      (OFFST FIXP)                           (* ; 
-                                                   "Offset from BASE where the data really starts.")
-                      )
+                  (ORIG BITS 1)                              (* ; "Origin, 0 or 1")
+                  (NIL BITS 1)
+                  (READONLY FLAG)                            (* ; "probably no READONLY arrays now")
+                  (NIL BITS 1)
+                  (BASE POINTER)
+                  (TYP BITS 4)                               (* ; "Type of the contents")
+                  (NIL BITS 4)
+                  (LENGTH BITS 24)                           (* ; "Array's length")
+                  (OFFST FIXP)                               (* ; 
+                                                     "Offset from BASE where the data really starts.")
+                  )
 
-                     (* ;; "note that while ARRAYP is a DATATYPE, the allocation of it actually happens at MAKEINIT time under INITDATATYPE{NAMES}")
+                 (* ;; "note that while ARRAYP is a DATATYPE, the allocation of it actually happens at MAKEINIT time under INITDATATYPE{NAMES}")
 
-                     )
+                 )
 
 (BLOCKRECORD ARRAYBLOCK ((PASSWORD BITS 13)
-                             (GCTYPE BITS 2)                 (* ; "Unboxed, Pointers, or Code")
-                             (INUSE FLAG)
-                             (ARLEN WORD)
-                             (FWD FULLXPOINTER)              (* ; "Only when on free list")
-                             (BKWD FULLXPOINTER))
-                            (BLOCKRECORD ARRAYBLOCK ((ABFLAGS WORD)
+                         (GCTYPE BITS 2)                     (* ; "Unboxed, Pointers, or Code")
+                         (INUSE FLAG)
+                         (ARLEN WORD)
+                         (FWD FULLXPOINTER)                  (* ; "Only when on free list")
+                         (BKWD FULLXPOINTER))
+                        (BLOCKRECORD ARRAYBLOCK ((ABFLAGS WORD)
                                                              (* ; "Used for header and trailer")
-                                                     ))
-                            [ACCESSFNS ARRAYBLOCK ((DAT (\ADDBASE DATUM \ArrayBlockHeaderWords))
-                                                   (TRAILER (\ADDBASE2 DATUM
-                                                                   (IDIFFERENCE (fetch
-                                                                                 (ARRAYBLOCK ARLEN)
-                                                                                   of DATUM)
+                                                 ))
+                        [ACCESSFNS ARRAYBLOCK ((DAT (\ADDBASE DATUM \ArrayBlockHeaderWords))
+                                               (TRAILER (\ADDBASE2 DATUM (IDIFFERENCE
+                                                                          (fetch (ARRAYBLOCK ARLEN)
+                                                                             of DATUM)
                                                                           \ArrayBlockTrailerCells]
-                            (TYPE? (AND (EQ 0 (NTYPX DATUM))
-                                            (IGEQ (\HILOC DATUM)
-                                                  \FirstArraySegment))))
+                        (TYPE? (AND (EQ 0 (NTYPX DATUM))
+                                    (IGEQ (\HILOC DATUM)
+                                          \FirstArraySegment))))
 )
 
 (/DECLAREDATATYPE 'ARRAYP '((BITS 1)
@@ -2273,8 +2367,8 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
 (DECLARE%: EVAL@COMPILE
 
 (BLOCKRECORD SAFTABLE ((SAFITEMS WORD)
-                           (NIL WORD)
-                           (SAFCELLS FIXP)))
+                       (NIL WORD)
+                       (SAFCELLS FIXP)))
 )
 )
 
@@ -2484,7 +2578,7 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
 (DECLARE%: EVAL@COMPILE DONTCOPY 
 (* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: EVAL@COMPILE 
 
-(PUTPROPS HUNKSIZEFROMNUMBER MACRO ((NTYPX)
+(PUTPROPS HUNKSIZEFROMNUMBER MACRO ((NTYPX)
                                     (FOLDLO (fetch DTDSIZE of (\GETDTD NTYPX))
                                            WORDSPERCELL)))
 )
@@ -2494,8 +2588,7 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
 
 (DECLARE%: EVAL@COMPILE 
 
-(RPAQQ \HUNK.UNBOXEDSIZES 
-       (1 2 3 4 5 6 7 8 9 10 12 14 16 20 24 28 32 40 48 64))
+(RPAQQ \HUNK.UNBOXEDSIZES (1 2 3 4 5 6 7 8 9 10 12 14 16 20 24 28 32 40 48 64))
 
 (RPAQQ \HUNK.CODESIZES (12 16 20 24 28 32 36 42 50 64))
 
@@ -2721,49 +2814,49 @@ Copyright (c) 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992,
 (DECLARE%: DONTCOPY 
 
 (ADDTOVAR INITVALUES (\NxtArrayPage)
-                         (\HUNKING?))
+                     (\HUNKING?))
 
 (ADDTOVAR INITPTRS (\FREEBLOCKBUCKETS)
-                       (\ArrayFrLst)
-                       (\ArrayFrLst2)
-                       (\UNBOXEDHUNK.TYPENUM.TABLE)
-                       (\CODEHUNK.TYPENUM.TABLE)
-                       (\PTRHUNK.TYPENUM.TABLE))
+                   (\ArrayFrLst)
+                   (\ArrayFrLst2)
+                   (\UNBOXEDHUNK.TYPENUM.TABLE)
+                   (\CODEHUNK.TYPENUM.TABLE)
+                   (\PTRHUNK.TYPENUM.TABLE))
 
 (ADDTOVAR INEWCOMS (FNS \#BLOCKDATACELLS \PREFIXALIGNMENT? \ALLOCBLOCK \MAIKO.ALLOCBLOCK 
-                            \ALLOCBLOCK.NEW \MAKEFREEARRAYBLOCK \MERGEBACKWARD \LINKBLOCK \ALLOCHUNK)
-                       (FNS PREINITARRAYS POSTINITARRAYS FILEARRAYBASE FILEBLOCKTRAILER FILECODEBLOCK
-                            FILEPATCHBLOCK)
-                       (FNS \SETUP.HUNK.TYPENUMBERS \COMPUTE.HUNK.TYPEDECLS \TURN.ON.HUNKING 
-                            \SETUP.TYPENUM.TABLE))
+                        \ALLOCBLOCK.NEW \MAKEFREEARRAYBLOCK \MERGEBACKWARD \LINKBLOCK \ALLOCHUNK)
+                   (FNS PREINITARRAYS POSTINITARRAYS FILEARRAYBASE FILEBLOCKTRAILER FILECODEBLOCK 
+                        FILEPATCHBLOCK)
+                   (FNS \SETUP.HUNK.TYPENUMBERS \COMPUTE.HUNK.TYPEDECLS \TURN.ON.HUNKING 
+                        \SETUP.TYPENUM.TABLE))
 
 (ADDTOVAR MKI.SUBFNS (\IN.MAKEINIT . T)
-                         (\ALLOCBLOCK.OLD . NILL)
-                         (\MERGEFORWARD . NILL)
-                         (\FIXCODENUM . I.FIXUPNUM)
-                         (\FIXCODESYM . I.FIXUPSYM)
-                         (\FIXCODEPTR . I.FIXUPPTR)
-                         (\CHECKARRAYBLOCK . NILL)
-                         (\ARRAYMERGING PROGN NIL))
+                     (\ALLOCBLOCK.OLD . NILL)
+                     (\MERGEFORWARD . NILL)
+                     (\FIXCODENUM . I.FIXUPNUM)
+                     (\FIXCODESYM . I.FIXUPSYM)
+                     (\FIXCODEPTR . I.FIXUPPTR)
+                     (\CHECKARRAYBLOCK . NILL)
+                     (\ARRAYMERGING PROGN NIL))
 
 (ADDTOVAR EXPANDMACROFNS \ADDBASE2 \ADDBASE4 HUNKSIZEFROMNUMBER BUCKETINDEX FREEBLOCKCHAIN.N)
 
 (ADDTOVAR RDCOMS (FNS \CHECKARRAYBLOCK \PARSEARRAYSPACE \PARSEARRAYSPACE1))
 
 (ADDTOVAR RD.SUBFNS (EQPTR . EQUAL)
-                        (ARRAYBLOCKCHECKING . T))
+                    (ARRAYBLOCKCHECKING . T))
 
 (ADDTOVAR RDPTRS (\FREEBLOCKBUCKETS))
 
 (ADDTOVAR RDVALS (\ArrayFrLst)
-                     (\ArrayFrLst2))
+                 (\ArrayFrLst2))
 EVAL@COMPILE 
 
-(ADDTOVAR DONTCOMPILEFNS PREINITARRAYS POSTINITARRAYS FILEARRAYBASE FILEBLOCKTRAILER 
-                                   FILECODEBLOCK FILEPATCHBLOCK)
+(ADDTOVAR DONTCOMPILEFNS PREINITARRAYS POSTINITARRAYS FILEARRAYBASE FILEBLOCKTRAILER FILECODEBLOCK 
+                               FILEPATCHBLOCK)
 
 (ADDTOVAR DONTCOMPILEFNS \SETUP.HUNK.TYPENUMBERS \COMPUTE.HUNK.TYPEDECLS \TURN.ON.HUNKING 
-                                   \SETUP.TYPENUM.TABLE)
+                               \SETUP.TYPENUM.TABLE)
 )
 
 
@@ -2937,32 +3030,174 @@ EVAL@COMPILE
 
 (ADDTOVAR LAMA CL::PUTHASH HARRAYPROP)
 )
-(PUTPROPS LLARRAYELT COPYRIGHT ("Venue & Xerox Corporation" 1982 1983 1984 1985 1986 1987 1988 1989 
-1990 1991 1992 1993 1994))
+(PRETTYCOMPRINT LLARRAYELTCOMS)
+
+(RPAQQ LLARRAYELTCOMS
+       [(COMS                                                (* ; 
+                       "Because we use the UNLESSINEW macro in this file, we need it when compiling.")
+              (DECLARE%: EVAL@COMPILE DONTCOPY (FILES (SOURCE)
+                                                      RENAMEMACROS)))
+        (PROPS (LLARRAYELT FILETYPE))
+        (COMS                                                (* ; "ARRAY entries")
+              (FNS AIN AOUT ARRAY ARRAYSIZE ARRAYTYP ARRAYORIG COPYARRAY)
+              (DECLARE%: DONTCOPY (MACROS ARRAYSIZE))
+              (FNS ELT ELTD SETA SETD SUBARRAY))
+        [COMS                                                (* ; "HASHARRAY entries")
+              (FNS HARRAY HASHARRAY HARRAYP HARRAYPROP HARRAYSIZE CLRHASH MAPHASH GETHASH PUTHASH 
+                   CL::PUTHASH REMHASH \HASHRECLAIM \HASHACCESS REHASH \COPYHARRAYP 
+                   \HASHTABLE.DEFPRINT)
+              (COMS                                          (* ; "Originally on MACHINEINDEPENDENT")
+                    (FNS DMPHASH HASHOVERFLOW)
+                    (DECLARE%: EVAL@COMPILE DONTCOPY (MACROS HASHOVERFLOW.ARRAYTEST 
+                                                            HASHOVERFLOW.UPDATEARRAY)))
+              (FNS STRINGHASHBITS STRING-EQUAL-HASHBITS)
+              (FNS \STRINGHASHBITS-UFN \STRING-EQUAL-HASHBITS-UFN)
+              (DECLARE%: DONTCOPY (EXPORT (RECORDS HARRAYP)
+                                         (MACROS \EQHASHINGBITS))
+                     (RECORDS HASHSLOT)
+                     (MACROS \FIRSTINDEX \HASHSLOT \REPROBE)
+                     (CONSTANTS (CELLSPERSLOT 2))
+                     (GLOBALVARS \HASH.NULL.VALUE SYSHASHARRAY))
+              [DECLARE%: DONTEVAL@LOAD DOCOPY (P (DEFPRINT 'HARRAYP '\HASHTABLE.DEFPRINT]
+              (INITRECORDS HARRAYP)
+              (SYSRECORDS HARRAYP)
+              (VARS (\HASH.NULL.VALUE '\Hash\Null\Value\]
+        (COMS                                                (* ; "System entries for CODE")
+              (FNS \CODEARRAY \FIXCODENUM \FIXCODEPTR \FIXCODESYM))
+        (COMS                                                (* ; "Internal")
+              (DECLARE%: DONTCOPY (MACROS EQPTR BUCKETINDEX FREEBLOCKCHAIN.N)
+                     (CONSTANTS \MAXBUCKETINDEX)
+                                                             (* ; 
+                                  "\ADDBASE2 and \ADDBASE4 do \ADDBASE of 2*N and 4*N without boxing")
+                     (EXPORT (MACROS \ADDBASE2 \ADDBASE4 HUNKSIZEFROMNUMBER \BYTELT \BYTESETA 
+                                    \WORDELT)
+                            (CONSTANTS * BLOCKGCTYPECONSTANTS)
+                            (CONSTANTS * ARRAYCONSTANTS)
+                            (CONSTANTS * ARRAYTYPES)
+                            (CONSTANTS \MAX.CELLSPERHUNK)
+                            (CONSTANTS (\IN.MAKEINIT))
+                            (RECORDS SEQUENCEDESCRIPTOR ARRAYP ARRAYBLOCK)
+                            (GLOBALVARS \NxtArrayPage \FREEBLOCKBUCKETS \HUNKING?))
+                     (GLOBALVARS \ArrayFrLst \ArrayFrLst2 \RECLAIM.COUNTDOWN))
+              (FNS \ALLOCBLOCK \MAIKO.ALLOCBLOCK \ALLOCBLOCK.OLD \ALLOCBLOCK.NEW \PREFIXALIGNMENT? 
+                   \MAKEFREEARRAYBLOCK \DELETEBLOCK? \LINKBLOCK \MERGEBACKWARD \MERGEFORWARD 
+                   \ARRAYBLOCKMERGER \#BLOCKDATACELLS \COPYARRAYBLOCK \RECLAIMARRAYBLOCK 
+                   \ADVANCE.ARRAY.SEGMENTS)
+              (ADDVARS (\MAIKO.MOVDS (\MAIKO.ALLOCBLOCK \ALLOCBLOCK)))
+              (FNS \BYTELT \BYTESETA \WORDELT)
+              (FNS \ARRAYTYPENAME)
+              (VARS (\ARRAYMERGING T))
+              (GLOBALVARS \ARRAYMERGING)
+              (COMS                                          (* ; "for STORAGE")
+                    (FNS \SHOW.ARRAY.FREELISTS)
+                    (INITVARS (\ABSTORAGETABLE NIL))
+                    (GLOBALVARS \ABSTORAGETABLE)
+                    (DECLARE%: DONTCOPY (RECORDS SAFTABLE)))
+              (COMS                                          (* ; "Debugging and RDSYS")
+                    (FNS \CHECKARRAYBLOCK \PARSEARRAYSPACE \PARSEARRAYSPACE1)
+                    (INITVARS (ARRAYBLOCKCHECKING))
+                    (GLOBALVARS ARRAYBLOCKCHECKING)))
+        (COMS                                                (* ; "Basic hunking")
+              (FNS \ALLOCHUNK)
+              (VARS \HUNK.PTRSIZES)
+                                                             (* ; 
+                                    "Compiler needs \HUNK.PTRSIZES for creating closure environments")
+              (DECLARE%: EVAL@COMPILE DONTCOPY (EXPORT (MACROS HUNKSIZEFROMNUMBER))
+                     (CONSTANTS \HUNK.UNBOXEDSIZES \HUNK.CODESIZES \HUNK.PTRSIZES)
+                     (GLOBALVARS \HUNKING? \UNBOXEDHUNK.TYPENUM.TABLE \CODEHUNK.TYPENUM.TABLE 
+                            \PTRHUNK.TYPENUM.TABLE))
+              (COMS 
+                    (* ;; "Keep a list of all the hunks rejected due to poor page-straddling alignment, or to code falling off the end of a doublepage")
+
+                    (VARS (\HUNKREJECTS))
+                    (GLOBALVARS \HUNKREJECTS)))
+        [COMS                                                (* ; "for MAKEINIT")
+              (FNS PREINITARRAYS POSTINITARRAYS FILEARRAYBASE FILEBLOCKTRAILER FILECODEBLOCK 
+                   FILEPATCHBLOCK)
+              (COMS                                          (* ; "Hunk Initialization")
+                    (FNS \SETUP.HUNK.TYPENUMBERS \COMPUTE.HUNK.TYPEDECLS \TURN.ON.HUNKING 
+                         \SETUP.TYPENUM.TABLE))
+              (DECLARE%: DONTCOPY (ADDVARS (INITVALUES (\NxtArrayPage)
+                                                  (\HUNKING?))
+                                         (INITPTRS (\FREEBLOCKBUCKETS)
+                                                (\ArrayFrLst)
+                                                (\ArrayFrLst2)
+                                                (\UNBOXEDHUNK.TYPENUM.TABLE)
+                                                (\CODEHUNK.TYPENUM.TABLE)
+                                                (\PTRHUNK.TYPENUM.TABLE))
+                                         (INEWCOMS (FNS \#BLOCKDATACELLS \PREFIXALIGNMENT? 
+                                                        \ALLOCBLOCK \MAIKO.ALLOCBLOCK \ALLOCBLOCK.NEW
+                                                        \MAKEFREEARRAYBLOCK \MERGEBACKWARD \LINKBLOCK
+                                                        \ALLOCHUNK)
+                                                (FNS PREINITARRAYS POSTINITARRAYS FILEARRAYBASE 
+                                                     FILEBLOCKTRAILER FILECODEBLOCK FILEPATCHBLOCK)
+                                                (FNS \SETUP.HUNK.TYPENUMBERS \COMPUTE.HUNK.TYPEDECLS
+                                                     \TURN.ON.HUNKING \SETUP.TYPENUM.TABLE))
+                                         (MKI.SUBFNS (\IN.MAKEINIT . T)
+                                                (\ALLOCBLOCK.OLD . NILL)
+                                                (\MERGEFORWARD . NILL)
+                                                (\FIXCODENUM . I.FIXUPNUM)
+                                                (\FIXCODESYM . I.FIXUPSYM)
+                                                (\FIXCODEPTR . I.FIXUPPTR)
+                                                (\CHECKARRAYBLOCK . NILL)
+                                                (\ARRAYMERGING PROGN NIL))
+                                         (EXPANDMACROFNS \ADDBASE2 \ADDBASE4 HUNKSIZEFROMNUMBER 
+                                                BUCKETINDEX FREEBLOCKCHAIN.N)
+                                         (RDCOMS (FNS \CHECKARRAYBLOCK \PARSEARRAYSPACE 
+                                                      \PARSEARRAYSPACE1))
+                                         (RD.SUBFNS (EQPTR . EQUAL)
+                                                (ARRAYBLOCKCHECKING . T))
+                                         (RDPTRS (\FREEBLOCKBUCKETS))
+                                         (RDVALS (\ArrayFrLst)
+                                                (\ArrayFrLst2)))
+                     EVAL@COMPILE
+                     (ADDVARS (DONTCOMPILEFNS PREINITARRAYS POSTINITARRAYS FILEARRAYBASE 
+                                     FILEBLOCKTRAILER FILECODEBLOCK FILEPATCHBLOCK)
+                            (DONTCOMPILEFNS \SETUP.HUNK.TYPENUMBERS \COMPUTE.HUNK.TYPEDECLS 
+                                   \TURN.ON.HUNKING \SETUP.TYPENUM.TABLE]
+        (COMS                                                (* ; "Debugging aids")
+              (DECLARE%: EVAL@COMPILE DONTCOPY (GLOBALVARS \ArrayFrLst)
+                     (CONSTANTS \ArrayBlockPassword)
+                     (ADDVARS (DONTCOMPILEFNS \HUNKFIT? \AB.NEXT \AB.BACK)))
+              (FNS \HUNKFIT? \AB.NEXT \AB.BACK))
+        (LOCALVARS . T)
+        (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA DMPHASH)
+                                                                             (NLAML)
+                                                                             (LAMA CL::PUTHASH 
+                                                                                   HARRAYPROP])
+(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS 
+
+(ADDTOVAR NLAMA DMPHASH)
+
+(ADDTOVAR NLAML )
+
+(ADDTOVAR LAMA CL::PUTHASH HARRAYPROP)
+)
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (9739 22117 (AIN 9749 . 12022) (AOUT 12024 . 14626) (ARRAY 14628 . 20213) (ARRAYSIZE 
-20215 . 20355) (ARRAYTYP 20357 . 20953) (ARRAYORIG 20955 . 21122) (COPYARRAY 21124 . 22115)) (22283 
-29928 (ELT 22293 . 23722) (ELTD 23724 . 24649) (SETA 24651 . 26908) (SETD 26910 . 27904) (SUBARRAY 
-27906 . 29926)) (29963 55572 (HARRAY 29973 . 30193) (HASHARRAY 30195 . 34218) (HARRAYP 34220 . 34369) 
-(HARRAYPROP 34371 . 38406) (HARRAYSIZE 38408 . 38573) (CLRHASH 38575 . 39947) (MAPHASH 39949 . 41078) 
-(GETHASH 41080 . 44660) (PUTHASH 44662 . 44893) (CL::PUTHASH 44895 . 45607) (REMHASH 45609 . 45754) (
-\HASHRECLAIM 45756 . 47539) (\HASHACCESS 47541 . 53303) (REHASH 53305 . 54029) (\COPYHARRAYP 54031 . 
-54761) (\HASHTABLE.DEFPRINT 54763 . 55570)) (55573 56129 (STRINGHASHBITS 55583 . 55740) (
-STRING-EQUAL-HASHBITS 55742 . 56127)) (56130 58192 (\STRINGHASHBITS-UFN 56140 . 57246) (
-\STRING-EQUAL-HASHBITS-UFN 57248 . 58190)) (62479 67574 (\CODEARRAY 62489 . 63319) (\FIXCODENUM 63321
- . 63986) (\FIXCODEPTR 63988 . 65048) (\FIXCODESYM 65050 . 67572)) (79255 114491 (\ALLOCBLOCK 79265 . 
-83264) (\MAIKO.ALLOCBLOCK 83266 . 87458) (\ALLOCBLOCK.OLD 87460 . 92331) (\ALLOCBLOCK.NEW 92333 . 
-95339) (\PREFIXALIGNMENT? 95341 . 98884) (\MAKEFREEARRAYBLOCK 98886 . 99481) (\DELETEBLOCK? 99483 . 
-100588) (\LINKBLOCK 100590 . 102716) (\MERGEBACKWARD 102718 . 104079) (\MERGEFORWARD 104081 . 105178) 
-(\ARRAYBLOCKMERGER 105180 . 107365) (\#BLOCKDATACELLS 107367 . 108603) (\COPYARRAYBLOCK 108605 . 
-110173) (\RECLAIMARRAYBLOCK 110175 . 112304) (\ADVANCE.ARRAY.SEGMENTS 112306 . 114489)) (114553 116986
- (\BYTELT 114563 . 115362) (\BYTESETA 115364 . 116305) (\WORDELT 116307 . 116984)) (116987 117321 (
-\ARRAYTYPENAME 116997 . 117319)) (117444 121138 (\SHOW.ARRAY.FREELISTS 117454 . 121136)) (121451 
-127201 (\CHECKARRAYBLOCK 121461 . 125836) (\PARSEARRAYSPACE 125838 . 126247) (\PARSEARRAYSPACE1 126249
- . 127199)) (127335 133601 (\ALLOCHUNK 127345 . 133599)) (134779 140675 (PREINITARRAYS 134789 . 135330
-) (POSTINITARRAYS 135332 . 138050) (FILEARRAYBASE 138052 . 138464) (FILEBLOCKTRAILER 138466 . 138761) 
-(FILECODEBLOCK 138763 . 139779) (FILEPATCHBLOCK 139781 . 140673)) (140712 146136 (
-\SETUP.HUNK.TYPENUMBERS 140722 . 141758) (\COMPUTE.HUNK.TYPEDECLS 141760 . 143040) (\TURN.ON.HUNKING 
-143042 . 143714) (\SETUP.TYPENUM.TABLE 143716 . 146134)) (148399 155000 (\HUNKFIT? 148409 . 149024) (
-\AB.NEXT 149026 . 152221) (\AB.BACK 152223 . 154998)))))
+  (FILEMAP (NIL (9935 22313 (AIN 9945 . 12218) (AOUT 12220 . 14822) (ARRAY 14824 . 20409) (ARRAYSIZE 
+20411 . 20551) (ARRAYTYP 20553 . 21149) (ARRAYORIG 21151 . 21318) (COPYARRAY 21320 . 22311)) (22488 
+30133 (ELT 22498 . 23927) (ELTD 23929 . 24854) (SETA 24856 . 27113) (SETD 27115 . 28109) (SUBARRAY 
+28111 . 30131)) (30168 55777 (HARRAY 30178 . 30398) (HASHARRAY 30400 . 34423) (HARRAYP 34425 . 34574) 
+(HARRAYPROP 34576 . 38611) (HARRAYSIZE 38613 . 38778) (CLRHASH 38780 . 40152) (MAPHASH 40154 . 41283) 
+(GETHASH 41285 . 44865) (PUTHASH 44867 . 45098) (CL::PUTHASH 45100 . 45812) (REMHASH 45814 . 45959) (
+\HASHRECLAIM 45961 . 47744) (\HASHACCESS 47746 . 53508) (REHASH 53510 . 54234) (\COPYHARRAYP 54236 . 
+54966) (\HASHTABLE.DEFPRINT 54968 . 55775)) (55827 61097 (DMPHASH 55837 . 57451) (HASHOVERFLOW 57453
+ . 61095)) (61873 62429 (STRINGHASHBITS 61883 . 62040) (STRING-EQUAL-HASHBITS 62042 . 62427)) (62430 
+64492 (\STRINGHASHBITS-UFN 62440 . 63546) (\STRING-EQUAL-HASHBITS-UFN 63548 . 64490)) (68675 73770 (
+\CODEARRAY 68685 . 69515) (\FIXCODENUM 69517 . 70182) (\FIXCODEPTR 70184 . 71244) (\FIXCODESYM 71246
+ . 73768)) (84170 119406 (\ALLOCBLOCK 84180 . 88179) (\MAIKO.ALLOCBLOCK 88181 . 92373) (
+\ALLOCBLOCK.OLD 92375 . 97246) (\ALLOCBLOCK.NEW 97248 . 100254) (\PREFIXALIGNMENT? 100256 . 103799) (
+\MAKEFREEARRAYBLOCK 103801 . 104396) (\DELETEBLOCK? 104398 . 105503) (\LINKBLOCK 105505 . 107631) (
+\MERGEBACKWARD 107633 . 108994) (\MERGEFORWARD 108996 . 110093) (\ARRAYBLOCKMERGER 110095 . 112280) (
+\#BLOCKDATACELLS 112282 . 113518) (\COPYARRAYBLOCK 113520 . 115088) (\RECLAIMARRAYBLOCK 115090 . 
+117219) (\ADVANCE.ARRAY.SEGMENTS 117221 . 119404)) (119468 121901 (\BYTELT 119478 . 120277) (\BYTESETA
+ 120279 . 121220) (\WORDELT 121222 . 121899)) (121902 122236 (\ARRAYTYPENAME 121912 . 122234)) (122359
+ 126053 (\SHOW.ARRAY.FREELISTS 122369 . 126051)) (126358 132108 (\CHECKARRAYBLOCK 126368 . 130743) (
+\PARSEARRAYSPACE 130745 . 131154) (\PARSEARRAYSPACE1 131156 . 132106)) (132242 138508 (\ALLOCHUNK 
+132252 . 138506)) (139686 145582 (PREINITARRAYS 139696 . 140237) (POSTINITARRAYS 140239 . 142957) (
+FILEARRAYBASE 142959 . 143371) (FILEBLOCKTRAILER 143373 . 143668) (FILECODEBLOCK 143670 . 144686) (
+FILEPATCHBLOCK 144688 . 145580)) (145619 151043 (\SETUP.HUNK.TYPENUMBERS 145629 . 146665) (
+\COMPUTE.HUNK.TYPEDECLS 146667 . 147947) (\TURN.ON.HUNKING 147949 . 148621) (\SETUP.TYPENUM.TABLE 
+148623 . 151041)) (153219 159820 (\HUNKFIT? 153229 . 153844) (\AB.NEXT 153846 . 157041) (\AB.BACK 
+157043 . 159818)))))
 STOP
diff --git a/sources/LLARRAYELT.LCOM b/sources/LLARRAYELT.LCOM
index 307ee508..00bd047c 100644
Binary files a/sources/LLARRAYELT.LCOM and b/sources/LLARRAYELT.LCOM differ
diff --git a/sources/LOADFNS b/sources/LOADFNS
index 3bff0dfb..d9afbb54 100644
--- a/sources/LOADFNS
+++ b/sources/LOADFNS
@@ -1,20 +1,18 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
 
-(FILECREATED " 2-May-2022 11:38:55" {DSK}<home>larry>medley>sources>LOADFNS.;2 47218  
+(FILECREATED "25-Feb-2026 01:03:38" {WMEDLEY}<sources>LOADFNS.;8 47522  
 
-      :CHANGES-TO (FNS SCANFILEHELP)
+      :EDIT-BY rmk
 
-      :PREVIOUS-DATE "16-Apr-2018 17:38:16" {DSK}<home>larry>medley>sources>LOADFNS.;1)
+      :CHANGES-TO (VARS LOADFNSCOMS)
 
+      :PREVIOUS-DATE "23-Feb-2026 00:49:17" {WMEDLEY}<sources>LOADFNS.;7)
 
-(* ; "
-Copyright (c) 1983-1984, 1986-1987, 1989-1990, 2018, 2022 by Venue & Xerox Corporation.
-")
 
 (PRETTYCOMPRINT LOADFNSCOMS)
 
 (RPAQQ LOADFNSCOMS
-       [(FNS LOADFROM LOADBLOCK GETBLOCKDEC LOADCOMP LOADCOMP? LOADVARS LOADEFS LOADFILEMAP LOADFNS 
+       [(FNS LOADFROM LOADBLOCK GETBLOCKDEC LOADCOMP LOADCOMP? LOADVARS LOADFILEMAP LOADFNS 
              LOADFNS-FINDFILE LOADFNS-MAKELIST)
         (FNS LOADFNSCAN SCANFILE0 SCANCOMPILEDFN SCANDEFINEQ SCANEXP SCANDECLARECOLON SCANFILE1 
              SCANFILE2 TMPSUBFN RETRYSCAN SCANFILEHELP)
@@ -98,10 +96,6 @@ Copyright (c) 1983-1984, 1986-1987, 1989-1990, 2018, 2022 by Venue & Xerox Corpo
   [LAMBDA (VARS FILE LDFLG)
     (LOADFNS NIL FILE LDFLG VARS])
 
-(LOADEFS
-  [LAMBDA (FNS FILE)                                         (* wt%: " 9-APR-80 20:27")
-    (LOADFNS FNS FILE 'GETDEF])
-
 (LOADFILEMAP
   [LAMBDA (FILE)                                             (* wt%: "16-MAY-79 22:05")
           
@@ -110,107 +104,107 @@ Copyright (c) 1983-1984, 1986-1987, 1989-1990, 2018, 2022 by Venue & Xerox Corpo
     (LOADFNS NIL FILE NIL 'FILEMAP])
 
 (LOADFNS
-  [LAMBDA (FNS FILE LDFLG VARS)                              (* bvm%: "17-Nov-86 23:28")
+  [LAMBDA (FNS FILE LDFLG VARS)                              (* ; "Edited 23-Feb-2026 00:49 by rmk")
+                                                             (* bvm%: "17-Nov-86 23:28")
 
-(* ;;; "All of LOADVARS, LOADCOMP, LOADFILEMAP, LOADFROM come thru here.")
+(* ;;; "All of LOADVARS, LOADCOMP, LOADFILEMAP, LOADFROM come thru here.")
 
-    (DECLARE (SPECVARS FILE LDFLG VARS))                     (* ; "Used free by RETRYSCAN")
+    (DECLARE (SPECVARS FILE LDFLG VARS))                     (* ; "Used free by RETRYSCAN")
     (RESETLST
-     (PROG ((*PACKAGE* *INTERLISP-PACKAGE*)
-            (DFNFLG DFNFLG)
-            (BUILDMAPFLG BUILDMAPFLG)
-            (FILEPKGFLG FILEPKGFLG)
-            (ADDSPELLFLG ADDSPELLFLG)
-            (LISPXHIST LISPXHIST)
-            (FILECREATEDLST)
-            (PRLST (AND FILEPKGFLG (FILEPKGCHANGES)))
-            INSTREAM FNLST VARLST DONELST ROOTNAME FILEMAP TEM FILEMAPEND FILECREATEDLOC FILENV 
-            RESETSAVER MAPUPDATED)
-           (DECLARE (SPECVARS *PACKAGE* DFNFLG BUILDMAPFLG FILEPKGFLG ADDSPELLFLG LISPXHIST FNLST 
-                           VARLST DONELST FILECREATEDLST FILECREATEDLOC))
-                                                             (* ; 
-                       "FILECREATEDLST is set by SCANEXP when it encounters a FILECREATED expression")
-       TOP (COND
-              ((OR (EQ LDFLG 'EXPRESSIONS)
-                   (EQ LDFLG 'GETDEF)
-                   (MEMB LDFLG LOADOPTIONS))
-               (SETQ DFNFLG LDFLG))
-              ((AND DWIMFLG (SETQ TEM (FIXSPELL LDFLG NIL LOADOPTIONS T)))
-               (SETQ LDFLG TEM)
-               (SETQ DFNFLG LDFLG))
-              (T (SETQ LDFLG (ERROR "unrecognized load option" LDFLG))
-                 (GO TOP)))
-           (COND
-              ((EQ LDFLG 'SYSLOAD)
-               (SETQ DFNFLG T)
-               (SETQ ADDSPELLFLG NIL)
-               (SETQ BUILDMAPFLG NIL)
-               (SETQ FILEPKGFLG NIL)
-               (SETQ LISPXHIST NIL)))
-           [AND LISPXHIST (COND
-                             ((SETQ TEM (FMEMB 'SIDE LISPXHIST))
-                              (FRPLACA (CADR TEM)
-                                     -1))
-                             (T (LISPXPUT 'SIDE (LIST -1)
-                                       NIL LISPXHIST]        (* ; 
-                    "So that UNDOSAVE will keep saving regardless of how many undosaves are involved")
-           (SETQ FNLST (LOADFNS-MAKELIST FNS T))             (* ; "Get list of functions")
-           [COND
-              ((NULL FILE)                                   (* ; 
-                                                  "Infer what file caller meant (this is a feature!)")
-               (SETQ FILE (LOADFNS-FINDFILE (CAR FNLST]
-       RETRY
-           [RESETSAVE NIL (SETQ RESETSAVER (LIST 'CLOSEF? (SETQ INSTREAM (OPENSTREAM FILE
-                                                                                'INPUT]
-                                                             (* ; 
-                                  "CLOSEF?  not CLOSEF because UPDATEFILEMAP might close file for us")
-           (RESETSAVE (INPUT INSTREAM))
-           (SETQ FILE (FULLNAME INSTREAM))                   (* ; 
-  "Gets full file name.  Also note that there may have been some error correction done in OPENSTREAM")
-           (COND
-              ((NOT (RANDACCESSP INSTREAM))
-               (SETQ FILE (ERROR FILE "not a random access file"))
-               (GO RETRY)))
-           (SETFILEPTR INSTREAM 0)
-           (SETQ ROOTNAME (ROOTFILENAME FILE))
-           (CL:MULTIPLE-VALUE-SETQ (FILENV FILEMAP FILECREATEDLOC FILECREATEDLST)
-                  (GET-ENVIRONMENT-AND-FILEMAP INSTREAM))
-           (SETQ VARLST (SELECTQ VARS
-                            (NIL NIL)
-                            (VARS                            (* ; 
-                                                         "Means load, i.e., evaluate, ALL rpaq/rpaqq")
-                                  'VARS)
-                            (FNS/VARS (LIST (FILECOMS ROOTNAME 'COMS)
-                                            (FILECOMS ROOTNAME 'BLOCKS)))
-                            (LOADCOMP                        (* ; 
-                                     "evaluate the EVAL@COMPILE expresions, notice the fns and vars.")
-                                      (SETQ FNLST T)
-                                      VARS)
-                            (FILEMAP                         (* ; 
-                                          "Return the filemap, or build one if not already available")
-                                     (if (AND FILEMAP (NULL (CAR FILEMAP)))
-                                         then (RETURN FILEMAP)
-                                       elseif (NULL BUILDMAPFLG)
-                                         then (RETURN NIL))
-                                     'FILEMAP)
-                            (LOADFROM 
-          
-          (* ;; "evaluate all non-defineq expressions, but just return file name as value, i.e.  dont bother adding to donelst")
+        [PROG ((*PACKAGE* *INTERLISP-PACKAGE*)
+               (DFNFLG DFNFLG)
+               (BUILDMAPFLG BUILDMAPFLG)
+               (FILEPKGFLG FILEPKGFLG)
+               (ADDSPELLFLG ADDSPELLFLG)
+               (LISPXHIST LISPXHIST)
+               (FILECREATEDLST)
+               (PRLST (AND FILEPKGFLG (FILEPKGCHANGES)))
+               INSTREAM FNLST VARLST DONELST ROOTNAME FILEMAP TEM FILEMAPEND FILECREATEDLOC FILENV 
+               RESETSAVER MAPUPDATED)
+              (DECLARE (SPECVARS *PACKAGE* DFNFLG BUILDMAPFLG FILEPKGFLG ADDSPELLFLG LISPXHIST FNLST
+                              VARLST DONELST FILECREATEDLST FILECREATEDLOC))
+                                                             (* ; 
+                       "FILECREATEDLST is set by SCANEXP when it encounters a FILECREATED expression")
+          TOP (COND
+                 ((OR (EQ LDFLG 'EXPRESSIONS)
+                      (EQ LDFLG 'GETDEF)
+                      (MEMB LDFLG LOADOPTIONS))
+                  (SETQ DFNFLG LDFLG))
+                 ((AND DWIMFLG (SETQ TEM (FIXSPELL LDFLG NIL LOADOPTIONS T)))
+                  (SETQ LDFLG TEM)
+                  (SETQ DFNFLG LDFLG))
+                 (T (SETQ LDFLG (ERROR "unrecognized load option" LDFLG))
+                    (GO TOP)))
+              (COND
+                 ((EQ LDFLG 'SYSLOAD)
+                  (SETQ DFNFLG T)
+                  (SETQ ADDSPELLFLG NIL)
+                  (SETQ BUILDMAPFLG NIL)
+                  (SETQ FILEPKGFLG NIL)
+                  (SETQ LISPXHIST NIL)))
+              [AND LISPXHIST (COND
+                                ((SETQ TEM (FMEMB 'SIDE LISPXHIST))
+                                 (FRPLACA (CADR TEM)
+                                        -1))
+                                (T (LISPXPUT 'SIDE (LIST -1)
+                                          NIL LISPXHIST]     (* ; 
+                    "So that UNDOSAVE will keep saving regardless of how many undosaves are involved")
+              (SETQ FNLST (LOADFNS-MAKELIST FNS T))          (* ; "Get list of functions")
+              [COND
+                 ((NULL FILE)                                (* ; 
+                                                  "Infer what file caller meant (this is a feature!)")
+                  (SETQ FILE (LOADFNS-FINDFILE (CAR FNLST]
+          RETRY
+              [RESETSAVE NIL (SETQ RESETSAVER (LIST 'CLOSEF? (SETQ INSTREAM (OPENSTREAM FILE
+                                                                                   'INPUT]
+                                                             (* ; 
+                                  "CLOSEF?  not CLOSEF because UPDATEFILEMAP might close file for us")
+              (RESETSAVE (INPUT INSTREAM))
+              (SETQ FILE (FULLNAME INSTREAM))                (* ; 
+  "Gets full file name.  Also note that there may have been some error correction done in OPENSTREAM")
+              (COND
+                 ((NOT (RANDACCESSP INSTREAM))
+                  (SETQ FILE (ERROR FILE "not a random access file"))
+                  (GO RETRY)))
+              (SETFILEPTR INSTREAM 0)
+              (SETQ ROOTNAME (ROOTFILENAME FILE))
+              (CL:MULTIPLE-VALUE-SETQ (FILENV FILEMAP FILECREATEDLOC FILECREATEDLST)
+                     (GET-ENVIRONMENT-AND-FILEMAP INSTREAM))
+              (\EXTERNALFORMAT INSTREAM FILENV)
+              (SETQ VARLST (SELECTQ VARS
+                               (NIL NIL)
+                               (VARS                         (* ; 
+                                                         "Means load, i.e., evaluate, ALL rpaq/rpaqq")
+                                     'VARS)
+                               (FNS/VARS (LIST (FILECOMS ROOTNAME 'COMS)
+                                               (FILECOMS ROOTNAME 'BLOCKS)))
+                               (LOADCOMP                     (* ; 
+                                     "evaluate the EVAL@COMPILE expresions, notice the fns and vars.")
+                                         (SETQ FNLST T)
+                                         VARS)
+                               (FILEMAP                      (* ; 
+                                          "Return the filemap, or build one if not already available")
+                                        (if (AND FILEMAP (NULL (CAR FILEMAP)))
+                                            then (RETURN FILEMAP)
+                                          elseif (NULL BUILDMAPFLG)
+                                            then (RETURN NIL))
+                                        'FILEMAP)
+                               (LOADFROM 
+                                         (* ;; "evaluate all non-defineq expressions, but just return file name as value, i.e.  dont bother adding to donelst")
 
-                                      'LOADFROM)
-                            (DONTCOPY                        (* ; 
-                                                       "means load all DECLARE: DONTCOPY expressions")
-                                      VARS)
-                            (LOADFNS-MAKELIST VARS)))
-           (SETQ FILEMAPEND (if FILEMAP
-                                then (CAR FILEMAP)
-                              else T))                       (* ; 
-                                                      "Remember how far the filemap scan got already")
-           [WITH-READER-ENVIRONMENT
-            FILENV
-            (SETQ FILEMAP (LOADFNSCAN FILEMAP))
+                                         'LOADFROM)
+                               (DONTCOPY                     (* ; 
+                                                       "means load all DECLARE: DONTCOPY expressions")
+                                         VARS)
+                               (LOADFNS-MAKELIST VARS)))
+              (SETQ FILEMAPEND (if FILEMAP
+                                   then (CAR FILEMAP)
+                                 else T))                    (* ; 
+                                                      "Remember how far the filemap scan got already")
+              (WITH-READER-ENVIRONMENT FILENV
+                  (SETQ FILEMAP (LOADFNSCAN FILEMAP))
 
-(* ;;; "SCANFILE0 returns a 'map' for the file.  The form of the map is (ADR ADRLST ADRLST ...) where ADR is last address scanned to in file, or NIL if entire file was scanned, or (ADR) where the scan stopped after a function in the middle of a DEFINEQ.  Each ADRLST is either of the form (ADR1 ADR2 . FN) or (ADR1 ADR2 (FN ADRX . ADRY) (FN ADRX . ADRY) ...).
+(* ;;; "SCANFILE0 returns a 'map' for the file.  The form of the map is (ADR ADRLST ADRLST ...) where ADR is last address scanned to in file, or NIL if entire file was scanned, or (ADR) where the scan stopped after a function in the middle of a DEFINEQ.  Each ADRLST is either of the form (ADR1 ADR2 . FN) or (ADR1 ADR2 (FN ADRX . ADRY) (FN ADRX . ADRY) ...).
 
 The first case corresponds to a compiled function, the second to a DEFINEQ.  In the first case, ADR1 is the address of the first character AFTER the function name in the file (for use by LAPRD) and ADR2 the address of the first character after the de definition, i.e., after LAPRD or LCSKIP has finished.
 
@@ -218,89 +212,89 @@ In the second case, ADR1 is the address of the lef paren before the DEFINEQ, and
 
 A map of non-functions is not kept because (a) it would not be of use to MAKEFILE since it always recomputes VARS, and (B) most requests for other than functions require scanning the entire file anyway, e.g. to find all RPAQQ's, and (C) the expressions are usually small compared to DEFINEQ's.")
 
-            [if FILEMAP
-                then
-                (if (NEQ FILEMAPEND (CAR FILEMAP))
-                    then                                     (* ; "something was added")
-                         (PUTFILEMAP FILE FILEMAP FILECREATEDLST)
-                         (if (AND UPDATEMAPFLG (UPDATEFILEMAP INSTREAM FILEMAP))
-                             then (SETQ MAPUPDATED T)))
-                (if (AND DWIMFLG (NOT NOSPELLFLG)
-                         (LISTP FNLST))
-                    then                                     (* ; 
-                                                       "There are still FNS left that we didn't find")
-                    (if (SETQ TEM
-                         (for X on FNLST
-                            bind [KNOWNFNS _ (for TRIPLE in (CDR FILEMAP)
-                                                join         (* ; 
-                                   "makes a list of functions found for use for spelling correction.")
-                                                     (if (LISTP (SETQ TEM (CDDR TRIPLE)))
-                                                         then 
-                                                             (* ; 
-                            "This is for normal source files, where TRIPLE = (start end . fnEntries)")
-                                                              (MAPCAR TEM (FUNCTION CAR))
-                                                       elseif TEM
-                                                         then 
-                                                             (* ; 
-                                                      "For compiled files, TRIPLE = (start end . fn)")
-                                                              (LIST TEM]
-                            when (AND (NOT (FMEMB (CAR X)
-                                                  KNOWNFNS))
-                                      (FIXSPELL (CAR X)
-                                             70 KNOWNFNS NIL X)) collect 
-          
-          (* ;; "The FMEMB check is necessary for when VARS=DEFS, as the reason that the function was not removed from FNLST may have been because this was a compiled file.")
+                  [if FILEMAP
+                      then
+                      (if (NEQ FILEMAPEND (CAR FILEMAP))
+                          then                               (* ; "something was added")
+                               (PUTFILEMAP FILE FILEMAP FILECREATEDLST)
+                               (if (AND UPDATEMAPFLG (UPDATEFILEMAP INSTREAM FILEMAP))
+                                   then (SETQ MAPUPDATED T)))
+                      (if (AND DWIMFLG (NOT NOSPELLFLG)
+                               (LISTP FNLST))
+                          then                               (* ; 
+                                                       "There are still FNS left that we didn't find")
+                          (if
+                           (SETQ TEM
+                            (for X on FNLST
+                               bind [KNOWNFNS _
+                                           (for TRIPLE in (CDR FILEMAP)
+                                              join           (* ; 
+                                   "makes a list of functions found for use for spelling correction.")
+                                                   (if (LISTP (SETQ TEM (CDDR TRIPLE)))
+                                                       then  (* ; 
+                            "This is for normal source files, where TRIPLE = (start end . fnEntries)")
+                                                            (MAPCAR TEM (FUNCTION CAR))
+                                                     elseif TEM
+                                                       then  (* ; 
+                                                      "For compiled files, TRIPLE = (start end . fn)")
+                                                            (LIST TEM]
+                               when (AND (NOT (FMEMB (CAR X)
+                                                     KNOWNFNS))
+                                         (FIXSPELL (CAR X)
+                                                70 KNOWNFNS NIL X)) collect 
 
-                                                                       (CAR X)))
-                        then (if MAPUPDATED
-                                 then                        (* ; "UPDATEFILEMAP had closed the file")
-                                      [RPLACA (CDR RESETSAVER)
-                                             (SETQ INSTREAM (OPENSTREAM FILE 'INPUT]
-                                      (INPUT INSTREAM))
-                             (SCANFILE1 FILEMAP TEM]
-            (if (AND NOT-FOUNDTAG (LISTP FNLST))
-                then (SETQ DONELST (CONS (CONS NOT-FOUNDTAG FNLST)
-                                         DONELST)))
-            (if
-             [AND
-              NOT-FOUNDTAG
-              (LISTP VARLST)
-              (SETQ TEM
-               (if (FNTYP VARLST)
-                   then (AND (NULL DONELST)
-                             (LIST VARLST))
-                 else (for X in VARLST collect X
-                         unless (PROGN 
-          
-          (* ;; "Reason for this is if user says LOADVARS (DEFLIST file), then DEFLIST is not removed from VARLST, since you want all such instances.")
+                                 (* ;; "The FMEMB check is necessary for when VARS=DEFS, as the reason that the function was not removed from FNLST may have been because this was a compiled file.")
 
-                                       (for Y in DONELST
-                                          thereis (if (ATOM X)
-                                                      then (OR (EQ X (CAR Y))
-                                                               (EQ X (CADR Y)))
-                                                    else (EDIT4E X Y]
-                then (SETQ DONELST (CONS (CONS NOT-FOUNDTAG TEM)
-                                         DONELST)))
-            (if (EQ LDFLG 'SYSLOAD)
-                then (AND (NOT (MEMB (SETQ ROOTNAME (ROOTFILENAME FILE (CDR FILECREATEDLST)))
-                                     SYSFILES))
-                          (SETQ SYSFILES (NCONC1 SYSFILES ROOTNAME)))
-                     (SMASHFILECOMS ROOTNAME)
-              elseif FILEPKGFLG
-                then (AND (NEQ VARS 'FILEMAP)
-                          (NEQ LDFLG 'EXPRESSIONS)
-                          (NEQ LDFLG 'GETDEF)
-                          (ADDFILE FILE (SELECTQ VARS
-                                            ((T LOADFROM) 
-                                                 'LOADFNS)
-                                            (LOADCOMP 'LOADCOMP)
-                                            'loadfns)
-                                 PRLST FILECREATEDLST]
-           (RETURN (if (EQ VARS 'FILEMAP)
-                       then FILEMAP
-                     elseif (EQ VARS 'LOADFROM)
-                       then FILE
-                     else (DREVERSE DONELST])
+                                                                          (CAR X)))
+                              then (if MAPUPDATED
+                                       then                  (* ; "UPDATEFILEMAP had closed the file")
+                                            [RPLACA (CDR RESETSAVER)
+                                                   (SETQ INSTREAM (OPENSTREAM FILE 'INPUT]
+                                            (INPUT INSTREAM))
+                                   (SCANFILE1 FILEMAP TEM]
+                  (if (AND NOT-FOUNDTAG (LISTP FNLST))
+                      then (SETQ DONELST (CONS (CONS NOT-FOUNDTAG FNLST)
+                                               DONELST)))
+                  (if
+                   [AND
+                    NOT-FOUNDTAG
+                    (LISTP VARLST)
+                    (SETQ TEM
+                     (if (FNTYP VARLST)
+                         then (AND (NULL DONELST)
+                                   (LIST VARLST))
+                       else (for X in VARLST collect X
+                               unless (PROGN 
+
+                                 (* ;; "Reason for this is if user says LOADVARS (DEFLIST file), then DEFLIST is not removed from VARLST, since you want all such instances.")
+
+                                             (for Y in DONELST
+                                                thereis (if (ATOM X)
+                                                            then (OR (EQ X (CAR Y))
+                                                                     (EQ X (CADR Y)))
+                                                          else (EDIT4E X Y]
+                      then (SETQ DONELST (CONS (CONS NOT-FOUNDTAG TEM)
+                                               DONELST)))
+                  (if (EQ LDFLG 'SYSLOAD)
+                      then (AND (NOT (MEMB (SETQ ROOTNAME (ROOTFILENAME FILE (CDR FILECREATEDLST)))
+                                           SYSFILES))
+                                (SETQ SYSFILES (NCONC1 SYSFILES ROOTNAME)))
+                           (SMASHFILECOMS ROOTNAME)
+                    elseif FILEPKGFLG
+                      then (AND (NEQ VARS 'FILEMAP)
+                                (NEQ LDFLG 'EXPRESSIONS)
+                                (NEQ LDFLG 'GETDEF)
+                                (ADDFILE FILE (SELECTQ VARS
+                                                  ((T LOADFROM) 
+                                                       'LOADFNS)
+                                                  (LOADCOMP 'LOADCOMP)
+                                                  'loadfns)
+                                       PRLST FILECREATEDLST))))
+              (RETURN (if (EQ VARS 'FILEMAP)
+                          then FILEMAP
+                        elseif (EQ VARS 'LOADFROM)
+                          then FILE
+                        else (DREVERSE DONELST])])
 
 (LOADFNS-FINDFILE
   [LAMBDA (FN)                                               (* bvm%: "27-Sep-86 15:03")
@@ -883,13 +877,12 @@ A map of non-functions is not kept because (a) it would not be of use to MAKEFIL
        (SPECVARS VARLST)
        (RETFNS SCANFILE0))
 )
-(PUTPROPS LOADFNS COPYRIGHT ("Venue & Xerox Corporation" 1983 1984 1986 1987 1989 1990 2018 2022))
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (1224 19374 (LOADFROM 1234 . 1707) (LOADBLOCK 1709 . 2217) (GETBLOCKDEC 2219 . 3084) (
-LOADCOMP 3086 . 4249) (LOADCOMP? 4251 . 4951) (LOADVARS 4953 . 5033) (LOADEFS 5035 . 5179) (
-LOADFILEMAP 5181 . 5585) (LOADFNS 5587 . 17659) (LOADFNS-FINDFILE 17661 . 18177) (LOADFNS-MAKELIST 
-18179 . 19372)) (19375 46586 (LOADFNSCAN 19385 . 19563) (SCANFILE0 19565 . 22972) (SCANCOMPILEDFN 
-22974 . 25276) (SCANDEFINEQ 25278 . 30576) (SCANEXP 30578 . 35329) (SCANDECLARECOLON 35331 . 39535) (
-SCANFILE1 39537 . 43619) (SCANFILE2 43621 . 43907) (TMPSUBFN 43909 . 45073) (RETRYSCAN 45075 . 45472) 
-(SCANFILEHELP 45474 . 46584)))))
+  (FILEMAP (NIL (1109 19777 (LOADFROM 1119 . 1592) (LOADBLOCK 1594 . 2102) (GETBLOCKDEC 2104 . 2969) (
+LOADCOMP 2971 . 4134) (LOADCOMP? 4136 . 4836) (LOADVARS 4838 . 4918) (LOADFILEMAP 4920 . 5324) (
+LOADFNS 5326 . 18062) (LOADFNS-FINDFILE 18064 . 18580) (LOADFNS-MAKELIST 18582 . 19775)) (19778 46989 
+(LOADFNSCAN 19788 . 19966) (SCANFILE0 19968 . 23375) (SCANCOMPILEDFN 23377 . 25679) (SCANDEFINEQ 25681
+ . 30979) (SCANEXP 30981 . 35732) (SCANDECLARECOLON 35734 . 39938) (SCANFILE1 39940 . 44022) (
+SCANFILE2 44024 . 44310) (TMPSUBFN 44312 . 45476) (RETRYSCAN 45478 . 45875) (SCANFILEHELP 45877 . 
+46987)))))
 STOP
diff --git a/sources/LOADFNS.LCOM b/sources/LOADFNS.LCOM
index ee8151b6..e316b11f 100644
Binary files a/sources/LOADFNS.LCOM and b/sources/LOADFNS.LCOM differ
diff --git a/sources/MACHINEINDEPENDENT b/sources/MACHINEINDEPENDENT
index 67e15d34..31804af4 100644
--- a/sources/MACHINEINDEPENDENT
+++ b/sources/MACHINEINDEPENDENT
@@ -1,14 +1,12 @@
 (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
 
-(FILECREATED "29-Sep-2025 12:51:06" 
-{DSK}<Users>kaplan>Local>medley3.5>working-medley>sources>MACHINEINDEPENDENT.;39 119579 
+(FILECREATED "22-Feb-2026 13:55:06" {WMEDLEY}<sources>MACHINEINDEPENDENT.;40 125302 
 
       :EDIT-BY rmk
 
       :CHANGES-TO (VARS MACHINEINDEPENDENTCOMS)
 
-      :PREVIOUS-DATE "18-Jan-2024 10:40:56" 
-{DSK}<Users>kaplan>Local>medley3.5>working-medley>sources>MACHINEINDEPENDENT.;38)
+      :PREVIOUS-DATE "29-Sep-2025 12:51:06" {WMEDLEY}<sources>MACHINEINDEPENDENT.;39)
 
 
 (PRETTYCOMPRINT MACHINEINDEPENDENTCOMS)
@@ -19,9 +17,6 @@
               (INITVARS (*COMPILED-EXTENSIONS* (LIST FASL.EXT COMPILE.EXT]
         (COMS                                                (* ; 
                                                              "random machine-independent utilities")
-              (FNS DMPHASH HASHOVERFLOW)
-              (DECLARE%: EVAL@COMPILE DONTCOPY (MACROS HASHOVERFLOW.ARRAYTEST 
-                                                      HASHOVERFLOW.UPDATEARRAY))
               (FNS BKBUFS CHANGENAME CHNGNM CLBUFS DEFINE FNS.PUTDEF EQMEMB EQUALN FNCHECK FNTYP1 
                    LCSKIP MAPRINT MKLIST NAMEFIELD NLIST PRINTBELLS PROMPTCHAR RAISEP READFILE 
                    READLINE REMPROPLIST RESETBUFS TAB UNSAVED1 WRITEFILE CLOSE-AND-MAYBE-DELETE 
@@ -485,104 +480,6 @@
 
 (DEFINEQ
 
-(DMPHASH
-  [NLAMBDA L                                             (* rmk%: " 6-Apr-84 14:30")
-    (MAPC L (FUNCTION (LAMBDA (ARRAYNAME)
-                        (DECLARE (SPECVARS ARRAYNAME))
-                        (ERSETQ (PROG ((A (EVALV ARRAYNAME 'DMPHASH))
-                                       AP)
-                                      [PRINT (LIST 'RPAQ ARRAYNAME
-                                                   (COND
-                                                      [(LISTP A)
-                                                       (SETQ AP (CAR A))
-                                                       (LIST 'CONS [LIST 'HARRAY (HARRAYSIZE AP)
-                                                                         (KWOTE (HARRAYPROP
-                                                                                 AP
-                                                                                 'OVERFLOW]
-                                                             (KWOTE (CDR A]
-                                                      (T (LIST 'HASHARRAY (HARRAYSIZE A)
-                                                               (KWOTE (HARRAYPROP AP 'OVERFLOW]
-                                      (MAPHASH (OR AP A)
-                                             (FUNCTION (LAMBDA (VAL ITEM)
-                                                         (PRINT (LIST 'PUTHASH (KWOTE ITEM)
-                                                                      (KWOTE VAL)
-                                                                      ARRAYNAME])
-
-(HASHOVERFLOW
-  [LAMBDA (HARRAY)                                       (* ; "Edited 26-Feb-91 13:16 by jds")
-
-    (* ;; "Should be called from PUTHASH on hash overflow, but for implementations where PUTHASH calls ERRORX directly, may be called from ERRORX2 when the offender is a listp.  HARRAY is guaranteed to be either HARRAYP or (LIST HARRAYP)")
-
-    (PROG ((OLDARRAY (HASHOVERFLOW.ARRAYTEST HARRAY))
-           NEWARRAY NEWSIZE OLDNUMKEYS OVACTION NEWOVFLW)
-          [COND
-             ((LISTP HARRAY)
-              (SETQ OVACTION (CDR HARRAY))
-
-              (* ;; "Get OVERFLOW method from original HARRAY since it would erroneously be ERROR if we got the method from the coerced OLDARRAY")
-
-              (SETQ NEWOVFLW 'ERROR))
-             (T (SETQ OVACTION (SETQ NEWOVFLW (HARRAYPROP OLDARRAY 'OVERFLOW]
-          (SETQ OLDNUMKEYS (HARRAYPROP OLDARRAY 'NUMKEYS))
-
-     (* ;; "Compute the new array size:")
-
-          [SETQ NEWSIZE (SELECTQ OVACTION
-                            (NIL 
-                                 (* ;; "SIZE*1.5 --- favor to bbn, since pdp-11 doesnt have floatng point, and LRSH on other systems might be faster than IQUOTIENT")
-
-                                 (* ;; 
-                               "[32749 IS THE BIGGEST PRIME < 32765, THE LIMIT ON ARRAY SIZES]")
-
-                                 [IMAX (+ OLDNUMKEYS 3)
-                                       (IMIN 32749 (+ OLDNUMKEYS (LRSH (CL:1+ OLDNUMKEYS)
-                                                                       1])
-                            (ERROR (do (ERRORX (LIST 26 HARRAY))))
-                            (if (FLOATP OVACTION)
-                                then [IMAX (+ OLDNUMKEYS 3)
-                                               (IMIN 32760 (FIXR (FTIMES OLDNUMKEYS OVACTION]
-                              elseif (FIXP OVACTION)
-                                then (IMAX (+ OLDNUMKEYS 3)
-                                               (IMIN 32749 (+ OLDNUMKEYS OVACTION)))
-                              elseif [AND (FNTYP OVACTION)
-                                              (NUMBERP (SETQ OVACTION (APPLY* OVACTION HARRAY]
-                                then (if (FLOATP OVACTION)
-                                             then        (* ; 
-                                         "recompute NUMKEYS since OVACTION might have removed keys")
-                                                   [IMAX (+ (SETQ OLDNUMKEYS (HARRAYPROP OLDARRAY
-                                                                                    'NUMKEYS))
-                                                            3)
-                                                         (IMIN 32749 (FIXR (FTIMES OLDNUMKEYS 
-                                                                                  OVACTION]
-                                           else OVACTION)
-                              else                       (* ; "Default: multiply by 1.5")
-                                    (SETQ OLDNUMKEYS (HARRAYPROP OLDARRAY 'NUMKEYS))
-                                    (IMAX (+ OLDNUMKEYS 3)
-                                          (IMIN 32749 (+ OLDNUMKEYS (LRSH (CL:1+ OLDNUMKEYS)
-                                                                          1]
-          [SETQ NEWARRAY (REHASH OLDARRAY (HASHARRAY NEWSIZE NEWOVFLW (HARRAYPROP OLDARRAY
-                                                                             'HASHBITSFN)
-                                                 (HARRAYPROP OLDARRAY 'EQUIVFN]
-          (HASHOVERFLOW.UPDATEARRAY HARRAY NEWARRAY OLDARRAY)
-          (RETURN HARRAY])
-)
-(DECLARE%: EVAL@COMPILE DONTCOPY 
-(DECLARE%: EVAL@COMPILE 
-
-[PROGN (PUTPROPS HASHOVERFLOW.ARRAYTEST MACRO [(HARRAY)
-                                               (CAR (OR (LISTP HARRAY)
-                                                        (ERRORX (LIST 27 HARRAY])
-       (PUTPROPS HASHOVERFLOW.ARRAYTEST DMACRO ((HARRAY)
-                                                (\DTEST HARRAY 'HARRAYP)))]
-
-[PROGN (PUTPROPS HASHOVERFLOW.UPDATEARRAY MACRO ((HARRAY NEWARRAY OLDARRAY)
-                                                 (FRPLACA HARRAY NEWARRAY)))
-       (PUTPROPS HASHOVERFLOW.UPDATEARRAY DMACRO ((HARRAY NEWARRAY OLDARRAY)
-                                                  (\COPYHARRAYP NEWARRAY OLDARRAY)))]
-)
-)
-(DEFINEQ
-
 (BKBUFS
   [LAMBDA (BUFS ID)                                      (* DD%: " 6-Oct-81 15:34")
     (PROG (L S)
@@ -2494,24 +2391,255 @@ This has little hope of working any more.")
 
 (LOCALVARS . T)
 )
+(PRETTYCOMPRINT MACHINEINDEPENDENTCOMS)
+
+(RPAQQ MACHINEINDEPENDENTCOMS
+       ([COMS                                                (* ; " %"File loader%"")
+              (FNS LOAD? FILESLOAD DOFILESLOAD FINDFILE-WITH-EXTENSIONS READ-FILECREATED)
+              (INITVARS (*COMPILED-EXTENSIONS* (LIST FASL.EXT COMPILE.EXT]
+        (COMS                                                (* ; 
+                                                             "random machine-independent utilities")
+              (FNS BKBUFS CHANGENAME CHNGNM CLBUFS DEFINE FNS.PUTDEF EQMEMB EQUALN FNCHECK FNTYP1 
+                   LCSKIP MAPRINT MKLIST NAMEFIELD NLIST PRINTBELLS PROMPTCHAR RAISEP READFILE 
+                   READLINE REMPROPLIST RESETBUFS TAB UNSAVED1 WRITEFILE CLOSE-AND-MAYBE-DELETE 
+                   UNSAFE.TO.MODIFY)
+              (VARS UNSAFE.TO.MODIFY.FNS)
+              (INITVARS (OK.TO.MODIFY.FNS))
+              [COMS                                          (* ; 
+              "FILEDATE, for finding out the creation date of source files, from the compiled files.")
+                    (FNS FILEDATE COMPILEFILETYPE)
+                    
+                    (* ;; "FASL isn't loaded when MACHINEINDEPENDENT is, so we have to fake the FASL checker for now.  It's defined in FASLOAD.")
+
+                    (P (MOVD? 'NILL 'FASL-FILEDATE]
+              (P (MOVD? 'CL:FMAKUNBOUND 'UNDOABLY-FMAKUNBOUND))
+                                                             (* ; 
+                                                           "used in FNS.PUTDEF before CMLUNDO loaded")
+              )
+        (COMS                                                (* ; 
+                     "Functions for retrieving and remembering FILEMAPs and file reader environments")
+              (FNS FILEMAP \PARSE-FILE-HEADER GET-ENVIRONMENT-AND-FILEMAP 
+                   LOOKUP-ENVIRONMENT-AND-FILEMAP GET-FILEMAP-FROM-FILECREATED \FILEMAP-HASHOVERFLOW
+                   FLUSHFILEMAPS LISPSOURCEFILEP LISPFILETYPE GETFILEMAP PUTFILEMAP UPDATEFILEMAP)
+              [INITVARS (*FILEMAP-LIMIT* 20)
+                     (*FILEMAP-VERSIONS* 2)
+                     (*FILEMAP-HASH* (HASHARRAY *FILEMAP-LIMIT* (FUNCTION \FILEMAP-HASHOVERFLOW)
+                                            (FUNCTION STRING-EQUAL-HASHBITS)
+                                            (FUNCTION STRING.EQUAL]
+              (DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS FILEMAPHASH)
+                     (GLOBALVARS *FILEMAP-LIMIT* *FILEMAP-VERSIONS* *FILEMAP-HASH*)))
+        (COMS (* * LVLPRINT)
+              (FNS LVLPRINT LVLPRIN1 LVLPRIN2 LVLPRIN LVLPRIN0))
+        (COMS                                                (* ; "used by PRINTOUT")
+              (FNS FLUSHRIGHT PRINTPARA PRINTPARA1))
+        (COMS                                                (* ; "SUBLIS and friends")
+              (FNS SUBLIS SUBPAIR DSUBLIS))
+        [COMS (* * CONSTANTS)
+              (FNS CONSTANTOK)
+              (P (MOVD? 'EVQ 'CONSTANT)
+                 (MOVD? 'EVQ 'DEFERREDCONSTANT)
+                 (MOVD? 'EVQ 'LOADTIMECONSTANT]
+        (COMS (* * SCRATCHLIST)
+              (PROP MACRO SCRATCHLIST ADDTOSCRATCHLIST)
+              (PROP INFO SCRATCHLIST))
+        (GLOBALVARS SYSFILES LOADOPTIONS LISPXCOMS CLISPTRANFLG COMMENTFLG HISTSTR4 LISPXREADFN 
+               REREADFLG HISTSTR0 CTRLUFLG NOLINKMESS PROMPTCHARFORMS PROMPT#FLG FILERDTBL SPELLINGS2
+               USERWORDS BELLS CLISPARRAY)
+        (FNS NLAMBDA.ARGS)
+        [DECLARE%:
+         DONTEVAL@LOAD DOCOPY                                (* ; 
+                                                    "initialization of variables used in many places")
+         (ADDVARS (CLISPARRAY)
+                (CLISPFLG)
+                (CTRLUFLG)
+                (EDITCALLS)
+                (EDITHISTORY)
+                (EDITUNDOSAVES)
+                (EDITUNDOSTATS)
+                (GLOBALVARS)
+                (LCASEFLG)
+                (LISPXBUFS)
+                (LISPXCOMS)
+                (LISPXFNS)
+                (LISPXHIST)
+                (LISPXHISTORY)
+                (LISPXPRINTFLG)
+                (NOCLEARSTKLST)
+                (NOFIXFNSLST)
+                (NOFIXVARSLST)
+                (P.A.STATS)
+                (PROMPTCHARFORMS)
+                (READBUF)
+                (READBUFSOURCE)
+                (REREADFLG)
+                (RESETSTATE)
+                (SPELLSTATS1))
+         (INITVARS (CHCONLST '(NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL 
+                                   NIL NIL NIL))
+                (CHCONLST1 '(NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL
+                                 NIL NIL))
+                (CHCONLST2 '(NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL
+                                 NIL NIL))
+                (CLEARSTKLST T)
+                (CLISPTRANFLG 'CLISP% )
+                (HISTSTR0 "<c.r.>")
+                (HISTSTR2 "repeat")
+                (HISTSTR3 "from event:")
+                (HISTSTR4 "ignore")
+                (LISPXREADFN 'READ)
+                (USEMAPFLG T))
+         (P [MAPC '((APPLY BLKAPPLY)
+                    (SETTOPVAL SETATOMVAL)
+                    (GETTOPVAL GETATOMVAL)
+                    (APPLY* BLKAPPLY*)
+                    (RPLACA FRPLACA)
+                    (RPLACD FRPLACD)
+                    (STKNTH FSTKNTH)
+                    (STKNAME FSTKNAME)
+                    (CHARACTER FCHARACTER)
+                    (STKARG FSTKARG)
+                    (CHCON DCHCON)
+                    (UNPACK DUNPACK)
+                    (ADDPROP /ADDPROP)
+                    (ATTACH /ATTACH)
+                    (DREMOVE /DREMOVE)
+                    (DSUBST /DSUBST)
+                    (NCONC /NCONC)
+                    (NCONC1 /NCONC1)
+                    (PUT /PUT)
+                    (PUTPROP /PUTPROP)
+                    (PUTD /PUTD)
+                    (REMPROP /REMPROP)
+                    (RPLACA /RPLACA)
+                    (RPLACD /RPLACD)
+                    (SET /SET)
+                    (SETATOMVAL /SETATOMVAL)
+                    (SETTOPVAL /SETTOPVAL)
+                    (SETPROPLIST /SETPROPLIST)
+                    (SET SAVESET)
+                    (PRINT LISPXPRINT)
+                    (PRIN1 LISPXPRIN1)
+                    (PRIN2 LISPXPRIN2)
+                    (SPACES LISPXSPACES)
+                    (TAB LISPXTAB)
+                    (TERPRI LISPXTERPRI)
+                    (PRINT SHOWPRINT)
+                    (PRIN2 SHOWPRIN2)
+                    (PUTHASH /PUTHASH)
+                    '*
+                    (FNCLOSER /FNCLOSER)
+                    (FNCLOSERA /FNCLOSERA)
+                    (FNCLOSERD /FNCLOSERD)
+                    (EVQ DELFILE)
+                    (NILL SMASHFILECOMS)
+                    (PUTASSOC /PUTASSOC)
+                    (LISTPUT1 PUTL)
+                    (NILL I.S.OPR)
+                    (NILL RESETUNDO)
+                    (NILL LISPXWATCH)
+                    'ADDSTATS
+                    (NILL FREEVARS)
+                    'USEDFREE
+                    (COPYBYTES COPYCHARS))
+                  (FUNCTION (LAMBDA (X)
+                                   (MOVD? (CAR X)
+                                          (CADR X]
+            [MAPC '((TIME PRIN1 LISPXPRIN1)
+                    (TIME SPACES LISPXSPACES)
+                    (TIME PRINT LISPXPRINT)
+                    (DEFC PRINT LISPXPRINT)
+                    (DEFC PUTD /PUTD)
+                    (DEFC PUTPROP /PUTPROP)
+                    (DOLINK FNCLOSERD /FNCLOSERD)
+                    (DOLINK FNCLOSERA /FNCLOSERA)
+                    (DEFLIST PUTPROP /PUTPROP)
+                    (SAVEDEF1 PUTPROP /PUTPROP)
+                    (MKSWAPBLOCK PUTD /PUTD))
+                  (FUNCTION (LAMBDA (X)
+                                   (AND (CCODEP (CAR X))
+                                        (APPLY 'CHANGENAME X]
+            (MAPC '[[EVALQT (LAMBDA NIL (PROG (TEM)
+                                              (RESETRESTORE NIL 'RESET)
+                                              LP
+                                              (PROMPTCHAR '_ T)
+                                              (LISPX (LISPXREAD T T))
+                                              (GO LP]
+                    [LISPX (LAMBDA (LISPXX)
+                                  (PRINT [AND LISPXX (PROG (LISPXLINE LISPXHIST TEM)
+                                                           (RETURN (COND ((AND (NLISTP LISPXX)
+                                                                               (SETQ LISPXLINE
+                                                                                     (READLINE T NIL
+                                                                                            T)))
+                                                                          (APPLY LISPXX (CAR 
+                                                                                            LISPXLINE
+                                                                                             )))
+                                                                         (T (EVAL LISPXX]
+                                         T T]
+                    [LISPXREAD (LAMBDA (FILE RDTBL)
+                                      (COND [READBUF (PROG1 (CAR READBUF)
+                                                         (SETQ READBUF (CDR READBUF)))]
+                                            (T (READ FILE RDTBL]
+                    [LISPXREADP (LAMBDA (FLG)
+                                       (COND ((AND READBUF (SETQ READBUF (LISPXREADBUF READBUF)))
+                                              T)
+                                             (T (READP T FLG]
+                    [LISPXUNREAD (LAMBDA (LST)
+                                        (SETQ READBUF (APPEND LST (CONS HISTSTR0 READBUF]
+                    [LISPXREADBUF (LAMBDA (RDBUF)
+                                         (PROG NIL LP (COND ((NLISTP RDBUF)
+                                                             (RETURN NIL))
+                                                            ((EQ (CAR RDBUF)
+                                                                 HISTSTR0)
+                                                             (SETQ RDBUF (CDR RDBUF))
+                                                             (GO LP))
+                                                            (T (RETURN RDBUF]
+                    [LISPX/ (LAMBDA (X)
+                                   X]
+                    [LOWERCASE (LAMBDA (FLG)
+                                      (PROG1 LCASEFLG
+                                          (RAISE (NULL FLG))
+                                          (RPAQ LCASEFLG FLG))]
+                    [FILEPOS (LAMBDA (STR FILE)
+                                    (PROG NIL LP (COND ((EQ (PEEKC FILE)
+                                                            (NTHCHAR STR 1))
+                                                        (RETURN T)))
+                                          (READC FILE)
+                                          (GO LP]
+                    (FILEPKGCOM (NLAMBDA NIL NIL]
+                  (FUNCTION (LAMBDA (L)
+                                   (OR (GETD (CAR L))
+                                       (PUTD (CAR L)
+                                             (CADR L]
+        (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA RESETBUFS 
+                                                                                      FILESLOAD)
+                                                                             (NLAML FILEMAP)
+                                                                             (LAMA READFILE NLIST)))
+        (LOCALVARS . T)))
+(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS 
+
+(ADDTOVAR NLAMA RESETBUFS FILESLOAD)
+
+(ADDTOVAR NLAML FILEMAP)
+
+(ADDTOVAR LAMA READFILE NLIST)
+)
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (12643 26068 (LOAD? 12653 . 14504) (FILESLOAD 14506 . 14795) (DOFILESLOAD 14797 . 22423)
- (FINDFILE-WITH-EXTENSIONS 22425 . 25624) (READ-FILECREATED 25626 . 26066)) (26185 31506 (DMPHASH 
-26195 . 27789) (HASHOVERFLOW 27791 . 31504)) (32262 64370 (BKBUFS 32272 . 33391) (CHANGENAME 33393 . 
-33654) (CHNGNM 33656 . 35504) (CLBUFS 35506 . 36779) (DEFINE 36781 . 37505) (FNS.PUTDEF 37507 . 40922)
- (EQMEMB 40924 . 41106) (EQUALN 41108 . 41937) (FNCHECK 41939 . 43946) (FNTYP1 43948 . 44045) (LCSKIP 
-44047 . 44891) (MAPRINT 44893 . 45839) (MKLIST 45841 . 45991) (NAMEFIELD 45993 . 47518) (NLIST 47520
- . 47855) (PRINTBELLS 47857 . 47983) (PROMPTCHAR 47985 . 49875) (RAISEP 49877 . 50138) (READFILE 50140
- . 52484) (READLINE 52486 . 57926) (REMPROPLIST 57928 . 58816) (RESETBUFS 58818 . 59268) (TAB 59270 . 
-59866) (UNSAVED1 59868 . 60973) (WRITEFILE 60975 . 62717) (CLOSE-AND-MAYBE-DELETE 62719 . 63063) (
-UNSAFE.TO.MODIFY 63065 . 64368)) (66589 71430 (FILEDATE 66599 . 69531) (COMPILEFILETYPE 69533 . 71428)
-) (71796 98999 (FILEMAP 71806 . 72276) (\PARSE-FILE-HEADER 72278 . 76093) (GET-ENVIRONMENT-AND-FILEMAP
- 76095 . 78322) (LOOKUP-ENVIRONMENT-AND-FILEMAP 78324 . 80515) (GET-FILEMAP-FROM-FILECREATED 80517 . 
-81341) (\FILEMAP-HASHOVERFLOW 81343 . 86007) (FLUSHFILEMAPS 86009 . 86632) (LISPSOURCEFILEP 86634 . 
-88026) (LISPFILETYPE 88028 . 91277) (GETFILEMAP 91279 . 91698) (PUTFILEMAP 91700 . 93891) (
-UPDATEFILEMAP 93893 . 98997)) (99665 103251 (LVLPRINT 99675 . 99848) (LVLPRIN1 99850 . 100032) (
-LVLPRIN2 100034 . 100266) (LVLPRIN 100268 . 101282) (LVLPRIN0 101284 . 103249)) (103285 108202 (
-FLUSHRIGHT 103295 . 104110) (PRINTPARA 104112 . 105210) (PRINTPARA1 105212 . 108200)) (108238 110523 (
-SUBLIS 108248 . 108856) (SUBPAIR 108858 . 110086) (DSUBLIS 110088 . 110521)) (110546 111146 (
-CONSTANTOK 110556 . 111144)) (112899 113604 (NLAMBDA.ARGS 112909 . 113602)))))
+  (FILEMAP (NIL (12360 25785 (LOAD? 12370 . 14221) (FILESLOAD 14223 . 14512) (DOFILESLOAD 14514 . 22140)
+ (FINDFILE-WITH-EXTENSIONS 22142 . 25341) (READ-FILECREATED 25343 . 25783)) (25902 58010 (BKBUFS 25912
+ . 27031) (CHANGENAME 27033 . 27294) (CHNGNM 27296 . 29144) (CLBUFS 29146 . 30419) (DEFINE 30421 . 
+31145) (FNS.PUTDEF 31147 . 34562) (EQMEMB 34564 . 34746) (EQUALN 34748 . 35577) (FNCHECK 35579 . 37586
+) (FNTYP1 37588 . 37685) (LCSKIP 37687 . 38531) (MAPRINT 38533 . 39479) (MKLIST 39481 . 39631) (
+NAMEFIELD 39633 . 41158) (NLIST 41160 . 41495) (PRINTBELLS 41497 . 41623) (PROMPTCHAR 41625 . 43515) (
+RAISEP 43517 . 43778) (READFILE 43780 . 46124) (READLINE 46126 . 51566) (REMPROPLIST 51568 . 52456) (
+RESETBUFS 52458 . 52908) (TAB 52910 . 53506) (UNSAVED1 53508 . 54613) (WRITEFILE 54615 . 56357) (
+CLOSE-AND-MAYBE-DELETE 56359 . 56703) (UNSAFE.TO.MODIFY 56705 . 58008)) (60229 65070 (FILEDATE 60239
+ . 63171) (COMPILEFILETYPE 63173 . 65068)) (65436 92639 (FILEMAP 65446 . 65916) (\PARSE-FILE-HEADER 
+65918 . 69733) (GET-ENVIRONMENT-AND-FILEMAP 69735 . 71962) (LOOKUP-ENVIRONMENT-AND-FILEMAP 71964 . 
+74155) (GET-FILEMAP-FROM-FILECREATED 74157 . 74981) (\FILEMAP-HASHOVERFLOW 74983 . 79647) (
+FLUSHFILEMAPS 79649 . 80272) (LISPSOURCEFILEP 80274 . 81666) (LISPFILETYPE 81668 . 84917) (GETFILEMAP 
+84919 . 85338) (PUTFILEMAP 85340 . 87531) (UPDATEFILEMAP 87533 . 92637)) (93305 96891 (LVLPRINT 93315
+ . 93488) (LVLPRIN1 93490 . 93672) (LVLPRIN2 93674 . 93906) (LVLPRIN 93908 . 94922) (LVLPRIN0 94924 . 
+96889)) (96925 101842 (FLUSHRIGHT 96935 . 97750) (PRINTPARA 97752 . 98850) (PRINTPARA1 98852 . 101840)
+) (101878 104163 (SUBLIS 101888 . 102496) (SUBPAIR 102498 . 103726) (DSUBLIS 103728 . 104161)) (104186
+ 104786 (CONSTANTOK 104196 . 104784)) (106539 107244 (NLAMBDA.ARGS 106549 . 107242)))))
 STOP
diff --git a/sources/MACHINEINDEPENDENT.LCOM b/sources/MACHINEINDEPENDENT.LCOM
index 3a4d6ef1..7abe1c4a 100644
Binary files a/sources/MACHINEINDEPENDENT.LCOM and b/sources/MACHINEINDEPENDENT.LCOM differ
diff --git a/sources/MCCS b/sources/MCCS
index 79e40bbf..f4524019 100644
--- a/sources/MCCS
+++ b/sources/MCCS
@@ -1,12 +1,12 @@
-(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
+(DEFINE-FILE-INFO :PACKAGE "INTERLISP" :READTABLE "INTERLISP" :BASE 10 :FORMAT :UTF-8)
 
-(FILECREATED " 5-Feb-2026 15:58:32" {WMEDLEY}<sources>MCCS.;163 65441  
+(FILECREATED "26-Feb-2026 12:57:11" {WMEDLEY}<sources>MCCS.;168 61634  
 
       :EDIT-BY rmk
 
-      :CHANGES-TO (FNS \DUMMY-UTF8-FORMAT \CREATE.XCCS.EXTERNALFORMAT)
+      :CHANGES-TO (FNS MCCSMAPPAIRS)
 
-      :PREVIOUS-DATE " 5-Feb-2026 12:26:39" {WMEDLEY}<sources>MCCS.;161)
+      :PREVIOUS-DATE "20-Feb-2026 09:21:16" {WMEDLEY}<sources>MCCS.;167)
 
 
 (PRETTYCOMPRINT MCCSCOMS)
@@ -57,14 +57,10 @@
              "Mappings into MCCS: needed for hardcopy and Tedit coercion, e.g. \TEDIT.MCCS.TRANSLATE")
 
                     (FNS GACHATOMCODE SYMBOLTOMCODE SIGMATOMCODE ATOMCODE MATHTOMCODE HIPPOTOMCODE 
-                         CYRILLICTOMCODE PALATINOTOMCODE)))
-        (COMS                                                (* ; "ISO8859/1")
-              (FNS ISO1TOMCODE MTOISO1CODE \CREATE.ISO1.FORMAT \DUMMY-UTF8-FORMAT)
-              (FNS ISO1TOMSTRING MTOISO1STRING)
-              (VARS ISO1TOMCCS)
-              (GLOBALVARS ISO1TOMCCS)
-              (DECLARE%: DONTEVAL@LOAD DOCOPY (P (\CREATE.ISO1.FORMAT)
-                                                 (\DUMMY-UTF8-FORMAT])
+                         CYRILLICTOMCODE PALATINOTOMCODE))
+              (COMS (FNS SYSTEM-EXTERNALFORMAT MTOSYSSTRING SYSTOMSTRING)
+                    (EXPORT (GLOBALVARS *SYSTEM-EXTERNALFORMAT*))
+                    (INITVARS (*SYSTEM-EXTERNALFORMAT* :UTF-8])
 
 
 
@@ -427,7 +423,7 @@
 
     (* ;; "Converts Unicodes to MCCS codes in XSTRING.")
 
-    (for I XCODE (MSTRING _ (CL:IF DESTRUCTIVE
+    (for I XCODE (MSTRING ← (CL:IF DESTRUCTIVE
                                 XSTRING
                                 (CONCAT XSTRING))) from 1 while (SETQ XCODE (NTHCHARCODE XSTRING I))
        do (RPLCHARCODE MSTRING I (XTOMCODE XCODE)) finally (RETURN MSTRING])
@@ -438,7 +434,7 @@
 
     (* ;; "Converts XCCS to MCCS codes in XSTRING.")
 
-    (for I MCODE (XSTRING _ (CL:IF DESTRUCTIVE
+    (for I MCODE (XSTRING ← (CL:IF DESTRUCTIVE
                                 MSTRING
                                 (CONCAT MSTRING))) from 1 while (SETQ MCODE (NTHCHARCODE MSTRING I))
        do (RPLCHARCODE XSTRING I (MTOXCODE MCODE)) finally (RETURN XSTRING])
@@ -500,12 +496,12 @@
        (
         (* ;; "From bravo doc")
 
-        (^N "356,055" MINUS)
-        (^V "357,44" ENDASH)
-        (^S EMDASH)
-        (^O EMQUAD)
-        (^X "356,055" MINUS)
-        (^Y FIGURESPACE ENQUAD)
+        (↑N "356,055" MINUS)
+        (↑V "357,44" ENDASH)
+        (↑S EMDASH)
+        (↑O EMQUAD)
+        (↑X "356,055" MINUS)
+        (↑Y FIGURESPACE ENQUAD)
         
         (* ;; "Fom current Helvetica/Timesroman fonts")
 
@@ -1372,7 +1368,8 @@
         NIL])
 
 (MCCSMAPPAIRS
-  [LAMBDA (FROMENCODING NONIDENTITY)                         (* ; "Edited  7-Oct-2025 14:47 by rmk")
+  [LAMBDA (FROMENCODING NONIDENTITY)                         (* ; "Edited 26-Feb-2026 12:56 by rmk")
+                                                             (* ; "Edited  7-Oct-2025 14:47 by rmk")
                                                              (* ; "Edited  6-Oct-2025 09:47 by rmk")
                                                              (* ; "Edited 20-Sep-2025 09:45 by rmk")
                                                              (* ; "Edited  6-Sep-2025 16:43 by rmk")
@@ -1380,27 +1377,30 @@
 
     (* ;; "Returns the pairs for MOVEFONTCHARS to use to move charset-0 glyphs into their MCCS positions.  For example, the Leftarrow and Lowline glyphs switch positions in an XCCS$ font.  Returns NIL (= nothing to do) if there is no function.")
 
-    (LET ((FN (MCCSMAPFN FROMENCODING))
-          PAIRS KEEPCS0)
-         (CL:WHEN FN
-             [SETQ PAIRS (SELECTQ FROMENCODING
-                             (GACHA                          (* ; "ctrl and upper are slugged")
-                                    [APPEND (XCCSUNDEFINEDPAIRS)
-                                           '(((Uparrow TERMINAL)
-                                              Circumflex)
-                                             (^X Lowline])
-                             (ALTOTEXT (APPEND (XCCSUNDEFINEDPAIRS)
-                                              ALTOTEXT2MCCS))
-                             (XCCS$ '((Uparrow Circumflex)
-                                      (Leftarrow Lowline)
-                                      (Lowline Leftarrow)
-                                      (Circumflex Uparrow)))
-                             (PALATINO (APPEND (XCCS.CS0.UNDEFINED)
-                                              PALATINOTOMCCS))
-                             (PROGN (SETQ KEEPCS0 T)
-                                    (for C M from 0 to \MAXTHINCHAR
-                                       when (SETQ M (APPLY* FN C NONIDENTITY))
-                                       collect (LIST C M]
+    (LET (PAIRS KEEPCS0)
+         [SETQ PAIRS (SELECTQ FROMENCODING
+                         (GACHA                              (* ; "ctrl and upper are slugged")
+                                [APPEND (XCCSUNDEFINEDPAIRS)
+                                       '(((Uparrow TERMINAL)
+                                          Circumflex)
+                                         (↑X Lowline])
+                         (ALTOTEXT (APPEND (XCCSUNDEFINEDPAIRS)
+                                          ALTOTEXT2MCCS))
+                         (XCCS$ '((Uparrow Circumflex)
+                                  (Leftarrow Lowline)
+                                  (Lowline Leftarrow)
+                                  (Circumflex Uparrow)))
+                         (UNICODE *UNICODETOMCCS*)
+                         (PALATINO (APPEND (XCCS.CS0.UNDEFINED)
+                                          PALATINOTOMCCS))
+                         (PROGN (SETQ KEEPCS0 T)
+                                (for C M FN from 0 to \MAXTHINCHAR first (CL:UNLESS (SETQ FN
+                                                                                     (MCCSMAPFN
+                                                                                      FROMENCODING))
+                                                                                (RETURN))
+                                   when (SETQ M (APPLY* FN C NONIDENTITY))
+                                   collect (LIST C M]
+         (CL:WHEN (LISTP PAIRS)
 
              (* ;; "Weed out interspersed comments, convert to charcodes")
 
@@ -1423,14 +1423,16 @@
 
              (* ;; "Any character that is moved gets replaced by a slug.  It may then be coerced from another font.  But families like SYMBOL, HIPPO etc. want to preserve CS0 even if they copy their glyphs also to somewhere else.")
 
-             [APPEND PAIRS (for P in PAIRS when (CAR P)
-                              unless [OR (AND KEEPCS0 (ILEQ (CAR P)
-                                                            \MAXTHINCHAR))
-                                         (AND (LISTP (CAR P))
-                                              (LITATOM (CADAR P)))
-                                         (thereis X in PAIRS suchthat (EQ (CADR X)
-                                                                          (CAR P]
-                              collect (LIST NIL (CAR P])])
+             [SETQ PAIRS (APPEND PAIRS (for P in PAIRS when (CAR P)
+                                          unless [OR (AND KEEPCS0 (ILEQ (CAR P)
+                                                                        \MAXTHINCHAR))
+                                                     (AND (LISTP (CAR P))
+                                                          (LITATOM (CADAR P)))
+                                                     (thereis X in PAIRS
+                                                        suchthat (EQ (CADR X)
+                                                                     (CAR P]
+                                          collect (LIST NIL (CAR P])
+         PAIRS])
 
 (XCCS.CS0.UNDEFINED
   [LAMBDA NIL                                                (* ; "Edited  5-Oct-2025 22:44 by rmk")
@@ -1463,7 +1465,7 @@
 
     (* ;; "Gacha did not have a code for circumflex, so there is nothing to map")
 
-    (CL:IF (EQ GCODE (CHARCODE ^X))
+    (CL:IF (EQ GCODE (CHARCODE ↑X))
         (CHARCODE Lowline)
         GCODE)])
 
@@ -1541,178 +1543,52 @@
                         MCODE)))
         PCODE])
 )
-
-
-
-(* ; "ISO8859/1")
-
 (DEFINEQ
 
-(ISO1TOMCODE
-  [LAMBDA (ICODE)                                            (* ; "Edited  5-Feb-2026 12:09 by rmk")
-                                                             (* ; "Edited  2-Feb-2026 23:14 by rmk")
-                                                             (* ; "Edited  7-Sep-2025 22:39 by rmk")
-                                                             (* ; "Edited  3-Sep-2025 10:21 by rmk")
-                                                             (* ; "Edited  7-Aug-2025 09:37 by rmk")
+(SYSTEM-EXTERNALFORMAT
+  [LAMBDA NIL                                                (* ; "Edited  6-Feb-2026 11:29 by rmk")
+                                                             (* ; "Edited 31-Jan-2026 18:51 by rmk")
+                                                             (* ; "Edited 10-Oct-2022 11:55 by lmm")
+                                                             (* ; "Edited  7-Jul-2022 10:41 by rmk")
 
-    (* ;; "ISO codes are 8bit, MCODES maybe not. Caller shouldn't pass a fat code.")
+    (* ;; "Returns the name, sets the global.  For now, UTF-8 or through, could be something else.")
 
-    (OR [CAR (find PAIR in ISO1TOMCCS suchthat (EQ ICODE (CADR PAIR]
-        ICODE])
+    (fetch (EXTERNALFORMAT NAME) of (SETQ *SYSTEM-EXTERNALFORMAT*
+                                     (FIND-FORMAT (FOR X IN '("LC_CTYPE" "LC_ALL" "LANG")
+                                                     WHEN (STRPOS ".UTF-8" (UNIX-GETENV X))
+                                                     DO (RETURN :UTF-8) FINALLY (RETURN :THROUGH])
 
-(MTOISO1CODE
-  [LAMBDA (MCODE)                                            (* ; "Edited  5-Feb-2026 12:26 by rmk")
-                                                             (* ; "Edited  2-Feb-2026 22:58 by rmk")
-    (OR (CADR (ASSOC MCODE ISO1TOMCCS))
-        MCODE])
+(MTOSYSSTRING
+  [LAMBDA (MSTRING)                                          (* ; "Edited  6-Feb-2026 00:20 by rmk")
+    (MCCSTOFORMATBYTES *SYSTEM-EXTERNALFORMAT* (MKSTRING MSTRING])
 
-(\CREATE.ISO1.FORMAT
-  [LAMBDA NIL                                                (* ; "Edited  5-Feb-2026 10:42 by rmk")
-                                                             (* ; "Edited  2-Feb-2026 23:37 by rmk")
-                                                             (* ; "Edited  1-Feb-2026 11:18 by rmk")
-                                                            (* ; "Edited  5-Aug-2021 22:15 by rmk:")
-                                                             (* ; "Edited  9-Mar-99 17:19 by rmk:")
-                                                             (* ; "Edited  7-Dec-95 16:24 by ")
-                                                             (* ; "Edited  7-Dec-95 16:20 by ")
-    (MAKE-EXTERNALFORMAT :ISO8859/1 [FUNCTION (LAMBDA (STREAM COUNTP)
-                                                (ISO1TOMCODE (\THROUGHIN STREAM COUNTP]
-           [FUNCTION (LAMBDA (STREAM NOERRORFLG)
-                       (ISO1TOMCODE (\PEEKBIN STREAM NOERRORFLG]
-           (FUNCTION \THROUGHBACKCCODE)
-           (FUNCTION NILL)
-           (FUNCTION NILL)
-           NIL NIL (FUNCTION MTOISO1STRING)
-           NIL
-           (FUNCTION NILL)
-           (FUNCTION ISO1TOMSTRING])
+(SYSTOMSTRING
+  [LAMBDA (SYSTRING)                                         (* ; "Edited  5-Feb-2026 23:36 by rmk")
 
-(\DUMMY-UTF8-FORMAT
-  [LAMBDA NIL                                                (* ; "Edited  5-Feb-2026 15:58 by rmk")
-                                                             (* ; "Edited  1-Feb-2026 13:16 by rmk")
+    (* ;; "SYSSTRING is presumably shared with Unix, guarantee a copy on the way out")
 
-    (* ;; "Works only for 7-bit codes, during the loadup")
-
-    (\INSTALL.EXTERNALFORMAT (create EXTERNALFORMAT using (FIND-FORMAT :ISO8859/1)
-                                                          NAME _ :UTF-8])
+    (CONCAT (FORMATBYTESTOMCCS *SYSTEM-EXTERNALFORMAT* SYSTRING])
 )
-(DEFINEQ
+(* "FOLLOWING DEFINITIONS EXPORTED")(DECLARE%: DOEVAL@COMPILE DONTCOPY
 
-(ISO1TOMSTRING
-  [LAMBDA (ISTRING DESTRUCTIVE)                              (* ; "Edited  5-Feb-2026 11:01 by rmk")
-                                                             (* ; "Edited  2-Feb-2026 23:46 by rmk")
-                                                             (* ; "Edited  2-Sep-2025 12:14 by rmk")
-                                                             (* ; "Edited 29-Apr-2025 13:08 by rmk")
-
-    (* ;; "Converts ISO8859/1 codes to MCCS codes in MSTRING.")
-
-    (for I ICODE (MSTRING _ (CL:IF DESTRUCTIVE
-                                ISTRING
-                                (CONCAT ISTRING))) from 1 while (SETQ ICODE (NTHCHARCODE ISTRING I))
-       do (RPLCHARCODE MSTRING I (ISO1TOMCODE ICODE)) finally (RETURN MSTRING])
-
-(MTOISO1STRING
-  [LAMBDA (MSTRING DESTRUCTIVE)                              (* ; "Edited  2-Feb-2026 23:47 by rmk")
-                                                             (* ; "Edited  2-Sep-2025 12:22 by rmk")
-                                                             (* ; "Edited 29-Apr-2025 13:08 by rmk")
-
-    (* ;; "Converts MCCS to ISO8859/1 codes in MSTRING.")
-
-    (for I MCODE (ISTRING _ (CL:IF DESTRUCTIVE
-                                MSTRING
-                                (CONCAT MSTRING))) from 1 while (SETQ MCODE (NTHCHARCODE MSTRING I))
-       do (RPLCHARCODE ISTRING I (MTOISO1CODE MCODE)) finally (RETURN ISTRING])
+(GLOBALVARS *SYSTEM-EXTERNALFORMAT*)
 )
 
-(RPAQQ ISO1TOMCCS
-       ((94 8593)
-        (95 8592)
-        (169 8216)
-        (170 8220)
-        (172 95)
-        (173 94)
-        (174 8594)
-        (175 8595)
-        (180 215)
-        (184 247)
-        (185 8217)
-        (186 8221)
-        (193 768)
-        (194 769)
-        (195 770)
-        (196 771)
-        (197 772)
-        (198 774)
-        (199 775)
-        (200 776)
-        (202 778)
-        (203 807)
-        (204 818)
-        (205 779)
-        (206 808)
-        (207 780)
-        (208 8213)
-        (209 185)
-        (210 174)
-        (211 169)
-        (212 8482)
-        (213 9834)
-        (220 8539)
-        (221 8540)
-        (222 8541)
-        (223 8542)
-        (224 8486)
-        (225 198)
-        (226 208)
-        (227 170)
-        (228 294)
-        (229 567)
-        (230 306)
-        (231 319)
-        (232 321)
-        (233 216)
-        (234 338)
-        (235 186)
-        (236 222)
-        (237 358)
-        (238 330)
-        (239 329)
-        (240 312)
-        (241 230)
-        (242 273)
-        (243 240)
-        (244 295)
-        (245 305)
-        (246 307)
-        (247 320)
-        (248 322)
-        (249 248)
-        (250 339)
-        (251 223)
-        (252 254)
-        (253 359)
-        (254 331)))
-(DECLARE%: DOEVAL@COMPILE DONTCOPY
+(* "END EXPORTED DEFINITIONS")
 
-(GLOBALVARS ISO1TOMCCS)
-)
-(DECLARE%: DONTEVAL@LOAD DOCOPY 
 
-(\CREATE.ISO1.FORMAT)
-
-(\DUMMY-UTF8-FORMAT)
-)
+(RPAQ? *SYSTEM-EXTERNALFORMAT* :UTF-8)
 (DECLARE%: DONTCOPY
-  (FILEMAP (NIL (3345 14916 (\MCCSINCCODE 3355 . 6443) (\MCCSPEEKCCODE 6445 . 9332) (\MCCSOUTCHAR 9334
- . 11433) (\MCCSBACKCCODE 11435 . 12979) (\MCCSFORMATBYTESTREAM 12981 . 13711) (\MCCSCHARSETFN 13713
- . 14914)) (14917 17368 (\CREATE.MCCS.EXTERNALFORMAT 14927 . 15797) (\CREATE.XCCS.EXTERNALFORMAT 15799
- . 17366)) (17369 18346 (\MCCS.24BITENCODING.ERROR 17379 . 18344)) (19722 22360 (MTOXCODE 19732 . 
-20529) (XTOMCODE 20531 . 21188) (XTOMSTRING 21190 . 21775) (MTOXSTRING 21777 . 22358)) (22361 24021 (
-MTOX$CODE 22371 . 23103) (X$TOMCODE 23105 . 24019)) (24022 24662 (KANJICHARSETP 24032 . 24288) (
-CHINESECHARSETP 24290 . 24660)) (45230 47719 (MCCSCODEMAPARRAY 45240 . 47717)) (48335 54816 (MCCSMAPFN
- 48345 . 49712) (MCCSMAPPAIRS 49714 . 53822) (XCCS.CS0.UNDEFINED 53824 . 54453) (XCCSUNDEFINEDPAIRS 
-54455 . 54814)) (54921 59673 (GACHATOMCODE 54931 . 55443) (SYMBOLTOMCODE 55445 . 56093) (SIGMATOMCODE 
-56095 . 56741) (ATOMCODE 56743 . 57275) (MATHTOMCODE 57277 . 57933) (HIPPOTOMCODE 57935 . 58472) (
-CYRILLICTOMCODE 58474 . 58908) (PALATINOTOMCODE 58910 . 59671)) (59700 62493 (ISO1TOMCODE 59710 . 
-60459) (MTOISO1CODE 60461 . 60751) (\CREATE.ISO1.FORMAT 60753 . 62018) (\DUMMY-UTF8-FORMAT 62020 . 
-62491)) (62494 64025 (ISO1TOMSTRING 62504 . 63320) (MTOISO1STRING 63322 . 64023)))))
+  (FILEMAP (NIL (3103 14674 (\MCCSINCCODE 3113 . 6201) (\MCCSPEEKCCODE 6203 . 9090) (\MCCSOUTCHAR 9092
+ . 11191) (\MCCSBACKCCODE 11193 . 12737) (\MCCSFORMATBYTESTREAM 12739 . 13469) (\MCCSCHARSETFN 13471
+ . 14672)) (14675 17126 (\CREATE.MCCS.EXTERNALFORMAT 14685 . 15555) (\CREATE.XCCS.EXTERNALFORMAT 15557
+ . 17124)) (17127 18104 (\MCCS.24BITENCODING.ERROR 17137 . 18102)) (19480 22122 (MTOXCODE 19490 . 
+20287) (XTOMCODE 20289 . 20946) (XTOMSTRING 20948 . 21535) (MTOXSTRING 21537 . 22120)) (22123 23783 (
+MTOX$CODE 22133 . 22865) (X$TOMCODE 22867 . 23781)) (23784 24424 (KANJICHARSETP 23794 . 24050) (
+CHINESECHARSETP 24052 . 24422)) (45004 47493 (MCCSCODEMAPARRAY 45014 . 47491)) (48109 55125 (MCCSMAPFN
+ 48119 . 49486) (MCCSMAPPAIRS 49488 . 54131) (XCCS.CS0.UNDEFINED 54133 . 54762) (XCCSUNDEFINEDPAIRS 
+54764 . 55123)) (55230 59984 (GACHATOMCODE 55240 . 55754) (SYMBOLTOMCODE 55756 . 56404) (SIGMATOMCODE 
+56406 . 57052) (ATOMCODE 57054 . 57586) (MATHTOMCODE 57588 . 58244) (HIPPOTOMCODE 58246 . 58783) (
+CYRILLICTOMCODE 58785 . 59219) (PALATINOTOMCODE 59221 . 59982)) (59985 61423 (SYSTEM-EXTERNALFORMAT 
+59995 . 60939) (MTOSYSSTRING 60941 . 61134) (SYSTOMSTRING 61136 . 61421)))))
 STOP
diff --git a/sources/MCCS.LCOM b/sources/MCCS.LCOM
index 71998d13..4b2d7afd 100644
Binary files a/sources/MCCS.LCOM and b/sources/MCCS.LCOM differ
diff --git a/sources/UNICODE-FORMATS b/sources/UNICODE-FORMATS
new file mode 100644
index 00000000..1ab0cd81
--- /dev/null
+++ b/sources/UNICODE-FORMATS
@@ -0,0 +1,2739 @@
+(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10 FORMAT UTF-8)
+
+(FILECREATED "23-Feb-2026 12:15:24" {WMEDLEY}<sources>UNICODE-FORMATS.;2 216288 
+
+      :EDIT-BY rmk
+
+      :CHANGES-TO (VARS UNICODE-FORMATSCOMS)
+                  (FNS MAKE-UNICODE-FORMATS)
+
+      :PREVIOUS-DATE "23-Feb-2026 08:52:29" {WMEDLEY}<sources>UNICODE-UTF8.;26)
+
+
+(PRETTYCOMPRINT UNICODE-FORMATSCOMS)
+
+(RPAQQ UNICODE-FORMATSCOMS
+       (
+        (* ;; "Defines the UTF-8 external format.  This is part of the MAKEINIT, and therefore loads and uses  the ALIST mapping that is created whenever the file is dumped.  ")
+
+        (FNS UTF8.OUTCHARFN UTF8.SLUG.OUTCHARFN UTF8.INCCODEFN UTF8.PEEKCCODEFN \UTF8.BACKCCODEFN)
+        (FNS UTF16BE.OUTCHARFN UTF16BE.INCCODEFN UTF16BE.PEEKCCODEFN \UTF16BE.BACKCCODEFN)
+        (FNS UTF16LE.OUTCHARFN UTF16LE.INCCODEFN UTF16LE.PEEKCCODEFN \UTF16LE.BACKCCODEFN)
+        (FNS READBOM WRITEBOM)
+        (FNS MAKE-UNICODE-FORMATS)
+        [DECLARE%: DONTEVAL@LOAD DOCOPY (P (MAKE-UNICODE-FORMATS 'LF]
+        (FNS UTF8.BINCODE \UTF8.FETCHCODE)
+        (FNS UTF8.VALIDATE NUTF8-BYTE1-BYTES NUTF8-CODE-BYTES NUTF8-STRING-BYTES N-MCHARS)
+        (COMS                                                (* ; 
+                                                     "For MAKEINIT, before hashing--no need for XCCS")
+              (FNS MTOUCODE UTOMCODE MTOUCODE? UTOMCODE?))
+        (FNS MTOUSTRING UTOMSTRING MTOUTF8STRING UTF8TOMSTRING)
+                                                             (* ; 
+                                                           "XCCS is not so interesting in the loadup")
+        (FNS XTOUCODE UTOXCODE XTOUCODE? UTOXCODE? XTOUSTRING UTOXSTRING XTOUTF8STRING)
+        (FNS MERGE-UNICODE-TRANSLATION-TABLES UNICODE.UNMAPPED)
+        (DECLARE%: EVAL@COMPILE DONTCOPY (MACROS UNICODE.TRANSLATE \UTF8.GETBASEBYTE UNICODE.SMALLP 
+                                                TRUECODEP))
+        (ADDVARS (*DEFAULT-EXTERNALFORMATS* (UNIX :UTF-8)))
+        (INITVARS *MCCSTOUNICODE* *UNICODETOMCCS* *LARGEUNICODES*)
+        (GLOBALVARS *MCCSTOUNICODE* *UNICODETOMCCS* *LARGEUNICODES*)
+        (COMS 
+              (* ;; "There are 6400 private Unicodes in 25 256-code charsets. For MCCS we map to a contiguous region of unused/reserved--private isn't big enough")
+
+              (GLOBALVARS *NEXT-PRIVATE-UNICODE* *NEXT-PRIVATE-MCCSCODE*)
+              [DECLARE%: EVAL@COMPILE DONTCOPY (CONSTANTS (FIRST-PRIVATE-UNICODE (HEXNUM? "E000"))
+                                                      (LAST-PRIVATE-UNICODE (HEXNUM? "F8FF"))
+                                                      (FIRST-PRIVATE-MCCSCODE (CHARCODE "200,0"))
+                                                      (LAST-PRIVATE-MCCSCODE (CHARCODE "230,377"]
+              (FNS UNICODE-INIT)
+              (P (UNICODE-INIT)))
+        (DECLARE%: EVAL@LOAD DONTCOPY (FILES UNICODE-TABLES))
+        (E (PRINTOUT NIL "(MERGE-UNICODE-TRANSLATION-TABLES NIL (QUOTE " (GET-MCCS-UNICODE-MAPPING
+                                                                          'ALL)
+                  "))" T))))
+
+
+
+(* ;; 
+"Defines the UTF-8 external format.  This is part of the MAKEINIT, and therefore loads and uses  the ALIST mapping that is created whenever the file is dumped.  "
+)
+
+(DEFINEQ
+
+(UTF8.OUTCHARFN
+  [LAMBDA (STREAM CHARCODE RAW)                              (* ; "Edited 24-Apr-2025 15:43 by rmk")
+                                                             (* ; "Edited 20-Jan-2025 20:45 by rmk")
+                                                             (* ; "Edited 31-Jan-2024 00:32 by rmk")
+                                                            (* ; "Edited  8-Aug-2021 13:02 by rmk:")
+                                                            (* ; "Edited 17-Aug-2020 08:45 by rmk:")
+                                                            (* ; "Edited 30-Jan-2020 23:08 by rmk:")
+
+    (* ;; "Perhaps the translation table should already do the mapping for EOL to LF, but that seems to be a separate property of the stream. Also, CRLF=2 bytes.")
+
+    (* ;; "Print UTF8 sequence for CHARCODE.  Do not do MCCS to Unicode translation if RAW.")
+
+    (IF (EQ CHARCODE (CHARCODE EOL))
+        THEN (FREPLACE (STREAM CHARPOSITION) OF STREAM WITH 0)
+             (\BOUTEOL STREAM)
+      ELSE (CHANGE (FFETCH (STREAM CHARPOSITION) OF STREAM)
+                  (IPLUS16 1 DATUM))
+           (FOR C INSIDE (CL:IF RAW
+                             CHARCODE
+                             (UNICODE.TRANSLATE CHARCODE *MCCSTOUNICODE*))
+              DO (IF (ILESSP C 128)
+                     THEN (\BOUT STREAM C)
+                   ELSEIF (ILESSP C 2048)
+                     THEN                                    (* ; "x800")
+                          (\BOUT STREAM (LOGOR (LLSH 3 6)
+                                               (LRSH C 6)))
+                          (\BOUT STREAM (LOGOR (LLSH 2 6)
+                                               (LOADBYTE C 0 6)))
+                   ELSEIF (ILESSP C 65536)
+                     THEN                                    (* ; "x10000")
+                          (\BOUT STREAM (LOGOR (LLSH 7 5)
+                                               (LRSH C 12)))
+                          (\BOUT STREAM (LOGOR (LLSH 2 6)
+                                               (LOADBYTE C 6 6)))
+                          (\BOUT STREAM (LOGOR (LLSH 2 6)
+                                               (LOADBYTE C 0 6)))
+                   ELSEIF (ILESSP C 2097152)
+                     THEN                                    (* ; "x200000")
+                          (\BOUT STREAM (LOGOR (LLSH 15 4)
+                                               (LRSH C 18)))
+                          (\BOUT STREAM (LOGOR (LLSH 2 6)
+                                               (LOADBYTE C 12 6)))
+                          (\BOUT STREAM (LOGOR (LLSH 2 6)
+                                               (LOADBYTE C 6 6)))
+                          (\BOUT STREAM (LOGOR (LLSH 2 6)
+                                               (LOADBYTE C 0 6)))
+                   ELSE (ERROR "CHARCODE too big for UTF8" C])
+
+(UTF8.SLUG.OUTCHARFN
+  [LAMBDA (STREAM CODE RAW)                                  (* ; "Edited 24-Apr-2025 15:43 by rmk")
+                                                             (* ; "Edited 21-Jan-2025 18:37 by rmk")
+                                                             (* ; "Edited 14-Jan-2025 12:39 by rmk")
+
+    (* ;; "Produces Unicode Representative FFFD as a slug for MCCS unmapped characters")
+
+    (UTF8.OUTCHARFN STREAM (OR (CL:IF RAW
+                                   CODE
+                                   (XTOUCODE? CODE))
+                               (CONSTANT (HEXNUM? "FFFD")))
+           T])
+
+(UTF8.INCCODEFN
+  [LAMBDA (STREAM COUNTP RAW)                                (* ; "Edited 22-Feb-2026 14:13 by rmk")
+                                                             (* ; "Edited 19-Feb-2026 11:31 by rmk")
+                                                             (* ; "Edited 23-Oct-2025 08:31 by rmk")
+                                                             (* ; "Edited 24-Apr-2025 15:44 by rmk")
+                                                             (* ; "Edited  2-Feb-2024 11:44 by rmk")
+                                                             (* ; "Edited 30-Jan-2024 22:56 by rmk")
+                                                            (* ; "Edited  6-Aug-2021 16:02 by rmk:")
+                                                            (* ; "Edited  6-Aug-2020 17:13 by rmk:")
+
+    (* ;; "Do not do UNICODE to MCSS translation if RAW.")
+
+    (* ;; "Test for smallp because the stream's End-of-file operation may suppress the error")
+
+    (DECLARE (USEDFREE *BYTECOUNTER*))
+    (LET (BYTE1 BYTE2 BYTE3 BYTE4 CODE (COUNT 1))
+         (SETQ BYTE1 (\BIN STREAM))
+
+         (* ;; "Distinguish on header bytes (modulo peculiar EOF behavior--the caller will get whatever ended up in BYTE1")
+
+         (CL:WHEN (SMALLP BYTE1)
+             [SETQ CODE (if (ILEQ BYTE1 127)
+                            then 
+                                 (* ;; 
+                           "Test first:  Ascii is the common case.  EOL requires its own translation")
+
+                                 (SELCHARQ BYTE1
+                                      (CR (SELECTC (fetch (STREAM EOLCONVENTION) of STREAM)
+                                              (CR.EOLC       (* ; "Also eq BYTE1")
+                                                       (CHARCODE EOL))
+                                              (CRLF.EOLC (if (EQ (CHARCODE LF)
+                                                                 (\PEEKBIN STREAM T))
+                                                             then (\BIN STREAM)
+                                                                  (CL:WHEN COUNTP (SETQ COUNT 2))
+                                                                  (CHARCODE EOL)
+                                                           else BYTE1))
+                                              BYTE1))
+                                      (LF (CL:IF (EQ LF.EOLC (fetch (STREAM EOLCONVENTION)
+                                                                of STREAM))
+                                              (CHARCODE EOL)
+                                              BYTE1))
+                                      BYTE1)
+                          elseif (ILEQ BYTE1 223)
+                            then                             (* ; "2 bytes")
+                                 (SETQ COUNT 2)
+                                 (SETQ BYTE2 (\BIN STREAM))
+                                 (CL:WHEN (OR (NOT (SMALLP BYTE2))
+                                              (ILESSP BYTE2 128))
+                                     (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2)))
+                                 (LOGOR (LLSH (LOADBYTE BYTE1 0 5)
+                                              6)
+                                        (LOADBYTE BYTE2 0 6))
+                          elseif (ILEQ BYTE1 239)
+                            then                             (* ; "3 bytes")
+                                 (SETQ BYTE2 (\BIN STREAM))
+                                 (CL:WHEN (OR (NOT (SMALLP BYTE2))
+                                              (ILESSP BYTE2 128))
+                                     (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2)))
+                                 (SETQ BYTE3 (\BIN STREAM))
+                                 (CL:WHEN (OR (NOT (SMALLP BYTE3))
+                                              (ILESSP BYTE3 128))
+                                     (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3)))
+                                 (SETQ COUNT 3)
+                                 (LOGOR (LLSH (LOADBYTE BYTE1 0 4)
+                                              12)
+                                        (LLSH (LOADBYTE BYTE2 0 6)
+                                              6)
+                                        (LOADBYTE BYTE3 0 6))
+                          else                               (* ; "4 bytes")
+                               (SETQ BYTE2 (\BIN STREAM))
+                               (CL:WHEN (OR (NOT (SMALLP BYTE2))
+                                            (ILESSP BYTE2 128))
+                                   (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2)))
+                               (SETQ BYTE3 (\BIN STREAM))
+                               (CL:WHEN (OR (NOT (SMALLP BYTE3))
+                                            (ILESSP BYTE3 128))
+                                   (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3)))
+                               (SETQ BYTE4 (\BIN STREAM))
+                               (CL:WHEN (OR (NOT (SMALLP BYTE4))
+                                            (ILESSP BYTE4 128))
+                                   (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3 BYTE4)))
+                               (SETQ COUNT 4)
+                               (LOGOR (LLSH (LOADBYTE BYTE1 0 3)
+                                            18)
+                                      (LLSH (LOADBYTE BYTE2 0 6)
+                                            12)
+                                      (LLSH (LOADBYTE BYTE3 0 6)
+                                            6)
+                                      (LOADBYTE BYTE4 0 6])
+         (CL:WHEN (FIXP CODE)                                (* ; 
+                                                             "Could be ENDOFSTREAMOP NIL, return NIL")
+             (CL:UNLESS RAW
+                 (SETQ CODE (UNICODE.TRANSLATE (UNICODE.SMALLP (UNICODE.SMALLP CODE))
+                                   *UNICODETOMCCS*))))
+         (CL:WHEN COUNTP (SETQ *BYTECOUNTER* COUNT))
+         CODE])
+
+(UTF8.PEEKCCODEFN
+  [LAMBDA (STREAM NOERROR RAW)                               (* ; "Edited 22-Feb-2026 14:12 by rmk")
+                                                             (* ; "Edited 23-Oct-2025 08:26 by rmk")
+                                                             (* ; "Edited 24-Apr-2025 15:44 by rmk")
+                                                             (* ; "Edited  2-Feb-2024 11:48 by rmk")
+                                                            (* ; "Edited 14-Jun-2021 22:53 by rmk:")
+
+    (* ;; "Modeled this after \EUCPEEK on LLREAD.  In the multi-byte (non-ASCII) case, backs the file pointer to the beginning by the proper number of \BACKFILEPTRs, and returns a count of 0.  Returns NIL if NOERROR and either invalid UTF8 or end of file.")
+
+    (* ;; "Could be that the caller takes care of backing up the file position if the number of binned-bytes is returned.")
+
+    (* ;; "Do not do UNICODE to MCCS translation if RAW")
+
+    (PROG (BYTE1 BYTE2 BYTE3 BYTE4 CODE)
+          (SETQ BYTE1 (\PEEKBIN STREAM NOERROR))
+
+     (* ;; "Distinguish on header bytex")
+
+          (CL:UNLESS BYTE1 (RETURN NIL))
+          [if (ILEQ BYTE1 127)
+              then 
+                   (* ;; 
+                   "Test first:  Ascii is the common case.  No need to back up, since we peeked.")
+
+                   (SETQ CODE BYTE1)
+            elseif [ILEQ BYTE1 223                           (* ; "2 bytes")
+                         (BIN STREAM)
+                         (SETQ BYTE2 (\PEEKBIN STREAM NOERROR))
+                         (\BACKFILEPTR STREAM)
+                         (if (AND BYTE2 (IGEQ BYTE2 128))
+                             then (SETQ CODE (LOGOR (LLSH (LOADBYTE BYTE1 0 5)
+                                                          6)
+                                                    (LOADBYTE BYTE2 0 6)))
+                           elseif NOERROR
+                           else (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2]
+            elseif (ILEQ BYTE1 239)
+              then                                           (* ; "3 bytes")
+                   (BIN STREAM)
+                   (CL:UNLESS (AND (SETQ BYTE2 (\PEEKBIN STREAM NOERROR))
+                                   (IGEQ BYTE2 128))
+                       (\BACKFILEPTR STREAM)
+                       (OR NOERROR (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2)))
+                       (RETURN CODE))
+                   (BIN STREAM)
+                   (SETQ BYTE3 (\PEEKBIN STREAM NOERROR))    (* ; 
+                                                             "PEEK the last, no need to back it up")
+                   (\BACKFILEPTR STREAM)
+                   (\BACKFILEPTR STREAM)
+                   (if (AND BYTE3 (IGEQ BYTE3 128))
+                       then (SETQ CODE (LOGOR (LLSH (LOADBYTE BYTE1 0 4)
+                                                    12)
+                                              (LLSH (LOADBYTE BYTE2 0 6)
+                                                    6)
+                                              (LOADBYTE BYTE3 0 6)))
+                     elseif NOERROR
+                     else (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3)))
+            else                                             (* ; "4 bytes")
+                 (BIN STREAM)
+                 (CL:UNLESS (AND (SETQ BYTE2 (\PEEKBIN STREAM NOERROR))
+                                 (IGEQ BYTE2 128))
+                     (\BACKFILEPTR STREAM)
+                     (OR NOERROR (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2)))
+                     (RETURN CODE))
+                 (BIN STREAM)
+                 (CL:UNLESS (AND (SETQ BYTE3 (\PEEKBIN STREAM NOERROR))
+                                 (IGEQ BYTE3 128))
+                     (\BACKFILEPTR STREAM)
+                     (\BACKFILEPTR STREAM)
+                     (OR NOERROR (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3)))
+                     (RETURN CODE))
+                 (BIN STREAM)
+                 (SETQ BYTE4 (\PEEKBIN STREAM NOERROR))
+                 (\BACKFILEPTR STREAM)
+                 (\BACKFILEPTR STREAM)
+                 (\BACKFILEPTR STREAM)
+                 (if (AND BYTE4 (IGEQ BYTE4 128))
+                     then (SETQ CODE (LOGOR (LLSH (LOADBYTE BYTE1 0 3)
+                                                  18)
+                                            (LLSH (LOADBYTE BYTE2 0 6)
+                                                  12)
+                                            (LLSH (LOADBYTE BYTE3 0 6)
+                                                  6)
+                                            (LOADBYTE BYTE4 0 6)))
+                   elseif NOERROR
+                   else (ERROR "INVALID UTF8 SEQUENCE" (LIST BYTE1 BYTE2 BYTE3 BYTE4]
+          (CL:WHEN (AND CODE (NOT RAW))
+              (SETQ CODE (UNICODE.TRANSLATE (UNICODE.SMALLP (UNICODE.SMALLP CODE))
+                                *UNICODETOMCCS*)))
+          (RETURN CODE])
+
+(\UTF8.BACKCCODEFN
+  [LAMBDA (STREAM COUNTP RAW)                                (* ; "Edited 19-Jul-2022 15:30 by rmk")
+                                                            (* ; "Edited  6-Aug-2021 16:04 by rmk:")
+
+    (* ;; "\BACKFILEPTR is NIL at beginning of FILE.  Presumably a little bit more efficient if we decoded the UTF8 bytes backwards and didn't do the peek, but probably not worth the complexity. ")
+
+    (DECLARE (USEDFREE *BYTECOUNTER*))
+    (BIND (C ← 0) WHILE (IF (\BACKFILEPTR STREAM)
+                            THEN (ADD C -1)
+                                 (EQ 2 (LRSH (\PEEKBIN STREAM)
+                                             6))
+                          ELSE (CL:WHEN COUNTP (SETQ *BYTECOUNTER* C))
+                               (RETURN NIL)) REPEATUNTIL (EQ C -4)
+       FINALLY (CL:WHEN COUNTP (SETQ *BYTECOUNTER* C))
+             (RETURN (UTF8.PEEKCCODEFN STREAM NIL RAW])
+)
+(DEFINEQ
+
+(UTF16BE.OUTCHARFN
+  [LAMBDA (STREAM CHARCODE RAW)                              (* ; "Edited 24-Apr-2025 15:44 by rmk")
+                                                             (* ; "Edited 31-Jan-2024 00:32 by rmk")
+                                                            (* ; "Edited  8-Aug-2021 13:09 by rmk:")
+                                                            (* ; "Edited 30-Jan-2020 23:08 by rmk:")
+
+    (* ;; "PRINT UTF16 sequence for CHARCODE.  Do not do MCCS to UNICODE translation if RAW.")
+
+    (* ;; "Not sure about EOL conversion if truly %"raw%"")
+
+    (IF (EQ CHARCODE (CHARCODE EOL))
+        THEN (FREPLACE (STREAM CHARPOSITION) OF STREAM WITH 0)
+      ELSE (CHANGE (FFETCH (STREAM CHARPOSITION) OF STREAM)
+                  (IPLUS16 1 DATUM)))
+    (FOR C INSIDE (CL:IF RAW
+                      CHARCODE
+                      (UNICODE.TRANSLATE CHARCODE *MCCSTOUNICODE*)) DO (\WOUT STREAM C])
+
+(UTF16BE.INCCODEFN
+  [LAMBDA (STREAM COUNTP RAW)                                (* ; "Edited 19-Feb-2026 11:33 by rmk")
+                                                             (* ; "Edited 24-Apr-2025 15:45 by rmk")
+                                                             (* ; "Edited 10-Mar-2024 12:00 by rmk")
+                                                            (* ; "Edited  6-Aug-2021 16:05 by rmk:")
+
+    (* ;; 
+    "Do not do UNICODE to MCCS translation if RAW.  Test for SMALLPin case of funky EOF behavior")
+
+    (DECLARE (USEDFREE *BYTECOUNTER*))
+    (LET (CODE BYTE1 BYTE2 COUNT)
+         (IF [AND (SMALLP (SETQ BYTE1 (\BIN STREAM)))
+                  (SMALLP (SETQ BYTE2 (\BIN STREAM]
+             THEN (SETQ COUNT 2)
+                  (SETQ CODE (create WORD
+                                    HIBYTE ← (\BIN STREAM)
+                                    LOBYTE ← (\BIN STREAM)))
+                  (CL:WHEN (FIXP CODE)                       (* ; "Funky ENDOFSTREAMOP ?")
+                      (CL:UNLESS RAW
+                          (SETQ CODE (UNICODE.TRANSLATE CODE *UNICODETOMCCS*))))
+                  (CL:WHEN COUNTP (SETQ *BYTECOUNTER* COUNT))
+                  CODE
+           ELSE (ERROR "ODD NUMBER OF BYTES IN UTF16 FILE" STREAM])
+
+(UTF16BE.PEEKCCODEFN
+  [LAMBDA (STREAM NOERROR RAW)                               (* ; "Edited 24-Apr-2025 15:45 by rmk")
+                                                             (* ; "Edited 10-Mar-2024 12:01 by rmk")
+                                                            (* ; "Edited 14-Jun-2021 22:58 by rmk:")
+
+    (* ;; "Could be that the caller takes care of backing up the file position if the number of binned-bytes is returned.")
+
+    (* ;; "Do not do UNICODE to MCCS translation if RAW")
+
+    (LET (BYTE1 BYTE2 CODE)
+         (SETQ BYTE1 (\PEEKBIN STREAM NOERROR))
+         (IF BYTE1
+             THEN (\BIN STREAM)
+                  (SETQ BYTE2 (\PEEKBIN STREAM NOERROR))
+                  (\BACKFILEPTR STREAM)
+                  (IF BYTE2
+                      THEN (SETQ CODE (create WORD
+                                             HIBYTE ← BYTE1
+                                             LOBYTE ← BYTE2))
+                           (CL:IF RAW
+                               CODE
+                               (UNICODE.TRANSLATE CODE *UNICODETOMCCS*))
+                    ELSEIF NOERROR
+                      THEN NIL)
+           ELSEIF NOERROR
+             THEN NIL
+           ELSE (ERROR "INVALID UTF16 CHARACTER" (LIST BYTE1 BYTE2])
+
+(\UTF16BE.BACKCCODEFN
+  [LAMBDA (STREAM COUNTP RAW)                                (* ; "Edited 24-Apr-2025 15:28 by rmk")
+                                                             (* ; "Edited 10-Mar-2024 12:02 by rmk")
+                                                             (* ; "Edited 19-Jul-2022 15:14 by rmk")
+                                                            (* ; "Edited  6-Aug-2021 16:07 by rmk:")
+
+    (* ;; "\BACKFILEPTR is NIL at beginning of FILE, do nothing.")
+
+    (DECLARE (USEDFREE *BYTECOUNTER*))
+    (CL:WHEN (\BACKFILEPTR STREAM)
+        (LET (CODE (BYTE2 (\PEEKBIN STREAM)))
+             (IF (\BACKFILEPTR STREAM)
+                 THEN (CL:WHEN COUNTP (SETQ *BYTECOUNTER* -2))
+                      (SETQ CODE (create WORD
+                                        HIBYTE ← (\PEEKBIN STREAM)
+                                        LOBYTE ← BYTE2))
+                      (CL:IF RAW
+                          CODE
+                          (UNICODE.TRANSLATE CODE *UNICODETOMCCS*))
+               ELSEIF COUNTP
+                 THEN (SETQ *BYTECOUNTER* -1)
+                      NIL)))])
+)
+(DEFINEQ
+
+(UTF16LE.OUTCHARFN
+  [LAMBDA (STREAM CHARCODE RAW)                              (* ; "Edited 24-Apr-2025 15:45 by rmk")
+                                                             (* ; "Edited 10-Mar-2024 11:58 by rmk")
+                                                            (* ; "Edited  8-Aug-2021 13:09 by rmk:")
+                                                            (* ; "Edited 30-Jan-2020 23:08 by rmk:")
+
+    (* ;; "PRINT UTF16 sequence for CHARCODE.  Do not do MCCS to UNICODE translation if RAW.")
+
+    (* ;; "Not sure about EOL conversion if truly %"raw%"")
+
+    (IF (EQ CHARCODE (CHARCODE EOL))
+        THEN (FREPLACE (STREAM CHARPOSITION) OF STREAM WITH 0)
+      ELSE (CHANGE (FFETCH (STREAM CHARPOSITION) OF STREAM)
+                  (IPLUS16 1 DATUM)))
+    (FOR C INSIDE (CL:IF RAW
+                      CHARCODE
+                      (UNICODE.TRANSLATE CHARCODE *MCCSTOUNICODE*))
+       DO (BOUT STREAM (fetch LOBYTE of CHARCODE))
+          (BOUT STREAM (fetch HIBYTE of CHARCODE])
+
+(UTF16LE.INCCODEFN
+  [LAMBDA (STREAM COUNTP RAW)                                (* ; "Edited 24-Apr-2025 15:45 by rmk")
+                                                             (* ; "Edited 10-Mar-2024 12:03 by rmk")
+                                                            (* ; "Edited  6-Aug-2021 16:05 by rmk:")
+
+    (* ;; 
+    "Do not do UNICODE to MCCS translation if RAW.  Test for SMALLPin case of funky EOF behavior")
+
+    (DECLARE (USEDFREE *BYTECOUNTER*))
+    (LET (CODE BYTE1 BYTE2 COUNT)
+         (IF [AND (SMALLP (SETQ BYTE1 (\BIN STREAM)))
+                  (SMALLP (SETQ BYTE2 (\BIN STREAM]
+             THEN (SETQ COUNT 2)
+                  (SETQ CODE (create WORD
+                                    LOBYTE ← (\BIN STREAM)
+                                    HIBYTE ← (\BIN STREAM)))
+                  (CL:UNLESS RAW
+                      (SETQ CODE (UNICODE.TRANSLATE CODE *UNICODETOMCCS*)))
+                  (CL:WHEN COUNTP (SETQ *BYTECOUNTER* COUNT))
+                  CODE
+           ELSE (ERROR "ODD NUMBER OF BYTES IN UTF16 FILE" STREAM])
+
+(UTF16LE.PEEKCCODEFN
+  [LAMBDA (STREAM NOERROR RAW)                               (* ; "Edited 24-Apr-2025 15:46 by rmk")
+                                                             (* ; "Edited 10-Mar-2024 11:43 by rmk")
+                                                            (* ; "Edited 14-Jun-2021 22:58 by rmk:")
+
+    (* ;; "Could be that the caller takes care of backing up the file position if the number of binned-bytes is returned.")
+
+    (* ;; "Do not do UNICODE to MCCS translation if RAW")
+
+    (LET (BYTE1 BYTE2 CODE)
+         (SETQ BYTE1 (\PEEKBIN STREAM NOERROR))
+         (IF BYTE1
+             THEN (\BIN STREAM)
+                  (SETQ BYTE2 (\PEEKBIN STREAM NOERROR))
+                  (\BACKFILEPTR STREAM)
+                  (IF BYTE2
+                      THEN (SETQ CODE (LOGOR (LLSH BYTE2 8)
+                                             BYTE1))
+                           (CL:IF RAW
+                               CODE
+                               (UNICODE.TRANSLATE CODE *UNICODETOMCCS*))
+                    ELSEIF NOERROR
+                      THEN NIL)
+           ELSEIF NOERROR
+             THEN NIL
+           ELSE (ERROR "INVALID UTF16 CHARACTER" (LIST BYTE1 BYTE2])
+
+(\UTF16LE.BACKCCODEFN
+  [LAMBDA (STREAM COUNTP RAW)                                (* ; "Edited 24-Apr-2025 15:28 by rmk")
+                                                             (* ; "Edited 10-Mar-2024 12:04 by rmk")
+                                                             (* ; "Edited 19-Jul-2022 15:14 by rmk")
+                                                            (* ; "Edited  6-Aug-2021 16:07 by rmk:")
+
+    (* ;; "\BACKFILEPTR is NIL at beginning of FILE, do nothing.")
+
+    (DECLARE (USEDFREE *BYTECOUNTER*))
+    (CL:WHEN (\BACKFILEPTR STREAM)
+        (LET (CODE (BYTE2 (\PEEKBIN STREAM)))
+             (IF (\BACKFILEPTR STREAM)
+                 THEN (CL:WHEN COUNTP (SETQ *BYTECOUNTER* -2))
+                      (SETQ CODE (create WORD
+                                        HIBYTE ← BYTE2
+                                        LOBYTE ← (\PEEKBIN STREAM)))
+                      (CL:IF RAW
+                          CODE
+                          (UNICODE.TRANSLATE CODE *UNICODETOMCCS*))
+               ELSEIF COUNTP
+                 THEN (SETQ *BYTECOUNTER* -1)
+                      NIL)))])
+)
+(DEFINEQ
+
+(READBOM
+  [LAMBDA (STREAM COUNTP)                                    (* ; "Edited 17-Jan-2025 11:29 by rmk")
+                                                             (* ; "Edited 11-Mar-2024 23:53 by rmk")
+                                                             (* ; "Edited 10-Mar-2024 13:01 by rmk")
+
+    (* ;; "If COUNTP, this must be under a generic \INCCODE that binds *BYTECOUNTER*")
+
+    (* ;; "Reads and decodes the BOM bytes.  If BOM ispresent, the stream is left at the first following byte, otherwise the stream is reset to its position on entry (presumably 0).")
+
+    (* ;; "I used the UNHEXTRING constants so that the hex bytes are visible in the code, maybe there's another function that does that?")
+
+    (DECLARE (USEDFREE *BYTECOUNTER*))
+    (SELECTC (\PEEKBIN STREAM T)
+        ((HEXNUM? "EF") 
+             (BIN STREAM)
+             (if (EQ (CONSTANT (HEXNUM? "BB"))
+                     (\PEEKBIN STREAM T))
+                 then (BIN STREAM)
+                      (if (EQ (CONSTANT (HEXNUM? "BF"))
+                              (\PEEKBIN STREAM T))
+                          then (BIN STREAM)
+                               (CL:WHEN COUNTP (add *BYTECOUNTER* 3))
+                               :UTF-8
+                        else (\BACKFILEPTR STREAM))
+               else (\BACKFILEPTR STREAM)))
+        ((HEXNUM? "FE") 
+             (BIN STREAM)
+             (if (EQ (CONSTANT (HEXNUM? "FF"))
+                     (\PEEKBIN STREAM T))
+                 then (BIN STREAM)
+                      (CL:WHEN COUNTP (add *BYTECOUNTER* 2))
+                      :UTF-16BE
+               else (\BACKFILEPTR STREAM)))
+        ((HEXNUM? "FF") 
+             (BIN STREAM)
+             (if (EQ (CONSTANT (HEXNUM? "FE"))
+                     (\PEEKBIN STREAM T))
+                 then (BIN STREAM)
+                      (CL:WHEN COUNTP (add *BYTECOUNTER* 2))
+                      :UTF-16LE
+               else (\BACKFILEPTR STREAM)))
+        NIL])
+
+(WRITEBOM
+  [LAMBDA (STREAM FORMAT)                                    (* ; "Edited 17-Jan-2025 11:29 by rmk")
+                                                             (* ; "Edited 16-Mar-2024 20:53 by rmk")
+                                                             (* ; "Edited 11-Mar-2024 23:53 by rmk")
+                                                             (* ; "Edited 10-Mar-2024 13:01 by rmk")
+
+    (* ;; "Writes a BOM that represents FORMAT (:UTF-8, :UTF16-BE, :UTF16-LE")
+
+    (SELECTQ FORMAT
+        (:UTF-8 (BOUT STREAM (CONSTANT (HEXNUM? "EF")))
+                (BOUT STREAM (CONSTANT (HEXNUM? "BB")))
+                (BOUT STREAM (CONSTANT (HEXNUM? "BF"))))
+        (:UTF-16BE (BOUT STREAM (CONSTANT (HEXNUM? "FE")))
+                   (BOUT STREAM (CONSTANT (HEXNUM? "FF"))))
+        (:UTF-16LE (BOUT STREAM (CONSTANT (HEXNUM? "FF")))
+                   (BOUT STREAM (HEXNUM? "FE")))
+        NIL])
+)
+(DEFINEQ
+
+(MAKE-UNICODE-FORMATS
+  [LAMBDA (EXTERNALEOL)                                      (* ; "Edited 23-Feb-2026 12:14 by rmk")
+                                                             (* ; "Edited 22-Feb-2026 09:14 by rmk")
+                                                             (* ; "Edited  5-Feb-2026 11:06 by rmk")
+                                                             (* ; "Edited 17-Jan-2025 18:38 by rmk")
+                                                             (* ; "Edited 10-Mar-2024 11:55 by rmk")
+                                                             (* ; "Edited  8-Dec-2023 15:19 by rmk")
+                                                             (* ; "Edited 19-Jul-2022 15:36 by rmk")
+                                                            (* ; "Edited  6-Aug-2021 16:08 by rmk:")
+
+    (* ;; "RAW formats do not do MCCS/Unicode translation, just deal with the byte encoding.")
+
+    (* ;; "The EXTERNALEOL specifies the EOLCONVENTION of the stream, particularly to produce output files with the desired convention.  On input the macro \CHECKEOLC (LLREAD) coerces only that coding to the internal EOL, which is a mistake.")
+
+    (MAKE-EXTERNALFORMAT :UTF-8 (FUNCTION UTF8.INCCODEFN)
+           (FUNCTION UTF8.PEEKCCODEFN)
+           (FUNCTION \UTF8.BACKCCODEFN)
+           (FUNCTION UTF8.OUTCHARFN)
+           NIL
+           'LF NIL (FUNCTION MTOUTF8STRING)
+           NIL
+           (FUNCTION NILL)
+           (FUNCTION UTF8TOMSTRING))
+
+    (* ;; "Don't remember what this is for:")
+
+    (\INSTALL.EXTERNALFORMAT (create EXTERNALFORMAT using (FIND-FORMAT :UTF-8)
+                                                          NAME ← :UTF-8-SLUG OUTCHARFN ←
+                                                          (FUNCTION UTF8.SLUG.OUTCHARFN)))
+    (MAKE-EXTERNALFORMAT :UTF-8-RAW [FUNCTION (LAMBDA (STREAM COUNTP)
+                                                (UTF8.INCCODEFN STREAM COUNTP T]
+           [FUNCTION (LAMBDA (STREAM NOERROR)
+                       (UTF8.PEEKCCODEFN STREAM NOERROR T]
+           [FUNCTION (LAMBDA (STREAM COUNTP)
+                       (\UTF8.BACKCCODEFN STREAM COUNTP T]
+           [FUNCTION (LAMBDA (STREAM CHARCODE)
+                       (UTF8.OUTCHARFN STREAM CHARCODE T]
+           NIL EXTERNALEOL NIL NIL NIL (FUNCTION NILL))
+    (MAKE-EXTERNALFORMAT :UTF-16BE (FUNCTION UTF16BE.INCCODEFN)
+           (FUNCTION UTF16BE.PEEKCCODEFN)
+           (FUNCTION \UTF16BE.BACKCCODEFN)
+           (FUNCTION UTF16BE.OUTCHARFN)
+           NIL EXTERNALEOL NIL NIL NIL (FUNCTION NILL))
+    (MAKE-EXTERNALFORMAT :UTF-16BE-RAW [FUNCTION (LAMBDA (STREAM COUNTP)
+                                                   (UTF16BE.INCCODEFN STREAM COUNTP T]
+           [FUNCTION (LAMBDA (STREAM NOERROR)
+                       (UTF16BE.PEEKCCODEFN STREAM NOERROR T]
+           [FUNCTION (LAMBDA (STREAM COUNTP)
+                       (\UTF16BE.BACKCCODEFN STREAM COUNTP T]
+           [FUNCTION (LAMBDA (STREAM CHARCODE)
+                       (UTF16BE.OUTCHARFN STREAM CHARCODE T]
+           NIL EXTERNALEOL NIL NIL NIL (FUNCTION NILL))
+    (MAKE-EXTERNALFORMAT :UTF-16LE (FUNCTION UTF16LE.INCCODEFN)
+           (FUNCTION UTF16LE.PEEKCCODEFN)
+           (FUNCTION \UTF16LE.BACKCCODEFN)
+           (FUNCTION UTF16LE.OUTCHARFN)
+           NIL EXTERNALEOL NIL NIL NIL (FUNCTION NILL))
+    (MAKE-EXTERNALFORMAT :UTF-16LE-RAW [FUNCTION (LAMBDA (STREAM COUNTP)
+                                                   (UTF16LE.INCCODEFN STREAM COUNTP T]
+           [FUNCTION (LAMBDA (STREAM NOERROR)
+                       (UTF16LE.PEEKCCODEFN STREAM NOERROR T]
+           [FUNCTION (LAMBDA (STREAM COUNTP)
+                       (\UTF16LE.BACKCCODEFN STREAM COUNTP T]
+           [FUNCTION (LAMBDA (STREAM CHARCODE)
+                       (UTF16LE.OUTCHARFN STREAM CHARCODE T]
+           NIL EXTERNALEOL NIL NIL NIL (FUNCTION NILL])
+)
+(DECLARE%: DONTEVAL@LOAD DOCOPY 
+
+(MAKE-UNICODE-FORMATS 'LF)
+)
+(DEFINEQ
+
+(UTF8.BINCODE
+  [LAMBDA (STREAM RAW)                                       (* ; "Edited 24-Apr-2025 15:28 by rmk")
+                                                             (* ; "Edited  4-Feb-2024 01:06 by rmk")
+                                                             (* ; "Edited  1-Feb-2024 11:21 by rmk")
+                                                             (* ; "Edited 28-Dec-2023 13:32 by rmk")
+                                                            (* ; "Edited  6-Aug-2021 16:02 by rmk:")
+                                                            (* ; "Edited  6-Aug-2020 17:13 by rmk:")
+
+    (* ;; "Decodes a UTF8 character code by binning  from STREAM ")
+
+    (* ;; "The validity of STREAM is guaranteed by the caller (presumably TEDIT), we aren't testing here for the validity of the trailing bytes.")
+
+    (* ;; "This doesn't do EOL conversion or translation, unlike UTF8.INCCODEFN.")
+
+    (LET ((BYTE1 (BIN STREAM))
+          CODE)
+         [SETQ CODE (if (ILEQ BYTE1 127)
+                        then BYTE1
+                      elseif (ILEQ BYTE1 223)
+                        then                                 (* ; "2 bytes")
+                             (LOGOR (LLSH (LOADBYTE BYTE1 0 5)
+                                          6)
+                                    (LOADBYTE (BIN STREAM)
+                                           0 6))
+                      elseif (ILEQ BYTE1 239)
+                        then                                 (* ; "3 bytes")
+                             (LOGOR (LLSH (LOADBYTE BYTE1 0 4)
+                                          12)
+                                    (LLSH (LOADBYTE (BIN STREAM)
+                                                 0 6)
+                                          6)
+                                    (LOADBYTE (BIN STREAM)
+                                           0 6))
+                      else                                   (* ; "4 bytes")
+                           (LOGOR (LLSH (LOADBYTE BYTE1 0 3)
+                                        18)
+                                  (LLSH (LOADBYTE (BIN STREAM)
+                                               0 6)
+                                        12)
+                                  (LLSH (LOADBYTE (BIN STREAM)
+                                               0 6)
+                                        6)
+                                  (LOADBYTE (BIN STREAM)
+                                         0 6]
+         (CL:IF RAW
+             CODE
+             (UNICODE.TRANSLATE CODE *UNICODETOMCCS*))])
+
+(\UTF8.FETCHCODE
+  [LAMBDA (CODESIZE BUFFER BYTEOFFSET)                       (* ; "Edited 28-Dec-2023 13:32 by rmk")
+                                                            (* ; "Edited  6-Aug-2021 16:02 by rmk:")
+                                                            (* ; "Edited  6-Aug-2020 17:13 by rmk:")
+
+    (* ;; "Decodes a UTF8 byte sequence of size CODESIZE in BUFFER starting at BYTEOFFSET.")
+
+    (* ;; "The validity of the thesize, buffer, and offset are guaranteed by the caller.")
+
+    (LET ((BYTE1 (\GETBASEBYTE BUFFER BYTEOFFSET))
+          BYTE2 BYTE3 BYTE4)
+         (SELECTQ CODESIZE
+             (2 (SETQ BYTE2 (\UTF8.GETBASEBYTE BUFFER (IPLUS 1 BYTEOFFSET)))
+                (LOGOR (LLSH (LOADBYTE BYTE1 0 5)
+                             6)
+                       (LOADBYTE BYTE2 0 6)))
+             (3 (SETQ BYTE2 (\UTF8.GETBASEBYTE BUFFER (IPLUS 1 BYTEOFFSET)))
+                (SETQ BYTE3 (\UTF8.GETBASEBYTE BUFFER (IPLUS 2 BYTEOFFSET)))
+                (LOGOR (LLSH (LOADBYTE BYTE1 0 4)
+                             12)
+                       (LLSH (LOADBYTE BYTE2 0 6)
+                             6)
+                       (LOADBYTE BYTE3 0 6)))
+             (4 (SETQ BYTE2 (\UTF8.GETBASEBYTE BUFFER (IPLUS 1 BYTEOFFSET)))
+                (SETQ BYTE3 (\UTF8.GETBASEBYTE BUFFER (IPLUS 2 BYTEOFFSET)))
+                (SETQ BYTE4 (\UTF8.GETBASEBYTE BUFFER (IPLUS 3 BYTEOFFSET)))
+                (LOGOR (LLSH (LOADBYTE BYTE1 0 3)
+                             18)
+                       (LLSH (LOADBYTE BYTE2 0 6)
+                             12)
+                       (LLSH (LOADBYTE BYTE3 0 6)
+                             6)
+                       (LOADBYTE BYTE4 0 6)))
+             (1 BYTE1)
+             (SHOULDNT])
+)
+(DEFINEQ
+
+(UTF8.VALIDATE
+  [LAMBDA (STREAM BYTE)                                      (* ; "Edited  2-Feb-2024 12:03 by rmk")
+                                                             (* ; "Edited 28-Dec-2023 11:57 by rmk")
+                                                            (* ; "Edited  6-Aug-2021 16:02 by rmk:")
+                                                            (* ; "Edited  6-Aug-2020 17:13 by rmk:")
+
+    (* ;; "Returns the codesize if the bytes starting at STREAM's current position form a valid UTF-8 sequence.")
+
+    (* ;; "If BYTE is provided, it is interpreted as the just-read header byte with the stream is positioned just after it.")
+
+    (* ;; "Test for smallp because the stream's End-of-file operation may suppress the error--otherwise an error will happen if the streams runs out of necessary bytes.")
+
+    (* ;; "For valid sequences, returns the same value as UTF8-SIZE-FROM-BYTE1, but this reads/validates the rest of the bytes. On a non-NILreturn the  stream is positioned before the header byte of the next putative code. The stream position is uncertain on a NIL return.")
+
+    (* ;; "")
+
+    (* ;; "Distinguish on the header byte BYTE.  Not SMALLP presumably if ENDOFSTREAMOP did something unusual.")
+
+    (CL:UNLESS BYTE
+        (SETQ BYTE (BIN STREAM)))
+    (CL:WHEN (SMALLP BYTE)
+        (if (ILEQ BYTE 127)
+            then 1
+          elseif (ILEQ BYTE 223)
+            then                                             (* ; " 2 bytes")
+                 (CL:UNLESS (OR [NOT (SMALLP (SETQ BYTE (BIN STREAM]
+                                (ILESSP BYTE 128))
+                        2)
+          elseif (ILEQ BYTE 239)
+            then                                             (* ; "3 bytes")
+                 (CL:UNLESS (OR (OR [NOT (SMALLP (SETQ BYTE (BIN STREAM]
+                                    (ILESSP BYTE 128))
+                                (OR [NOT (SMALLP (SETQ BYTE (BIN STREAM]
+                                    (ILESSP BYTE 128)))
+                        3)
+          else                                               (* ; "4 bytes")
+               (CL:UNLESS (OR (OR [NOT (SMALLP (SETQ BYTE (BIN STREAM]
+                                  (ILESSP BYTE 128))
+                              (OR [NOT (SMALLP (SETQ BYTE (BIN STREAM]
+                                  (ILESSP BYTE 128))
+                              (OR [NOT (SMALLP (SETQ BYTE (BIN STREAM]
+                                  (ILESSP BYTE 128)))
+                      4)))])
+
+(NUTF8-BYTE1-BYTES
+  [LAMBDA (BYTE1)                                            (* ; "Edited  3-Feb-2024 15:00 by rmk")
+                                                             (* ; "Edited  8-Jan-2024 10:57 by rmk")
+                                                             (* ; "Edited 28-Jun-2022 00:02 by rmk")
+                                                            (* ; "Edited 10-Aug-2020 12:35 by rmk:")
+
+    (* ;; "Returns the number of bytes in a UTF8 code representation whose first byte is BYTEE1. ")
+
+    (IF (ILEQ BYTE1 127)
+        THEN 1
+      ELSEIF (ILEQ BYTE1 223)
+        THEN 2
+      ELSEIF (ILEQ BYTE1 239)
+        THEN 3
+      ELSE 4])
+
+(NUTF8-CODE-BYTES
+  [LAMBDA (CODE)                                             (* ; "Edited  3-Feb-2024 14:42 by rmk")
+                                                             (* ; "Edited  8-Jan-2024 10:57 by rmk")
+                                                             (* ; "Edited 28-Jun-2022 00:02 by rmk")
+                                                            (* ; "Edited 10-Aug-2020 12:35 by rmk:")
+
+    (* ;; "Returns the number of bytes needed to encode in UTF8 a number headed by BYTE. ")
+
+    (IF (ILESSP CODE 128)
+        THEN 1
+      ELSEIF (ILESSP CODE 2048)
+        THEN                                                 (* ; "x800")
+             2
+      ELSEIF (ILESSP CODE 65536)
+        THEN                                                 (* ; "x10000")
+             3
+      ELSEIF (ILESSP CODE 2097152)
+        THEN                                                 (* ; "x200000")
+             4
+      ELSE (ERROR "INVALID UTF-8 CODE"])
+
+(NUTF8-STRING-BYTES
+  [LAMBDA (STRING RAW)                                       (* ; "Edited  2-Sep-2025 10:40 by rmk")
+                                                             (* ; "Edited 24-Apr-2025 15:37 by rmk")
+                                                             (* ; "Edited  3-Feb-2024 21:32 by rmk")
+                                                            (* ; "Edited 10-Aug-2020 09:06 by rmk:")
+
+    (* ;; "Returns the number of bytes it would take to represent STRING in UTF8, assuming it is an MCCS string unless RAWFLG. ")
+
+    (for I C from 1 while (SETQ C (NTHCHARCODE STRING I)) sum (NUTF8-CODE-BYTES (CL:IF RAW
+                                                                                    C
+                                                                                    (MTOUCODE C))])
+
+(N-MCHARS
+  [LAMBDA (UTF8STRING)                                       (* ; "Edited  9-Sep-2025 08:35 by rmk")
+
+    (* ;; "Returns the number of MCCS characters coded in UTF8STRING")
+
+    (for I B from 1 while (SETQ B (NTHCHARCODE UTF8STRING I)) by (NUTF8-BYTE1-BYTES B) count T])
+)
+
+
+
+(* ; "For MAKEINIT, before hashing--no need for XCCS")
+
+(DEFINEQ
+
+(MTOUCODE
+  [LAMBDA (MCODE)                                            (* ; "Edited 22-Feb-2026 13:56 by rmk")
+    (UNICODE.TRANSLATE MCODE *MCCSTOUNICODE*])
+
+(UTOMCODE
+  [LAMBDA (UCODE)                                            (* ; "Edited 22-Feb-2026 13:57 by rmk")
+    (UNICODE.TRANSLATE (UNICODE.SMALLP UCODE)
+           *UNICODETOMCCS*])
+
+(MTOUCODE?
+  [LAMBDA (MCODE)                                            (* ; "Edited 22-Feb-2026 13:57 by rmk")
+
+    (* ;; "Returns the Unix range-code(s) corresponding to MCODE if there are true mapppings, otherwise NIL.  Alternative codes are returned in a list, the code itself is returned for a singleton.")
+
+    (UNICODE.TRANSLATE MCODE *MCCSTOUNICODE* T T])
+
+(UTOMCODE?
+  [LAMBDA (UCODE)                                            (* ; "Edited 22-Feb-2026 13:58 by rmk")
+
+    (* ;; "Returns the MCCS range-code(s) corresponding to UCODE if there are true mapppings, otherwise NIL.  ")
+
+    (* ;; 
+    " NOTE:  Alternative codes are returned in a list, the code itself is returned for a singleton.")
+
+    (* ;; "Canonicalize unicodes outside of the 16-bit plane")
+
+    (UNICODE.TRANSLATE (UNICODE.SMALLP UCODE)
+           *UNICODETOMCCS* T T])
+)
+(DEFINEQ
+
+(MTOUSTRING
+  [LAMBDA (MSTRING DESTRUCTIVE)                              (* ; "Edited  2-Sep-2025 12:19 by rmk")
+                                                             (* ; "Edited 29-Apr-2025 12:01 by rmk")
+
+    (* ;; "Converts MCCS codes in MSTRING to Unicodes.")
+
+    (for I MCODE (USTRING ← (CL:IF DESTRUCTIVE
+                                MSTRING
+                                (CONCAT MSTRING))) from 1 while (SETQ MCODE (NTHCHARCODE MSTRING I))
+       do (RPLCHARCODE USTRING I (MTOUCODE MCODE)) finally (RETURN USTRING])
+
+(UTOMSTRING
+  [LAMBDA (USTRING DESTRUCTIVE)                              (* ; "Edited  2-Sep-2025 12:18 by rmk")
+                                                             (* ; "Edited 29-Apr-2025 12:00 by rmk")
+
+    (* ;; "Converts Unicodes to MCCS codes in USTRING.")
+
+    (for I UCODE (MSTRING ← (CL:IF DESTRUCTIVE
+                                USTRING
+                                (CONCAT USTRING))) from 1 while (SETQ UCODE (NTHCHARCODE USTRING I))
+       do (RPLCHARCODE MSTRING I (UTOMCODE UCODE)) finally (RETURN MSTRING])
+
+(MTOUTF8STRING
+  [LAMBDA (MSTRING)                                          (* ; "Edited 31-Jan-2026 19:15 by rmk")
+                                                             (* ; "Edited  9-Sep-2025 07:51 by rmk")
+                                                             (* ; "Edited  4-Sep-2025 15:13 by rmk")
+                                                             (* ; "Edited  2-Sep-2025 11:12 by rmk")
+                                                             (* ; "Edited 24-Apr-2025 15:37 by rmk")
+                                                             (* ; "Edited  3-Feb-2024 14:55 by rmk")
+                                                            (* ; "Edited 10-Aug-2020 21:42 by rmk:")
+
+    (* ;; 
+    "Produces a string that contains the UTF8 bytes that represent the characters in MSTRING.  ")
+
+    (* ;; "The resulting string will not be directly interpretable inside Medley.")
+
+    (if (if (STRINGP MSTRING)
+            then [OR (ffetch (STRINGP FATSTRINGP) of MSTRING)
+                     (thereis C instring MSTRING suchthat (OR (IGEQ C 128)
+                                                              (NEQ C (MTOUCODE C]
+          elseif (LITATOM MSTRING)
+            then [OR (ffetch (LITATOM FATPNAMEP) of MSTRING)
+                     (thereis C inatom MSTRING suchthat (OR (IGEQ C 128)
+                                                            (NEQ C (MTOUCODE C]
+          else T)
+        then (LET [(USTR (ALLOCSTRING (NUTF8-STRING-BYTES MSTRING]
+                  (for I UCODE MCODE (SINDEX ← 0) from 1 while (SETQ MCODE (NTHCHARCODE MSTRING I))
+                     do (SETQ UCODE (MTOUCODE MCODE))
+                        (if (ILESSP UCODE 128)
+                            then (RPLCHARCODE USTR (ADD SINDEX 1)
+                                        UCODE)
+                          elseif (ILESSP UCODE 2048)
+                            then                             (* ; "x800")
+                                 (RPLCHARCODE USTR (ADD SINDEX 1)
+                                        (LOGOR (LLSH 3 6)
+                                               (LRSH UCODE 6)))
+                                 (RPLCHARCODE USTR (ADD SINDEX 1)
+                                        (LOGOR (LLSH 2 6)
+                                               (LOADBYTE UCODE 0 6)))
+                          elseif (ILESSP UCODE 65536)
+                            then                             (* ; "x10000")
+                                 (RPLCHARCODE USTR (ADD SINDEX 1)
+                                        (LOGOR (LLSH 7 5)
+                                               (LRSH UCODE 12)))
+                                 (RPLCHARCODE USTR (ADD SINDEX 1)
+                                        (LOGOR (LLSH 2 6)
+                                               (LOADBYTE UCODE 6 6)))
+                                 (RPLCHARCODE USTR (ADD SINDEX 1)
+                                        (LOGOR (LLSH 2 6)
+                                               (LOADBYTE UCODE 0 6)))
+                          elseif (ILESSP UCODE 2097152)
+                            then                             (* ; "x200000")
+                                 (RPLCHARCODE USTR (ADD SINDEX 1)
+                                        (LOGOR (LLSH 15 4)
+                                               (LRSH UCODE 18)))
+                                 (RPLCHARCODE USTR (ADD SINDEX 1)
+                                        (LOGOR (LLSH 2 6)
+                                               (LOADBYTE UCODE 12 6)))
+                                 (RPLCHARCODE USTR (ADD SINDEX 1)
+                                        (LOGOR (LLSH 2 6)
+                                               (LOADBYTE UCODE 6 6)))
+                                 (RPLCHARCODE USTR (ADD SINDEX 1)
+                                        (LOGOR (LLSH 2 6)
+                                               (LOADBYTE UCODE 0 6)))
+                          else (SHOULDNT)))
+                  USTR)
+      else MSTRING])
+
+(UTF8TOMSTRING
+  [LAMBDA (UTF8STRING)                                       (* ; "Edited 22-Oct-2025 22:00 by rmk")
+                                                             (* ; "Edited 16-Oct-2025 14:39 by rmk")
+                                                             (* ; "Edited  9-Sep-2025 08:59 by rmk")
+    (CL:UNLESS (OR (STRINGP UTF8STRING)
+                   (LITATOM UTF8STRING))
+        (SETQ UTF8STRING (MKSTRING UTF8STRING)))
+    (CL:WHEN (ffetch (STRINGP FATSTRINGP) of UTF8STRING)
+           (\ILLEGAL.ARG UTF8STRING))
+    (LET* ((NMCHARS (N-MCHARS UTF8STRING))
+           (MSTRING (ALLOCSTRING NMCHARS)))
+          [for M NBYTES BYTE1 (BASE ← (ffetch (STRINGP BASE) of UTF8STRING)) from 1 to NMCHARS
+             as OFFSET from (fetch (STRINGP OFFST) of MSTRING) by NBYTES
+             do (SETQ BYTE1 (\GETBASEBYTE BASE OFFSET))
+                (SETQ NBYTES (NUTF8-BYTE1-BYTES BYTE1))
+                (RPLCHARCODE MSTRING M (UTOMCODE (\UTF8.FETCHCODE NBYTES BASE OFFSET]
+          MSTRING])
+)
+
+
+
+(* ; "XCCS is not so interesting in the loadup")
+
+(DEFINEQ
+
+(XTOUCODE
+  [LAMBDA (XCODE)                                            (* ; "Edited  4-Sep-2025 15:09 by rmk")
+                                                             (* ; "Edited 24-May-2025 23:16 by rmk")
+                                                             (* ; "Edited 24-Apr-2025 15:27 by rmk")
+                                                            (* ; "Edited  9-Aug-2020 09:04 by rmk:")
+    (UNICODE.TRANSLATE (XTOMCODE XCODE)
+           *MCCSTOUNICODE*])
+
+(UTOXCODE
+  [LAMBDA (UNICODE)                                          (* ; "Edited 24-May-2025 23:17 by rmk")
+                                                             (* ; "Edited 24-Apr-2025 15:28 by rmk")
+                                                             (* ; "Edited 16-Jan-2025 23:46 by rmk")
+                                                            (* ; "Edited  9-Aug-2020 09:04 by rmk:")
+    (MTOXCODE (UNICODE.TRANSLATE UNICODE *UNICODETOMCCS*])
+
+(XTOUCODE?
+  [LAMBDA (XCCSCODE)                                         (* ; "Edited 24-May-2025 23:18 by rmk")
+                                                             (* ; "Edited 24-Apr-2025 15:27 by rmk")
+                                                             (* ; "Edited 20-Jan-2025 20:38 by rmk")
+                                                             (* ; "Edited 18-Jan-2025 11:44 by rmk")
+                                                             (* ; "Edited 15-Jan-2025 19:51 by rmk")
+                                                             (* ; "Edited 14-Jan-2025 13:14 by rmk")
+                                                            (* ; "Edited  9-Aug-2020 09:04 by rmk:")
+
+    (* ;; "Returns the Unix range-code(s) corresponding to XCCSCODE if there are true mapppings, otherwise NIL.  Alternative codes are returned in a list, the code itself is returned for a singleton.")
+
+    (UNICODE.TRANSLATE (XTOMCODE XCCSCODE)
+           *MCCSTOUNICODE* T T])
+
+(UTOXCODE?
+  [LAMBDA (UNICODE)                                          (* ; "Edited 24-May-2025 23:19 by rmk")
+                                                             (* ; "Edited 24-Apr-2025 15:28 by rmk")
+                                                             (* ; "Edited 19-Jan-2025 21:14 by rmk")
+                                                             (* ; "Edited 18-Jan-2025 11:46 by rmk")
+                                                             (* ; "Edited 15-Jan-2025 19:51 by rmk")
+                                                             (* ; "Edited 14-Jan-2025 13:14 by rmk")
+                                                            (* ; "Edited  9-Aug-2020 09:04 by rmk:")
+
+    (* ;; "Returns the XCCS range-code(s) corresponding to UNICODE if there are true mapppings, otherwise NIL.  ")
+
+    (* ;; 
+    " NOTE:  Alternative codes are returned in a list, the code itself is returned for a singleton.")
+
+    (MTOXCODE (UNICODE.TRANSLATE UNICODE *UNICODETOMCCS* T T])
+
+(XTOUSTRING
+  [LAMBDA (XSTRING DESTRUCTIVE)                              (* ; "Edited  2-Sep-2025 12:00 by rmk")
+                                                             (* ; "Edited 29-Apr-2025 12:01 by rmk")
+
+    (* ;; "Converts XCCS codes in XSTRING to Unicodes.")
+
+    (for I UCODE XCODE (USTRING ← (CL:IF DESTRUCTIVE
+                                      XSTRING
+                                      (CONCAT XSTRING))) from 1 while (SETQ XCODE (NTHCHARCODE 
+                                                                                         XSTRING I))
+       do (RPLCHARCODE USTRING I (XTOUCODE XCODE)) finally (RETURN USTRING])
+
+(UTOXSTRING
+  [LAMBDA (USTRING DESTRUCTIVE)                              (* ; "Edited  2-Sep-2025 11:54 by rmk")
+                                                             (* ; "Edited 29-Apr-2025 12:00 by rmk")
+
+    (* ;; "Converts Unicodes in USTRING to XCCS codes.")
+
+    (for I XCODE UCODE (XSTRING ← (CL:IF DESTRUCTIVE
+                                      USTRING
+                                      (CONCAT USTRING))) from 1 while (SETQ UCODE (NTHCHARCODE 
+                                                                                         USTRING I))
+       unless (EQ UCODE (SETQ XCODE (UTOXCODE UCODE))) do (RPLCHARCODE XSTRING I XCODE)
+       finally (RETURN XSTRING])
+
+(XTOUTF8STRING
+  [LAMBDA (XSTRING)                                          (* ; "Edited  4-Sep-2025 18:37 by rmk")
+                                                             (* ; "Edited  2-Sep-2025 11:37 by rmk")
+                                                             (* ; "Edited 29-Apr-2025 12:53 by rmk")
+                                                             (* ; "Edited 24-Apr-2025 15:42 by rmk")
+                                                             (* ; "Edited  3-Feb-2024 14:55 by rmk")
+                                                            (* ; "Edited 10-Aug-2020 21:42 by rmk:")
+
+    (* ;; "Produces a string that contains the UTF8 bytes that represent the characters in XSTRING.  Applies the ")
+
+    (* ;; "The resulting string will not be interpretable inside Medley.")
+
+    (for I C (MSTRING ← (CONCAT XSTRING)) from 1 while (SETQ C (NTHCHARCODE XSTRING I))
+       do (RPLCHARCODE MSTRING I (XTOMCODE C)) finally (RETURN (MTOUTF8STRING MSTRING])
+)
+(DEFINEQ
+
+(MERGE-UNICODE-TRANSLATION-TABLES
+  [LAMBDA (INVERSE MAPPING TABLE INVERSETABLE)               (* ; "Edited 21-Feb-2026 23:52 by rmk")
+                                                             (* ; "Edited 11-Oct-2025 10:24 by rmk")
+                                                             (* ; "Edited 24-Apr-2025 15:28 by rmk")
+                                                             (* ; "Edited  1-Feb-2025 21:42 by rmk")
+                                                             (* ; "Edited 26-Jan-2025 12:58 by rmk")
+                                                             (* ; "Edited 22-Jan-2025 08:20 by rmk")
+                                                             (* ; "Edited 19-Jan-2025 15:58 by rmk")
+                                                             (* ; "Edited 18-Jan-2025 11:49 by rmk")
+                                                             (* ; "Edited 27-Mar-2024 12:10 by rmk")
+                                                             (* ; "Edited  3-Feb-2024 12:46 by rmk")
+                                                             (* ; "Edited 31-Jan-2024 10:06 by rmk")
+
+    (* ;; "MAPPINGS is a list of pairs that map domain codes to range codes.  TABLE and INVERSETABLE default to *MCCSTOUNICODE* *UNICODETOMCCS* respectively.   ")
+
+    (CL:UNLESS TABLE
+        [SETQ TABLE (OR *MCCSTOUNICODE* (SETQ *MCCSTOUNICODE* (HASHARRAY (LENGTH MAPPING])
+    (CL:UNLESS INVERSETABLE
+        [SETQ INVERSETABLE (OR *UNICODETOMCCS* (SETQ *UNICODETOMCCS* (HASHARRAY (LENGTH MAPPING])
+    (for M D R OLDR in MAPPING first (CL:IF INVERSE (swap TABLE INVERSETABLE))
+       eachtime (SETQ D (CAR M))
+             (SETQ R (CADR M)) 
+
+             (* ;; "We don't do combiners, but we are allowing non-SMALLP's")
+ unless (OR (LISTP D)
+            (LISTP R)) do 
+                          (* ;; "The (CONS R OLDR) deals with alternatives:  (U X1) (U X2) => (U (X1 X2)), lowest code first.  Those are only possible in the U-to-X direction when the tables contain (X1 U) and (X2 U). There are no duplicates/alternative table entries in the X-to-U direction.")
+
+                          (SETQ OLDR (GETHASH D TABLE))
+                          (CL:UNLESS (MEMB R OLDR)
+                              (PUTHASH D (SORT (CONS R OLDR))
+                                     TABLE))
+                          (swap D R)
+                          (SETQ OLDR (GETHASH D INVERSETABLE))
+                          (CL:UNLESS (MEMB R OLDR)
+                              (PUTHASH D (SORT (CONS R OLDR))
+                                     INVERSETABLE)))
+    (LIST TABLE INVERSETABLE])
+
+(UNICODE.UNMAPPED
+  [LAMBDA (CODE TABLE DONTFAKE)                              (* ; "Edited 22-Feb-2026 16:27 by rmk")
+                                                             (* ; "Edited 24-Apr-2025 15:48 by rmk")
+                                                             (* ; "Edited 22-Jan-2025 08:19 by rmk")
+                                                             (* ; "Edited 19-Jan-2025 22:02 by rmk")
+                                                             (* ; "Edited 18-Jan-2025 12:02 by rmk")
+                                                             (* ; "Edited  2-Feb-2024 23:52 by rmk")
+                                                             (* ; "Edited 31-Jan-2024 10:07 by rmk")
+                                                            (* ; "Edited 11-Aug-2020 20:23 by rmk:")
+
+    (* ;; "This is the fall-out when UNICODE.TRANSLATE determines that CODE has no  mapping in TRANSLATION-TABLE.  We assume that the tables are complete, so unless DONTFAKE, we make up a mapping with the next unused private code in the code space.")
+
+    (* ;; "The number of possible faked mappings is determined by the number of private-use Unicodes, since the MCCS character space is pretty sparse.  The codes don't have to come from the same part of the code space, and the NEXTCODEs are saved in global variables.  The last available codes are constants.")
+
+    (* ;; "")
+
+    (CL:UNLESS DONTFAKE
+        (PROG ((INVERSE (EQ TABLE *UNICODETOMCCS*))
+               RANGE HASH)
+              (CL:WHEN (IEQP *NEXT-PRIVATE-MCCSCODE* LAST-PRIVATE-MCCSCODE)
+                                                             (* ; 
+                                                           "Same number of available codes both ways")
+                  (ERROR "EXHAUSTED RANGE FOR UNMAPPED CODES"))
+              (if INVERSE
+                  then (SETQ RANGE *NEXT-PRIVATE-MCCSCODE*)
+                       (add *NEXT-PRIVATE-MCCSCODE* 1)
+                else (SETQ RANGE *NEXT-PRIVATE-UNICODE*)
+                     (add *NEXT-PRIVATE-UNICODE* 1))
+              (MERGE-UNICODE-TRANSLATION-TABLES INVERSE (CONS (LIST CODE RANGE)))
+
+         (* ;; "CONS because of LIST convention so we can eventually distinguish combiners.")
+
+              (RETURN (CONS RANGE))))])
+)
+(DECLARE%: EVAL@COMPILE DONTCOPY 
+(DECLARE%: EVAL@COMPILE 
+
+(PUTPROPS UNICODE.TRANSLATE MACRO [OPENLAMBDA (CODE TRANSLATION-TABLE DONTFAKE RETURNALL)
+
+                                   (* ;; "If RETURNALL and there are alternatives in the RANG, the list is returned. Othewise just the first one if the fake flag allows ")
+
+                                    (LET [(RANGE (OR (GETHASH CODE TRANSLATION-TABLE)
+                                                     (UNICODE.UNMAPPED CODE TRANSLATION-TABLE 
+                                                            DONTFAKE]
+                                         (CL:WHEN RANGE
+                                             (if (AND RETURNALL (CDR RANGE))
+                                                 then RANGE
+                                               else (SETQ RANGE (CAR RANGE))
+                                                    (CL:IF DONTFAKE
+                                                        (TRUECODEP RANGE TRANSLATION-TABLE)
+                                                        RANGE)))])
+
+(PUTPROPS \UTF8.GETBASEBYTE MACRO ((BASE OFFSET ERROR?)      (* ; 
+                        "Fetches the OFFSET'th byte from BASE, checking for UTF-8 validity if ERROR?")
+                                   (IF ERROR?
+                                       THEN (LET ((BYTE (\GETBASEBYTE BASE OFFSET)))
+                                                 (CL:WHEN (ILESSP BYTE 128)
+                                                        (ERROR "INVALID UTF8 BYTE" BYTE))
+                                                 BYTE)
+                                     ELSE (\GETBASEBYTE BASE OFFSET))))
+
+(PUTPROPS UNICODE.SMALLP MACRO [OPENLAMBDA (UNICODE)         (* ; 
+                                                "Cananonicalizes a large UNICODE for EQ hash-testing")
+                                 (OR (SMALLP UNICODE)
+                                     (CAR (OR (MEMBER UNICODE *LARGEUNICODES*)
+                                              (PUSH *LARGEUNICODES* UNICODE])
+
+(PUTPROPS TRUECODEP MACRO (OPENLAMBDA (RANGE TABLE)
+
+                            (* ;; "Return NIL if RANGE is a fake range in TABLE, otherwise RANGE.")
+
+                            (CL:UNLESS (CL:IF (EQ TABLE *MCCSTOUNICODE*)
+                                           (AND (IGEQ RANGE FIRST-PRIVATE-UNICODE)
+                                                (ILEQ RANGE LAST-PRIVATE-UNICODE))
+                                           (AND (IGEQ RANGE FIRST-PRIVATE-MCCSCODE)
+                                                (ILEQ RANGE LAST-PRIVATE-MCCSCODE)))
+                                   RANGE)))
+)
+)
+
+(ADDTOVAR *DEFAULT-EXTERNALFORMATS* (UNIX :UTF-8))
+
+(RPAQ? *MCCSTOUNICODE* NIL)
+
+(RPAQ? *UNICODETOMCCS* NIL)
+
+(RPAQ? *LARGEUNICODES* NIL)
+(DECLARE%: DOEVAL@COMPILE DONTCOPY
+
+(GLOBALVARS *MCCSTOUNICODE* *UNICODETOMCCS* *LARGEUNICODES*)
+)
+
+
+
+(* ;; 
+"There are 6400 private Unicodes in 25 256-code charsets. For MCCS we map to a contiguous region of unused/reserved--private isn't big enough"
+)
+
+(DECLARE%: DOEVAL@COMPILE DONTCOPY
+
+(GLOBALVARS *NEXT-PRIVATE-UNICODE* *NEXT-PRIVATE-MCCSCODE*)
+)
+(DECLARE%: EVAL@COMPILE DONTCOPY 
+(DECLARE%: EVAL@COMPILE 
+
+(RPAQ FIRST-PRIVATE-UNICODE (HEXNUM? "E000"))
+
+(RPAQ LAST-PRIVATE-UNICODE (HEXNUM? "F8FF"))
+
+(RPAQ FIRST-PRIVATE-MCCSCODE (CHARCODE "200,0"))
+
+(RPAQ LAST-PRIVATE-MCCSCODE (CHARCODE "230,377"))
+
+
+(CONSTANTS (FIRST-PRIVATE-UNICODE (HEXNUM? "E000"))
+       (LAST-PRIVATE-UNICODE (HEXNUM? "F8FF"))
+       (FIRST-PRIVATE-MCCSCODE (CHARCODE "200,0"))
+       (LAST-PRIVATE-MCCSCODE (CHARCODE "230,377")))
+)
+)
+(DEFINEQ
+
+(UNICODE-INIT
+  [LAMBDA NIL                                                (* ; "Edited 23-Feb-2026 10:14 by rmk")
+    (SETQ *NEXT-PRIVATE-MCCSCODE* FIRST-PRIVATE-MCCSCODE)
+    (SETQ *NEXT-PRIVATE-UNICODE* FIRST-PRIVATE-UNICODE])
+)
+
+(UNICODE-INIT)
+(DECLARE%: EVAL@LOAD DONTCOPY 
+
+(FILESLOAD UNICODE-TABLES)
+)
+(MERGE-UNICODE-TRANSLATION-TABLES NIL (QUOTE ((0 0) (1 1) (2 2) (3 3) (4 4) (5 5) (6 6) (7 7) (8 8) (9
+ 9) (10 10) (11 11) (12 12) (13 13) (14 14) (15 15) (16 16) (17 17) (18 18) (19 19) (20 20) (21 21) (
+22 22) (23 23) (24 24) (25 25) (26 26) (27 27) (28 28) (29 29) (30 30) (31 31) (32 32) (33 33) (34 34)
+ (35 35) (36 36) (37 37) (38 38) (39 39) (40 40) (41 41) (42 42) (43 43) (44 44) (45 45) (46 46) (47 
+47) (48 48) (49 49) (50 50) (51 51) (52 52) (53 53) (54 54) (55 55) (56 56) (57 57) (58 58) (59 59) (
+60 60) (61 61) (62 62) (63 63) (64 64) (65 65) (66 66) (67 67) (68 68) (69 69) (70 70) (71 71) (72 72)
+ (73 73) (74 74) (75 75) (76 76) (77 77) (78 78) (79 79) (80 80) (81 81) (82 82) (83 83) (84 84) (85 
+85) (86 86) (87 87) (88 88) (89 89) (90 90) (91 91) (92 92) (93 93) (94 8593) (95 8592) (96 96) (97 97
+) (98 98) (99 99) (100 100) (101 101) (102 102) (103 103) (104 104) (105 105) (106 106) (107 107) (108
+ 108) (109 109) (110 110) (111 111) (112 112) (113 113) (114 114) (115 115) (116 116) (117 117) (118 
+118) (119 119) (120 120) (121 121) (122 122) (123 123) (124 124) (125 125) (126 126) (127 127) (161 
+161) (162 162) (163 163) (164 164) (165 165) (167 167) (169 8216) (170 8220) (171 171) (172 95) (173 
+94) (174 8594) (175 8595) (176 176) (177 177) (178 178) (179 179) (180 215) (181 181) (182 182) (183 
+183) (184 247) (185 8217) (186 8221) (187 187) (188 188) (189 189) (190 190) (191 191) (193 768) (194 
+769) (195 770) (196 771) (197 772) (198 774) (199 775) (200 776) (202 778) (203 807) (204 818) (205 
+779) (206 808) (207 780) (208 8213) (209 185) (210 174) (211 169) (212 8482) (213 9834) (220 8539) (
+221 8540) (222 8541) (223 8542) (224 8486) (225 198) (226 208) (227 170) (228 294) (229 567) (230 306)
+ (231 319) (232 321) (233 216) (234 338) (235 186) (236 222) (237 358) (238 330) (239 329) (240 312) (
+241 230) (242 273) (243 240) (244 295) (245 305) (246 307) (247 320) (248 322) (249 248) (250 339) (
+251 223) (252 254) (253 359) (254 331) (8481 12288) (8482 12289) (8483 12290) (8484 65292) (8485 65294
+) (8491 12441) (8492 12442) (8499 12541) (8500 12542) (8501 12445) (8502 12446) (8503 12291) (8504 
+20189) (8505 12293) (8506 12294) (8507 43472) (8508 12540) (8510 8208) (8512 8918) (8513 8919) (8514 
+8741) (8515 8873) (8516 8230) (8517 8229) (8518 8920) (8519 8921) (8520 10220) (8521 10221) (8522 
+10214) (8523 10215) (8524 12308) (8525 12309) (8526 8922) (8527 8923) (8528 8826) (8529 8827) (8530 
+8828) (8531 8829) (8532 8926) (8533 8927) (8534 12300) (8535 12301) (8536 12302) (8537 12303) (8538 
+12304) (8539 12305) (8540 10949) (8541 10950) (8542 8912) (8543 8913) (8544 10901) (8545 10902) (8546 
+8800) (8547 10885) (8548 10886) (8549 8804) (8550 8805) (8551 8734) (8552 8756) (8553 9794) (8554 9792
+) (8555 8244) (8556 8242) (8557 8243) (8558 8451) (8559 8874) (8560 8806) (8561 8807) (8562 10877) (
+8563 10878) (8564 8922) (8565 8923) (8566 8741) (8567 8861) (8568 8859) (8569 9734) (8570 9733) (8571 
+9675) (8572 9679) (8573 9678) (8574 9671) (8609 8830) (8610 8831) (8611 10935) (8612 10936) (8613 8995
+) (8614 8994) (8615 124) (8616 8785) (8617 8791) (8618 8790) (8619 8796) (8620 8916) (8621 8720) (8622
+ 10016) (8623 9671) (8624 8769) (8625 8936) (8626 8937) (8627 10937) (8628 10938) (8629 8740) (8630 
+8742) (8631 8876) (8632 8877) (8633 8878) (8634 8879) (8635 8938) (8636 8939) (8637 8940) (8638 8941) 
+(8639 8772) (8640 8777) (8641 10955) (8642 10956) (8643 8840) (8644 8841) (8645 8842) (8646 8843) (
+8647 10955) (8648 10956) (8649 8814) (8650 8815) (8651 8780) (8652 8775) (8656 8832) (8657 8833) (8658
+ 8928) (8659 8929) (8660 10933) (8661 10934) (8662 8928) (8665 8820) (8666 8821) (8672 8816) (8673 
+8817) (8674 10887) (8675 10888) (8676 8934) (8677 8935) (8678 8816) (8679 8817) (8686 8930) (8687 8931
+) (8688 8816) (8689 8817) (8690 8808) (8691 8809) (8692 8808) (8693 8809) (8737 9670) (8738 9633) (
+8739 9632) (8740 9651) (8741 9650) (8742 9661) (8743 9660) (8744 8251) (8745 12306) (8746 8216) (8747 
+8242) (8748 8243) (8750 12307) (8751 8862) (8752 8863) (8753 8864) (8754 8865) (8756 8813) (8760 12298
+) (8761 12299) (8764 8258) (8765 8485) (8766 8241) (8768 8647) (8769 8649) (8770 8648) (8771 8650) (
+8772 8666) (8773 8667) (8774 8606) (8775 8608) (8776 8639) (8777 8643) (8778 8638) (8779 8642) (8780 
+8610) (8781 8611) (8782 8619) (8783 8620) (8784 8624) (8785 8625) (8786 8621) (8787 8888) (8788 8788) 
+(8789 8789) (8790 8636) (8791 8637) (8792 8640) (8793 8641) (8794 8618) (8795 8617) (8796 10229) (8797
+ 10230) (8798 10232) (8799 10233) (8800 8657) (8801 8659) (8802 8786) (8803 8787) (8804 8781) (8805 
+10927) (8806 10928) (8807 10231) (8808 10234) (8809 10234) (8810 8748) (8811 8614) (8812 8904) (8813 
+11089) (8814 9838) (8815 8995) (8816 9653) (8817 8810) (8818 8811) (8819 8853) (8820 8854) (8821 8855)
+ (8822 8856) (8823 8764) (8824 8776) (8825 8733) (8827 9663) (8828 8487) (8829 8768) (8830 9711) (8865
+ (38 818)) (8866 8801) (8867 9049) (8868 9080) (8869 9079) (8870 8472) (8871 8709) (8872 8476) (8873 
+8465) (8874 8868) (8875 8846) (8876 8871) (8877 8852) (8878 8851) (8879 8846) (8880 8849) (8881 8850) 
+(8882 8743) (8883 8744) (8884 9652) (8885 9662) (8886 8852) (8887 8720) (8888 8738) (8889 8717) (8890 
+8951) (8891 9657) (8892 9667) (8893 8857) (8894 8765) (8896 94) (8897 (65 818)) (8898 (66 818)) (8899 
+(67 818)) (8900 (68 818)) (8901 (69 818)) (8902 (70 818)) (8903 (71 818)) (8904 (72 818)) (8905 (73 
+818)) (8906 (74 818)) (8907 (75 818)) (8908 (76 818)) (8909 (77 818)) (8910 (78 818)) (8911 (79 818)) 
+(8912 (80 818)) (8913 (81 818)) (8914 (82 818)) (8915 (83 818)) (8916 (84 818)) (8917 (85 818)) (8918 
+(86 818)) (8919 (87 818)) (8920 (88 818)) (8921 (89 818)) (8922 (90 818)) (8923 9122) (8924 9125) (
+8927 9647) (8935 8474) (8936 8461) (8938 8853) (8939 8855) (8940 8857) (8941 8356) (8942 8626) (8943 
+8627) (8944 8729) (8945 8988) (8946 8989) (8947 8990) (8948 8991) (8949 8858) (8994 168) (8995 180) (
+8996 175) (8997 728) (8998 729) (8999 39) (9000 730) (9001 733) (9002 731) (9003 711) (9004 184) (9008
+ 183) (9009 832) (9010 833) (9011 770) (9012 771) (9013 772) (9014 774) (9015 775) (9016 776) (9018 
+778) (9019 807) (9021 779) (9022 808) (9023 780) (9024 398) (9025 385) (9026 394) (9027 408) (9028 416
+) (9029 431) (9030 399) (9031 418) (9032 437) (9036 415) (9038 400) (9039 404) (9040 406) (9041 390) (
+9042 425) (9043 434) (9044 439) (9045 440) (9046 391) (9047 401) (9048 420) (9049 428) (9050 435) (
+9053 413) (9056 96) (9057 595) (9058 599) (9059 409) (9060 417) (9061 432) (9062 477) (9063 419) (9064
+ 438) (9065 447) (9066 410) (9068 629) (9077 441) (9078 392) (9079 402) (9080 421) (9081 429) (9082 
+436) (9086 8254) (9121 703) (9122 8216) (9124 450) (9125 451) (9126 448) (9127 449) (9129 384) (9130 
+403) (9131 405) (9132 9837) (9134 8471) (9135 8485) (9136 700) (9137 699) (9138 8218) (9139 865) (9144
+ 8407) (9145 824) (9146 770) (9147 771) (9148 9839) (9149 697) (9150 698) (9151 785) (9152 777) (9153 
+823) (9154 8417) (9155 773) (9157 768) (9158 769) (9160 8406) (9161 776) (9162 781) (9163 789) (9164 
+786) (9166 795) (9167 821) (9168 782) (9169 808) (9170 807) (9171 806) (9172 805) (9173 814) (9174 803
+) (9175 804) (9176 816) (9177 819) (9178 809) (9179 813) (9180 817) (9181 65056) (9182 65057) (9183 
+65059) (9184 8401) (9186 783) (9200 831) (9201 784) (9204 788) (9205 790) (9206 791) (9207 792) (9208 
+793) (9209 794) (9210 815) (9211 822) (9212 825) (9213 826) (9214 827) (9249 12353) (9250 12354) (9251
+ 12355) (9252 12356) (9253 12357) (9254 12358) (9255 12359) (9256 12360) (9257 12361) (9258 12362) (
+9259 12363) (9260 12364) (9261 12365) (9262 12366) (9263 12367) (9264 12368) (9265 12369) (9266 12370)
+ (9267 12371) (9268 12372) (9269 12373) (9270 12374) (9271 12375) (9272 12376) (9273 12377) (9274 
+12378) (9275 12379) (9276 12380) (9277 12381) (9278 12382) (9279 12383) (9280 12384) (9281 12385) (
+9282 12386) (9283 12387) (9284 12388) (9285 12389) (9286 12390) (9287 12391) (9288 12392) (9289 12393)
+ (9290 12394) (9291 12395) (9292 12396) (9293 12397) (9294 12398) (9295 12399) (9296 12400) (9297 
+12401) (9298 12402) (9299 12403) (9300 12404) (9301 12405) (9302 12406) (9303 12407) (9304 12408) (
+9305 12409) (9306 12410) (9307 12411) (9308 12412) (9309 12413) (9310 12414) (9311 12415) (9312 12416)
+ (9313 12417) (9314 12418) (9315 12419) (9316 12420) (9317 12421) (9318 12422) (9319 12423) (9320 
+12424) (9321 12425) (9322 12426) (9323 12427) (9324 12428) (9325 12429) (9326 12430) (9327 12431) (
+9328 12432) (9329 12433) (9330 12434) (9331 12435) (9377 12549) (9378 12550) (9379 12551) (9380 12552)
+ (9381 12553) (9382 12554) (9383 12555) (9384 12556) (9385 12557) (9386 12558) (9387 12559) (9388 
+12560) (9389 12561) (9390 12562) (9391 12563) (9392 12564) (9393 12565) (9394 12566) (9395 12567) (
+9396 12568) (9397 12569) (9398 12570) (9399 12571) (9400 12572) (9401 12573) (9402 12574) (9403 12575)
+ (9404 12576) (9405 12577) (9406 12578) (9407 12579) (9408 12580) (9409 12581) (9410 12582) (9411 
+12583) (9412 12584) (9413 12585) (9414 714) (9415 711) (9416 715) (9417 729) (9418 713) (9419 12587) (
+9420 12586) (9421 12588) (9505 12449) (9506 12450) (9507 12451) (9508 12452) (9509 12453) (9510 12454)
+ (9511 12455) (9512 12456) (9513 12457) (9514 12458) (9515 12459) (9516 12460) (9517 12461) (9518 
+12462) (9519 12463) (9520 12464) (9521 12465) (9522 12466) (9523 12467) (9524 12468) (9525 12469) (
+9526 12470) (9527 12471) (9528 12472) (9529 12473) (9530 12474) (9531 12475) (9532 12476) (9533 12477)
+ (9534 12478) (9535 12479) (9536 12480) (9537 12481) (9538 12482) (9539 12483) (9540 12484) (9541 
+12485) (9542 12486) (9543 12487) (9544 12488) (9545 12489) (9546 12490) (9547 12491) (9548 12492) (
+9549 12493) (9550 12494) (9551 12495) (9552 12496) (9553 12497) (9554 12498) (9555 12499) (9556 12500)
+ (9557 12501) (9558 12502) (9559 12503) (9560 12504) (9561 12505) (9562 12506) (9563 12507) (9564 
+12508) (9565 12509) (9566 12510) (9567 12511) (9568 12512) (9569 12513) (9570 12514) (9571 12515) (
+9572 12516) (9573 12517) (9574 12518) (9575 12519) (9576 12520) (9577 12521) (9578 12522) (9579 12523)
+ (9580 12524) (9581 12525) (9582 12526) (9583 12527) (9584 12528) (9585 12529) (9586 12530) (9587 
+12531) (9588 12532) (9589 12533) (9590 12534) (9591 12535) (9592 12536) (9593 12537) (9594 12538) (
+9595 12539) (9762 894) (9763 835) (9764 900) (9765 787) (9766 788) (9767 837) (9769 8158) (9770 8157) 
+(9771 901) (9772 8159) (9773 8128) (9774 8189) (9775 8175) (9776 1010) (9777 900) (9778 890) (9779 
+8125) (9780 884) (9781 885) (9782 8174) (9783 8173) (9785 8142) (9786 8141) (9787 903) (9788 8143) (
+9789 8129) (9790 8127) (9791 8190) (9792 990) (9793 913) (9794 914) (9796 915) (9797 916) (9798 917) (
+9799 986) (9800 988) (9801 918) (9802 919) (9803 920) (9804 921) (9805 922) (9806 923) (9807 924) (
+9808 925) (9809 926) (9810 927) (9811 928) (9812 984) (9813 929) (9814 931) (9816 932) (9817 933) (
+9818 934) (9819 935) (9820 936) (9821 937) (9822 992) (9824 991) (9825 945) (9826 946) (9827 976) (
+9828 947) (9829 948) (9830 949) (9831 987) (9832 989) (9833 950) (9834 951) (9835 952) (9836 953) (
+9837 954) (9838 955) (9839 956) (9840 957) (9841 958) (9842 959) (9843 960) (9844 985) (9845 961) (
+9846 963) (9847 962) (9848 964) (9849 965) (9850 966) (9851 967) (9852 968) (9853 969) (9854 993) (
+9904 1001) (9905 1003) (9906 1005) (9907 1007) (9920 836) (9921 8158) (9922 8142) (9923 8159) (9924 
+8143) (9925 769) (9926 768) (9927 834) (9928 8158) (9929 8157) (9930 8142) (9931 8141) (9932 776) (
+9933 901) (9934 8173) (9935 8129) (9936 902) (9937 904) (9938 905) (9939 906) (9940 908) (9941 910) (
+9942 911) (9943 938) (9944 939) (9945 (938 769)) (9946 (939 769)) (9948 994) (9949 996) (9950 998) (
+9952 979) (9953 980) (9968 940) (9969 941) (9970 942) (9971 943) (9972 972) (9973 973) (9974 974) (
+9975 970) (9976 971) (9977 912) (9978 944) (9979 1011) (9980 995) (9981 997) (9982 999) (10017 1040) (
+10018 1041) (10019 1042) (10020 1043) (10021 1044) (10022 1045) (10023 1025) (10024 1046) (10025 1047)
+ (10026 1048) (10027 1049) (10028 1050) (10029 1051) (10030 1052) (10031 1053) (10032 1054) (10033 
+1055) (10034 1056) (10035 1057) (10036 1058) (10037 1059) (10038 1060) (10039 1061) (10040 1062) (
+10041 1063) (10042 1064) (10043 1065) (10044 1066) (10045 1067) (10046 1068) (10047 1069) (10048 1070)
+ (10049 1071) (10050 1168) (10051 1026) (10052 1027) (10053 1028) (10054 1029) (10055 1030) (10056 
+1031) (10057 1032) (10058 1033) (10059 1034) (10060 1035) (10061 1036) (10062 1038) (10065 1072) (
+10066 1073) (10067 1074) (10068 1075) (10069 1076) (10070 1077) (10071 1105) (10072 1078) (10073 1079)
+ (10074 1080) (10075 1081) (10076 1082) (10077 1083) (10078 1084) (10079 1085) (10080 1086) (10081 
+1087) (10082 1088) (10083 1089) (10084 1090) (10085 1091) (10086 1092) (10087 1093) (10088 1094) (
+10089 1095) (10090 1096) (10091 1097) (10092 1098) (10093 1099) (10094 1100) (10095 1101) (10096 1102)
+ (10097 1103) (10098 1169) (10099 1106) (10100 1107) (10101 1108) (10102 1109) (10103 1110) (10104 
+1111) (10105 1112) (10106 1113) (10107 1114) (10108 1115) (10109 1116) (10110 1118) (10145 1039) (
+10146 1122) (10147 1138) (10148 1140) (10149 1130) (10150 1306) (10151 1308) (10152 1198) (10153 (1040
+ 769)) (10154 1234) (10155 1232) (10156 1236) (10157 1170) (10158 1172) (10159 (1045 769)) (10160 1238
+) (10161 1244) (10162 1174) (10163 1246) (10164 1176) (10165 (1048 769)) (10166 1252) (10167 1250) (
+10168 1178) (10170 1180) (10171 1184) (10172 1182) (10173 1186) (10174 1188) (10175 (1054 769)) (10176
+ 1254) (10178 1190) (10179 1194) (10181 1196) (10182 1204) (10183 (1059 769)) (10184 1264) (10185 1266
+) (10187 1262) (10188 1202) (10189 1276) (10190 1268) (10191 1216) (10193 1119) (10194 1123) (10195 
+1139) (10196 1141) (10197 1131) (10198 1307) (10199 1309) (10200 1199) (10201 (1072 769)) (10202 1235)
+ (10203 1233) (10204 1237) (10205 1171) (10206 1173) (10207 (1077 769)) (10208 1239) (10209 1245) (
+10210 1175) (10211 1247) (10212 1177) (10213 (1080 769)) (10214 1253) (10215 1251) (10216 1179) (10218
+ 1181) (10219 1185) (10220 1183) (10221 1187) (10222 1189) (10223 (1086 769)) (10224 1255) (10226 1191
+) (10227 1195) (10229 1197) (10230 1205) (10231 (1091 769)) (10232 1265) (10233 1267) (10235 1263) (
+10236 1203) (10237 1277) (10238 1269) (10273 9472) (10274 9474) (10275 9484) (10276 9488) (10277 9496)
+ (10278 9492) (10279 9500) (10280 9516) (10281 9508) (10282 9524) (10283 9532) (10284 9473) (10285 
+9475) (10286 9487) (10287 9491) (10288 9499) (10289 9495) (10290 9507) (10291 9523) (10292 9515) (
+10293 9531) (10294 9547) (10295 9504) (10296 9519) (10297 9512) (10298 9527) (10299 9535) (10300 9501)
+ (10301 9520) (10302 9509) (10303 9528) (10304 9538) (10305 9550) (10306 9551) (10307 9545) (10308 
+9543) (10309 9544) (10310 9546) (10311 9548) (10313 9486) (10314 9490) (10315 9498) (10316 9494) (
+10317 9485) (10318 9489) (10319 9497) (10320 9569) (10321 9570) (10322 9558) (10323 9557) (10324 9571)
+ (10325 9553) (10326 9559) (10327 9565) (10328 9564) (10329 9563) (10330 9566) (10331 9567) (10332 
+9562) (10333 9556) (10334 9577) (10335 9574) (10336 9568) (10337 9552) (10338 9580) (10339 9575) (
+10340 9576) (10341 9572) (10342 9573) (10343 9561) (10344 9560) (10345 9554) (10346 9555) (10347 9579)
+ (10348 9578) (10363 9493) (10444 9502) (10445 9503) (10446 9505) (10447 9506) (10448 9476) (10449 
+9477) (10450 9478) (10451 9479) (10452 9480) (10453 9481) (10454 9482) (10455 9483) (10456 9549) (
+10457 9581) (10458 9582) (10459 9583) (10460 9584) (10461 9585) (10462 9586) (10463 9608) (10530 5792)
+ (10532 5794) (10535 5798) (10539 5800) (10546 5809) (10549 5810) (10551 5812) (10554 5815) (10555 
+5813) (10557 5817) (10559 5818) (10560 5819) (10564 5820) (10567 5822) (10570 5823) (10571 5825) (
+10572 5827) (10582 5831) (10585 5832) (10607 5839) (10608 5840) (10610 5842) (10615 5846) (10616 5847)
+ (10618 5848) (10620 5849) (10622 5850) (10623 5852) (10658 5853) (10659 5855) (10661 5805) (10662 
+5806) (10663 5854) (10664 5841) (10665 5829) (10666 5807) (10667 5801) (10669 5873) (10671 5802) (
+10673 5803) (10674 5796) (10677 5795) (10678 5856) (10680 5857) (10721 66352) (10722 66353) (10723 
+66354) (10724 66355) (10725 66356) (10726 66357) (10727 66358) (10728 66359) (10729 66360) (10730 (
+66361 776)) (10731 66361) (10732 66362) (10733 66363) (10734 66364) (10735 66365) (10736 66366) (10737
+ 66367) (10738 66368) (10739 66369) (10740 66370) (10741 66371) (10742 66372) (10743 66373) (10744 
+66374) (10745 66375) (10746 66376) (10747 66377) (10748 66378) (10785 1206) (10786 1227) (10787 1208) 
+(10788 (1069 769)) (10790 (1070 769)) (10792 (1071 769)) (10794 (1066 769)) (10795 1272) (10796 (1067 
+769)) (10797 (769 1028)) (10798 1240) (10799 1212) (10800 1214) (10801 1192) (10802 (1198 769)) (10803
+ 1200) (10807 (1025 769)) (10808 1242) (10809 1248) (10810 1219) (10811 1258) (10816 1170) (10817 1256
+) (10818 1217) (10819 1210) (10822 1223) (10827 1142) (10833 1207) (10834 1228) (10835 1209) (10836 (
+1101 769)) (10838 (1102 769)) (10840 (1103 769)) (10842 (1098 769)) (10843 1273) (10844 (1099 769)) (
+10845 (1108 769)) (10846 1241) (10847 1213) (10848 1215) (10849 1193) (10850 (1199 769)) (10851 1201) 
+(10855 (1105 769)) (10856 1243) (10857 1249) (10858 1220) (10859 1259) (10864 1171) (10865 1257) (
+10866 1218) (10867 1211) (10870 1224) (10875 1143) (10914 1146) (10920 1120) (10924 1124) (10927 1126)
+ (10929 1128) (10930 1132) (10931 1134) (10932 1136) (10934 1152) (10943 1150) (10944 1148) (10951 
+1144) (10952 1156) (10957 1154) (10962 1147) (10967 1145) (10968 1121) (10972 1125) (10975 1127) (
+10977 1129) (10978 1133) (10979 1135) (10980 1137) (10982 1153) (10991 1151) (10992 1149) (10999 1155)
+ (11809 9472) (11810 9135) (11811 9473) (11827 65079) (11828 65080) (12068 65075) (12070 65073) (12075
+ 8942) (12076 65072) (12077 65077) (12078 65078) (12079 65081) (12080 65082) (12081 65079) (12082 
+65080) (12089 65089) (12090 65090) (12091 65091) (12092 65092) (12093 65083) (12094 65084) (12096 
+12353) (12097 12357) (12098 12357) (12099 12359) (12100 12361) (12101 12387) (12102 12419) (12103 
+12421) (12104 12423) (12105 12430) (12106 12449) (12107 12451) (12108 12453) (12109 12455) (12110 
+12457) (12111 12483) (12112 12515) (12113 12517) (12114 12519) (12115 12526) (12116 12533) (12117 
+12534) (12130 12307) (12193 65087) (12194 65088) (12216 65076) (12224 12832) (12225 12833) (12226 
+12834) (12227 12835) (12228 12836) (12229 12837) (12230 12838) (12231 12839) (12232 12840) (12233 
+12841) (12257 12337) (12258 12338) (12264 65085) (12265 65086) (12273 12339) (12274 12340) (12275 
+12341) (12321 20124) (12322 21782) (12323 23043) (12324 38463) (12325 21696) (12326 24859) (12327 
+25384) (12328 23030) (12329 36898) (12330 33909) (12331 33564) (12332 31312) (12333 24746) (12334 
+25569) (12335 28197) (12336 26093) (12337 33894) (12338 33446) (12339 39925) (12340 26771) (12341 
+22311) (12342 26017) (12343 25201) (12344 23451) (12345 22992) (12346 34427) (12347 39156) (12348 
+32098) (12349 32190) (12350 39822) (12351 25110) (12352 31903) (12353 34999) (12354 23433) (12355 
+24245) (12356 25353) (12357 26263) (12358 26696) (12359 38343) (12360 38797) (12361 26447) (12362 
+20197) (12363 20234) (12364 20301) (12365 20381) (12366 20553) (12367 22258) (12368 22839) (12369 
+22996) (12370 23041) (12371 23561) (12372 24799) (12373 24847) (12374 24944) (12375 26131) (12376 
+26885) (12377 28858) (12378 30031) (12379 30064) (12380 31227) (12381 32173) (12382 32239) (12383 
+32963) (12384 33806) (12385 34915) (12386 35586) (12387 36949) (12388 36986) (12389 21307) (12390 
+20117) (12391 20133) (12392 22495) (12393 32946) (12394 37057) (12395 30959) (12396 19968) (12397 
+22769) (12398 28322) (12399 36920) (12400 31282) (12401 33576) (12402 33419) (12403 39983) (12404 
+20801) (12405 21360) (12406 21693) (12407 21729) (12408 22240) (12409 23035) (12410 24341) (12411 
+39154) (12412 28139) (12413 32996) (12414 34093) (12577 38498) (12578 38512) (12579 38560) (12580 
+38907) (12581 21515) (12582 21491) (12583 23431) (12584 28879) (12585 32701) (12586 36802) (12587 
+38632) (12588 21359) (12589 40284) (12590 31418) (12591 19985) (12592 30867) (12593 33276) (12594 
+28198) (12595 22040) (12596 21764) (12597 27421) (12598 34074) (12599 39995) (12600 23013) (12601 
+21417) (12602 28006) (12603 29916) (12604 38287) (12605 22082) (12606 20113) (12607 36939) (12608 
+38642) (12609 33615) (12610 39180) (12611 21473) (12612 21942) (12613 23344) (12614 24433) (12615 
+26144) (12616 26355) (12617 26628) (12618 27704) (12619 27891) (12620 27945) (12621 29787) (12622 
+30408) (12623 31310) (12624 38964) (12625 33521) (12626 34907) (12627 35424) (12628 37613) (12629 
+28082) (12630 30123) (12631 30410) (12632 39365) (12633 24742) (12634 35585) (12635 36234) (12636 
+38322) (12637 27022) (12638 21421) (12639 20870) (12640 22290) (12641 22576) (12642 22852) (12643 
+23476) (12644 24310) (12645 24616) (12646 25513) (12647 25588) (12648 27839) (12649 28436) (12650 
+28814) (12651 28948) (12652 29017) (12653 29141) (12654 29503) (12655 32257) (12656 33398) (12657 
+33489) (12658 34199) (12659 36960) (12660 37467) (12661 40219) (12662 22633) (12663 26044) (12664 
+27738) (12665 29989) (12666 20985) (12667 22830) (12668 22885) (12669 24448) (12670 24540) (12833 
+25276) (12834 26106) (12835 27178) (12836 27431) (12837 27572) (12838 29579) (12839 32705) (12840 
+35158) (12841 40236) (12842 40206) (12843 40644) (12844 23713) (12845 27798) (12846 33659) (12847 
+20740) (12848 23627) (12849 25014) (12850 33222) (12851 26742) (12852 29281) (12853 20057) (12854 
+20474) (12855 21368) (12856 24681) (12857 28201) (12858 31311) (12859 38899) (12860 19979) (12861 
+21270) (12862 20206) (12863 20309) (12864 20285) (12865 20385) (12866 20339) (12867 21152) (12868 
+21487) (12869 22025) (12870 22799) (12871 23233) (12872 23478) (12873 23521) (12874 31185) (12875 
+26247) (12876 26524) (12877 26550) (12878 27468) (12879 27827) (12880 28779) (12881 29634) (12882 
+31117) (12883 31166) (12884 31292) (12885 31623) (12886 33457) (12887 33499) (12888 33540) (12889 
+33655) (12890 33775) (12891 33747) (12892 34662) (12893 35506) (12894 22057) (12895 36008) (12896 
+36838) (12897 36942) (12898 38686) (12899 34442) (12900 20420) (12901 23784) (12902 25105) (12903 
+29273) (12904 30011) (12905 33253) (12906 33469) (12907 34558) (12908 36032) (12909 38597) (12910 
+39187) (12911 39381) (12912 20171) (12913 20250) (12914 35299) (12915 22238) (12916 22602) (12917 
+22730) (12918 24315) (12919 24555) (12920 24618) (12921 24724) (12922 24674) (12923 25040) (12924 
+25106) (12925 25296) (12926 25913) (13089 39745) (13090 26214) (13091 26800) (13092 28023) (13093 
+28784) (13094 30028) (13095 30342) (13096 32117) (13097 33445) (13098 34809) (13099 38283) (13100 
+38542) (13101 35997) (13102 20977) (13103 21182) (13104 22806) (13105 21683) (13106 23475) (13107 
+23830) (13108 24936) (13109 27010) (13110 28079) (13111 30861) (13112 33995) (13113 34903) (13114 
+35442) (13115 37799) (13116 39608) (13117 28012) (13118 39336) (13119 34521) (13120 22435) (13121 
+26623) (13122 34510) (13123 37390) (13124 21123) (13125 22151) (13126 21508) (13127 24275) (13128 
+25313) (13129 25785) (13130 26684) (13131 26680) (13132 27579) (13133 29554) (13134 30906) (13135 
+31339) (13136 35226) (13137 35282) (13138 36203) (13139 36611) (13140 37101) (13141 38307) (13142 
+38548) (13143 38761) (13144 23398) (13145 23731) (13146 27005) (13147 38989) (13148 38990) (13149 
+25499) (13150 31520) (13151 27179) (13152 27263) (13153 26806) (13154 39949) (13155 28511) (13156 
+21106) (13157 21917) (13158 24688) (13159 25324) (13160 27963) (13161 28167) (13162 28369) (13163 
+33883) (13164 35088) (13165 36676) (13166 19988) (13167 39993) (13168 21494) (13169 26907) (13170 
+27194) (13171 38788) (13172 26666) (13173 20828) (13174 31427) (13175 33970) (13176 37340) (13177 
+37772) (13178 22107) (13179 40232) (13180 26658) (13181 33541) (13182 33841) (13345 31909) (13346 
+21000) (13347 33477) (13348 29926) (13349 20094) (13350 20355) (13351 20896) (13352 23506) (13353 
+21002) (13354 21208) (13355 21223) (13356 24059) (13357 21914) (13358 22570) (13359 23014) (13360 
+23436) (13361 23448) (13362 23515) (13363 24178) (13364 24185) (13365 24739) (13366 24863) (13367 
+24931) (13368 25022) (13369 25563) (13370 25954) (13371 26577) (13372 26707) (13373 26874) (13374 
+27454) (13375 27475) (13376 27735) (13377 28450) (13378 28567) (13379 28485) (13380 29872) (13381 
+29976) (13382 30435) (13383 30475) (13384 31487) (13385 31649) (13386 31777) (13387 32233) (13388 
+32566) (13389 32752) (13390 32925) (13391 33382) (13392 33694) (13393 35251) (13394 35532) (13395 
+36011) (13396 36996) (13397 37969) (13398 38291) (13399 38289) (13400 38306) (13401 38501) (13402 
+38867) (13403 39208) (13404 33304) (13405 20024) (13406 21547) (13407 23736) (13408 24012) (13409 
+29609) (13410 30284) (13411 30524) (13412 23721) (13413 32747) (13414 36107) (13415 38593) (13416 
+38929) (13417 38996) (13418 39000) (13419 20225) (13420 20238) (13421 21361) (13422 21916) (13423 
+22120) (13424 22522) (13425 22855) (13426 23305) (13427 23492) (13428 23696) (13429 24076) (13430 
+24190) (13431 24524) (13432 25582) (13433 26426) (13434 26071) (13435 26082) (13436 26399) (13437 
+26827) (13438 26820) (13601 27231) (13602 24112) (13603 27589) (13604 27671) (13605 27773) (13606 
+30079) (13607 31048) (13608 23395) (13609 31232) (13610 32000) (13611 24509) (13612 35215) (13613 
+35352) (13614 36020) (13615 36215) (13616 36556) (13617 36637) (13618 39138) (13619 39438) (13620 
+39740) (13621 20096) (13622 20605) (13623 20736) (13624 22931) (13625 23452) (13626 25135) (13627 
+25216) (13628 25836) (13629 27450) (13630 29344) (13631 30097) (13632 31047) (13633 32681) (13634 
+34811) (13635 35516) (13636 35696) (13637 25516) (13638 33738) (13639 38816) (13640 21513) (13641 
+21507) (13642 21931) (13643 26708) (13644 27224) (13645 35440) (13646 30759) (13647 26485) (13648 
+40653) (13649 21364) (13650 23458) (13651 33050) (13652 34384) (13653 36870) (13654 19992) (13655 
+20037) (13656 20167) (13657 20241) (13658 21450) (13659 21560) (13660 23470) (13661 24339) (13662 
+24613) (13663 25937) (13664 26429) (13665 27714) (13666 27762) (13667 27875) (13668 28792) (13669 
+29699) (13670 31350) (13671 31406) (13672 31496) (13673 32026) (13674 31998) (13675 32102) (13676 
+26087) (13677 29275) (13678 21435) (13679 23621) (13680 24040) (13681 25298) (13682 25312) (13683 
+25369) (13684 28192) (13685 34394) (13686 35377) (13687 36317) (13688 37624) (13689 28417) (13690 
+31142) (13691 39770) (13692 20136) (13693 20139) (13694 20140) (13857 20379) (13858 20384) (13859 
+20689) (13860 20807) (13861 31478) (13862 20849) (13863 20982) (13864 21332) (13865 21281) (13866 
+21375) (13867 21483) (13868 21932) (13869 22659) (13870 23777) (13871 24375) (13872 24394) (13873 
+24623) (13874 24656) (13875 24685) (13876 25375) (13877 25945) (13878 27211) (13879 27841) (13880 
+29378) (13881 29421) (13882 30703) (13883 33016) (13884 33029) (13885 33288) (13886 34126) (13887 
+37111) (13888 37857) (13889 38911) (13890 39255) (13891 39514) (13892 20208) (13893 20957) (13894 
+23597) (13895 26241) (13896 26989) (13897 23616) (13898 26354) (13899 26997) (13900 29577) (13901 
+26704) (13902 31873) (13903 20677) (13904 21220) (13905 22343) (13906 24062) (13907 37670) (13908 
+26020) (13909 27427) (13910 27453) (13911 29748) (13912 31105) (13913 31165) (13914 31563) (13915 
+32202) (13916 33465) (13917 33740) (13918 34943) (13919 35167) (13920 35641) (13921 36817) (13922 
+37329) (13923 21535) (13924 37504) (13925 20061) (13926 20534) (13927 21477) (13928 21306) (13929 
+29399) (13930 29590) (13931 30697) (13932 33510) (13933 36527) (13934 39366) (13935 39368) (13936 
+39378) (13937 20855) (13938 24858) (13939 34398) (13940 21936) (13941 31354) (13942 20598) (13943 
+23507) (13944 36935) (13945 38533) (13946 20018) (13947 27355) (13948 37351) (13949 23633) (13950 
+23624) (14113 25496) (14114 31391) (14115 27795) (14116 38772) (14117 36705) (14118 31402) (14119 
+29066) (14120 38536) (14121 31874) (14122 26647) (14123 32368) (14124 26705) (14125 37740) (14126 
+21234) (14127 21531) (14128 34219) (14129 35347) (14130 32676) (14131 36557) (14132 37089) (14133 
+21350) (14134 34952) (14135 31041) (14136 20418) (14137 20670) (14138 21009) (14139 20804) (14140 
+21843) (14141 22317) (14142 29674) (14143 22411) (14144 22865) (14145 24418) (14146 24452) (14147 
+24693) (14148 24950) (14149 24935) (14150 25001) (14151 25522) (14152 25658) (14153 25964) (14154 
+26223) (14155 26690) (14156 28179) (14157 30054) (14158 31293) (14159 31995) (14160 32076) (14161 
+32153) (14162 32331) (14163 32619) (14164 33550) (14165 33610) (14166 34509) (14167 35336) (14168 
+35427) (14169 35686) (14170 36605) (14171 38938) (14172 40335) (14173 33464) (14174 36814) (14175 
+39912) (14176 21127) (14177 25119) (14178 25731) (14179 28608) (14180 38553) (14181 26689) (14182 
+20625) (14183 27424) (14184 27770) (14185 28500) (14186 31348) (14187 32080) (14188 34880) (14189 
+35363) (14190 26376) (14191 20214) (14192 20537) (14193 20518) (14194 20581) (14195 20860) (14196 
+21048) (14197 21091) (14198 21927) (14199 22287) (14200 22533) (14201 23244) (14202 24314) (14203 
+25010) (14204 25080) (14205 25331) (14206 25458) (14369 26908) (14370 27177) (14371 29309) (14372 
+29356) (14373 29486) (14374 30740) (14375 30831) (14376 32121) (14377 30476) (14378 32937) (14379 
+35211) (14380 35609) (14381 36066) (14382 36562) (14383 36963) (14384 37749) (14385 38522) (14386 
+38997) (14387 39443) (14388 40568) (14389 20803) (14390 21407) (14391 21427) (14392 24187) (14393 
+24358) (14394 28187) (14395 28304) (14396 29572) (14397 29694) (14398 32067) (14399 33335) (14400 
+35328) (14401 35578) (14402 38480) (14403 20046) (14404 20491) (14405 21476) (14406 21628) (14407 
+22266) (14408 22993) (14409 23396) (14410 24049) (14411 24235) (14412 24359) (14413 25144) (14414 
+25925) (14415 26543) (14416 28246) (14417 29392) (14418 31946) (14419 34996) (14420 32929) (14421 
+32993) (14422 33776) (14423 34382) (14424 35463) (14425 36328) (14426 37431) (14427 38599) (14428 
+39015) (14429 40723) (14430 20116) (14431 20114) (14432 20237) (14433 21320) (14434 21577) (14435 
+21566) (14436 23087) (14437 24460) (14438 24481) (14439 24735) (14440 26791) (14441 27278) (14442 
+29786) (14443 30849) (14444 35486) (14445 35492) (14446 35703) (14447 37264) (14448 20062) (14449 
+39881) (14450 20132) (14451 20348) (14452 20399) (14453 20505) (14454 20502) (14455 20809) (14456 
+20844) (14457 21151) (14458 21177) (14459 21246) (14460 21402) (14461 21475) (14462 21521) (14625 
+21518) (14626 21897) (14627 22353) (14628 22434) (14629 22909) (14630 23380) (14631 23389) (14632 
+23439) (14633 24037) (14634 24039) (14635 24055) (14636 24184) (14637 24195) (14638 24218) (14639 
+24247) (14640 24344) (14641 24658) (14642 24908) (14643 25239) (14644 25304) (14645 25511) (14646 
+25915) (14647 26114) (14648 26179) (14649 26356) (14650 26477) (14651 26657) (14652 26775) (14653 
+27083) (14654 27743) (14655 27946) (14656 28009) (14657 28207) (14658 28317) (14659 30002) (14660 
+30343) (14661 30828) (14662 31295) (14663 31968) (14664 32005) (14665 32024) (14666 32094) (14667 
+32177) (14668 32789) (14669 32771) (14670 32943) (14671 32945) (14672 33108) (14673 33167) (14674 
+33322) (14675 33618) (14676 34892) (14677 34913) (14678 35611) (14679 36002) (14680 36092) (14681 
+37066) (14682 37237) (14683 37489) (14684 30783) (14685 37628) (14686 38308) (14687 38477) (14688 
+38917) (14689 39321) (14690 39640) (14691 40251) (14692 21083) (14693 21163) (14694 21495) (14695 
+21512) (14696 22741) (14697 25335) (14698 28640) (14699 35946) (14700 36703) (14701 40633) (14702 
+20811) (14703 21051) (14704 21578) (14705 22269) (14706 31296) (14707 37239) (14708 40288) (14709 
+40658) (14710 29508) (14711 28425) (14712 33136) (14713 29969) (14714 24573) (14715 24794) (14716 
+39592) (14717 29403) (14718 36796) (14881 27492) (14882 38915) (14883 20170) (14884 22256) (14885 
+22372) (14886 22718) (14887 23130) (14888 24680) (14889 25031) (14890 26127) (14891 26118) (14892 
+26681) (14893 26801) (14894 28151) (14895 30165) (14896 32058) (14897 33390) (14898 39746) (14899 
+20123) (14900 20304) (14901 21449) (14902 21766) (14903 23919) (14904 24038) (14905 24046) (14906 
+26619) (14907 27801) (14908 29811) (14909 30722) (14910 35408) (14911 37782) (14912 35039) (14913 
+22352) (14914 24231) (14915 25387) (14916 20661) (14917 20652) (14918 20877) (14919 26368) (14920 
+21705) (14921 22622) (14922 22971) (14923 23472) (14924 24425) (14925 25165) (14926 25505) (14927 
+26685) (14928 27507) (14929 28168) (14930 28797) (14931 37319) (14932 29312) (14933 30741) (14934 
+30758) (14935 31085) (14936 25998) (14937 32048) (14938 33756) (14939 35009) (14940 36617) (14941 
+38555) (14942 21092) (14943 22312) (14944 26448) (14945 32618) (14946 36001) (14947 20916) (14948 
+22338) (14949 38442) (14950 22586) (14951 27018) (14952 32948) (14953 21682) (14954 23822) (14955 
+22524) (14956 30869) (14957 40442) (14958 20316) (14959 21066) (14960 21643) (14961 25662) (14962 
+26152) (14963 26388) (14964 26613) (14965 31364) (14966 31574) (14967 32034) (14968 37679) (14969 
+26716) (14970 39853) (14971 31545) (14972 21273) (14973 20874) (14974 21047) (15137 23519) (15138 
+25334) (15139 25774) (15140 25830) (15141 26413) (15142 27578) (15143 34217) (15144 38609) (15145 
+30352) (15146 39894) (15147 25420) (15148 37638) (15149 39851) (15150 30399) (15151 26194) (15152 
+19977) (15153 20632) (15154 21442) (15155 23665) (15156 24808) (15157 25746) (15158 25955) (15159 
+26719) (15160 29158) (15161 29642) (15162 29987) (15163 31639) (15164 32386) (15165 34453) (15166 
+35715) (15167 36059) (15168 37240) (15169 39184) (15170 26028) (15171 26283) (15172 27531) (15173 
+20181) (15174 20180) (15175 20282) (15176 20351) (15177 21050) (15178 21496) (15179 21490) (15180 
+21987) (15181 22235) (15182 22763) (15183 22987) (15184 22985) (15185 23039) (15186 23376) (15187 
+23629) (15188 24066) (15189 24107) (15190 24535) (15191 24605) (15192 25351) (15193 25903) (15194 
+23388) (15195 26031) (15196 26045) (15197 26088) (15198 26525) (15199 27490) (15200 27515) (15201 
+27663) (15202 29509) (15203 31049) (15204 31169) (15205 31992) (15206 32025) (15207 32043) (15208 
+32930) (15209 33026) (15210 33267) (15211 35222) (15212 35422) (15213 35433) (15214 35430) (15215 
+35468) (15216 35566) (15217 36039) (15218 36060) (15219 38604) (15220 39164) (15221 27503) (15222 
+20107) (15223 20284) (15224 20365) (15225 20816) (15226 23383) (15227 23546) (15228 24904) (15229 
+25345) (15230 26178) (15393 27425) (15394 28363) (15395 27835) (15396 29246) (15397 29885) (15398 
+30164) (15399 30913) (15400 31034) (15401 32780) (15402 32819) (15403 33258) (15404 33940) (15405 
+36766) (15406 27728) (15407 40575) (15408 24335) (15409 35672) (15410 40235) (15411 31482) (15412 
+36600) (15413 23437) (15414 38635) (15415 19971) (15416 21489) (15417 22519) (15418 22833) (15419 
+23241) (15420 23460) (15421 24713) (15422 28287) (15423 28422) (15424 30142) (15425 36074) (15426 
+23455) (15427 34048) (15428 31712) (15429 20594) (15430 26612) (15431 33437) (15432 23649) (15433 
+34122) (15434 32286) (15435 33294) (15436 20889) (15437 23556) (15438 25448) (15439 36198) (15440 
+26012) (15441 29038) (15442 31038) (15443 32023) (15444 32773) (15445 35613) (15446 36554) (15447 
+36974) (15448 34503) (15449 37034) (15450 20511) (15451 21242) (15452 23610) (15453 26451) (15454 
+28796) (15455 29237) (15456 37196) (15457 37320) (15458 37675) (15459 33509) (15460 23490) (15461 
+24369) (15462 24825) (15463 20027) (15464 21462) (15465 23432) (15466 25163) (15467 26417) (15468 
+27530) (15469 29417) (15470 29664) (15471 31278) (15472 33131) (15473 36259) (15474 37202) (15475 
+39318) (15476 20754) (15477 21463) (15478 21610) (15479 23551) (15480 25480) (15481 27193) (15482 
+32172) (15483 38656) (15484 22234) (15485 21454) (15486 21608) (15649 23447) (15650 23601) (15651 
+24030) (15652 20462) (15653 24833) (15654 25342) (15655 27954) (15656 31168) (15657 31179) (15658 
+32066) (15659 32333) (15660 32722) (15661 33261) (15662 33311) (15663 33936) (15664 34886) (15665 
+35186) (15666 35728) (15667 36468) (15668 36655) (15669 36913) (15670 37195) (15671 37228) (15672 
+38598) (15673 37276) (15674 20160) (15675 20303) (15676 20805) (15677 21313) (15678 24467) (15679 
+25102) (15680 26580) (15681 27713) (15682 28171) (15683 29539) (15684 32294) (15685 37325) (15686 
+37507) (15687 21460) (15688 22809) (15689 23487) (15690 28113) (15691 31069) (15692 32302) (15693 
+31899) (15694 22654) (15695 29087) (15696 20986) (15697 34899) (15698 36848) (15699 20426) (15700 
+23803) (15701 26149) (15702 30636) (15703 31459) (15704 33308) (15705 39423) (15706 20934) (15707 
+24490) (15708 26092) (15709 26991) (15710 27529) (15711 28147) (15712 28310) (15713 28516) (15714 
+30462) (15715 32020) (15716 24033) (15717 36981) (15718 37255) (15719 38918) (15720 20966) (15721 
+21021) (15722 25152) (15723 26257) (15724 26329) (15725 28186) (15726 24246) (15727 32210) (15728 
+32626) (15729 26360) (15730 34223) (15731 34295) (15732 35576) (15733 21161) (15734 21465) (15735 
+22899) (15736 24207) (15737 24464) (15738 24661) (15739 37604) (15740 38500) (15741 20663) (15742 
+20767) (15905 21213) (15906 21280) (15907 21319) (15908 21484) (15909 21736) (15910 21830) (15911 
+21809) (15912 22039) (15913 22888) (15914 22974) (15915 23100) (15916 23477) (15917 23558) (15918 
+23567) (15919 23569) (15920 23578) (15921 24196) (15922 24202) (15923 24288) (15924 24432) (15925 
+25215) (15926 25220) (15927 25307) (15928 25484) (15929 25463) (15930 26119) (15931 26124) (15932 
+26157) (15933 26230) (15934 26494) (15935 26786) (15936 27167) (15937 27189) (15938 27836) (15939 
+28040) (15940 28169) (15941 28248) (15942 28988) (15943 28966) (15944 29031) (15945 30151) (15946 
+30465) (15947 30813) (15948 30977) (15949 31077) (15950 31216) (15951 31456) (15952 31505) (15953 
+31911) (15954 32057) (15955 32918) (15956 33750) (15957 33931) (15958 34121) (15959 34909) (15960 
+35059) (15961 35359) (15962 35388) (15963 35412) (15964 35443) (15965 35937) (15966 36062) (15967 
+37284) (15968 37478) (15969 37758) (15970 37912) (15971 38556) (15972 38808) (15973 19978) (15974 
+19976) (15975 19998) (15976 20055) (15977 20887) (15978 21104) (15979 22478) (15980 22580) (15981 
+22732) (15982 23330) (15983 24120) (15984 24773) (15985 25854) (15986 26465) (15987 26454) (15988 
+27972) (15989 29366) (15990 30067) (15991 31331) (15992 33976) (15993 35698) (15994 37304) (15995 
+37664) (15996 22065) (15997 22516) (15998 39166) (16161 25325) (16162 26893) (16163 27542) (16164 
+29165) (16165 32340) (16166 32887) (16167 33394) (16168 35302) (16169 39135) (16170 34645) (16171 
+36785) (16172 23611) (16173 20280) (16174 20449) (16175 20405) (16176 21767) (16177 23072) (16178 
+23517) (16179 23529) (16180 24515) (16181 24910) (16182 25391) (16183 26032) (16184 26187) (16185 
+26862) (16186 27035) (16187 28024) (16188 28145) (16189 30003) (16190 30137) (16191 30495) (16192 
+31070) (16193 31206) (16194 32051) (16195 33251) (16196 33455) (16197 34218) (16198 35242) (16199 
+35386) (16200 36523) (16201 36763) (16202 36914) (16203 37341) (16204 38663) (16205 20154) (16206 
+20161) (16207 20995) (16208 22645) (16209 22764) (16210 23563) (16211 29978) (16212 23613) (16213 
+33102) (16214 35338) (16215 36805) (16216 38499) (16217 38765) (16218 31525) (16219 35535) (16220 
+38920) (16221 37218) (16222 22259) (16223 21416) (16224 36887) (16225 21561) (16226 22402) (16227 
+24101) (16228 25512) (16229 27700) (16230 28810) (16231 30561) (16232 31883) (16233 32736) (16234 
+34928) (16235 36930) (16236 37204) (16237 37648) (16238 37656) (16239 38543) (16240 29790) (16241 
+39620) (16242 23815) (16243 23913) (16244 25968) (16245 26530) (16246 36264) (16247 38619) (16248 
+25454) (16249 26441) (16250 26905) (16251 33733) (16252 38935) (16253 38592) (16254 35070) (16417 
+28548) (16418 25722) (16419 23544) (16420 19990) (16421 28716) (16422 30045) (16423 26159) (16424 
+20932) (16425 21046) (16426 21218) (16427 22995) (16428 24449) (16429 24615) (16430 25104) (16431 
+25919) (16432 25972) (16433 26143) (16434 26228) (16435 26866) (16436 26646) (16437 27491) (16438 
+28165) (16439 29298) (16440 29983) (16441 30427) (16442 31934) (16443 32854) (16444 22768) (16445 
+35069) (16446 35199) (16447 35488) (16448 35475) (16449 35531) (16450 36893) (16451 37266) (16452 
+38738) (16453 38745) (16454 25993) (16455 31246) (16456 33030) (16457 38587) (16458 24109) (16459 
+24796) (16460 25114) (16461 26021) (16462 26132) (16463 26512) (16464 30707) (16465 31309) (16466 
+31821) (16467 32318) (16468 33034) (16469 36012) (16470 36196) (16471 36321) (16472 36447) (16473 
+30889) (16474 20999) (16475 25305) (16476 25509) (16477 25666) (16478 25240) (16479 35373) (16480 
+31363) (16481 31680) (16482 35500) (16483 38634) (16484 32118) (16485 33292) (16486 34633) (16487 
+20185) (16488 20808) (16489 21315) (16490 21344) (16491 23459) (16492 23554) (16493 23574) (16494 
+24029) (16495 25126) (16496 25159) (16497 25776) (16498 26643) (16499 26676) (16500 27849) (16501 
+27973) (16502 27927) (16503 26579) (16504 28508) (16505 29006) (16506 29053) (16507 26059) (16508 
+31359) (16509 31661) (16510 32218) (16673 32330) (16674 32680) (16675 33146) (16676 33307) (16677 
+33337) (16678 34214) (16679 35438) (16680 36046) (16681 36341) (16682 36984) (16683 36983) (16684 
+37549) (16685 37521) (16686 38275) (16687 39854) (16688 21069) (16689 21892) (16690 28472) (16691 
+28982) (16692 20840) (16693 31109) (16694 32341) (16695 33203) (16696 31950) (16697 22092) (16698 
+22609) (16699 23720) (16700 25514) (16701 26366) (16702 26365) (16703 26970) (16704 29401) (16705 
+30095) (16706 30094) (16707 30990) (16708 31062) (16709 31199) (16710 31895) (16711 32032) (16712 
+32068) (16713 34311) (16714 35380) (16715 38459) (16716 36961) (16717 40736) (16718 20711) (16719 
+21109) (16720 21452) (16721 21474) (16722 20489) (16723 21930) (16724 22766) (16725 22863) (16726 
+29245) (16727 23435) (16728 23652) (16729 21277) (16730 24803) (16731 24819) (16732 25436) (16733 
+25475) (16734 25407) (16735 25531) (16736 25805) (16737 26089) (16738 26361) (16739 24035) (16740 
+27085) (16741 27133) (16742 28437) (16743 29157) (16744 20105) (16745 30185) (16746 30456) (16747 
+31379) (16748 31967) (16749 32207) (16750 32156) (16751 32865) (16752 33609) (16753 33624) (16754 
+33900) (16755 33980) (16756 34299) (16757 35013) (16758 36208) (16759 36865) (16760 36973) (16761 
+37783) (16762 38684) (16763 39442) (16764 20687) (16765 22679) (16766 24974) (16929 33235) (16930 
+34101) (16931 36104) (16932 36896) (16933 20419) (16934 20596) (16935 21063) (16936 21363) (16937 
+24687) (16938 25417) (16939 26463) (16940 28204) (16941 36275) (16942 36895) (16943 20439) (16944 
+23646) (16945 36042) (16946 26063) (16947 32154) (16948 21330) (16949 34966) (16950 20854) (16951 
+25539) (16952 23384) (16953 23403) (16954 23562) (16955 25613) (16956 26449) (16957 36956) (16958 
+20182) (16959 22810) (16960 22826) (16961 27760) (16962 35409) (16963 21822) (16964 22549) (16965 
+22949) (16966 24816) (16967 25171) (16968 26561) (16969 33333) (16970 26965) (16971 38464) (16972 
+39364) (16973 39464) (16974 20307) (16975 22534) (16976 23550) (16977 32784) (16978 23729) (16979 
+24111) (16980 24453) (16981 24608) (16982 24907) (16983 25140) (16984 26367) (16985 27888) (16986 
+28382) (16987 32974) (16988 33151) (16989 33492) (16990 34955) (16991 36024) (16992 36864) (16993 
+36910) (16994 38538) (16995 40667) (16996 39899) (16997 20195) (16998 21488) (16999 22823) (17000 
+31532) (17001 37261) (17002 38988) (17003 40441) (17004 28381) (17005 28711) (17006 21331) (17007 
+21828) (17008 23429) (17009 25176) (17010 25246) (17011 25299) (17012 27810) (17013 28655) (17014 
+29730) (17015 35351) (17016 37944) (17017 28609) (17018 35582) (17019 33592) (17020 20967) (17021 
+34552) (17022 21482) (17185 21481) (17186 20294) (17187 36948) (17188 36784) (17189 22890) (17190 
+33073) (17191 24061) (17192 31466) (17193 36799) (17194 26842) (17195 35895) (17196 29432) (17197 
+40008) (17198 27197) (17199 35504) (17200 20025) (17201 21336) (17202 22022) (17203 22374) (17204 
+25285) (17205 25506) (17206 26086) (17207 27470) (17208 28129) (17209 28251) (17210 28845) (17211 
+30701) (17212 31471) (17213 31658) (17214 32187) (17215 32829) (17216 32966) (17217 34507) (17218 
+35477) (17219 37723) (17220 22243) (17221 22727) (17222 24382) (17223 26029) (17224 26262) (17225 
+27264) (17226 27573) (17227 30007) (17228 35527) (17229 20516) (17230 30693) (17231 22320) (17232 
+24347) (17233 24677) (17234 26234) (17235 27744) (17236 30196) (17237 31258) (17238 32622) (17239 
+33268) (17240 34584) (17241 36933) (17242 39347) (17243 31689) (17244 30044) (17245 31481) (17246 
+31569) (17247 33988) (17248 36880) (17249 31209) (17250 31378) (17251 33590) (17252 23265) (17253 
+30528) (17254 20013) (17255 20210) (17256 23449) (17257 24544) (17258 25277) (17259 26172) (17260 
+26609) (17261 27880) (17262 34411) (17263 34935) (17264 35387) (17265 37198) (17266 37619) (17267 
+39376) (17268 27159) (17269 28710) (17270 29482) (17271 33511) (17272 33879) (17273 36015) (17274 
+19969) (17275 20806) (17276 20939) (17277 21899) (17278 23541) (17441 24086) (17442 24115) (17443 
+24193) (17444 24340) (17445 24373) (17446 24427) (17447 24500) (17448 25074) (17449 25361) (17450 
+26274) (17451 26397) (17452 28526) (17453 29266) (17454 30010) (17455 30522) (17456 32884) (17457 
+33081) (17458 33144) (17459 34678) (17460 35519) (17461 35548) (17462 36229) (17463 36339) (17464 
+37530) (17465 38263) (17466 38914) (17467 40165) (17468 21189) (17469 25431) (17470 30452) (17471 
+26389) (17472 27784) (17473 29645) (17474 36035) (17475 37806) (17476 38515) (17477 27941) (17478 
+22684) (17479 26894) (17480 27084) (17481 36861) (17482 37786) (17483 30171) (17484 36890) (17485 
+22618) (17486 26626) (17487 25524) (17488 27131) (17489 20291) (17490 28460) (17491 26584) (17492 
+36795) (17493 34086) (17494 32180) (17495 37716) (17496 26943) (17497 28528) (17498 22378) (17499 
+22775) (17500 23340) (17501 32044) (17502 29226) (17503 21514) (17504 37347) (17505 40372) (17506 
+20141) (17507 20302) (17508 20572) (17509 20597) (17510 21059) (17511 35998) (17512 21576) (17513 
+22564) (17514 23450) (17515 24093) (17516 24213) (17517 24237) (17518 24311) (17519 24351) (17520 
+24716) (17521 25269) (17522 25402) (17523 25552) (17524 26799) (17525 27712) (17526 30855) (17527 
+31118) (17528 31243) (17529 32224) (17530 33351) (17531 35330) (17532 35558) (17533 36420) (17534 
+36883) (17697 37048) (17698 37165) (17699 37336) (17700 40718) (17701 27877) (17702 25688) (17703 
+25826) (17704 25973) (17705 28404) (17706 30340) (17707 31515) (17708 36969) (17709 37841) (17710 
+28346) (17711 21746) (17712 24505) (17713 25764) (17714 36685) (17715 36845) (17716 37444) (17717 
+20856) (17718 22635) (17719 22825) (17720 23637) (17721 24215) (17722 28155) (17723 32399) (17724 
+29980) (17725 36028) (17726 36578) (17727 39003) (17728 28857) (17729 20253) (17730 27583) (17731 
+28593) (17732 30000) (17733 38651) (17734 20814) (17735 21520) (17736 22581) (17737 22615) (17738 
+22956) (17739 23648) (17740 24466) (17741 26007) (17742 26460) (17743 28193) (17744 30331) (17745 
+33759) (17746 36077) (17747 36884) (17748 37117) (17749 37709) (17750 30757) (17751 30778) (17752 
+21162) (17753 24230) (17754 22303) (17755 22900) (17756 24594) (17757 20498) (17758 20826) (17759 
+20908) (17760 20941) (17761 20992) (17762 21776) (17763 22612) (17764 22616) (17765 22871) (17766 
+23445) (17767 23798) (17768 23947) (17769 24764) (17770 25237) (17771 25645) (17772 26481) (17773 
+26691) (17774 26812) (17775 26847) (17776 30423) (17777 28120) (17778 28271) (17779 28059) (17780 
+28783) (17781 29128) (17782 24403) (17783 30168) (17784 31095) (17785 31561) (17786 31572) (17787 
+31570) (17788 31958) (17789 32113) (17790 21040) (17953 33891) (17954 34153) (17955 34276) (17956 
+35342) (17957 35588) (17958 35910) (17959 36367) (17960 36867) (17961 36879) (17962 37913) (17963 
+38518) (17964 38957) (17965 39472) (17966 38360) (17967 20685) (17968 21205) (17969 21516) (17970 
+22530) (17971 23566) (17972 24999) (17973 25758) (17974 27934) (17975 30643) (17976 31461) (17977 
+33012) (17978 33796) (17979 36947) (17980 37509) (17981 23776) (17982 40199) (17983 21311) (17984 
+24471) (17985 24499) (17986 28060) (17987 29305) (17988 30563) (17989 31167) (17990 31716) (17991 
+27602) (17992 29420) (17993 35501) (17994 26627) (17995 27233) (17996 20984) (17997 31361) (17998 
+26932) (17999 23626) (18000 40182) (18001 33515) (18002 23493) (18003 37193) (18004 28702) (18005 
+22136) (18006 23663) (18007 24775) (18008 25958) (18009 27788) (18010 35930) (18011 36929) (18012 
+38931) (18013 21585) (18014 26311) (18015 37389) (18016 22856) (18017 37027) (18018 20869) (18019 
+20045) (18020 20970) (18021 34201) (18022 35598) (18023 28760) (18024 25466) (18025 37707) (18026 
+26978) (18027 39348) (18028 32260) (18029 30071) (18030 21335) (18031 26976) (18032 36575) (18033 
+38627) (18034 27741) (18035 20108) (18036 23612) (18037 24336) (18038 36841) (18039 21250) (18040 
+36049) (18041 32905) (18042 34425) (18043 24319) (18044 26085) (18045 20083) (18046 20837) (18209 
+22914) (18210 23615) (18211 38894) (18212 20219) (18213 22922) (18214 24525) (18215 35469) (18216 
+28641) (18217 31152) (18218 31074) (18219 23527) (18220 33905) (18221 29483) (18222 29105) (18223 
+24180) (18224 24565) (18225 25467) (18226 25754) (18227 29123) (18228 31896) (18229 20035) (18230 
+24316) (18231 20043) (18232 22492) (18233 22178) (18234 24745) (18235 28611) (18236 32013) (18237 
+33021) (18238 33075) (18239 33215) (18240 36786) (18241 35223) (18242 34468) (18243 24052) (18244 
+25226) (18245 25773) (18246 35207) (18247 26487) (18248 27874) (18249 27966) (18250 29750) (18251 
+30772) (18252 23110) (18253 32629) (18254 33453) (18255 39340) (18256 20467) (18257 24259) (18258 
+25309) (18259 25490) (18260 25943) (18261 26479) (18262 30403) (18263 29260) (18264 32972) (18265 
+32954) (18266 36649) (18267 37197) (18268 20493) (18269 22521) (18270 23186) (18271 26757) (18272 
+26995) (18273 29028) (18274 29437) (18275 36023) (18276 22770) (18277 36064) (18278 38506) (18279 
+36889) (18280 34687) (18281 31204) (18282 30695) (18283 33833) (18284 20271) (18285 21093) (18286 
+21338) (18287 25293) (18288 26575) (18289 27850) (18290 30333) (18291 31636) (18292 31893) (18293 
+33334) (18294 34180) (18295 36843) (18296 26333) (18297 28448) (18298 29190) (18299 32283) (18300 
+33707) (18301 39361) (18302 40614) (18465 20989) (18466 31665) (18467 30834) (18468 31672) (18469 
+32903) (18470 31560) (18471 27368) (18472 24161) (18473 32908) (18474 30033) (18475 30048) (18476 
+20843) (18477 37474) (18478 28300) (18479 30330) (18480 37271) (18481 39658) (18482 20240) (18483 
+32624) (18484 25244) (18485 31567) (18486 38309) (18487 40169) (18488 22138) (18489 22617) (18490 
+34532) (18491 38588) (18492 20276) (18493 21028) (18494 21322) (18495 21453) (18496 21467) (18497 
+24070) (18498 25644) (18499 26001) (18500 26495) (18501 27710) (18502 27726) (18503 29256) (18504 
+29359) (18505 29677) (18506 30036) (18507 32321) (18508 33324) (18509 34281) (18510 36009) (18511 
+31684) (18512 37318) (18513 29033) (18514 38930) (18515 39151) (18516 25405) (18517 26217) (18518 
+30058) (18519 30436) (18520 30928) (18521 34115) (18522 34542) (18523 21290) (18524 21329) (18525 
+21542) (18526 22915) (18527 24199) (18528 24444) (18529 24754) (18530 25161) (18531 25209) (18532 
+25259) (18533 26000) (18534 27604) (18535 27852) (18536 30130) (18537 30382) (18538 30865) (18539 
+31192) (18540 32203) (18541 32631) (18542 32933) (18543 34987) (18544 35513) (18545 36027) (18546 
+36991) (18547 38750) (18548 39131) (18549 27147) (18550 31800) (18551 20633) (18552 23614) (18553 
+24494) (18554 26503) (18555 27608) (18556 29749) (18557 30473) (18558 32654) (18721 40763) (18722 
+26570) (18723 31255) (18724 21305) (18725 30091) (18726 39661) (18727 24422) (18728 33181) (18729 
+33777) (18730 32920) (18731 24380) (18732 24517) (18733 30050) (18734 31558) (18735 36924) (18736 
+26727) (18737 23019) (18738 23195) (18739 32016) (18740 30334) (18741 35628) (18742 20469) (18743 
+24426) (18744 27161) (18745 27703) (18746 28418) (18747 29922) (18748 31080) (18749 34920) (18750 
+35413) (18751 35961) (18752 24287) (18753 25551) (18754 30149) (18755 31186) (18756 33495) (18757 
+37672) (18758 37618) (18759 33948) (18760 34541) (18761 39981) (18762 21697) (18763 24428) (18764 
+25996) (18765 27996) (18766 28693) (18767 36007) (18768 36051) (18769 38971) (18770 25935) (18771 
+29942) (18772 19981) (18773 20184) (18774 22496) (18775 22827) (18776 23142) (18777 23500) (18778 
+20904) (18779 24067) (18780 24220) (18781 24598) (18782 25206) (18783 25975) (18784 26023) (18785 
+26222) (18786 28014) (18787 29238) (18788 31526) (18789 33104) (18790 33178) (18791 33433) (18792 
+35676) (18793 36000) (18794 36070) (18795 36212) (18796 38428) (18797 38468) (18798 20398) (18799 
+25771) (18800 27494) (18801 33310) (18802 33889) (18803 34154) (18804 37096) (18805 23553) (18806 
+26963) (18807 39080) (18808 33914) (18809 34135) (18810 20239) (18811 21103) (18812 24489) (18813 
+24133) (18814 26381) (18977 31119) (18978 33145) (18979 35079) (18980 35206) (18981 28149) (18982 
+24343) (18983 25173) (18984 27832) (18985 20175) (18986 29289) (18987 39826) (18988 20998) (18989 
+21563) (18990 22132) (18991 22707) (18992 24996) (18993 25198) (18994 28954) (18995 22894) (18996 
+31881) (18997 31966) (18998 32027) (18999 38640) (19000 25991) (19001 32862) (19002 19993) (19003 
+20341) (19004 20853) (19005 22592) (19006 24163) (19007 24179) (19008 24330) (19009 26564) (19010 
+20006) (19011 34109) (19012 38281) (19013 38491) (19014 31859) (19015 38913) (19016 20731) (19017 
+22721) (19018 30294) (19019 30887) (19020 21029) (19021 30629) (19022 34065) (19023 31622) (19024 
+20559) (19025 22793) (19026 29255) (19027 31687) (19028 32232) (19029 36794) (19030 36820) (19031 
+36941) (19032 20415) (19033 21193) (19034 23081) (19035 24321) (19036 38829) (19037 20445) (19038 
+33303) (19039 37610) (19040 22275) (19041 25429) (19042 27497) (19043 29995) (19044 35036) (19045 
+36628) (19046 31298) (19047 21215) (19048 22675) (19049 24917) (19050 25098) (19051 26286) (19052 
+27597) (19053 31807) (19054 33769) (19055 20515) (19056 20472) (19057 21253) (19058 21574) (19059 
+22577) (19060 22857) (19061 23453) (19062 23792) (19063 23791) (19064 23849) (19065 24214) (19066 
+25265) (19067 25447) (19068 25918) (19069 26041) (19070 26379) (19233 27861) (19234 27873) (19235 
+28921) (19236 30770) (19237 32299) (19238 32990) (19239 33459) (19240 33804) (19241 34028) (19242 
+34562) (19243 35090) (19244 35370) (19245 35914) (19246 37030) (19247 37586) (19248 39165) (19249 
+40179) (19250 40300) (19251 20047) (19252 20129) (19253 20621) (19254 21078) (19255 22346) (19256 
+22952) (19257 24125) (19258 24536) (19259 24537) (19260 25151) (19261 26292) (19262 26395) (19263 
+26576) (19264 26834) (19265 20882) (19266 32033) (19267 32938) (19268 33192) (19269 35584) (19270 
+35980) (19271 36031) (19272 37502) (19273 38450) (19274 21536) (19275 38956) (19276 21271) (19277 
+20693) (19278 21340) (19279 22696) (19280 25778) (19281 26420) (19282 29287) (19283 30566) (19284 
+31302) (19285 37350) (19286 21187) (19287 27809) (19288 27526) (19289 22528) (19290 24140) (19291 
+22868) (19292 26412) (19293 32763) (19294 20961) (19295 30406) (19296 25705) (19297 30952) (19298 
+39764) (19299 40635) (19300 22475) (19301 22969) (19302 26151) (19303 26522) (19304 27598) (19305 
+21737) (19306 27097) (19307 24149) (19308 33180) (19309 26517) (19310 39850) (19311 26622) (19312 
+40018) (19313 26717) (19314 20134) (19315 20451) (19316 21448) (19317 25273) (19318 26411) (19319 
+27819) (19320 36804) (19321 20397) (19322 32365) (19323 40639) (19324 19975) (19325 24930) (19326 
+28288) (19489 28459) (19490 34067) (19491 21619) (19492 26410) (19493 39749) (19494 24051) (19495 
+31637) (19496 23724) (19497 23494) (19498 34588) (19499 28234) (19500 34001) (19501 31252) (19502 
+33032) (19503 22937) (19504 31885) (19505 27665) (19506 30496) (19507 21209) (19508 22818) (19509 
+28961) (19510 29279) (19511 30683) (19512 38695) (19513 40289) (19514 26891) (19515 23167) (19516 
+23064) (19517 20901) (19518 21517) (19519 21629) (19520 26126) (19521 30431) (19522 36855) (19523 
+37528) (19524 40180) (19525 23018) (19526 29277) (19527 28357) (19528 20813) (19529 26825) (19530 
+32191) (19531 32236) (19532 38754) (19533 40634) (19534 25720) (19535 27169) (19536 33538) (19537 
+22916) (19538 23391) (19539 27611) (19540 29467) (19541 30450) (19542 32178) (19543 32791) (19544 
+33945) (19545 20786) (19546 26408) (19547 40665) (19548 30446) (19549 26466) (19550 21247) (19551 
+39173) (19552 23588) (19553 25147) (19554 31870) (19555 36016) (19556 21839) (19557 24758) (19558 
+32011) (19559 38272) (19560 21249) (19561 20063) (19562 20918) (19563 22812) (19564 29242) (19565 
+32822) (19566 37326) (19567 24357) (19568 30690) (19569 21380) (19570 24441) (19571 32004) (19572 
+34220) (19573 35379) (19574 36493) (19575 38742) (19576 26611) (19577 34222) (19578 37971) (19579 
+24841) (19580 24840) (19581 27833) (19582 30290) (19745 35565) (19746 36664) (19747 21807) (19748 
+20305) (19749 20778) (19750 21191) (19751 21451) (19752 23461) (19753 24189) (19754 24736) (19755 
+24962) (19756 25558) (19757 26377) (19758 26586) (19759 28263) (19760 28044) (19761 29494) (19762 
+29495) (19763 30001) (19764 31056) (19765 35029) (19766 35480) (19767 36938) (19768 37009) (19769 
+37109) (19770 38596) (19771 34701) (19772 22805) (19773 20104) (19774 20313) (19775 19982) (19776 
+35465) (19777 36671) (19778 38928) (19779 20653) (19780 24188) (19781 22934) (19782 23481) (19783 
+24248) (19784 25562) (19785 25594) (19786 25793) (19787 26332) (19788 26954) (19789 27096) (19790 
+27915) (19791 28342) (19792 29076) (19793 29992) (19794 31407) (19795 32650) (19796 32768) (19797 
+33865) (19798 33993) (19799 35201) (19800 35617) (19801 36362) (19802 36965) (19803 38525) (19804 
+39178) (19805 24958) (19806 25233) (19807 27442) (19808 27779) (19809 28020) (19810 32716) (19811 
+32764) (19812 28096) (19813 32645) (19814 34746) (19815 35064) (19816 26469) (19817 33713) (19818 
+38972) (19819 38647) (19820 27931) (19821 32097) (19822 33853) (19823 37226) (19824 20081) (19825 
+21365) (19826 23888) (19827 27396) (19828 28651) (19829 34253) (19830 34349) (19831 35239) (19832 
+21033) (19833 21519) (19834 23653) (19835 26446) (19836 26792) (19837 29702) (19838 29827) (20001 
+30178) (20002 35023) (20003 35041) (20004 37324) (20005 38626) (20006 38520) (20007 24459) (20008 
+29575) (20009 31435) (20010 33870) (20011 25504) (20012 30053) (20013 21129) (20014 27969) (20015 
+28316) (20016 29705) (20017 30041) (20018 30827) (20019 31890) (20020 38534) (20021 31452) (20022 
+40845) (20023 20406) (20024 24942) (20025 26053) (20026 34396) (20027 20102) (20028 20142) (20029 
+20698) (20030 20001) (20031 20940) (20032 23534) (20033 26009) (20034 26753) (20035 28092) (20036 
+29471) (20037 30274) (20038 30637) (20039 31260) (20040 31975) (20041 33391) (20042 35538) (20043 
+36988) (20044 37327) (20045 38517) (20046 38936) (20047 21147) (20048 32209) (20049 20523) (20050 
+21400) (20051 26519) (20052 28107) (20053 29136) (20054 29747) (20055 33256) (20056 36650) (20057 
+38563) (20058 40023) (20059 40607) (20060 29792) (20061 22593) (20062 28057) (20063 32047) (20064 
+39006) (20065 20196) (20066 20278) (20067 20363) (20068 20919) (20069 21169) (20070 23994) (20071 
+24604) (20072 29618) (20073 31036) (20074 33491) (20075 37428) (20076 38583) (20077 38646) (20078 
+38666) (20079 40599) (20080 40802) (20081 26278) (20082 27508) (20083 21015) (20084 21155) (20085 
+28872) (20086 35010) (20087 24265) (20088 24651) (20089 24976) (20090 28451) (20091 29001) (20092 
+31806) (20093 32244) (20094 32879) (20257 34030) (20258 36899) (20259 37676) (20260 21570) (20261 
+39791) (20262 27347) (20263 28809) (20264 36034) (20265 36335) (20266 38706) (20267 21172) (20268 
+23105) (20269 24266) (20270 24324) (20271 26391) (20272 27004) (20273 27028) (20274 28010) (20275 
+28431) (20276 29282) (20277 29436) (20278 31725) (20279 32769) (20280 32894) (20281 34635) (20282 
+37070) (20283 20845) (20284 40595) (20285 31108) (20286 32907) (20287 37682) (20288 35542) (20289 
+20525) (20290 21644) (20291 35441) (20292 27498) (20293 36036) (20294 33031) (20295 24785) (20296 
+26528) (20297 40434) (20298 20121) (20299 20120) (20300 39952) (20301 35435) (20302 34241) (20303 
+34152) (20304 26880) (20305 28286) (20306 30871) (20307 33109) (20513 24332) (20514 19984) (20515 
+19989) (20516 20010) (20517 20017) (20518 20022) (20519 20028) (20520 20031) (20521 20034) (20522 
+20054) (20523 20056) (20524 20098) (20525 20101) (20526 35947) (20527 20106) (20528 33298) (20529 
+24333) (20530 20110) (20531 20126) (20532 20127) (20533 20128) (20534 20130) (20535 20144) (20536 
+20147) (20537 20150) (20538 20174) (20539 20173) (20540 20164) (20541 20166) (20542 20162) (20543 
+20183) (20544 20190) (20545 20205) (20546 20191) (20547 20215) (20548 20233) (20549 20314) (20550 
+20272) (20551 20315) (20552 20317) (20553 20311) (20554 20295) (20555 20342) (20556 20360) (20557 
+20367) (20558 20376) (20559 20347) (20560 20329) (20561 20336) (20562 20369) (20563 20335) (20564 
+20358) (20565 20374) (20566 20760) (20567 20436) (20568 20447) (20569 20430) (20570 20440) (20571 
+20443) (20572 20433) (20573 20442) (20574 20432) (20575 20452) (20576 20453) (20577 20506) (20578 
+20520) (20579 20500) (20580 20522) (20581 20517) (20582 20485) (20583 20252) (20584 20470) (20585 
+20513) (20586 20521) (20587 20524) (20588 20478) (20589 20463) (20590 20497) (20591 20486) (20592 
+20547) (20593 20551) (20594 26371) (20595 20565) (20596 20560) (20597 20552) (20598 20570) (20599 
+20566) (20600 20588) (20601 20600) (20602 20608) (20603 20634) (20604 20613) (20605 20660) (20606 
+20658) (20769 20681) (20770 20682) (20771 20659) (20772 20674) (20773 20694) (20774 20702) (20775 
+20709) (20776 20717) (20777 20707) (20778 20718) (20779 20729) (20780 20725) (20781 20745) (20782 
+20737) (20783 20738) (20784 20758) (20785 20757) (20786 20756) (20787 20762) (20788 20769) (20789 
+20794) (20790 20791) (20791 20796) (20792 20795) (20793 20799) (20794 20800) (20795 20818) (20796 
+20812) (20797 20820) (20798 20834) (20799 31480) (20800 20841) (20801 20842) (20802 20846) (20803 
+20864) (20804 20866) (20805 22232) (20806 20876) (20807 20873) (20808 20879) (20809 20881) (20810 
+20883) (20811 20885) (20812 20886) (20813 20900) (20814 20902) (20815 20898) (20816 20905) (20817 
+20906) (20818 20907) (20819 20915) (20820 20913) (20821 20914) (20822 20912) (20823 20917) (20824 
+20925) (20825 20933) (20826 20937) (20827 20955) (20828 20960) (20829 34389) (20830 20969) (20831 
+20973) (20832 20976) (20833 20981) (20834 20990) (20835 20996) (20836 21003) (20837 21012) (20838 
+21006) (20839 21031) (20840 21034) (20841 21038) (20842 21043) (20843 21049) (20844 21071) (20845 
+21060) (20846 21067) (20847 21068) (20848 21086) (20849 21076) (20850 21098) (20851 21108) (20852 
+21097) (20853 21107) (20854 21119) (20855 21117) (20856 21133) (20857 21140) (20858 21138) (20859 
+21105) (20860 21128) (20861 21137) (20862 36776) (21025 36775) (21026 21164) (21027 21165) (21028 
+21180) (21029 21173) (21030 21185) (21031 21197) (21032 21207) (21033 21214) (21034 21219) (21035 
+21222) (21036 39149) (21037 21216) (21038 21235) (21039 21237) (21040 21240) (21041 21241) (21042 
+21254) (21043 21256) (21044 30008) (21045 21261) (21046 21264) (21047 21263) (21048 21269) (21049 
+21274) (21050 21283) (21051 21295) (21052 21297) (21053 21299) (21054 21304) (21055 21312) (21056 
+21318) (21057 21317) (21058 19991) (21059 21321) (21060 21325) (21061 20950) (21062 21342) (21063 
+21353) (21064 21358) (21065 22808) (21066 21371) (21067 21367) (21068 21378) (21069 21398) (21070 
+21408) (21071 21414) (21072 21413) (21073 21422) (21074 21424) (21075 21430) (21076 21443) (21077 
+31762) (21078 38617) (21079 21471) (21080 26364) (21081 29166) (21082 21486) (21083 21480) (21084 
+21485) (21085 21498) (21086 21505) (21087 21565) (21088 21568) (21089 21548) (21090 21549) (21091 
+21564) (21092 21550) (21093 21558) (21094 21545) (21095 21533) (21096 21582) (21097 21647) (21098 
+21621) (21099 21646) (21100 21599) (21101 21617) (21102 21623) (21103 21616) (21104 21650) (21105 
+21627) (21106 21632) (21107 21622) (21108 21636) (21109 21648) (21110 21638) (21111 21703) (21112 
+21666) (21113 21688) (21114 21669) (21115 21676) (21116 21700) (21117 21704) (21118 21672) (21281 
+21675) (21282 21698) (21283 21668) (21284 21694) (21285 21692) (21286 21720) (21287 21733) (21288 
+21734) (21289 21775) (21290 21780) (21291 21757) (21292 21742) (21293 21741) (21294 21754) (21295 
+21730) (21296 21817) (21297 21824) (21298 21859) (21299 21836) (21300 21806) (21301 21852) (21302 
+21829) (21303 21846) (21304 21847) (21305 21816) (21306 21811) (21307 21853) (21308 21913) (21309 
+21888) (21310 21679) (21311 21898) (21312 21919) (21313 21883) (21314 21886) (21315 21912) (21316 
+21918) (21317 21934) (21318 21884) (21319 21891) (21320 21929) (21321 21895) (21322 21928) (21323 
+21978) (21324 21957) (21325 21983) (21326 21956) (21327 21980) (21328 21988) (21329 21972) (21330 
+22036) (21331 22007) (21332 22038) (21333 22014) (21334 22013) (21335 22043) (21336 22009) (21337 
+22094) (21338 22096) (21339 29151) (21340 22068) (21341 22070) (21342 22066) (21343 22072) (21344 
+22123) (21345 22116) (21346 22063) (21347 22124) (21348 22122) (21349 22150) (21350 22144) (21351 
+22154) (21352 22176) (21353 22164) (21354 22159) (21355 22181) (21356 22190) (21357 22198) (21358 
+22196) (21359 22210) (21360 22204) (21361 22209) (21362 22211) (21363 22208) (21364 22216) (21365 
+22222) (21366 22225) (21367 22227) (21368 22231) (21369 22254) (21370 22265) (21371 22272) (21372 
+22271) (21373 22276) (21374 22281) (21537 22280) (21538 22283) (21539 22285) (21540 22291) (21541 
+22296) (21542 22294) (21543 21959) (21544 22300) (21545 22310) (21546 22327) (21547 22328) (21548 
+22350) (21549 22331) (21550 22336) (21551 22351) (21552 22377) (21553 22464) (21554 22408) (21555 
+22369) (21556 22399) (21557 22409) (21558 22419) (21559 22432) (21560 22451) (21561 22436) (21562 
+22442) (21563 22448) (21564 22467) (21565 22470) (21566 22484) (21567 22482) (21568 22483) (21569 
+22538) (21570 22486) (21571 22499) (21572 22539) (21573 22553) (21574 22557) (21575 22642) (21576 
+22561) (21577 22626) (21578 22603) (21579 22640) (21580 27584) (21581 22610) (21582 22589) (21583 
+22649) (21584 22661) (21585 22713) (21586 22687) (21587 22699) (21588 22714) (21589 22750) (21590 
+22715) (21591 22712) (21592 22702) (21593 22725) (21594 22739) (21595 22737) (21596 22743) (21597 
+22745) (21598 22744) (21599 22757) (21600 22748) (21601 22756) (21602 22751) (21603 22767) (21604 
+22778) (21605 22777) (21606 22779) (21607 22780) (21608 22781) (21609 22786) (21610 22794) (21611 
+22800) (21612 22811) (21613 26790) (21614 22821) (21615 22828) (21616 22829) (21617 22834) (21618 
+22840) (21619 22846) (21620 31442) (21621 22869) (21622 22864) (21623 22862) (21624 22874) (21625 
+22872) (21626 22882) (21627 22880) (21628 22887) (21629 22892) (21630 22889) (21793 22904) (21794 
+22913) (21795 22941) (21796 20318) (21797 20395) (21798 22947) (21799 22962) (21800 22982) (21801 
+23016) (21802 23004) (21803 22925) (21804 23001) (21805 23002) (21806 23077) (21807 23071) (21808 
+23057) (21809 23068) (21810 23049) (21811 23066) (21812 23104) (21813 23148) (21814 23113) (21815 
+23093) (21816 23094) (21817 23138) (21818 23146) (21819 23194) (21820 23228) (21821 23230) (21822 
+23243) (21823 23234) (21824 23229) (21825 23267) (21826 23255) (21827 23270) (21828 23273) (21829 
+23254) (21830 23290) (21831 23291) (21832 23308) (21833 23307) (21834 23318) (21835 23346) (21836 
+23248) (21837 23338) (21838 23350) (21839 23358) (21840 23363) (21841 23365) (21842 23360) (21843 
+23377) (21844 23381) (21845 23386) (21846 23387) (21847 23397) (21848 23401) (21849 23408) (21850 
+23411) (21851 23413) (21852 23416) (21853 25992) (21854 23418) (21855 23424) (21856 23427) (21857 
+23462) (21858 23480) (21859 23491) (21860 23495) (21861 23497) (21862 23508) (21863 23504) (21864 
+23524) (21865 23526) (21866 23522) (21867 23518) (21868 23525) (21869 23531) (21870 23536) (21871 
+23542) (21872 23539) (21873 23557) (21874 23559) (21875 23560) (21876 23565) (21877 23571) (21878 
+23584) (21879 23586) (21880 23592) (21881 23608) (21882 23609) (21883 23617) (21884 23622) (21885 
+23630) (21886 23635) (22049 23632) (22050 23631) (22051 23409) (22052 23660) (22053 23662) (22054 
+20066) (22055 23670) (22056 23673) (22057 23692) (22058 23697) (22059 23700) (22060 22939) (22061 
+23723) (22062 23739) (22063 23734) (22064 23740) (22065 23735) (22066 23749) (22067 23742) (22068 
+23751) (22069 23769) (22070 23785) (22071 23805) (22072 23802) (22073 23789) (22074 23948) (22075 
+23786) (22076 23819) (22077 23829) (22078 23831) (22079 23900) (22080 23839) (22081 23835) (22082 
+23825) (22083 23828) (22084 23842) (22085 23834) (22086 23833) (22087 23832) (22088 23884) (22089 
+23890) (22090 23886) (22091 23883) (22092 23916) (22093 23923) (22094 23926) (22095 23943) (22096 
+23940) (22097 23938) (22098 23970) (22099 23965) (22100 23980) (22101 23982) (22102 23997) (22103 
+23952) (22104 23991) (22105 23996) (22106 24009) (22107 24013) (22108 24019) (22109 24018) (22110 
+24022) (22111 24027) (22112 24043) (22113 24050) (22114 24053) (22115 24075) (22116 24090) (22117 
+24089) (22118 24081) (22119 24091) (22120 24118) (22121 24119) (22122 24132) (22123 24131) (22124 
+24128) (22125 24142) (22126 24151) (22127 24148) (22128 24159) (22129 24162) (22130 24164) (22131 
+24135) (22132 24181) (22133 24182) (22134 24186) (22135 40636) (22136 24191) (22137 24224) (22138 
+24257) (22139 24258) (22140 24264) (22141 24272) (22142 24271) (22305 24278) (22306 24291) (22307 
+24285) (22308 24282) (22309 24283) (22310 24290) (22311 24289) (22312 24296) (22313 24297) (22314 
+24300) (22315 24305) (22316 24307) (22317 24304) (22318 24308) (22319 24312) (22320 24318) (22321 
+24323) (22322 24329) (22323 24413) (22324 24412) (22325 24331) (22326 24337) (22327 24342) (22328 
+24361) (22329 24365) (22330 24376) (22331 24385) (22332 24392) (22333 24396) (22334 24398) (22335 
+24367) (22336 24401) (22337 24406) (22338 24407) (22339 24409) (22340 24417) (22341 24429) (22342 
+24435) (22343 24439) (22344 24451) (22345 24450) (22346 24447) (22347 24458) (22348 24456) (22349 
+24465) (22350 24455) (22351 24478) (22352 24473) (22353 24472) (22354 24480) (22355 24488) (22356 
+24493) (22357 24508) (22358 24534) (22359 24571) (22360 24548) (22361 24568) (22362 24561) (22363 
+24541) (22364 24755) (22365 24575) (22366 24609) (22367 24672) (22368 24601) (22369 24592) (22370 
+24617) (22371 24590) (22372 24625) (22373 24603) (22374 24597) (22375 24619) (22376 24614) (22377 
+24591) (22378 24634) (22379 24666) (22380 24641) (22381 24682) (22382 24695) (22383 24671) (22384 
+24650) (22385 24646) (22386 24653) (22387 24675) (22388 24643) (22389 24676) (22390 24642) (22391 
+24684) (22392 24683) (22393 24665) (22394 24705) (22395 24717) (22396 24807) (22397 24707) (22398 
+24730) (22561 24708) (22562 24731) (22563 24726) (22564 24727) (22565 24722) (22566 24743) (22567 
+24715) (22568 24801) (22569 24760) (22570 24800) (22571 24787) (22572 24756) (22573 24560) (22574 
+24765) (22575 24774) (22576 24757) (22577 24792) (22578 24909) (22579 24853) (22580 24838) (22581 
+24822) (22582 24823) (22583 24832) (22584 24820) (22585 24826) (22586 24835) (22587 24865) (22588 
+24827) (22589 24817) (22590 24845) (22591 24846) (22592 24903) (22593 24894) (22594 24872) (22595 
+24871) (22596 24906) (22597 24895) (22598 24892) (22599 24876) (22600 24884) (22601 24893) (22602 
+24898) (22603 24900) (22604 24947) (22605 24951) (22606 24920) (22607 24921) (22608 24922) (22609 
+24939) (22610 24948) (22611 24943) (22612 24933) (22613 24945) (22614 24927) (22615 24925) (22616 
+24915) (22617 24949) (22618 24985) (22619 24982) (22620 24967) (22621 25004) (22622 24980) (22623 
+24986) (22624 24970) (22625 24977) (22626 25003) (22627 25006) (22628 25036) (22629 25034) (22630 
+25033) (22631 25079) (22632 25032) (22633 25027) (22634 25030) (22635 25018) (22636 25035) (22637 
+32633) (22638 25037) (22639 25062) (22640 25059) (22641 25078) (22642 25082) (22643 25076) (22644 
+25087) (22645 25085) (22646 25084) (22647 25086) (22648 25088) (22649 25096) (22650 25097) (22651 
+25101) (22652 25100) (22653 25108) (22654 25115) (22817 25118) (22818 25121) (22819 25130) (22820 
+25134) (22821 25136) (22822 25138) (22823 25139) (22824 25153) (22825 25166) (22826 25182) (22827 
+25187) (22828 25179) (22829 25184) (22830 25192) (22831 25212) (22832 25218) (22833 25225) (22834 
+25214) (22835 25234) (22836 25235) (22837 25238) (22838 25300) (22839 25219) (22840 25236) (22841 
+25303) (22842 25297) (22843 25275) (22844 25295) (22845 25343) (22846 25286) (22847 25812) (22848 
+25288) (22849 25308) (22850 25292) (22851 25290) (22852 25282) (22853 25287) (22854 25243) (22855 
+25289) (22856 25356) (22857 25326) (22858 25329) (22859 25383) (22860 25346) (22861 25352) (22862 
+25327) (22863 25333) (22864 25424) (22865 25406) (22866 25421) (22867 25628) (22868 25423) (22869 
+25494) (22870 25486) (22871 25472) (22872 25515) (22873 25462) (22874 25507) (22875 25487) (22876 
+25481) (22877 25503) (22878 25525) (22879 25451) (22880 25449) (22881 25534) (22882 25577) (22883 
+25536) (22884 25542) (22885 25571) (22886 25545) (22887 25554) (22888 25590) (22889 25540) (22890 
+25622) (22891 25652) (22892 25606) (22893 25619) (22894 25638) (22895 25654) (22896 25885) (22897 
+25623) (22898 25640) (22899 25615) (22900 25703) (22901 25711) (22902 25718) (22903 25678) (22904 
+25898) (22905 25749) (22906 25747) (22907 25765) (22908 25769) (22909 25736) (22910 25788) (23073 
+25818) (23074 25810) (23075 25797) (23076 25799) (23077 25787) (23078 25816) (23079 25794) (23080 
+25841) (23081 25831) (23082 33289) (23083 25824) (23084 25825) (23085 25260) (23086 25827) (23087 
+25839) (23088 25900) (23089 25846) (23090 25844) (23091 25842) (23092 25850) (23093 25856) (23094 
+25853) (23095 25880) (23096 25884) (23097 25861) (23098 25892) (23099 25891) (23100 25899) (23101 
+25908) (23102 25909) (23103 25911) (23104 25910) (23105 25912) (23106 30027) (23107 25928) (23108 
+25942) (23109 25941) (23110 25933) (23111 25944) (23112 25950) (23113 25949) (23114 25970) (23115 
+25976) (23116 25986) (23117 25987) (23118 35722) (23119 26011) (23120 26015) (23121 26027) (23122 
+26039) (23123 26051) (23124 26054) (23125 26049) (23126 26052) (23127 26060) (23128 26066) (23129 
+26075) (23130 26073) (23131 26080) (23132 26081) (23133 26097) (23134 26482) (23135 26122) (23136 
+26115) (23137 26107) (23138 26483) (23139 26165) (23140 26166) (23141 26164) (23142 26140) (23143 
+26191) (23144 26180) (23145 26185) (23146 26177) (23147 26206) (23148 26205) (23149 26212) (23150 
+26215) (23151 26216) (23152 26207) (23153 26210) (23154 26224) (23155 26243) (23156 26248) (23157 
+26254) (23158 26249) (23159 26244) (23160 26264) (23161 26269) (23162 26305) (23163 26297) (23164 
+26313) (23165 26302) (23166 26300) (23329 26308) (23330 26296) (23331 26326) (23332 26330) (23333 
+26336) (23334 26175) (23335 26342) (23336 26345) (23337 26352) (23338 26357) (23339 26359) (23340 
+26383) (23341 26390) (23342 26398) (23343 26406) (23344 26407) (23345 38712) (23346 26414) (23347 
+26431) (23348 26422) (23349 26433) (23350 26424) (23351 26423) (23352 26438) (23353 26462) (23354 
+26464) (23355 26457) (23356 26467) (23357 26468) (23358 26505) (23359 26480) (23360 26537) (23361 
+26492) (23362 26474) (23363 26508) (23364 26507) (23365 26534) (23366 26529) (23367 26501) (23368 
+26551) (23369 26607) (23370 26548) (23371 26604) (23372 26547) (23373 26601) (23374 26552) (23375 
+26596) (23376 26590) (23377 26589) (23378 26594) (23379 26606) (23380 26553) (23381 26574) (23382 
+26566) (23383 26599) (23384 27292) (23385 26654) (23386 26694) (23387 26665) (23388 26688) (23389 
+26701) (23390 26674) (23391 26702) (23392 26803) (23393 26667) (23394 26713) (23395 26723) (23396 
+26743) (23397 26751) (23398 26783) (23399 26767) (23400 26797) (23401 26772) (23402 26781) (23403 
+26779) (23404 26755) (23405 27310) (23406 26809) (23407 26740) (23408 26805) (23409 26784) (23410 
+26810) (23411 26895) (23412 26765) (23413 26750) (23414 26881) (23415 26826) (23416 26888) (23417 
+26840) (23418 26914) (23419 26918) (23420 26849) (23421 26892) (23422 26829) (23585 26836) (23586 
+26855) (23587 26837) (23588 26934) (23589 26898) (23590 26884) (23591 26839) (23592 26851) (23593 
+26917) (23594 26873) (23595 26848) (23596 26863) (23597 26920) (23598 26922) (23599 26906) (23600 
+26915) (23601 26913) (23602 26822) (23603 27001) (23604 26999) (23605 26972) (23606 27000) (23607 
+26987) (23608 26964) (23609 27006) (23610 26990) (23611 26937) (23612 26996) (23613 26941) (23614 
+26969) (23615 26928) (23616 26977) (23617 26974) (23618 26973) (23619 27009) (23620 26986) (23621 
+27058) (23622 27054) (23623 27088) (23624 27071) (23625 27073) (23626 27091) (23627 27070) (23628 
+27086) (23629 23528) (23630 27082) (23631 27101) (23632 27067) (23633 27075) (23634 27047) (23635 
+27182) (23636 27025) (23637 27040) (23638 27036) (23639 27029) (23640 27060) (23641 27102) (23642 
+27112) (23643 27138) (23644 27163) (23645 27135) (23646 27402) (23647 27129) (23648 27122) (23649 
+27111) (23650 27141) (23651 27057) (23652 27166) (23653 27117) (23654 27156) (23655 27115) (23656 
+27146) (23657 27154) (23658 27329) (23659 27171) (23660 27155) (23661 27204) (23662 27148) (23663 
+27250) (23664 27190) (23665 27256) (23666 27207) (23667 27234) (23668 27225) (23669 27238) (23670 
+27208) (23671 27192) (23672 27170) (23673 27280) (23674 27277) (23675 27296) (23676 27268) (23677 
+27298) (23678 27299) (23841 27287) (23842 34327) (23843 27323) (23844 27331) (23845 27330) (23846 
+27320) (23847 27315) (23848 27308) (23849 27358) (23850 27345) (23851 27359) (23852 27306) (23853 
+27354) (23854 27370) (23855 27387) (23856 27397) (23857 34326) (23858 27386) (23859 27410) (23860 
+27414) (23861 39729) (23862 27423) (23863 27448) (23864 27447) (23865 30428) (23866 27449) (23867 
+39150) (23868 27463) (23869 27459) (23870 27465) (23871 27472) (23872 27481) (23873 27476) (23874 
+27483) (23875 27487) (23876 27489) (23877 27512) (23878 27513) (23879 27519) (23880 27520) (23881 
+27524) (23882 27523) (23883 27533) (23884 27544) (23885 27541) (23886 27550) (23887 27556) (23888 
+27562) (23889 27563) (23890 27567) (23891 27570) (23892 27569) (23893 27571) (23894 27575) (23895 
+27580) (23896 27590) (23897 27595) (23898 27603) (23899 27615) (23900 27628) (23901 27627) (23902 
+27635) (23903 27631) (23904 40638) (23905 27656) (23906 27667) (23907 27668) (23908 27675) (23909 
+27684) (23910 27683) (23911 27742) (23912 27733) (23913 27746) (23914 27754) (23915 27778) (23916 
+27789) (23917 27802) (23918 27777) (23919 27803) (23920 27774) (23921 27752) (23922 27763) (23923 
+27794) (23924 27792) (23925 27844) (23926 27889) (23927 27859) (23928 27837) (23929 27863) (23930 
+27845) (23931 27869) (23932 27822) (23933 27825) (23934 27838) (24097 27834) (24098 27867) (24099 
+27887) (24100 27865) (24101 27882) (24102 27935) (24103 34893) (24104 27958) (24105 27947) (24106 
+27965) (24107 27960) (24108 27929) (24109 27957) (24110 27955) (24111 27922) (24112 27916) (24113 
+28003) (24114 28051) (24115 28004) (24116 27994) (24117 28025) (24118 27993) (24119 28046) (24120 
+28053) (24121 28644) (24122 28037) (24123 28153) (24124 28181) (24125 28170) (24126 28085) (24127 
+28103) (24128 28134) (24129 28088) (24130 28102) (24131 28140) (24132 28126) (24133 28108) (24134 
+28136) (24135 28114) (24136 28101) (24137 28154) (24138 28121) (24139 28132) (24140 28117) (24141 
+28138) (24142 28142) (24143 28205) (24144 28270) (24145 28206) (24146 28185) (24147 28274) (24148 
+28255) (24149 28222) (24150 28195) (24151 28267) (24152 28203) (24153 28278) (24154 28237) (24155 
+28191) (24156 28227) (24157 28218) (24158 28238) (24159 28196) (24160 28415) (24161 28189) (24162 
+28216) (24163 28290) (24164 28330) (24165 28312) (24166 28361) (24167 28343) (24168 28371) (24169 
+28349) (24170 28335) (24171 28356) (24172 28338) (24173 28372) (24174 28373) (24175 28303) (24176 
+28325) (24177 28354) (24178 28319) (24179 28481) (24180 28433) (24181 28748) (24182 28396) (24183 
+28408) (24184 28414) (24185 28479) (24186 28402) (24187 28465) (24188 28399) (24189 28466) (24190 
+28364) (24353 28478) (24354 28435) (24355 28407) (24356 28550) (24357 28538) (24358 28536) (24359 
+28545) (24360 28544) (24361 28527) (24362 28507) (24363 28659) (24364 28525) (24365 28546) (24366 
+28540) (24367 28504) (24368 28558) (24369 28561) (24370 28610) (24371 28518) (24372 28595) (24373 
+28579) (24374 28577) (24375 28580) (24376 28601) (24377 28614) (24378 28586) (24379 28639) (24380 
+28629) (24381 28652) (24382 28628) (24383 28632) (24384 28657) (24385 28654) (24386 28635) (24387 
+28681) (24388 28683) (24389 28666) (24390 28689) (24391 28673) (24392 28687) (24393 28670) (24394 
+28699) (24395 28698) (24396 28532) (24397 28701) (24398 28696) (24399 28703) (24400 28720) (24401 
+28734) (24402 28722) (24403 28753) (24404 28771) (24405 28825) (24406 28818) (24407 28847) (24408 
+28913) (24409 28844) (24410 28856) (24411 28851) (24412 28846) (24413 28895) (24414 28875) (24415 
+28893) (24416 28889) (24417 28937) (24418 28925) (24419 28956) (24420 28953) (24421 29029) (24422 
+29013) (24423 29064) (24424 29030) (24425 29026) (24426 29004) (24427 29014) (24428 29036) (24429 
+29071) (24430 29179) (24431 29060) (24432 29077) (24433 29096) (24434 29100) (24435 29143) (24436 
+29113) (24437 29118) (24438 29138) (24439 29129) (24440 29140) (24441 29134) (24442 29152) (24443 
+29164) (24444 29159) (24445 29173) (24446 29180) (24609 29177) (24610 29183) (24611 29197) (24612 
+29200) (24613 29211) (24614 29224) (24615 29229) (24616 29228) (24617 29232) (24618 29234) (24619 
+29243) (24620 29244) (24621 29247) (24622 29248) (24623 29254) (24624 29259) (24625 29272) (24626 
+29300) (24627 29310) (24628 29314) (24629 29313) (24630 29319) (24631 29330) (24632 29334) (24633 
+29346) (24634 29351) (24635 29369) (24636 29362) (24637 29379) (24638 29382) (24639 29380) (24640 
+29390) (24641 29394) (24642 29410) (24643 29408) (24644 29409) (24645 29433) (24646 29431) (24647 
+20495) (24648 29463) (24649 29450) (24650 29468) (24651 29462) (24652 29469) (24653 29492) (24654 
+29487) (24655 29481) (24656 29477) (24657 29502) (24658 29518) (24659 29519) (24660 40664) (24661 
+29527) (24662 29546) (24663 29544) (24664 29552) (24665 29560) (24666 29557) (24667 29563) (24668 
+29562) (24669 29640) (24670 29619) (24671 29646) (24672 29627) (24673 29632) (24674 29669) (24675 
+29678) (24676 29662) (24677 29858) (24678 29701) (24679 29807) (24680 29733) (24681 29688) (24682 
+29746) (24683 29754) (24684 29781) (24685 29759) (24686 29791) (24687 29785) (24688 29761) (24689 
+29788) (24690 29801) (24691 29808) (24692 29795) (24693 29802) (24694 29814) (24695 29822) (24696 
+29835) (24697 29854) (24698 29863) (24699 29898) (24700 29903) (24701 29908) (24702 29681) (24865 
+29920) (24866 29923) (24867 29927) (24868 29929) (24869 29934) (24870 29938) (24871 29936) (24872 
+29937) (24873 29944) (24874 29943) (24875 29956) (24876 29955) (24877 29957) (24878 29964) (24879 
+29966) (24880 29965) (24881 29973) (24882 29971) (24883 29982) (24884 29990) (24885 29996) (24886 
+30012) (24887 30020) (24888 30029) (24889 30026) (24890 30025) (24891 30043) (24892 30022) (24893 
+30042) (24894 30057) (24895 30052) (24896 30055) (24897 30059) (24898 30061) (24899 30072) (24900 
+30070) (24901 30086) (24902 30087) (24903 30068) (24904 30090) (24905 30089) (24906 30082) (24907 
+30100) (24908 30106) (24909 30109) (24910 30117) (24911 30115) (24912 30146) (24913 30131) (24914 
+30147) (24915 30133) (24916 30141) (24917 30136) (24918 30140) (24919 30129) (24920 30157) (24921 
+30154) (24922 30162) (24923 30169) (24924 30179) (24925 30174) (24926 30206) (24927 30207) (24928 
+30204) (24929 30209) (24930 30192) (24931 30202) (24932 30194) (24933 30195) (24934 30219) (24935 
+30221) (24936 30217) (24937 30239) (24938 30247) (24939 30240) (24940 30241) (24941 30242) (24942 
+30244) (24943 30260) (24944 30256) (24945 30267) (24946 30279) (24947 30280) (24948 30278) (24949 
+30300) (24950 30296) (24951 30305) (24952 30306) (24953 30312) (24954 30313) (24955 30314) (24956 
+30311) (24957 30316) (24958 30320) (25121 30322) (25122 30326) (25123 30328) (25124 30332) (25125 
+30336) (25126 30339) (25127 30344) (25128 30347) (25129 30350) (25130 30358) (25131 30355) (25132 
+30361) (25133 30362) (25134 30384) (25135 30388) (25136 30392) (25137 30393) (25138 30394) (25139 
+30402) (25140 30413) (25141 30422) (25142 30418) (25143 30430) (25144 30433) (25145 30437) (25146 
+30439) (25147 30442) (25148 34351) (25149 30459) (25150 30472) (25151 30471) (25152 30468) (25153 
+30505) (25154 30500) (25155 30494) (25156 30501) (25157 30502) (25158 30491) (25159 30519) (25160 
+30520) (25161 30535) (25162 30554) (25163 30568) (25164 30571) (25165 30555) (25166 30565) (25167 
+30591) (25168 30590) (25169 30585) (25170 30606) (25171 30603) (25172 30609) (25173 30624) (25174 
+30622) (25175 30640) (25176 30646) (25177 30649) (25178 30655) (25179 30652) (25180 30653) (25181 
+30651) (25182 30663) (25183 30669) (25184 30679) (25185 30682) (25186 30684) (25187 30691) (25188 
+30702) (25189 30716) (25190 30732) (25191 30738) (25192 31014) (25193 30752) (25194 31018) (25195 
+30789) (25196 30862) (25197 30836) (25198 30854) (25199 30844) (25200 30874) (25201 30860) (25202 
+30883) (25203 30901) (25204 30890) (25205 30895) (25206 30929) (25207 30918) (25208 30923) (25209 
+30932) (25210 30910) (25211 30908) (25212 30917) (25213 30922) (25214 30956) (25377 30951) (25378 
+30938) (25379 30973) (25380 30964) (25381 30983) (25382 30994) (25383 30993) (25384 31001) (25385 
+31020) (25386 31019) (25387 31040) (25388 31072) (25389 31063) (25390 31071) (25391 31066) (25392 
+31061) (25393 31059) (25394 31098) (25395 31103) (25396 31114) (25397 31133) (25398 31143) (25399 
+40779) (25400 31146) (25401 31150) (25402 31155) (25403 31161) (25404 31162) (25405 31177) (25406 
+31189) (25407 31207) (25408 31212) (25409 31201) (25410 31203) (25411 31240) (25412 31245) (25413 
+31256) (25414 31257) (25415 31264) (25416 31263) (25417 31104) (25418 31281) (25419 31291) (25420 
+31294) (25421 31287) (25422 31299) (25423 31319) (25424 31305) (25425 31329) (25426 31330) (25427 
+31337) (25428 40861) (25429 31344) (25430 31353) (25431 31357) (25432 31368) (25433 31383) (25434 
+31381) (25435 31384) (25436 31382) (25437 31401) (25438 31432) (25439 31408) (25440 31414) (25441 
+31429) (25442 31428) (25443 31423) (25444 36995) (25445 31431) (25446 31434) (25447 31437) (25448 
+31439) (25449 31445) (25450 31443) (25451 31449) (25452 31450) (25453 31453) (25454 31457) (25455 
+31458) (25456 31462) (25457 31469) (25458 31472) (25459 31490) (25460 31503) (25461 31498) (25462 
+31494) (25463 31539) (25464 31512) (25465 31513) (25466 31518) (25467 31541) (25468 31528) (25469 
+31542) (25470 31568) (25633 31610) (25634 31492) (25635 31565) (25636 31499) (25637 31564) (25638 
+31557) (25639 31605) (25640 31589) (25641 31604) (25642 31591) (25643 31600) (25644 31601) (25645 
+31596) (25646 31598) (25647 31645) (25648 31640) (25649 31647) (25650 31629) (25651 31644) (25652 
+31642) (25653 31627) (25654 31634) (25655 31631) (25656 31581) (25657 31641) (25658 31691) (25659 
+31681) (25660 31692) (25661 31695) (25662 31668) (25663 31686) (25664 31709) (25665 31721) (25666 
+31761) (25667 31764) (25668 31718) (25669 31717) (25670 31840) (25671 31744) (25672 31751) (25673 
+31763) (25674 31731) (25675 31735) (25676 31767) (25677 31757) (25678 31734) (25679 31779) (25680 
+31783) (25681 31786) (25682 31775) (25683 31799) (25684 31787) (25685 31805) (25686 31820) (25687 
+31811) (25688 31828) (25689 31823) (25690 31808) (25691 31824) (25692 31832) (25693 31839) (25694 
+31844) (25695 31830) (25696 31845) (25697 31852) (25698 31861) (25699 31875) (25700 31888) (25701 
+31908) (25702 31917) (25703 31906) (25704 31915) (25705 31905) (25706 31912) (25707 31923) (25708 
+31922) (25709 31921) (25710 31918) (25711 31929) (25712 31933) (25713 31936) (25714 31941) (25715 
+31938) (25716 31960) (25717 31954) (25718 31964) (25719 31970) (25720 39739) (25721 31983) (25722 
+31986) (25723 31988) (25724 31990) (25725 31994) (25726 32006) (25889 32002) (25890 32028) (25891 
+32021) (25892 32010) (25893 32069) (25894 32075) (25895 32046) (25896 32050) (25897 32063) (25898 
+32053) (25899 32070) (25900 32115) (25901 32086) (25902 32078) (25903 32114) (25904 32104) (25905 
+32110) (25906 32079) (25907 32099) (25908 32147) (25909 32137) (25910 32091) (25911 32143) (25912 
+32125) (25913 32155) (25914 32186) (25915 32174) (25916 32163) (25917 32181) (25918 32199) (25919 
+32189) (25920 32171) (25921 32317) (25922 32162) (25923 32175) (25924 32220) (25925 32184) (25926 
+32159) (25927 32176) (25928 32216) (25929 32221) (25930 32228) (25931 32222) (25932 32251) (25933 
+32242) (25934 32225) (25935 32261) (25936 32266) (25937 32291) (25938 32289) (25939 32274) (25940 
+32305) (25941 32287) (25942 32265) (25943 32267) (25944 32290) (25945 32326) (25946 32358) (25947 
+32315) (25948 32309) (25949 32313) (25950 32323) (25951 32311) (25952 32306) (25953 32314) (25954 
+32359) (25955 32349) (25956 32342) (25957 32350) (25958 32345) (25959 32346) (25960 32377) (25961 
+32362) (25962 32361) (25963 32380) (25964 32379) (25965 32387) (25966 32213) (25967 32381) (25968 
+36782) (25969 32383) (25970 32392) (25971 32393) (25972 32396) (25973 32402) (25974 32400) (25975 
+32403) (25976 32404) (25977 32406) (25978 32398) (25979 32411) (25980 32412) (25981 32568) (25982 
+32570) (26145 32581) (26146 32588) (26147 32589) (26148 32590) (26149 32592) (26150 32593) (26151 
+32597) (26152 32596) (26153 32600) (26154 32607) (26155 32608) (26156 32616) (26157 32617) (26158 
+32615) (26159 32632) (26160 32642) (26161 32646) (26162 32643) (26163 32648) (26164 32647) (26165 
+32652) (26166 32660) (26167 32670) (26168 32669) (26169 32666) (26170 32675) (26171 32687) (26172 
+32690) (26173 32697) (26174 32686) (26175 32694) (26176 32696) (26177 35697) (26178 32709) (26179 
+32710) (26180 32714) (26181 32725) (26182 32724) (26183 32737) (26184 32742) (26185 32745) (26186 
+32755) (26187 32761) (26188 39132) (26189 32774) (26190 32772) (26191 32779) (26192 32786) (26193 
+32792) (26194 32793) (26195 32796) (26196 32801) (26197 32808) (26198 32831) (26199 32827) (26200 
+32842) (26201 32838) (26202 32850) (26203 32856) (26204 32858) (26205 32863) (26206 32866) (26207 
+32872) (26208 32883) (26209 32882) (26210 32880) (26211 32886) (26212 32889) (26213 32893) (26214 
+32895) (26215 32900) (26216 32902) (26217 32901) (26218 32923) (26219 32915) (26220 32922) (26221 
+32941) (26222 20880) (26223 32940) (26224 32987) (26225 32997) (26226 32985) (26227 32989) (26228 
+32964) (26229 32986) (26230 32982) (26231 33033) (26232 33007) (26233 33009) (26234 33051) (26235 
+33065) (26236 33059) (26237 33071) (26238 33099) (26401 38539) (26402 33094) (26403 33086) (26404 
+33107) (26405 33105) (26406 33020) (26407 33137) (26408 33134) (26409 33125) (26410 33126) (26411 
+33140) (26412 33155) (26413 33160) (26414 33162) (26415 33152) (26416 33154) (26417 33184) (26418 
+33173) (26419 33188) (26420 33187) (26421 33119) (26422 33171) (26423 33193) (26424 33200) (26425 
+33205) (26426 33214) (26427 33208) (26428 33213) (26429 33216) (26430 33218) (26431 33210) (26432 
+33225) (26433 33229) (26434 33233) (26435 33241) (26436 33240) (26437 33224) (26438 33242) (26439 
+33247) (26440 33248) (26441 33255) (26442 33274) (26443 33275) (26444 33278) (26445 33281) (26446 
+33282) (26447 33285) (26448 33287) (26449 33290) (26450 33293) (26451 33296) (26452 33302) (26453 
+33321) (26454 33323) (26455 33336) (26456 33331) (26457 33344) (26458 33369) (26459 33368) (26460 
+33373) (26461 33370) (26462 33375) (26463 33380) (26464 33378) (26465 33384) (26466 33386) (26467 
+33387) (26468 33326) (26469 33393) (26470 33399) (26471 33400) (26472 33406) (26473 33421) (26474 
+33426) (26475 33451) (26476 33439) (26477 33467) (26478 33452) (26479 33505) (26480 33507) (26481 
+33503) (26482 33490) (26483 33524) (26484 33523) (26485 33530) (26486 33683) (26487 33539) (26488 
+33531) (26489 33529) (26490 33502) (26491 33542) (26492 33500) (26493 33545) (26494 33497) (26657 
+33589) (26658 33588) (26659 33558) (26660 33586) (26661 33585) (26662 33600) (26663 33593) (26664 
+33616) (26665 33605) (26666 33583) (26667 33579) (26668 33559) (26669 33560) (26670 33669) (26671 
+33690) (26672 33706) (26673 33695) (26674 33698) (26675 33686) (26676 33571) (26677 33678) (26678 
+33671) (26679 33674) (26680 33660) (26681 33717) (26682 33651) (26683 33653) (26684 33696) (26685 
+33673) (26686 33704) (26687 33780) (26688 33811) (26689 33771) (26690 33742) (26691 33789) (26692 
+33795) (26693 33752) (26694 33803) (26695 33729) (26696 33783) (26697 33799) (26698 33760) (26699 
+33778) (26700 33805) (26701 33826) (26702 33824) (26703 33725) (26704 33848) (26705 34054) (26706 
+33787) (26707 33901) (26708 33834) (26709 33852) (26710 34138) (26711 33924) (26712 33911) (26713 
+33899) (26714 33965) (26715 33902) (26716 33922) (26717 33897) (26718 33862) (26719 33836) (26720 
+33903) (26721 33913) (26722 33845) (26723 33994) (26724 33890) (26725 33977) (26726 33983) (26727 
+33951) (26728 34009) (26729 33997) (26730 33979) (26731 34010) (26732 34000) (26733 33985) (26734 
+33990) (26735 34006) (26736 33953) (26737 34081) (26738 34047) (26739 34036) (26740 34071) (26741 
+34072) (26742 34092) (26743 34079) (26744 34069) (26745 34068) (26746 34044) (26747 34112) (26748 
+34147) (26749 34136) (26750 34120) (26913 34113) (26914 34306) (26915 34123) (26916 34133) (26917 
+34176) (26918 34212) (26919 34184) (26920 34193) (26921 34186) (26922 34216) (26923 34157) (26924 
+34196) (26925 34203) (26926 34282) (26927 34183) (26928 34204) (26929 34167) (26930 34174) (26931 
+34192) (26932 34249) (26933 34234) (26934 34255) (26935 34233) (26936 34256) (26937 34261) (26938 
+34269) (26939 34277) (26940 34268) (26941 34297) (26942 34314) (26943 34323) (26944 34315) (26945 
+34302) (26946 34298) (26947 34310) (26948 34338) (26949 34330) (26950 34352) (26951 34367) (26952 
+34381) (26953 20053) (26954 34388) (26955 34399) (26956 34407) (26957 34417) (26958 34451) (26959 
+34467) (26960 34473) (26961 34474) (26962 34443) (26963 34444) (26964 34486) (26965 34479) (26966 
+34500) (26967 34502) (26968 34480) (26969 34505) (26970 34851) (26971 34475) (26972 34516) (26973 
+34526) (26974 34537) (26975 34540) (26976 34527) (26977 34523) (26978 34543) (26979 34578) (26980 
+34566) (26981 34568) (26982 34560) (26983 34563) (26984 34555) (26985 34577) (26986 34569) (26987 
+34573) (26988 34553) (26989 34570) (26990 34612) (26991 34623) (26992 34615) (26993 34619) (26994 
+34597) (26995 34601) (26996 34586) (26997 34656) (26998 34655) (26999 34680) (27000 34636) (27001 
+34638) (27002 34676) (27003 34647) (27004 34664) (27005 34670) (27006 34649) (27169 34643) (27170 
+34659) (27171 34666) (27172 34821) (27173 34722) (27174 34719) (27175 34690) (27176 34735) (27177 
+34763) (27178 34749) (27179 34752) (27180 34768) (27181 38614) (27182 34731) (27183 34756) (27184 
+34739) (27185 34759) (27186 34758) (27187 34747) (27188 34799) (27189 34802) (27190 34784) (27191 
+34831) (27192 34829) (27193 34814) (27194 34806) (27195 34807) (27196 34830) (27197 34770) (27198 
+34833) (27199 34838) (27200 34837) (27201 34850) (27202 34849) (27203 34865) (27204 34870) (27205 
+34873) (27206 34855) (27207 34875) (27208 34884) (27209 34882) (27210 34898) (27211 34905) (27212 
+34910) (27213 34914) (27214 34923) (27215 34945) (27216 34942) (27217 34974) (27218 34933) (27219 
+34941) (27220 34997) (27221 34930) (27222 34946) (27223 34967) (27224 34962) (27225 34990) (27226 
+34969) (27227 34978) (27228 34957) (27229 34980) (27230 34992) (27231 35007) (27232 34993) (27233 
+35011) (27234 35012) (27235 35028) (27236 35032) (27237 35033) (27238 35037) (27239 35065) (27240 
+35074) (27241 35068) (27242 35060) (27243 35048) (27244 35058) (27245 35076) (27246 35084) (27247 
+35082) (27248 35091) (27249 35139) (27250 35102) (27251 35109) (27252 35114) (27253 35115) (27254 
+35137) (27255 35140) (27256 35131) (27257 35126) (27258 35128) (27259 35148) (27260 35101) (27261 
+35168) (27262 35166) (27425 35174) (27426 35172) (27427 35181) (27428 35178) (27429 35183) (27430 
+35188) (27431 35191) (27432 35198) (27433 35203) (27434 35208) (27435 35210) (27436 35219) (27437 
+35224) (27438 35233) (27439 35241) (27440 35238) (27441 35244) (27442 35247) (27443 35250) (27444 
+35258) (27445 35261) (27446 35263) (27447 35264) (27448 35290) (27449 35292) (27450 35293) (27451 
+35303) (27452 35316) (27453 35320) (27454 35331) (27455 35350) (27456 35344) (27457 35340) (27458 
+35355) (27459 35357) (27460 35365) (27461 35382) (27462 35393) (27463 35419) (27464 35410) (27465 
+35398) (27466 35400) (27467 35452) (27468 35437) (27469 35436) (27470 35426) (27471 35461) (27472 
+35458) (27473 35460) (27474 35496) (27475 35489) (27476 35473) (27477 35493) (27478 35494) (27479 
+35482) (27480 35491) (27481 35524) (27482 35533) (27483 35522) (27484 35546) (27485 35563) (27486 
+35571) (27487 35559) (27488 35556) (27489 35569) (27490 35604) (27491 35552) (27492 35554) (27493 
+35575) (27494 35550) (27495 35547) (27496 35596) (27497 35591) (27498 35610) (27499 35553) (27500 
+35606) (27501 35600) (27502 35607) (27503 35616) (27504 35635) (27505 38827) (27506 35622) (27507 
+35627) (27508 35646) (27509 35624) (27510 35649) (27511 35660) (27512 35663) (27513 35662) (27514 
+35657) (27515 35670) (27516 35675) (27517 35674) (27518 35691) (27681 35679) (27682 35692) (27683 
+35695) (27684 35700) (27685 35709) (27686 35712) (27687 35724) (27688 35726) (27689 35730) (27690 
+35731) (27691 35734) (27692 35737) (27693 35738) (27694 35898) (27695 35905) (27696 35903) (27697 
+35912) (27698 35916) (27699 35918) (27700 35920) (27701 35925) (27702 35938) (27703 35948) (27704 
+35960) (27705 35962) (27706 35970) (27707 35977) (27708 35973) (27709 35978) (27710 35981) (27711 
+35982) (27712 35988) (27713 35964) (27714 35992) (27715 25117) (27716 36013) (27717 36010) (27718 
+36029) (27719 36018) (27720 36019) (27721 36014) (27722 36022) (27723 36040) (27724 36033) (27725 
+36068) (27726 36067) (27727 36058) (27728 36093) (27729 36090) (27730 36091) (27731 36100) (27732 
+36101) (27733 36106) (27734 36103) (27735 36111) (27736 36109) (27737 36112) (27738 40782) (27739 
+36115) (27740 36045) (27741 36116) (27742 36118) (27743 36199) (27744 36205) (27745 36209) (27746 
+36211) (27747 36225) (27748 36249) (27749 36290) (27750 36286) (27751 36282) (27752 36303) (27753 
+36314) (27754 36310) (27755 36300) (27756 36315) (27757 36299) (27758 36330) (27759 36331) (27760 
+36319) (27761 36323) (27762 36348) (27763 36360) (27764 36361) (27765 36351) (27766 36381) (27767 
+36382) (27768 36368) (27769 36383) (27770 36418) (27771 36405) (27772 36400) (27773 36404) (27774 
+36426) (27937 36423) (27938 36425) (27939 36428) (27940 36432) (27941 36424) (27942 36441) (27943 
+36452) (27944 36448) (27945 36394) (27946 36451) (27947 36437) (27948 36470) (27949 36466) (27950 
+36476) (27951 36481) (27952 36487) (27953 36485) (27954 36484) (27955 36491) (27956 36490) (27957 
+36499) (27958 36497) (27959 36500) (27960 36505) (27961 36522) (27962 36513) (27963 36524) (27964 
+36528) (27965 36550) (27966 36529) (27967 36542) (27968 36549) (27969 36552) (27970 36555) (27971 
+36571) (27972 36579) (27973 36604) (27974 36603) (27975 36587) (27976 36606) (27977 36618) (27978 
+36613) (27979 36629) (27980 36626) (27981 36633) (27982 36627) (27983 36636) (27984 36639) (27985 
+36635) (27986 36620) (27987 36646) (27988 36659) (27989 36667) (27990 36665) (27991 36677) (27992 
+36674) (27993 36670) (27994 36684) (27995 36681) (27996 36678) (27997 36686) (27998 36695) (27999 
+36700) (28000 36706) (28001 36707) (28002 36708) (28003 36764) (28004 36767) (28005 36771) (28006 
+36781) (28007 36783) (28008 36791) (28009 36826) (28010 36837) (28011 36834) (28012 36842) (28013 
+36847) (28014 36999) (28015 36852) (28016 36869) (28017 36857) (28018 36858) (28019 36881) (28020 
+36885) (28021 36897) (28022 36877) (28023 36894) (28024 36886) (28025 36875) (28026 36903) (28027 
+36918) (28028 36917) (28029 36921) (28030 36856) (28193 36943) (28194 36944) (28195 36945) (28196 
+36946) (28197 36878) (28198 36937) (28199 36926) (28200 36950) (28201 36952) (28202 36958) (28203 
+36968) (28204 36975) (28205 36982) (28206 38568) (28207 36978) (28208 36994) (28209 36989) (28210 
+36993) (28211 36992) (28212 37002) (28213 37001) (28214 37007) (28215 37032) (28216 37039) (28217 
+37041) (28218 37045) (28219 37090) (28220 37092) (28221 25160) (28222 37083) (28223 37122) (28224 
+37138) (28225 37145) (28226 37170) (28227 37168) (28228 37194) (28229 37206) (28230 37208) (28231 
+37219) (28232 37221) (28233 37225) (28234 37235) (28235 37234) (28236 37259) (28237 37257) (28238 
+37250) (28239 37282) (28240 37291) (28241 37295) (28242 37290) (28243 37301) (28244 37300) (28245 
+37306) (28246 37312) (28247 37313) (28248 37321) (28249 37323) (28250 37328) (28251 37334) (28252 
+37343) (28253 37345) (28254 37339) (28255 37372) (28256 37365) (28257 37366) (28258 37406) (28259 
+37375) (28260 37396) (28261 37420) (28262 37397) (28263 37393) (28264 37470) (28265 37463) (28266 
+37445) (28267 37449) (28268 37476) (28269 37448) (28270 37525) (28271 37439) (28272 37451) (28273 
+37456) (28274 37532) (28275 37526) (28276 37523) (28277 37531) (28278 37466) (28279 37583) (28280 
+37561) (28281 37559) (28282 37609) (28283 37647) (28284 37626) (28285 37700) (28286 37678) (28449 
+37657) (28450 37666) (28451 37658) (28452 37667) (28453 37690) (28454 37685) (28455 37691) (28456 
+37724) (28457 37728) (28458 37756) (28459 37742) (28460 37718) (28461 37808) (28462 37804) (28463 
+37805) (28464 37780) (28465 37817) (28466 37846) (28467 37847) (28468 37864) (28469 37861) (28470 
+37848) (28471 37827) (28472 37853) (28473 37840) (28474 37832) (28475 37860) (28476 37914) (28477 
+37908) (28478 37907) (28479 37891) (28480 37895) (28481 37904) (28482 37942) (28483 37931) (28484 
+37941) (28485 37921) (28486 37946) (28487 37953) (28488 37970) (28489 37956) (28490 37979) (28491 
+37984) (28492 37986) (28493 37982) (28494 37994) (28495 37417) (28496 38000) (28497 38005) (28498 
+38007) (28499 38013) (28500 37978) (28501 38012) (28502 38014) (28503 38017) (28504 38015) (28505 
+38274) (28506 38279) (28507 38282) (28508 38292) (28509 38294) (28510 38296) (28511 38297) (28512 
+38304) (28513 38312) (28514 38311) (28515 38317) (28516 38332) (28517 38331) (28518 38329) (28519 
+38334) (28520 38346) (28521 28662) (28522 38339) (28523 38349) (28524 38348) (28525 38357) (28526 
+38356) (28527 38358) (28528 38364) (28529 38369) (28530 38373) (28531 38370) (28532 38433) (28533 
+38440) (28534 38446) (28535 38447) (28536 38466) (28537 38476) (28538 38479) (28539 38475) (28540 
+38519) (28541 38492) (28542 38494) (28705 38493) (28706 38495) (28707 38502) (28708 38514) (28709 
+38508) (28710 38541) (28711 38552) (28712 38549) (28713 38551) (28714 38570) (28715 38567) (28716 
+38577) (28717 38578) (28718 38576) (28719 38580) (28720 38582) (28721 38584) (28722 38585) (28723 
+38606) (28724 38603) (28725 38601) (28726 38605) (28727 35149) (28728 38620) (28729 38669) (28730 
+38613) (28731 38649) (28732 38660) (28733 38662) (28734 38664) (28735 38675) (28736 38670) (28737 
+38673) (28738 38671) (28739 38678) (28740 38681) (28741 38692) (28742 38698) (28743 38704) (28744 
+38713) (28745 38717) (28746 38718) (28747 38724) (28748 38726) (28749 38728) (28750 38722) (28751 
+38729) (28752 38748) (28753 38752) (28754 38756) (28755 38758) (28756 38760) (28757 21202) (28758 
+38763) (28759 38769) (28760 38777) (28761 38789) (28762 38780) (28763 38785) (28764 38778) (28765 
+38790) (28766 38795) (28767 38799) (28768 38800) (28769 38812) (28770 38824) (28771 38822) (28772 
+38819) (28773 38835) (28774 38836) (28775 38851) (28776 38854) (28777 38856) (28778 38859) (28779 
+38876) (28780 38893) (28781 40783) (28782 38898) (28783 31455) (28784 38902) (28785 38901) (28786 
+38927) (28787 38924) (28788 38968) (28789 38948) (28790 38945) (28791 38967) (28792 38973) (28793 
+38982) (28794 38991) (28795 38987) (28796 39019) (28797 39023) (28798 39024) (28961 39025) (28962 
+39028) (28963 39027) (28964 39082) (28965 39087) (28966 39089) (28967 39094) (28968 39108) (28969 
+39107) (28970 39110) (28971 39145) (28972 39147) (28973 39171) (28974 39177) (28975 39186) (28976 
+39188) (28977 39192) (28978 39201) (28979 39197) (28980 39198) (28981 39204) (28982 39200) (28983 
+39212) (28984 39214) (28985 39229) (28986 39230) (28987 39234) (28988 39241) (28989 39237) (28990 
+39248) (28991 39243) (28992 39249) (28993 39250) (28994 39244) (28995 39253) (28996 39319) (28997 
+39320) (28998 39333) (28999 39341) (29000 39342) (29001 39356) (29002 39391) (29003 39387) (29004 
+39389) (29005 39384) (29006 39377) (29007 39405) (29008 39406) (29009 39409) (29010 39410) (29011 
+39419) (29012 39416) (29013 39425) (29014 39439) (29015 39429) (29016 39394) (29017 39449) (29018 
+39467) (29019 39479) (29020 39493) (29021 39490) (29022 39488) (29023 39491) (29024 39486) (29025 
+39509) (29026 39501) (29027 39515) (29028 39511) (29029 39519) (29030 39522) (29031 39525) (29032 
+39524) (29033 39529) (29034 39531) (29035 39530) (29036 39597) (29037 39600) (29038 39612) (29039 
+39616) (29040 39631) (29041 39633) (29042 39635) (29043 39636) (29044 39646) (29045 39647) (29046 
+39650) (29047 39651) (29048 39654) (29049 39663) (29050 39659) (29051 39662) (29052 39668) (29053 
+39665) (29054 39671) (29217 39675) (29218 39686) (29219 39704) (29220 39706) (29221 39711) (29222 
+39714) (29223 39715) (29224 39717) (29225 39719) (29226 39720) (29227 39721) (29228 39722) (29229 
+39726) (29230 39727) (29231 39730) (29232 39748) (29233 39747) (29234 39759) (29235 39757) (29236 
+39758) (29237 39761) (29238 39768) (29239 39796) (29240 39827) (29241 39811) (29242 39825) (29243 
+39830) (29244 39831) (29245 39839) (29246 39840) (29247 39848) (29248 39860) (29249 39872) (29250 
+39882) (29251 39865) (29252 39878) (29253 39887) (29254 39889) (29255 39890) (29256 39907) (29257 
+39906) (29258 39908) (29259 39892) (29260 39905) (29261 39994) (29262 39922) (29263 39921) (29264 
+39920) (29265 39957) (29266 39956) (29267 39945) (29268 39955) (29269 39948) (29270 39942) (29271 
+39944) (29272 39954) (29273 39946) (29274 39940) (29275 39982) (29276 39963) (29277 39973) (29278 
+39972) (29279 39969) (29280 39984) (29281 40007) (29282 39986) (29283 40006) (29284 39998) (29285 
+40026) (29286 40032) (29287 40039) (29288 40054) (29289 40056) (29290 40167) (29291 40172) (29292 
+40176) (29293 40201) (29294 40200) (29295 40171) (29296 40195) (29297 40198) (29298 40234) (29299 
+40230) (29300 40367) (29301 40227) (29302 40223) (29303 40260) (29304 40213) (29305 40210) (29306 
+40257) (29307 40255) (29308 40254) (29309 40262) (29310 40264) (29473 40285) (29474 40286) (29475 
+40292) (29476 40273) (29477 40272) (29478 40281) (29479 40306) (29480 40329) (29481 40327) (29482 
+40363) (29483 40303) (29484 40314) (29485 40346) (29486 40356) (29487 40361) (29488 40370) (29489 
+40388) (29490 40385) (29491 40379) (29492 40376) (29493 40378) (29494 40390) (29495 40399) (29496 
+40386) (29497 40409) (29498 40403) (29499 40440) (29500 40422) (29501 40429) (29502 40431) (29503 
+40445) (29504 40474) (29505 40475) (29506 40478) (29507 40565) (29508 40569) (29509 40573) (29510 
+40577) (29511 40584) (29512 40587) (29513 40588) (29514 40594) (29515 40597) (29516 40593) (29517 
+40605) (29518 40613) (29519 40617) (29520 40632) (29521 40618) (29522 40621) (29523 38753) (29524 
+40652) (29525 40654) (29526 40655) (29527 40656) (29528 40660) (29529 40668) (29530 40670) (29531 
+40669) (29532 40672) (29533 40677) (29534 40680) (29535 40687) (29536 40692) (29537 40694) (29538 
+40695) (29539 40697) (29540 40699) (29541 40700) (29542 40701) (29543 40711) (29544 40712) (29545 
+30391) (29546 40725) (29547 40737) (29548 40748) (29549 40766) (29550 40778) (29551 40786) (29552 
+40788) (29553 40803) (29554 40799) (29555 40800) (29556 40801) (29557 40806) (29558 40807) (29559 
+40812) (29560 40810) (29561 40823) (29562 40818) (29563 40822) (29564 40853) (29565 40860) (29566 
+40864) (29740 13027) (29741 13024) (29742 13047) (29743 13030) (29744 12956) (29745 12957) (29746 
+12960) (29747 12949) (29748 (22679 8413)) (29749 (28187 8413)) (29750 (22522 8413)) (29751 (35519 8413
+)) (29752 12957) (29753 12950) (29754 12953) (29755 12958) (29756 12938) (29757 12939) (29758 12940) (
+29759 12941) (29760 12848) (29761 12842) (29762 12843) (29763 12844) (29764 12845) (29765 12846) (
+29766 12847) (29767 12864) (29768 12855) (29769 12850) (29770 12851) (29771 12852) (29772 12853) (
+29773 12854) (29774 12856) (29775 12857) (29776 13182) (29777 13181) (29778 13180) (29779 13179) (
+29808 9332) (29809 9333) (29810 9334) (29811 9335) (29812 9336) (29813 9337) (29814 9338) (29815 9339)
+ (29816 9340) (29817 9341) (29818 9342) (29819 12292) (29857 12896) (29858 12897) (29859 12898) (29860
+ 12899) (29861 12900) (29862 12901) (29863 12902) (29864 12903) (29865 12904) (29866 12905) (29867 
+12906) (29868 12907) (29869 12908) (29870 12909) (29871 12910) (29872 12911) (29873 12912) (29874 
+12913) (29875 12914) (29876 12915) (29877 12916) (29878 12917) (29879 12918) (29880 12919) (29881 
+12920) (29882 12921) (29883 12922) (29884 12923) (29888 12800) (29889 12801) (29890 12802) (29891 
+12803) (29892 12804) (29893 12805) (29894 12806) (29895 12807) (29896 12808) (29897 12809) (29898 
+12810) (29899 12811) (29900 12812) (29901 12813) (29902 12814) (29903 12815) (29904 12816) (29905 
+12817) (29906 12818) (29907 12819) (29908 12820) (29909 12821) (29910 12822) (29911 12823) (29912 
+12824) (29913 12825) (29914 12826) (29915 12827) (29916 12828) (29921 9372) (29922 9373) (29923 9374) 
+(29924 9375) (29925 9376) (29926 9377) (29927 9378) (29928 9379) (29929 9380) (29930 9381) (29931 9382
+) (29932 9383) (29933 9384) (29934 9385) (29935 9386) (29936 9387) (29937 9388) (29938 9389) (29939 
+9390) (29940 9391) (29941 9392) (29942 9393) (29943 9394) (29944 9395) (29945 9396) (29946 9397) (
+29947 9343) (29948 9344) (29949 9345) (29950 9346) (29985 23383) (29985 22575) (29986 24590) (29986 
+27079) (29987 24555) (29987 36953) (29988 24107) (29988 29796) (29989 34389) (29989 20956) (29990 
+30456) (29990 29081) (29991 27963) (29992 35242) (29993 28023) (29994 38651) (29995 27597) (29996 
+26524) (29997 31435) (29998 21407) (29999 21512) (30000 26360) (30001 20837) (30002 20006) (30003 
+24179) (30004 26989) (30005 22577) (30006 36523) (30007 24066) (30008 34987) (30009 35377) (30010 
+35531) (30011 23569) (30012 38291) (30013 39636) (30014 20303) (30015 36554) (30016 36557) (30017 
+37002) (30018 37325) (30019 21152) (30020 22294) (30021 25110) (30022 27425) (30023 27599) (30024 
+32317) (30025 28779) (30026 25991) (30027 23401) (30028 19990) (30029 23433) (30030 25918) (30031 
+27231) (30032 20839) (30033 38364) (30034 21033) (30035 20687) (30036 29702) (30037 27604) (30038 
+24859) (30039 29579) (30040 21029) (30041 22827) (30042 33287) (30043 20809) (30044 33457) (30045 
+33775) (30046 35506) (30047 32946) (30048 25925) (30049 24517) (30050 26781) (30051 23229) (30052 
+24351) (30053 29238) (30054 36890) (30055 34920) (30056 37329) (30057 23531) (30058 24049) (30059 
+25165) (30060 27827) (30061 30465) (30062 21488) (30063 27714) (30064 25910) (30065 33836) (30066 
+19988) (30067 20309) (30068 20195) (30069 20849) (30070 21463) (30071 39080) (30072 27743) (30073 
+25343) (30074 38627) (30075 30028) (30076 20449) (30077 26395) (30078 31354) (30113 27515) (30114 
+29677) (30115 39340) (30116 26399) (30117 38750) (30118 27193) (30119 21450) (30120 32080) (30121 
+34399) (30122 24118) (30123 20803) (30124 20132) (30125 35442) (30126 26410) (30127 32681) (30128 
+24220) (30129 23436) (30130 35542) (30131 37666) (30132 39131) (30133 21629) (30134 24373) (30135 
+21729) (30136 25976) (30137 26519) (30138 25509) (30139 23616) (30140 21451) (30141 21916) (30142 
+28165) (30143 27915) (30144 27138) (30145 23130) (30146 31038) (30147 26089) (30148 24067) (30149 
+26997) (30150 30524) (30151 21966) (30152 29986) (30153 21578) (30154 21733) (30155 33288) (30156 
+21214) (30157 37941) (30158 21462) (30159 31639) (30160 26356) (30161 20853) (30162 36896) (30163 
+31572) (30164 25214) (30165 32631) (30166 22833) (30167 36939) (30168 24418) (30169 26131) (30170 
+32675) (30171 24230) (30172 21322) (30173 34915) (30174 33509) (30175 33267) (30176 35696) (30177 
+36817) (30178 29031) (30179 35722) (30180 22992) (30181 26381) (30182 21063) (30183 39006) (30184 
+33521) (30185 29699) (30186 21315) (30187 24448) (30188 35611) (30189 35336) (30190 25136) (30191 
+26408) (30192 31505) (30193 21151) (30194 33289) (30195 36319) (30196 31070) (30197 27770) (30198 
+27969) (30199 29105) (30200 21531) (30201 31350) (30202 32004) (30203 38587) (30204 30452) (30205 
+21476) (30206 40643) (30256 (48 8415)) (30257 (49 8415)) (30258 (50 8415)) (30259 (51 8415)) (30260 (
+52 8415)) (30261 (53 8415)) (30262 (54 8415)) (30263 (55 8415)) (30264 (56 8415)) (30265 (57 8415)) (
+30273 9398) (30274 9399) (30275 9400) (30276 9401) (30277 9402) (30278 9403) (30279 9404) (30280 9405)
+ (30281 9406) (30282 9407) (30283 9408) (30284 9409) (30285 9410) (30286 9411) (30287 9412) (30288 
+9413) (30289 9414) (30290 9415) (30291 9416) (30292 9417) (30293 9418) (30294 9419) (30295 9420) (
+30296 9421) (30297 9422) (30298 9423) (30299 9322) (30300 9323) (30301 9324) (30302 9325) (30303 9326)
+ (30305 9424) (30306 9425) (30307 9426) (30308 9427) (30309 9428) (30310 9429) (30311 9430) (30312 
+9431) (30313 9432) (30314 9433) (30315 9434) (30316 9435) (30317 9436) (30318 9437) (30319 9438) (
+30320 9439) (30321 9440) (30322 9441) (30323 9442) (30324 9443) (30325 9444) (30326 9445) (30327 9446)
+ (30328 9447) (30329 9448) (30330 9449) (30331 9327) (30332 9328) (30333 9329) (30334 9330) (30395 
+9331) (30396 9450) (57381 1642) (57388 1548) (57390 1748) (57392 1632) (57393 1633) (57394 1634) (
+57395 1635) (57396 1636) (57397 1637) (57398 1638) (57399 1639) (57400 1640) (57401 1641) (57403 1563)
+ (57407 1567) (57409 1569) (57410 1570) (57411 1571) (57412 1572) (57413 1573) (57414 1574) (57415 
+1575) (57416 1576) (57417 1577) (57418 1578) (57419 1579) (57420 1580) (57421 1581) (57422 1582) (
+57423 1583) (57424 1584) (57425 1585) (57426 1586) (57427 1587) (57428 1588) (57429 1589) (57430 1590)
+ (57431 1591) (57432 1592) (57433 1593) (57434 1594) (57440 1600) (57441 1601) (57442 1602) (57443 
+1603) (57444 1604) (57445 1605) (57446 1606) (57447 1607) (57448 1608) (57449 1609) (57450 1610) (
+57451 1611) (57452 1612) (57453 1613) (57454 1614) (57455 1615) (57456 1616) (57457 1617) (57458 1618)
+ (57459 1648) (57460 1649) (57461 1643) (57462 1644) (57505 1700) (57506 1662) (57507 1670) (57508 
+1688) (57509 1711) (57510 1728) (57511 1657) (57512 1672) (57513 1681) (57514 1722) (57515 1726) (
+57516 1729) (57517 1731) (57518 1730) (57519 1746) (57521 1660) (57522 1665) (57523 1669) (57524 1673)
+ (57525 1683) (57526 1686) (57527 1690) (57528 1724) (57529 1744) (57530 1741) (57531 1650) (57532 
+1651) (57533 1747) (57534 1749) (57535 64467) (57536 1735) (57537 1734) (57538 1736) (57539 64477) (
+57540 1739) (57541 1733) (57542 1737) (57543 1652) (57544 1653) (57545 1654) (57546 1666) (57547 1655)
+ (57548 1656) (57549 1661) (57550 1674) (57551 1675) (57552 1707) (57553 1679) (57554 1680) (57555 
+1740) (57556 1659) (57557 1664) (57558 1658) (57559 1663) (57560 1702) (57561 1668) (57562 1667) (
+57563 1671) (57564 1677) (57565 1676) (57566 1678) (57567 1705) (57568 1715) (57569 1713) (57570 1723)
+ (57571 1682) (57572 1684) (57573 1685) (57574 1687) (57575 1689) (57576 1691) (57577 1692) (57578 
+1693) (57579 1694) (57580 1695) (57581 1696) (57582 1697) (57583 1698) (57584 1699) (57585 1701) (
+57586 1703) (57587 1704) (57588 1706) (57589 1708) (57590 1709) (57592 1710) (57593 1712) (57594 1714)
+ (57595 1716) (57596 8206) (57597 8207) (57598 8205) (57634 1438) (57636 8362) (57639 1436) (57644 44)
+ (57645 8209) (57658 1475) (57659 59) (57664 1488) (57665 1489) (57666 1490) (57667 1491) (57668 1492)
+ (57669 1493) (57670 1494) (57671 1495) (57672 1496) (57673 1497) (57674 1498) (57675 1499) (57676 
+1500) (57677 1501) (57678 1502) (57679 1503) (57680 1504) (57681 1505) (57682 1506) (57683 1507) (
+57684 1508) (57685 1509) (57686 1510) (57687 1511) (57688 1512) (57689 1513) (57690 1514) (57691 64305
+) (57692 64315) (57693 64324) (57694 64298) (57695 64299) (57696 64300) (57697 64301) (57698 64302) (
+57699 64303) (57700 64331) (57701 64332) (57702 64333) (57703 64334) (57704 64335) (57705 64287) (
+57706 64288) (57707 64289) (57708 64290) (57709 64291) (57710 64292) (57711 64293) (57712 64294) (
+57713 64295) (57714 64296) (57715 64297) (57716 1520) (57717 1521) (57718 1522) (57719 64304) (57720 
+64306) (57721 64307) (57722 64308) (57723 64309) (57724 64310) (57725 64312) (57726 64313) (57761 
+64314) (57762 64316) (57763 64318) (57764 64320) (57765 64321) (57766 64323) (57767 64326) (57768 
+64327) (57769 64328) (57770 64329) (57771 64330) (57793 1460) (57794 1461) (57795 1462) (57796 1467) (
+57797 1464) (57798 1463) (57799 1456) (57800 1458) (57801 1457) (57802 1459) (57803 1474) (57804 1473)
+ (57806 1465) (57807 1468) (57839 1469) (57840 64286) (57841 1471) (57842 1472) (57889 776) (57890 771
+) (57891 774) (57892 775) (57893 865) (57894 820) (57895 801) (57896 802) (57897 805) (57898 812) (
+57899 804) (57900 810) (57901 811) (57902 809) (57903 797) (57904 803) (57905 798) (57906 796) (57907 
+799) (57908 800) (57909 860) (57910 724) (57911 725) (57912 (32 799)) (57913 (32 800)) (57914 720) (
+57915 721) (57916 825) (57917 796) (57918 712) (57919 716) (57920 772) (57921 817) (57922 769) (57923 
+791) (57924 768) (57925 790) (57926 770) (57927 780) (57928 788) (57929 787) (57930 702) (57937 105) (
+57938 121) (57939 617) (57940 618) (57941 655) (57942 101) (57943 248) (57944 603) (57945 339) (57946 
+230) (57947 97) (57948 630) (57949 616) (57950 649) (57951 601) (57952 602) (57953 629) (57954 604) (
+57955 592) (57956 623) (57957 117) (57958 631) (57959 650) (57960 612) (57961 111) (57962 652) (57963 
+596) (57964 593) (57965 594) (57966 600) (57967 605) (57968 606) (57969 639) (57970 645) (57971 666) (
+57980 644) (57981 619) (57982 608) (58017 109) (58018 112) (58019 98) (58020 632) (58021 946) (58022 
+613) (58023 653) (58024 119) (58025 595) (58026 664) (58027 625) (58028 102) (58029 118) (58030 651) (
+58031 110) (58032 116) (58033 100) (58034 952) (58035 240) (58036 446) (58037 443) (58038 115) (58039 
+122) (58040 963) (58041 397) (58042 633) (58043 620) (58044 622) (58045 108) (58046 636) (58047 634) (
+58048 114) (58049 638) (58050 599) (58051 647) (58052 663) (58053 662) (58054 627) (58055 648) (58056 
+598) (58057 642) (58058 656) (58059 635) (58060 621) (58061 637) (58062 597) (58063 657) (58064 643) (
+58065 658) (58066 646) (58067 659) (58068 426) (58069 442) (58070 615) (58071 626) (58072 99) (58073 
+607) (58074 231) (58075 669) (58076 654) (58077 331) (58078 107) (58079 609) (58080 120) (58081 611) (
+58082 624) (58083 608) (58084 628) (58085 414) (58086 113) (58087 610) (58088 967) (58089 641) (58090 
+640) (58091 295) (58092 661) (58093 660) (58094 104) (58095 614) (58096 665) (58097 667) (58098 668) (
+58099 669) (58100 670) (58101 671) (58102 672) (58103 673) (58104 674) (58105 675) (58106 676) (58107 
+677) (58108 678) (58109 679) (58110 680) (58146 12645) (58147 12646) (58148 12647) (58149 12648) (
+58150 12649) (58151 12650) (58152 12651) (58153 12652) (58154 12653) (58155 12654) (58156 12655) (
+58157 12656) (58158 12657) (58159 12658) (58160 12659) (58161 12660) (58162 12661) (58163 12662) (
+58164 12663) (58165 12664) (58166 12665) (58167 12666) (58168 12667) (58169 12668) (58170 12669) (
+58171 12670) (58172 12671) (58173 12672) (58174 12673) (58175 12674) (58176 12675) (58177 12676) (
+58178 12677) (58179 12678) (58180 12679) (58181 12680) (58182 12681) (58183 12682) (58184 12683) (
+58185 12684) (58186 12685) (58187 12686) (58273 32) (58274 8361) (58305 4352) (58306 4353) (58307 4522
+) (58308 4354) (58309 4524) (58310 4525) (58311 4355) (58312 4356) (58313 4357) (58314 4528) (58315 
+4529) (58316 4530) (58317 4531) (58318 4532) (58319 4533) (58320 4534) (58321 4358) (58322 4359) (
+58323 4360) (58324 4537) (58325 4361) (58326 4362) (58327 4363) (58328 4364) (58329 4365) (58330 4366)
+ (58331 4367) (58332 4368) (58333 4369) (58334 4370) (58335 (49324 8414)) (58338 4449) (58339 4450) (
+58340 4451) (58341 4452) (58342 4453) (58343 4454) (58346 4455) (58347 4456) (58348 4457) (58349 4458)
+ (58350 4459) (58351 4460) (58354 4461) (58355 4462) (58356 4463) (58357 4464) (58358 4465) (58359 
+4466) (58362 4467) (58363 4468) (58364 4469) (58365 (47784 8414)) (58401 4304) (58402 4305) (58403 
+4306) (58404 4307) (58405 4308) (58406 4309) (58407 4310) (58408 4337) (58409 4311) (58410 4312) (
+58411 4313) (58412 4314) (58413 4315) (58414 4316) (58415 4338) (58416 4317) (58417 4318) (58418 4319)
+ (58419 4320) (58420 4321) (58421 4322) (58422 4323) (58423 4339) (58424 4324) (58425 4325) (58426 
+4326) (58427 4327) (58428 4328) (58429 4329) (58430 4330) (58431 4331) (58432 4332) (58433 4333) (
+58434 4334) (58435 4340) (58436 4335) (58437 4336) (58438 4341) (58439 4342) (58446 1417) (58447 4347)
+ (58449 4256) (58450 4257) (58451 4258) (58452 4259) (58453 4260) (58454 4261) (58455 4262) (58456 
+4289) (58457 4263) (58458 4264) (58459 4265) (58460 4266) (58461 4267) (58462 4268) (58463 4290) (
+58464 4269) (58465 4270) (58466 4271) (58467 4272) (58468 4273) (58469 4274) (58470 4275) (58471 4291)
+ (58472 4276) (58473 4277) (58474 4278) (58475 4279) (58476 4280) (58477 4281) (58478 4282) (58479 
+4283) (58480 4284) (58481 4285) (58482 4286) (58483 4292) (58484 4287) (58485 4288) (58486 4293) (
+58529 1329) (58530 1330) (58531 1331) (58532 1332) (58533 1333) (58534 1334) (58535 1335) (58536 1336)
+ (58537 1337) (58538 1338) (58539 1339) (58540 1340) (58541 1341) (58542 1342) (58543 1343) (58544 
+1344) (58545 1345) (58546 1346) (58547 1347) (58548 1348) (58549 1349) (58550 1350) (58551 1351) (
+58552 1352) (58553 1353) (58554 1354) (58555 1355) (58556 1356) (58557 1357) (58558 1358) (58559 1359)
+ (58560 1360) (58561 1361) (58562 1362) (58563 1363) (58564 1364) (58565 1365) (58566 1366) (58569 
+1369) (58570 1417) (58571 1370) (58572 1371) (58573 1372) (58574 1373) (58575 1374) (58576 1375) (
+58577 1377) (58578 1378) (58579 1379) (58580 1380) (58581 1381) (58582 1382) (58583 1383) (58584 1384)
+ (58585 1385) (58586 1386) (58587 1387) (58588 1388) (58589 1389) (58590 1390) (58591 1391) (58592 
+1392) (58593 1393) (58594 1394) (58595 1395) (58596 1396) (58597 1397) (58598 1398) (58599 1399) (
+58600 1400) (58601 1401) (58602 1402) (58603 1403) (58604 1404) (58605 1405) (58606 1406) (58607 1407)
+ (58608 1408) (58609 1409) (58610 1410) (58611 1411) (58612 1412) (58613 1413) (58614 1414) (58616 
+64275) (58617 64276) (58618 64277) (58619 64278) (58620 64279) (58622 1415) (58657 2406) (58658 2407) 
+(58659 2408) (58660 2409) (58661 2410) (58662 2411) (58663 2412) (58664 2413) (58665 2414) (58666 2415
+) (58671 8360) (58736 2378) (58737 2385) (58738 2386) (58739 2387) (58740 2388) (58741 2405) (58785 
+2305) (58786 2306) (58787 2307) (58788 2317) (58789 2309) (58790 2310) (58791 2311) (58792 2312) (
+58793 2313) (58794 2314) (58795 2315) (58796 2400) (58797 2316) (58798 2401) (58800 2319) (58801 2320)
+ (58802 2321) (58803 2322) (58804 2323) (58805 2324) (58807 2325) (58808 2392) (58809 2326) (58810 
+2393) (58811 2327) (58812 2394) (58813 2328) (58814 2329) (58815 2330) (58816 2331) (58817 2332) (
+58818 2395) (58819 2333) (58820 2334) (58821 2335) (58822 2336) (58823 2337) (58824 2396) (58825 2338)
+ (58826 2397) (58827 2339) (58828 2340) (58829 2341) (58830 2342) (58831 2343) (58832 2344) (58833 
+2345) (58834 2346) (58835 2347) (58836 2398) (58837 2348) (58838 2349) (58839 2350) (58840 2351) (
+58841 2399) (58842 2352) (58843 2353) (58844 2354) (58845 2355) (58846 2356) (58847 2357) (58848 2358)
+ (58849 2359) (58850 2360) (58851 2361) (58854 2366) (58855 2367) (58856 2368) (58857 2369) (58858 
+2370) (58859 2371) (58860 2372) (58861 2402) (58862 2403) (58863 2364) (58864 2375) (58865 2376) (
+58866 2373) (58868 2379) (58869 2380) (58870 2374) (58871 2381) (58872 2416) (58873 2365) (58874 2384)
+ (58875 2404) (58876 2377) (58877 8360) (58878 2381) (58913 2534) (58914 2535) (58915 2536) (58916 
+2537) (58917 2538) (58918 2539) (58919 2540) (58920 2541) (58921 2542) (58922 2543) (58928 2547) (
+58929 2548) (58930 2549) (58931 2550) (58932 2552) (58933 2546) (58934 2553) (58935 2551) (59041 2433)
+ (59042 2434) (59043 2435) (59045 2437) (59046 2438) (59047 2439) (59048 2440) (59049 2441) (59050 
+2442) (59051 2443) (59052 2528) (59053 2444) (59054 2529) (59056 2447) (59057 2448) (59060 2451) (
+59061 2452) (59063 2453) (59065 2454) (59067 2455) (59069 2456) (59070 2457) (59071 2458) (59072 2459)
+ (59073 2460) (59075 2461) (59076 2462) (59077 2463) (59078 2464) (59079 2465) (59080 2524) (59081 
+2466) (59082 2525) (59083 2467) (59084 2468) (59085 2469) (59086 2470) (59087 2471) (59088 2472) (
+59090 2474) (59091 2475) (59093 2476) (59094 2477) (59095 2478) (59096 2479) (59097 2527) (59098 2480)
+ (59099 2544) (59100 2482) (59103 2545) (59104 2486) (59105 2487) (59106 2488) (59107 2489) (59108 
+2492) (59109 160) (59110 2494) (59111 2495) (59112 2496) (59113 2497) (59114 2498) (59115 2499) (59116
+ 2500) (59117 2530) (59118 2531) (59120 2503) (59121 2504) (59124 2507) (59125 2508) (59127 2509) (
+59130 2554) (59131 2404) (59170 2562) (59173 2565) (59174 2566) (59175 2567) (59176 2568) (59177 2569)
+ (59178 2570) (59183 2575) (59184 2576) (59187 2579) (59188 2580) (59189 2581) (59190 2582) (59191 
+2583) (59192 2584) (59193 2585) (59194 2586) (59195 2587) (59196 2588) (59197 2589) (59198 2590) (
+59199 2591) (59200 2592) (59201 2593) (59202 2594) (59203 2595) (59204 2596) (59205 2597) (59206 2598)
+ (59207 2599) (59208 2600) (59210 2602) (59211 2603) (59212 2604) (59213 2605) (59214 2606) (59215 
+2607) (59216 2608) (59218 2610) (59219 2611) (59221 2613) (59222 2614) (59224 2616) (59225 2617) (
+59228 2620) (59230 2622) (59231 2623) (59232 2624) (59233 2625) (59234 2626) (59239 2631) (59240 2632)
+ (59243 2635) (59244 2636) (59245 2637) (59257 2649) (59258 2650) (59259 2651) (59260 2652) (59262 
+2654) (59425 3585) (59426 3586) (59427 3587) (59428 3588) (59429 3589) (59430 3590) (59431 3591) (
+59432 3592) (59433 3593) (59434 3594) (59435 3595) (59436 3596) (59437 3597) (59438 3598) (59439 3599)
+ (59440 3600) (59441 3601) (59442 3602) (59443 3603) (59444 3604) (59445 3605) (59446 3606) (59447 
+3607) (59448 3608) (59449 3609) (59450 3610) (59451 3611) (59452 3612) (59453 3613) (59454 3614) (
+59455 3615) (59456 3616) (59457 3617) (59458 3618) (59459 3619) (59460 3620) (59461 3621) (59462 3622)
+ (59463 3623) (59464 3624) (59465 3625) (59466 3626) (59467 3627) (59468 3628) (59469 3629) (59470 
+3630) (59471 3631) (59472 3632) (59473 3633) (59474 3634) (59475 3635) (59476 3636) (59477 3637) (
+59478 3638) (59479 3639) (59480 3640) (59481 3641) (59482 3642) (59487 3647) (59488 3648) (59489 3649)
+ (59490 3650) (59491 3651) (59492 3652) (59493 3653) (59494 3654) (59495 3655) (59496 3656) (59497 
+3657) (59498 3658) (59499 3659) (59500 3660) (59501 3661) (59502 3662) (59503 3663) (59504 3664) (
+59505 3665) (59506 3666) (59507 3667) (59508 3668) (59509 3669) (59510 3670) (59511 3671) (59512 3672)
+ (59513 3673) (59514 3674) (59515 3675) (59553 3713) (59554 3714) (59556 3716) (59559 3719) (59560 
+3720) (59562 3722) (59565 3725) (59572 3732) (59573 3733) (59574 3734) (59575 3735) (59577 3737) (
+59578 3738) (59579 3739) (59580 3740) (59581 3741) (59582 3742) (59583 3743) (59585 3745) (59586 3746)
+ (59587 3747) (59589 3749) (59591 3751) (59594 3754) (59595 3755) (59597 3757) (59598 3758) (59599 
+3759) (59600 3760) (59601 3761) (59602 3762) (59603 3763) (59604 3764) (59605 3765) (59606 3766) (
+59607 3767) (59608 3768) (59609 3769) (59611 3771) (59612 3772) (59613 3773) (59616 3776) (59617 3777)
+ (59618 3778) (59619 3779) (59620 3780) (59621 3773) (59622 3782) (59624 3784) (59625 3785) (59626 
+3786) (59627 3787) (59628 3788) (59629 3789) (59632 3792) (59633 3793) (59634 3794) (59635 3795) (
+59636 3796) (59637 3797) (59638 3798) (59639 3799) (59640 3800) (59641 3801) (59644 3804) (59645 3805)
+ (60193 8473) (60194 8459) (60195 8464) (60196 8779) (60197 8860) (60198 8455) (60199 818) (60200 8253
+) (60201 8984) (60203 8460) (60205 120125) (60206 8645) (60207 8693) (60208 8674) (60209 8803) (60210 
+8845) (60211 10941) (60212 10773) (60213 10774) (60214 8751) (60215 8752) (60219 9635) (60220 8259) (
+60221 8524) (60222 9878) (60223 8353) (60224 9608) (60225 9764) (60226 8456) (60228 9775) (60229 9785)
+ (60230 9855) (60231 9642) (60235 8985) (60236 9700) (60237 9701) (60238 9698) (60239 9699) (60240 
+8533) (60241 8534) (60242 8535) (60243 8536) (60244 8537) (60245 8538) (60246 9833) (60249 8749) (
+60250 9702) (60254 8499) (60255 8981) (60262 8721) (60267 9632) (60268 9656) (60269 9666) (60270 8226)
+ (60271 8495) (60273 8472) (60275 8482) (60276 8482) (60279 9633) (60280 9643) (60281 9702) (60282 
+8891) (60283 8493) (60284 8488) (60285 8359) (60326 9676) (60327 9645) (60328 9649) (60330 8480) (
+60331 8402) (60332 8403) (60334 8408) (60335 8410) (60336 8409) (60337 8404) (60338 8405) (60339 8825)
+ (60340 8824) (60343 8774) (60344 8892) (60345 8893) (60347 8716) (60348 8462) (60350 9769) (60351 
+9747) (60353 8754) (60354 8755) (60355 8753) (60356 8887) (60357 8886) (60358 8766) (60359 8763) (
+60363 8669) (60364 8668) (60365 8967) (60368 8489) (60369 8554) (60370 8555) (60383 9694) (60384 9693)
+ (60385 9695) (60386 9692) (60450 9755) (60451 9754) (60453 9986) (60454 9988) (60455 9742) (60456 
+10002) (60458 10003) (60459 65291) (60462 9733) (60463 9734) (60464 42) (60480 64) (60486 10008) (
+60490 9988) (60491 9743) (60492 10001) (60494 9989) (60496 64) (60497 9686) (60531 10133) (60535 9754)
+ (60600 9312) (60601 9313) (60602 9314) (60603 9315) (60604 9316) (60605 9317) (60606 9318) (60607 
+9319) (60608 9320) (60609 9321) (60610 10112) (60611 10113) (60612 10114) (60613 10115) (60614 10116) 
+(60615 10117) (60616 10118) (60617 10119) (60618 10120) (60619 10121) (60620 10122) (60621 10123) (
+60622 10124) (60623 10125) (60624 10126) (60625 10127) (60626 10128) (60627 10129) (60628 10130) (
+60629 10131) (60640 9679) (60641 9685) (60642 9682) (60643 9681) (60644 9684) (60645 9675) (60661 9680
+) (60662 9683) (60663 10077) (60664 10078) (60665 10072) (60705 9985) (60706 9986) (60707 9987) (60708
+ 9988) (60709 9742) (60710 9990) (60711 9991) (60712 9992) (60713 9993) (60714 9755) (60715 9758) (
+60716 9996) (60717 9997) (60718 9998) (60719 9999) (60720 10000) (60721 10001) (60722 10002) (60723 
+10004) (60724 10005) (60725 10006) (60727 10008) (60728 10009) (60729 10010) (60730 10011) (60731 
+10012) (60732 10013) (60733 10014) (60734 10015) (60735 10017) (60736 10018) (60737 10019) (60738 
+10020) (60739 10021) (60740 10022) (60741 10023) (60742 10025) (60743 10026) (60744 10027) (60745 
+10028) (60746 10029) (60747 10030) (60748 10031) (60749 10032) (60750 10033) (60751 10034) (60752 
+10035) (60753 10036) (60754 10037) (60755 10038) (60756 10039) (60757 10040) (60758 10041) (60759 
+10042) (60760 10043) (60761 10044) (60762 10045) (60763 10046) (60764 10047) (60765 10048) (60766 
+10049) (60767 10050) (60768 10051) (60769 10052) (60770 10053) (60771 10054) (60772 10055) (60773 
+10056) (60774 10057) (60775 10058) (60776 10059) (60777 10061) (60778 10063) (60779 10064) (60780 
+10065) (60781 10066) (60782 10070) (60783 9687) (60784 10073) (60785 10074) (60786 10081) (60787 10082
+) (60788 10083) (60789 10084) (60790 10085) (60791 10086) (60792 10087) (60793 10102) (60794 10103) (
+60795 10104) (60796 10105) (60797 10106) (60798 10107) (60833 10108) (60834 10109) (60835 10110) (
+60836 10111) (60837 10132) (60838 10136) (60839 10137) (60840 10138) (60841 10139) (60842 10140) (
+60843 10141) (60844 10142) (60845 10143) (60846 10144) (60847 10146) (60848 10147) (60849 10148) (
+60850 10149) (60851 10150) (60852 10151) (60853 10152) (60854 10153) (60855 10154) (60856 10155) (
+60857 10156) (60858 10157) (60859 10158) (60860 10159) (60861 10161) (60862 10162) (60863 10163) (
+60864 10164) (60865 10165) (60866 10166) (60867 10167) (60868 10168) (60869 10169) (60870 10170) (
+60871 10171) (60872 10172) (60873 10173) (60874 10174) (60899 10075) (60900 10076) (60961 8196) (60962
+ 8197) (60963 8202) (60964 8200) (60965 8231) (60966 8974) (60967 8975) (60968 8972) (60969 8973) (
+60970 9646) (60971 8724) (60972 1644) (60973 8722) (60974 1643) (60975 8463) (60976 8812) (60977 8448)
+ (60979 9743) (60980 8758) (60981 33) (60982 8870) (60983 9007) (60984 9008) (60985 437) (60986 8962) 
+(60987 8760) (60988 8726) (60989 8793) (60990 8794) (60991 8903) (60992 8454) (60993 9688) (60994 8782
+) (60995 8475) (60996 8466) (60997 8710) (60998 8977) (60999 8248) (61000 8452) (61001 9188) (61002 
+9649) (61003 9005) (61004 8978) (61005 8979) (61006 9006) (61007 8982) (61008 8644) (61009 8661) (
+61010 8847) (61011 8848) (61012 402) (61013 9689) (61014 8898) (61015 8899) (61021 8987) (61024 9617) 
+(61025 9619) (61026 8914) (61027 8915) (61028 8762) (61031 8728) (61032 8770) (61033 8705) (61034 8976
+) (61035 8242) (61036 8822) (61037 8823) (61038 8818) (61039 8819) (61040 8868) (61041 8708) (61042 
+8802) (61043 8968) (61044 8970) (61045 124) (61046 8969) (61047 8971) (61048 8778) (61049 8783) (61050
+ 8252) (61051 8245) (61052 8739) (61053 8727) (61054 8764) (61089 8890) (61090 8228) (61091 8229) (
+61092 11157) (61093 11013) (61094 11014) (61095 11015) (61096 8680) (61097 8678) (61098 8679) (61099 
+8681) (61100 8592) (61101 8593) (61102 8594) (61103 8595) (61104 9654) (61105 9664) (61106 9655) (
+61107 9665) (61108 8901) (61109 8597) (61110 8616) (61111 9074) (61112 9073) (61113 9608) (61114 9604)
+ (61115 9616) (61116 9612) (61117 9600) (61118 9668) (61119 9658) (61120 9067) (61121 9042) (61122 
+9035) (61123 9021) (61124 9033) (61125 9055) (61126 9054) (61127 9017) (61128 9023) (61129 9024) (
+61130 8965) (61131 9828) (61132 9829) (61133 9830) (61134 9831) (61136 9038) (61137 9045) (61138 9053)
+ (61139 9014) (61140 9019) (61141 9835) (61142 8905) (61143 8906) (61144 8907) (61145 8908) (61146 
+8966) (61147 8891) (61148 9015) (61149 8735) (61150 9644) (61151 9787) (61152 9131) (61153 9130) (
+61154 9132) (61155 9133) (61156 9127) (61157 9129) (61158 9128) (61159 9136) (61160 9137) (61161 8911)
+ (61162 8910) (61163 8884) (61164 8885) (61165 8992) (61166 8993) (61167 9130) (61168 9026) (61170 
+8630) (61171 8631) (61172 8634) (61173 8635) (61174 8651) (61175 8602) (61176 8603) (61177 8622) (
+61178 8653) (61179 8655) (61180 8654) (61181 8909) (61182 8769) (61217 160) (61218 8209) (61219 173) (
+61220 8211) (61221 8212) (61222 8210) (61223 39) (61224 8222) (61225 8220) (61226 8249) (61227 8250) (
+61228 8192) (61229 8193) (61230 8199) (61231 8201) (61232 8224) (61233 8225) (61234 9001) (61235 9002)
+ (61236 9758) (61237 9756) (61238 8866) (61239 8867) (61240 8872) (61241 10980) (61242 12310) (61243 
+12311) (61244 8598) (61245 8600) (61246 8599) (61247 8601) (61248 8453) (61249 8240) (61250 8810) (
+61251 8811) (61252 8814) (61253 8815) (61254 8739) (61255 8740) (61256 8741) (61257 8742) (61258 8712)
+ (61259 8713) (61260 8715) (61261 8656) (61262 8660) (61263 8658) (61264 8652) (61265 8646) (61266 
+8596) (61267 8605) (61270 8745) (61271 8746) (61272 8839) (61273 8838) (61274 8835) (61275 8834) (
+61276 8841) (61277 8840) (61278 8837) (61279 8836) (61280 9746) (61281 8709) (61282 8853) (61283 8854)
+ (61284 8855) (61285 8856) (61286 8226) (61287 8728) (61288 8463) (61289 8467) (61290 172) (61291 166)
+ (61292 8736) (61293 8737) (61294 8759) (61295 8757) (61296 8869) (61297 8733) (61298 8801) (61299 
+8784) (61300 8799) (61301 8747) (61302 8750) (61303 8771) (61304 8773) (61305 8776) (61306 8721) (
+61307 8719) (61308 8730) (61309 8723) (61310 9618) (61345 8354) (61346 402) (61347 8355) (61348 8359) 
+(61349 8352) (61350 36) (61351 8501) (61352 8470) (61353 8478) (61354 8481) (61355 658) (61356 8450) (
+61357 8469) (61358 8477) (61359 8484) (61360 8968) (61361 8969) (61362 8970) (61363 8971) (61364 8707)
+ (61365 8704) (61366 8896) (61367 8897) (61368 8718) (61369 8711) (61370 8706) (61371 9280) (61372 
+9282) (61373 9281) (61374 9190) (61375 8215) (61376 8978) (61377 8544) (61378 8545) (61379 8546) (
+61380 8547) (61381 8548) (61382 8549) (61383 8550) (61384 8551) (61385 8552) (61386 8553) (61387 9824)
+ (61388 9825) (61389 9826) (61390 9827) (61391 10003) (61392 10007) (61393 9312) (61394 9313) (61395 
+9314) (61396 9315) (61397 9316) (61398 9317) (61399 9318) (61400 9319) (61401 9320) (61402 9321) (
+61403 (8594 8413)) (61404 (8628 8413)) (61405 (8626 8413)) (61406 9774) (61407 9786) (61408 9760) (
+61409 9475) (61410 9473) (61411 9547) (61412 9474) (61413 9472) (61414 9532) (61415 9737) (61416 9789)
+ (61417 9790) (61418 9791) (61419 9795) (61420 9796) (61421 9797) (61422 9798) (61423 9799) (61424 
+9810) (61425 9811) (61426 9800) (61427 9801) (61428 9802) (61429 9803) (61430 9804) (61431 9805) (
+61432 9806) (61433 9807) (61434 9808) (61435 9809) (61436 9742) (61437 8531) (61438 8532) (61473 64256
+) (61474 64259) (61475 64260) (61476 64257) (61477 64258) (61478 64261) (61479 (102 8205 106)) (61480 
+(99 8205 116)) (61481 64262) (61552 188) (61553 189) (61554 190) (61555 8531) (61556 8532) (61557 8539
+) (61558 8540) (61559 8541) (61560 8542) (61561 8543) (61608 9227) (61609 9225) (61610 9226) (61611 
+9228) (61612 9229) (61613 9252) (61616 9216) (61617 8196) (61618 8197) (61619 8198) (61620 8192) (
+61621 8193) (61622 8200) (61623 8200) (61624 8595) (61625 8594) (61626 8628) (61627 8609) (61628 8592)
+ (61629 8629) (61630 10550) (61635 8227) (61636 9679) (61639 65533) (61644 (42 773)) (61646 (59 773)) 
+(61666 10692) (61667 (8230 8414)) (61668 (8594 8414)) (61671 (57 8414)) (61673 (42 8414)) (61676 (43 
+8414)) (61677 (45 8414)) (61678 (46 8414)) (61679 (44 8414)) (61686 (947 8414)) (61687 (1103 8414)) (
+61688 (12402 8414)) (61689 (12459 8414)) (61690 (28450 8414)) (61691 (21644 8414)) (61692 183) (61693 
+384) (61694 9251) (61729 192) (61730 193) (61731 194) (61732 195) (61733 256) (61734 258) (61735 196) 
+(61736 197) (61737 260) (61738 262) (61739 264) (61740 266) (61741 199) (61742 268) (61743 270) (61744
+ 200) (61745 201) (61746 202) (61747 274) (61748 278) (61749 203) (61750 280) (61751 282) (61752 500) 
+(61753 284) (61754 286) (61755 288) (61756 290) (61757 292) (61758 204) (61759 461) (61760 206) (61761
+ 296) (61762 298) (61763 304) (61764 207) (61765 302) (61766 308) (61767 310) (61768 313) (61769 315) 
+(61770 317) (61771 323) (61772 209) (61773 325) (61774 327) (61775 210) (61776 211) (61777 212) (61778
+ 213) (61779 332) (61780 214) (61781 336) (61782 340) (61783 342) (61784 344) (61785 346) (61786 348) 
+(61787 350) (61788 352) (61789 354) (61790 356) (61791 217) (61792 218) (61793 219) (61794 360) (61795
+ 362) (61796 364) (61797 220) (61798 366) (61799 368) (61800 370) (61801 372) (61802 7922) (61803 221)
+ (61804 374) (61805 376) (61806 377) (61807 379) (61808 381) (61809 (76 789)) (61810 (84 789)) (61811 
+(68 789)) (61812 7884) (61813 562) (61814 482) (61815 (338 772)) (61816 (256 774)) (61817 461) (61818 
+276) (61819 (274 803)) (61820 (274 774)) (61821 486) (61822 300) (61857 224) (61858 225) (61859 226) (
+61860 227) (61861 257) (61862 259) (61863 228) (61864 229) (61865 261) (61866 263) (61867 265) (61868 
+267) (61869 231) (61870 269) (61871 271) (61872 232) (61873 233) (61874 234) (61875 275) (61876 279) (
+61877 235) (61878 281) (61879 283) (61880 501) (61881 285) (61882 287) (61883 289) (61884 291) (61885 
+293) (61886 236) (61887 237) (61888 238) (61889 297) (61890 299) (61892 239) (61893 303) (61894 309) (
+61895 311) (61896 314) (61897 316) (61898 318) (61899 324) (61900 241) (61901 326) (61902 328) (61903 
+242) (61904 243) (61905 244) (61906 245) (61907 333) (61908 246) (61909 337) (61910 341) (61911 343) (
+61912 345) (61913 347) (61914 349) (61915 351) (61916 353) (61917 355) (61918 357) (61919 249) (61920 
+250) (61921 251) (61922 361) (61923 363) (61924 365) (61925 252) (61926 367) (61927 369) (61928 371) (
+61929 373) (61930 7923) (61931 253) (61932 375) (61933 255) (61934 378) (61935 380) (61936 382) (61937
+ (108 789)) (61938 (116 789)) (61939 (100 789)) (61940 7885) (61941 563) (61942 483) (61943 (339 772))
+ (61944 (257 774)) (61945 462) (61946 277) (61947 (275 803)) (61948 (275 774)) (61949 487) (61950 301)
+ (61985 (73 772 774)) (61986 463) (61987 (78 772)) (61988 (77 772)) (61989 465) (61990 334) (61991 (
+332 774)) (61992 (332 803)) (61993 490) (61994 467) (61995 (362 774)) (61996 (89 774)) (61997 (89 772 
+774)) (61998 (89 780)) (61999 (68 817)) (62000 (84 817)) (62001 7692) (62002 7716) (62003 7778) (62004
+ 7788) (62005 (68 817 803)) (62113 (299 774)) (62114 464) (62115 (110 772)) (62116 (109 772)) (62117 
+466) (62118 335) (62119 (333 774)) (62120 (333 803)) (62121 491) (62122 468) (62123 363) (62124 (121 
+774)) (62125 (563 774)) (62126 (121 780)) (62127 7695) (62128 7791) (62129 7693) (62130 7717) (62131 
+7779) (62132 7789) (62133 (7695 803)) (62241 7937) (62242 7945) (62243 7936) (62244 7944) (62245 8049)
+ (62246 8123) (62247 8048) (62248 8122) (62249 8118) (62250 (913 771)) (62251 7941) (62252 7949) (
+62253 7939) (62254 7949) (62255 7943) (62256 7951) (62257 7940) (62258 7948) (62259 7938) (62260 7946)
+ (62261 7942) (62262 7950) (62263 8115) (62264 8124) (62265 8065) (62266 8073) (62267 8064) (62268 
+8072) (62269 8116) (62270 (8124 769)) (62271 8114) (62272 (8124 768)) (62273 8119) (62274 (8124 771)) 
+(62275 8069) (62276 8077) (62277 8067) (62278 8075) (62279 8071) (62280 8079) (62281 8068) (62282 8076
+) (62283 8066) (62284 8074) (62285 8070) (62286 8078) (62287 7953) (62288 7961) (62289 7952) (62290 
+7960) (62291 8051) (62292 8137) (62293 8050) (62294 8136) (62295 7957) (62296 7965) (62297 7955) (
+62298 7963) (62299 7956) (62300 7964) (62301 7954) (62302 7962) (62303 7969) (62304 7977) (62305 7968)
+ (62306 7976) (62307 8053) (62308 8139) (62309 8052) (62310 8138) (62311 8134) (62312 (919 771)) (
+62313 7973) (62314 7981) (62315 7971) (62316 7979) (62317 7975) (62318 7983) (62319 8084) (62320 7980)
+ (62321 7970) (62322 7978) (62323 7974) (62324 7982) (62325 8131) (62326 8140) (62327 8081) (62328 
+8089) (62329 8080) (62330 8088) (62331 8132) (62332 (8140 769)) (62333 8130) (62334 (8140 768)) (62369
+ 8135) (62370 (8140 771)) (62371 8085) (62372 8093) (62373 8083) (62374 8091) (62375 8087) (62376 8095
+) (62377 8084) (62378 8092) (62379 8082) (62380 8090) (62381 8086) (62382 8094) (62383 7985) (62384 
+7993) (62385 7984) (62386 7992) (62387 8055) (62388 8155) (62389 8054) (62390 8154) (62391 8150) (
+62392 (921 771)) (62393 7989) (62394 7997) (62395 7987) (62396 7995) (62397 7991) (62398 7999) (62399 
+7988) (62400 7996) (62401 7986) (62402 7994) (62403 7990) (62404 7998) (62405 (970 769)) (62406 (938 
+769)) (62407 (970 768)) (62408 (938 768)) (62409 (970 771)) (62410 (938 771)) (62411 8001) (62412 8009
+) (62413 8000) (62414 8008) (62415 8057) (62416 8185) (62417 8056) (62418 8184) (62419 8005) (62420 
+8013) (62421 8003) (62422 8011) (62423 8004) (62424 8012) (62425 8002) (62426 8010) (62427 8017) (
+62428 8025) (62429 8016) (62430 (933 787)) (62431 8059) (62432 8171) (62433 8058) (62434 8170) (62435 
+8166) (62436 (933 771)) (62437 8021) (62438 8029) (62439 8019) (62440 8027) (62441 8023) (62442 8031) 
+(62443 (971 771)) (62444 (939 771)) (62445 8020) (62446 (8171 787)) (62447 8018) (62448 (8170 787)) (
+62449 8022) (62450 (933 787 771)) (62451 (971 769)) (62452 (939 769)) (62453 (971 768)) (62454 (939 
+768)) (62455 8033) (62456 8041) (62457 8032) (62458 8040) (62459 8061) (62460 8187) (62461 8060) (
+62462 8186) (62497 8182) (62498 (937 771)) (62499 8037) (62500 8045) (62501 8035) (62502 8043) (62503 
+8039) (62504 8047) (62505 8036) (62506 8044) (62507 8034) (62508 8042) (62509 8038) (62510 8046) (
+62511 8179) (62512 8188) (62513 8097) (62514 8105) (62515 8096) (62516 8104) (62517 8180) (62518 (8188
+ 769)) (62519 8178) (62520 (8188 768)) (62521 8183) (62522 (8188 771)) (62523 8101) (62524 8107) (
+62525 8099) (62526 8107) (62527 8103) (62528 8111) (62529 8100) (62530 8108) (62531 8098) (62532 8106)
+ (62533 8102) (62534 8110) (62535 8165) (62536 8172) (62537 8164) (62538 (8127 929)) (62753 65154) (
+62754 65156) (62755 65158) (62756 65160) (62757 65163) (62758 65164) (62759 65162) (62760 65166) (
+62761 65169) (62762 65170) (62763 65168) (62764 65172) (62765 65175) (62766 65176) (62767 65174) (
+62768 65179) (62769 65180) (62770 65178) (62771 65183) (62772 65184) (62773 65182) (62774 65187) (
+62775 65188) (62776 65186) (62777 65191) (62778 65192) (62779 65190) (62780 65194) (62781 65196) (
+62782 65198) (62783 65200) (62784 65203) (62785 65204) (62786 65202) (62787 65207) (62788 65208) (
+62789 65206) (62790 65211) (62791 65212) (62792 65210) (62793 65215) (62794 65216) (62795 65214) (
+62796 65219) (62797 65220) (62798 65218) (62799 65223) (62800 65224) (62801 65222) (62802 65227) (
+62803 65228) (62804 65226) (62805 65231) (62806 65232) (62807 65230) (62808 65235) (62809 65236) (
+62810 65234) (62811 65239) (62812 65240) (62813 65238) (62814 65243) (62815 65244) (62816 65242) (
+62817 65247) (62818 65248) (62819 65246) (62820 65251) (62821 65252) (62822 65250) (62823 65255) (
+62824 65256) (62825 65254) (62826 65259) (62827 65260) (62828 65258) (62829 65262) (62830 65264) (
+62831 65267) (62832 65268) (62833 65266) (62834 65269) (62835 65270) (62836 65271) (62837 65272) (
+62838 65273) (62839 65274) (62840 65275) (62841 65276) (62842 1780) (62843 1780) (62844 1781) (62845 
+1782) (62882 64606) (62883 64607) (62884 64608) (62885 64609) (62886 64610) (62887 64364) (62888 64365
+) (62889 64363) (62890 1740) (62891 64562) (62956 64344) (62957 64345) (62958 64343) (62959 64380) (
+62960 64381) (62961 64379) (62962 64395) (62963 1705) (62964 64399) (62965 64404) (62966 64405) (62967
+ 64403) (62968 64421) (64812 1644) (64832 978) (64848 7425) (64849 630) (64859 1013) (64860 982) (
+64861 977) (64862 1009) (64863 966) (64864 1008) (64865 7424) (64866 665) (64867 7428) (64868 7429) (
+64869 7431) (64870 42800) (64871 610) (64872 668) (64873 618) (64874 7434) (64875 7435) (64876 671) (
+64877 7437) (64878 628) (64879 7439) (64880 7448) (64881 42927) (64882 640) (64883 42801) (64884 7451)
+ (64885 7452) (64886 7456) (64887 7457) (64888 120) (64889 655) (64890 7458) (64891 411) (64893 945) (
+64936 8319) (64942 8316) (64944 8304) (64945 185) (64946 178) (64947 179) (64948 8308) (64949 8309) (
+64950 8310) (64951 8311) (64952 8312) (64953 8313) (64958 8314) (64959 8315) (64992 8320) (64993 8321)
+ (64994 8322) (64995 8323) (64996 8324) (64997 8325) (64998 8326) (64999 8327) (65000 8328) (65001 
+8329) (65002 8331) (65003 8330) (65004 8332) (65008 (48 824)))))
+(DECLARE%: DONTCOPY
+  (FILEMAP (NIL (3333 19425 (UTF8.OUTCHARFN 3343 . 6359) (UTF8.SLUG.OUTCHARFN 6361 . 7025) (
+UTF8.INCCODEFN 7027 . 13306) (UTF8.PEEKCCODEFN 13308 . 18441) (\UTF8.BACKCCODEFN 18443 . 19423)) (
+19426 24341 (UTF16BE.OUTCHARFN 19436 . 20455) (UTF16BE.INCCODEFN 20457 . 21799) (UTF16BE.PEEKCCODEFN 
+21801 . 23145) (\UTF16BE.BACKCCODEFN 23147 . 24339)) (24342 29073 (UTF16LE.OUTCHARFN 24352 . 25468) (
+UTF16LE.INCCODEFN 25470 . 26599) (UTF16LE.PEEKCCODEFN 26601 . 27877) (\UTF16LE.BACKCCODEFN 27879 . 
+29071)) (29074 32121 (READBOM 29084 . 31153) (WRITEBOM 31155 . 32119)) (32122 36153 (
+MAKE-UNICODE-FORMATS 32132 . 36151)) (36221 40715 (UTF8.BINCODE 36231 . 38919) (\UTF8.FETCHCODE 38921
+ . 40713)) (40716 46339 (UTF8.VALIDATE 40726 . 43323) (NUTF8-BYTE1-BYTES 43325 . 44062) (
+NUTF8-CODE-BYTES 44064 . 45121) (NUTF8-STRING-BYTES 45123 . 46015) (N-MCHARS 46017 . 46337)) (46403 
+47677 (MTOUCODE 46413 . 46582) (UTOMCODE 46584 . 46781) (MTOUCODE? 46783 . 47162) (UTOMCODE? 47164 . 
+47675)) (47678 54250 (MTOUSTRING 47688 . 48271) (UTOMSTRING 48273 . 48856) (MTOUTF8STRING 48858 . 
+53137) (UTF8TOMSTRING 53139 . 54248)) (54308 60016 (XTOUCODE 54318 . 54836) (UTOXCODE 54838 . 55346) (
+XTOUCODE? 55348 . 56409) (UTOXCODE? 56411 . 57494) (XTOUSTRING 57496 . 58191) (UTOXSTRING 58193 . 
+58936) (XTOUTF8STRING 58938 . 60014)) (60017 65196 (MERGE-UNICODE-TRANSLATION-TABLES 60027 . 62789) (
+UNICODE.UNMAPPED 62791 . 65194)) (68935 69188 (UNICODE-INIT 68945 . 69186)))))
+STOP
diff --git a/sources/UNICODE-FORMATS.LCOM b/sources/UNICODE-FORMATS.LCOM
new file mode 100644
index 00000000..5ee08dff
Binary files /dev/null and b/sources/UNICODE-FORMATS.LCOM differ
diff --git a/sources/XCLC-TOP-LEVEL b/sources/XCLC-TOP-LEVEL
index 1bba7e7d..c4227d82 100644
--- a/sources/XCLC-TOP-LEVEL
+++ b/sources/XCLC-TOP-LEVEL
@@ -1,20 +1,19 @@
-(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE (DEFPACKAGE "COMPILER" (USE "LISP" "XCL")))
-(IL:FILECREATED "19-Sep-2020 22:02:59" 
-IL:|{DSK}<Users>kaplan>Local>medley3.5>lispcore>sources>XCLC-TOP-LEVEL.;10| 78326  
+(DEFINE-FILE-INFO :PACKAGE (DEFPACKAGE "COMPILER" (:USE "LISP" "XCL")) :READTABLE "XCL" :BASE 10)
 
-      IL:|changes| IL:|to:|  (IL:FUNCTIONS START-COMPILATION)
+(IL:FILECREATED "25-Feb-2026 23:03:55" IL:|{WMEDLEY}<sources>XCLC-TOP-LEVEL.;2| 78162  
 
-      IL:|previous| IL:|date:| "19-Sep-2020 21:33:34" 
-IL:|{DSK}<Users>kaplan>Local>medley3.5>lispcore>sources>XCLC-TOP-LEVEL.;9|)
+      :EDIT-BY IL:|rmk|
 
+      :CHANGES-TO (IL:FUNCTIONS COMPILE-FILE)
+
+      :PREVIOUS-DATE "19-Sep-2020 22:02:59" IL:|{WMEDLEY}<sources>XCLC-TOP-LEVEL.;1|)
 
-; Copyright (c) 1986, 1987, 1988, 1989, 1990, 1991, 1994, 2020 by Venue & Xerox Corporation.  All rights reserved.
 
 (IL:PRETTYCOMPRINT IL:XCLC-TOP-LEVELCOMS)
 
 (IL:RPAQQ IL:XCLC-TOP-LEVELCOMS
           (
-           (IL:* IL:|;;| "Top-level entry points ")
+           (IL:* IL:|;;| "Top-level entry points ")
 
            (IL:STRUCTURES COMPILER-CONTEXT)
            (IL:VARIABLES *COMPILE-FILE-CONTEXT* *COMPILE-SCAN-CONTEXT* *COMPILE-DEFINER-CONTEXT*)
@@ -33,18 +32,18 @@ IL:|{DSK}<Users>kaplan>Local>medley3.5>lispcore>sources>XCLC-TOP-LEVEL.;9|)
            (IL:COMS (IL:STRUCTURES ASSEMBLER-ERROR)
                   (IL:FUNCTIONS ASSEMBLER-ERROR))
            
-           (IL:* IL:|;;| "Reading the #, macro")
+           (IL:* IL:|;;| "Reading the #, macro")
 
            (IL:VARIABLES *COMPILER-IS-READING*)
            (IL:STRUCTURES EVAL-WHEN-LOAD)
            
-           (IL:* IL:|;;| "Support for Block Compilation")
+           (IL:* IL:|;;| "Support for Block Compilation")
 
            (IL:VARIABLES *BLOCK-HASH-TABLE* *BLOCKS* *CURRENT-BLOCK*)
            (IL:STRUCTURES BLOCK-DECL)
            (IL:FUNCTIONS SET-UP-BLOCK-DECLS)
            
-           (IL:* IL:|;;| "Processing of top-level forms in a file")
+           (IL:* IL:|;;| "Processing of top-level forms in a file")
 
            (IL:VARIABLES PASS)
            (IL:FUNCTIONS CONSTANT-EXPRESSION-P)
@@ -60,14 +59,14 @@ IL:|{DSK}<Users>kaplan>Local>medley3.5>lispcore>sources>XCLC-TOP-LEVEL.;9|)
                   COMPILE-FILE-PROCESS-FUNCTION)
            (IL:FUNCTIONS CRACK-DEFMACRO ESTABLISH-MACRO-IN-COMPILER)
            
-           (IL:* IL:|;;| "Support for :Process-Entire-File")
+           (IL:* IL:|;;| "Support for :Process-Entire-File")
 
            (IL:VARIABLES *DEFERRED-FORMS* *MAKING-SECOND-PASS* *PREPROCESSING-PHASE*)
            (IL:FUNCTIONS COMPILE-SCAN-DECLARE\: COMPILE-SCAN-DEFINE-FILE-INFO COMPILE-SCAN-MACROLET 
                   COMPILE-SCAN-DEFINER COMPILE-SCAN-LOOSE-FORM COMPILE-SCAN-OUTSTANDING-LOOSE-FORMS)
            (IL:FUNCTIONS MERGE-FIRST-FORMS)
            
-           (IL:* IL:|;;| "for compiling definers")
+           (IL:* IL:|;;| "for compiling definers")
 
            (IL:VARIABLES *LAP-FLG* *AUTOMATIC-SPECIAL-DECLARATIONS*)
            (IL:FUNCTIONS COMPILE COMPILE-DEFINER)
@@ -75,11 +74,11 @@ IL:|{DSK}<Users>kaplan>Local>medley3.5>lispcore>sources>XCLC-TOP-LEVEL.;9|)
            (IL:FUNCTIONS COMPILE-DEFINER-DEFINER COMPILE-DEFINER-NAMED-PROGN 
                   COMPILE-DEFINER-PROCESS-FUNCTION COMPILE-DEFINER-OUTSTANDING-LOOSE-FORMS)
            
-           (IL:* IL:|;;| "Arrange for correct compiler to be used.")
+           (IL:* IL:|;;| "Arrange for correct compiler to be used.")
 
            (IL:PROP IL:FILETYPE IL:XCLC-TOP-LEVEL)
            
-           (IL:* IL:|;;| "Arrange for the correct makefile environment")
+           (IL:* IL:|;;| "Arrange for the correct makefile environment")
 
            (IL:PROP IL:MAKEFILE-ENVIRONMENT IL:XCLC-TOP-LEVEL)))
 
@@ -89,9 +88,9 @@ IL:|{DSK}<Users>kaplan>Local>medley3.5>lispcore>sources>XCLC-TOP-LEVEL.;9|)
 
 
 (DEFSTRUCT (COMPILER-CONTEXT (:FAST-ACCESSORS T)
-                                 (:CONC-NAME NIL)
-                                 (:COPIER NIL)
-                                 (:PREDICATE NIL))
+                             (:CONC-NAME NIL)
+                             (:COPIER NIL)
+                             (:PREDICATE NIL))
    SETF-SYMBOL-FUNCTION-FN
    DEFINEQ-FN
    DEFCONSTANT-FN
@@ -185,51 +184,50 @@ IL:|{DSK}<Users>kaplan>Local>medley3.5>lispcore>sources>XCLC-TOP-LEVEL.;9|)
 (DEFVAR *LOOSE-NAME* NIL)
 
 (DEFUN COMPILE-FILE (INPUT-FILE &KEY (OUTPUT-FILE NIL)
-                               (LAP-FILE NIL)
-                               (ERROR-FILE NIL)
-                               (ERRORS-TO-TERMINAL T)
-                               (FILE-MANAGER-FORMAT NIL F-M-F-GIVEN)
-                               (PROCESS-ENTIRE-FILE NIL P-E-F-GIVEN)
-                               (LOAD NIL))
+                           (LAP-FILE NIL)
+                           (ERROR-FILE NIL)
+                           (ERRORS-TO-TERMINAL T)
+                           (FILE-MANAGER-FORMAT NIL F-M-F-GIVEN)
+                           (PROCESS-ENTIRE-FILE NIL P-E-F-GIVEN)
+                           (LOAD NIL))                (IL:* IL:\; "Edited 25-Feb-2026 21:33 by rmk")
 
-(IL:* IL:|;;;| "Compiles the forms on Input-File, producing a FASL file.")
+(IL:* IL:|;;;| "Compiles the forms on Input-File, producing a FASL file.")
 
-(IL:* IL:|;;;| " :Output-File")
+(IL:* IL:|;;;| " :Output-File")
 
-   (IL:* IL:|;;| "The name of a file to which binary code should be written.")
+   (IL:* IL:|;;| "The name of a file to which binary code should be written.")
 
-   (IL:* IL:|;;| " Defaults to Input-File with the extension '.dfasl'")
+   (IL:* IL:|;;| " Defaults to Input-File with the extension '.dfasl'")
 
-(IL:* IL:|;;;| ":Lap-File")
+(IL:* IL:|;;;| ":Lap-File")
 
-   (IL:* IL:|;;| "The name of a file to which LAP assemble code should be written.")
+   (IL:* IL:|;;| "The name of a file to which LAP assemble code should be written.")
 
-   (IL:* IL:|;;| 
- " If T, defulats to Input-File with the extension '.dlap', if NIL, no LAP file is produced.")
+   (IL:* IL:|;;| 
+   " If T, defulats to Input-File with the extension '.dlap', if NIL, no LAP file is produced.")
 
-(IL:* IL:|;;;| ":Error-FIle")
+(IL:* IL:|;;;| ":Error-FIle")
 
-   (IL:* IL:|;;| "The name of a file to which compiler error messages should be written. Defaults like :Lap-File, but with the extension '.log'")
+   (IL:* IL:|;;| "The name of a file to which compiler error messages should be written. Defaults like :Lap-File, but with the extension '.log'")
 
-(IL:* IL:|;;;| ":Errors-To-Terminal")
+(IL:* IL:|;;;| ":Errors-To-Terminal")
 
-   (IL:* IL:|;;| 
- "True if error messages should be sent to *ERROR-OUTPUT* as well as any :Error-File.")
+   (IL:* IL:|;;| 
+   "True if error messages should be sent to *ERROR-OUTPUT* as well as any :Error-File.")
 
-(IL:* IL:|;;;| ":File-Manager-Format")
+(IL:* IL:|;;;| ":File-Manager-Format")
 
-   (IL:* IL:|;;| 
- "True if the file should be assumed to have been produced by the MAKEFILE function.")
+   (IL:* IL:|;;| "True if the file should be assumed to have been produced by the MAKEFILE function.")
 
-   (IL:* IL:|;;| "If not specified, we check the first non-blank character in the file. If that character is a left-paren, we assume that MAKEFILE made the file.")
+   (IL:* IL:|;;| "If not specified, we check the first non-blank character in the file. If that character is a left-paren, we assume that MAKEFILE made the file.")
 
-(IL:* IL:|;;;| ":Process-Entire-File")
+(IL:* IL:|;;;| ":Process-Entire-File")
 
-   (IL:* IL:|;;| "If true, the whole file is read in, evaluating those forms which are explicitly or implicitly EVAL-WHEN (OMPILE), before any code is generated. This allows macros to be defined after use, for example. This defaults to T if the file is declared or discovered to be in Interlisp format.")
+   (IL:* IL:|;;| "If true, the whole file is read in, evaluating those forms which are explicitly or implicitly EVAL-WHEN (OMPILE), before any code is generated. This allows macros to be defined after use, for example. This defaults to T if the file is declared or discovered to be in Interlisp format.")
 
-(IL:* IL:|;;;| ":Load")
+(IL:* IL:|;;;| ":Load")
 
-   (IL:* IL:|;;| "If true, definitions will be installed in the environment after they are compiled. If this is :SAVE, the any previous definitions are saved on the property list before the new ones are installed.")
+   (IL:* IL:|;;| "If true, definitions will be installed in the environment after they are compiled. If this is :SAVE, the any previous definitions are saved on the property list before the new ones are installed.")
 
    (LET ((*ERROR-OUTPUT* *ERROR-OUTPUT*)
          (*INPUT-STREAM* NIL)
@@ -246,10 +244,10 @@ IL:|{DSK}<Users>kaplan>Local>medley3.5>lispcore>sources>XCLC-TOP-LEVEL.;9|)
          (*OUTSTANDING-LOOSE-FORMS* NIL)
          (*PROCESSED-FUNCTIONS* NIL)
          (*UNKNOWN-FUNCTIONS* NIL)
-         (*INPUT-FILECOMS-VARIABLE* NIL)                     (IL:* IL:\; 
-                         "Bound for the convenience of the optimizers on RPAQQ and PRETTYCOMPRINT.")
+         (*INPUT-FILECOMS-VARIABLE* NIL)                     (IL:* IL:\; 
+                           "Bound for the convenience of the optimizers on RPAQQ and PRETTYCOMPRINT.")
 
-         (IL:* IL:|;;| "Rebind all of these both to set up a canonical environment inside the compiler and to protect the outside environment from anything that might happen during this file.")
+         (IL:* IL:|;;| "Rebind all of these both to set up a canonical environment inside the compiler and to protect the outside environment from anything that might happen during this file.")
 
          (IL:SPECVARS T)
          (IL:LOCALVARS IL:SYSLOCALVARS)
@@ -259,11 +257,11 @@ IL:|{DSK}<Users>kaplan>Local>medley3.5>lispcore>sources>XCLC-TOP-LEVEL.;9|)
          (IL:NLAML IL:NLAML)
          (IL:LAMA IL:LAMA)
          (IL:DONTCOMPILEFNS IL:DONTCOMPILEFNS))
-        (DECLARE (SPECIAL IL:SPECVARS IL:LOCALVARS IL:LOCALFREEVARS IL:GLOBALVARS IL:NLAMA 
-                            IL:NLAML IL:LAMA IL:DONTCOMPILEFNS))
+        (DECLARE (SPECIAL IL:SPECVARS IL:LOCALVARS IL:LOCALFREEVARS IL:GLOBALVARS IL:NLAMA IL:NLAML 
+                        IL:LAMA IL:DONTCOMPILEFNS))
         (UNWIND-PROTECT
             (PROGN 
-                   (IL:* IL:|;;| "Set up the input stream.")
+                   (IL:* IL:|;;| "Set up the input stream.")
 
                    (LET ((PATH (OR (PROBE-FILE INPUT-FILE)
                                    (PROBE-FILE (MERGE-PATHNAMES INPUT-FILE ".lisp")))))
@@ -281,19 +279,17 @@ IL:|{DSK}<Users>kaplan>Local>medley3.5>lispcore>sources>XCLC-TOP-LEVEL.;9|)
                            (T (ERROR "The file \"~A\" is nonexistent or cannot be read.~%" INPUT-FILE
                                      ))))
 
-                   (IL:* IL:|;;| "Set up the FASL output stream.")
+                   (IL:* IL:|;;| "Set up the FASL output stream.")
 
                    (SETQ FASL-PATHNAME (COND
                                           (OUTPUT-FILE (PATHNAME OUTPUT-FILE))
                                           (T (MAKE-PATHNAME :TYPE
-                                                    (STRING (LOCALLY (DECLARE (SPECIAL 
-                                                                                         IL:FASL.EXT)
-                                                                            )
+                                                    (STRING (LOCALLY (DECLARE (SPECIAL IL:FASL.EXT))
                                                                    IL:FASL.EXT))
                                                     :VERSION :NEWEST :DEFAULTS *INPUT-FILENAME*))))
                    (SETQ *FASL-HANDLE* (FASL:OPEN-FASL-HANDLE FASL-PATHNAME))
 
-                   (IL:* IL:|;;| "Set up the LAP stream.")
+                   (IL:* IL:|;;| "Set up the LAP stream.")
 
                    (WHEN LAP-FILE
                        (SETQ *LAP-STREAM* (OPEN (IF (EQ LAP-FILE T)
@@ -302,7 +298,7 @@ IL:|{DSK}<Users>kaplan>Local>medley3.5>lispcore>sources>XCLC-TOP-LEVEL.;9|)
                                                     LAP-FILE)
                                                 :DIRECTION :OUTPUT)))
 
-                   (IL:* IL:|;;| "Set up the error output stream.")
+                   (IL:* IL:|;;| "Set up the error output stream.")
 
                    (WHEN ERROR-FILE
                        (SETQ ERROR-FILE-STREAM (OPEN (IF (EQ ERROR-FILE T)
@@ -317,8 +313,8 @@ IL:|{DSK}<Users>kaplan>Local>medley3.5>lispcore>sources>XCLC-TOP-LEVEL.;9|)
                                                 *ERROR-OUTPUT*)
                                             ERROR-FILE-STREAM))
 
-                   (IL:* IL:|;;| 
-                 "Fix up the default values of FILE-MANAGER-FORMAT and PROCESS-ENTIRE-FILE.")
+                   (IL:* IL:|;;| 
+                   "Fix up the default values of FILE-MANAGER-FORMAT and PROCESS-ENTIRE-FILE.")
 
                    (IF (NOT F-M-F-GIVEN)
                        (SETQ FILE-MANAGER-FORMAT (EQ (IL:SKIPSEPRCODES *INPUT-STREAM* IL:FILERDTBL)
@@ -326,22 +322,22 @@ IL:|{DSK}<Users>kaplan>Local>medley3.5>lispcore>sources>XCLC-TOP-LEVEL.;9|)
                    (IF (NOT P-E-F-GIVEN)
                        (SETQ PROCESS-ENTIRE-FILE FILE-MANAGER-FORMAT))
 
-                   (IL:* IL:|;;| "Pick the right readtable and do the compilation.")
+                   (IL:* IL:|;;| "Pick the right readtable and do the compilation.")
 
                    (IL:WITH-READER-ENVIRONMENT (IF FILE-MANAGER-FORMAT
-                                                   IL:*OLD-INTERLISP-READ-ENVIRONMENT*
+                                                   IL:*DEFINE-FILE-INFO-ENV*
                                                    IL:*COMMON-LISP-READ-ENVIRONMENT*)
                        (START-COMPILATION)
                        (PROCESS-FORMS PROCESS-ENTIRE-FILE)
                        (FINISH-COMPILATION)
                        (SETQ COMPILATION-SUCCEEDED T)
 
-                       (IL:* IL:|;;| 
-         "Return the DFASL pathname so that people can say, for example, (LOAD (COMPILE-FILE ...))")
+                       (IL:* IL:|;;| 
+           "Return the DFASL pathname so that people can say, for example, (LOAD (COMPILE-FILE ...))")
 
                        FASL-PATHNAME))
 
-            (IL:* IL:|;;| "The compilation is over. Close all of the streams. If the compilations did not succeed (that is, we have aborted it), then delete the FASL file as well rather than leave garbage around.")
+            (IL:* IL:|;;| "The compilation is over. Close all of the streams. If the compilations did not succeed (that is, we have aborted it), then delete the FASL file as well rather than leave garbage around.")
 
             (IF (STREAMP *INPUT-STREAM*)
                 (CLOSE *INPUT-STREAM*))
@@ -352,9 +348,9 @@ IL:|{DSK}<Users>kaplan>Local>medley3.5>lispcore>sources>XCLC-TOP-LEVEL.;9|)
             (IF (STREAMP *LAP-STREAM*)
                 (CLOSE *LAP-STREAM*)))))
 
-(DEFUN START-COMPILATION ()                  (IL:* IL:\; "Edited 19-Sep-2020 22:02 by rmk:")
+(DEFUN START-COMPILATION ()                          (IL:* IL:\; "Edited 19-Sep-2020 22:02 by rmk:")
 
-(IL:* IL:|;;;| "Write out banners on the various output files.")
+(IL:* IL:|;;;| "Write out banners on the various output files.")
 
    (FLET ((DATE-STRING (UNIV-TIME)
                  (MULTIPLE-VALUE-BIND (SECONDS MINUTES HOUR DATE MONTH YEAR DAY-OF-WEEK)
@@ -370,7 +366,7 @@ IL:|{DSK}<Users>kaplan>Local>medley3.5>lispcore>sources>XCLC-TOP-LEVEL.;9|)
          (LET ((FASL-STREAM (FASL:BEGIN-TEXT *FASL-HANDLE*))
                (FILECREATED (IL:READ-FILECREATED *INPUT-STREAM*)))
 
-              (IL:* IL:|;;| "RMK:  This had a complicated format, didn't work, so I reverted to printout.  PRIN3 to stop wrap around")
+              (IL:* IL:|;;| "RMK:  This had a complicated format, didn't work, so I reverted to printout.  PRIN3 to stop wrap around")
 
               (IL:PRINTOUT FASL-STREAM "XCL Compiler output for source file " IL:\#
                      (IL:PRIN3 (OR (CADDR FILECREATED)
@@ -395,9 +391,9 @@ LAP file created ~A.~%~%"
 
 (DEFUN FINISH-COMPILATION ()
 
-(IL:* IL:|;;;| "Clean up after the compilation.")
+(IL:* IL:|;;;| "Clean up after the compilation.")
 
-   (IL:* IL:|;;| "Remove this file from IL:NOTCOMPILEDFILES for CLEANUP.")
+   (IL:* IL:|;;| "Remove this file from IL:NOTCOMPILEDFILES for CLEANUP.")
 
    (LOCALLY (DECLARE (IL:GLOBALVARS IL:NOTCOMPILEDFILES))
           (SETQ IL:NOTCOMPILEDFILES (REMOVE (INTERN (LET ((TYPE (PATHNAME-TYPE *INPUT-FILENAME*)))
@@ -411,13 +407,13 @@ LAP file created ~A.~%~%"
                                                    "INTERLISP")
                                            IL:NOTCOMPILEDFILES)))
 
-   (IL:* IL:|;;| "Possibly warn about unknown functions encountered during compilation.")
+   (IL:* IL:|;;| "Possibly warn about unknown functions encountered during compilation.")
 
    (WARN-ABOUT-UNKNOWN-FUNCTIONS))
 
 (DEFUN SCAN-ONE-FORM (FORM COMPILER-CONTEXT)
 
-   (IL:* IL:|;;| "Assumes sedit like comments have already been stripped ")
+   (IL:* IL:|;;| "Assumes sedit like comments have already been stripped ")
 
    (IF (ATOM FORM)
        FORM
@@ -433,8 +429,7 @@ LAP file created ~A.~%~%"
                                 (CERROR "Ignore this DEFMACRO." "~S is not a legal macro name." NAME)
                                 )
                                (T (UNLESS *MAKING-SECOND-PASS*
-                                      (ESTABLISH-MACRO-IN-COMPILER NAME (CRACK-DEFMACRO
-                                                                             FORM)))
+                                      (ESTABLISH-MACRO-IN-COMPILER NAME (CRACK-DEFMACRO FORM)))
                                   (SCAN-ONE-FORM (OPTIMIZE-AND-MACROEXPAND-1 FORM)
                                          COMPILER-CONTEXT)))))
            ((EVAL-WHEN) (IF (NOT (AND (LISTP (SECOND FORM))
@@ -476,12 +471,11 @@ LAP file created ~A.~%~%"
                                                  VALUE)))))))
            ((DEFCONSTANT) (COMPILER-APPLY DEFCONSTANT COMPILER-CONTEXT FORM))
            ((IL:DECLARE\:) (COMPILER-APPLY IL:DECLARE\: COMPILER-CONTEXT FORM))
-           ((IL:SETF-SYMBOL-FUNCTION) (COMPILER-APPLY IL:SETF-SYMBOL-FUNCTION COMPILER-CONTEXT 
-                                             FORM))
+           ((IL:SETF-SYMBOL-FUNCTION) (COMPILER-APPLY IL:SETF-SYMBOL-FUNCTION COMPILER-CONTEXT FORM))
            ((IL:DEFINEQ) (COMPILER-APPLY IL:DEFINEQ COMPILER-CONTEXT FORM))
            ((IL:DEFINE-FILE-INFO) (COMPILER-APPLY IL:DEFINE-FILE-INFO COMPILER-CONTEXT FORM))
            ((MAKE-PACKAGE IN-PACKAGE SHADOW SHADOWING-IMPORT EXPORT UNEXPORT USE-PACKAGE 
-                   UNUSE-PACKAGE IMPORT DEFPACKAGE) (COMPILER-APPLY PACKAGE-FORM COMPILER-CONTEXT
+                   UNUSE-PACKAGE IMPORT DEFPACKAGE) (COMPILER-APPLY PACKAGE-FORM COMPILER-CONTEXT 
                                                            FORM))
            ((PROCLAIM) (COMPILER-APPLY PROCLAIM COMPILER-CONTEXT FORM))
            ((COMPILER-LET) (COMPILER-APPLY COMPILER-LET COMPILER-CONTEXT FORM))
@@ -522,11 +516,11 @@ LAP file created ~A.~%~%"
                    (DOLIST (PAIR (UNKNOWN-FUNCTION-WARNING-CALL-LIST CONDITION))
                        (FORMAT T "  ~S -- called from " (CAR PAIR))
 
-                       (IL:* IL:|;;| 
-                     "I almost used this hairy thing, but FORMAT is too slow...  Aren't you glad?")
+                       (IL:* IL:|;;| 
+                       "I almost used this hairy thing, but FORMAT is too slow...  Aren't you glad?")
 
-                       (IL:* IL:|;;| 
-                     "\"~:[nowhere?!~;~:*~{~#[~;~S~;~S and ~S~:;~@{~#[~;and ~]~S~^, ~}~]~}.~]~%\"")
+                       (IL:* IL:|;;| 
+                       "\"~:[nowhere?!~;~:*~{~#[~;~S~;~S and ~S~:;~@{~#[~;and ~]~S~^, ~}~]~}.~]~%\"")
 
                        (COND
                           ((NULL (CDR PAIR))
@@ -563,32 +557,32 @@ LAP file created ~A.~%~%"
 
 (DEFUN WARN-ABOUT-UNKNOWN-FUNCTIONS ()
 
-(IL:* IL:|;;;| "If there's anything on *UNKNOWN-FUNCTIONS*, issue a summary and warning.")
+(IL:* IL:|;;;| "If there's anything on *UNKNOWN-FUNCTIONS*, issue a summary and warning.")
 
    (WHEN (NOT (NULL *UNKNOWN-FUNCTIONS*))
        (WARN 'UNKNOWN-FUNCTION-WARNING :CALL-LIST *UNKNOWN-FUNCTIONS*)))
 
 (DEFVAR *PROCESSED-FUNCTIONS*
 
-(IL:* IL:|;;;| "A list of the names of the global functions processed during this compilation.  Used in conjunction with *UNKNOWN-FUNCTIONS* to produce a warning at the end of compilation if there are any functions called but not defined.")
+(IL:* IL:|;;;| "A list of the names of the global functions processed during this compilation.  Used in conjunction with *UNKNOWN-FUNCTIONS* to produce a warning at the end of compilation if there are any functions called but not defined.")
 
    )
 
 (DEFVAR *UNKNOWN-FUNCTIONS*
 
-(IL:* IL:|;;;| "A list containing the names of undefined global functions called from code in the current compilation.  Actually, it's an AList mapping the unknown function to the list of functions in which it is called.  Used in conjunction with *PROCESSED-FUNCTIONS* to produce a warning at the end of compilation if there are any functions called but not defined.")
+(IL:* IL:|;;;| "A list containing the names of undefined global functions called from code in the current compilation.  Actually, it's an AList mapping the unknown function to the list of functions in which it is called.  Used in conjunction with *PROCESSED-FUNCTIONS* to produce a warning at the end of compilation if there are any functions called but not defined.")
 
    )
 
 (DEFVAR *CURRENT-FUNCTION*
 
-(IL:* IL:|;;;| "The name of the unit currently being compiled.")
+(IL:* IL:|;;;| "The name of the unit currently being compiled.")
 
    )
 
 (DEFINE-CONDITION ASSEMBLER-ERROR
 
-(IL:* IL:|;;;| "Signalled by an assembler when it encounters an unrecoverable error. The compiler catches such, prints an error message, and continues with the next form on the file.")
+(IL:* IL:|;;;| "Signalled by an assembler when it encounters an unrecoverable error. The compiler catches such, prints an error message, and continues with the next form on the file.")
 
     (ERROR)
    (FORMAT-STRING FORMAT-ARGUMENTS)
@@ -620,33 +614,33 @@ LAP file created ~A.~%~%"
 
 (DEFVAR *BLOCK-HASH-TABLE* NIL
 
-(IL:* IL:|;;;| "A mapping from function names to lists of BLOCK-DECL structures describing blocks that include that function.  Initialized from the list of BLOCK: declarations gathered into *BLOCKS* (q.v.) during the preprocessing scan.")
+(IL:* IL:|;;;| "A mapping from function names to lists of BLOCK-DECL structures describing blocks that include that function.  Initialized from the list of BLOCK: declarations gathered into *BLOCKS* (q.v.) during the preprocessing scan.")
 
    )
 
 (DEFVAR *BLOCKS* NIL
 
-(IL:* IL:|;;;| "A list of the Interlisp block descriptions found on the file.  This list is added to during the preprocessing scan of the file and then used for initialising *BLOCK-HASH-TABLE* (q.v.)")
+(IL:* IL:|;;;| "A list of the Interlisp block descriptions found on the file.  This list is added to during the preprocessing scan of the file and then used for initialising *BLOCK-HASH-TABLE* (q.v.)")
 
    )
 
 (DEFVAR *CURRENT-BLOCK* NIL
 
-(IL:* IL:|;;;| "Bound during compilation of a LAMBDA to the BLOCK-DECL structure describing the block containing the current function.  This is NIL if the function is not a part of any block.")
+(IL:* IL:|;;;| "Bound during compilation of a LAMBDA to the BLOCK-DECL structure describing the block containing the current function.  This is NIL if the function is not a part of any block.")
 
    )
 
 (DEFSTRUCT (BLOCK-DECL (:INLINE NIL))
 
-(IL:* IL:|;;;| 
-"A BLOCK-DECL holds the information describing a particular Interlisp BLOCK: declaration.")
+(IL:* IL:|;;;| 
+"A BLOCK-DECL holds the information describing a particular Interlisp BLOCK: declaration.")
 
-(IL:* IL:|;;;| "NAME is the symbol naming the block or NIL if this is only a pseudo-block.")
+(IL:* IL:|;;;| "NAME is the symbol naming the block or NIL if this is only a pseudo-block.")
 
-(IL:* IL:|;;;| 
-"FN-NAME-MAP is an AList mapping internal function names to their new \\BLOCK/FN style name.")
+(IL:* IL:|;;;| 
+"FN-NAME-MAP is an AList mapping internal function names to their new \\BLOCK/FN style name.")
 
-(IL:* IL:|;;;| "SPECVARS, LOCALVARS, LOCALFREEVARS and GLOBALVARS contain the values those variables should have during the compilation of functions in this block.")
+(IL:* IL:|;;;| "SPECVARS, LOCALVARS, LOCALFREEVARS and GLOBALVARS contain the values those variables should have during the compilation of functions in this block.")
 
    NAME
    FN-NAME-MAP
@@ -657,7 +651,7 @@ LAP file created ~A.~%~%"
 
 (DEFUN SET-UP-BLOCK-DECLS (DECLS)
 
-(IL:* IL:|;;;| "Parse the given list of Interlisp BLOCK: declarations and return a hash-table mapping functions named therein to a list of the BLOCK-DECLs representing decls mentioning that function.")
+(IL:* IL:|;;;| "Parse the given list of Interlisp BLOCK: declarations and return a hash-table mapping functions named therein to a list of the BLOCK-DECLs representing decls mentioning that function.")
 
    (LET ((HASH-TABLE (MAKE-HASH-TABLE)))
         (DOLIST (DECL DECLS)
@@ -670,9 +664,9 @@ LAP file created ~A.~%~%"
                    (NOT-RENAMED-FNS (CONS BLOCK-NAME (UNION IL:RETFNS IL:NOLINKFNS)))
                    (FNS NIL))
                   (DECLARE (SPECIAL IL:SPECVARS IL:LOCALVARS IL:LOCALFREEVARS IL:GLOBALVARS 
-                                      IL:NOLINKFNS))
+                                  IL:NOLINKFNS))
 
-                  (IL:* IL:|;;| "We do this next bit because BCOMPL2 does it.")
+                  (IL:* IL:|;;| "We do this next bit because BCOMPL2 does it.")
 
                   (COND
                      ((NULL BLOCK-NAME)
@@ -681,7 +675,7 @@ LAP file created ~A.~%~%"
                      (T (SETQ IL:LOCALVARS T)
                         (SETQ IL:SPECVARS IL:SYSSPECVARS)))
 
-                  (IL:* IL:|;;| "For each item in the declaration, either add it to the list of functions or make the appropriate modifications to the named variable.")
+                  (IL:* IL:|;;| "For each item in the declaration, either add it to the list of functions or make the appropriate modifications to the named variable.")
 
                   (DOLIST (ITEM (CDR DECL))
                       (COND
@@ -709,8 +703,8 @@ LAP file created ~A.~%~%"
                                             "DONTCOMPILEFNS is not supported in BLOCK: declarations."
                                                          ))
                               ((IL:BLKAPPLYFNS IL:NOLINKFNS IL:RETFNS IL:ENTRIES) 
-                                                             (IL:* IL:\; 
-                           "These functions should not be renamed, according to BYTEBLOCKCOMPILE2.")
+                                                             (IL:* IL:\; 
+                             "These functions should not be renamed, according to BYTEBLOCKCOMPILE2.")
                                  (WHEN (CONSP (CDR ITEM))
                                      (SETQ NOT-RENAMED-FNS (APPEND (CDR ITEM)
                                                                   NOT-RENAMED-FNS))))
@@ -729,14 +723,14 @@ LAP file created ~A.~%~%"
                         IL:GLOBALVARS)
                   (LET* ((BLOCK-NAME-STRING (STRING BLOCK-NAME))
                          (BLOCK-PACKAGE (SYMBOL-PACKAGE BLOCK-NAME)))
-                        (UNLESS (NULL BLOCK-NAME)            (IL:* IL:\; 
-                                                           "NIL blocks don't do renaming.")
+                        (UNLESS (NULL BLOCK-NAME)            (IL:* IL:\; 
+                                                             "NIL blocks don't do renaming.")
                             (SETF (BLOCK-DECL-FN-NAME-MAP BD)
                                   (IL:|for| FN IL:|in| (NSET-DIFFERENCE FNS NOT-RENAMED-FNS)
                                      IL:|collect| (CONS FN (INTERN (CONCATENATE 'STRING "\\" 
-                                                                              BLOCK-NAME-STRING "/"
-                                                                              (STRING FN))
-                                                                      BLOCK-PACKAGE))))))))
+                                                                          BLOCK-NAME-STRING "/"
+                                                                          (STRING FN))
+                                                                  BLOCK-PACKAGE))))))))
         HASH-TABLE))
 
 
@@ -761,8 +755,8 @@ LAP file created ~A.~%~%"
                                (RETURN NIL))))))))
 
 (DEFUN COMPILE-AND-DUMP (NAME DEFN KIND)
-   (LET ((*CURRENT-BLOCK* NIL)                               (IL:* IL:\; 
-                                          "So that we aren't dependent upon the top-level binding.")
+   (LET ((*CURRENT-BLOCK* NIL)                               (IL:* IL:\; 
+                                            "So that we aren't dependent upon the top-level binding.")
          )
         (COND
            ((AND (SYMBOLP NAME)
@@ -783,7 +777,7 @@ LAP file created ~A.~%~%"
                                   (IL:LOCALFREEVARS (BLOCK-DECL-LOCALFREEVARS *CURRENT-BLOCK*))
                                   (IL:GLOBALVARS (BLOCK-DECL-GLOBALVARS *CURRENT-BLOCK*)))
                                  (DECLARE (SPECIAL IL:SPECVARS IL:LOCALVARS IL:LOCALFREEVARS 
-                                                     IL:GLOBALVARS))
+                                                 IL:GLOBALVARS))
                                  (COMPILE-AND-DUMP-1 NEW-NAME DEFN KIND)))))))
            (T (COMPILE-AND-DUMP-1 NAME DEFN KIND)))))
 
@@ -824,14 +818,14 @@ LAP file created ~A.~%~%"
                               (SYMBOL-FUNCTION NAME)))
                     (SETF (SYMBOL-FUNCTION NAME)
                           (D-ASSEM:INTERN-DCODE DCODE)))
-                 (:ONE-SHOT (LET ((IL:FILEPKGFLG NIL))       (IL:* IL:\; 
-                        "so that things don't get marked as changed when you execute the one-shot.")
+                 (:ONE-SHOT (LET ((IL:FILEPKGFLG NIL))       (IL:* IL:\; 
+                          "so that things don't get marked as changed when you execute the one-shot.")
                                  (DECLARE (SPECIAL IL:FILEPKGFLG))
                                  (FUNCALL (D-ASSEM:INTERN-DCODE DCODE))))))))
 
 (DEFUN COMPILE-ONE-LAMBDA (NAME DEFN)
 
-(IL:* IL:|;;;| "Return a LAP function for the given function definition.  NAME is the symbol with which the definition will be associated at load time and DEFN is the LAMBDA-expression to be compiled.")
+(IL:* IL:|;;;| "Return a LAP function for the given function definition.  NAME is the symbol with which the definition will be associated at load time and DEFN is the LAMBDA-expression to be compiled.")
 
    (LET ((*CONTEXT* *NULL-CONTEXT*)
          (*AUTOMATIC-SPECIAL-DECLARATIONS* NIL))
@@ -844,9 +838,9 @@ LAP file created ~A.~%~%"
              LAP-CODE)))
 
 (DEFUN OPTIMIZE-AND-MACROEXPAND (FORM &OPTIONAL (ENVIRONMENT *ENVIRONMENT*)
-                                          (CONTEXT *CONTEXT*))
+                                      (CONTEXT *CONTEXT*))
 
-(IL:* IL:|;;;| "Analagous to MACROEXPAND: keep trying OPTIMIZE-AND-MACROEXPAND-1 until it fails to change the form.")
+(IL:* IL:|;;;| "Analagous to MACROEXPAND: keep trying OPTIMIZE-AND-MACROEXPAND-1 until it fails to change the form.")
 
    (PROG (NEW-FORM CHANGED-P)
          (MULTIPLE-VALUE-SETQ (NEW-FORM CHANGED-P)
@@ -861,9 +855,9 @@ LAP file created ~A.~%~%"
              (RETURN (VALUES NEW-FORM T)))))
 
 (DEFUN OPTIMIZE-AND-MACROEXPAND-1 (FORM &OPTIONAL (ENVIRONMENT *ENVIRONMENT*)
-                                            (CONTEXT *CONTEXT*))
+                                        (CONTEXT *CONTEXT*))
 
-(IL:* IL:|;;;| "If the given form is a list, then look for macros and optimizers defined for its CAR.  Return two values like MACROEXPAND-1.")
+(IL:* IL:|;;;| "If the given form is a list, then look for macros and optimizers defined for its CAR.  Return two values like MACROEXPAND-1.")
 
    (LET ((*NEW-COMPILER-IS-EXPANDING* T))
         (COND
@@ -871,23 +865,23 @@ LAP file created ~A.~%~%"
                 (NOT (SYMBOLP (CAR FORM))))
             (VALUES FORM NIL))
            (T 
-              (IL:* IL:|;;| "Check for compiler optimizers.")
+              (IL:* IL:|;;| "Check for compiler optimizers.")
 
               (LET ((OPTIMIZERS (OPTIMIZER-LIST (CAR FORM))))
                    (WHEN (AND (NOT (NULL OPTIMIZERS))
                               (NOT (ENV-FBOUNDP ENVIRONMENT (CAR FORM)
                                           :LEXICAL-ONLY T))
                               (NOT (ENV-INLINE-DISALLOWED ENVIRONMENT (CAR FORM))))
-                                                             (IL:* IL:\; 
-       "Optimizers cannot apply to lexical functions or macros or to functions declared NOTINLINE.")
+                                                             (IL:* IL:\; 
+         "Optimizers cannot apply to lexical functions or macros or to functions declared NOTINLINE.")
                        (DOLIST (OPT-FN OPTIMIZERS)
                            (LET ((RESULT (FUNCALL OPT-FN FORM ENVIRONMENT CONTEXT)))
                                 (UNLESS (OR (EQ RESULT 'PASS)
                                             (EQ RESULT 'IL:IGNOREMACRO)
-                                            (EQ RESULT FORM))(IL:* IL:\; "This optimizer fired.")
+                                            (EQ RESULT FORM))(IL:* IL:\; "This optimizer fired.")
                                     (RETURN-FROM OPTIMIZE-AND-MACROEXPAND-1 (VALUES RESULT T)))))))
 
-              (IL:* IL:|;;| "Check for a macro expansion function.")
+              (IL:* IL:|;;| "Check for a macro expansion function.")
 
               (MACROEXPAND-1 FORM ENVIRONMENT)))))
 
@@ -919,47 +913,45 @@ LAP file created ~A.~%~%"
                                   (IL:RPAQQ (IF (EQ (SECOND FORM)
                                                     *INPUT-FILECOMS-VARIABLE*)
 
-                                                (IL:* IL:|;;| 
-                                              "Don't remove comments from file coms")
+                                                (IL:* IL:|;;| "Don't remove comments from file coms")
 
                                                 FORM
                                                 (REMOVE-COMMENTS FORM)))
                                   (IL:DEFCLASS 
 
-                                     (IL:* IL:|;;| 
-                                   "Don't remove comments from LOOPS DEFCLASS forms")
+                                     (IL:* IL:|;;| "Don't remove comments from LOOPS DEFCLASS forms")
 
                                      FORM)
                                   (IL:DATATYPE 
 
-                                     (IL:* IL:|;;| "Don't remove comments from record declarations")
+                                     (IL:* IL:|;;| "Don't remove comments from record declarations")
 
                                      FORM)
                                   (IL:RECORD 
 
-                                     (IL:* IL:|;;| "Don't remove comments from record declarations")
+                                     (IL:* IL:|;;| "Don't remove comments from record declarations")
 
                                      FORM)
                                   (IL:BLOCKRECORD 
 
-                                     (IL:* IL:|;;| "Don't remove comments from record declarations")
+                                     (IL:* IL:|;;| "Don't remove comments from record declarations")
 
                                      FORM)
                                   (IL:DECLARE\: 
 
-                                     (IL:* IL:|;;| 
-                                   "Process each form inside this as though it were at top-level")
+                                     (IL:* IL:|;;| 
+                                     "Process each form inside this as though it were at top-level")
 
                                      (IL:FOR X IL:IN FORM
                                         IL:COLLECT (COND
-                                                          ((NOT (CONSP X))
-                                                           X)
-                                                          (T (CASE (CAR X)
-                                                                 (IL:DEFCLASS X)
-                                                                 (IL:DATATYPE X)
-                                                                 (IL:RECORD X)
-                                                                 (IL:BLOCKRECORD X)
-                                                                 (OTHERWISE (REMOVE-COMMENTS X)))))))
+                                                      ((NOT (CONSP X))
+                                                       X)
+                                                      (T (CASE (CAR X)
+                                                             (IL:DEFCLASS X)
+                                                             (IL:DATATYPE X)
+                                                             (IL:RECORD X)
+                                                             (IL:BLOCKRECORD X)
+                                                             (OTHERWISE (REMOVE-COMMENTS X)))))))
                                   (OTHERWISE (REMOVE-COMMENTS FORM)))))
                    (SCAN-ONE-FORM NEW-FORM *COMPILE-SCAN-CONTEXT*))
               (SCAN-ONE-FORM FORM *COMPILE-FILE-CONTEXT*)))
@@ -988,9 +980,10 @@ LAP file created ~A.~%~%"
             (WHEN *EVAL-WHEN-COMPILE* (EVAL FORM))
             (LET ((NAME (SECOND NAME-FORM))
                   (DEFINITION (SECOND FUNCTION-FORM)))
-                 (COMPILER-APPLY PROCESS-FUNCTION COMPILER-CONTEXT (FORMAT NIL "~s ~a"
-                                                                              (CAR DEFINITION)
-                                                                              NAME)
+                 (COMPILER-APPLY PROCESS-FUNCTION COMPILER-CONTEXT (FORMAT NIL "~s ~a" (CAR 
+                                                                                           DEFINITION
+                                                                                            )
+                                                                          NAME)
                         NAME DEFINITION)))
            (T (COMPILER-APPLY PROCESS-LOOSE-FORM COMPILER-CONTEXT FORM)))))
 
@@ -1002,8 +995,8 @@ LAP file created ~A.~%~%"
                                          (SECOND DEFN)
                                          (CONS 'IL:LAMBDA (CDR DEFN)))))
                          (COMPILER-APPLY PROCESS-FUNCTION COMPILER-CONTEXT (FORMAT NIL "~s ~s"
-                                                                                      (CAR REAL-DEFN)
-                                                                                      (CAR DEFN))
+                                                                                  (CAR REAL-DEFN)
+                                                                                  (CAR DEFN))
                                 (CAR DEFN)
                                 REAL-DEFN)))
           (CDR FORM)))
@@ -1019,10 +1012,10 @@ LAP file created ~A.~%~%"
                          VALUE)
                    (ENV-DECLARE-A-GLOBAL (FIND-TOP-ENVIRONMENT *ENVIRONMENT*)
                           SYMBOL)))
-          (SCAN-ONE-FORM `(NAMED-PROGN DEFCONSTANT ,SYMBOL
-                                     (LOCALLY (DECLARE (GLOBAL ,SYMBOL))
-                                            ,(EXPAND-DEFINER 'DEFCONSTANT (REMOVE-COMMENTS FORM)
-                                                    *ENVIRONMENT*)))
+          (SCAN-ONE-FORM `(NAMED-PROGN DEFCONSTANT ,SYMBOL (LOCALLY (DECLARE (GLOBAL ,SYMBOL))
+                                                                  ,(EXPAND-DEFINER 'DEFCONSTANT
+                                                                          (REMOVE-COMMENTS FORM)
+                                                                          *ENVIRONMENT*)))
                  COMPILER-CONTEXT)))
 
 (DEFUN COMPILE-FILE-DECLARE\: (COMPILER-CONTEXT FORM &OPTIONAL (DOCOPY T))
@@ -1044,9 +1037,8 @@ LAP file created ~A.~%~%"
                   ((IL:COPYWHEN) (SETQ DOCOPY (IL:EVAL (CAR (SETQ TAIL (CDR TAIL))))))
                   ((IL:FIRST) )
                   ((IL:NOTFIRST IL:COMPILERVARS) )
-                  (OTHERWISE (COMPILER-MESSAGE 
-                                    "Warning: Ignoring unrecognized DECLARE: tag: ~S~%" (CAR TAIL))))
-              )
+                  (OTHERWISE (COMPILER-MESSAGE "Warning: Ignoring unrecognized DECLARE: tag: ~S~%"
+                                    (CAR TAIL)))))
              ((EQ 'IL:DECLARE\: (CAR (CAR TAIL)))
               (COMPILER-APPLY IL:DECLARE\: COMPILER-CONTEXT (CAR TAIL)
                      DOCOPY))
@@ -1068,11 +1060,13 @@ LAP file created ~A.~%~%"
          IL:FILECREATEDLOC)
         (DECLARE (SPECIAL *STANDARD-INPUT* IL:FILECREATEDLOC))
         (EVAL FORM))
-   (COMPILER-APPLY PROCESS-LOOSE-FORM COMPILER-CONTEXT
-          `(LET ((*STANDARD-INPUT* (OPEN "{Null}" :DIRECTION :OUTPUT))
-                 IL:FILECREATEDLOC)
-                (DECLARE (SPECIAL *STANDARD-INPUT* IL:FILECREATEDLOC))
-                ,FORM))
+   (COMPILER-APPLY PROCESS-LOOSE-FORM COMPILER-CONTEXT `(LET ((*STANDARD-INPUT* (OPEN "{Null}" 
+                                                                                      :DIRECTION 
+                                                                                      :OUTPUT))
+                                                              IL:FILECREATEDLOC)
+                                                             (DECLARE (SPECIAL *STANDARD-INPUT* 
+                                                                             IL:FILECREATEDLOC))
+                                                             ,FORM))
    (COMPILER-APPLY PROCESS-OUTSTANDING-LOOSE-FORMS COMPILER-CONTEXT))
 
 (DEFUN COMPILE-FILE-PACKAGE-FORM (COMPILER-CONTEXT FORM)
@@ -1229,7 +1223,7 @@ LAP file created ~A.~%~%"
 
 (DEFUN CRACK-DEFMACRO (FORM)
 
-(IL:* IL:|;;;| "FORM is a call to DEFMACRO.  Return two values: the LAMBDA-expression representing the expansion function for the macro and the documentation string, if present.")
+(IL:* IL:|;;;| "FORM is a call to DEFMACRO.  Return two values: the LAMBDA-expression representing the expansion function for the macro and the documentation string, if present.")
 
    (LET ((NAME (SECOND FORM))
          (ARG-LIST (THIRD FORM))
@@ -1245,7 +1239,7 @@ LAP file created ~A.~%~%"
 
 (DEFUN ESTABLISH-MACRO-IN-COMPILER (NAME EXPN-FN)
 
-(IL:* IL:|;;;| "Arrange for the symbol NAME to refer to a macro with the given expansion-function EXPN-FN within this compilation.")
+(IL:* IL:|;;;| "Arrange for the symbol NAME to refer to a macro with the given expansion-function EXPN-FN within this compilation.")
 
    (ENV-BIND-FUNCTION (FIND-TOP-ENVIRONMENT *ENVIRONMENT*)
           NAME :MACRO EXPN-FN))
@@ -1261,18 +1255,18 @@ LAP file created ~A.~%~%"
 
 (DEFVAR *MAKING-SECOND-PASS* NIL
 
-(IL:* IL:|;;;| "Bound to T during second pass over saved forms; used for :Process-Entire-File option to compile-file.")
+(IL:* IL:|;;;| "Bound to T during second pass over saved forms; used for :Process-Entire-File option to compile-file.")
 
    )
 
 (DEFVAR *PREPROCESSING-PHASE* NIL
 
-(IL:* IL:|;;;| "Bound to T during the preprocessing phase so that inferiors can tell.")
+(IL:* IL:|;;;| "Bound to T during the preprocessing phase so that inferiors can tell.")
 
    )
 
 (DEFUN COMPILE-SCAN-DECLARE\: (COMPILER-CONTEXT FORM &OPTIONAL (DOCOPY T)
-                                         (DOFIRST NIL))
+                                     (DOFIRST NIL))
    (LET ((FIRST-FORMS NIL)
          (IL:DFNFLG IL:DFNFLG)
          (*EVAL-WHEN-COMPILE* *EVAL-WHEN-COMPILE*))
@@ -1295,9 +1289,8 @@ LAP file created ~A.~%~%"
                   ((IL:FIRST) (SETQ DOFIRST T))
                   ((IL:NOTFIRST) (SETQ DOFIRST NIL))
                   ((IL:COMPILERVARS) (SETQ IL:DFNFLG T))
-                  (OTHERWISE (COMPILER-MESSAGE 
-                                    "Warning: Ignoring unrecognized DECLARE: tag: ~S~%" (CAR TAIL))))
-              )
+                  (OTHERWISE (COMPILER-MESSAGE "Warning: Ignoring unrecognized DECLARE: tag: ~S~%"
+                                    (CAR TAIL)))))
              ((EQ 'IL:DECLARE\: (CAR (CAR TAIL)))
               (COMPILER-APPLY IL:DECLARE\: COMPILER-CONTEXT (CAR TAIL)
                      DOCOPY DOFIRST))
@@ -1416,7 +1409,7 @@ LAP file created ~A.~%~%"
           (*UNKNOWN-FUNCTIONS* NIL)
           (*CURRENT-FUNCTION* NAME)
           (*INPUT-STREAM* NIL)
-          (*LAP-FLG* LAP)                                    (IL:* IL:\; "FXAR-111")
+          (*LAP-FLG* LAP)                                    (IL:* IL:\; "FXAR-111")
           (COMPILED-DEFN (RAW-COMPILE NAME DEFN)))
          (DECLARE (SPECIAL IL:SPECVARS IL:LOCALVARS IL:LOCALFREEVARS IL:GLOBALVARS))
          (WARN-ABOUT-UNKNOWN-FUNCTIONS)
@@ -1516,7 +1509,7 @@ LAP file created ~A.~%~%"
    (LET ((*ENVIRONMENT* (COPY-ENV *ENVIRONMENT*))
          COMPILED-DEFN)
 
-        (IL:* IL:|;;| "The resulting function is defined locally, so we have to compile for the host architecture rather than the target architecture:")
+        (IL:* IL:|;;| "The resulting function is defined locally, so we have to compile for the host architecture rather than the target architecture:")
 
         (SETF (ENV-TARGET-ARCHITECTURE *ENVIRONMENT*)
               *HOST-ARCHITECTURE*)
@@ -1531,20 +1524,20 @@ LAP file created ~A.~%~%"
 
 (DEFUN COMPILE-DEFINER-OUTSTANDING-LOOSE-FORMS (COMPILER-CONTEXT)
 
-   (IL:* IL:|;;| 
- "Compile any outstanding loose forms in the context of a structure definition being compiled")
+   (IL:* IL:|;;| 
+   "Compile any outstanding loose forms in the context of a structure definition being compiled")
 
    (WHEN (NOT (NULL *OUTSTANDING-LOOSE-FORMS*))
        (LET* ((*ENVIRONMENT* (COPY-ENV *ENVIRONMENT*))
               COMPILED-DEFN)
 
-             (IL:* IL:|;;| "The resulting function is executed locally, so have to compile for the host architecture rather than the target architecture:")
+             (IL:* IL:|;;| "The resulting function is executed locally, so have to compile for the host architecture rather than the target architecture:")
 
              (SETF (ENV-TARGET-ARCHITECTURE *ENVIRONMENT*)
                    *HOST-ARCHITECTURE*)
              (SETQ COMPILED-DEFN (RAW-COMPILE *LOOSE-NAME* `(LAMBDA NIL ,@(REVERSE 
                                                                             *OUTSTANDING-LOOSE-FORMS*
-                                                                                     ))))
+                                                                                 ))))
              (SETQ *OUTSTANDING-LOOSE-FORMS* NIL)
              (FUNCALL COMPILED-DEFN))))
 
@@ -1561,36 +1554,37 @@ LAP file created ~A.~%~%"
 
 
 (IL:PUTPROPS IL:XCLC-TOP-LEVEL IL:MAKEFILE-ENVIRONMENT (:READTABLE "XCL" :PACKAGE
-                                                                      (DEFPACKAGE "COMPILER"
-                                                                             (:USE "LISP" "XCL"))))
-(IL:PUTPROPS IL:XCLC-TOP-LEVEL IL:COPYRIGHT ("Venue & Xerox Corporation" 1986 1987 1988 1989 1990 1991
- 1994 2020))
+                                                              (DEFPACKAGE "COMPILER" (:USE "LISP" 
+                                                                                           "XCL"))))
 (IL:DECLARE\: IL:DONTCOPY
-  (IL:FILEMAP (NIL (7050 7194 (COMPILER-ERROR 7050 . 7194)) (8749 17618 (COMPILE-FILE 8749 . 17618)) (
-17620 20017 (START-COMPILATION 17620 . 20017)) (20019 21292 (FINISH-COMPILATION 20019 . 21292)) (21294
- 26872 (SCAN-ONE-FORM 21294 . 26872)) (26874 27071 (FUNCTION-P 26874 . 27071)) (28998 29614 (
-CHECK-FOR-UNKNOWN-FUNCTION 28998 . 29614)) (29616 29870 (WARN-ABOUT-UNKNOWN-FUNCTIONS 29616 . 29870)) 
-(31345 31475 (ASSEMBLER-ERROR 31345 . 31475)) (33238 38333 (SET-UP-BLOCK-DECLS 33238 . 38333)) (38481 
-39021 (CONSTANT-EXPRESSION-P 38481 . 39021)) (39023 40665 (COMPILE-AND-DUMP 39023 . 40665)) (40667 
-42619 (COMPILE-AND-DUMP-1 40667 . 42619)) (42621 43312 (COMPILE-ONE-LAMBDA 42621 . 43312)) (43314 
-44035 (OPTIMIZE-AND-MACROEXPAND 43314 . 44035)) (44037 45685 (OPTIMIZE-AND-MACROEXPAND-1 44037 . 45685
-)) (45893 49547 (PROCESS-FORMS 45893 . 49547)) (49549 49684 (MAYBE-REMOVE-COMMENTS 49549 . 49684)) (
-49686 50599 (COMPILE-FILE-SETF-SYMBOL-FUNCTION 49686 . 50599)) (50601 51400 (COMPILE-FILE-DEFINEQ 
-50601 . 51400)) (51402 52329 (COMPILE-FILE-DEFCONSTANT 51402 . 52329)) (52331 54264 (
-COMPILE-FILE-DECLARE\: 52331 . 54264)) (54266 54828 (COMPILE-FILE-DEFINE-FILE-INFO 54266 . 54828)) (
-54830 55074 (COMPILE-FILE-PACKAGE-FORM 54830 . 55074)) (55076 57795 (COMPILE-FILE-PROCLAMATION 55076
- . 57795)) (57797 59208 (COMPILE-FILE-COMPILER-LET 57797 . 59208)) (59210 59890 (COMPILE-FILE-MACROLET
- 59210 . 59890)) (59892 60882 (COMPILE-FILE-DEFINER 59892 . 60882)) (60884 61812 (
-COMPILE-FILE-NAMED-PROGN 60884 . 61812)) (61814 62464 (COMPILE-FILE-OUTSTANDING-LOOSE-FORMS 61814 . 
-62464)) (62466 62608 (COMPILE-FILE-LOOSE-FORM 62466 . 62608)) (62610 62929 (
-COMPILE-FILE-PROCESS-FUNCTION 62610 . 62929)) (62931 63608 (CRACK-DEFMACRO 62931 . 63608)) (63610 
-63893 (ESTABLISH-MACRO-IN-COMPILER 63610 . 63893)) (64587 66834 (COMPILE-SCAN-DECLARE\: 64587 . 66834)
-) (66836 67198 (COMPILE-SCAN-DEFINE-FILE-INFO 66836 . 67198)) (67200 68114 (COMPILE-SCAN-MACROLET 
-67200 . 68114)) (68116 68751 (COMPILE-SCAN-DEFINER 68116 . 68751)) (68753 68886 (
-COMPILE-SCAN-LOOSE-FORM 68753 . 68886)) (68888 68962 (COMPILE-SCAN-OUTSTANDING-LOOSE-FORMS 68888 . 
-68962)) (68964 69412 (MERGE-FIRST-FORMS 68964 . 69412)) (69537 71788 (COMPILE 69537 . 71788)) (71790 
-72043 (COMPILE-DEFINER 71790 . 72043)) (72045 73084 (COMPILE-FORM 72045 . 73084)) (73086 73958 (
-RAW-COMPILE 73086 . 73958)) (73960 75059 (COMPILE-DEFINER-DEFINER 73960 . 75059)) (75061 75899 (
-COMPILE-DEFINER-NAMED-PROGN 75061 . 75899)) (75901 76736 (COMPILE-DEFINER-PROCESS-FUNCTION 75901 . 
-76736)) (76738 77694 (COMPILE-DEFINER-OUTSTANDING-LOOSE-FORMS 76738 . 77694)))))
+  (IL:FILEMAP (NIL (6860 7004 (COMPILER-ERROR 6860 . 7004)) (7006 7507 (COMPILER-APPLY 7006 . 7507)) (
+8559 17297 (COMPILE-FILE 8559 . 17297)) (17299 19704 (START-COMPILATION 17299 . 19704)) (19706 20979 (
+FINISH-COMPILATION 19706 . 20979)) (20981 26437 (SCAN-ONE-FORM 20981 . 26437)) (26439 26636 (
+FUNCTION-P 26439 . 26636)) (26638 26760 (COMPILER-MESSAGE 26638 . 26760)) (26762 26850 (
+COMPILING-MESSAGE 26762 . 26850)) (26852 26919 (DONE-MESSAGE 26852 . 26919)) (28567 29183 (
+CHECK-FOR-UNKNOWN-FUNCTION 28567 . 29183)) (29185 29439 (WARN-ABOUT-UNKNOWN-FUNCTIONS 29185 . 29439)) 
+(30914 31044 (ASSEMBLER-ERROR 30914 . 31044)) (32807 37890 (SET-UP-BLOCK-DECLS 32807 . 37890)) (38038 
+38578 (CONSTANT-EXPRESSION-P 38038 . 38578)) (38580 40220 (COMPILE-AND-DUMP 38580 . 40220)) (40222 
+42176 (COMPILE-AND-DUMP-1 40222 . 42176)) (42178 42869 (COMPILE-ONE-LAMBDA 42178 . 42869)) (42871 
+43588 (OPTIMIZE-AND-MACROEXPAND 42871 . 43588)) (43590 45236 (OPTIMIZE-AND-MACROEXPAND-1 43590 . 45236
+)) (45238 45442 (EXPAND-DEFINER 45238 . 45442)) (45444 48977 (PROCESS-FORMS 45444 . 48977)) (48979 
+49114 (MAYBE-REMOVE-COMMENTS 48979 . 49114)) (49116 50132 (COMPILE-FILE-SETF-SYMBOL-FUNCTION 49116 . 
+50132)) (50134 50925 (COMPILE-FILE-DEFINEQ 50134 . 50925)) (50927 51935 (COMPILE-FILE-DEFCONSTANT 
+50927 . 51935)) (51937 53854 (COMPILE-FILE-DECLARE\: 51937 . 53854)) (53856 54795 (
+COMPILE-FILE-DEFINE-FILE-INFO 53856 . 54795)) (54797 55041 (COMPILE-FILE-PACKAGE-FORM 54797 . 55041)) 
+(55043 57762 (COMPILE-FILE-PROCLAMATION 55043 . 57762)) (57764 59175 (COMPILE-FILE-COMPILER-LET 57764
+ . 59175)) (59177 59857 (COMPILE-FILE-MACROLET 59177 . 59857)) (59859 60849 (COMPILE-FILE-DEFINER 
+59859 . 60849)) (60851 61779 (COMPILE-FILE-NAMED-PROGN 60851 . 61779)) (61781 62431 (
+COMPILE-FILE-OUTSTANDING-LOOSE-FORMS 61781 . 62431)) (62433 62575 (COMPILE-FILE-LOOSE-FORM 62433 . 
+62575)) (62577 62896 (COMPILE-FILE-PROCESS-FUNCTION 62577 . 62896)) (62898 63575 (CRACK-DEFMACRO 62898
+ . 63575)) (63577 63860 (ESTABLISH-MACRO-IN-COMPILER 63577 . 63860)) (64554 66781 (
+COMPILE-SCAN-DECLARE\: 64554 . 66781)) (66783 67145 (COMPILE-SCAN-DEFINE-FILE-INFO 66783 . 67145)) (
+67147 68061 (COMPILE-SCAN-MACROLET 67147 . 68061)) (68063 68698 (COMPILE-SCAN-DEFINER 68063 . 68698)) 
+(68700 68833 (COMPILE-SCAN-LOOSE-FORM 68700 . 68833)) (68835 68909 (
+COMPILE-SCAN-OUTSTANDING-LOOSE-FORMS 68835 . 68909)) (68911 69359 (MERGE-FIRST-FORMS 68911 . 69359)) (
+69484 71735 (COMPILE 69484 . 71735)) (71737 71990 (COMPILE-DEFINER 71737 . 71990)) (71992 73031 (
+COMPILE-FORM 71992 . 73031)) (73033 73905 (RAW-COMPILE 73033 . 73905)) (73907 75006 (
+COMPILE-DEFINER-DEFINER 73907 . 75006)) (75008 75846 (COMPILE-DEFINER-NAMED-PROGN 75008 . 75846)) (
+75848 76683 (COMPILE-DEFINER-PROCESS-FUNCTION 75848 . 76683)) (76685 77639 (
+COMPILE-DEFINER-OUTSTANDING-LOOSE-FORMS 76685 . 77639)))))
 IL:STOP
diff --git a/sources/XCLC-TOP-LEVEL.DFASL b/sources/XCLC-TOP-LEVEL.DFASL
index 8e34de38..8ad70f81 100644
Binary files a/sources/XCLC-TOP-LEVEL.DFASL and b/sources/XCLC-TOP-LEVEL.DFASL differ
