Der Editor

Bei dem Editor des BIBO-ASSEMBLERS handelt sich es um einen sogenannten Zeileneditor. Den Zeileneditor kennen Sie sicher schon vom Basic her.

Hier muß vor jeder Zeile eine Zeilennummer stehen, die Werte innerhalb vorgeschriebener Grenzen annehmen kann. Soll eine Zeile in das Listing eingefügt werden, wird einfach eine Zeilennummer zwischen der vorherigen und der nachfolgenden Zeile eingegeben und schon befindet sich die Zeile an der gewünschten Stelle. Dies geht natürlich nur, wenn vorher die Abstände der Zeilennummern zueinander groß genug gewählt wurde. In der Regel wird ein Abstand der Zeilennummern zueinander von 10 benutzt, damit nachher noch bequem 9 Zeilen eingefügt werden können.

Die gesamte Bedienung des BIBO-ASSEMBLER Editors ähnelt also sehr dem Editor des Atari-Basic. Der BIBO-ASSEMBLER besitzt allerdings einige sehr nützliche Funktionen, die Ihnen der Editor des Standart Atari-Basic nicht bietet. Dies sind zum Beispiel Funktionen wie das automatische numerieren und neunumerieren von Zeilen, suchen und austauschen von Zeichen, kopieren, verschieben und löschen von einzelnen Zeilen oder ganzen Zeilenblöcken .

Die innere Struktur des BIBO-ASSEMBLERS sieht keine Eingabe von inversen Zeichen vor. Eine Ausnahme besteht allerdings bei der Eingabe von Texten die in Anführungszeichen (z.B. "TEXT") eingeschlossen sind. Hier sind auch Inverszeichen zugelassen. Auch den CHR$(0), das ist das "HERZCHEN" darf nicht eingegeben werden. Falls Sie dieses ASCII Zeichen dennoch benötigen sollten, benutzen Sie bitte die folgende Syntax:

.HX 00; Entspric ht dem ASCII Zeichen für den Wert Null

Die Speicherverwaltung des Editors im BIBO-ASSEMBLER sieht für die Zeilennummer jeder Zeile zwei Bytes im Speicher vor. Damit sind theoretisch Zeilennummern von 0 bis 65535 (2^16) möglich. Aus programmtechnischen Gründen ist die Obergrenze allerdings auf 64000 festgelegt, was aber keinen großen Verlust bedeutet. Ein Assemblerlisting mit 64000 Zeilen ist schon utopisch und nur bei Programmen auf Großrechneranlagen möglich. Andererseits würden diese Unmenge an Zeilen gar nicht in einen 64k Speicher eines 6502 Mikroprozessorsystems passen.

Um alle Funktionen des Editors des BIBO-ASSEMBLER genau kennenzulernen, empfehlen wir, den Assembler in Ihren Rechner einzuladen und alle hier im Handbuch erklärten Funktionen gleich praktisch zu erproben.

Nach dem Einladen des BIBO-ASSEMBLERS in Ihren Rechner meldet sich der Editor mit:

Ed it>

Von hier aus haben Sie die Kontrolle über alle Funktionen des Editors und des Assemblers. Sie können Kommandos im. Direktmodus (LIS, DIR, MON ... ) oder Zeilennummern mit den entsprechenden Labels und Opcodes eingeben.

Alle Kommandos bestehen aus 3 Zeichen oder deren Abkürzungen. Werden mehr als 3 Zeichen eingegeben, wird das 4. Zeichen schon als Zusatz erkannt. Beispiel:

 LIST

Der Befehl LIS wird richtig erkannt, der Editor sucht aber nach dem Labei 'T', dem 4. Buchstaben. Ein großer Teil der Befehle kann auch durch den ersten Buchstaben und nachfolgendem Punkt abgekürzt werden:

 L. = LIS

Geben Sie nun zunächst einmal ein:

 SIZ <RETURN>

<RETURN> werden wir im folgenden nicht mehr erwähnen, es sollte selbstverständlich sein, nach jeder Eingabe die RETURN-Taste zu betätigen.

Der BIBO-ASSEMBLER zeigt Ihnen nun die belegten Speicherbereiche an. Da Sie noch nichts eingegeben haben ist die Länge von Source- Data, also die Länge des Programmlistings gleich Null. Die Anfangs- und Endadressen sind gleich. Diese Werte sind übrigens in Hexadezimaler Form angegeben. Jeder, der sich mit Assemblerprogrammierung beschäftigt, sollte sich schnell mit Hexadezimalzahlen vertraut machen. Die einzigen Zahlen in diesem Assembler, die nie Hexadezimal werden können, sind die Zeilennummern.

Wir wollen nun ein paar Zeilen eingeben um die Funktionen des Editors praktisch auszuprobieren.

Der Editor verfügt über eine automatische Zeilennumerierung. Das heißt, Sie müssen nicht immer die Zeilennummer von Hand eingeben, das macht alles der Editor für Sie. Drücken Sie einfach die Taste <TAB> und Sie können Ihre erste Zeilennummer sehen:

E dit>

000 10 _

Der Cursor wird hier durch den Unterstrich (_) dargestellt.

Geben Sie weiter ein:

 00010 START  LDA #0

Sie können nach dem Label 'START' einfach wieder die <TAB> Taste betätigen, ebenso nach dem Opcode LDA. So wird das Listing automatisch übersichtlich formatiert. Ein paar Worte noch zu den Labeln. Ein Label ist eine Markierung im Programm, mit der Sie einer Unterroutine einen Namen geben können, und diesen Namen auch mit einem Sprungbefehl "anspringen." können. Für diese Label wurde eine maximale Länge von 8 Zeichen reserviert. Sie können für ein Label aber auch mehr als 8 Zeichen eingeben (maximal 128), dies ist allerdings nicht sehr sinnvoll und benötigt sehr viel Speicherplatz. Erfahrungsgemäß reicht die Verwendung von 6 Zeichen für ein Label.

Übrigens:Es macht keinen Unterschied im Speicherbedarf einer Zeile ob Sie zwischen dem Label (START) und dem Opcode (LDA) einen oder mehrere Leerschritte eingeben.

Nach drücken der RETURN-Taste können Sie nun wieder die TAB-Taste betätigen und schon erscheint die nächste Zeilennummer, und sie können die nächste Zeile eingeben.

 00020  STA $2C6

Wie sie sehen, können Sie ständig die TAB-Taste betätigen, um Ihr Programm formatiert und damit übersichtlich einzugeben. Die neue Zeilennummer erscheint nach Betätigen der TAB-Taste nur, wenn Sie vorher die RETURN-Taste gedrückt haben. So kann man leicht mit den Cursor Steuertasten auf eine auf dem Bildschirm sichtbare Zeile gehen und mit der Tab-Funktion die richtige Stelle erreichen.

Vergessen Sie aber nicht nach Änderung der Zeile wieder die RETURN-Taste zu betätigen um diese Zeile in das Programmlisting zu übernehmen.

Wem diese Art der automatischen Zeilennumerierung nicht gefällt, kann auch eine automatische Numerierung, ohne daß man die Tab-Taste betätigen muß, aktivieren. Der Befehl hierzu lautet:

Synta x:  NUM <Abstand>,<erste Zeile> (von number)
 Beispiel: NUM 20,1000

Hiermit wird nach Eingabe einer Zeile und Betätigung der RETURN-Taste automatisch die nächste Zeilennummer ausgegeben. Der Abstand zur vorherigen Zeilennummer wird mit einer Zahl hinter dem Befehl NUM angegeben. Nach einladen des BIBO-ASSEMBLERS ist dieser Abstand automatisch auf 10 eingestellt. Wird noch eine zweite Zahl, getrennt dureh ein Komma, eingegeben wird hierdurch festgelegt mit welcher Zeilennummer die automatische Numerierung beginnen soll. Wird keine der beiden Zahlen eingegeben, wird ein Abstand von 10 festgesetzt und die Numerierung beginnt mit der Zeile 10 oder mit der Zeile an der die Funktion vorher abgebrochen wurde. Ein Abbruch der NUM-Funktion ist jederzeit mit der BREAK-Taste möglich. Um die Auto-Number Funktion wider zu aktivieren, muß auch wieder NUM eingegeben werden.

Falls Sie es aber vorziehen die Numerierung mit der TAB-Taste zu benutzen, (an diese gewöhnt man sich erfahrungsgemäß sehr schnell und möchte sie nicht mehr vermissen), können Sie auch hierfür den Abstand der Zeilennummern zueinander einstellen. Nach dem einladen des BIBO-ASSEMBLERS ist auch dieser Abstand fest auf 10 mit der Anfangszeile 10 eingestellt. Der Befehl um diese Werte zu ändern lautet:

Synta x:  INC <Abstand>,<erste Zeile> (von Increment, Erhöhung)

Beispi el: INC 20,1000

Der Abstand der Zeilennummern zueinander kann von 1 bis 255 eingestellt werden. Wird der Abstand weggelassen, wird automatisch der Abstand 1 gewählt. Diesen benötigt man des öfteren um Zeilen einzufügen. Wird zusätzlich zum Zeilenabstand noch eine weitere Zahl eingegeben, kann dadurch die erste Zeilennummer festgelegt werden, die bei Drücken der TAB-Taste als nächstes ausgegeben werden soll.

Während der Eingabe von Zeilen in ein Assemblerlisting kann es immer wieder vorkommen, daß eine einzelne oder auch mehrere Zeilen gelöscht werden sollen. Wie beim BASIC Editor wird durch alleinige Eingabe einer Zeilennummer die zu dieser Nummer gehörende Zeile gelöscht. Sollen mehrere Zeilen gleichzeitig gelöscht werden, empfiehlt sich die Benutzung des Befehles:

S yntax:  DEL <erste Zeile>,<letzte Zeile> (von delete, auslöschen)

B eispiel: DEL 100,1000

Hierdurch werden alle Zeilen zwischen der Zeile 100 und der Zeile 1000 gelöscht. Die Zeilen mit der Nummer 100 oder 1000 müssen dabei selbst nicht vorhanden sein. Wird die letzte Zeilennummer weggelassen, wird natürlich auch nur die Zeile gelöscht, deren Nummer mit der ersten Zeilennummer übereinstimmt. Sind einmal Zeilen mit dieser Funktion gelöscht worden, können diese nicht mehr zurückgeholt werden. Achten Sie also vorher darauf, welche Zeilen Sie löschen wollen.

Wollen Sie den kompletten Speicher löschen gibt es hierfür auch einen Befehl:

 NEW

Hierdurch werden alle für den BIBO-ASSEMBLER wichtige Speicherstellen neu initialisiert, der HIMEM-Zeiger auf die höchste und der LOMEM-Zeiger auf die niedrigste freie Speicherstelle gesetzt und der Zeilenincrement (INC) auf 10,10 gesetzt.

 

Bevor wir zur weiteren Beschreibung der einzelnen Befehle des BIBO-ASSEMBLERS kommen, erklären wir hier erst einmal die Eingabesyntax des Assemblers:

A   B   C   D   E
00010   Label   LDA    $4567   Bemerkung

 

A - Zeilennummer: Kann Werte von 0 bis 64000 annehmen. Muß nicht 5-stellig eingegeben werden, wird allerdings beim Listen immer auf 5 Stellen aufgefüllt.

B - Label: Kann 1 bis 128 Zeichen lang sein. Das 1. Zeichen muß immer ein Buchstabe sein (Ausnahme Local Label). Der Label muß direkt oder maximal 1 Leerschritt nach der Zeilennummer eingegeben werden.

C - Opcode: Besteht immer aus 3 Zeichen, dem 65(C)02 Opcode oder einem Pseudo-Opcode bestehend aus einem Punkt und zwei Buchstaben. Muß mindestens 2 Leerschritte von der Zeilennummer oder 1 Leerschritt vom Label entfernt eingegeben werden.

D - Zusatz: Adressangabe, Wert oder Filename. Muß direkt oder maximal 1 Leerschritt nach dem Opcode eingegeben werden.

E - Erklärung: Hier können alle Zeichen verwendet werden. Muß zum Opcode (C) mindestens 2 Leerschritte oder dem Zusatz (D) mindestens 1 Leerschritt entfernt sein.

Die gesamte Zeile darf maximal 128 Zeichen lang werden.

Beachten Sie: Viele Erklärungen verbessern zwar die Übersicht über ein Assemblerlisting, sind aber auch sehr Speicherintensiv und verlängern die Assemblierzeit. Sie sollten deshalb bei langen Assemblerlistings sehr kurz gehalten werden.

Wie im Basic können Sie auch im BIBO-ASSEMBLER Remarks (Erklärungen) einfügen, die eine ganze Zeile belegen. Hierfür muß direkt oder maximal ein Leerschritt hinter der Zeilennummer ein Semikolon (;) oder Sternchen (*) eingegeben werden. Diese Zeile wird beim assemblieren einfach übersprungen.

Be ispiel:
00100  ; Alle Zeichen hinter dem Semikolon gelten als Erklärung

00200 *  Auch ein Sternchen kann benutzt werden *

Um verschiedene Programmteile voneinander zu trennen, können Sie Leerzeilen einfügen, indem Sie nur ein Semikolon oder Sternchen hinter der Zeilennummer eingeben. Die elegantere Lösung hierfür ist, eine Trennzeile einzugeben.

Wird direkt hinter der Zeilennummer ein Minus-Zeichen (-) eingegeben, wird nachher beim Listen diese Zeile komplett mit dem Minus-Zeichen gefüllt.

Beispi el:

Eingabe:

02000 -

Daraus wird beim Listen:

02000 --- ----------------------------------

Um die folgenden Funktionen direkt praktisch auszuprobieren, empfehlen wir ein kurzes Listing aus dem Anhang abzutippen.