Funkamateur 07 und 08/87 |
Computer werden in immer stärkerem Maße dazu verwendet, die
altbekannte Bürotechnik zu ersetzen. So werden heute
schon vielerorts Schreibmaschinen durch Bürocomputer bzw.
rechnergestützte Geräte verdrängt. Die Vorteile, wie
beispielsweise die nachträgliche Korrektur oder das Abspeichern
von Texten, wird wahrscheinlich erst derjenige
ermessen können, der einmal mit beiden Möglichkeiten
gearbeitet hat. Aber nicht nur im kommerziellen, sondern
auch im Amateurbereich setzt sich die rechnergestützte
Textverarbeitung immer weiter durch. Mit dem folgenden
Beitrag soll auch dem "AC1 "-Besitzer diese Technik eröffnet
werden.
Selbstverständlich wird das vollständige Hexlisting als
Rechnerausdruck mit veröffentlicht, so daß jeder
Elektronikamateur ohne die Zahlung einer Nachnutzungsgebühr 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 können die erarbeiteten Texte unter Verwendung eines
geeigneten Druckers zu Papier gebracht werden. Sie
können aber auch als eigenständige Textfiles in den
RAM-Bereich ausgelagert und auf Magnetbandkassette
abgespeichert werden. Dem Programmierer ist damit beispielsweise die
Möglichkeit gegeben, Programmbeschreibungen
auf einfache Art und Weise vervielfältigen zu können.
An dieser Stelle soll gleich darauf hingewiesen werden, daß das
Programm ohne Vorbild geschrieben wurde und die
Anpassung auf einen anderen Rechnertyp nur unter großen
Schwierigkeiten möglich sein dürfte.
Der Texteditor ist für 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 für die Funktion des Programms
ist die Verwendung des Betriebssystems nach [1]
und einer Tastatur, die die logischen Funktionen nach [2] gewährleistet.
Der Texteditor belegt den Bereich 5000...5B6FH als
Arbeitsspeicher und 5D00H bis zum oberen RAM-Ende, das
selbständig 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 für Kennbuchstaben
ist der Start auch mit "t" (74H) möglich.
Nach dem Löschen des Bildschirms gelangt ein Menü zur
Anzeige, in dem die Grundfunktionen zur Textverarbeitung
aufgeführt sind. Außerdem wird die Anzahl der auf Grund der
vorhandenen RAM-Länge zur Verfügung stehenden
Bildschirmzellen angezeigt. Steht an Stelle dieses Wertes ein "Error",
so ist das Programm fehlerhaft.
Der Aufruf der Menüfunktionen erfolgt mittels des vorangestellten
Kennbuchstabens und "CR". Sind weitere Angaben
erforderlich, so nimmt der Rechner die Abfrage im Dialog vor.
A - Start
Der Puffer wird zur Erstellung eines neuen Textes vollständig
gelöscht. Der gesamte Bereich wird dabei mit
Leerzeichen (20H) aufgefüllt 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 Erläuterung
spezieller Steuerfunktionen folgt in einem
späteren Abschnitt. Zur verbesserten Orientierung beim Schreiben
zeigt die letzte Zeile Statusinformationen,
die sich auf die aktuelle Position des Kursors beziehen.
B - Restart
Die Abläufe entsprechen "A". Der Puffer wird jedoch nicht
gelöscht, so daß mit der Bearbeitung eines vorhandenen
Textes fortgefahren werden kann.
C - Komprimieren
Der geschriebene Text läßt sich in einen frei wählbaren
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 zusammenhängende
Zeichen dieser Art werden zu einem Byte komprimiert, so daß bei
übersichtlicher Arbeit mit eingerückten Zeilen
oder Unterstreichungen kein erhöhter Speicherbedarf entsteht.
Nach Abarbeitung des Kommandos gelangen Anfangs- und Endadressen des
Textfiles zur Anzeige und das Programm kehrt
zum Betriebssystem zurück. Außerdem 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 Rücksprung
in das Menü.
D - Dekomprimieren
Komprimierte Texte lassen sich zur Weiterbearbeitung oder zum Drucken
in den Puffer zurückladen. Befindet sich
auf der angegebenen Adresse ein solches File, wird der Puffer
gelöscht, der Text übernommen und ein Restart
ausgeführt. Bei Eingabe einer falschen Adresse wird die
Ausführung des Kommandos verweigert und bei Adresse 0 in
das Menü zurückgesprungen.
E - Drucker
Die Verwendung dieses Kommandos setzt das Vorhanden sein einer
geeigneten Druckerroutine voraus. Diese muß
folgende Bedingungen erfüllen:
1. zeichenweise Übergabe im Akku,
2. retten aller Register (Akku kann zerstört werden).
3. Abschluß mit RET.
Zur einfachen Anpassung an die jeweiligen Gegebenheiten besitzt das
Programm einen Sprungverteiler, dessen
Belegung noch erläutert wird.
F - Format
Beim Programmstart stellt sich ein Format von 61 Zeichen je Zeile ein.
Eine Veränderung dessen ist mit dem
Kommando "Format" möglich. Die Eingabe von Werten zwischen 10 und
63 ist erlaubt. Als zweiten Wert erfragt
der Rechner die Größe 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 beträgt 8.
G - Formatieren
Es werden alle Zeilen. in denen im Formatierungsraum ein Zeichen steht,
gleichmäßig mit Leerzeichen aufgefüllt,
so daß nach Möglichkeit ein rechtsbündiger
Abschluß im Format entsteht. Um das Textbild nicht zu stark zu
verfälschen, werden nach jedem Wort maximal zwei Leerzeichen
eingefügt. Gegebenenfalls kann man das Kommando
erneut aufrufen.
H - Zentrieren
Der Text wird je nach Format in die Bildmitte gerückt.
I - Reformatieren
Es wird der Originalzustand nach Formatieren bzw. Zentrieren wieder
hergestellt. Dieses Kommando ist bei
dekomprimierten Texten wirkungslos. D.h. Texte die zur späteren
Weiterverarbeitung komprimiert und auf Kassette
abgespeichert werden, sollten nicht formatiert sein.
K - Monitor
Mit diesem Kommando ist das Verlassen des Texteditors möglich. Die
Steuerung wird an das Betriebssystem
zurückgegeben. Zur Unterstützung der Kassettenroutine werden
die Argumentzellen geladen, so daß ein direktes
Abspeichern mit S:Name möglich ist.
Vor dem Wiedereinladen ist das Löschen des Puffers erforderlich.
Das kann beispielsweise mit dem Kommando
"Start" des Menüs geschehen. Da der Puffer vom oberen Ende
beginnend beschrieben wird, ist nach einer Veränderung
der RAM-Länge im Rechner ein Laden mit Offset notwendig.
Bei der Texteingabe wirken eine Reihe von
Steuerbefehlen, die entsprechend der verwendeten Tastatur mit den
in Tabelle 1 aufgeführten
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 möglich. Die Funktion
Backspace + Space, wie aus dem Monitor bekannt, ist nicht vorhanden.
Sollen einzelne Zeichen gelöscht werden,
muß der Kursor positioniert und mit Space vorgerückt werden.
Ein spezieller Tabulator gestattet es, den Kursor bis zum nächsten
Wort in der darüberliegenden Zeile vorzurücken.
Diese Funktion unterstützt die Erstellung von Tabellen und die
Arbeit mit eingerückten Texten.
Shiftlock
Nach dem Starten des Editors stellt sich der Schreibmaschinenmodus ein.
Die von der Tastatur erzeugten
ASCII-Zeichen für Buchstaben werden softwaremäßig
umgewandelt, so daß im Normalfall Klein-, bei gedrückter
Shifttaste Großbuchstaben 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 beeinflußt.
Ein- und Ausschalten der Funktion erfolgt mittels ein und derselben
Taste, das heißt, 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 "weitergeblättert".
Das Zeicheneinfügen wird normalerweise blockiert, wenn das letzte
Zeichen der Zeile kein Leerzeichen ist.
Shiftlock bewirkt hier einen Zeilenumbruch, der ggf. über den
gesamten Absatz ausgeführt wird. Ähnlich verhält
es sich beim Zeichenlöschen. Passen eines oder mehrere Wörter
der Folgezeile an das Ende, werden diese
übernommen und die Folgezeile nach links verschoben. Dieser
Umbruch wird jedoch nicht über mehrere Zeilen
ausgeführt, da ansonsten das Textbild zerstört werden
könnte. Wenn nötig, muß man ihn in den Folgezeiten
manuell wiederholen.
Zeile löschen
Um die Gefahr des versehentlichen Löschens einer Zeile durch
Fehlbedienung auszuschließen, ist im Programm eine
zusätzliche Abfrage eingebaut, die mit "CR" quittiert werden
muß. Die Quittung mit jeder anderen Taste führt
zum Wiedereinfügen der Zeile.
Wie bereits erwähnt, besteht die
Möglichkeit, das Programm in gewissen Grenzen der verwendeten
Hardware anzupassen.
Speziell die Funktionsbelegung der Tastatur dürfte sich bei den
meisten Amateuren unterscheiden.
Zum Zweck der Anpassung befindet sich am Programmanfang ein
Tabellenteil, der nicht der Checksummenüberprüfung
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 erfüllenden
Bedingungen wurde bereits in der Beschreibung der Menüfunktionen
hingewiesen.
INIT - Druckerinitialisierung
Zu Beginn eines jeden Druckzyklusses kann über diesen Sprung die
Anfangsinitiatisierung des Druckers erfolgen.
Komfortable Druckprogramme, die eine selbständige
Seitenformatierung vornehmen, benötigen sie als Information
zum Schreiben der ersten Abrißlinie, Rücksetzen der
Seitennumerierung oder Positionieren des Druckkopfes. Auch
andere Funktionen sind denkbar.
Einzige Bedingung ist die Rückkehr mit RET. Auch hier ist im
abgedruckten Hexlisting ein Sprung zur Adresse
07EBH eingetragen. Wird die Anfangsinitialisierung nicht benötigt,
sollte der Befehl unverändert 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
erhöhen und beim Drucken die Seitenauswahl zu ermöglichen.
CSYMB - Kursorsymbol
Das zu verwendende Kursorsymbol kann dem persönlichen Geschmack
angepaßt werden. Mit dem Wert 0FH blinkt bei
Verwendung des Zeichengenerators nach [3] ein
weißes Feld.
CODTAB - Steuerkodetabelle
Die nachfolgenden 16 Bytes beinhalten die Steuerkodes des Editors.
Maßgebend für 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 für die Textverarbeitung in deutscher Sprache die Umlaute,
"ß" und noch einige
andere Symbole. Um die Arbeit mit diesen Zeichen zu ermöglichen,
gibt es im "AC1" prinzipiell zwei Lösungswege. Zum
ersten kann ein zweiter Zeichengenerator eingesetzt und hard- oder
softwaremäßig zugeschaltet werden. Zum anderen
besteht aber auch die Möglichkeit, die fehlenden Zeichen in den
bisher freien Bereich des Zeichengenerators
(14H 1FH) zu legen. Diese Lösung entspricht zwar keinem Standard,
stellt aber den einfacheren Weg dar. Zur
Erzeugung dieser Zeichen bietet der Texteditor die Möglichkeit,
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
endgültig festgelegt ist, wird dieser veröffentlicht und eine
entsprechende Tabellenbelegung vorgeschlagen.
SPCPRT - Leerzeichenausgabe zum Druckerkanal
Es wird bei den im Amateurbereich eingesetzten Druckern häufig der
Fall sein, daß einige Zeichen nicht der
für die Textverarbeitung erforderlichen Qualität entsprechen.
Symbole, die von der Druckerroutine beispielsweise
durch Überdrucken erzeugt werden, mögen für ein
Programmlisting genügen, sehen jedoch in einem Brief oftmals von
Hand nachgetragen besser aus. Zu diesem Zweck kann jeder Anwender bis
zu fünf verschiedene ASCII-Zeichen in
die SPCPRT-Tabelle eintragen, die über den Druckerkanal als
Leerzeichen ausgegeben werden sollen.
Wie bereits erwähnt, besteht die
Möglichkeit, 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 eigenständiges Textfile.
Mit dieser Anwendung wird der Texteditor auch
für die Amateure interessant, die keinen Drucker haben.
Die Umlagerung ist im Menü als "Komprimieren" bezeichnet. Dieser
Begriff wurde gewählt, da aufeinanderfolgende
Leerzeichen und Bindestriche zu einem Byte zusammengefaßt 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 für den
Anwender keine Bedeutung haben dürfte. Ansprüche
auf Kompatibilität zu anderen Systemen werden ohnehin nicht
erhoben.
Die Textfiles sind relocatibel, das heißt, sie können in
jeden beliebigen RAM-Bereich verschoben werden und
sind dort lauffähig. Nach dem Laden eines Textfiles von Kassette
wird dieses mit "J:" angesprungen. Erfolgt
das Laden mit Offset, muß die neue Startadresse natürlich
entsprechend angegeben werden. Daraufhin werden der
Bildschirm gelöscht und die Zeichen mit etwa 30 ms
Verzögerung über den Befehl RST 10 des Betriebssystems auf
dem Bildschirm ausgegeben. Durch Drücken einer beliebigen
Zeichentaste kann die Ausgabe gestoppt und mit "CR"
fortgesetzt werden. Anhaltendes Drücken von "CR" bewirkt das
Ausschreiben mit doppelter Verzögerung. Mit
CTRL-C wird die Ausgabe bei laufendem Text abgebrochen. Es bietet sich
natürlich auch die Möglichkeit an,
die Texte zu dekomprimieren und mit Hilfe des Editors auf dem
Bildschirm auszugeben, zu bearbeiten oder
zu drucken.
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 Bedürfnissen eines
Amateurs anzupassen und die Bedienung ohne Programmierkenntnisse zu
ermöglichen. 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 früh Arbeitsvarianten
verteilt wurden, die zwar alle aufwärtskompatibel sind,
nicht aber den vollen Funktionsumfang realisieren. Das Eintippen oder
der Besuch einer der nächsten
Softwareveranstaltungen könnte sich also lohnen.
Die mögliche Länge der zu bearbeitenden Texte richtet sich
nach dem zur Verfügung stehenden RAM-Bereich.
Bei einer Minimalforderung von 16 KByte ab 4000H stehen etwa zwei
Schreibmaschinenseiten zur Verfügung.
Ein Vollausbau auf 64 KByte gestattet die Bearbeitung von etwa 10
Seiten a 63 Zeilen. Einem Amateur dürfte
das meist genügen. Außerdem kann aber auch das
Kassettenbandgerät als zusätzlicher Massenspeicher genutzt
werden.
Auf Grund der bisherigen Erfahrungen bei der Veröffentlichung von
Hexdumps wird hier die CRC-Summe 0,5-KByteweise
angegeben, um mögliche Kompensationsfehler beim Eintippen, die
nicht durch das Zeilenprüfbyte erkannt werden,
schneller finden zu können. Der Autor wünscht allen
"AC1"-Freunden bei der Arbeit mit dem Texteditor viel Erfolg
und hofft, einen kleinen Beitrag zur weiteren Vervollkommnung dieses
Kleincomputers geleistet zu haben.
[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 für Zeichengenerator und
Ergänzungen zum "AC1", FUNKAMATEUR 35 (1986) H.6, S.306/307 |
233 KByte | 382 KByte | 377 KByte | 330 KByte |
Tabelle 1 | Teil 1/2 | Teil 3/4 | Teil 5/6 |