1
0
mirror of synced 2026-03-10 21:03:22 +00:00

Update ISO8859IO for MCCS vs XCCS

This commit is contained in:
rmkaplan
2026-02-23 22:30:56 -08:00
parent d837dbdff0
commit acd3cde277
2 changed files with 151 additions and 152 deletions

View File

@@ -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 @@
(* ; "Edited 21-Jun-95 10:18 by rmk:")
(* ;; "Recodes a singleton charcode. Leaves everything else unchanged.")
(LET [(CSMAP (CL:SVREF MAPARRAY (LRSH CODE 8]
(OR (AND CSMAP (CL:SVREF CSMAP (LOGAND CODE 255)))
CODE])
)
(DECLARE%: DONTCOPY
(LET [(CSMAP (CL:SVREF MAPARRAY (LRSH CODE 8]
(OR (AND CSMAP (CL:SVREF CSMAP (LOGAND CODE 255)))
CODE])
)
(DECLARE%: DONTCOPY
(FILEMAP (NIL (1834 4154 (ISO1TOMCODE 1844 . 2593) (MTOISO1CODE 2595 . 2885) (\CREATE.ISO1.FORMAT 2887

Binary file not shown.