From acd3cde277d8a2d7da587acb9e6745fb678ecb50 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Mon, 23 Feb 2026 22:30:56 -0800 Subject: [PATCH] Update ISO8859IO for MCCS vs XCCS --- lispusers/ISO8859IO | 303 +++++++++++++++++++-------------------- lispusers/ISO8859IO.LCOM | Bin 8105 -> 7568 bytes 2 files changed, 151 insertions(+), 152 deletions(-) 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}ISO8859IO.;19 23459 +(FILECREATED "22-Feb-2026 12:22:12" {WMEDLEY}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}ISO8859IO.;11) + :PREVIOUS-DATE " 2-Feb-2026 23:20:20" {WMEDLEY}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 30f45446e65854646aeb6852d3ea1075ad40ae10..7db674a3703957c29d0641a121ea3df9fa25b208 100644 GIT binary patch delta 2333 zcmb7GPj4GV6t^7$bPK2{Q2{}cS4&mb5lLp=%-XwKB)nO#<0WgayLLiBInXv%6Qz`@ zZ~!5+7q~a9IC0|00TC5Nf)k$rae)tj1Xl##fH$+Yand9RCvx7-pWmPN-puCf*B@Sc z_~tC)Qgd)?2^m&_ql@Tr+~4CVVg-yc@`>51%N>{3%5dw!;P!j(-rv1D*oMJ}_aD4} z#f7jJ^M2g!^^>r(2JL>V28K_&_n_R|h$5JTTV7r+!}iS&2HOTa&SSc0l`DqX45PqL z0{JXb zxMG|Fjd?yo;LwSKB#Dz|v<6B&mHh}~`#&hVL9o7hHlgMsJy4L@Z_m%A+dJELl!YDr zt-qdqX6Q*e(Dv4YrQk+CNIG7WXM>V0#mMZiF@+6;8G*oK9g8xb;LbQ9tDe8^>nd>x z>8UxP4X0EBB)C)^+qRq)u1kNkRdsiD0rTd9F6DJ}oVt|MkbXEc0+PPrr~Pm<(76tC zD^%WP3%_Hv&KMy(FMpwGnsv!KN40qu6WElOK2A0<#O|Nr$pRA25Boguz^dYmogk z=S~}2;c7ekX8!V1^tbJG7c)8U7LDxQ{HxiQI{I~f@$-e(rs=Nj^s@aYX45TodXhjj z1Z{w=Jk-6fC=4^{de^Uy{E`E`6!5xP}MT3k{lq$jWKBQ0~A`@UUMTm@a@_bBTD;8uVg5_g`Z7V)xw$iAQ zfy@DtOp$?fdbnmpx^yWwYMLY1(pG|KJvg=?MX5=Nq8tjn0y%|J!_sSxLgfRIG+9#b zqpOM_v}Uw`+-NcMHYXW+X^m*}{WhRZIHChqRa+7a1k;=8=nJkWQ>5!q=)9s3RDpb2 zf)E-|D3+X%ZVy!dD3~Z}Agp}ariGeMI0U0jNMhl7o#cS|tfZHAP3MTNWy~E)DzlU7 zQb=MEEDx)sQLB~2qMHaMvEceJV_U>xsWPJ_NTF6^DJxue@=2#T I`*h*TKa;u!AOHXW delta 2470 zcmb7GOK%%h6t<-hoDrysS_p{%-3&t5mYvSIXCBTJ2|12U+{PKpcFQKJlr|QP2rYtS z)y0T4n^q%!1Pd031xv(|4GaDSTUIPNcka3OPC_?GaqRi#Jic?zcONhA{P4+(&u$6m zj+T$QGLW$VOan}z_wozKVYekbU+#AAo;=lWC8Qwf&lis#Kl}2l^N&u&*;C;kj^|TR zjk2?|IaQlZXTt~M?EbvFPsE5-MJ@hZeX^w!EHY(6tlLz%@tnTCeE7=OS1U{RdtP%Y0%5bXL~XBL ztJR*-r?y_N9jvJz8|vS$2WOsrxLMq2d{D=te&g+WT-Sr8w7%A^OLJiKu@$SPt^pjS%jk5^n;F!B45xqC=m#agnq7}q=Ya^Iw6!+ zG7KyP5i+JdL+pek#4@I~3OXp+CIXI*p+RINlJN@}%PFI=i;Sl|NQo58KnJ}q522(NyT(W{R0}QkyDo97ifISrymJ~2RU5$b?D-5_m zf}((}Y<=8g3}Qc5qfp^_IvDUM2#VPe9Isdxgy49^OqKQq6D!t}Rt+%__YcAGN)**x z^-U8~EP#5T28*CuuQ4tYG&Oo_+9Mq^pva}Cbku-6H0HPg`Dm;pmzTu@Icd<*16Bdb z3O#9(SPj$owWlRV3M>(_9-T|ZXXnbDwY9faIYtdQd+foO*sF%i4GFk!_| zax(^L;+y5A^e0U_>7_GdXL{!_PC-(17*|GGw3tyG5my)u%;+X`W7YeCnm=jQx*E+< z2#0Y)d1)(6NTa%_LeI#KdSiW!?x;HsW6C7?R?hNQi?5to4ZD@o?^*BS5#0rmg8J*UWqg|#%c>gJ58R78`RAQy@ zsPAeIvh^EbkZ5dDBfP{l4~_5=J6n3I(^fiXb`x6TCK{C3WO;GY0mZOIhv9hd=k?Ve z*VmS37f+U7)0tfSwgInQesg(pUi`ChJOAHD`=^K5UjMK>;JyEzMz1)wh~4ODe)UE{ z*iDBg0n45BNV>Z%}`ZE;6<#b58FE5v_N{Jy!}pl@~BdBt=yExz0A)V<;t`t|o_ mn|{5!_3?^ILdWf`*0r0AcdTzU<>iEO&>exV0LAHhoqqvgKJU!{