1800 523b 0000 T ... DRUCK-TAST (esc)
abgesehen von den verschiedenen Steuerzeichen identisch mit [d50366ccb6e19f23dd64ec303be8d75b]
MicroWORD mit der elektronischen Schreibmaschine Erika S 3004
_____________________________________________________________
(c) by R. Kaczor, KMStadt 5/89


HINWEIS: Dieses Textfile wurde mit Steuerzeichen fuer den
-------- Ausdruck mit der S3004 gestaltet. Fuer den Ausdruck mit
         einem Matrixdrucker sind diese Steuerzeichen zu
         aendern oder zu entfernen!!!
****Computer-Club robotron Leipzig****10/89***ba***************

Die Nutzung des Textverarbeitungssystemes MicroWORD von R. Bro-
sig wird erst effektiv, wenn die Möglichkeit besteht, einen 
rucker und eine ergonomisch günstige schreibmaschinenähnliche 
Tastatur zu nutzen.
Mit der elektronischen Schreibmaschine Erika S 3004 sind diese
Möglichkeiten gegeben. Veröffentlichungen zur Koppelsoftware
sind bereits erschienen (1)(4).
Im nachfolgenden soll beschrieben werden, wie mittels eines
kleinen Programmes MicroWORD unter Verwendung der S 3004 genutzt
werden kann.


1. Hardwareseitige Voraussetzungen
__________________________________

Der Z 1013 ist bereits mit einer Tastatur (Folienflachtastatur,
8x4-Elastomer-Tastatur o.ä.) ausgestattet, die zwar für die Ar-
beit mit einem Texteditor unzureichend ist, jedoch auch weiter-
hin für bestimmte Steuerfunktionen (z.B. Programmstart) benötigt
wird.
Die Kopplung zwischen Rechner und Schreibmaschine erfolgt über
die PIO-Port A (X4) des Z 1013 und den seitlichen 26-poligen
Steckverbinder der S 3004 mittels einer Schaltung mit Optokopp-
lern zur Potentialtrennung, wie in (1) beschrieben, jedoch in
doppelter Ausführung. Das ist erforderlich, da sowohl die 
Schnittstelle für den Druck als auch die Schnittstelle zur se-
riellen Ausgabe des auf der Tastatur angeschlagenen Zeichens be-
nötigt wird.
Dementsprechend sind zu verbinden:

S 3004	   	      Z 1013 PIO-Port A (X4)    Bedeutung
Anschluß   Leitung    Anschluß      Leitung

  B 13	    /TxD	A 6	      /RxD	Sendedaten
  A 12	    /RTS	A 7 	      /DTD	Empfangsbereitschaft
  A 11	    /RxD	A 0	      /TxD	Empfangsdaten
  B 11	    /DTD	A 1 	      /RTS	Sendebereitschaft


2. Softwareseitige Voraussetzungen
__________________________________

Bei der seriellen Ausgabe des auf der Tastatur angeschlagenen
Zeichens ist die Unterbindung des Druckes dieses Zeichens er-
wünscht. Die Schreibmaschine besitzt hierfür spezielle Steuer-
zeichen (2), die mit einer Druckroutine (1) an die Schreibma-
schine ausgegeben werden können. Das Steuerzeichen 91H dient zur
Abschaltung des Druckwerkes bei Tastenbetätigung. Ein Wiederein-
schalten des Druckwerkes ermöglicht das Steuerzeichen 92H. Die
Ausgabe dieser Steuerzeichen erfolgt seriell mit einem Start-,
8 Daten- und einem Stopbit. Im gleichen Format erfolgt die Aus-
gabe der angeschlagenen Zeichen von der Tastatur.
Die Übertragungsrate in beiden Richtungen beträgt 1200 bit/s.


3. Steuerprogramm
_________________

Das Steuerprogramm besteht aus zwei Komplexen, dem Empfangspro-
gramm (Tastatur) und dem Sendeprogramm (Druck).
Für beide Komplexe wird eine Umcodierungstabelle zur Wandlung
des ASCII-Codes des Z 1013 in den Code der S 3004 (3) genutzt.
In dieser Tabelle sind auch die am meisten benötigten Steuer-
zeichen der S 3004 (2)(3) zur Textgestaltung (siehe Tabelle 1)
sowie die Codierung der Umlaute enthalten.
Je nach Nutzung der S 3004 als Tastatur oder als Drucker ist
eine entsprechende Initialisierung erforderlich. Diese erfolgt
auf der Adresse 7E10 (Tastatur) bzw. 7E20 (Druck).Der Aufruf und
die Initialisierung muß hierbei über die Z 1013 - interne Tas-
tatur (über X2) erfolgen, da MC-Programme über den festinstal-
lierten Monitor, der keine Kopplung mit der S 3004 - Tastatur 
aufweist, editiert werden.
Um jedoch den Betätigungsaufwand der Z 1013 - internen Tastatur
so gering wie möglich zu halten, wurde in das Steuerprogramm
eine Monitorerweiterung nach (5) aufgenommen.
Eine Änderung des Programmes, um in anderen Adreßbereichen lauf-
fähig zu sein, ist jederzeit möglich. Hierzu sind nur alle fett-
gedruckten Adressen umzurechnen. Wird in ganzen Hundertern ver-
schoben, sind nur die HIGH-Teile zu ändern.

3.1. Assemblerlisting des Steuerprogrammes
__________________________________________
M
Ausgabe eines Zeichens an die Schnittstelle

7D00	DRAKK:	        E5       	PUSH HL
7D01			C5		PUSH BC
7D02			F5		PUSH AF
7D03			F5		PUSH AF
7D04	STATUS:		DB 00		IN 00H	        ;Lesen des Druckerstatus
7D06 			E6 80		AND 80H		;nur Statusbit auswerten
7D08			28 FA		JRZ STATUS      ;Drucker noch nicht bereit
7D0A			06 0A		LD B, 0AH       ;Ausgabe von 10 Bits< 
7D0C			F1		POP AF
7D0D			26 FF		LD H, FFH	;Stoppbits
7D0F			6F		LD L,A		;Zeichen nach L
7D10			CB 25		SLA L		;Startbit einschieben
7D12			CB 14		RL H
7D14			F3		0I		;Sperren Interrupt
7D15	SEND:		7D		LD A, L
7D16			2F		CPL
7D17			D3 00		OUT 00H
7D19			CB 3C		SRL H		;nächstes Bit
7D1B			CB 1D		RRL		
7D1D			0E 60		LD C, 60H	;Zeitkonstante
7D1F	TIME:		0D		DEC C		;Runterzählen
7D20			20 FD		JRNZ TIME
7D22			10 F1		DJNZ SEND 	;nächstes Zeichen senden
7D24			FB		EI	        ;Interruptfreigabe
7D25			F1		POP AF
7D26			C1		POP BC
7D27			E1		POP HL
7D28			C9		  RET


Umcodierungstabelle 

      00  01  02  03  04  05  06  07     
      08  09  0A  0B  0C  0D  0E  0F

7D30  00  7A  03  7D  85  7B  78  7C  2EE
7D38  72  7F  75  76  74  77  84  44  38F
7D40  7E  73  87  46  79  45  06  00  282
7D48  00  00  00  00  00  00  77  00  077
7D50  71  42  43  41  48  04  02  29  1AE
7D58  1D  1F  1B  25  64  62  63  40  1E5
7D60  0D  11  10  0F  0E  0C  0B  0A  06C
7D68  09  08  13  3B  88  2E  81  35  1CB
7D70  89  30  18  20  14  34  3E  1C  193
7D78  12  21  32  24  2C  16  2A  1E  113
7D80  2F  1A  36  33  37  28  22  2D  160
7D88  26  31  38  3F  3C  3A  19  01  15E
7D90  2B  61  4E  57  53  5A  49  60  287
7D98  55  05  4B  50  4D  4A  5C  5E  246
7DA0  5B  52  59  58  56  5D  4F  4C  2AC
7DA8  5F  51  54  65  66  67  47  00  27D

Initialisierung PIO (Tastatur)

7DB0	INIT-TAST:	F5		PUSH AF
7DB1			3E CF	        LD A, CFH       ;Betriebsart Mode 3< 
7DB3			D3 01		OUT 01		 
7DB5			3E CO		LD A, COH 	;Ausgabe Bit 6 und 7
7DB7			D3 01		OUT 01
7DB9			3E 91		LD A, 91H	;Abschalten des
7DBB			C3 00 7D	JMP DRAKK	;Druckwerkes
7DBE			F1		POP AF
7DBE			C9		  RET		;zum Hauptprogramm

Empfangsprogramm Tastatur

7DC0	INPUT:		E5		PUSH HL
7DC1			D5		PUSH DE
7DC2			C5		PUSH BC
7DC3			AF		XOR A		;A-Null setzen
7DC4			32 04 00	LD(0004), A	;letztes Tast.z. löschen< 
7DC7			0E 00		LD C, 00H	;Register C vorbereiten
7DC9			06 08		LD B, 08H	;Reg. B-Anz.d.einzul.Bit
7DCB			F5		PUSH AF 
7DCC			3E 02		LD A, 02H	;Ausgabe Datenwort - Bit 2
7DCE			D3 00		OUT(PIO), A	;wird gesetzt - CTS L=aktiv
7DD0                    F1              POP AF      
7DD1	START:		DB 00		IN(A), PIO	;einlesen in Akku
7DD3			E6 40		AND 00H 	;Bit 6 selektieren
7DD5			28 FA		JRZ START	 
7DD7			1E 60		LD E, 60H	;Zeitschleife,
7DD9	ZEIT 1:		1D		DEC E		;um Startbit
7DDA			20 FD		JRNZ ZEIT 1	;zu überbrücken
7DDC			F3		DI		;Interrupt sperren
7DDD	EINLE:		DB 00		IN A, (PIO)	;Einlesen in Akku
7DDF			E6 40		AND 40H  	;Bit 6 selektieren
7DE1			CB 07		RLC A		;Bit 6 nach Bit 7
7DE3			B1		OR C		;Eingel. Bit zus.setzen
7DE4			4F		LD C,    	;Ergebn. in Reg. C laden
7DE5			CB 09		RRC, C	 	;1 Bitpos. nach rechts r.
7DE7			16 65		LD D, 65H	;Zeitschleife für Einhal-
7DE9	ZEIT 2:         15   		DEC D    	;tung der Zeitkonstante
7DEA			20 FD		JRNZ ZEIT 2	;für 1200 bit/s
7DEC			10 EF		DJNZ EINLE	;sind 8 Bit geladen?
7DEE			FB		EI	 	;Interrupt freigeben
7DEF			79		LD A, C   	;8-Bitwort von C in Akku
7DFO			2F		CPL	 	;A bitweise negieren
7DF1			F5		PUSH AF  	;Akku retten
7DF2			3E 02		LD A, 02H	;Ausgabe Datenwort/Bit 2
7DF4			D3 00		OUT(PIO), A	;wird zurückgesetzt/CTS=H
7DF6			F1		POP AF
7DF7			21 30 7D	LD HL, 7D30	;Anfang Code-Tabelle
7DFA			01 80 00	LD BC, 0080H	;Länge Tabelle
7DFD			ED B1		CPIR	 	;vergl. Speicherz.mit Ak.
7DFF			28 04		JRZ MARK 1	;Zeichen gefunden
7E01			3E 00		LD A, 00H	;Kein Z. gef. Ausgabe 0
7E03			18 04		JR MARK 2 	;überspr.Umcodierungsteil
7E05	MARK 1: 	3E 80		LD A, 80H	;Ermitteln der Position
7E07			03		INC BC	 	;in der Tabelle
7E08			91		SUB C	 	;entspr. ASCII-Zeichen
7E09	MARK 2:  	32 04 00	LD(0004), A	;Zeichen in Akku u.Tast. 
7E0C			C1		POP BC
7E0D			D1		POP DE
7E0E			E1		POP HL
7E0F			C9		  RET	 	;zum Hauptprogramm

Start MicroWORD-Tastatur

7E10	TAST:		21 C0 7D	LD HL, 7DC0	;Einbinden S 3004-Tas-
7E13			22 F1 02	LD (02F1), HL	;tatur in MicroWORD
7E16			22 E5 04	LD (04E5), HL
7E19			CD B0 7D	CALL INIT-TAST
7E1C			C3 00 01	JMP MicroWORD
7E1F			00		 NOP

Start MicroWORD-Druck

7E20	DRUCK:		21 09 01	LD HL, 0109	;Einbinden S 3004-Druck
7E23			22 F1 02	LD (02F1), HL	;in MicroWORD
7E26			22 E5 04	LD (04E5), HL	 
7E29			CD 2F 7E	CALL INIT-DRUCK
7E2C			C3 00 01	JMP MicroWORD	 
7E2F	INIT-DRUCK:     F5              PUSH AF
7E30			3E CF		LD A, CFH	;Betriebsart Mode 3
7E32			D3 01		OUT 01   	 
7E34			3E 80		LD A, 80H 	;Ausgabe Bit 7
7E36			D3 01		OUT 01
7E38			3E 92		LD A, 92H	;Einschalten des Druck-
7E3A			C3 00 7D	JMP DRAKK	;werkes
7E3D			F1		POP AF
7E3E			C9		  RET	 	;zum Hauptprogramm
7E3F			00		  NOP

Sendeprogramm Druck

7E40	CONVERT:	D5		PUSH DE  	;ASCII in S 3004 Code
7E41			E5		PUSH HL
7E42			FE 7F		CMP 7FH  	;Grafikzeichen?
7E44			38 02		JRC NGRAF	 
7E46			3E 20		LD A, 20H	;Space statt Grafikz.< 
7E48	NGRAF:		21 30 7D	LD HL, 7D30	;Tabellenanfang
7E4B			16 00		LD D, 00H	 
7E4D			5F		LD E, A  	;ASCII-Code in DE
7E4E			19		ADD HL, DE	;Tabellenplatz berechnen
7E4F			7E		LD A,(HL)	;S 3004-Code nach A
7E50			E1		POP HL
7E51			D1		POP DE
7E52			C3 00 7D	JMP DRAKK	;Ausgabe an Schnittstelle
7E55                    C9              RET                        

Monitorerweiterung

7E56	MONITOR:	3E 41		LD A, 41H
7E58			32 B0 00	LD (00B0), A
7E5B			21 10 7E	LD HL, 7E10
7E5E			22 B1 00	LD (00B1), HL
7E61			3E 42		LD A, 42H
7E63			32 B3 00	LD (00B3), A
7E66			21 20 7E	LD HL, 7E20
7E69			22 B4 00	LD (00B4), HL
7E6C			3E 43		LD A, 43H
7E6E			32 B6 00	LD (00B6), A
7E71			21 00 01	LD HL, 0100
7E74			22 B7 00	LD (00B7), HL
7E77			C3 10 7E	JMP TAST
P
3.2. Kopplung Steuerprogramm - MicroWORD
________________________________________

Zur Kopplung des Steuerprogrammes mit MicroWORD sind in dem 
Texteditor folgende Zellen zu ändern:

Adresse		alter Inhalt		neuer Inhalt

0112		C3 D4 17		 C3 40 7E
02F0		CD 09 01		(C3 C0 7D)
04E4		CD 09 01		(C3 C0 7D)
 
Die Zellen 02F0 und 04E4 werden durch das Steuerprogramm beim
Start des Programmes geändert (alter Inhalt bei Start DRUCK -
7E20, neuer Inhalt bei Start TAST - 7E10).

4. Betreiben des Texteditors "MicroWORD" mit der S 3004
_______________________________________________________

* Laden des Texteditors von Kassette (Speicherbereich 100H
  bis 18FFH)

* Laden des Steuerprogrammes von Kassette (Speicherbereich 7D00H
  bis 7E80H)

* Starten des Texteditors J 7E56 (Z 1013-Tastatur)
  Falls erforderlich, mit Aufruf INIT-TAST und Start MicroWORD
  fortsetzen

* Nach Erscheinen des Menues von MicroWORD auf dem Bildschirm
  kann Arbeit mit dem Texteditor über S 3004-Tastatur erfolgen.

* Bei Druck eines im Textspeicher befindlichen Textes

  - Rücksprung in Monitor aus Kommandomodus mit (B) S 3004

  - Hex-Umschaltung (H) Z 1013

  - INIT-DRUCK @B - Z 1013

  - Start MicroWORD @C - Z 1013
    (Textspeicher bleibt erhalten!)

  - Einfügen erforderlicher Steuerzeichen (siehe Tabelle 1) in     
    den Text über Tastatur Z 1013

  - Ausführung der für den Druck erforderlichen Eingaben und
    Befehle über Tastatur Z 1013
  
  - Nach Beendigung der Druckausgabe wieder Aufruf zur S 3004-
    Tastatureingabe möglich

* Bei Rückkehr zur S 3004-Tastatur

  - Rücksprung in Monitor aus Kommandomodus mit (B) Z 1013

  - Hex-Umschaltung (H) Z 1013

  - INIT-TAST @A - Z 1013

  - Start MicroWORD @C - Z 1013

* Die Funktionen READ und WRITE sind sowohl über S 3004 als auch
  Z 1013 aufrufbar.
  Die Angaben zu Typ und Filename werden über die Z 1013-Tasta-
  tur eingegeben und danach die Übertragung gestartet.
  Bei Betrieb des Texteditors über S 3004-Tastatur erfolgt nach 
  Abschluß der Übertragung der Rücksprung zur Eingabe über 
  S 3004-Tastatur.

* Der Aufruf der Druckfunktion des Texteditors kann nur erfol-
  gen, wenn das Sendeprogramm (Druck) initialisiert ist.
  Eine Eingabe der für den Druck erforderlichen Angaben und Be-
  fehle ist nur über die Z 1013-Tastatur möglich!  

5. Hinweise
___________

  - Die in (1) und (4) veröffentlichten Assemblerlistings weisen
    einige Fehler auf, die wie folgt zu korrigieren sind:


        	Adresse	  Alter Inhalt	Neuer Inhalt

Druckausgabe	-	   30 02	38 02  JRC NGRAF

Tastatur	30CF	   CB 17	CB 07  RLC A
		3033	   CB 19	CB 09  RRC C
		3040	   3E 00	3E 02  LD A,02


- Die Programmteile TAST (7E10),Aufruf @A, und Druck (7E20),
  Aufruf @B, beinhalten den Sprung zum Start des Texteditors.
  Sollte dieser nicht ausgeführt werden, besteht die Möglich-
  keit, diesen anschließend mit @C zu wiederholen.

- Wenn beim Übergang zum Sendeprogramm Druck im Bildschirmmodus
  sich der Cursor selbständig bewegt, ist die Adresse 109H des  
  Texteditors zu überprüfen, die sich verändert haben kann.


6. Literatur
____________

(1) Köhler, A.; Dittmann, J.
    S 3004 als Drucker für Z 1013
    FUNKAMATEUR 38(1989),H.5, S.224

(2) Klaus, T.; Fuhrmann, D.
    Universelle Druckerschnittstelle für S 3004
    FUNKAMATEUR 38(1989), H.5, S. 220

(3) Kadenbach, R.
    Centronics-Interface für Erika S 3004
    radio fernsehen elektronik,Berlin 38(1989),H.4, S. 225

(4) Köhler,A.; Dittmann, J.
    Erika S 3004 als Tastatur für Z 1013
    Manuskript für den FUNKAMATEUR 

(5) Z 1013 Mikrorechnerbausatz
    Handbuch Teil II A, S. 9f
    VEB Robotron-Elektronik Riesa


Tabelle 1
_________

Editiertasten und Funktionen
------------------------------------------------------------------

Bedeutung MicroWORD	ASCII	Bedeutung S 3004	    Z 1013

__________________________________________________________________

Cursor rechts		09	Rand rechts setzen      7F  S4 Q
Cursor links		08	Rücktaste		72  S4 P
Cursor runter		0A	1/2 Zeile unten     	75  S4 R
Cursor hoch		0B	1/2 Zeile hoch		76  S4 S
Cursor Wort rechts	07	TAB gesamt löschen T-   7C  S4 O
Cursor Wort links	06	zurück an Zeilenanfang  78  S4 N
Cursor eine Seite vor   01	Tabulator T+  	 	7A  S4 I
Cursor eine Seite zur.  05 	Tabulator T-	 	7B  S4 M
Zeichen links löschen	10	Rand links setzen	7E  S4 @
Bild-/Kommandomode	03	TAB-Gitter T+		7D  S4 K
Ank. Steuerzeichen	02	..	 		03  S4 J
Wechsel groß/klein	15	c	 	 	45  S4 E
Löschen einer Zeile	0F	e' 	 	 	44  S4 W
Ersetze/Wiederhole FIND 11	1/2 Zeichen rechts	73  S4 A
Formfeed	 	0C	1/2 Zeichen links	74  S4 T
Tabulator		14 	Tabulator nach rechts 	79  S4 D
Einfügen/Überschreiben	13 	e` 	 	 	46  S4 C
Marke setzen		16	L- 	 	 	06  S4 F
			0E	Zeilenabstand 1  	84  S4 V
			04	Zeilenabstand 1 1/2	85  S4 L
			12	100 Zeichen/Zeile	87  S4 B
			3C	120 Zeichen/Zeile	88  (kl)
			40	150 Zeichen/Zeile	89  @ 
			3E 	1/20 Zeile nach unten	81  (gr)