From df8c5a52f163f413eba966cd62699de497ebf819 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Tue, 17 Oct 2023 13:33:18 -0700 Subject: [PATCH] Also remade filemap for CMLCHARACTER (and changed from LCOM to DFASL) CLEANUP is confused about how to compile. This had FILETYPE = CL-COMPILE-TYPE, with an existing LCOM. It produced a new DFASL, but the LCOM was still hanging around. I'm deleting the LCOM here, pushing the new DFASL. --- sources/CMLCHARACTER | 304 ++++++++++++++++++------------------- sources/CMLCHARACTER.DFASL | Bin 0 -> 18673 bytes sources/CMLCHARACTER.LCOM | Bin 20600 -> 0 bytes 3 files changed, 147 insertions(+), 157 deletions(-) create mode 100644 sources/CMLCHARACTER.DFASL delete mode 100644 sources/CMLCHARACTER.LCOM diff --git a/sources/CMLCHARACTER b/sources/CMLCHARACTER index cec844f8..a77448ff 100644 --- a/sources/CMLCHARACTER +++ b/sources/CMLCHARACTER @@ -1,50 +1,46 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "28-Jun-99 21:54:32" {DSK}medley3.5>sources>CMLCHARACTER.;2 32559 - changes to%: (OPTIMIZERS CL:CODE-CHAR) - (FUNCTIONS CL:CODE-CHAR) +(FILECREATED "17-Oct-2023 13:16:14" {WMEDLEY}CMLCHARACTER.;3 31224 - previous date%: "18-Aug-95 14:45:44" {DSK}medley3.5>sources>CMLCHARACTER.;1) + :EDIT-BY rmk + :PREVIOUS-DATE "28-Jun-99 21:54:32" {WMEDLEY}CMLCHARACTER.;1) -(* ; " -Copyright (c) 1985, 1986, 1987, 1990, 1995, 1999 by Venue & Xerox Corporation. All rights reserved. -") (PRETTYCOMPRINT CMLCHARACTERCOMS) (RPAQQ CMLCHARACTERCOMS - [(COMS (* ; - "Interlisp CHARCODE; Some is here, the rest is in LLREAD.") + [(COMS (* ; + "Interlisp CHARCODE; Some is here, the rest is in LLREAD.") (FNS CHARCODE CHARCODE.UNDECODE) (PROP MACRO SELCHARQ ALPHACHARP DIGITCHARP UCASECODE) (OPTIMIZERS CHARCODE) (ALISTS (DWIMEQUIVLST SELCHARQ) (PRETTYEQUIVLST SELCHARQ))) - (COMS (* ; "Common Lisp CHARACTER type") + (COMS (* ; "Common Lisp CHARACTER type") (DECLARE%: EVAL@COMPILE DONTCOPY (RECORDS CHARACTER)) (VARIABLES \CHARHI) (VARIABLES CL:CHAR-BITS-LIMIT CL:CHAR-CODE-LIMIT CL:CHAR-CONTROL-BIT CL:CHAR-FONT-LIMIT CL:CHAR-HYPER-BIT CL:CHAR-META-BIT CL:CHAR-SUPER-BIT)) - (COMS (* ; "Basic character fns") + (COMS (* ; "Basic character fns") (FNS CL:CHAR-CODE CL:CHAR-INT CL:INT-CHAR) (FUNCTIONS CL:CODE-CHAR) (OPTIMIZERS CL:CHAR-CODE CL:CHAR-INT CL:CODE-CHAR CL:INT-CHAR)) - [COMS (* ; - "I/O; Some is here, the rest is in LLREAD.") + [COMS (* ; + "I/O; Some is here, the rest is in LLREAD.") (FNS CHARACTER.PRINT) (DECLARE%: DONTEVAL@LOAD DOCOPY (P (SETTOPVAL (\TYPEGLOBALVARIABLE 'CHARACTER T) (NTYPX (CL:CODE-CHAR 0 0 0))) (DEFPRINT 'CHARACTER 'CHARACTER.PRINT] (COMS - (* ;; "Common lisp character functions") + (* ;; "Common lisp character functions") (FNS CL:CHAR-BIT CL:CHAR-BITS CL:CHAR-DOWNCASE CL:CHAR-FONT CL:CHAR-NAME CL:CHAR-UPCASE CL:CHARACTER CL:NAME-CHAR CL:SET-CHAR-BIT) (FUNCTIONS CL:DIGIT-CHAR CL:MAKE-CHAR) (OPTIMIZERS CL:CHAR-UPCASE CL:CHAR-DOWNCASE CL:MAKE-CHAR)) (COMS - (* ;; "Predicates") + (* ;; "Predicates") (FNS CL:ALPHA-CHAR-P CL:ALPHANUMERICP CL:BOTH-CASE-P CL:CHARACTERP CL:GRAPHIC-CHAR-P CL:LOWER-CASE-P CL:STANDARD-CHAR-P CL:STRING-CHAR-P CL:UPPER-CASE-P) @@ -57,11 +53,11 @@ Copyright (c) 1985, 1986, 1987, 1990, 1995, 1999 by Venue & Xerox Corporation. CL:CHAR> CL:CHAR>= CL:CHARACTERP CL:LOWER-CASE-P CL:STRING-CHAR-P CL:UPPER-CASE-P)) (COMS - (* ;; "Internals") + (* ;; "Internals") (FUNCTIONS %%CHAR-DOWNCASE-CODE %%CHAR-UPCASE-CODE %%CODE-CHAR)) (COMS - (* ;; "Compiler options") + (* ;; "Compiler options") (PROP FILETYPE CMLCHARACTER) (DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY (LOCALVARS . T))) @@ -89,36 +85,35 @@ Copyright (c) 1985, 1986, 1987, 1990, 1995, 1999 by Venue & Xerox Corporation. ) (PUTPROPS SELCHARQ MACRO [F (CONS 'SELECTQ (CONS (CAR F) - (MAPLIST (CDR F) - (FUNCTION (LAMBDA (I) - (COND - ((CDR I) - (CONS - (CHARCODE.DECODE - (CAAR I)) - (CDAR I))) - (T (CAR I]) + (MAPLIST (CDR F) + (FUNCTION (LAMBDA (I) + (COND + ((CDR I) + (CONS (CHARCODE.DECODE + (CAAR I)) + (CDAR I))) + (T (CAR I]) (PUTPROPS ALPHACHARP MACRO ((CHAR) - ([LAMBDA (UCHAR) - (DECLARE (LOCALVARS UCHAR)) - (AND (IGEQ UCHAR (CHARCODE A)) - (ILEQ UCHAR (CHARCODE Z] - (LOGAND CHAR 95)))) + ([LAMBDA (UCHAR) + (DECLARE (LOCALVARS UCHAR)) + (AND (IGEQ UCHAR (CHARCODE A)) + (ILEQ UCHAR (CHARCODE Z] + (LOGAND CHAR 95)))) (PUTPROPS DIGITCHARP MACRO [LAMBDA (CHAR) - (AND (IGEQ CHAR (CHARCODE 0)) - (ILEQ CHAR (CHARCODE 9]) + (AND (IGEQ CHAR (CHARCODE 0)) + (ILEQ CHAR (CHARCODE 9]) (PUTPROPS UCASECODE MACRO (OPENLAMBDA (CHAR) - (COND - ((AND (IGEQ CHAR (CHARCODE a)) - (ILEQ CHAR (CHARCODE z))) - (LOGAND CHAR 95)) - (T CHAR)))) + (COND + ((AND (IGEQ CHAR (CHARCODE a)) + (ILEQ CHAR (CHARCODE z))) + (LOGAND CHAR 95)) + (T CHAR)))) (DEFOPTIMIZER CHARCODE (C) - (KWOTE (CHARCODE.DECODE C T))) + (KWOTE (CHARCODE.DECODE C T))) (ADDTOVAR DWIMEQUIVLST (SELCHARQ . SELECTQ)) @@ -132,7 +127,7 @@ Copyright (c) 1985, 1986, 1987, 1990, 1995, 1999 by Venue & Xerox Corporation. (DECLARE%: EVAL@COMPILE (ACCESSFNS CHARACTER [(CODE (\LOLOC (\DTEST DATUM 'CHARACTER] - (CREATE (\VAG2 \CHARHI CODE))) + (CREATE (\VAG2 \CHARHI CODE))) ) ) @@ -172,43 +167,43 @@ Copyright (c) 1985, 1986, 1987, 1990, 1995, 1999 by Venue & Xerox Corporation. ) (CL:DEFUN CL:CODE-CHAR (CODE &OPTIONAL (BITS 0) - (FONT 0)) + (FONT 0)) (CL:IF (AND (EQ BITS 0) (EQ FONT 0) - (* ;; "This checks for smallposp") + (* ;; "This checks for smallposp") (EQ (\HILOC CODE) \SmallPosHi)) (%%CODE-CHAR CODE))) (DEFOPTIMIZER CL:CHAR-CODE (CHAR) - [LET [(CONSTANT-CHAR (AND (CL:CONSTANTP CHAR) - (CL:EVAL CHAR] - (CL:IF (CL:CHARACTERP CONSTANT-CHAR) - (\LOLOC CONSTANT-CHAR) - `(\LOLOC (\DTEST ,CHAR 'CHARACTER)))]) + [LET [(CONSTANT-CHAR (AND (CL:CONSTANTP CHAR) + (CL:EVAL CHAR] + (CL:IF (CL:CHARACTERP CONSTANT-CHAR) + (\LOLOC CONSTANT-CHAR) + `(\LOLOC (\DTEST ,CHAR 'CHARACTER)))]) (DEFOPTIMIZER CL:CHAR-INT (CHAR) - `(CL:CHAR-CODE ,CHAR)) + `(CL:CHAR-CODE ,CHAR)) (DEFOPTIMIZER CL:CODE-CHAR (CODE &OPTIONAL (BITS 0) - (FONT 0)) - (CL:IF (AND (EQ BITS 0) - (EQ FONT 0)) - [LET [(CONSTANT-CODE (AND (CL:CONSTANTP CODE) - (CL:EVAL CODE] - (CL:IF (EQ (\HILOC CONSTANT-CODE) - \SmallPosHi) - (%%CODE-CHAR CONSTANT-CODE) - `(LET ((%%CODE ,CODE)) - (AND (EQ (\HILOC %%CODE) - ,\SmallPosHi) - (%%CODE-CHAR %%CODE))))] - 'COMPILER:PASS)) + (FONT 0)) + (CL:IF (AND (EQ BITS 0) + (EQ FONT 0)) + [LET [(CONSTANT-CODE (AND (CL:CONSTANTP CODE) + (CL:EVAL CODE] + (CL:IF (EQ (\HILOC CONSTANT-CODE) + \SmallPosHi) + (%%CODE-CHAR CONSTANT-CODE) + `(LET ((%%CODE ,CODE)) + (AND (EQ (\HILOC %%CODE) + ,\SmallPosHi) + (%%CODE-CHAR %%CODE))))] + 'COMPILER:PASS)) (DEFOPTIMIZER CL:INT-CHAR (INTEGER) - `(CL:CODE-CHAR ,INTEGER)) + `(CL:CODE-CHAR ,INTEGER)) @@ -326,36 +321,34 @@ Copyright (c) 1985, 1986, 1987, 1990, 1995, 1999 by Venue & Xerox Corporation. ) (CL:DEFUN CL:DIGIT-CHAR (WEIGHT &OPTIONAL (RADIX 10) - (FONT 0)) + (FONT 0)) [AND (EQ FONT 0) (< -1 WEIGHT RADIX 37) (CL:IF (< WEIGHT 10) (%%CODE-CHAR (+ (CONSTANT (CL:CHAR-CODE #\0)) - WEIGHT)) + WEIGHT)) (%%CODE-CHAR (+ (CONSTANT (CL:CHAR-CODE #\A)) - (- WEIGHT 10))))]) + (- WEIGHT 10))))]) (CL:DEFUN CL:MAKE-CHAR (CHAR &OPTIONAL (BITS 0) - (FONT 0)) + (FONT 0)) (CL:IF (AND (EQL BITS 0) (EQL FONT 0)) CHAR)) (DEFOPTIMIZER CL:CHAR-UPCASE (CHAR) - `[%%CODE-CHAR (%%CHAR-UPCASE-CODE (CL:CHAR-CODE - ,CHAR]) + `[%%CODE-CHAR (%%CHAR-UPCASE-CODE (CL:CHAR-CODE ,CHAR]) (DEFOPTIMIZER CL:CHAR-DOWNCASE (CHAR) - `[%%CODE-CHAR (%%CHAR-DOWNCASE-CODE (CL:CHAR-CODE - ,CHAR]) + `[%%CODE-CHAR (%%CHAR-DOWNCASE-CODE (CL:CHAR-CODE ,CHAR]) (DEFOPTIMIZER CL:MAKE-CHAR (CHAR &OPTIONAL BITS FONT) - (CL:IF (AND (OR (NULL BITS) - (EQL BITS 0)) - (OR (NULL FONT) - (EQL FONT 0))) - CHAR - 'COMPILER:PASS)) + (CL:IF (AND (OR (NULL BITS) + (EQL BITS 0)) + (OR (NULL FONT) + (EQL FONT 0))) + CHAR + 'COMPILER:PASS)) @@ -627,105 +620,100 @@ Copyright (c) 1985, 1986, 1987, 1990, 1995, 1999 by Venue & Xerox Corporation. VAL))) (DEFOPTIMIZER CL:CHAR-EQUAL (CHAR &REST MORE-CHARS) - (CL:IF (EQL 1 (CL:LENGTH MORE-CHARS)) - `[EQ (%%CHAR-UPCASE-CODE (CL:CHAR-CODE ,CHAR)) - (%%CHAR-UPCASE-CODE (CL:CHAR-CODE - ,(CAR MORE-CHARS] - 'COMPILER:PASS)) + (CL:IF (EQL 1 (CL:LENGTH MORE-CHARS)) + `[EQ (%%CHAR-UPCASE-CODE (CL:CHAR-CODE ,CHAR)) + (%%CHAR-UPCASE-CODE (CL:CHAR-CODE ,(CAR MORE-CHARS] + 'COMPILER:PASS)) (DEFOPTIMIZER CL:CHAR-GREATERP (CHAR &REST MORE-CHARS) - `(> (%%CHAR-UPCASE-CODE (CL:CHAR-CODE ,CHAR)) - ,@(CL:MAPCAR [FUNCTION (CL:LAMBDA - (FORM) - `(%%CHAR-UPCASE-CODE - (CL:CHAR-CODE ,FORM] - MORE-CHARS))) + `(> (%%CHAR-UPCASE-CODE (CL:CHAR-CODE ,CHAR)) + ,@(CL:MAPCAR [FUNCTION (CL:LAMBDA + (FORM) + `(%%CHAR-UPCASE-CODE (CL:CHAR-CODE + ,FORM] + MORE-CHARS))) (DEFOPTIMIZER CL:CHAR-LESSP (CHAR &REST MORE-CHARS) - `(< (%%CHAR-UPCASE-CODE (CL:CHAR-CODE ,CHAR)) - ,@(CL:MAPCAR [FUNCTION (CL:LAMBDA - (FORM) - `(%%CHAR-UPCASE-CODE - (CL:CHAR-CODE ,FORM] - MORE-CHARS))) + `(< (%%CHAR-UPCASE-CODE (CL:CHAR-CODE ,CHAR)) + ,@(CL:MAPCAR [FUNCTION (CL:LAMBDA (FORM) + `(%%CHAR-UPCASE-CODE + (CL:CHAR-CODE ,FORM] + MORE-CHARS))) (DEFOPTIMIZER CL:CHAR-NOT-EQUAL (CHAR &REST MORE-CHARS) - (CL:IF (EQL 1 (CL:LENGTH MORE-CHARS)) - `[NOT (EQ (%%CHAR-UPCASE-CODE (CL:CHAR-CODE - ,CHAR)) - (%%CHAR-UPCASE-CODE (CL:CHAR-CODE - ,(CAR MORE-CHARS] - 'COMPILER:PASS)) + (CL:IF (EQL 1 (CL:LENGTH MORE-CHARS)) + `[NOT (EQ (%%CHAR-UPCASE-CODE (CL:CHAR-CODE ,CHAR)) + (%%CHAR-UPCASE-CODE (CL:CHAR-CODE ,(CAR MORE-CHARS] + 'COMPILER:PASS)) (DEFOPTIMIZER CL:CHAR-NOT-GREATERP (CHAR &REST MORE-CHARS) - `(<= (%%CHAR-UPCASE-CODE (CL:CHAR-CODE ,CHAR)) - ,@(CL:MAPCAR [FUNCTION (CL:LAMBDA - (FORM) - `(%%CHAR-UPCASE-CODE - (CL:CHAR-CODE ,FORM] - MORE-CHARS))) + `(<= (%%CHAR-UPCASE-CODE (CL:CHAR-CODE ,CHAR)) + ,@(CL:MAPCAR [FUNCTION (CL:LAMBDA + (FORM) + `(%%CHAR-UPCASE-CODE + (CL:CHAR-CODE ,FORM] + MORE-CHARS))) (DEFOPTIMIZER CL:CHAR-NOT-LESSP (CHAR &REST MORE-CHARS) - `(>= (%%CHAR-UPCASE-CODE (CL:CHAR-CODE ,CHAR)) - ,@(CL:MAPCAR [FUNCTION (CL:LAMBDA - (FORM) - `(%%CHAR-UPCASE-CODE - (CL:CHAR-CODE ,FORM] - MORE-CHARS))) + `(>= (%%CHAR-UPCASE-CODE (CL:CHAR-CODE ,CHAR)) + ,@(CL:MAPCAR [FUNCTION (CL:LAMBDA + (FORM) + `(%%CHAR-UPCASE-CODE (CL:CHAR-CODE + ,FORM] + MORE-CHARS))) (DEFOPTIMIZER CL:CHAR/= (CHAR &REST MORE-CHARS) - (CL:IF (CDR MORE-CHARS) - 'COMPILER:PASS - `(NEQ ,CHAR ,(CAR MORE-CHARS)))) + (CL:IF (CDR MORE-CHARS) + 'COMPILER:PASS + `(NEQ ,CHAR ,(CAR MORE-CHARS)))) (DEFOPTIMIZER CL:CHAR< (CHAR &REST MORE-CHARS) - `(< (CL:CHAR-CODE ,CHAR) - ,@(CL:MAPCAR [FUNCTION (CL:LAMBDA (FORM) - `(CL:CHAR-CODE ,FORM] - MORE-CHARS))) + `(< (CL:CHAR-CODE ,CHAR) + ,@(CL:MAPCAR [FUNCTION (CL:LAMBDA (FORM) + `(CL:CHAR-CODE ,FORM] + MORE-CHARS))) (DEFOPTIMIZER CL:CHAR<= (CHAR &REST MORE-CHARS) - `(<= (CL:CHAR-CODE ,CHAR) - ,@(CL:MAPCAR [FUNCTION (CL:LAMBDA (FORM) - `(CL:CHAR-CODE ,FORM] - MORE-CHARS))) + `(<= (CL:CHAR-CODE ,CHAR) + ,@(CL:MAPCAR [FUNCTION (CL:LAMBDA (FORM) + `(CL:CHAR-CODE ,FORM] + MORE-CHARS))) (DEFOPTIMIZER CL:CHAR= (CHAR &REST MORE-CHARS) - (CL:IF (CDR MORE-CHARS) - [LET - ((CH (GENSYM))) + (CL:IF (CDR MORE-CHARS) + [LET ((CH (GENSYM))) `(LET ((,CH ,CHAR)) (AND ,@(for X in MORE-CHARS collect `(EQ ,CH ,X] - `(EQ ,CHAR ,(CAR MORE-CHARS)))) + `(EQ ,CHAR ,(CAR MORE-CHARS)))) (DEFOPTIMIZER CL:CHAR> (CHAR &REST MORE-CHARS) - `(> (CL:CHAR-CODE ,CHAR) - ,@(CL:MAPCAR [FUNCTION (CL:LAMBDA (FORM) - `(CL:CHAR-CODE ,FORM] - MORE-CHARS))) + `(> (CL:CHAR-CODE ,CHAR) + ,@(CL:MAPCAR [FUNCTION (CL:LAMBDA (FORM) + `(CL:CHAR-CODE ,FORM] + MORE-CHARS))) (DEFOPTIMIZER CL:CHAR>= (CHAR &REST MORE-CHARS) - `(>= (CL:CHAR-CODE ,CHAR) - ,@(CL:MAPCAR [FUNCTION (CL:LAMBDA (FORM) - `(CL:CHAR-CODE ,FORM] - MORE-CHARS))) + `(>= (CL:CHAR-CODE ,CHAR) + ,@(CL:MAPCAR [FUNCTION (CL:LAMBDA (FORM) + `(CL:CHAR-CODE ,FORM] + MORE-CHARS))) (DEFOPTIMIZER CL:CHARACTERP (OBJECT) - `(TYPENAMEP ,OBJECT 'CHARACTER)) + `(TYPENAMEP ,OBJECT 'CHARACTER)) (DEFOPTIMIZER CL:LOWER-CASE-P (CHAR) - `(<= (CONSTANT (CL:CHAR-CODE #\a)) - (CL:CHAR-CODE ,CHAR) - (CONSTANT (CL:CHAR-CODE #\z)))) + `(<= (CONSTANT (CL:CHAR-CODE #\a)) + (CL:CHAR-CODE ,CHAR) + (CONSTANT (CL:CHAR-CODE #\z)))) (DEFOPTIMIZER CL:STRING-CHAR-P (CHAR) - `(\DTEST ,CHAR 'CHARACTER)) + `(\DTEST ,CHAR 'CHARACTER)) (DEFOPTIMIZER CL:UPPER-CASE-P (CHAR) - `(<= (CONSTANT (CL:CHAR-CODE #\A)) - (CL:CHAR-CODE ,CHAR) - (CONSTANT (CL:CHAR-CODE #\Z)))) + `(<= (CONSTANT (CL:CHAR-CODE #\A)) + (CL:CHAR-CODE ,CHAR) + (CONSTANT (CL:CHAR-CODE #\Z)))) @@ -772,21 +760,23 @@ Copyright (c) 1985, 1986, 1987, 1990, 1995, 1999 by Venue & Xerox Corporation. (ADDTOVAR NLAML CHARCODE) (ADDTOVAR LAMA CL:CHAR>= CL:CHAR> CL:CHAR= CL:CHAR<= CL:CHAR< CL:CHAR/= CL:CHAR-NOT-LESSP - CL:CHAR-NOT-GREATERP CL:CHAR-NOT-EQUAL CL:CHAR-LESSP CL:CHAR-GREATERP - CL:CHAR-EQUAL) + CL:CHAR-NOT-GREATERP CL:CHAR-NOT-EQUAL CL:CHAR-LESSP CL:CHAR-GREATERP + CL:CHAR-EQUAL) ) -(PUTPROPS CMLCHARACTER COPYRIGHT ("Venue & Xerox Corporation" 1985 1986 1987 1990 1995 1999)) (DECLARE%: DONTCOPY - (FILEMAP (NIL (4041 4323 (CHARCODE 4051 . 4110) (CHARCODE.UNDECODE 4112 . 4321)) (6868 7233 ( -CL:CHAR-CODE 6878 . 7026) (CL:CHAR-INT 7028 . 7090) (CL:INT-CHAR 7092 . 7231)) (9139 10193 ( -CHARACTER.PRINT 9149 . 10191)) (10406 13937 (CL:CHAR-BIT 10416 . 10569) (CL:CHAR-BITS 10571 . 10728) ( -CL:CHAR-DOWNCASE 10730 . 10916) (CL:CHAR-FONT 10918 . 11075) (CL:CHAR-NAME 11077 . 12860) ( -CL:CHAR-UPCASE 12862 . 13044) (CL:CHARACTER 13046 . 13534) (CL:NAME-CHAR 13536 . 13776) (CL:SET-CHAR-BIT - 13778 . 13935)) (15381 18563 (CL:ALPHA-CHAR-P 15391 . 15927) (CL:ALPHANUMERICP 15929 . 16123) ( -CL:BOTH-CASE-P 16125 . 16232) (CL:CHARACTERP 16234 . 16378) (CL:GRAPHIC-CHAR-P 16380 . 17513) ( -CL:LOWER-CASE-P 17515 . 17668) (CL:STANDARD-CHAR-P 17670 . 18336) (CL:STRING-CHAR-P 18338 . 18406) ( -CL:UPPER-CASE-P 18408 . 18561)) (18564 24388 (CL:CHAR-EQUAL 18574 . 18968) (CL:CHAR-GREATERP 18970 . -19477) (CL:CHAR-LESSP 19479 . 19983) (CL:CHAR-NOT-EQUAL 19985 . 20585) (CL:CHAR-NOT-GREATERP 20587 . -21099) (CL:CHAR-NOT-LESSP 21101 . 21610) (CL:CHAR/= 21612 . 22192) (CL:CHAR< 22194 . 22644) (CL:CHAR<= - 22646 . 23098) (CL:CHAR= 23100 . 23480) (CL:CHAR> 23482 . 23932) (CL:CHAR>= 23934 . 24386))))) + (FILEMAP (NIL (3835 4117 (CHARCODE 3845 . 3904) (CHARCODE.UNDECODE 3906 . 4115)) (6423 6788 ( +CL:CHAR-CODE 6433 . 6581) (CL:CHAR-INT 6583 . 6645) (CL:INT-CHAR 6647 . 6786)) (6790 7091 (CL:CODE-CHAR + 6790 . 7091)) (8610 9664 (CHARACTER.PRINT 8620 . 9662)) (9877 13408 (CL:CHAR-BIT 9887 . 10040) ( +CL:CHAR-BITS 10042 . 10199) (CL:CHAR-DOWNCASE 10201 . 10387) (CL:CHAR-FONT 10389 . 10546) (CL:CHAR-NAME + 10548 . 12331) (CL:CHAR-UPCASE 12333 . 12515) (CL:CHARACTER 12517 . 13005) (CL:NAME-CHAR 13007 . +13247) (CL:SET-CHAR-BIT 13249 . 13406)) (13410 13803 (CL:DIGIT-CHAR 13410 . 13803)) (13805 13969 ( +CL:MAKE-CHAR 13805 . 13969)) (14648 17830 (CL:ALPHA-CHAR-P 14658 . 15194) (CL:ALPHANUMERICP 15196 . +15390) (CL:BOTH-CASE-P 15392 . 15499) (CL:CHARACTERP 15501 . 15645) (CL:GRAPHIC-CHAR-P 15647 . 16780) +(CL:LOWER-CASE-P 16782 . 16935) (CL:STANDARD-CHAR-P 16937 . 17603) (CL:STRING-CHAR-P 17605 . 17673) ( +CL:UPPER-CASE-P 17675 . 17828)) (17831 23655 (CL:CHAR-EQUAL 17841 . 18235) (CL:CHAR-GREATERP 18237 . +18744) (CL:CHAR-LESSP 18746 . 19250) (CL:CHAR-NOT-EQUAL 19252 . 19852) (CL:CHAR-NOT-GREATERP 19854 . +20366) (CL:CHAR-NOT-LESSP 20368 . 20877) (CL:CHAR/= 20879 . 21459) (CL:CHAR< 21461 . 21911) (CL:CHAR<= + 21913 . 22365) (CL:CHAR= 22367 . 22747) (CL:CHAR> 22749 . 23199) (CL:CHAR>= 23201 . 23653)) (23657 +24547 (CL:DIGIT-CHAR-P 23657 . 24547)) (29909 30254 (%%CHAR-DOWNCASE-CODE 29909 . 30254)) (30256 30599 + (%%CHAR-UPCASE-CODE 30256 . 30599)) (30601 30660 (%%CODE-CHAR 30601 . 30660))))) STOP diff --git a/sources/CMLCHARACTER.DFASL b/sources/CMLCHARACTER.DFASL new file mode 100644 index 0000000000000000000000000000000000000000..bf166c7c5f782aaee325e26132505fd1e95c4621 GIT binary patch literal 18673 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 literal 0 HcmV?d00001 diff --git a/sources/CMLCHARACTER.LCOM b/sources/CMLCHARACTER.LCOM deleted file mode 100644 index ed86fbb823017f210bc6a09abd77ec4afa77f527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20600 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 Rc!v;wsB9X)ZNcvZ{vU%CDRuw=