home *** CD-ROM | disk | FTP | other *** search
- Dokumentation zu ADDFILES Seite 1
- ────────────────────────────────────────────────────────────────────────────
-
-
-
- Programm-Name: ADDFILES.COM
-
- Version: 1.28
-
- Funktion: Nachträgliches Verlängern und Verkürzen der System-
- Dateien-Liste (= SDL oder SFT = System-File-Table)
- d.h. verändern des Wertes FILES=nn aus der Datei
- CONFIG.SYS ohne Neubooten des Systems
-
- Autor: Bernd Schemmer
- Bäckerweg 48
- 60316 Frankfurt/M.
- Tel.: (069) 4 97 04 84
-
- System: IBM-PC/AT/Kompatibler
- Hardware:
- Betriebs-System: DOS 3.3 oder höher
- Sprache: Assembler
- Compiler: A86
-
- Letzter Update: 03.11.1993
-
- Vertrieb: Freeware
-
- Besonderheiten: Benutzt
- - die undokumenierte Funktion 52h des Int 21h,
- - die undokumentierten MCBs
- und
- - die undokumentierte System-Datei-Liste
-
- Nicht getestet unter DOS 4.xx mit Auslagerung von
- FILES=xx in EMS!!
-
- ADDFILES läuft nicht unter dem Kommando-Interpreter
- 4DOS Version 3 oder früher!
- ADDFILES läuft nicht unter DR DOS 3.41 und in der
- DOS-Box von OS/2 (V1.3, V2.0 und V2.1).
-
- Das Programm darf auf keinen fall durch ein TSR-Ver-
- waltungsprogramm aus den Speicher ausgelagert werden,
- auch nicht ins EMS oder in Speicher oberhalb von 1 MB
- da der Zugriff auf den von ADDFILES belegten Speicher
- nicht über eine Interrupt-Routine sondern durch das
- Betriebssystem erfolgt.
- Die DeInstallation darf NUR über ADDFILES selbst vor-
- genommen werden! (sonst ist ein Systemabsturz beim
- nächsten Dateizugriff vorprogrammiert!)
-
- Dokumentation zu ADDFILES Seite 2
- ────────────────────────────────────────────────────────────────────────────
-
-
-
- Quellen: Die Methode zur Ermittlung der Adresse der SDL ist
- aus der c't, der Aufbau und die Funktion der SDL ent-
- stammt eigenen Ermittlungen. Die Idee, den Speicher-
- bereich für die neue Liste an das obere Ende des
- Speichers zu verlegen, habe ich dem Buch 'DOS 5 für
- Programmierer' von Arne Schäpers entnommen.
-
- Aufruf: ADDFILES {parameter}
-
- Parameter: -S -> Anzeige der momentan möglichen maximalen Anzahl an
- Dateien, der noch möglichen Datei-Eröffnungen und
- der Daten evtl. schon vorhandener Erweiterungen
-
- -A -> Ausgabe der Datei- bzw. Geräte-Namen aller belegten
- Listen-Einträge und der Art der Belegung (Lesen,
- Schreiben oder Lesen und Schreiben)
-
- +n -> Vergrössern der System-Datei-Liste um n Einträge
- (hinter der Zahl muß noch mindestens ein Blank
- stehen, dez., Intervall: 1..255)
-
- Die Anzahl der Einträge in allen Listen kann eben-
- falls 255 nicht überschreiten
-
- -V -> Rückgängig machen der letzte Vergrösserung falls
- kein Eintrag der letzten Teilliste belegt ist. Ist
- noch mindestens ein Eintrag der Liste belegt, werden
- die Datei- bzw. Geräte-Namen der belegten Einträge
- in der letzten Liste ausgegeben und die Entfernung
- der Liste wird unterdrückt.
-
- War keine Vergrösserung in Kraft, wird eine Fehler-
- Meldung ausgegeben.
-
- -I -> wie -V, aber ignoriert eine evtl. Belegung der Liste
-
- -Hn -> Falls dieser Parameter angegeben ist, benutzt das
- Programm den UMB (falls vorhanden) für eine neue
- Teilliste der SDL, n ist die Speicherbelegungsstra-
- tegie:
- n = 1 -> belege höchsten belegbaren Block
- n = 2 -> belege den am besten passenden Block
-
- -? Ausgabe der Aufruf-Syntax von ADDFILES
-
- -?? Ausgabe eines erweiterten Hilfstextes zu ADDFILES
-
- Dokumentation zu ADDFILES Seite 3
- ────────────────────────────────────────────────────────────────────────────
-
-
-
- Beschreibung: ADDFILES dient dazu, die mögliche Anzahl der Einträge in
- der System-Dateien-Liste (SDL) nachträglich zu erweitern
- und wieder zu verkleinern ohne das System neu zu booten.
-
- Die Anzahl der Einträge in der SDL wird normalerweise
- durch den Eintrag von 'FILES=nn' in der Datei CONFIG.SYS
- festgelegt und bestimmt, wieviel Dateien gleichzeitig
- geöffnet werden können.
-
- Das Verändern der Größe der SDL ist normalerweise nur
- durch das Ändern der Datei CONFIG.SYS und erneutes
- Booten des Systems möglich. Da jeder Eintrag in der SDL
- aber zusätzlichen Speicher belegt, ist es wenig sinnvoll
- diesen Wert auf die maximal benötigte Anzahl Dateien zu
- setzen, falls diese nur äußert selten erreicht wird.
-
- Mit Hilfe von ADDFILES ist es nun möglich den Wert für
- FILES in der Datei CONFIG.SYS auf die normalerweise
- benötigte Anzahl zu begrenzen und diesen nur falls ein
- Programm mehr Dateien öffnen will zu erhöhen.
-
- z.B. könnte dann eine Batch-Datei zum Aufruf einer
- Datenbankverwaltung folgendermaßen aussehen:
-
- REM Wert für FILES erhöhen
- ADDFILES +30
- REM Programm aufrufen, z.B. DBASE
- DBASE
- REM Wert für FILES wieder erniedrigen
- ADDFILES -V
-
-
- Funktionsweise des Programms:
- ─────────────────────────────
-
- Das Programm ermittelt zuerst über die Funktion 52h des
- Interrupt 21h den Anfang der System-Dateien-Liste (SDL)
- und ermittelt die aktuellen Werte der SDL.
- Dann wird, falls die Liste vergrössert werden soll, nach
- der Überprüfung der Größe der Liste und der Größe der
- Erweiterung eine neue Liste aufgebaut und der Zeiger der
- letzten Teil-Liste auf die neue Liste gesetzt.
-
-
-
- Dokumentation zu ADDFILES Seite 4
- ────────────────────────────────────────────────────────────────────────────
-
-
-
- Für jede neue Liste wird ein Speicherbereich am oberen
- Ende des Speichers reserviert. Der benötigte Speicher
- für eine neue Liste kann über folgende Formel ermittelt
- werden:
-
- (n * 53 + 6 + p) (DOS 3.3)
- bzw.
- (n * 59 + 6 + p) (DOS 4.xx und DOS 5.xx)
-
- n ist hierbei die Anzahl der neuen Einträge, und p ist
- die Anzahl Byte, die zusätzlich aufaddiert werden
- müssen um auf eine durch 16 (Paragraphen-Größe) teilbare
- Block-Größe zu kommen.
-
- Falls die Liste verkleinert werden soll, überprüft das
- Programm ob eine Erweiterung in Kraft ist und, falls ja
- ob noch Einträge in der Erweiterung belegt sind.
- Ist dies der Fall, werden nur eine Fehlermeldung und die
- Namen aus den noch belegten Einträgen ausgegeben.
- Sind keine Einträge mehr belegt oder ist der Parameter
- -I angegeben wird der Zeiger der vorletzten Liste
- korrigiert und der Speicher der letzten Liste wieder
- freigegeben.
-
- Jede Verkleinerung entfernt jeweils nur die letzte
- Erweiterung. Das Programm kann beliebig oft aufgerufen
- werden, solange die maximale Anzahl Einträge in der SDL
- nicht grösser als 255 wird.
-
- Zur Markierung einer Erweiterung schreibt das Programm
- in den MCB an der normalerweise unbenutzen Stelle ab dem
- Offset 08h den Namen des Programms (ADDFILES).
- (Im Gegensatz zu früheren Versionen von ADDFILES wird
- der Block NICHT mehr als zum Betriebssystem gehörend
- gekennzeichnet!)
-
-
-
-