Screenshot 1 Screenshot 2
0100 5c75 0100 C ... CED-EDITOR 2.44
muss zwischen Bildschirmmodus und Kommandomodus hin- und herschalten
CED (V. 25.10.'87) 
-----------------------------

(c) TU Dresden, 
    Sektion Informationstechnik
    WB Computer- und Kommunika-
    tionstechnik 

Bearbeiter: Goetze,B.
            Piepiorra, F.
Weiterentw. Brosig,R. (IZ)

Kurzcharakteristik

Der Texteditor arbeitet in dem
Speicherbereich: (2.4)
   100H-FFFH 
mit der genauen Aufteilung: 
   100H-0EDFH  Codebereich
   0EE0H-0F3AH  Datenbereich
   ab 0F40H freier Bereich

Er ist dadurch gekennzeichnet, dass alle Manipulationen im Text
direkt auf dem Bildschirm sichtbar werden. Er erlaubt nur ein-
fache Kommandos und Funktionen. Texte koennen formatiert ueber
eine Druckerschnittstelle ausgegeben werden.


* der Textspeicher:

Als Textspeicher funktioniert der Speicherbereich 3000H-DFFFH.
So steht ein Bereich von ueber 45000 Textzeichen zur Verfuegung.
Bei gewuenschten Anpassungen kann die Textanfangsadresse in
der Zelle 133H, die max. Endadresse in Zelle 135H eingetragen werden.

Alle Zeichenfolgen, die auf der Anfangsadresse mit einem Zeichen 
02H (STX) beginnen, anschliessend nur Zeichen im Wertebereich
7FH enthalten und als Abschluss wieder ein Zeichen 03H (ETX) be-
sitzen bzw. ueber die Obergrenze des Textspeicherbereiches hinaus
gehen, werden als zu bearbeiten der Text erkannt und stehen zur
Veraenderng bzw. Ergaenzung zur Verfuegung. Wird die Obergrenze
des Textspeichesbereiches ueberschritten, wird durch eine 
Einfuegung eines Zeichens 03H der ueberstehende Text abgeschnitten.

* allgemeine Funktionen:

Nach Start des Texteditors wird ein Kommandomodus, durch ein
Menuebild gekennzeichnet, erreicht. Dieser zeigt
- den aktuellen Fuellstand des Textpuffers und
- die gegenwaertige Zeile der Cursorposition an.

In diesem Modus koennen folgende Funktionen aufgerufen werden:
- Cursorpositionierung auf Textende, Textanfang oder auf
  Zeilennummer
- Markierung von Textstellen und anschliessendes loeschen des
  Textes bis zur Markierung bzw. des gesamten Textes
- Suchen/Ersetzen von Zeichenketten ohne Steuerzeichen
- Seitenformatiertes Drucken
- Verlassen des Texteditors zurueck zum Monitor
   
Nach Abschluss eines Kommandos bzw. nach Abbruch des Kommando-
modus wird der Bildschirmmodus (in dem die Textfolge auf dem 
Bildschirm erseheint) erreicht.
Hier koennen:
- Zeichenfolgen in den Text eingefuegt, 
- Zeichen und Zeichenfolgen vorwaerts und rueckwaerts ge-
  loescht,
- der Cursor zeichenweise, zeilenweise, seitenweise vor-
  waerts und rueckwaerts positioniert,
- das Kommando Suchen/Ersetzen wiederholt und
- der Kommandomodus erreicht werden.

Folgende Steuerzeichen koennen neben den alphanumerischen
Zeichen (Kodes 20H bis 7FH) in
den Text eingefuegt werden:

TAB  Kodierung 09H   Tabulatorstop jede 8. Spalte

NL   Kodierung 1EH   Neue Zeile als Wagenruecklauf/Zeilen-
     schaltung
FF   Kodierung 0CH   Neue Seite (wird nur beim Druck aus-
     gefuehrt, Anz. im Text "^")
  
!!! ACHTUNG !!!
Jede eingegebene Zeile muss mit NL nach weniger als 250 Anzeige-
positionen abgeschlossen sein, um eine ordnungsgemaesse Arbeit
des Texteditors zu gewaehrleisten.

* der Kommandomodus

Im Kommandomodus sind in einem Menuebild angezeigt, welche 
Kommandos durch normale Zeicheneingabe aufgerufen werden koennen, 
auf welcher Zeile sich der Cursor befindet und wieviele
Zeichen noch in den Textpuffer eingetragen werden koennen, 
bevor eine Fehlerausschrift anzeigt, dass das letzte Zeichen
nicht mehr uebernommen werden konnte. Alle Zeicheneingaben, 
die kein Kommando aufrufen, fuehren zum Abschluss des Kommandomodus 
und damit zur Rueckkehr in den Bildschirmmodus.
Folgende Kommandos koennen verwendet werden:

<E> - Ende
Soll die Arbeit mit dem Texteditor beendet werden, muss
dieses Kommando verwendet werden, nach der Anzeige von Anfangs 
und Endadresse des gefuellten Textbereiches wird der
Monitor erreicht 

<A> - Anfang
Cursor auf Textanfang setzen und neuen Bildschirminhalt darstellen

<Z> - Ende
Cursor auf Textende setzen und neuen Bildschirminhalt darstellen

<S> - Sprung auf Zeile
nach der Eingabe der Zeilennummer in dezimaler Form mit maximal 
fuenf Ziffern werden im Text vom Anfang beginoend die Zeichen NL 
bis zu dieser Zahl abgezaehlt und der Cursor auf die erreichte 
Stelle gesetzt, anschliessend wird der Bildschirminhalt neu dargestellt

<M> - Markierung setzen
der Cursor wird im Bildschirmmodus auf den Anfang eines zu
loeschenden Textbereiches positioniert, anschliessend wird 
mit diesem Kommando diese Stelle markiert und wieder in den
Bildschirmmodus zurueckgeschaltet, ueber die Moeglichkeiten
der Cursorpositionierung kann jetzt das Ende des zu loeschenden 
Bereiches erreicht werden

<#> - Teil loeschen
anschliessend an <M> kann mit diesem Kommando der so eingeschlossene 
Textbereich aus dem Textpuffer geloescht werden, moegliche Fehler 
sind das Fehlen der ersten Markierung bzw. die falsche Markierung bzw. 
die Ausfuehrunc von Nicht-Cursorpositionier-Operationen zwischen 
Markier- und Loeschkommando

<$> - alles Loeschen
falls der kompletqe Textpuffer geloescht werden soll, kann das mit 
diesem Kommando erreicht werden.

<F> - Finden/Ersetzen
Soll eine Textfolge im Textpuffer gesucht werden und ggf.
durch eine andere Textfolge ersetzt werden, so muss nach
Aufruf dieses Kommandos der Text, der gesucht werden soll,
eingegeben werden, durch '/' getrennt kann anschliessend der
einzusetzende Text angegeben werden. Die gesamte Textfolge
ist auf 31 Zeichen begrenzt. 
Nach Abschluss der Zeichenfolge, wird geprueft, ob der gesuchte
Text auf der Cursorposition gefunden wurde. Ist das der 
Fall, tritt die Funktion Ersetzen in Aktion. Dabei kann
ein beliebig langer Text durch einen anderen beliebig langen 
Text ersetzt werden, solange Platz im Textpuffer vorhanden 
ist. Anschliessend steht der Cursor hinter dem ersetzten
Text und der Bildschirminhalt wird dargestellt.

Ist der an der Cursorposition vorgefundene Text unterschiedlich 
zum gesuchten Text, wirkt die Funktion Suchen, die den
Textpuffer von der aktuellen Cursorposition beginnend in
Richtung Textende nach einer Uebereinstimmung mit dem gesuchten 
Text durchmustert. Bei der ersten Uebereinstimmung wird der Cursor auf das
erste Zeichen dieser Zeichenkette gesetzt und in den Bildschirmmodus 
umgeschaltet. 
Im Bildschirmmodus existiert die Funktionstaste, die diesen Kommandokomplex
ohne erneute Eingabe der Zeichenkette wiederholt startet. Die Find-Routine 
startet immer auf der aktuellen Zeilenposition (ggf. vorher Kommando A 
ausfuehren.)

<D> - Drucken
Soll der im Textpuffer enthaltene Text ausgedruckt werden,
besteht die Moeglichkeit der Einstellung des Seitenformates
und der Auswahl der zu druckenden Seiten. Eine Arbeit mit
Seitenstop kann eingestellt werden. Nach Aufruf des Komman-
dos erfolgt die Aufforderung zur Eingabe der Zeilennummer, 
ab der gedruckt werden soll. 
Eine Zahl zwischen 1 und 99999 muss eingegeben werden. Jede
Zahl, fuer die im Textpuffer nicht die ausreichende Zeilenzahl 
gefunden wird, fuehrt sofort zum Abbruch des Kommandos.

Die Frage nach der Zeilenzahl wird mit einer dreistelligen 
Dezimalzahl (>9) beantwortet. 
Bei Zeilenzahl=0 bzw. keine Eingabe erfolgt keine Seitenforma-
tierung. Bei geforderter Seitenformatierung wird abgefragt, mit 
welcher Numerierung die gedruckten Seiten versehen werden sollen. 
Bei leerer Eingabe wird ohne Fusszeile, in der die Seitennummer 
untergebracht ist, gedruckt.
Anschliessend wird abgefragt, ob ein Druckstop nach jeder
Seite erfolgen soll. Wird diese Frage bejaht, stoppt der Druck
definiert nach jedet Seite. Im anderen Fall wird der Text bis
zum Ende ohne Pause gedruckt.

Der Bediener kann jederzeit durch CTR-C den Druck abbrech-
en. Fehler wahrend des Druckes werden angezeigt.

* der Bildschirmmodus

Im Bildschirmmodus wird der Bildschirm entsprechend des
eingegebenen Textes aktualisiert. Das Textfenster wird dabei
so dargestellt, dass der Cursor im Bildfenster erscheint. Dabei
kann an den Raendern Text abgeschnitten sein, der nicht mehr 
auf den Bildschirm passt. Steuerzeichen, die von der Tasttatur 
angesprochen werden, aber durch das Programmsystem nicht
bearbeitet werden, quittiert eine Fehlerausschrift.


- allgemeine Funktionen

Alle Funktionen werden durch entsprechende Tastatureingaben
ausgeloest. Das Programmsystem enthaelt eine Tastaturkonver-
tierungsroutine, die es ermoeglicht jeden beliebigen Tasta-
turcode als Funktionscode festzulegen. Im folgenden werden
die entsprechenden Speicherzellen, in denen der gewuenschte 
Tastaturcode eingetragen werden kann aufgelistet.

Adr. Code     Bedeutung 
     (z.B.)  
______________________________
105H 09H  Cursor rechts ein Zei.
106H 08H  Cursor links
107H 0AH  Cursor hoch
108H 0BH  Cursor runter
109H 04H  Cursor eine Seite vor
10AH 02H  Cursor Seite zuruck
10BH 10H  Zeichen links loeschen
10CH 7FH  Zeichen rechts loeschen
10DH 03H  ESC
10EH 1BH  ESC
10FH 01H  Wandlung Buchstabe
110H 15H  Umschaltung Buchstabe           
111H 0FH  Loeschen einer Zeile
112H 11H  Ersetze/Wiederhole
113H 0CH  FORM FEED
114H 0DH  ENTER
115H 14H  Tabulator
116H 06H  Tabulator

CTR-C fuehrt zur sofortiger Rueckkehr in den Bildschirm-
modus ohne Ausfuehrung des Kommandos (Abbruch)


* die Druckerschnittstelle

Der Anschluss eines Druckers (oder eines anderen peripheren
Geraetes) ist vorbereitet. Dazu muss eine entsprechende
Treiberroutine (Centronixs,IFFS oder V24) an das Programmpaket 
angebunden werden.
Die entsprechende Schnittstelle liegt auf der Adresse

12DH mit den Daten:

12DH: LD A,C      ;Zeichen in C
      CALL 0FFE8H ;(DRAKK)
      SCF         ;Fehler,w.n.ges.
      RET

Hier kann eine entsprechende Aenderung der Treibereinbindung
erfolgen. 
Beim Aufruf des Druckertreibers steht das zu druckende Zeichen 
im C Register. Der Drucker quittiert die ordnungsgemaesse
Uebernahme des Zeichens durch setzen des C - Flags. Ein nicht
gesetztes C - Flag fuehrt zu einer Fehlerausschrift.

Beispielprogramm fuer eine einfache Centronix-Schnittstelle
ueber den freien PIO-Port:

 ORG 0F40H

ST:    LD    (SACKP),SP  ;Inhalt Stack retten
       LD    SP,STCK     ;neuen Stack festlegen
       LD    A,0FH       ;PIO Initialisierung
       OUT   1
       LD    A,0F0H
       OUT   1
       LD    A,87H
       OUT   1
       LD    A,L(INTS)   ;Interruptadresse laden
       LD    (0F0H),A
       LD    A,H(INTS)
       LD    (0F1H),A
       CALL  AUSG
RUECK: LD    SP,(SACKP)  ;alten Stackinhalt laden 
       RET
;  
AUSG:  LD    A,C
       CMP   1EH
       JRZ   KONV-#
AUSG1: CPL               ;da im Muster invertierende Treiber
       OUT   0
       EI
M1:    JRNC  M1-#
       RET
;
;Konvertierung des Zeilenendezeichens
;"1EH" in die Folge "0DH,0AH"
;
KONV:  LD    A,0DH
       CALL  AUSG1
       XOR   A            ;C-Flag ruecksetzn
       LD    A,0AH
       CALL  AUSG1
       JR    RUECK-#
;
;Interruptroutine
;
INTS:  DI
       SCF
       RETI
;
       BER   6
STCK:  DA    0            ;Stackobergrenze
SACKP: DA    0
;
       ORG 12DH
;
ZEIGER:JMP   ST
;
       END 

Anmerkung:Der erzeugte Quelltext ist kompatibel zu den meisten
anderen Textsystemen und Assemblern wie z.B. Texteditor Scf
oder Assembler Scf.  
 

Achtung: Bei dieser Version ist der Druck noch nicht mit
         CTRL C abbrechbar !!!