$Id: SWSUBST.TXT 2.0 1994/12/21 09:16:02 ska Rel ska $

Das ist die Dokumentationsdatei fr SWSUBST.EXE.
An English version of this text resides in the file SWSUBST.ENG.

Merke:
++ Die Angabe von relativen Pfaden kann unerwartete Ergebnisse nach sich
   ziehen.  
++ Nicht existierende Pfade knnen das System in einen
   Dead-Lock fhren.
++ Netz-Laufwerke sind nur bedingt nutzbar.
++ Die Verwendung innerhalb Multitaskumgebungen, wie MS-Windows, kann
   einen Systemabsturz erzeugen oder kann dazu fhren, da falsche
   physische Pfade genutzt werden.
++ MS Windows v3.11 (for Workgroups) behandelt Festplatten wie
   Netzwerke, so da SWSUBST nur bedingt verwendbar ist, wenn der 32-Bit
   Zugriff aktiv ist.
++ Aufgrund der unterschiedlichen CDS luft das Programm auf den meisten
   DR-DOS-Versionen nicht.
++ Der physische Pfad von Netzlaufwerken kann nicht erzeugt werden.
++ Wird die Programmdatei in "JOIN" umbenannt, wird standardmig JOIN
   und nicht SUBST ausgefhrt.

Kurzbeschreibung:
Das Programm SWSUBST:
- ersetzt und erweitert die DOS-Befehle SUBST und JOIN;
- tauscht zwei Laufwerksbuchstaben gegeneinander aus;
- hebt alle SUBST/JOIN Verbindungen mit einem Befehl auf;
- legt einen Pfad mit allen notwendigen berverzeichnissen an;
- erlaubt das direkte ndern und die Abfrage der Laufwerksflags;
- ermglicht das Suchen in und Anzeigen der installierten Gerte und der
  Speicherblockkette (MCB chain);
- akzeptiert die Angabe von Laufwerken sowohl ber das Treiberkennzeichen
  als auch ber die Laufwerkskennzeichnung;
- ermittelt die Laufwerksnummern;
- erlaubt Mehrsprachigkeit; deutsche und englische Texte vordefiniert.



Inhalt:
- Dateien im Paket
- Garantien
- Optionen
- Kommandos
- Unterschied zu DOS' SUBST/JOIN
- Umgebungsvariablen
- Neue Texte einbringen
- Autor


Dateien im Paket:
SWSUBST.EXE	Programm
SWSUBST.TXT	Programmbeschreibung in Deutsch
SWSUBST.ENG	Programmbeschreibung in Englisch
SWSUBST.LNG Untersttzte Sprachen

Garantien:
SWSUBST ist Freeware; es mu weder Entgeld entrichtet noch eine
Registrierung durchgefhrt werden. Es darf weitergegeben werden, solange
alle drei Dateien zusammen und unverndert, Ausnahme siehe "Neue Texte
einbringen", bleiben. Der Weitergebende darf in keiner Weise davon
profitieren.

Der Autor von SWSUBST kann fr keinerlei Schden haftbar gemacht werden.
Hierbei ist unerheblich, ob die Schden direkt oder indirekt entstehen
oder ob auf die Mglichkeit einer Schdigung hingewiesen wurde, oder
nicht.  Das Programm SWSUBST darf nur auf eigene Gefahr genutzt werden.

Disclaimer

In no event will the Author be liable to users for any damages, including 
but not limited to any lost profits, lost savings or other incidental or 
consequential damages arising out of the use or the inability to use this 
program, even if the Author has been advised of the possibility of such 
damages, or for any claim by other party. 


SWSUBST is FreeWare; there is no charge for using it and it may be
distributed freely so long as the files are kept together and unaltered,
except see "Including of new Texts". You may neither sell nor profit
from distribution of SWSUBST in any way.



Programmnutzung:

SWSUBST [ {option} ] [kommando]

Optionen)

- Optionen knnen mit allen Kommandos angegeben werden, obwohl sie
  nicht fr alle gltig sind.
- Optionen drfen nicht gemischt, jedoch in beliebiger Reihenfolge
  angegeben werden.
- In Umgebungsvariablen knnen spezielle Optionen gesetzt werden.


Die allgemeine Form einer Option lautet:
	/[+-]?.[!]

wobei steht   fr:
/	der Schrgstrich zur Kennzeichnung der Option
[+-] ein optionales Plus bzw. Minus. Normalerweise schalten Optionen
     zwischen "an" und "aus" hin und her. Am Anfang stehen alle Option auf
     "aus", d.h. /a schaltet die Option "an", whrend /a /a die Option "a"
     erst "an", dann wieder "aus" schaltet.
     /+a schaltet die Option "a" "an", /-a "aus".
     Ist ein Plus bzw. ein Minus angegeben, wird [!] (s. dort) ignoriert.
?	das Zeichen (s.u.), welches fr den Namen der jeweiligen Option steht
.	beliebige oder kein Zeichen, d.h. /a ist identisch mit /aaaaa, /a../34,
	jedoch nicht /aa! (s.u.)
[!] ein optionales Ausrufezeichen am Ende einer Option. Damit kann eine
	Spezialbedeutung der jeweiligen Option aktiviert werden (vgl. [+-]).
	Diese Spezialbedeutung wird aufgehoben, wenn die Option ein weiteres
	Mal verwendet wird, z.B. /a! /a schaltet die Option "a" auf "ein" unter
	Beachtung der Spezialbedeutung und dann wieder auf "aus".

Optionskennzeichen:
#: Unter der CDS-bersicht soll die Anzahl der eingefgten Laufwerke
   (JOIN) angezeigt werden. Hierbei werden die entsprechenden Laufwerke in
   der Tabelle gezhlt und mit einem DOS-internen Flag verglichen.
   Spezialbedeutung: Unterscheiden sich beide Werte, wird das DOS-interne
   Flag, auf den Wert aus der Tabelle gesetzt.
a: Nach dem Ausfhren des Kommandos, soll die CDS-bersicht ausgegeben
   werden; diese Option wird fr die Kommandos "/l" and "/m" ignoriert.
f: An einigen Stellen knnen Namen gespeichert sein. SWSUBST nimmt an,
   da diese Namen rechtens sind, wenn sie aus Zeichen zwischen ASCII 32
   und 126 bestehen, d.h. keine Umlaute, griechischen Zeichen u..  Ist
   diese Option angegeben, werden alle Namen als korrekt angesehen,
   Zeichen auerhalb des oben angegebenen Bereichs werden in der
   hexadezimaler Form: \x?? ausgegeben, wobei ?? die stets zweistellige
   hexadezimale Darstellung des ASCII-Wertes des Zeichen ist.
c: Legt bei JOIN bzw. SUBST den erforderlichen Pfad an und erzeugt im
   Fehlerfall eine Warnung, falls der Pfad weder existiert noch anlegbar
   ist. Diese Option ist mit Vorsicht zu geniessen, da mit den
   physischen Pfaden gearbeitet werden mu, welche logisch evtl.  nicht
   erreichbar sind. Laufwerke, welche mit ASSIGN umgewiesen sind,
   erzeugen stets Fehler. Dabei knnen Verzeichnisse in nicht
   erwnschten Pfaden erstellt werden.
   Spezialbedeutung: Bei SUBST wird der Pfad nicht angelegt.
_: Neben den Treibernamen sollen in der CDS-bersicht alle Attribute,
   auch die ohne (bekannte) Bedeutung ausgeben werden.


Kommandos:

Verfgbarkeit:
Kommando  1)
Kommando  2) lw:{<op><flag>}
Kommando  3) /w lw
Kommando  4) /s lw1 lw2
Kommando  5) /u lw [-]pfad
Kommando  6) /j lw [-]pfad
Kommando  7) /l[!] [gert]
Kommando  8) /m[!] [name]
Kommando  9) -
Kommando 10) --
Kommando 11) /d lw   bzw.  lw -
Kommando 12) lw [-]pfad
Kommando 13) /k [-]pfad
Kommando 14) /q lw:{<op><flag>}


Die allgemeine Form von Kommandos ist identisch mit der von Optionen,
jedoch ist [+-] nicht erlaubt. Abkrzend wird hier deshalb nur "/?"
geschrieben.

Spezifikation von Laufwerksbezeichnern:
lw steht fr ein Laufwerkskennzeichen. Es knnen einzelne Buchstaben
oder ein Buchstabe mit anschlieendem Doppelpunkt verwendet werden, d.h.
'a' und 'a:' sind identisch. Innerhalb von Pfadangaben ist die zweite
Form zu verwenden. Manche Treiber fgen in einem ansonsten nicht
benutzten Bereich einen Namen ein. Dieser kann ebenfalls zur Laufwerks-
identifizierung genutzt werden. Bsp.: Ist der Treibername "DRIVR-1",
kann auf ihn mittels ':drivr-1:' bezug genommen werden. Gro- und Klein-
schreibung wird ignoriert. Der Name darf abgekrzt werden, d.h. im
obigen Fall knnte man auch ':drivr:' oder sogar ':d:' schreiben.

Sollten zwei oder mehr Treiber ber denselben Namen verfgen, kann eine
Nummer verwendet werden, d.h. sollten folgende Treiber existieren:
	A 011c:136a ... .... PHYS ..... A:"\
		==>.DRIVER.<==
	B 011c:138b ... .... PHYS ..... B:"\
		==>.DRIVER.<==
	C 011c:13ac ... .... PHYS ..... C:"\CC\SWSUBST
		==>.DRIVER.<==
	D 011c:13ac ... .... PHYS SUBST C:\CC\SWSUBST"\TEST
	E 0000:0000 NET .... PHYS ..... \\E.\A."
		==>.MSCD001 .<==
Auf Laufwerk A: kann mittels :d:, :dr:, :dri: etc. zugegriffen werden,
auf Laufwerk B: vermittels :1:d:, :1:dr:, :1:dri:, :1:driv: etc.  auf
Laufwerk C: mit :2:d:, :2:dr:, :2:dri:, :2:driv:, :2:drive:, :2:driver:.
In der bersicht werden die Punkte hinter ">" bzw. vor "<" vom Programm
eingesetzt und drfen nicht mit angegeben werden. Leerzeichen innerhalb
des Namens sind ein Problem, da die Laufzeitumgebung das Leerzeichen zum
Trennen der Parameter verwendet.

Eine weitere Mglichkeit, Laufwerksbuchstaben zu erzeugen, ist die Suche
nach den Laufwerkskennzeichen (volume label). Hierbei ist die Form:
'::...:' bzw.  ':-:...:' zu verwenden, wobei '...' fr den Beginn des
Kennzeichens steht. Ist das Minus '-' angegeben, werden SUBST und JOIN
Verbindungen fr dem Test gelst.
Achtung: Das Format ':-:...:' impliziert nicht, da der entstehende Pfad
auch physisch interpretiert wird.


Kommando 1)

ohne kommando

Anzeiger aller mit LASTDRIVE in CONFIG.SYS eingerichteten Laufwerke.

Es wird folgende Ausgabe erzeugt: (bspw.)
A 011c:136a ... .... PHYS ..... ...... A:"\
	_-P--------------_
B 011c:138b ... .... PHYS ..... ...... B:"\
	_-P--------------_
C 011c:13ac ... .... PHYS ..... ...... C:"\CC\SWSUBST
	_-P--------------_
D 011c:13cd ... .... PHYS ..... ...... D:"\
	_-P--------------_
E 0000:0000 ... .... .... ..... ...... E:"\
	_----------------_
F 0000:0000 ... .... .... ..... ...... F:"\
	_----------------_
G 0000:0000 NET .... PHYS ..... HIDDEN \\G.\A."
	==>.MSCD001 .<==	_NP------H-------_

Die Spalten haben folgende Bedeutung:
1 - Logischer Laufwerksbezeichner, mithilfe dessen der DOS-Nutzer das
	Laufwerk ansprechen kann.
2 - Adresse des Disk Parameter Block (DPB), welcher das Laufwerk in
	physischer Hinsicht beschreibt. Sie ist an sich nicht von Interesse
	(auer halt fr mich).
3 - NET: Laufwerk ist mit den Network Redirector integriert, z.B. CD-ROM.
4 - JOIN: Physisches Laufwerk ist mittels DOS-Befehl JOIN in den 
	Verzeichnisbaum integriert. (s. physischer Pfad)
5 - PHYS: Ist stets gesetzt, kennzeichnet ein benutzbares Laufwerk. Auch
	nicht-physische Laufwerke, wie DoubleSpace oder Stacker, bekommen diese
	Kennung.
6 - SUBST: Logisches Laufwerk ist einem Pfad eines anderen physischen
	Laufwerks zugeordnet.
7 - HIDDEN: Ein Flag, welches das Laufwerk fr Netzwerktreiber(?) unsichtbar
    machen soll.
8 - Physische Pfad: Der Laufwerksbezeichner in Spalte 7 darf nicht mit dem
	logischen Laufwerksbezeichner verwechselt werden, hier kennzeichnet
	er ein physisches Laufwerk, also 
		A: erstes Diskettenlaufwerk
		B: zweites Diskettenlaufwerk
		C: primre Partition der ersten Festplatte
		D: primre Partition der zweiten Festplatte
		E-?: alle weiteren Partitionen der ersten Festplatte
		??-*: alle weiteren Partitionen der zweiten Festplatte

	Das Zeichen >>"<< ist nicht Teil des Pfades, es kennzeichnet die Stelle,
	wo sich das Wurzelverzeichnis befindet. bspw.
		C  Befindet man sich logischen Verzeichnis "C:\", befindet man sich
			auch im physischen Verzeichnis "C:\".
		D Befindet man sich im logischen Verzeichnis "D:\", befindet man
			sich im physischen Verzeichen "C:\CC\SWSUBST".

	Der Teil hinter dem >>"<<-Zeichen kennzeichnet den aktuellen Pfad bzgl.
	des Wurzelverzeichnisses, also hier: "D:\TEST" und "C:\CC\SWSUBST".

Falls der Blocktreiber einen Namen in einem ansonsten unbenutzten
Bereich ablegt, wird dieser unter der jeweiligen Zeile als
	==>.???.<==
mit dem Treibernamen ??? angezeigt. Treiber knnen maximal 7 bzw. 8
Zeichen lang sein.

Neben diesem Namen bzw. allein auf der nchsten Zeile wird der Spiegel
aller Attribute angezeigt, wenn die Option '/_' eingeschalten ist:
_-P--------------_
Bekannte Optionen werden im gesetzten Zustand mit ihrem Anfangs-
buchstaben gekennzeichnet, ansonsten steht '-' fr nicht gesetzt, '+'
fr gesetzt. Die beiden Unterstriche '_' stehen immer links und rechts
daneben.

Ist sowohl PHYSICAL als auch NETWORK gesetzt, handelt es sich um ein 
Installable File System (IFS) -- Installierbares Dateisystem mittels
des Network Redirectors (z.B. MSCDEX).



Kommando 2) lw:{<op><flag>}

Verndert die Flags (Spalten 3-6) des Laufwerks lw. <flag> kann
PHYSICAL, JOIN, SUBST, NETWORK, HIDDEN oder eine ein- oder zweistellige
Dezimalzahl zwischen 0 und 15 (Gro- und Kleinschreibung unwichtig) bzw.
eine beliebige, aus mindestens einem Zeichen bestehende Abkrzung sein.
<op> kann sein: '+' fr setzen, '-' lschen, '=' das Flag setzen, die
anderen lschen. Im Attributspiegel bezeichnet 0 das rechte Flag.

Bsp.:

	A 011c:136a ... .... PHYS ..... A:"\
	B 011c:138b ... .... PHYS ..... B:"\
	C 011c:13ac ... .... PHYS ..... C:"\CC\SWSUBST
	D 011c:13ac ... .... PHYS SUBST C:\CC\SWSUBST"\TEST
	E 0000:0000 NET .... PHYS ..... \\E.\A."
		==>.MSCD001 .<==
und
	SWSUBST a=j+s

fhrt zu:

	A 011c:136a ... JOIN .... SUBST A:"\
	B 011c:138b ... .... PHYS ..... B:"\
	C 011c:13ac ... .... PHYS ..... C:"\CC\SWSUBST
	D 011c:13ac ... .... PHYS SUBST C:\CC\SWSUBST"\TEST
	E 0000:0000 NET .... PHYS ..... \\E.\A."
		==>.MSCD001 .<==

und
	SWSUBST a=network=join=phys

fhrt zu:

	A 011c:136a ... .... PHYS ..... A:"\
	B 011c:138b ... .... PHYS ..... B:"\
	C 011c:13ac ... .... PHYS ..... C:"\CC\SWSUBST
	D 011c:13ac ... .... PHYS SUBST C:\CC\SWSUBST"\TEST
	E 0000:0000 NET .... PHYS ..... \\E.\A."
		==>.MSCD001 .<==

Als spezielle Flags sind noch OFF und ON zugelassen. OFF entspricht
-NETWORK-PHYS-JOIN-SUBST, d.h. es lscht alle Flags, das Laufwerk ist
frderhin nicht mehr ansprechbar. Der Operator darf beliebig sein, d.h.
'+', '-' oder '='. Desweitern wird implizit 'swsubst <lw> -' ausgefhrt.
s. das Beispiel unten. ON mu immer ausgeschrieben werden und entspricht
=PHYS, d.h. es macht das Laufwerk verfgbar, sofern es sich nicht um ein
Netzlaufwerk o.. handelt. Auch hierbei ist der Operator beliebig. ON ist
lediglich ein Zugestndnis: >>wenn OFF, dann auch ON<<.
In beiden Fllen werden auch alle anderen Elemente innerhalb der CDS
gendert, so da fr DOS das Laufwerk OFF "aus" bzw. ON "an" geschalten
wird. Leider mu ON nicht gleichbedeutend sein mit "korrekt".


	A 011c:136a ... .... PHYS ..... A:"\
	B 011c:138b ... .... PHYS ..... B:"\
	C 011c:13ac ... .... PHYS ..... C:"\CC\SWSUBST
	D 011c:13ac ... .... PHYS SUBST C:\CC\SWSUBST"\TEST
	E 0000:0000 NET .... PHYS ..... \\E.\A."
		==>.MSCD001 .<==
und
	SWSUBST d:=off

fhrt zu:

	A 011c:136a ... .... PHYS ..... A:"\
	B 011c:138b ... .... PHYS ..... B:"\
	C 011c:13ac ... .... PHYS ..... C:"\CC\SWSUBST
	D 0000:0000 ... .... .... ..... D:"\
	E 0000:0000 NET .... PHYS ..... \\E.\A."
		==>.MSCD001 .<==



Kommando 3) /w lw
"which is"

Gibt als ERRORLEVEL die Nummer des Laufwerks zurck und produziert
ansonsten keine Ausgaben.

ERRORLEVEL == 65 => A:
              66 => B:
			...    ...

ERRORLEVEL == 1 => Laufwerk existiert nicht.

Sinnvoll zu verwenden ist diese Funktion, um von einem Treibernamen den
Laufwerksbuchstaben zu ermitteln, um zu testen, ob dieses Laufwerk
mittels LASTDRV in der CONFIG.SYS vorbereitet wurde, oder um den
aktuellen Laufwerksbuchstaben von einem Laufwerkkennzeichen (volume
label) zu ermitteln.

Die Nummern liegen ab 65 (ASCII 'A'), weil viele DOS-Kommandoprozessoren
ERRORLEVEL auf eine Nummer zwischen 1 bis 12 setzen, falls sie das Programm
nicht laden konnten.



Kommando 4) /s lw1 lw2
"swap"

Tauscht die Eintrge der Laufwerke lw1 und lw2 aus.

		A 011c:136a ... .... PHYS ..... A:"\
		B 011c:138b ... .... PHYS ..... B:"\
		C 011c:13ac ... .... PHYS ..... C:"\CC\SWSUBST
		D 011c:13ac ... .... PHYS SUBST C:\CC\SWSUBST"\TEST
		E 0000:0000 NET .... PHYS ..... \\E.\A."
			==>.MSCD001 .<==

	und 
		SWSUBST /s a c

	fhrt zu:	

		A 011c:13ac ... .... PHYS ..... C:"\CC\SWSUBST
		B 011c:138b ... .... PHYS ..... B:"\
		C 011c:136a ... .... PHYS ..... A:"\
		D 011c:13ac ... .... PHYS SUBST C:\CC\SWSUBST"\TEST
		E 0000:0000 NET .... PHYS ..... \\E.\A."
			==>.MSCD001 .<==


Kommando 5) /u lw pfad
"subst"

Substituiert das Laufwerk lw mit dem Pfad pfad.
Die Parameter mssen folgendes Format haben:

lw - Ein Buchstabe evtl. gefolgt von einem Doppelpunkt, bspw.
	 "A", "a", "A:" oder "a:" sind legal und verweisen auf das
	 logische Laufwerk A:. Wurde ein Netzlaufwerk oder ein Laufwerk
	 grer als LASTDRV angegeben, wird ein Fehler erzeugt.

pfad - Der physische Pfad, auf den das logische Laufwerk verweisen soll.

	   Ist pfad "-", "/d" oder "/D" ist diese Angabe gleichbedeutend
	   mit "-?:\", wobei "?" gleich lw ist, und bewirkt das Lschen
	   der Substituierung, d.h. das logische Laufwerk verweist auf
	   das gleichnamige physische. Zustzlich wird der DPB ersetzt
	   und der aktuelle Pfad auf das Wurzelverzeichnis gesetzt.

	   Beginnt pfad mit einem Bindestrich "-", wird der
	   Laufwerksbezeichner nicht durch den DOS-Ruf "truename"
	   gewandelt, sondern nur in einen absoluten Pfad gewandelt.
	   Beginnt pfad mit zwei rechtsgeneigten Schrgstrichen '\\'
	   oder wurden zwei Bindestriche '--' vorangestellt, wird
	   angenommen, da der Pfad bereits absolut ist. Das ist bei
	   Netzlaufwerken notwendig, bspw.:

		A 011c:136a ... .... PHYS ..... A:"\
		B 011c:138b ... .... PHYS ..... B:"\
		C 011c:13ac ... .... PHYS ..... C:"\CC\SWSUBST
		D 011c:13ac ... .... PHYS SUBST C:\CC\SWSUBST"\TEST
		E 0000:0000 NET .... PHYS ..... \\E.\A."
			==>.MSCD001 .<==

	   "SWSUBST a: d:\test" substituiert das logische Laufwerk A: nach
	   "C:\CC\SWSUBST\TEST"; wohingegen "SWSUBST a: -d:\test" A: nach
	   "D:\TEST" substituiert.

	   Der Bindestrich verhindert bei absoluten Pfaden auch den Zugriff
	   auf das Laufwerk, bspw.:
	   	SWSUBST a b:
	   erzeugt einen Kritischen Fehler von DOS, falls sich keine Diskette
	   im Laufwerk befindet.
	   	SWSUBST a -b:\
	   erzeugt auch dann keine Meldung, wenn keine Diskette im Laufwerk liegt.

	   Beide Mglichkeiten unterscheiden sich, so bietet bspw. der DOS-Befehl
	   SUBST die "-" Variante nicht, weshalb hier ein physisches Laufwerk D:
	   logisch nicht mehr zugreifbar ist.

	   ACHTUNG: Die Angabe von relativen Pfaden knnte zu unerwarteten 
	   			Ergebnissen fhren. bspw.: bei obiger Lage:
	   				SWSUBST a: -d:
	   			ist gleichbedeutend mit "SWSUBST a: -d:\test". Der physische
	   			Pfad pfad wird hier mit logischen Pfadkomponenten ergnzt.

	   	Es wird jedoch nicht berprft, ob pfad existiert oder nicht. Die
	   	Verwendung nichtexistierender Pfade kann zu Dead Locks fhren,
	   	wenn DOS auf diese Laufwerke zugreifen will. Im einfachsten Fall
	   	erhlt man lediglich die Fehlermeldung, da das Laufwerk und/oder
	   	der Pfad nicht existiert.

	   	Als Spezialfall gilt der Befehl "SWSUBST ? -?:\", wobei beide
	   	"?"-Zeichen einem logischen Laufwerksbezeichner entsprechen. Dieses
		Kommando ist gleichbedeutend mit "SWSUBST ? /d".


Kommando 6) /j lw pfad
"join"

	analog Format 5), jedoch wird der Pfad nicht substituiert, sondern
	das Laufwerk in den Pfad eingefgt (JOIN).


Kommando 7) /l[!] [gert]
"list drivers"

Ist gert nicht angegeben, werden alle installierten Gerte mit ihrem
Namen, welcher im Gertekopf steht, ausgegeben, ab DOS 5 wird zustzlich
der Name der Programmdatei ausgegeben, welche den Gertetreiber
installierte, sofern er kein Standardtreiber ist.
	Bsp.:

NUL     
IFS$HLP$ <<D>> IFSHLP  
CON      <<D>> EANSI   
MSCD001  <<D>> SGCDU   
EMMXXXX0 <<D>> EMM386  
XMSXXXX0 <<D>> HIMEM   
SETVERXX <<D>> SETVER  
CON     
AUX     
PRN     
CLOCK$  
COM1    
LPT1    
LPT2    
LPT3    
COM2    
COM3    
COM4    

Falls in den << >> ein 'D' steht, ist der Name wahrscheinlich korrekt.

Ist gert angegeben, wird nach einem Gertetreiber gesucht, der mit
dieser Zeichenkette beginnt. Die Gro- und Kleinschreibung wird
ignoriert. Wird ein passender Eintrag gefunden, wird ERRORLEVEL auf 0
gesetzt, sonst auf einen Wert grer als Null.
Als Spezialbedeutung (mit ! am Ende) werden auch die Namen nach "<<D>>"
durchsucht.


Kommando 8) /m[!] [name]
"mcb"

Ist name nicht angegeben, zeigt dieses Kommando die MCB-Kette,
einschlielich der Speicherblcke im UMB, an und versucht, in jedem der
Elemente wieder eine MCB-Kette anzuzeigen.
	Bsp.:

0x025b M SD system_data
    0x025c D KEYBUFX  drv=KEYB-X   system_drive
    0x0281 D SETVER   drv=SETVERXX system_drive
    0x02a6 D HIMEM    drv=XMSXXXX0 system_drive
    0x02ef D EMM386   drv=EMMXXXX0 system_drive
    0x03b3 D IFSHLP   drv=IFS$HLP$ system_drive
    0x04a5 F *  system_files
    0x0528 X   system_fcbs
    0x052e B   system_buffers
        0x052f M  0x5b5a
    0x054f L   system_lastdrive
        0x0550 A  0x5c3a
0x057c M SC system_code
0x0581 M  COMMAND
    0x0582 C ommEMM 0x4e4f
0x0585 M COMMAND 
0x0647 M lwort env=COMMAND
0x0688 M  env=SWSUBST
0x06a3 M SWSUBST 
0x9fff M SC system_code
0xb159 M SD system_data
    0xb15a D EANSI    drv=CON      system_drive
0xb7fe M SC system_code
    0xb7ff M SM       system_memory
    0xd800 Z UMB      
0xd801 M SMARTDRV 

Das Format ist wie folgt:
1. Einrckung zur Verdeutlichung, ob ein Speicherblock sich innerhalb
   dem vorangegangenen befindet;
2. Adresse des Speicherblocks in hexadezimaler Form;
3. Speicherblocktyp;
4. Name des Programms, welches den Speicherblock erzeugt hast, er
   wird nur durch die DOS-Funktion "Programmladen" eingetragen,
   deshalb kann er leer oder unsinnig sein (z.B. 0x0688 und 0x054f);
5. Name des Programms, welches zu welchem der Speicherblock gehrt, oder
   Name des Treibers (beginnt mit "drv=") oder Name des Programms, zu
   welchem diese Umgebung (beginnt mit "env=") gehrt, die Form 0x<zahl>
   wird benutzt, um Speicherblcke ohne zugehriges Programm zu
   kennzeichnen (mglicherweise kein MCB!);
6. der Versuch, den Sinn des Speicherblockes zu erraten (beginnt mit
   "system_").

Als Spezialbedeutung wird zwischen dem Speicherblockstyp und dem Namen
die Gre des Speicherblocks in Einheiten zu 16 Byte eingefgt und der
Name in ">> <<" eingeschlossen.

0x025b M 0x0320 >>SD<< system_data
    0x025c D 0x0024 >>KEYBUFX<< drv=KEYB-X   system_drive
    0x0281 D 0x0024 >>SETVER<< drv=SETVERXX system_drive
    0x02a6 D 0x0048 >>HIMEM<< drv=XMSXXXX0 system_drive
    0x02ef D 0x00c3 >>EMM386<< drv=EMMXXXX0 system_drive
    0x03b3 D 0x00f1 >>IFSHLP<< drv=IFS$HLP$ system_drive
    0x04a5 F 0x0082 >>*<<  system_files
    0x0528 X 0x0005 >><<  system_fcbs
    0x052e B 0x0020 >><<  system_buffers
        0x052f M 0x3001 >><< 0x5b5a
    0x054f L 0x002c >><<  system_lastdrive
        0x0550 A 0x0000 >><< 0x5c3a
0x057c M 0x0004 >>SC<< system_code
0x0581 M 0x0003 >><< COMMAND
    0x0582 C 0x4946 >>ommEMM<< 0x4e4f
0x0585 M 0x00bc >>COMMAND<< 
0x0647 M 0x0040 >>lwort<< env=COMMAND
0x0688 M 0x001a >><< env=SWSUBST
0x06a3 M 0x190b >>SWSUBST<< 
0x9fff M 0x1159 >>SC<< system_code
0xb159 M 0x0077 >>SD<< system_data
    0xb15a D 0x0076 >>EANSI<< drv=CON      system_drive
0xb7fe M 0x2002 >>SC<< system_code
    0xb7ff M 0x2000 >>SM<< system_memory
    0xd800 Z 0x17ff >>UMB<< 
0xd801 M 0x07d5 >>SMARTDRV<< 


Ist name angegeben, wird der Name eines solchen Speicherblockes gesucht.
Speicherblcke, die als Umgebung markiert sind ("env="), werden dabei
ignoriert; Gro- und Kleinschreibung ebenfalls. Ohne Spezialbedeutung
mu der Name lediglich mit name beginnen. Wird name gefunden, wird
ERRORLEVEL auf 0 gesetzt, ansonsten auf einen Wert grer als Null.


Kommando 9) -

Lst alle SUBST- und JOIN-Definitionen, die z.Z. existieren.


Kommando 10) --

Fhrt auf alle Laufwerke, deren NETWORK-Flag nicht gesetzt ist,
'SWSUBST ? -' aus.
Achtung: Dieses Kommando wechselt auf allen betroffenen Laufwerken ins
Wurzelverzeichnis.


Kommando 11) /j lw /d
	oder	 /j lw -
	oder	 /j /d lw
	oder	 /u /d lw 
	oder	 /u lw /d
	oder	 /u lw -
	oder	 /d lw
	oder	 lw /d
	oder	 lw -

Lst die SUBST- oder/und JOIN-Definition von Laufwerk lw. Initialisiert
den DPB und legt das Wurzelverzeichnis als aktuelles Verzeichnis des
jeweiligen Laufwerks fest.


Kommando 12) lw pfad

Falls der Name der Programmdatei von SWSUBST nach JOIN unbenannt wurde,
wird Kommando 6) ausgefhrt. In allen anderen Fllen Kommando 5).

Kommando 13) /k [-]pfad
"mkdir"

Der Pfad pfad wird angelegt. Fehlende berverzeichnisse werden ebenfalls
angelegt. Ist der optionale Bindestrich '-' angegeben, werden evtl.
bestehende SUBST- bzw. JOIN-Verbindungen kurzzeitig gelst.


Kommando 14) /q lw:{<op><flag>}
"query"

Dieses Kommando ist das Gegenstck zu Kommando 2) und fragt die
Laufwerkflags ab. Dabei wird ERRORLEVEL auf Null gesetzt, wenn die
Laufwerksflags der Bedingung gengen, ansonsten auf einen Wert grer
als Null.

Als Operationen <op> sind '+' fr gesetzt und '-' fr nicht gesetzt
zugelassen. Korrekte Flags <flags> sind: PHYSICAL, SUBST, NETWORK, JOIN,
HIDDEN und eine ein- bzw. zweistellige Dezimalzahl.




Unterschiede zu DOS' SUBST/JOIN:

DOS's SUBST/JOIN Aufrufe:
1) SUBST lw: pfad
2) SUBST lw: /d
3) SUBST

Unterschiede:
1) pfad kann nicht mit einem Bindestrich '-' beginnen;
   falls lw bereits mittels SUBST bzw. JOIN verbunden ist, wird diese
   Verbindung ohne Warnung gelst;
2) falls lw keine SUBST Verbindung hat, wird kein Fehler erzeugt;
   eine JOIN Verbindung wird ohne Warnung gelst;
3) zeigt nicht nur die mit SUBST verbunden Laufwerke, sondern die
   gesamte CDS Tabelle an.

Fr JOIN gilt das analog.



Umgebungsvariablen:

Bevor die Optionen ausgewertet werden, wird die Zeichenkette
"%SKAUS% %SKAUS17% %SKAUS17A% %SKAUS17A2% "
ausgewertet. 'SKAUS...' sind Umgebungsvariablen, ber die das DOS-
Handbuch mehr wei.

Diese Zeichenkette darf alle Optionen enthalten, zustzlich einige nur
hier gltigen Optionen ohne vorangestelltes Optionszeichen '/' (Gro-
und Kleinschreibung unwichtig), vor und nach dem Gleichheitszeichen '='
drfen keine Leerzeichen stehen. Solange der Diagnosemodus ausgeschaltet
ist, werden unbekannte Optionen hier ignoriert.

Verfgbare Optionen:
'banner'	Programmkurzbeschreibung anzeigen (berschrift)
'nobanner'	Programmkurzbeschreibung NICHT anzeigen
'silent'	alle Ausgaben auer ERRORLEVEL ausschalten, auch Umleitungen
			werden aufgehoben
'nosilent'	Ausgaben nicht ndern
'errout=..'	Fehlerausgaben umlenken:
			.. == !  => in Standardausgabestrom mischen
			.. == !# => in den Ausgabestrom Nummer # mischen
			.. beginnt nicht mit einem Ausrufezeichen '!' =>
						in die Datei .. schreiben
'errfile=.'	Zeichenkettendatei, u.a. Fehlerausschriften:
			. leer => eingebaute deutsche Texte nutzen
			. == # => die Zahl # kennzeichnet den Anfang der Texte
					  in der Programmdatei
			. keine Zahl => Datei, die die Texte enthlt
				[[s. Neue Texte einbringen]]
'makeerrfile' Beispiel einer Fehlertextdatei in deutsch auf die
			  Standardausgabe schreiben
				[[s. Neue Texte einbringen]]
'dosish'	DOS - Kompatibilitt einschalten. Nachfolgend werden nur die
			Formate analog "Unterschied zu DOS' SUBST/JOIN".  Jedoch 
			werden DOS' SUBST/JOIN Format 3) kompatible Tabellen erzeugt.
			JOIN und SUBST wird analog zu Kommando 12) unterschieden.
'nodosish'	DOS - Kompatibilitt abschalten
'diag'		Diagnosemodus einschalten
'nodiag'	Diagnosemodus ausschalten



Neue Texte einbringen:

Alle Ausgaben, die das Programm erzeugt, knnen verndert werden, z.B.
um sie einer anderen Sprache anzupassen. Die Standardsprache ist
deutsch.

Hierzu ist folgenden Schritten zu folgen:
1) Eine der vier Umgebungsvariablen auf "makeerrfile" setzen.
2) Programm aufrufen und die Ausgabe in eine Datei umleiten, z.B.
   "SWSUBST >swsubst.q".
3) Die Umgebungsvariable auf ihren alten Wert setzen oder lschen.
4) Die Datei "swsubst.q" ndern. Dabei sind die Zeilen ">>#" nicht
   zundern, auer wenn der jeweilige Text NICHT gendert werden soll,
   dann MU die Zeile gelscht werden.
   Jeder Eintrag kann nicht lnger werden als der Hilfetext (Text nach
   ">>0"), da jener Bereich intern als Puffer fungiert. Deshalb MU der
   Hilfetext immer umdefiniert werden, oder nicht aus der Datei
   gestrichen.
   Der Text enthlt Zeichenfolgen der Form "%??", welche Einfgungen
   kennzeichnet. Diese Einfgungen knnen in der Reihenfolgen NICHT
   gendert werden, jedoch drfen sie vom Ende her lckenlos entfallen.
5) Verfgbarmachen des neuen Textes ber eine Umgebungsvariable (die
   Variable SKAUS eignet sich nicht) und die Option "errfile=". 
   Variante 1) Option "errfile=...\swsubst.q" mit ... dem absoluten
   Pfad zur Datei.
   Variante 2) Ermitteln der Lnge der Programmdatei von SWSUBST.
   Anhngen der Fehlertextdatei an die Programmdatei, z.B. mittels 
   "copy /b swsubst.exe + swsubst.q swsubst1.exe". Setzen der Option
   "errfile=#", mit # der oben ermittelten Lnge. Diese Zahl ist in C
   Notation, d.h. beginnt die Ziffer mit '0' ist sie oktal, mit '0x'
   oder '0X' hexadezimal, beginnt sie mit einer Ziffer zwischen 1 und 9
   ist sie dezimal. Um weitere Anfgungen zu ermglichen, sollte noch
   das Textendekennzeichen ^Z (ASCII 1A hex bzw. 26 dez) angehngt
   werden, sofern es nicht schon geschehen ist.

Um z.B. statt deutschen Texten englische zu erhalten, knnen die
vordefinierten [siehe Datei SWSUBST.LNG] verwendet werden, bzw. statt
der vordefinierten englischen die deutschen, indem "errfile=" ohne
Argument verwendet wird.

Die SWSUBST - Programmdatei darf mit angehangenen Textdatei weitergegeben
werden, sofern das in der Datei SWSUBST.LNG vermerkt wird.



Autor:

Steffen Kaiser
Ernst-Thlmann-Strae 2
D-39606 Iden
Deutschland - Germany
