ToBig

TO_BIG V1.00 vom 17.5.2000

Vorwort


Dieses Programm manipuliert die Dfree Routine des Betriebssystems. Dies ist nötig auf Systemen mit Partitionen >2 GB (4 GB) und Programmen die damit nicht zurechtkommen. Die Ursache dieses Problems ist ganz einfach. Dfree gibt 4 ganze Zahlen zurück (32 Bit Integer) um daraus den Gesamtspeicherplatz einer Partition bzw. den noch freien Speicher zu ermitteln müssen jeweils 3 dieser 4 Zahlen miteinander multipliziert werden. Macht man dies wiederum mit einem 32Bit-Integer so kann es passieren, daß das Ergebnis da nicht mehr hereinpasst (ein sog. Überlauf). Hier gibt es 2 Varianten:

    1) das Programm benutzt einen Vorzeichenlosen Integer, dann liegt die Grenze bei 4GB
    2) das Programm benutzt einen vorzeichenbehafteten Integer, dann liegt die Grenze bei 2GB

Sind z.B. 7GB frei, so ergibt die o.g. Multiplikation im ersten Fall 3GB, im zweiten -1GB. Wird dieses Ergebnis jetzt benutzt um festzustellen, ob noch genug Platz auf der Partition für eine anstehende Kopieraktion vorhanden ist, so schlägt das im 2. Fall sicher fehl. Im ersten Fall ist die Gefahr zwar geringer, da das Resultat zumindest immer positiv ist, aber aus 4.0001GB würden 100kB,
und das reicht auch oft nicht.
Lösungsmöglichkeiten:

    1) Den Programmierer darauf aufmerksam machen und auf eine Korrektur warten. Es ist einfach, man muß nur einen anderen Datentyp nehmen.
    2) Wenn das Programm nicht mehr weiterentwickelt wird, oder man nicht warten will hat man mit diesem Programm die Möglichkeit die Symptome zu beheben.

Methode

Es gibt 2 Hauptgründe Dfree aufzurufen, entweder um die Information anzuzeigen, oder um wie oben beschrieben zu wissen, ob genug Platz vorhanden ist. Im ersten Fall bleibt nur eine Korrektur des Programms. Im 2. Fall kann man bei 99% der Fälle etwas von außen machen. Und zwar, wenn ich Dfree so manipuliere, daß es nie mehr als 2GB zurückgibt. Genau dies macht TO_BIG. Im Falle, das der Platz angezeigt werden soll gibt es natürlich eine falsche Anzeige. Das ganze mal am Bsp. von Kobold (V. 3.51) Kobold zeigt mir mit installiertem TO_BIG an, das auf meiner Partition H 2GB von 2GB frei wären und nichts belegt ist. In Wirklichkeit hat die Partition 4GB wovon ~275MB belegt sind. Aber ohne TO_BIG weigert sich Kobold standhaft etwas auf diese Partition zu kopieren. Da bevorzuge ich eine falsche Anzeige. Da ich sonst mit Kobold zufrieden bin und es vor allem brauche um
Kopierjobs durchzuführen habe ich ursprünglich TO_BIG geschrieben. Ich gehe allerdings davon aus, daß es in absehbarer Zeit eine neue Version von Kobold geben wird. Weiterhin weigern wird sich Kobold natürlich wenn ich über 2GB kopieren will, aber mal ehrlich wie oft passiert das?
Kobold hatte hier das Pech als Bsp. herangezogen zu werden, nicht weil es besonders schlecht ist, sondern eher umgekehrt, weil ich es zu gut fand um es wegen eines so kleinen Fehlers in den Mülleimer zu schmeißen.
Ich vermute, das der überwiegende Teil aller Programme die Dfree benutzen diesen Fehler haben.
Bekannt ist er mir mir in älteren Versionen von CAT (bis 4.14). In der Version 4.15 habe ich es behoben. Und in CAB,  hier gibt es Probleme mit dem CACHE.
 

Beschreibung des Programms:

Mode 0

Dfree wird immer korrigiert (auf knapp 2GB)
 

Mode 1

TO_BIG liest eine Liste von Programmen ein und korrigiert Dfree nur bei diesen. Leider ist es im TOS nirgends vorgesehen, zu fragen wie das aktuelle Programm heißt. Eine Methode gibt es aber, die allerdings nur auf neueren TOS-Varianten läuft. Bei anderen kann also nur Mode 0 verwendet werden. Da meine Doku hier nicht eindeutig ist kann es sein, daß TO_BIG versucht den Programmnamen zu ermitteln obwohl es nicht geht. Deshalb habe ich einen Testmodus eingefügt. Man könnte jetzt meinen, diesen
Test könne man doch bei jedem Start durchführen. Doch sollte TO_BIG im Autoordner installierbar sein, und dort sind keine AES-Aufrufe möglich, und genau die werden verwendet.

Mode 2

wie Mode 1, zusätzlich wird aber ein Logfile geführt, in dem alle Programme aufgelistet werden, die Dfree benutzt haben, außerdem wird jeweils angegeben ob dieses Programm bekannt ist, also ob es korrigiert werden soll.

Testmodus

Ruft man TO_BIG mit dem Parameter -t auf, so wird nur das inf-File analysiert und geprüft ob die Ermittlung des Programmnamens funktioniert. Letzteres vergleicht den gefundenen Namen mit "TO_BIG ". Dies schlägt natürlich fehl wenn man das Programm umbenennt. Für den Normalbetrieb ist der Name unwichtig.
Da -t derzeit der einzige Parameter ist wird garnicht geprüft ob es wirklich -t ist, sondern jeder Parameter startet den Test, das kann sich aber ändern.
 

Installation

TO_Big.TOS und TO_Big.INF entweder in den Auto Ordner kopieren oder in die Autoexec.BAT eintragen. Bei Eintragung in Autoexec.BAT gehört das INF-File in das Rootverzeichnis der Bootpartition, also normalerweise nach C:\. Es kann aber auch per Hand gestartet werden. Wird es gestartet wenn es bereits installiert war, so deinstalliert es sich. In beiden Fällen wird eine Meldung ausgegeben, beim Deinstallieren wird außerdem auf einen Tastendruck gewartet. Darauf habe ich beim Installieren verzichtet um den Ablauf im Autoordner nicht zu behindern.

TO_Big.inf mit einem Editor editieren. Ein Bsp. File ist beigefügt
Ein Kommentar beginnt mit ';' und wird ignoriert.
Von den Schlüsselwörtern (Mode, Logfile und Programme) wird nur der 1. Buchstabe geprüft
(Groß-/Kleinschreibung wird ignoriert), Ob man also:

    mode=1

oder

    Methode=1

oder

    M=1

schreibt ist gleich.
Zwischen den verschiedenen Teilen muß ein (oder mehrere) Trennzeichen sein, dies kann eine
Leerstelle, ein Tabulator oder das '=' Zeichen sein. Gültig ist also z.B.:

    Mode=1
    Mode 1
    Mode  1

aber nicht

    Mode1
    Mode:1

Schreibt man einen Kommentar ans Zeilenende, so muß also auch vor dem ';' ein Trennzeichen sein, also:

    Logfile g:\to_big.log ;das Logfile

und nicht

    Logfile g:\to_big.log;das Logfile

Nach dem Vorgeplänkel jetzt zu den einzelnen Einträgen

Aufbau von To_Big.inf

 

1) Mode


kann zu 0,1 oder 2 gesetzt werden (s.o.)
Bsp.:

    Mode=1

Dfree wird nur bei den unten angegebenen Programmen korrigiert
 

2) Logfile


Für Mode=2 wird ein Logfile benötigt, ist keines angegeben wird C:\to_big.LOG benutzt.
Bsp.:

    Logfile=G:\TMP\to_big.LOG

Falls Mode=2 wird das Logfile in G:\TMP\to_big.LOG geführt
 

3) Programme


Ab diesem Schlüsselwort wird alles als Liste von Programmen interpretiert, bei denen Dfree korrigiert werden soll.
Bsp.:

    Programme:
    C:\KOBOLD_3.ACC
    KOBOLD_3

Benutzt wird im Endeffekt nur der eigentliche Name des Programms, also z.B. KOBOLD_3, ohne Pfad und ohne Endung. Und außerdem auf 8 Zeichen gekürzt. Dies ist im Betriebssystem begründet. Gibt man hier den kompletten Pfad an wird er entsprechend gekürzt.
Die Punkte 1-2 können in beliebiger Reihenfolge aufgeführt sein, aber nach Programme wird kein Schlüsselwort mehr gesucht. Nur Kommentare sind noch erlaubt.

TO_BIG einmal im Testmodus starten s.o.. Ggf kann nur Modus 0 benutzt werden. Dieser Test muß unter jedem Betriebssystem wiederholt werden unter dem man TO_BIG benutzen will.  Es sollte unter MagiC und Multitos in allen Modi funktionieren.
 

 Programmtechnisches

Das Programm verbiegt den Gemdos Vektor. Es benutzt den XBRA Standard mit der ID 'DYJT'.
 

Rechtliches

Das Programm ist Freeware. Es kann auch in PD Sammlungen aufgenommen  werden oder kommerziellen Programmen beigefügt werden.

Kobold, MagiC und Cab sind Warenzeichen von Application Systems Heidelberg

Zurück zum Downloadbereich meiner Homepage