3000 7026 1c00 T ... DRUCK-TAST S3004
MicroWORD mit der elektronischen Schreibmaschine Erika S 3004>MicroWORD mit der elektronischen Schreibmaschine Erika S 3004>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. Brosig 
wird erst effektiv, wenn die Möglichkeit besteht, einen Drucker 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 Schreibmaschine aus-
gegeben werden können. Das Steuerzeichen 91H dient zur Abschal-
tung des Druckwerkes bei Tastenbetätigung. Ein Wiedereinschalten
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 Ausgabe der
angeschlagenen Zeichen von der Tastatur.
Die Übertragungsrate in beiden Richtungen beträgt 1200 bit/s.






							2
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__________________________________________

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



								3

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<>                           00 7D>                           00 7D       
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<



 
							4
<
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<>                           30 7D>                           30 7D
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 CO 7D	LD HL, 7DC0	@Einbinden S 3004-Tas-<>                           C0 7D>                           C0 7D
7E13			22 F1 02	LD (02F1), HL	@tatur in MicroWORD<
7E16			22 E5 04	LD (04E5), HL
7E19			CD B0 7D	CALL INIT-TAST>                           B0 7D>                           B0 7D
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>                           2F 7E>                           2F 7E
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<>                           00 7D>                           00 7D
7E3D			F1		POP AF
7E3E			C9		  RET	 	@zum Hauptprogramm<
7E3F			00		  NOP
							 	5
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<>                           30 7D>                           30 7D
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<>                           00 7D>                           00 7D
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>                           10 7E>                           10 7E
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>                           20 7E>                           20 7E
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>                           10 7E>                           10 7E
 
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>                                            40 7E>                                            40 7E  
02F0		CD 09 01		(C3 C0 7D)>                                            C0 7D>                                            C0 7D
04E4		CD 09 01		(C3 C0 7D)>                                            C0 7D>                                            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)




						       6

* 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 aB - Z 1013               ^

  - Start MicroWORD aC - 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 aA - Z 1013              ^

  - Start MicroWORD aC - 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:




							       7

        	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^ A, und Druck (7E20),
  Aufruf a^ B, beinhalten den Sprung zum Start des Texteditors.
  Sollte dieser nicht ausgeführt werden, besteht die Möglich-
  keit, diesen anschließend mit a^ 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>Editiertasten und Funktionen>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 a^ 
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  a^ 
			3E 	1/20 Zeile nach unten	81  (gr)



