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)