Die Diskettenfunktionen des Editors

Es ist Selbstverständlich für einen Assembler, daß man das Listing, das man mühevoll eingegeben hat, auch auf Diskette abspeichern und später wieder einladen kann. Der BIBO-ASSEMBLER bietet hierzu zwei verschiedene Möglichkeiten:

Das Listing kann als ASCII-Datei, also im Klartext mit allen Leerschritten und den 5-stelligen Zeilennummern oder in einem komprimierten, BIBO-ASSEMBLER eigenem Format abgespeichert und eingeladen werden.

Das BIBO-ASSEMBLER eigene Format hat den großen Vorteil, daß die Datei wesentlich kürzer als eine ASCII-Datei des gleichen Listings ist. Eine negative Eigenschaft der ASCII-Datei ist auch, daß der Ladevorgang sehr langsam ist, da jede Zeile beim einlesen einsortiert werden muß. Man sollte also um Zeit und Diskettenplatz zu sparen Listings immer im BIBO-ASSEMBLER Format abspeichern.

Das im Speicher befinD1iche Listing wird im BIBO-ASSEMBLER Format abgespeichert mit:

Synt ax: SAV "<device: name.ext>" (von save, abspeichern)
Beispiel: SAV "D1:TEST.ASM"

    Das Anführungszeichen hinter dem Filenamen kann weggelassen werden. Wenn Diskettenlaufwerk 1 angesprochen werdet., soll, kann man natürlich die 'l' in 'D1:' weggelassen..

    Wenn Sie sich im 2. Editor befinden, wird natürlich auch nur das Listing in diesem 2. Editor abgespeichert. Falls sie einen Rechner mit einer RAMDISK besitzen und das verwendete DOS diese RAMDISKverwalten kann. können Sie Ihr Listing natürlich auch unter der entsprechenden Laufwerksnummer in der RAMDISK abspeichern. Vergessen Sie aber nicht, vor ausschalten des Computers die Daten aus der RAMDISK auf eine Diskette umzukopieren.

    WICHTIG: Bei Eingabe eines längeren Assemblerlistings empfiehlt sich in regelmäßigen Zeitabständen die eingegebenen Daten auf Diskette (nicht RAMDISK) abzuspeichern. Sollte einmal der Strom ausfallen, sind alle Dateien, die sich im Editor oder in der RAMDISK befanden, verloren.

    Ein mit der SAV-Funktion abgespeichertes Listing kann wieder eingeladen werden mit:

    Syntax : LOA "<device:name.ext>" (von load, laden)
    Beispiel: LOA "D1:TEST.ASM"

      Auch hier kann das Anführungszeichen hinter dem Filenamen und die Laufwerksnummer, wenn es sich um Laufwerk 1 handelt, weggelassen werden.

      Wird ein neues Programmlisting mit LOA eingeladen wird automatisch ein NEW ausgeführt, das heißt alle Daten, die sich im Editor (oder Editor 2) befanden, sind gelöscht worden. Wird eine Datei in den 2. Editor eingeladen, bleibt das Listing im Haupteditor natürlich erhalten.

      Die zweite Speicher- bzw. Lademöglichkeit von Programmen ist das Listen und Entern von ASCII-Dateien. Mit dieser Art des Speicherformats können auch Listings, die mit anderen Assemblernerstellt und auf die Diskette als ASCII-Datei gelistet wurden inden Editor des BIBO-ASSEMBLERS geladen werden. Natürlich mußdas Assemblerlisting schon mit Zeilennummern versehen sein. Die mit Enter eingeladenen ASCII-Dateien müssen natürlich noch auf die Syntax des BIBO-ASSEMBLERS angepaßt werden. Hierzu können Sie dieschon erklärte Funktion REPlace benutzen. Mit

      Syntax: ENT "<device:n ame.ext>" (von enter)
      Beispiel: ENT "DI:TEST.TXT"

        kann eine ASCII-Datei in den Editor des BIBO-ASSEMBLERS geladen werden. Da mit dieser Ladefunktion jede Zeile direkt beim ENTer auf das BIBO-ASSEMBLER Format gebracht und einsortiert wird, kann das Einladen eines längeren Listings schon einige Minuten dauern. Ein blinkender Cursor zeigt mit jedem aufblinken an, daß eine Zeile übernommen und in das Listing eingefügt wurde. Durch die interne Speicherorganisation des BIBO-ASSEMBLERS (diese wird später näher erklärt) blinkt der Cursor mit länger werdendem Listing immer langsamer. Sobald wieder Edit> oder Ed2> auf dem Bildschirm erscheint, ist der Ladevorgang beendet.

        Der umgekehrte Vorgang, also das Abspeichern eines Listings in Klartext (ASCII-Format) geschieht mit dem Befehl:

        Syntax: LST "<d evice:name.ext>" (von listen)
        Beispiel: LST "D1:TEST.LST"

          Mit diesem Befehl kann das Listing auch auf den Drucker ausgegeben werden. Hierzu mehr im Abschnitt "Druckeransteuerung".

          Mit einer weiteren Funktion können Sie sich das Inhaltsverzeichnis (Directory) von der Diskette (oder RAMDISK) ausgeben lassen:

          Syntax: DIR  (von directorv)

            Hiermit erscheint das Inhaltsverzeichnis von der Diskette, die sich in Laufwerk 1 befindet. Soll das Inhaltsverzeichnis eines anderen Laufwerks oder von der RAMDISK aufgerufen werden oder ein bestimmter Filename in einem Directory gesucht werden, geschieht dies durch zusätzliche Eingabe der Laufwerksnummer und des Filenamens.

            Beispiele:

            DIR " D8

              gibt das vollständige Directory von Laufwerk 8 aus. D8 ist zum Beispiel die RAMDISK in DOS 2.5.

              DIR "D: *.ASM"

                zeigt alle Programmnamen auf der Diskette im Laufwerk 1, die mit dem Extender ASM enden.

                Zusätzlich zum abspeichern und laden von Programmlistings (Sourcedaten) ist es auch möglich Binärfiles (Objectdaten) abzuspeichern oder ins RAM einzuladen.

                Diese Binärfiles haben einen Fileheader (Vorspann), wie er auch in COM oder EXE - Files zu finden ist.

                Es folgt eine Kurzbeschreibung Über den Aufbau eines Binärfiles:

                SFF

                SFF

                Anf.-
                Adr LO

                Anf.-
                Adr HI

                End-
                Adr LO

                End-
                Adr HI


                Daten ...

                Byte 1

                Byte 2

                Byte 3

                Byte 4

                Byte 5

                Byte 6

                Byte 7 ...


                Die ersten beiden Bytes desFiles müssen immer $FF SFF sein. Dieses ist die Kennung, daß es sich um ein Binärfile handelt, und daß die nächsten vier Bytes dieAnfangs- und Endadresse des Files bestimmen. Das dritte und vierte Byte geben die Startadresse an, in die das 7.Byte des Files geladen werden soll. Das fünfte und sechste Byte bestimmen die Endadresse bei der das letzte Byte abgelegt werden soll. Das siebte Byte ist also das erste Datenbyte des Binärfiles. Die Anzahl der Datenbytes errechnet sich aus Endadresse-Anfangsadresse + 1. Die eins muß auf jeden Fall hinzuaddiert werden, denn sind Anfangs- und Endadresse gleich, ist die Differenz dieser beider. Adressen Null. Da aber ein Byte erforderlich ist um diese Adresse mit Daten zu versorgen muß zu dieser Differenz ein Byte addiert werden. Diese Addition wird allerdings DOS - intern vorgenommen, der Benutzer muß nur wissen, wie man Binärfiles abspeichert oder lädt. Mit jedem DOS haben Sie die Möglichkeit Binärfiles zu erzeugen oder einzuladen. Mit DOS 2 oder 2.5 werden Binärfiles mit der Option K unter Angabe der gewünschten Anfangs- und Endadresse abgespeichert und mit der Option L wieder eingeladen,

                Der BIBO-ASSEMBLER bietet bei Eingabe der Anfangs- und Endadressen beim Abspeichern von Binärfiles wesentlich mehr Möglichkeiten als das DOS. So können Dezimale oder Hexadezimale Adressen wie auch Labels eingegeben werden. Die entsprechende, zum Label gehörende Adresse befindet sich nach dem assemblieren eines Programmes in der Symbol - Table, die später näher erklärt wird.

                Das Abspeichern eines Binärfiles geschieht durch:

                Synta x: BSA "<device:name.ext>",Anfang,Ende (von binary save)
                Beispiel: BSA "D:TEST.COM",$4000,$4FFF
                BSA "D:TEST.COM",16384,END

                  Hierbei müssen auf jeden Fall die Anführungszeichen nach dem Filenamen eingegeben werden. Die Anfangs- und Endadresse muß durch ein Komma getrennt werden, wird eine Adressangabe weggelassen, erscheint die Fehlermeldung 'Syntax Error'. Die Endadresse muß immer höher als die Anfangsadresse sein. Als Adressen können Dezimale Werte (16384,1536), Hexadezimale Werte ($4000,$600) oder Labels (START,END) eingesetzt werden. Labels können natürlich nur verwendet werden. wenn diese schon durch einen Assembliervorgang in die Symbol-Table eingetragen wurden. Es ist auch möglich die Adresse rechnerisch zu ermitteln. Hierbei können Labels oder Adressen miteinander addiert oder subtrahiert werden.

                  Beispiele:

                  START +$100
                  END-ANF+1
                  16384+START

                    Diese Möglichkeiten der Adressangabe werden noch bei anderen Befehlen benötigt, die wir später erklären werden. Dort werden wir die Möglichkeiten der Adressangabe noch näher erläutern und diese nur mit 'Adresse' kennzeichnen.

                    Ein mit BSA abgespeichertes Binärfile hat die Eigenschaft, die Speicherstelle selbst zu bestimmen, ab der es in der den Speicher eingeladen werden soll. Wenn Sie dieses File mit dem DOS einladen wollen, wird es auf jeden Fall immer in diese im Fileheader stehende Adresse eingeladen.

                    Diese Möglichkeit haben Sie natürlich auch vom BIBO-ASSEMBLER aus,

                    Syntax: BL O "<device:name.ext>"(von binaryload)
                    Beispiel: BLO "D:TEST.COM"

                      Hiermit wird ein Binärfile in den originalen Speicherbereich eingeladen, aus dem es abgespeichert wurde. Nun kann es vorkommen, daß dieses zu ladende File ausgerechnet in den Bereich geladen werden soll, in dem das DOS, der Asserrbler oder der Bildschirmspeicher liegt. Das Binärfile kann deshalb auch an einen anderen Speicherbereich geladen werden. Hierzu wird nach dem Filenamen einfach die Adresse angegeben, in die das Binärfile geladen werden soll.

                      Beispiel:

                      BLO "D:TEST . COM",$5000

                        Sollte das Binärfile aus mehreren Datenblöcken bestehen, wie es beim assemblieren erzeugt werden kann, wird nur der erste Datenblock in die angegebenen Speicherstelle eingelesen und danach der Ladevorgang abgebrochen.