Es ist vollbracht:
Um die symbolischen Links vollständig zu unterstützen, mußte ich die XFS-Schnittstelle um ein paar Parameter erweitern. Bei dieser Gelegenheit habe ich endlich alle Verweise auf das alte macOS aus dem Kernel rausgeworfen und die Schnittstelle großteils neu gemacht.
Der Kernel tut nun das, was ich 1994 auch schon hätte einbauen müssen, nämlich alle XFS-Aufrufe blind weiterzuleiten, mit den internen Deskriptoren, ohne daß sich der Kernel darum kümmert, was der Host da in seine privaten Bereiche reinschreibt. Das HostXFS hat jetzt rund 80 Bytes in diesen Blöcken zur Verfügung, die es frei verwalten kann. Insbesondere ist es jetzt nicht mehr nötig, für einige Verweise 16 Bit statt 32 zu verwenden, nur weil ich das 1994 so festgelegt hatte.
Hintergrund war damals, daß jede Datei und jeder Ordner im macOS durch zwei Zahlen eindeutig referenziert wurde, nämlich eine 16 Bit breite VolumeId (ein großes ELL, ich HASSE serifenlose Schrift!) und eine 32 Bit breite Datei-Id. Diese beiden Zahlen wurden schon im Assembler-Teil, also im Kernel, verwaltet, weil ich damals soviel wie möglich im MagiC-Kernel machen wollte und so wenig wie möglich im macOS. Ein Fehler.
Der Emulator unterstützt weiterhin den vorherigen Kernel (API 3); die Funktionen sind alle doppelt vorhanden. Die alten werde ich aber demnächst rauswerfen. Wenn ihr den Emulator neu baut, achtet bitte darauf, daß ihr auch den neuen Kernel verwendet. Im Debug-Modus gibt es eine Warnung, die auf die API-Version 3 oder 4 hinweist.
Mit den symbolischen Links könnt ihr (wenn da nicht noch Fehler drin sind) jetzt natürlich auch folgendes machen:
Hänge in A: ein Disketten-Image ein, dort drin ist Ordner "BILDER".
Macht in C:\BIN einen symbolischen Link auf A:\BILDER.
etc.
Die Links können, wenn alles klappt, auch vom Host aus erzeugt werden (ln -s). Ihr könnt auch einen Atari-Pfad angeben ("ln -s A:\\BILDER A.LNK"), dann zeigt der Link natürlich im Host ins Leere. Wenn der Link vom Atari erzeugt wird, versucht er, einen Host-Link zu erzeugen, und wenn das nicht geht, weil das Ziel-Volume nicht vom Host zugreifbar ist, gibt es einen Atari-Link, auch z.B. auf U:\PROC.
Der ganze Quatsch sollte auch vom MCMD aus gehen, weil die alten Funktionen (Fsfirst/next/attrib etc.) symbolische Links transparent behandeln sollten.