home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
assemblr
/
library
/
lib4a86
/
util
/
makelib.doc
< prev
next >
Wrap
Text File
|
1992-02-23
|
17KB
|
601 lines
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