Beschreibung des Programms VFATCONF (fr MagiC 5.01)
-----------------------------------

Andreas Kromke
30.6.96


1. Was ist VFATCONF ?
---------------------

Mit diesem Programm kann man festlegen, auf welchem Diskettenlaufwerk und
auf welcher Festplattenpartition lange Dateinamen untersttzt werden sollen.

2. Was fr lange Dateinamen ?
-----------------------------

Microsoft hat mit "Windows 95" eine Mglichkeit eingefhrt, auf
normalen DOS-Medien (Disketten, Festplatten, ...) lange Dateinamen mit bis
zu 256 Zeichen abzulegen. Eine weitere Beschrnkung liegt allerdings darin,
da der gesamte Pfad nur maximal 256 Zeichen lang sein darf, weshalb MagiC
auch die maximale Lnge fr einen einzelnen Dateinamen auf 64 Zeichen begrenzt
(d.h. mit dem abschlieenden Nullbyte insgesamt 65 Zeichen).

Die langen Dateinamen liegen im sogenannten Unicode vor, d.h. sie knnen,
weit ber den ASCII-Code hinaus, z.B. auch japanische Schriftzeichen
enthalten (insgesamt umfat der Unicode 65536 Zeichen, der ASCII-Code nur
256 Zeichen). MagiC ist jedoch nicht in der Lage, diese Schriftzeichen
darzustellen, und ersetzt sie beim Einlesen des Verzeichnisses durch "".
Lange Dateinamen drfen Gro- und Kleinschrift gemischt und auch Leerzeichen
oder mehrere Punkte enthalten. Als Dateityp gelten dabei die Zeichen hinter
dem letzten Punkt, d.h. die Datei "Brief.ans.Finanzamt.Pap" hat den
Dateityp "*.PAP", ist also ein Dokument der Textverarbeitung Papyrus.

Um die Kompatibilitt mit lterer Software und die Austauschbarkeit mit
anderen Rechnern sicherzustellen, bekommt jede Datei mit langem Namen
einen eindeutigen, zweiten Namen in Kurzform, d.h. in der Form 8+3.
ltere Software findet nur diese Kurznamen auf dem Laufwerk, statt
"dies_ist_ein_langer.Name" also z.B. "DIES_~1.NAM". (Die Kurznamen werden im
Microsoft-Jargon als Alias bezeichnet. Um die Verwechslung mit den
Macintosh-Aliasen und den symbolischen Links zu vermeiden, wird an dieser
Stelle von Kurznamen gesprochen). Entspricht ein Name jedoch bereits dem
8+3-Groschrift-Format, wird nur ein Kurzname abgelegt.

Die Schwierigkeit fr MagiC liegt nun darin, da aus Kompatibilittsgrnden
sichergestellt werden mu, da auf bestimmten Laufwerken keine lngeren
Dateinamen als 8+3 abgelegt werden. Andernfalls knnte ltere Software
(KOBOLD, CORRECT, ...) vllig verwirrt werden. Da die Information, ob auf
einem Laufwerk lange Dateinamen zugelassen sind oder nicht, nicht auf diesem
Laufwerk abgelegt werden kann, wird VFATCONF bentigt. Der Name dieses
Programms rhrt daher, da Microsoft das Dateisystem von Windows 95 als
"VFAT"-System (virtual FAT), das alte Dateisystem als FAT-System bezeichnet.

Wie kann es nun passieren, da unbeabsichtigt lange Dateinamen erzeugt 
werden, wenn diese auf dem entsprechenden Laufwerk zugelassen sind ? 
Manche Programme, auch ltere, haben die Eigenschaft, Dateinamen in 
Kleinschrift statt Groschrift zu verwenden. Auf dem alten FAT-System ist 
das einerlei, weil die Dateinamen in jedem Fall in Groschrift abgelegt 
werden (TOS scheitert hier an den Umlauten, aber glcklicherweise gibt es 
ja nur Amerikaner auf dieser Welt). Auf einem VFAT-System wird jedoch fr 
eine Datei "laber.txt" ein langer Dateiname "laber.txt" und ein 
zugehriger Kurzname "LABER.TXT" abgelegt.

3. Wann ist VFATCONF einsetzbar ?
---------------------------------

Die hier beschriebene Version von VFATCONF luft mit MagiC 5.01 fr Atari,
Mac und PC.

Mit der Ease sind bei lteren Versionen als 5.00 nur kurze Dateinamen im Format
8+3 mglich. Deaktivieren Sie bei Verwendung lterer Versionen der Ease daher
unbedingt die langen Dateinamen auf smtlichen Laufwerken einschlielich der
Diskettenlaufwerke.
Alle gngigen anderen Shells (Gemini, Thing, Magxdesk) sind dagegen kompatibel
zu MagiC und knnen daher lange Dateinamen verarbeiten.

4. Bedienung
------------

Starten Sie das Programm. Oben erscheinen nun die Laufwerke, auf denen 
z.Zt. lange Dateinamen zugelassen wird, als selektierte Buttons. Unten 
links ist der Button "temporr" aktiv. Mchten Sie nun, ohne die 
Grundeinstellung zu ndern, kurzfristig fr eine eingelegte und 
geffnete Diskette lange Dateinamen zulassen, aktivieren Sie den Button 
fr Laufwerk A: bzw. B: und bettigen den OK-Button. Die Shell baut nun 
die entsprechenden Verzeichnisfenster neu auf. Wenn Sie die Diskette 
wechseln, wird fr die neu eingelegte Diskette wieder die Grundeinstellung 
aktiv. Die Einstellung "temporr" ist hauptschlich fr Wechselmedien
(Disketten, Wechselplatten) vorgesehen.

Die Grundeinstellung knnen Sie ndern, nachdem Sie links unten auf den Button 
"permanent" geklickt haben. Sie knnen nun fr jeden Laufwerkbuchstaben 
festlegen, ob das Laufwerk beim ffnen ("Mounten") mit langen oder kurzen 
Dateinamen betrieben werden soll. Diese Einstellungen sind nur fr noch 
nicht geffnete Laufwerke wirksam, bereits geffnete mssen mit der 
"temporr"-Funktion behandelt werden. Haben Sie die "permanent"-Einstellung
gendert, speichert VFATCONF die neue Einstellung in die Konfigurationsdatei
MAGX.INF ab. Dazu enthlt die MAGX.INF im Abschnitt "#[vfat]" z.B. die
Zuweisung "drives=fgh". Mit Hilfe eines Editors knnen Sie diese Einstellung
auch "per Hand" in die MAGX.INF eintragen.

Beachten Sie, da Sie damit auch auf dem Bootlaufwerk lange Dateinamen 
aktivieren knnen. Wenn Sie jedoch manchmal wahlweise mit lterer System-
Software (TOS oder Derivate) booten wollen, knnte es jedoch zu Konflikten
kommen; insbesondere knnen bei Schreibzugriffen die langen Dateinamen zerstrt
werden, so da nur die Kurznamen brig bleiben.

Es empfiehlt sich, auf der Festplatte einige Partitionen mit langen 
Dateinamen einzurichten und auf diesen Partitionen solche Software zu 
installieren, die problemlos mit langen Namen umgehen kann. Sollte einmal 
TOS gebootet werden mssen, knnen die dort abgelegten Dateien mit den 
Kurznamen angesprochen werden. Sie sollten jedoch auf keinen Fall unter 
TOS Dateien lschen (oder verschieben oder umbenennen), die einen langen
Dateinamen haben, da in diesem Fall der lange Name als Leiche im Verzeichnis
stehen bleibt und nicht mehr gelscht werden kann. Unter MagiC dagegen ist
der Zugriff, auch das Lschen, ber den Kurznamen immer mglich, der lange
Name wird dabei automatisch mit behandelt. Dies gilt jedoch nicht, wenn auf
einem Laufwerk lange Dateinamen liegen, diese jedoch mit VFATCONF deaktiviert
sind; in diesem Fall gibt es dieselben Probleme wie beim Zugriff unter TOS.

Es bleibt zu hoffen, da es bald Disk-Korrekturprogramme wie CHKDISK oder
CORRECT geben wird, die lange Dateinamen korrekt erkennen und ggf. Leichen 
entfernen.

5. Technische Beschreibung des VFAT-Dateisystems
------------------------------------------------

typedef struct {
 char		head;		/* Bit 0..4: Nummer, Bit 6: Endofname	*/
 unsigned char	name1[10];	/* 5 Unicode- Zeichen				*/
 char		attr;		/* Attribut (0x0f)					*/
 char		unused;
 char		chksum;		/* Checksumme des kurzen Namens		*/
 unsigned char	name2[12];	/* 6 Unicode- Zeichen				*/
 WORD		stcl;		/* erster Cluster (0)				*/
 unsigned char	name3[4];		/* 2 Unicode-Zeichen				*/
} LDIR;

Dabei ist <head> beim ersten Eintrag z.B. 0x01, beim zweiten 0x02 und
beim dritten 0x43, wenn der Name drei Eintrge braucht.
Pro Eintrag knnen 13 Zeichen abgelegt werden. Die Eintrge mit dem langen
Dateinamen liegen immer unmittelbar vor dem Haupteintrag. Die Unicode-
Zeichen sind ver-intel-t, d.h. umgedreht, daher habe ich sie hier als
char statt WORD deklariert. Im letzten Eintrag werden nach dem Nullbyte
die nicht verwendeten Zeichen mit 0xff,0xff belegt.
<stcl> ist immer Null.
<code> ist eine Checksumme.

Es ist noch zu erwhnen, da die Reihenfolge der Eintrge umgekehrt
ist. D.h. die letzten 13 Zeichen des langen Namens liegen physikalisch an
erster Stelle. Der letzte Verzeichniseintrag, der mit gesetztem Bit 6 im
Feld <head> gekennzeichnet ist, liegt physikalisch an erster Stelle.

<chksum> berechnet sich aus dem kurzen Namen (im internen Format)
durch abwechselndes Rechtsrotieren des bisherigen Ergebnisses und Aufaddieren
der 11 Zeichen.
Linux verwendet das <unused>-Feld, um Flags fr Gro-/Kleinschrift
abzuspeichern. Die aktuelle Windows95-Version schreibt jedoch immer Nullen
in dieses Feld, so verhlt sich auch MagiC.
