+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+                                                                           +
+                       Zur SAA-Window-Toolbox                              +
+                                                                           +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +


Um  die  SAA-Window-Toolbox  in Assemblerprogramme einzubinden, bestehen drei
Mglichkeiten.



1. Mglichkeit: Sourcecodes zusammenfgen
=========================================

Man    assembliert    die    beiden   Sourcecode-Teile   zusammen   mit   dem
Assemblerprogramm.  Da  die  Toolbox  aber  fr den Assembler A86 geschrieben
wurde,  kann  z.B.  der  MASM  damit  nichts anfangen; dazu mte man einiges
umschreiben und auf den Komfort, den der A86 bietet, verzichten.

Beabsichtigt  man  das  Mitassemblieren  der Toolbox mit dem A86, so kann man
sich  dazu  des  Utilities MAKE86.EXE bedienen, welches dem A86 die einzelnen
Sourcecodeteile  in  der  richtigen Reihenfolge prsentiert. Dabei folgen die
beiden  Teile der Toolbox, SAA.001 und SAA.002, ganz zum Schlu. Man mu dann
nur  am  Beginn  des  letzten  Teils des Assemblerprogramms (falls dieses aus
mehreren Teilen besteht) die Zeile


    ;#LINK SAA.001


schreiben,  die  fr  den  A86  ein  Kommentar ist, dem AA86 jedoch sagt, da
danach  der  erste  Teil  der SAA-Toolbox folgt. Auch die einzelnen Teile des
Assemblerprogramms werden auf diese Weise miteinander verknpft.

Assembliert wird das Ganze dann einfach so:


    MAKE86 SOURCE1.A86


Dabei  ist  SOURCE1.A86 der erste Sourcecode-Teil des Assemblerprogramms, dem
noch weitere folgen knnen.

Verwendet man das Utility MAKE86 nicht, dann geht es auch so:


    A86 SOURCE1.A86 ... SOURCEx.A86 SAA.001 SAA.002 SAA.003


In  der  Testphase eines Programms ist dies aber jedesmal ziemlich aufwendig.
In beiden Fllen erhlt man als Resultat die COM-Datei SOURCE1.COM.



2. Mglichkeit: Einzelne Module
===============================

Man  assembliert das Assemblerprogramm erst zu einer OBJ-Datei, linkt es dann
zusammen  mit SAA.OBJ zu einer EXE-Datei und jagt es dann noch durch EXE2BIN,
um ein COM-File zu erhalten:


    A86 +o SOURCE1.A86 ... SOURCEx.A86
    LINK SOURCE1 SAA;
    EXE2BIN SOURCE1.EXE SOURCE1.COM    ; Entfllt bei TLINK /t statt LINK


Diese  Methode  hat  Vor-  und  Nachteile:  Die  Nachteile  sind  die  vielen
Durchlufe,  bis  man  das COM-File erhlt, was besonders bei der Entwicklung
eines Programms strt. Am besten schreibt man sich dazu ein Batch-File.

Die Vorteile berwiegen jedoch: Die Verwendung der Toolbox ist unabhngig vom
verwendeten  Assembler, und man braucht im Falle einer Verffentlichung nicht
den Sourcecode beizugeben.

Im  Sourcecode  des  Assemblerprogramms  mu  in diesem Falle darauf geachtet
werden,  da  man  ein  Codesegment mit dem Namen 'CODE' definiert. Die Daten
knnen auch in diesem Segment liegen:


                   EXTRN xyz:type, ...

                   ASSUME cs:code, ds:code, es:code, ss:code

code               SEGMENT
                   ORG 100h
main:               :                       ; Programm und
                    :                       ; Daten in einem
                    :                       ; Segment.
code               ENDS
                   END main                 ; (Nur fr MASM)


Beim  A86  ist  es  nicht erforderlich, die Prozeduren und Variablen des SAA-
Moduls  als  'EXTRN'  zu  deklarieren.  Um  jedoch Vorwrtsreferenz-Fehler zu
vermeiden,  sollte  der  Typ aller Speichervariablen (WORD, BYTE, DWORD, ...)
vorher  mittels  EXTRN  dem  Assembler  mitgeteilt werden. Bei Prozeduren und
sonstigen  Labels des Typs NEAR ist dies nicht erforderlich. Jedenfalls nicht
bei A86 ...



3. Mglichkeit: Libraries
=========================

Man  kann die SAA-Toolbox auch (zusammen mit anderen Routinen) in ein Library
aufnehmen. Dazu bedient man sich z.B. des Library-Tools LIB.EXE von Microsoft
oder TLIB.EXE von Borland:


    LIB MYLIB +SAA;


Auf  diese  Weise  wird  ein Library namens MYLIB.LIB erstellt, das das Modul
SAA.OBJ  enthlt. Das Library kann beliebig erweitert werden, was den Vorteil
hat,  da viele Module in einer Modulbibliothek zusammengefat werden knnen.
Der  Linker  sucht  sich  dann  spter  aus dem Library nur diejenigen Module
heraus, die in dem Programm auch wirklich bentigt werden.

Um  ein zu einem OBJ-File assembliertes ASM-File SOURCE1.OBJ zusammen mit dem
Library MYLIB.LIB zu einem EXE-File zu linken, geht man wie folgt vor:


    LINK SOURCE1,,,MYLIB;


und um ein COM-File zu erhalten:


    EXE2BIN SOURCE1.EXE SOURCE1.COM    ; Entfllt bei TLINK /t statt LINK
