home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
-
-
-
- MAKELIB.COM V1.20
-
-
- Komprimieren von Assembler-Quelltexten durch Entfernen
- aller überflüssigen Zeilen und Zeichen
-
-
-
- (c) Copyright by
- Bernd Schemmer
- Ondrup 117
- 4710 Lüdinghausen 2
-
- Letzter Update: 23.02.1992
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- Dokumentation für MakeLib Seite 1
-
-
-
-
- Inhalt Seite
- ────────────────────────────────────────────────────────────
-
-
- System-Vorraussetzungen ................................ 2
- Vertrieb von MakeLib ................................... 2
- Beschreibung ........................................... 2
- Aufruf ................................................. 3
- Benutzung der Environment-Variable MAKELIB ............. 8
- Kommentare in den Parametern und in der
- Environment-Variable ................................... 8
- Errorlevel ............................................. 9
- Interna ................................................ 9
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- Inhalts-Verzeichnis I 1
-
-
-
- System-Vorraussetzungen
- ───────────────────────
-
- Die Systemvorrausetzung für die Nutzung von MAKELIB.COM sind minimal:
- Nur ein IBM-PC/AT/Kompatibler mit dem Betriebssystem MS-DOS 3+ wird
- benötigt.
-
- MAKELIB wurde zur Verwendung für Quelltexte für den A86 geschrieben,
- sollte aber auch mit Quelltexten für andere Assembler problemlos zu-
- rechtkommen.
-
-
-
- Vertrieb von MakeLib
- ────────────────────
-
- MAKELIB.COM ist Teil der Sammlung Lib4A86 und wird als Shareware
- vertrieben. Für die Bedingungen zur Benutzung und Weitergabe von
- MAKELIB.COM deshalb bitte in der Dokumentation zu Lib4A86 nachsehen.
-
-
-
- Beschreibung
- ────────────
-
- Der Assembler A86 arbeitet mit Libarys aus Quelltexten (da er nur
- assembliert aber nicht linkt). Dies hat neben den Vorteilen auch
- Nachteile. Ein wesentlicher Nachteil dieser Methode ist der Speicher-
- bedarf der Quelldateien der Libarys. MAKELIB lindert diesen Nachteil
- indem es aus den Quelldateien der Libarys alle überflüssigen Zeilen
- und Zeichen entfernt (im allgemeinen machen die Kommentare und die
- Zeichen, die nur der Formatierung dienen, in einem gut dokumentierten
- Assembler-Quelltext ca. 70 % aus)
- Die so erstellte neue Datei ist für den Assembler gleichwertig mit
- der Original-Datei - nur für den Menschen ist sie natürlich nicht
- mehr gut lesbar. Aus diesem Grund sollte auch auf jedem Fall ein
- Backup von der Datei mit den Quelltexten gemacht werden!
- Die Länge des Quelltextes unterliegt keinerlei Einschränkungen.
- MAKELIB arbeitet mit Zeilen mit max. 255 Zeichen Länge. Der Quelltext
- muß im ASCII-Format (so wie ihn auch der Assembler haben will) vor-
- liegen.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- Dokumentation für MakeLib Seite 2
-
-
-
- In die Ausgabedatei werden folgende Teile NICHT übernommen:
-
- - Leerzeilen
-
- - Zeilen die nur aus einen Kommentar bestehen
-
- - Kommentare die durch ein Semikolon eingeleitet sind (Kommentare,
- die mit der Directive COMMENT deklariert sind werden übernommen)
-
- - überflüssige Leerzeichen und Tabulatoren
-
-
- Alle Zeilen zwischen der Zeile
-
- ; ***** MAKELIB OFF
-
- und der Zeile
-
- ; ***** MAKELIB ON
-
- (ohne diese beiden Zeilen) werden in jedem Fall ohne Änderung in die
- Ausgabedatei übernommen. (Die Schreibweise und das Format sind signi-
- fikant; die Zeile '; ***** MAKELIB ON' wird von MAKELIB implizit
- als erste Zeile jeder Eingabe-Datei genommen.)
-
-
-
- Aufruf
- ──────
-
- MAKELIB wird folgendermaßen aufgerufen:
-
- MAKELIB [{path}sourcefile-maske] {{path}{outputfile}} {switches}
- oder
- MAKELIB -?
-
- zur Ausgabe eines Hilfstextes.
-
- Die Reihenfolge der Parameter muß eingehalten werden. Die Parameter
- {path}{outputfile} und {Switches} sind optional, d.h. beide können
- angegeben oder weggelassen werden.
-
- Der Parameter sourcefile-maske kann ein Dateiname oder eine Maske mit
- Jokern (* oder ?) sein (jeweils optional incl. einem Pfad).
- Das Programm bearbeitet dann entweder nur die angegebene Datei oder
- alle unter die Maske fallenden Dateien sequentiell in der Reihenfolge
- in der sie im Directory stehen.
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- Dokumentation für MakeLib Seite 3
-
-
-
- Der Parameter outputfile kann entweder ein Pfad (abgeschlossen mit
- '\' oder ':') oder ein Dateiname (mit oder ohne Pfad) sein. Masken
- sind für diesen Parameter nicht möglich.
-
- Wird hier ein Pfad angegeben, so erstellt das Programm automatisch
- für jede Eingabedatei den Namen der Ausgabe-Datei aus dem hier ange-
- gebenen Pfad plus dem Namen der Eingabe-Datei versehen mit der vor-
- eingestellten Extension .LIB.
-
- Bei Angabe eines Dateinamens wird diese, falls als sourcefile-maske
- ein Dateiname angegeben ist, als Ausgabedatei genommen. Ist in diesem
- Fall als sourcefile-maske eine Maske angegeben, so wird der Schalter
- 'A1' (s.u.) implizit vom Programm gesetzt, d.h. die Ausgaben für alle
- unter die Maske fallenden Dateien werden sequentiell in die Datei
- geschrieben.
-
- Falls der Parameter outputfile nicht angegeben wird, so werden die
- Ausgabedatei(en) in dem Directory, in dem die Quelldatei(en) stehen
- erstellt.
-
- Der Parameter switches steht für verschiedene mögliche Schalter über
- die MAKELIB gesteuert werden kann.
-
- Die Schalter können in Groß- oder Kleinbuchstaben und in beliebiger
- Reihenfolge und Kombination angegeben werden. Die Schalter werden
- sequentiell von links nach rechts bearbeitet. Ein falscher Schalter
- führt zum Programmabbruch. Bei Angabe von mehreren gleichen Schaltern
- mit unterschiedlichen Werten oder mehreren sich ausschliessenden
- Schaltern wird nur der zuletzt angegebene berücksichtigt.
- Die Schalter können einzeln (z.B. '-A -D -X.ext -O2') oder zusammen-
- gesetzt (z.B. '-ADX.extO2') angegeben werden.
-
- Mögliche Schalter:
-
- -A{n} - n = 1 ->> Falls eine Ausgabedatei schon besteht wird sie
- verlängert (Voreinstellung für n)
- n = 0 ->> Bestehende Ausgabe-Dateien werden überschrieben
- (Voreinst.)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- Dokumentation für MakeLib Seite 4
-
-
-
- -On - n = 0 ->> Die Existenz der Ausgabedateien ist ohne
- Bedeutung. (Voreinstellung)
-
- n = 1 ->> Bearbeite nur Dateien, von denen die Ausgabedatei
- noch NICHT existiert.
-
- Dieser Schalter ist z.B. sinnvoll, falls bei einen vorherigen
- Programmlauf als erster Parameter eine Maske angegeben wurde,
- und die Ausführung des Programms nach der Bearbeitung von
- einigen aber nicht allen unter die Maske fallenden Programmen
- durch einen Fehler abgebrochen wurde. In diesem Fall kann
- nach der Beseitigung des Fehlers das Programm noch mal mit
- den gleichen Parametern und dem Schalter 'O1' aufgerufen
- werden. Es erstellt dann nur noch die fehlenden Dateien.
-
-
- n = 2 ->> Bearbeite nur Dateien, von denen die Ausgabedatei
- SCHON existiert. Dieser Schalter kann z.B. zum
- Updaten von bestehenden Dateien benutzt werden.
-
- n = 3 ->> Vor der Bearbeitung jeder Datei kann der Benutzer
- entscheiden, ob diese bearbeitet werden soll.
-
- n = 4 ->> In diesem Fall fragt das Programm den Benutzer
- nur falls die Ausgabe-Datei schon existiert; alle
- anderen Dateien werden ohne Nachfrage bearbeitet.
-
- -Z{n} - n = 1 ->> MAKELIB arbeitet mit CTRL-Z als Dateiende-Markie-
- rungen (Voreinstellung für n)
- n = 0 ->> MAKELIB arbeitet NICHT mit Dateiende-Markierungen
- (Voreinst.)
-
- -D{n} - n = 1 ->> Unterdrücken der Laufzeitanzeige
- (Voreinstellung für n)
- n = 0 ->> Laufzeitanzeige ausgeben (Voreinst.)
- In diesem Fall gibt MAKELIB für jede geschriebene
- Zeile das Zeichen '√' und für jede nur gelesene
- aber nicht geschriebene Zeile das Zeichen '.'
- aus.
-
- -U{n} - n = 1 ->> Ausgaben in Großbuchstaben konvertieren
- (Voreinstellung für n)
- n = 0 ->> Groß/Kleinschreibung nicht verändern (Voreinst.)
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- Dokumentation für MakeLib Seite 5
-
-
-
- -X.aaa
- - Mit diesem Schalter kann die voreingestellte Extension für
- die Ausgabedatei geändert werden. (.aaa = neue Extension)
- Der Punkt muß angegeben werden. Die neue Extension kann
- bis zu 3 Zeichen lang sein. Soll(en) die Ausgabedatei(en)
- keine Extension erhalten, so muß der Schalter in der Form
- 'X.' angegeben werden. Falls die neue Extension weniger
- als 4 Zeichen (incl. Punkt) lang ist, muß sie am Ende
- eines Parameters stehen.
-
- Beispiel:
-
- Die neue Extension soll '.9' und der Schalter 'D' soll auf
- 1 gesetzt werden.
- Die Parameter hierfür müssen dann lauten:
-
- '-dx.9' oder '-x.9 -d'
-
- Falsch ist
-
- '.x.9d'
-
- (In diesem Fall würde MAKELIB die neue Extension auf '.9d'
- setzen)
-
- Hinweis:
-
- Die hier angegebene Extension wird nur benutzt, falls keine
- Ausgabedatei angegeben ist oder für die Ausgabedatei nur
- ein Pfad angegeben ist.
-
- Hinweise zur Schreibweise:
-
- - Angaben in geschweiften Klammern {} sind optional
-
- - n ->> 0 oder 1 (bei 'o' auch 2, 3 oder 4)
-
- - nn ->> dezimaler Wert
-
- - (Voreinst. für n) oder (Voreinstellung für n)
-
- ->> Falls der Schalter ohne Wert angegeben ist, so wird dieser
- Wert vom Programm für den Schalter genommen.
-
- - (Voreinstellung) oder (Voreinst.)
-
- ->> Falls der Schalter nicht angegeben ist, so wird dieser Wert
- vom Programm angenommen.
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- Dokumentation für MakeLib Seite 6
-
-
-
- Beispiele:
-
- MAKELIB *.8 -x.LIB -a0 -o0 -z0 -d1 -u0
-
- -> Aufruf von MAKELIB mit den Voreinstellungen, diese Aufruf ist also
- äquvialent mit
-
- MAKELIB *.8
-
- MAKELIB *.8 acht.LIB
-
- -> Bearbeite alle Dateien mit der Extension '.8' und schreibe die
- Ausgaben in die Datei 'ACHT.LIB'. Der Schalter 'A1' wird vom Pro-
- gramm implizit gesetzt, da mehrere Quelldateien aber nur eine Aus-
- gabedatei angegeben ist.
-
- MAKELIB *.8 C:\LIB\ -do4 -X.INC
-
- -> Bearbeite alle Dateien mit der Extension '.8' und schreibe die
- Ausgaben jeweils in eine Datei mit gleichem Namen und der Exten-
- sion '.INC' im Directory 'C:\LIB\'. Unterdrücke die Laufzeit-
- Anzeige und frage den Benutzer, falls eine Ausgabe-Datei schon
- existiert.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- Dokumentation für MakeLib Seite 7
-
-
-
- Benutzung der Environment-Variable MAKELIB
- ──────────────────────────────────────────
-
- Alle Schalter können auch in der Environment-Variablen MAKELIB
- gesichert werden. Der Inhalt dieser Variable wird vor den in den
- Parametern angegebenen Schaltern bearbeitet, so daß die in der
- Environment-Variable gespeicherten Schalter durch die Schalter in
- der Aufrufzeile überschrieben werden können. Die Environment-
- Variable darf keine Leerzeichen oder Tabulatoren enthalten. In der
- Environment-Variable können keine Ein- oder Ausgabedateien angegeben
- werden.
-
- Beispiele:
-
- SET MAKELIB=-do3
-
- -> Bei allen folgenden Aufrufen von MAKELIB den Schalter 'D' auf 1
- und den Schalter 'O' auf 3 setzen, falls in den Parametern nichts
- anderes angegeben ist.
-
- SET MAKELIB=-al
-
- -> Der Schalter 'L' ohne Wert muß in der Environment-Variable immer
- als letzter angegeben werden!
-
-
-
- Kommentare in den Parametern und in der Environment-Variable
- ────────────────────────────────────────────────────────────
-
- MAKELIB erlaubt es hinter den Parametern noch einen Kommentar anzu-
- geben. Dieser muß mit dem Zeichen @ beginnen. Alle hinter diesem
- Parameter folgenden Parameter werden von MAKELIB überlesen. Sinnvoll
- ist dies z.B. bei Aufruf von MAKELIB aus Batch-Dateien.
-
- Falls die Environment-Variable MAKELIB als erstes Zeichen das Zeichen
- @ enthält, wird diese von MAKELIB nicht ausgewertet.
-
- Beispiel:
-
- MAKELIB *.inc -o3ad @ -z Dies ist ein Kommentar!
-
- ->> Es werden nur die Parameter '*.inc -o3ad' ausgewertet
-
- SET MAKELIB=@-d
-
- ->> Unterdrücken der Berücksichtigung der Environment-
- Variable MAKELIB
-
-
-
-
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- Dokumentation für MakeLib Seite 8
-
-
-
- Errorlevel
- ──────────
-
- Als Errorlevel wird 0 zurückgegeben, falls kein Fehler auftrat.
- Im Fehlerfall werden folgende Errorlevel zurückgegeben:
-
- Fehler │ Errorlevel
- ──────────────────────────────────────┼──────────────
- Falscher/Fehlender Parameter │ 1
- Falscher Schalter angegeben │ 2
- Quelldatei = Zieldatei │ 3
- Fehler beim Öffnen der Quelldatei │ 4
- Fehler beim Öffnen der Zieldatei │ 5
- Fehler beim Lesen der Quelldatei │ 6
- Fehler beim Schreiben der Zieldatei │ 7
- Fehler beim Schliessen der Quelldatei │ 8
- Fehler beim Schliessen der Zieldatei │ 9
- Keine Datei gefunden │ 10
- Hardware-Fehler │ 11
- Fehler in der Speicherverwaltung │ 12
- Unbekannter Fehler │ 13
-
-
-
- Interna
- ───────
-
- Für die Dateibearbeitung wird jeweils für die Ein- und Ausgabe-Datei
- ein Puffer von max. 65.520 Byte allokiert (falls möglich). Die mini-
- male Größe für jeden Puffer beträgt 1024 Byte. Falls kein freier
- Speicher für die Puffer vorhanden ist, wird das Programm nach der
- Ausgabe einer Fehlermeldung abgebrochen.
-
- Für jede zu bearbeitende Datei wird überprüft, ob die Namen der Ein-
- und Ausgabedatei identisch sind und, falls dies so ist, das Programm
- nach der Ausgabe einer Fehlermeldung abgebrochen.
-
- Das Programm fängt alle Fehler (auch Hardware-Fehler) ab und bricht
- in diesem Fall die Ausführung nach der Ausgabe einer Fehlermeldung
- ab. Die evtl. schon teilweise geschriebene(n) Ausgabedatei(en) wer-
- den nach dem Auftritt eines Fehlers nicht gelöscht.
-
- Alle Ausgaben des Programms (mit Ausnahme der Laufzeit-Anzeige, s.u.)
- erfolgen über das DOS und sind somit in eine Datei umlenkbar.
-
- Die Laufzeit-Anzeige wird aus Geschwindigkeitsgründen direkt über den
- Interrupt 29h ausgegeben. Falls die Ausgabe des Programms nicht auf
- die Standard-Ausgabe geht, wird die Laufzeit-Anzeige nicht angezeigt.
-
- ACHTUNG: Das Programm benutzt die undokumentierte Funktion 60h des
- Interrupt 21h und den nur teilweise dokumentierten Inter-
- rupt 29h!
-
-
-
- ────────────────────────────────────────────────────────────────────────────────
- Dokumentation für MakeLib Seite 9
-