Skip to content

Commit 54f8b88

Browse files
authored
Rmk131 Mapping MCCS filenames to (Mac?) UTF-8 file names (#2320)
* Coerce MCCS filename strings to UTF8 filename strings in file-name system calls, coerce system filenames back to MCCS codes * Add UNICODE-TABLES so MTOUTF8STRING gets defined in right place in the loadup sequence * ADIR: Bug fix: UNPACKFILENAME sets FATSTRINGP * fix virtualkeyboard bug in code assignment * Unicode canonicalizes non-SMALLP unicodes
1 parent 8d0011c commit 54f8b88

File tree

15 files changed

+1238
-744
lines changed

15 files changed

+1238
-744
lines changed

internal/loadups/LOADUP-LISP

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
22

3-
(FILECREATED "18-Aug-2025 12:09:49" |{WMEDLEY}<internal>loadups>LOADUP-LISP.;21| 6713
3+
(FILECREATED "16-Oct-2025 16:55:27" |{WMEDLEY}<internal>loadups>LOADUP-LISP.;22| 7104
44

55
:EDIT-BY |rmk|
66

77
:CHANGES-TO (FNS LOADUP-LISP)
88

9-
:PREVIOUS-DATE "15-Jun-2025 14:39:57" |{WMEDLEY}<internal>loadups>LOADUP-LISP.;20|)
9+
:PREVIOUS-DATE "18-Aug-2025 12:09:49" |{WMEDLEY}<internal>loadups>LOADUP-LISP.;21|)
1010

1111

1212
(PRETTYCOMPRINT LOADUP-LISPCOMS)
@@ -19,7 +19,8 @@
1919
(DEFINEQ
2020

2121
(LOADUP-LISP
22-
(LAMBDA (DRIBBLEFILE) (* \; "Edited 18-Aug-2025 12:08 by rmk")
22+
(LAMBDA (DRIBBLEFILE) (* \; "Edited 16-Oct-2025 16:55 by rmk")
23+
(* \; "Edited 18-Aug-2025 12:08 by rmk")
2324
(* \; "Edited 15-Jun-2025 14:39 by rmk")
2425
(* \; "Edited 24-May-2025 10:20 by rmk")
2526
(* \; "Edited 21-May-2025 09:25 by rmk")
@@ -89,9 +90,11 @@
8990

9091
(* |;;| "Before the MEDLEYFONT implementation, FONTPROFILE came after NEWPRINTDEF above, but the loadup failed for undiagnosed reasons. After moving it around, it appears that it must come before MENU, because it creates thw WINDOWTITLEFONT, but after HLDISPLAY. Not yet known what the HLDISPLAY dependency is. ")
9192

92-
(LOADUP '(UNICODE CMLPATHNAME HPRINT AARITH ADISPLAY HLDISPLAY FONTPROFILE MENU WINDOWOBJ
93-
WINDOWSCROLL WINDOW WINDOWICON PAINTW ATTACHEDWINDOW XXGEOM XXFILL DEXEC INSPECT
94-
DESCRIBE CMLARRAYINSPECTOR EDITINTERFACE TTYIN))
93+
(* |;;| "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. ")
94+
95+
(LOADUP '(UNICODE-TABLES UNICODE CMLPATHNAME HPRINT AARITH ADISPLAY HLDISPLAY FONTPROFILE MENU
96+
WINDOWOBJ WINDOWSCROLL WINDOW WINDOWICON PAINTW ATTACHEDWINDOW XXGEOM XXFILL
97+
DEXEC INSPECT DESCRIBE CMLARRAYINSPECTOR EDITINTERFACE TTYIN))
9598
(LOADUP '(BREAK-AND-TRACE))
9699
(LOADUP '(FASDUMP XCL-COMPILER ADVISE))
97100

@@ -141,5 +144,5 @@
141144
(GLOBALVARS MAKESYSFILENAME MEDLEY-INIT-VARS MEDLEYDIR SYSTEMINITVARS USERRECLST)
142145
)
143146
(DECLARE\: DONTCOPY
144-
(FILEMAP (NIL (640 6507 (LOADUP-LISP 650 . 6505)))))
147+
(FILEMAP (NIL (640 6898 (LOADUP-LISP 650 . 6896)))))
145148
STOP

internal/loadups/LOADUP-LISP.LCOM

13 Bytes
Binary file not shown.

library/UNICODE

Lines changed: 85 additions & 617 deletions
Large diffs are not rendered by default.

library/UNICODE-EXPORTS

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
2+
3+
(FILECREATED "22-Oct-2025 23:27:50" {WMEDLEY}<library>UNICODE-EXPORTS.;1 2673
4+
5+
:EDIT-BY rmk
6+
7+
:CHANGES-TO (VARS UNICODE-EXPORTSCOMS))
8+
9+
10+
(PRETTYCOMPRINT UNICODE-EXPORTSCOMS)
11+
12+
(RPAQQ UNICODE-EXPORTSCOMS
13+
(
14+
(* ;; "Compile-time declarations shared by UNICODE-TABLES and UNICODE")
15+
16+
(GLOBALVARS *MCCSTOUNICODE* *UNICODETOMCCS* *NEXT-PRIVATE-UNICODE* *NEXT-PRIVATE-MCCSCODE*
17+
*MCCS-LOADED-CHARSETS* *UNICODE-LOADED-CHARSETS* *LARGEUNICODES*)
18+
19+
(* ;; "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.")
20+
21+
(CONSTANTS (FIRST-PRIVATE-UNICODE (HEXNUM? "E000"))
22+
(LAST-PRIVATE-UNICODE (HEXNUM? "F8FF"))
23+
(FIRST-PRIVATE-MCCSCODE (CHARCODE "200,0"))
24+
(LAST-PRIVATE-MCCSCODE (CHARCODE "230,377")))
25+
(MACROS TRUECODEP)
26+
(FILES (FROM LOADUPS)
27+
EXPORTS.ALL)))
28+
29+
30+
31+
(* ;; "Compile-time declarations shared by UNICODE-TABLES and UNICODE")
32+
33+
(DECLARE%: DOEVAL@COMPILE DONTCOPY
34+
35+
(GLOBALVARS *MCCSTOUNICODE* *UNICODETOMCCS* *NEXT-PRIVATE-UNICODE* *NEXT-PRIVATE-MCCSCODE*
36+
*MCCS-LOADED-CHARSETS* *UNICODE-LOADED-CHARSETS* *LARGEUNICODES*)
37+
)
38+
39+
40+
41+
(* ;;
42+
"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."
43+
)
44+
45+
(DECLARE%: EVAL@COMPILE
46+
47+
(RPAQ FIRST-PRIVATE-UNICODE (HEXNUM? "E000"))
48+
49+
(RPAQ LAST-PRIVATE-UNICODE (HEXNUM? "F8FF"))
50+
51+
(RPAQ FIRST-PRIVATE-MCCSCODE (CHARCODE "200,0"))
52+
53+
(RPAQ LAST-PRIVATE-MCCSCODE (CHARCODE "230,377"))
54+
55+
56+
(CONSTANTS (FIRST-PRIVATE-UNICODE (HEXNUM? "E000"))
57+
(LAST-PRIVATE-UNICODE (HEXNUM? "F8FF"))
58+
(FIRST-PRIVATE-MCCSCODE (CHARCODE "200,0"))
59+
(LAST-PRIVATE-MCCSCODE (CHARCODE "230,377")))
60+
)
61+
(DECLARE%: EVAL@COMPILE
62+
63+
(PUTPROPS TRUECODEP MACRO (OPENLAMBDA (RANGE TABLE)
64+
65+
(* ;; "Return NIL if RANGE is a fake range in TABLE, otherwise RANGE.")
66+
67+
(CL:UNLESS (CL:IF (EQ TABLE *MCCSTOUNICODE*)
68+
(AND (IGEQ RANGE FIRST-PRIVATE-UNICODE)
69+
(ILEQ RANGE LAST-PRIVATE-UNICODE))
70+
(AND (IGEQ RANGE FIRST-PRIVATE-MCCSCODE)
71+
(ILEQ RANGE LAST-PRIVATE-MCCSCODE)))
72+
RANGE)))
73+
)
74+
75+
(FILESLOAD (FROM LOADUPS)
76+
EXPORTS.ALL)
77+
(DECLARE%: DONTCOPY
78+
(FILEMAP (NIL)))
79+
STOP

0 commit comments

Comments
 (0)