Funkamateur 07 und 08/87

Texteditor fr den "AC1"

5000-5B6F

J. REUL - Y36ZO

Computer werden in immer strkerem Mae dazu verwendet, die altbekannte
Brotechnik zu ersetzen. So werden heute schon vielerorts Schreibmaschinen durch
Brocomputer bzw. rechnergesttzte Gerte verdrngt. Die Vorteile, wie
beispielsweise die nachtrgliche Korrektur oder das Abspeichern von Texten, wird
wahrscheinlich erst derjenige ermessen knnen, der einmal mit beiden
Mglichkeiten gearbeitet hat. Aber nicht nur im kommerziellen, sondern auch im
Amateurbereich setzt sich die rechnergesttzte Textverarbeitung immer weiter
durch. Mit dem folgenden Beitrag soll auch dem "AC1 "-Besitzer diese Technik
erffnet werden.

Selbstverstndlich wird das vollstndige Hexlisting als Rechnerausdruck mit
verffentlicht, so da jeder Elektronikamateur ohne die Zahlung einer
Nachnutzungsgebhr in den Besitz des Programms gelangen kann. Eine Praxis, die
eigentlich unter Amateuren blich sein sollte. Nutzbar ist der "AC1"-Texteditor
in zweierlei Hinsicht. Zum einen knnen die erarbeiteten Texte unter Verwendung
eines geeigneten Druckers zu Papier gebracht werden. Sie knnen aber auch als
eigenstndige Textfiles in den RAM-Bereich ausgelagert und auf
Magnetbandkassette abgespeichert werden. Dem Programmierer ist damit
beispielsweise die Mglichkeit gegeben, Programmbeschreibungen auf einfache Art
und Weise vervielfltigen zu knnen.

An dieser Stelle soll gleich darauf hingewiesen werden, da das Programm ohne
Vorbild geschrieben wurde und die Anpassung auf einen anderen Rechnertyp nur
unter groen Schwierigkeiten mglich sein drfte.



Hardware-Voraussetzungen

Der Texteditor ist fr einen erweiterten "AC1" mit folgenden Merkmalen
geschrieben:

- Speichererweiterung (min. 16 KBytes, bei 4000H beginnend);
- Zeichengenerator mit Kleinbuchstaben;
- Bildschirm mit 32 Zeilen.

Eine weitere wichtige Voraussetzung fr die Funktion des Programms ist die
Verwendung des Betriebssystems nach [1] und einer Tastatur, die die logischen
Funktionen nach [2] gewhrleistet.



Programmstart

Der Texteditor belegt den Bereich 5000...5B6FH als Arbeitsspeicher und 5D00H bis
zum oberen RAM-Ende, das selbstndig vom Rechner ermittelt wird, als Textpuffer.
Der dazwischenliegende Bereich ist dem Stack und den Merkzellen zugeordnet. Die
Startadresse des Programms ist 5000H. Bei erweitertem Suchbereich fr
Kennbuchstaben ist der Start auch mit "t" (74H) mglich.

Nach dem Lschen des Bildschirms gelangt ein Men zur Anzeige, in dem die
Grundfunktionen zur Textverarbeitung aufgefhrt sind. Auerdem wird die Anzahl
der auf Grund der vorhandenen RAM-Lnge zur Verfgung stehenden Bildschirmzellen
angezeigt. Steht an Stelle dieses Wertes ein "Error", so ist das Programm
fehlerhaft.

Der Aufruf der Menfunktionen erfolgt mittels des vorangestellten
Kennbuchstabens und "CR". Sind weitere Angaben erforderlich, so nimmt der
Rechner die Abfrage im Dialog vor.



Menfunktionen

A - Start

Der Puffer wird zur Erstellung eines neuen Textes vollstndig gelscht. Der
gesamte Bereich wird dabei mit Leerzeichen (20H) aufgefllt und dessen Beginn
auf dem Bildschirm angezeigt.

Zur komfortablen Texteingabe, die nun beginnen kann, ist das Programm in einen
Schreibmaschinenmodus geschaltet und die Tastaturabfrage um die
Autorepeatfunktion erweitert. Alle von der Tastatur erzeugten Kodes, die den
ASCII-Zeichen zwischen 14H und 7FH entsprechen und nicht in Tabelle 1 als
Steuerkodes vereinbart sind, werden als Zeichen interpretiert und verarbeitet.
Die Erluterung spezieller Steuerfunktionen folgt in einem spteren Abschnitt.
Zur verbesserten Orientierung beim Schreiben zeigt die letzte Zeile
Statusinformationen, die sich auf die aktuelle Position des Kursors beziehen.

B - Restart

Die Ablufe entsprechen "A". Der Puffer wird jedoch nicht gelscht, so da mit
der Bearbeitung eines vorhandenen Textes fortgefahren werden kann.

C - Komprimieren

Der geschriebene Text lt sich in einen frei whlbaren RAM-Bereich unterhalb
5000H umlagern. Ihm vorangestellt ist dann ein Hilfsprogramm, das es gestattet,
den Text ohne Zuhilfenahme des Editors auf dem Bildschirm auszugeben. Eine
Sonderstellung bei der Umlagerung nehmen Leerzeichen und Bindestrich ein. Bis zu
64 zusammenhngende Zeichen dieser Art werden zu einem Byte komprimiert, so da
bei bersichtlicher Arbeit mit eingerckten Zeilen oder Unterstreichungen kein
erhhter Speicherbedarf entsteht.

Nach Abarbeitung des Kommandos gelangen Anfangs- und Endadressen des Textfiles
zur Anzeige und das Programm kehrt zum Betriebssystem zurck. Auerdem werden
Anfangs-, End- und Startadresse in die Argumentzeilen geladen, so da man das
File mit S:Name auf Kassette abspeichern kann. Die Eingabe der Anfangsadresse 0
bewirkt den Rcksprung in das Men.

D - Dekomprimieren

Komprimierte Texte lassen sich zur Weiterbearbeitung oder zum Drucken in den
Puffer zurckladen. Befindet sich auf der angegebenen Adresse ein solches File,
wird der Puffer gelscht, der Text bernommen und ein Restart ausgefhrt. Bei
Eingabe einer falschen Adresse wird die Ausfhrung des Kommandos verweigert und
bei Adresse 0 in das Men zurckgesprungen.

E - Drucker

Die Verwendung dieses Kommandos setzt das Vorhanden sein einer geeigneten
Druckerroutine voraus. Diese mu folgende Bedingungen erfllen:

1. zeichenweise bergabe im Akku,

2. retten aller Register (Akku kann zerstrt werden).

3. Abschlu mit RET.

Zur einfachen Anpassung an die jeweiligen Gegebenheiten besitzt das Programm
einen Sprungverteiler, dessen Belegung noch erlutert wird.

F - Format

Beim Programmstart stellt sich ein Format von 61 Zeichen je Zeile ein. Eine
Vernderung dessen ist mit dem Kommando "Format" mglich. Die Eingabe von Werten
zwischen 10 und 63 ist erlaubt. Als zweiten Wert erfragt der Rechner die Gre
des Formatierungsraumes. Das ist der Bereich vom rechten Zeilenende gerechnet,
in dem beim Formatieren auf das Vorhandensein von Zeichen getestet wird. Die
Anzeige des eingestellten Bereichs erfolgt durch "+"-Zeichen in der Trennlinie
oberhalb der Statuszeile. Die Eingabe des Wertes 0 bewirkt eine Berechnung zu
Format/10 + 2. Die Anfangsinitialisierung betrgt 8.

G - Formatieren

Es werden alle Zeilen. in denen im Formatierungsraum ein Zeichen steht,
gleichmig mit Leerzeichen aufgefllt, so da nach Mglichkeit ein
rechtsbndiger Abschlu im Format entsteht. Um das Textbild nicht zu stark zu
verflschen, werden nach jedem Wort maximal zwei Leerzeichen eingefgt.
Gegebenenfalls kann man das Kommando erneut aufrufen.

H - Zentrieren

Der Text wird je nach Format in die Bildmitte gerckt.

I - Reformatieren

Es wird der Originalzustand nach Formatieren bzw. Zentrieren wieder hergestellt.
Dieses Kommando ist bei dekomprimierten Texten wirkungslos. D.h. Texte die zur
spteren Weiterverarbeitung komprimiert und auf Kassette abgespeichert werden,
sollten nicht formatiert sein.

K - Monitor

Mit diesem Kommando ist das Verlassen des Texteditors mglich. Die Steuerung
wird an das Betriebssystem zurckgegeben. Zur Untersttzung der Kassettenroutine
werden die Argumentzellen geladen, so da ein direktes Abspeichern mit S:Name
mglich ist.

Vor dem Wiedereinladen ist das Lschen des Puffers erforderlich. Das kann
beispielsweise mit dem Kommando "Start" des Mens geschehen. Da der Puffer vom
oberen Ende beginnend beschrieben wird, ist nach einer Vernderung der RAM-Lnge
im Rechner ein Laden mit Offset notwendig.



Editorfunktionen

Bei der Texteingabe wirken eine Reihe von Steuerbefehlen, die entsprechend der
verwendeten Tastatur mit den in Tabelle 1 aufgefhrten Kodes belegt wurden. Da
diese zumeist Standardfunktionen entsprechen, soll an dieser Stelle nur auf
einige Besonderheiten eingegangen werden.

Kursorsteuerung

Der Kursor kann auf jede beliebige Bildschirmposition gelenkt werden, um mit der
Texteingabe oder anderen Steuerfunktionen fortzufahren. Das Verlassen der Zeile
oder des Bildschirmes ist nicht mglich. Die Funktion Backspace + Space, wie aus
dem Monitor bekannt, ist nicht vorhanden. Sollen einzelne Zeichen gelscht
werden, mu der Kursor positioniert und mit Space vorgerckt werden.

Ein spezieller Tabulator gestattet es, den Kursor bis zum nchsten Wort in der
darberliegenden Zeile vorzurcken. Diese Funktion untersttzt die Erstellung
von Tabellen und die Arbeit mit eingerckten Texten.

Shiftlock

Nach dem Starten des Editors stellt sich der Schreibmaschinenmodus ein. Die von
der Tastatur erzeugten ASCII-Zeichen fr Buchstaben werden softwaremig
umgewandelt, so da im Normalfall Klein-, bei gedrckter Shifttaste
Grobuchstaben entstehen. Bei aktiver Shiftlockfunktion dagegen werden die
ASCII-Zeichen original interpretiert. Das bedeutet, da es sich eigentlich um
eine sogenannte Capital-Shiftlock-Funktion handelt, die nur bei Buchstaben (41H
5FH und 61H 7FH) wirksam ist. Ziffern und Zeichen werden nicht beeinflut.

Ein- und Ausschalten der Funktion erfolgt mittels ein und derselben Taste, das
heit, sie wirkt alternierend. Der aktive Zustand wird durch ein "S" in der
Statuszeile angezeigt. Des weiteren wirkt Shiftlock noch auf andere
Steuerfunktionen. Beim Bildhoch- bzw. -runterrollen wird jeweils um eine halbe
Bildschirmseite "weitergeblttert".

Das Zeicheneinfgen wird normalerweise blockiert, wenn das letzte Zeichen der
Zeile kein Leerzeichen ist. Shiftlock bewirkt hier einen Zeilenumbruch, der ggf.
ber den gesamten Absatz ausgefhrt wird. hnlich verhlt es sich beim
Zeichenlschen. Passen eines oder mehrere Wrter der Folgezeile an das Ende,
werden diese bernommen und die Folgezeile nach links verschoben. Dieser Umbruch
wird jedoch nicht ber mehrere Zeilen ausgefhrt, da ansonsten das Textbild
zerstrt werden knnte. Wenn ntig, mu man ihn in den Folgezeiten manuell
wiederholen.

Zeile lschen

Um die Gefahr des versehentlichen Lschens einer Zeile durch Fehlbedienung
auszuschlieen, ist im Programm eine zustzliche Abfrage eingebaut, die mit "CR"
quittiert werden mu. Die Quittung mit jeder anderen Taste fhrt zum
Wiedereinfgen der Zeile.



Programmanpassung

Wie bereits erwhnt, besteht die Mglichkeit, das Programm in gewissen Grenzen
der verwendeten Hardware anzupassen. Speziell die Funktionsbelegung der Tastatur
drfte sich bei den meisten Amateuren unterscheiden.

Zum Zweck der Anpassung befindet sich am Programmanfang ein Tabellenteil, der
nicht der Checksummenberprfung unterliegt. Die Belegung entsprechend dem
abgedruckten Hexlisting zeigt Tabelle 1. Die einzelnen Punkte haben folgende
Bedeutung:

OUTP - Einzelzeichenausgabe zum Druckerkanal

Hier ist an Stelle der Adresse 07EBH die der genutzten Druckerroutine
einzutragen. Auf die zu erfllenden Bedingungen wurde bereits in der
Beschreibung der Menfunktionen hingewiesen.

INIT - Druckerinitialisierung

Zu Beginn eines jeden Druckzyklusses kann ber diesen Sprung die
Anfangsinitiatisierung des Druckers erfolgen. Komfortable Druckprogramme, die
eine selbstndige Seitenformatierung vornehmen, bentigen sie als Information
zum Schreiben der ersten Abrilinie, Rcksetzen der Seitennumerierung oder
Positionieren des Druckkopfes. Auch andere Funktionen sind denkbar.

Einzige Bedingung ist die Rckkehr mit RET. Auch hier ist im abgedruckten
Hexlisting ein Sprung zur Adresse 07EBH eingetragen. Wird die
Anfangsinitialisierung nicht bentigt, sollte der Befehl unverndert bleiben.

ZEILE - Zeilen je Seite

An dieser Stelle ist die Anzahl der Zeilen dezimal einzutragen, die der
verwendete Drucker je Seite erzeugt. Einflu hat dieser Wert nur auf die Anzeige
in der Statuszeile, um die bersichtlichkeit beim Schreiben zu erhhen und beim
Drucken die Seitenauswahl zu ermglichen.

CSYMB - Kursorsymbol

Das zu verwendende Kursorsymbol kann dem persnlichen Geschmack angepat werden.
Mit dem Wert 0FH blinkt bei Verwendung des Zeichengenerators nach [3] ein weies
Feld.

CODTAB - Steuerkodetabelle

Die nachfolgenden 16 Bytes beinhalten die Steuerkodes des Editors. Magebend fr
die Funktion ist die Reihenfolge der Bytes, nicht aber deren Wert. Das bedeutet,
da jedes beliebige ASCII-Zeichen an entsprechender Stelle eingetragen und als
Steuerkode verwendet werden kann.

ZGCODE - Einzelzeichenkodierung

Dem Zeichengenerator nach [3] fehlen fr die Textverarbeitung in deutscher
Sprache die Umlaute, "" und noch einige andere Symbole. Um die Arbeit mit
diesen Zeichen zu ermglichen, gibt es im "AC1" prinzipiell zwei Lsungswege.
Zum ersten kann ein zweiter Zeichengenerator eingesetzt und hard- oder
softwaremig zugeschaltet werden. Zum anderen besteht aber auch die
Mglichkeit, die fehlenden Zeichen in den bisher freien Bereich des
Zeichengenerators (14H 1FH) zu legen. Diese Lsung entspricht zwar keinem
Standard, stellt aber den einfacheren Weg dar. Zur Erzeugung dieser Zeichen
bietet der Texteditor die Mglichkeit, die Tastaturabfrage auf eine zweite Ebene
umzuschalten.

Der entsprechende Steuerkode ist Tabelle 1 zu entnehmen. Da die Funktion
alternierend wirkt, erfolgt eine Anzeige durch ein "U" in der Statuszeile. Bei
aktiver Funktion wird jedes von der Tastatur erzeugte Zeichen mit den jeweils
ersten Werten der ZGCODE-Tabelle verglichen und bei Auffinden in den dahinter
stehenden Wert umgewandelt. Die momentane Belegung soll nur als Beispiel gelten.
Sobald der Inhalt des Zeichengenerators endgltig festgelegt ist, wird dieser
verffentlicht und eine entsprechende Tabellenbelegung vorgeschlagen.

SPCPRT - Leerzeichenausgabe zum Druckerkanal

Es wird bei den im Amateurbereich eingesetzten Druckern hufig der Fall sein,
da einige Zeichen nicht der fr die Textverarbeitung erforderlichen Qualitt
entsprechen. Symbole, die von der Druckerroutine beispielsweise durch
berdrucken erzeugt werden, mgen fr ein Programmlisting gengen, sehen jedoch
in einem Brief oftmals von Hand nachgetragen besser aus. Zu diesem Zweck kann
jeder Anwender bis zu fnf verschiedene ASCII-Zeichen in die SPCPRT-Tabelle
eintragen, die ber den Druckerkanal als Leerzeichen ausgegeben werden sollen.



Benutzung der Textfiles

Wie bereits erwhnt, besteht die Mglichkeit, die erstellten Texte in den
vorhandenen RAM-Bereich unterhalb 5000H umzulagern. Durch die Voranstellung
eines Hilfsprogramms, das den Text in einer Art Laufschrift ber den Bildschirm
ausgeben kann, entsteht ein eigenstndiges Textfile. Mit dieser Anwendung wird
der Texteditor auch fr die Amateure interessant, die keinen Drucker haben.

Die Umlagerung ist im Men als "Komprimieren" bezeichnet. Dieser Begriff wurde
gewhlt, da aufeinanderfolgende Leerzeichen und Bindestriche zu einem Byte
zusammengefat und in die Kodes, ab 80H umgewandelt werden. Die dadurch
erreichte Speicherplatzeinsparung ist recht erheblich.

Im Textfile sind keinerlei Steuerzeichen enthalten und eine Zeile wird immer mit
64 Zeichen beschrieben. Dadurch entsteht ein etwas eigenwilliges Format, was
jedoch fr den Anwender keine Bedeutung haben drfte. Ansprche auf
Kompatibilitt zu anderen Systemen werden ohnehin nicht erhoben.

Die Textfiles sind relocatibel, das heit, sie knnen in jeden beliebigen RAM-
Bereich verschoben werden und sind dort lauffhig. Nach dem Laden eines
Textfiles von Kassette wird dieses mit "J:" angesprungen. Erfolgt das Laden mit
Offset, mu die neue Startadresse natrlich entsprechend angegeben werden.
Daraufhin werden der Bildschirm gelscht und die Zeichen mit etwa 30 ms
Verzgerung ber den Befehl RST 10 des Betriebssystems auf dem Bildschirm
ausgegeben. Durch Drcken einer beliebigen Zeichentaste kann die Ausgabe
gestoppt und mit "CR" fortgesetzt werden. Anhaltendes Drcken von "CR" bewirkt
das Ausschreiben mit doppelter Verzgerung. Mit CTRL-C wird die Ausgabe bei
laufendem Text abgebrochen. Es bietet sich natrlich auch die Mglichkeit an,
die Texte zu dekomprimieren und mit Hilfe des Editors auf dem Bildschirm
auszugeben, zu bearbeiten oder zu drucken.



Schlubetrachtungen

Das vorgestellte Textverarbeitungsprogramm erhebt nicht den Anspruch mit
kommerziellen Systemen, in denen Speicherplatz kein Thema ist, konkurrieren zu
wollen. Es wurde versucht, das Programm den Bedrfnissen eines Amateurs
anzupassen und die Bedienung ohne Programmierkenntnisse zu ermglichen.
Lediglich die Arbeitsweise des "AC1"-Betriebssystems sollte bekannt sein.

Der beschriebene Texteditor ist seit einiger Zeit bei mehreren "AC1"-Besitzern
in Betrieb. Es sollte dabei beachtet werden, da schon relativ frh
Arbeitsvarianten verteilt wurden, die zwar alle aufwrtskompatibel sind, nicht
aber den vollen Funktionsumfang realisieren. Das Eintippen oder der Besuch einer
der nchsten Softwareveranstaltungen knnte sich also lohnen.

Die mgliche Lnge der zu bearbeitenden Texte richtet sich nach dem zur
Verfgung stehenden RAM-Bereich. Bei einer Minimalforderung von 16 KByte ab
4000H stehen etwa zwei Schreibmaschinenseiten zur Verfgung. Ein Vollausbau auf
64 KByte gestattet die Bearbeitung von etwa 10 Seiten a 63 Zeilen. Einem Amateur
drfte das meist gengen. Auerdem kann aber auch das Kassettenbandgert als
zustzlicher Massenspeicher genutzt werden.

Auf Grund der bisherigen Erfahrungen bei der Verffentlichung von Hexdumps wird
hier die CRC-Summe 0,5-KByteweise angegeben, um mgliche Kompensationsfehler
beim Eintippen, die nicht durch das Zeilenprfbyte erkannt werden, schneller
finden zu knnen. Der Autor wnscht allen "AC1"-Freunden bei der Arbeit mit dem
Texteditor viel Erfolg und hofft, einen kleinen Beitrag zur weiteren
Vervollkommnung dieses Kleincomputers geleistet zu haben.



Literatur

[1]	Heyder, F.: Der Amateurcomputer "AC1" (12), FUNKAMATEUR 34 (1985) H.1, S.40...43
[2]	Heyder, F.: Funkamateure entwickeln Amateurcomputer "AC1", FUNKAMATEUR 33 (1984) H.4, S.170/171
[3]	Heyder, F.: Bitmuster fr Zeichengenerator und Ergnzungen zum "AC1", FUNKAMATEUR 35 (1986) H.6, S.306/307

