Zwei Hilfen für die Arbeit mit EDAS
von Frank Dachselt
Die im folgenden vorgestellten Routinen sind zur Unterstützung der Arbeit mit dem CAOS-Assembler EDAS entstanden. Sie realisieren zum einen die Formatierung der Druckerausgabe und zum anderen die von Texteditoren bekannten Funktionen 'Kopieren' und 'Einfügen'.
Formatierte Druckerausgabe
Die Ursprungsversion des Programms FORMAT wurde einem Artikel im Funkamateur 11/91 entnommen. Für Diskettenbetrieb war sie allerdings zu lang, da ein Speicherbereich belegt wurde, der teilweise auch von den EDAS-Diskettenroutinen genutzt wird.
In der jetzt vorliegenden Form benötigt das Programm den Speicherbereich BA00h - BBFFh und setzt eine bereits initialisierte Druckerschnittstelle voraus, die über Ausgabekanal 2 den Drucker anspricht. Im EDAS-Menü erzeugt das Programm die Einträge FORMAT und PLABEL.
Mit FORMAT wird die Formatierung der Druckerausgabe initialisiert. Dazu können beim Aufruf bis zu drei Parameter übergeben werden: aktuelle Seitennummer, linker Rand und Anzahl der Zeilen je Seite
Diese Parameter werden vom Programm als Dezimalzahlen interpretiert; der sinnvolle Wertebereich liegt jeweils zwischen 0 und 99. Beim Weglassen einzelner Parameter bleiben die zuvor eingestellten Werte gültig.
Als Vorgabe existieren die Werte 1, 10 und 60. In der nächsten Zeile kann ein bis zu 16 Zeichen langer Name eingegeben werden. Als Hilfe erscheint hier auch in abgekürtzter Form die Reihenfolge der übergebbaren Parameter. Nach dieser Initialisierung können mit den Funktionstasten F3 bis F5 Steuerzeichen in Kommentarzeilen des EDAS-Quelltextes geschreiben werden:
F3 ... Unterdrücken der Listenausgabe
F4 ... Freigabe der Listenausgabe
F5 ... Seitenvorschub
Nach der Initialisierung ist die Listenausgabe zunächst freigegeben. Mit der Assembleroption LP wird der Druck der Assemblerliste ausgelöst. Beim Ausdruck erzeugt das Programm auf jeder Seite eine Kopfzeile aus Namen und Seitennummer. Nach Ausgabe einer Seite erwartet das Programm eine Tastenbetätigung, um den Druck fortzusetzen.
Mit PLABEL wird die Markentabelle eines übersetzten Quelltextes in formatierter Form auf dem Drucker ausgegeben. Dabei werden die zuvor mit FORMAT eingestellten Parameter bzw. die Vorgaben verwendet.
Das Drucken über FORMAT erfolgt stets fortlaufend unter Berücksichtigung der eingestellten Parameter. Soll ein weiterer Ausdruck auf einer neuen Seite beginnen, so ist das durch einen erneuten Aufruf von FORMAT zu erreichen (bei fortlaufender Seitennummerierung ohne Parameter).
Das Programm kann im Gegensatz zur Ursprungsversion beliebig oft aufgerufen werden, ohne es vorher rücksetzen zu müssen. Einmal aktiviert, werden jedoch alle Ausgaben über Kanal 2 in der beschriebenen Weise verändert.
Die Deaktivierung erfolgt durch eine Neuinitialisierung der Druckerschnittstelle oder kann durch Ein- und Ausschalten der Protokollfunktion über <SHIFT>-<CLR> erreicht werden, was allerdings vom verwendeten Druckertreiber abhängig ist.
Aufgrund der allgemeinen Wirksamkeit auf den Ausgabekanal 2 ist es zum Beispiel auch möglich, das Listing eines BASIC-Programms (mit LIST#2) in formatierter Weise auszugeben. Dazu existiert FORMAT auch im CAOS-Menü. Bezüglich der Parameterübergabe gilt das oben gesagte. Lediglich die Funktionstasten werden nicht initialisiert, da die verwendeten Steuerzeichen in BASIC bereits andere Funktionen besitzten und deshalb nicht verwendet werden können.
Der beigefügte Assembler-Quelltext des Programms FORMAT gestattet es, dieses den aktuellen Erfordernissen anzupassen. Soll die Formatierung auf Ausgabekanal 3 wirken, sind die Definitionen für UOUT und ADROUT entsprechend zu verändern. Ebenso können die Vorgaben für den linken Rand und die Anzahl der Zeilen je Seite neu gesetzt werden. Das Speichern des Programmcodes sollte mit der Assembleroption 'S' erfolgen, da bei Abarbeitung des Programms aus Platzgründen die Vorgaben mit aktuellen Werten überschrieben werden.
Kopieren und Einfügen
Das Programm COPA (COpy & PAste) gestattet es, markierte Abschnitte von EDAS-Quelltexten in einen Zwischenspeicher zu kopieren und anschließend an anderer Stelle bzw. in einen anderen Quelltext einzufügen. Als Zwischenspeicher dient ein Block (16 K) des RAM8; die Benutzung von RAM0 und RAM4 durch EDAS wird damit nicht eingeschränkt.
Das EDAS-Menü wird durch den Eintrag COPY erweitert. Um die Funktionstasten zu belegen, ist es zunächst notwendig, COPY aufzurufen, ohne daß ein sinnvoller Kopiervorgang stattfindet. Diese Belegung ist identisch mit der des Programms FORMAT und die erzeugten Steuerzeichen haben eine analoge Bedeutung:
F3 ... Ende eines markierten Textsabschnittes
F4 ... Beginn eines markierten Textabschnittes
Alle von diesen Steuerzeichen eingeschlossenen Textteile werden beim anschließenden Kopieren zusammengefaßt und im Zwischenspeicher abgelegt. Ausgelöst wird dies durch den Aufruf von COPY im EDAS-Menu. Die Anzahl der kopierten Bytes wird angezeigt.
Sollte der markierte Text länger als 16 K sein, wird das durch die Meldung 'memory overflow' angezeigt und nur bis zum Erreichen dieser Grenze kopiert. Die Meldung 'not ready' verlangt einen erneuten Aufruf des Editors mit TOP und die unmittelbar darauffolgende Rückkehr ins EDAS-Menu.
Insbesondere nach dem Editieren des Textes ist das notwendig, da die Kopierroutine den Text in einem bestimmten Speicherbereich erwartet. Dieser Kompromiß muß aufgrund der unvollständigen Kenntnis der Bedeutung der Editorarbeitszellen eingegangen werden.
Nach dem Kopieren kann der Text aus dem Zwischenspeicher an der aktuellen Cursorposition eingefügt werden. Das Einfügen geschieht blockweise und wird jeweils durch Betätigung von <Shift>-<CLR> ausgelöst. Ein akustisches Signal kennzeichnet den letzten Block.
Mit der nächsten Betätigung von <Shift>-<CLR> beginnt der Einfügevorgang von vorn. Das Einfügen sollte in einer ab der Cursorposition leeren Zeile beginnen, um ein Überschreiben vorhandener Zeichen zu verhindern.
Beim Kopieren und Einfügen wird ein 100h großer Speicherbereich als temporärer Zwischenspeicher benutzt, dessen Inhalt dadurch verändert wird. Dieser schließt sich unmittelbar an den Textspeicher des Editors an und ist beim Editieren selbst ohne Bedeutung. Die Anfangsadresse kann variieren, in der Beschreibung zum M027, Seite 6 ist sie mit 3/4*(RAMEnde) angegeben.
Im beigefügten Quelltext des Programms COPA kann eine Änderung bezüglich des als Zwischenspeicher benutzten RAM8-Blockes vorgenommen werden. Die beiden Unterprogramme RAM8ON und RAMRET am Ende des Quelltextes realisieren das Schalten bzw. das - nicht unbedingt notwendige - Rückschalten dieses Blockes auf Adresse 8000h und können entsprechend der vorliegenden Systemkonfiguration verändert werden.
Das Schalten des Blockes muß so erfolgen, daß nach dem an anderer Stelle durchgeführten Abschalten des IRM auf den gewünschten Block zugegriffen werden kann.
Wie bereits angedeutet, sind die vorliegenden Informationen über die EDAS-Systemvariablen im Bereich 40h - C8h nicht vollständig. Falls irgendwo genauere Beschreibungen darüber existieren, wäre dies mit Blick auf die Entwicklung und Verbesserung neuer Funktionen in EDAS sehr interessant und vielleicht einer kurzen Zusammenstellung - in welcher Form auch immer - wert.