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

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.                          MAKELIB.COM V1.20
  10.    
  11.  
  12.             Komprimieren von Assembler-Quelltexten durch Entfernen
  13.                 aller überflüssigen Zeilen und Zeichen
  14.    
  15.  
  16.  
  17.                           (c) Copyright by
  18.                            Bernd Schemmer
  19.                              Ondrup 117
  20.                          4710 Lüdinghausen 2
  21.    
  22.                     Letzter Update:  23.02.1992
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59. ────────────────────────────────────────────────────────────────────────────────
  60. Dokumentation für MakeLib                                           Seite    1
  61.  
  62.  
  63.  
  64.  
  65.   Inhalt                                                 Seite
  66.   ────────────────────────────────────────────────────────────
  67.  
  68.  
  69.   System-Vorraussetzungen ................................   2
  70.   Vertrieb von MakeLib ...................................   2
  71.   Beschreibung ...........................................   2
  72.   Aufruf .................................................   3
  73.   Benutzung der Environment-Variable MAKELIB .............   8
  74.   Kommentare in den Parametern und in der 
  75.   Environment-Variable ...................................   8
  76.   Errorlevel .............................................   9
  77.   Interna ................................................   9
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.   ────────────────────────────────────────────────────────────────────────────────
  120.   Inhalts-Verzeichnis                                                     I    1
  121.  
  122.  
  123.  
  124.   System-Vorraussetzungen
  125.   ───────────────────────
  126.  
  127.   Die Systemvorrausetzung für die Nutzung von MAKELIB.COM sind minimal:
  128.   Nur ein IBM-PC/AT/Kompatibler  mit dem Betriebssystem MS-DOS 3+  wird
  129.   benötigt.
  130.  
  131.   MAKELIB wurde zur Verwendung für Quelltexte für den A86  geschrieben,
  132.   sollte aber  auch mit Quelltexten für andere Assembler problemlos zu-
  133.   rechtkommen.
  134.  
  135.  
  136.  
  137.   Vertrieb von MakeLib
  138.   ────────────────────
  139.  
  140.   MAKELIB.COM  ist  Teil  der Sammlung  Lib4A86  und wird als Shareware
  141.   vertrieben. Für  die  Bedingungen zur  Benutzung und  Weitergabe  von
  142.   MAKELIB.COM deshalb bitte in der Dokumentation zu Lib4A86 nachsehen.
  143.  
  144.   
  145.  
  146.   Beschreibung
  147.   ────────────
  148.  
  149.   Der  Assembler A86 arbeitet  mit Libarys  aus Quelltexten  (da er nur
  150.   assembliert  aber  nicht  linkt).  Dies hat neben  den Vorteilen auch
  151.   Nachteile. Ein wesentlicher Nachteil dieser Methode ist der Speicher-
  152.   bedarf der Quelldateien der Libarys. MAKELIB lindert  diesen Nachteil
  153.   indem es aus den Quelldateien der  Libarys alle  überflüssigen Zeilen
  154.   und Zeichen entfernt (im  allgemeinen  machen  die Kommentare und die
  155.   Zeichen, die nur der Formatierung dienen, in einem gut dokumentierten
  156.   Assembler-Quelltext ca. 70 % aus)
  157.   Die so erstellte neue  Datei ist  für den Assembler  gleichwertig mit
  158.   der Original-Datei -  nur für  den Menschen  ist sie  natürlich nicht
  159.   mehr  gut lesbar.  Aus  diesem Grund  sollte auch auf  jedem Fall ein
  160.   Backup von der Datei mit den Quelltexten gemacht werden!
  161.   Die Länge des Quelltextes unterliegt keinerlei Einschränkungen.
  162.   MAKELIB arbeitet mit Zeilen mit max. 255 Zeichen Länge. Der Quelltext
  163.   muß  im  ASCII-Format (so wie ihn auch der Assembler haben will) vor-
  164.   liegen.
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179. ────────────────────────────────────────────────────────────────────────────────
  180. Dokumentation für MakeLib                                           Seite    2
  181.  
  182.  
  183.  
  184.   In die Ausgabedatei werden folgende Teile NICHT übernommen:
  185.  
  186.   - Leerzeilen
  187.  
  188.   - Zeilen die nur aus einen Kommentar bestehen
  189.  
  190.   - Kommentare  die durch  ein Semikolon eingeleitet sind  (Kommentare,
  191.     die mit der Directive COMMENT deklariert  sind werden übernommen)
  192.  
  193.   - überflüssige Leerzeichen und Tabulatoren
  194.  
  195.  
  196.   Alle Zeilen zwischen der Zeile
  197.  
  198.     ; ***** MAKELIB OFF
  199.  
  200.   und der Zeile
  201.  
  202.     ; ***** MAKELIB ON
  203.  
  204.   (ohne diese beiden Zeilen)  werden in jedem Fall ohne Änderung in die
  205.   Ausgabedatei übernommen. (Die Schreibweise und das Format sind signi-
  206.   fikant;  die Zeile '; ***** MAKELIB ON'  wird  von  MAKELIB  implizit 
  207.   als erste Zeile jeder Eingabe-Datei genommen.)
  208.  
  209.  
  210.  
  211.   Aufruf
  212.   ──────
  213.  
  214.   MAKELIB wird folgendermaßen aufgerufen:
  215.  
  216.        MAKELIB [{path}sourcefile-maske] {{path}{outputfile}} {switches}
  217.   oder
  218.        MAKELIB -?
  219.  
  220.   zur Ausgabe eines Hilfstextes.
  221.  
  222.   Die Reihenfolge der Parameter muß  eingehalten werden.  Die Parameter
  223.   {path}{outputfile} und {Switches} sind  optional, d.h.  beide  können
  224.   angegeben oder weggelassen werden.
  225.  
  226.   Der Parameter sourcefile-maske kann ein Dateiname oder eine Maske mit
  227.   Jokern (* oder ?) sein (jeweils optional incl. einem Pfad).
  228.   Das Programm bearbeitet dann entweder nur die  angegebene  Datei oder
  229.   alle unter die Maske fallenden Dateien sequentiell in der Reihenfolge
  230.   in der sie im Directory stehen.
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239. ────────────────────────────────────────────────────────────────────────────────
  240. Dokumentation für MakeLib                                           Seite    3
  241.  
  242.  
  243.  
  244.   Der  Parameter  outputfile kann  entweder ein Pfad (abgeschlossen mit
  245.   '\' oder ':') oder ein Dateiname  (mit oder ohne  Pfad) sein.  Masken
  246.   sind für diesen Parameter nicht möglich.
  247.  
  248.   Wird  hier  ein Pfad angegeben, so erstellt das Programm  automatisch
  249.   für  jede Eingabedatei den Namen der Ausgabe-Datei aus dem hier ange-
  250.   gebenen Pfad plus dem Namen  der Eingabe-Datei versehen mit  der vor-
  251.   eingestellten Extension .LIB.
  252.  
  253.   Bei  Angabe eines  Dateinamens wird diese, falls als sourcefile-maske
  254.   ein Dateiname angegeben ist, als Ausgabedatei genommen. Ist in diesem
  255.   Fall als sourcefile-maske  eine Maske angegeben, so wird der Schalter
  256.   'A1' (s.u.) implizit vom Programm gesetzt, d.h. die Ausgaben für alle
  257.   unter die  Maske  fallenden  Dateien werden sequentiell in die  Datei
  258.   geschrieben.
  259.  
  260.   Falls der  Parameter  outputfile  nicht angegeben wird, so werden die
  261.   Ausgabedatei(en)  in dem  Directory, in dem die Quelldatei(en) stehen
  262.   erstellt.
  263.  
  264.   Der Parameter switches steht für verschiedene mögliche Schalter  über
  265.   die MAKELIB gesteuert werden kann.
  266.  
  267.   Die Schalter können in Groß-  oder  Kleinbuchstaben und in beliebiger
  268.   Reihenfolge  und  Kombination  angegeben  werden. Die Schalter werden
  269.   sequentiell  von links  nach rechts bearbeitet. Ein falscher Schalter
  270.   führt zum Programmabbruch. Bei Angabe von mehreren gleichen Schaltern
  271.   mit  unterschiedlichen  Werten oder  mehreren  sich  ausschliessenden
  272.   Schaltern wird nur der zuletzt angegebene berücksichtigt.
  273.   Die Schalter können einzeln (z.B. '-A -D -X.ext -O2')  oder zusammen-
  274.   gesetzt (z.B. '-ADX.extO2') angegeben werden.
  275.  
  276.   Mögliche Schalter:
  277.  
  278.     -A{n} - n = 1 ->> Falls  eine  Ausgabedatei schon besteht  wird sie
  279.                       verlängert (Voreinstellung für n)
  280.             n = 0 ->> Bestehende Ausgabe-Dateien werden überschrieben
  281.                       (Voreinst.)
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299. ────────────────────────────────────────────────────────────────────────────────
  300. Dokumentation für MakeLib                                           Seite    4
  301.  
  302.  
  303.  
  304.     -On   - n = 0 ->> Die Existenz der Ausgabedateien ist ohne
  305.                       Bedeutung. (Voreinstellung)
  306.  
  307.             n = 1 ->> Bearbeite nur Dateien, von denen die Ausgabedatei
  308.                       noch NICHT existiert.
  309.  
  310.           Dieser Schalter ist z.B. sinnvoll, falls bei einen vorherigen
  311.           Programmlauf als erster Parameter eine Maske angegeben wurde,
  312.           und  die Ausführung  des  Programms nach  der Bearbeitung von
  313.           einigen aber nicht allen unter die Maske fallenden Programmen
  314.           durch  einen Fehler  abgebrochen wurde.  In diesem  Fall kann
  315.           nach der Beseitigung des  Fehlers das  Programm noch  mal mit
  316.           den  gleichen  Parametern  und  dem Schalter 'O1'  aufgerufen
  317.           werden. Es erstellt dann nur noch die fehlenden Dateien.
  318.  
  319.  
  320.             n = 2 ->> Bearbeite nur Dateien, von denen die Ausgabedatei
  321.                       SCHON existiert.  Dieser  Schalter  kann z.B. zum
  322.                       Updaten von bestehenden Dateien benutzt werden.
  323.  
  324.             n = 3 ->> Vor der Bearbeitung jeder Datei kann der Benutzer
  325.                       entscheiden, ob diese bearbeitet werden soll.
  326.  
  327.             n = 4 ->> In  diesem  Fall  fragt das Programm den Benutzer
  328.                       nur falls die Ausgabe-Datei schon existiert; alle
  329.                       anderen Dateien werden ohne Nachfrage bearbeitet.
  330.  
  331.     -Z{n} - n = 1 ->> MAKELIB arbeitet mit CTRL-Z als Dateiende-Markie-
  332.                       rungen (Voreinstellung für n)
  333.             n = 0 ->> MAKELIB arbeitet NICHT mit Dateiende-Markierungen
  334.                       (Voreinst.)
  335.  
  336.     -D{n} - n = 1 ->> Unterdrücken der Laufzeitanzeige
  337.                       (Voreinstellung für n)
  338.             n = 0 ->> Laufzeitanzeige ausgeben  (Voreinst.)
  339.                       In diesem Fall gibt MAKELIB für jede geschriebene
  340.                       Zeile das Zeichen '√' und für jede  nur  gelesene
  341.                       aber nicht  geschriebene  Zeile  das  Zeichen '.'
  342.                       aus.
  343.  
  344.     -U{n} - n = 1 ->> Ausgaben in Großbuchstaben konvertieren
  345.                       (Voreinstellung für n)
  346.             n = 0 ->> Groß/Kleinschreibung nicht verändern (Voreinst.)
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359. ────────────────────────────────────────────────────────────────────────────────
  360. Dokumentation für MakeLib                                           Seite    5
  361.  
  362.  
  363.  
  364.     -X.aaa
  365.           - Mit diesem Schalter kann die  voreingestellte Extension für
  366.             die Ausgabedatei  geändert werden.  (.aaa = neue Extension)
  367.             Der  Punkt  muß  angegeben  werden. Die neue Extension kann
  368.             bis zu 3 Zeichen lang sein.  Soll(en)  die Ausgabedatei(en)
  369.             keine Extension  erhalten, so muß  der Schalter in der Form
  370.             'X.'  angegeben werden.  Falls  die  neue Extension weniger
  371.             als 4 Zeichen  (incl. Punkt)  lang ist,  muß  sie  am  Ende
  372.             eines Parameters stehen.
  373.  
  374.             Beispiel:
  375.  
  376.             Die neue Extension soll '.9' und der Schalter  'D' soll auf
  377.             1 gesetzt werden.                              
  378.             Die Parameter hierfür müssen dann lauten:
  379.  
  380.             '-dx.9' oder  '-x.9 -d'
  381.  
  382.             Falsch ist
  383.  
  384.             '.x.9d'
  385.  
  386.             (In diesem Fall würde MAKELIB die neue Extension  auf '.9d'
  387.              setzen)
  388.  
  389.             Hinweis:
  390.  
  391.             Die hier angegebene Extension wird nur benutzt, falls keine
  392.             Ausgabedatei angegeben  ist  oder  für die Ausgabedatei nur 
  393.             ein Pfad angegeben ist.
  394.  
  395.   Hinweise zur Schreibweise:
  396.  
  397.    - Angaben in geschweiften Klammern {} sind optional
  398.  
  399.    - n   ->> 0 oder 1 (bei 'o' auch 2, 3 oder 4)
  400.  
  401.    - nn  ->> dezimaler Wert
  402.  
  403.    - (Voreinst. für n) oder (Voreinstellung für n)
  404.  
  405.      ->> Falls der  Schalter  ohne Wert  angegeben ist,  so wird dieser
  406.          Wert vom Programm für den Schalter genommen.
  407.  
  408.    - (Voreinstellung) oder (Voreinst.)
  409.  
  410.      ->> Falls der Schalter  nicht  angegeben ist,  so wird dieser Wert
  411.          vom Programm angenommen.
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419. ────────────────────────────────────────────────────────────────────────────────
  420. Dokumentation für MakeLib                                           Seite    6
  421.  
  422.  
  423.  
  424.   Beispiele:
  425.  
  426.   MAKELIB *.8 -x.LIB -a0 -o0 -z0 -d1 -u0
  427.  
  428.   -> Aufruf von MAKELIB mit den Voreinstellungen, diese Aufruf ist also
  429.      äquvialent mit
  430.  
  431.      MAKELIB *.8
  432.  
  433.   MAKELIB *.8 acht.LIB
  434.  
  435.   -> Bearbeite  alle Dateien  mit der  Extension  '.8' und schreibe die
  436.      Ausgaben in die Datei 'ACHT.LIB'.  Der Schalter 'A1' wird vom Pro-
  437.      gramm implizit gesetzt, da mehrere Quelldateien aber nur eine Aus-
  438.      gabedatei angegeben ist.
  439.  
  440.   MAKELIB *.8 C:\LIB\ -do4 -X.INC
  441.  
  442.   -> Bearbeite alle  Dateien mit der Extension  '.8'  und  schreibe die
  443.      Ausgaben jeweils in eine Datei mit gleichem  Namen und  der Exten-
  444.      sion '.INC' im  Directory  'C:\LIB\'.  Unterdrücke  die  Laufzeit-
  445.      Anzeige und  frage  den Benutzer,  falls eine  Ausgabe-Datei schon
  446.      existiert.
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479. ────────────────────────────────────────────────────────────────────────────────
  480. Dokumentation für MakeLib                                           Seite    7
  481.  
  482.  
  483.  
  484.   Benutzung der Environment-Variable MAKELIB
  485.   ──────────────────────────────────────────
  486.  
  487.   Alle  Schalter  können  auch  in  der   Environment-Variablen MAKELIB
  488.   gesichert werden.  Der  Inhalt  dieser Variable  wird vor den  in den
  489.   Parametern  angegebenen  Schaltern  bearbeitet,  so  daß  die  in der
  490.   Environment-Variable   gespeicherten  Schalter  durch die Schalter in
  491.   der   Aufrufzeile   überschrieben   werden  können.  Die Environment-
  492.   Variable darf  keine  Leerzeichen oder Tabulatoren enthalten. In  der
  493.   Environment-Variable können keine Ein- oder Ausgabedateien  angegeben 
  494.   werden.
  495.  
  496.   Beispiele:
  497.  
  498.   SET MAKELIB=-do3
  499.  
  500.   -> Bei allen folgenden  Aufrufen  von MAKELIB den Schalter  'D' auf 1
  501.      und den Schalter  'O' auf 3 setzen, falls in den Parametern nichts
  502.      anderes angegeben ist.
  503.  
  504.   SET MAKELIB=-al
  505.  
  506.   -> Der Schalter  'L' ohne Wert muß  in der Environment-Variable immer
  507.      als letzter angegeben werden!
  508.  
  509.  
  510.  
  511.   Kommentare in den Parametern und in der Environment-Variable
  512.   ────────────────────────────────────────────────────────────
  513.  
  514.   MAKELIB erlaubt es  hinter den Parametern noch einen  Kommentar anzu-
  515.   geben. Dieser  muß  mit  dem  Zeichen @  beginnen. Alle hinter diesem
  516.   Parameter  folgenden Parameter werden von MAKELIB überlesen. Sinnvoll
  517.   ist dies z.B. bei Aufruf von MAKELIB aus Batch-Dateien.
  518.  
  519.   Falls die Environment-Variable MAKELIB als erstes Zeichen das Zeichen
  520.   @ enthält, wird diese von MAKELIB nicht ausgewertet.
  521.  
  522.   Beispiel:
  523.  
  524.   MAKELIB *.inc -o3ad @ -z Dies ist ein Kommentar!
  525.  
  526.   ->> Es werden nur die Parameter '*.inc -o3ad' ausgewertet
  527.  
  528.   SET MAKELIB=@-d
  529.  
  530.   ->> Unterdrücken der Berücksichtigung der Environment-
  531.       Variable MAKELIB
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539. ────────────────────────────────────────────────────────────────────────────────
  540. Dokumentation für MakeLib                                           Seite    8
  541.  
  542.  
  543.  
  544.   Errorlevel
  545.   ──────────
  546.  
  547.   Als Errorlevel wird 0 zurückgegeben, falls  kein Fehler auftrat.
  548.   Im Fehlerfall werden folgende Errorlevel zurückgegeben:
  549.  
  550.   Fehler                                │   Errorlevel
  551.   ──────────────────────────────────────┼──────────────
  552.   Falscher/Fehlender Parameter          │       1
  553.   Falscher Schalter angegeben           │       2
  554.   Quelldatei = Zieldatei                │       3
  555.   Fehler beim Öffnen der Quelldatei     │       4
  556.   Fehler beim Öffnen der Zieldatei      │       5
  557.   Fehler beim Lesen der Quelldatei      │       6
  558.   Fehler beim Schreiben der Zieldatei   │       7
  559.   Fehler beim Schliessen der Quelldatei │       8
  560.   Fehler beim Schliessen der Zieldatei  │       9
  561.   Keine Datei gefunden                  │      10
  562.   Hardware-Fehler                       │      11
  563.   Fehler in der Speicherverwaltung      │      12
  564.   Unbekannter Fehler                    │      13
  565.  
  566.  
  567.  
  568.   Interna
  569.   ───────
  570.  
  571.   Für  die Dateibearbeitung wird jeweils für die Ein- und Ausgabe-Datei
  572.   ein Puffer  von max. 65.520 Byte allokiert (falls möglich). Die mini-
  573.   male  Größe  für jeden Puffer beträgt 1024 Byte.  Falls  kein  freier
  574.   Speicher  für  die Puffer  vorhanden ist,  wird das Programm nach der
  575.   Ausgabe einer Fehlermeldung abgebrochen.
  576.  
  577.   Für jede zu  bearbeitende Datei wird überprüft, ob die Namen der Ein-
  578.   und Ausgabedatei  identisch sind und, falls dies so ist, das Programm
  579.   nach der Ausgabe einer Fehlermeldung abgebrochen.
  580.  
  581.   Das  Programm fängt alle Fehler (auch Hardware-Fehler)  ab und bricht
  582.   in diesem Fall die  Ausführung nach der  Ausgabe einer  Fehlermeldung
  583.   ab. Die evtl. schon teilweise  geschriebene(n)  Ausgabedatei(en) wer-
  584.   den nach dem Auftritt eines Fehlers nicht gelöscht.
  585.  
  586.   Alle Ausgaben des Programms (mit Ausnahme der Laufzeit-Anzeige, s.u.)
  587.   erfolgen über das DOS und sind somit in eine Datei umlenkbar.
  588.  
  589.   Die Laufzeit-Anzeige wird aus Geschwindigkeitsgründen direkt über den
  590.   Interrupt 29h ausgegeben. Falls die Ausgabe  des Programms nicht  auf
  591.   die Standard-Ausgabe geht, wird die Laufzeit-Anzeige nicht angezeigt.
  592.  
  593.   ACHTUNG: Das  Programm benutzt  die undokumentierte  Funktion 60h des
  594.            Interrupt  21h und den  nur teilweise  dokumentierten Inter-
  595.            rupt 29h!
  596.  
  597.  
  598.  
  599. ────────────────────────────────────────────────────────────────────────────────
  600. Dokumentation für MakeLib                                           Seite    9
  601.