← ST-Computer 07 / 1988

Wenn der Atari ST mit der Gabi anbandelt (Teil 1)

Hardware

Die Gabriele 9009 von Triumph Adler ist eine der meistverbreitetsten elektronischen Typenradschreibmaschinen. Leider kann sie nur ĂŒber eine teure Schnittstellenbox als Computerdrucker verwendet werden. Dieser Artikel gibt einen Einblick in spezielle Druckerfunktionen, stellt das integrierte Schreibmaschineninterface vor und zeigt abschließend eine Softwarelösung auf, die einen direkten Anschluß der Schreibmaschine am ATARI ST doch ermöglicht.

Von Triumph Adler wird eine Familie von Typenradschreibmaschinen angeboten, die sich zwar bezĂŒglich der Schreib-maschinen-FunktionalitĂ€t unterscheiden. die aber alle die gleiche integrierte Schnittstelle fĂŒr einen Druckeranschluß bieten. Folgende Modelle gehören zu dieser Familie:

  • Gabriele 9009
  • Beta 8100
  • SE 305
  • SE 310
  • SE 315
  • SE 320
  • SE 325

Außerdem besitzt noch das Schreibmaschinenmodell IBM Action Writer 6715, ein weitgehend mit der Gabriele 9009 baugleiches Modell, das gleiche Interface. Die nachfolgenden AusfĂŒhrungen gelten fĂŒr alle genannten Schreibmaschinen, auch wenn meist nur die Gabriele 9009 namentlich genannt wird.

Leider kann die in der Schreibmaschine integrierte Schnittstelle nicht zum direkten Anschluß an einen Computer verwendet werden, sondern es muß als “Dolmetscher” noch eine Interface-Box (TA-Bezeichnung IFD 1) zwischen Schreibmaschine und Computer geschaltet werden. Die Interface-Box bietet zum Computeranschluß eine parallele (Centronics-) Schnittstelle und eine serielle (V.24-) Schnittstelle. Trotz der vielen mit der Interfacebox realisierten Funktionen (z.B. Fettschrift oder Proportionalschrift) macht der hohe Preis der IFD1 eine Anschaffung gerade fĂŒr den privaten Kunden nicht leicht, zumal sich die Kosten mit ca. DM 500,- im Bereich von 50% des Schreibmaschinenpreises bewegen. Diese Überlegung sowie der nicht ganz problemfreie Anschluß der IFD1 an den ATARI ST haben zur Entwicklung einer Softwarelösung gefĂŒhrt.

Kleines “Schreibmaschinen-Einmaleins”

Bevor ich nÀher auf das Thema Kommunikation Computer - Schreibmaschine eingehe, möchte ich als Einleitung die Grundkomponenten einer elektronischen Typenradschreibmaschine am Beispiel der Gabriele 9009 vorstellen.

Die Schreibmaschine besteht im wesentlichen aus folgenden Modulen:

  • Tastaturleiterplatte mit Tastern und LEDs
  • Logikkomponente mit einem Mikroprozessorsystem, das sowohl die Druckersteuerung als auch die FunktionalitĂ€t der Schreibmaschine (z.B. Funktionen “Automatische Korrektur”, "Automatisches Unterstreichen” etc.) realisiert
  • Drucker mit Schreibwalze und Druckschlitten

Die Funktionen des Druckers werden hierbei durch insgesamt vier Schrittmotoren umgesetzt:

  • der Schreibwalzenmotor ist zustĂ€ndig fĂŒr die vertikale Bewegung des Papiers. Er wird beispielsweise dann gebraucht, wenn ein Linefeed den Papiervorschub auf eine neue Schreibzeile bringen soll. Ein Schritt des Motors bewirkt aufgrund der GetriebeĂŒbersetzung einen Vorschub um 1/96" (ca. 0,26 mm). Die weltweit standardisierte Grundzeile hat einen Abstand von 1/6" (ca. 4.23 mm); der Schrittmotor muß hierfĂŒr also um insgesamt 16 Schritte weitergeschaltet werden.
  • der Farb- und Korrekturbandmotor steuert das Heben und den Transport der genannten BĂ€nder. Auf diesen Motor hat man als Anwender keinen Zugriff, da er vom Betriebssystem der Schreibmaschine selbststĂ€ndig entsprechend der gewĂŒnschten Aktion angesteuert wird.
  • der Schlittenmotor sorgt fĂŒr die (horizontale) Bewegung des Druckschlittens in beiden Richtungen, wobei ein Schritt des Motors eine Bewegung um 1/120" (ca. 0,21 mm) realisiert. FĂŒr die Ansteuerung unterscheidet man zwischen Bewegungen, die vom Betriebssystem automatisch nach dem Abdruck eines Zeichens ausgefĂŒhrt werden und sogenannter direkter BewegungsausfĂŒhrung (z.B. Carriage Return oder Tabulator).
  • der Typenradmotor veranlaßt die Drehung des Typenrads. Aufgrund der GetriebeĂŒbersetzung entspricht ein Motorschritt der Drehung um eine Typenradspeiche. Alle von TA angebotenen TypenrĂ€der haben 100 Speichen, es stehen somit 100 verschiedene Zeichen zur VerfĂŒgung. Obwohl eine Vielzahl von TypenrĂ€dem mit verschiedenen Schriftarten verwendet werden kann, besitzen alle TypenrĂ€der der LĂ€ndervariante “deutsch” die gleiche Zuordnung der Zeichen zur Speichennummer.

Da die verschiedenen Zeichen unterschiedlich große DruckflĂ€chen besitzen (z.B. verglichen zu “W”), muß zur Erreichung eines gleichmĂ€ĂŸigen Abdrucks jedem Zeichen eine spezifische Abschlagsenergie zugeordnet werden. Der Abschlag erfolgt durch einen mit konstanten Strom beaufschlagten Magneten, wĂ€hrend die Abschlagsenergie durch Variierung der Bestromungszeit reguliert wird. Jedem Zeichen des Typenrades sind somit zwei Werte zugeordnet, nĂ€mlich die Speichennummer sowie die spezifische Abschlagszeit. Im normalen Schreibmaschinenbetrieb hat der Bediener mit all diesen Details nichts zu tun, sondern beschrĂ€nkt sich aufs BetĂ€tigen der verschiedenen Tasten, wĂ€hrend das Betriebssystem fĂŒr die Umsetzung der oben genannten Funktionen sorgt. Wichtig werden die Informationen jedoch, wenn man wie wir die Schreibmaschine als direkt angesteuerten Drucker einsetzen möchte.

Was kann das integrierte Schreibmaschineninterface?

Alle oben aufgefĂŒhrten Schreibmaschinenmodelle besitzen an der GerĂ€terĂŒckseite eine achtpolige DIN-Buchse. Auf diese Buchse herausgefĂŒhrt ist kein Tonbandanschluß, sondern Versorgungsspannungen sowie Handshake-und Datenleitungen fĂŒr eine serielle Schnittstelle. Diese Schnittstelle wird je nach Modell entweder direkt vom Mikroprozessor realisiert oder es wird ein USART-Baustein verwendet. Da die Signale jedoch nicht ĂŒber entsprechende Treiberbausteine gefĂŒhrt wurden, stehen nur TTL-Pegel (0V —> “Low” und +5V —> “High”) und keine V.24-Pegel ( + 12V —> “Low” und -12V —> “High")zur VerfĂŒgung. Will man einen Anschluß an einen Computer vornehmen, muß also unbedingt eine Signalumsetzung durchgefĂŒhrt werden.

Eine Beschreibung der an der Buchse anliegenden Signale kann dem Bild 1 entnommen werden.

Bild 1: Schnittstellenbuchse in SchreibmaschinenrĂŒckwand (Draufsicht)

Man hat bei TA aber nicht nur an Treiberbausteinen gespart, sondern, was die Sache weit komplizierter macht, auch an einer Treibersoftware. Es besteht nĂ€mlich keine Möglichkeit, ĂŒber die integrierte Schnittstelle einfach Zeichen im ASCII-Format zu schicken und zu hoffen, daß die Schreibmaschine diese entsprechend den eingestellten Parametern (Zeichen- und Zeilenabstand) ausdruckt.

Vielmehr versteht der Schreibmaschinen-Mikroprozessor nur druckerspezifische Anweisungen im Interncode (z.B. “drehe Typenrad zur Speiche 6” oder “bewege den Schlitten um 10 Schritte nach rechts”).

Aus diesem Grund sitzt in der Original-Interface-Box von TA eine Elektronikplatine mit eigenem Mikroprozessor, RAM- und EPROM-Speicher sowie einem weiteren US ART-Baustein. Das von TA realisierte Konzept ermöglicht mit der IFD1 eine von der Schreibmaschine unabhĂ€ngige hohe DruckerfunktionalitĂ€t, fĂŒhrt jedoch aufgrund des hohen Hardwareaufwands zu kaum vertretbaren Kosten.

Die Idee eines softwaremĂ€ĂŸigen "IFD-Emulator” geht nun davon aus, die Intelligenz der IFD1 im Computer (hier ATARI ST) durch ein Programm nachzubilden, das beim Bootvorgang im Speicher fest installiert wird.

Hardware-Anschluß

Wie oben bereits erwĂ€hnt, stehen bei den Schreibmaschinen alle benötigten Signale an der achtpoligen DIN-Buchse auf der GerĂ€terĂŒckseite zur VerfĂŒgung. Obwohl der Datentransfer hauptsĂ€chlich in der Richtung Computer zur Schreibmaschine ablĂ€uft, ist es erforderlich, die Verbindung bidirektional auszulegen. Der Grund liegt darin, daß die Schreibmaschine auch diverse Meldungen an den Computer schicken muß (z.B. “Online-Taste wurde gedrĂŒckt”).

Die logische Verbindung wird durch eine Verdrahtung nach Tabelle 1 hergestellt (siehe unten).

Durch die Betriebssystem-Software wird das Datenformat der Schreibmaschinenschnittstelle auf folgende Parameter festgelegt:

  • asynchrone DatenĂŒbertragung
  • Übertragungsrate: 4800 Baud
  • ein Startbit
  • acht Datenbits
  • ein Stopbit
  • kein ParitĂ€tsbit.
ATARI ST Schreibmaschine (SM) ErlĂ€uterung ------------------------------------- RxD (Pin 3) TxD (Pin 7) Daten SM—>ST TxD (Pin 2) RxD (Pin 5) Daten ST-->SM RTS (Pin 4) DSR (Pin 3) Steuer ST—>SM CTS (Pin 5) DTR (Pin 2) Steuer SM—>ST

Tabelle 1: So muß verdrahtet werden

Doch bevor Sie jetzt beginnen, ein entsprechendes Kabel zu löten, komme ich noch zu dem oben bereits erwÀhnten Problem der unterschiedlichen Signalpegel.

WĂŒrde man die Komponenten ohne Umsetzer verbinden, wĂ€re keine vernĂŒnftige Kommunikation möglich, außerdem könnten die Schnittstellentreiber beider Systeme zerstört werden. Das Problem muß dadurch gelöst werden, daß die Schreibmaschinensignale von TTL-Pegel auf V.24-Level umgesetzt werden.

V.24-Level bedeutet fĂŒr

  • High-Signal: - 3 V bis - 15 V
  • Low-Signal: + 3 V bis +15 V.

Entsprechend der Norm ist der Bereich zwischen -3 V und +3 V Undefiniert. HĂ€ufig findet man gerade im Hobbybereich unsymmetrische Anpaß-Schaltungen, die die Umsetzung einfach mit Hilfe eines Inverterbausteins realisieren.

Bild 2: Pegelanpassung durch IC MAX 232 mit integriertem Spannungswandler, EmpfÀnger- und Treiberstufe

Ein “Low” am Eingang des Inverters erzeugt am Ausgang ein Signal von ca. + 12 V, was somit der Normanforderung genĂŒgt. Ein “High” am Eingang ergibt am Ausgang jedoch anstelle der geforderten negativen Ausgangsspannung nur eine Spannung von ca. 0 V. Obwohl dieser Pegel somit im Undefinierten Bereich liegt, fĂŒhrt diese Umsetzung oft zum Erfolg.

Aufgrund mangelnder Störsicherheit und großer AbhĂ€ngigkeit von Bauteiletoleranzen wird jedoch eine Anpaß-Schaltung auf “echte” V.24-Pegel empfohlen. Hierzu werden am Elektronikmarkt spezielle Treiberbausteine 75188 (bzw. 1488) und 75189 (bzw. 1489) angeboten, mit denen sich die geforderte Umwandlung einfach realisieren lĂ€ĂŸt. Da die genannten Bausteine diese Aufgabe in der gesamten PC-Weit (ĂŒbrigens auch im ATARI-ST) erfĂŒllen, handelt es sich hier um eine sehr kostengĂŒnstige Lösung. Allerdings hat die Sache einen nicht unerheblichen Haken: FĂŒr die Umsetzung der Signalpegel benötigt der Baustein 74188 als Versorgungsspannung neben + 12V auch die Spannung -12V. Die Schreibmaschine stellt an der D1N-Buchse zwar verschiedene Versorgungsspannungen zur VerfĂŒgung, jedoch handelt es sich mit +5V, +10V und +35 V nur um positive Gleichspannungen. Als Lösung bietet sich die Versorgung unserer kleinen Anpaß-Schaltung mit einem getrennten Netzteil an. Wer kein solches zur VerfĂŒgung stehen hat, oder sich nicht mit dem Gedanken an noch mehr Netzteile/ Kabel auf dem Schreibtisch anfreunden kann und auch keine "Kunstschaltung” zur Erzeugung der +/- 12V aus den vorhandenen Gleichspannungen diskret aufbauen will, dem sei der in Bild 2 dargestellte Schaltungsvorschlag empfohlen. Hierzu folgende kurze ErlĂ€uterung:

Kern der Schaltung ist ein relativ neuer integrierter Schaltkreis mit der Bezeichnung MAX 232. Hierbei hat man es geschafft, auf einem Chip zwei EmpfĂ€nger (Umwandlung +/-12V-Pegel auf 5V-Pegel) und zwei Sender (Umwandlung 5V-Pegel auf +/-12V-Pegel) zu vereinen. Der Clou ist aber, daß der Chip außerdem noch eine Schaltung integriert hat, die aus der Versorgungsspannung von +5V die oben angesprochenen Spannungen von -10V und +10V selbstĂ€ndig erzeugt, wobei als externe Beschaltung lediglich vier Kondensatoren benötigt werden. Obwohl der Baustein MAX 232 mit einem Preis von ca. DM 13,- teurer ist als die genannten 75188 und 75189, bin ich doch der Meinung, daß dieser kleine Nachteil durch den wesentlich einfacheren und kompakteren Aufbau mehr als ausgeglichen wird.

Die oben vorgestellte Anpaß-Schaltung kann auf eine kleine Lochrasterplatine aufgebaut werden. Wenn man dabei geschickt ist, kann man den gesamten Aufbau in das GehĂ€use des ST-Steckers unterbringen. Deshalb sollten unbedingt Tantal-Elkos verwendet werden.

BetriebszustÀnde

Hiermit sind die Steuerkommandos bzw. Meldewörter gemeint, die von der Schreibmaschine verstanden werden und entsprechende Aktionen auslösen.

Wir unterscheiden bei unserer Anwendung grundsÀtzlich folgende ZustÀnde der Schreibmaschine:

OFFLINE: Die Schreibmaschine ist “Schreibmaschine”, die auf der Tastatur vorhandene Online-Anzeige (LED) ist “aus”, der Computer kann keine Druckbefehle schicken.

ONLINE: Die Schreibmaschine ist “Drucker”, die Online-Anzeige (LED) ist “ein”, der Computer kann Druckbefehle schicken, Eingabe an der Schreibmaschinentastatur ist nicht mehr möglich.

Da die Schreibmaschine prinzipiell nur auf Anweisungen von außen reagiert, muß bei Direktanschluß vom Computer die gesamte SteuerungsfunktionalitĂ€t ausgefĂŒhrt werden, so auch z.B. das Umschalten vom Zustand OFFLINE in den Zustand ONLINE. Hierzu mĂŒssen nachfolgend aufgefĂŒhrte Kommandos verwendet werden, die alle eine LĂ€nge von zwei Bytes haben, wobei das erste Byte den Befehl definiert und das zweite Byte fĂŒr eine Versionsnummer reserviert ist (ĂŒblicherweise Version 00H):

  • A0H 00H: CLEAR-Kommando -> die Schreibmaschine geht in den OFFLINE-Zustand und wird wieder “Schreibmaschine”.
  • A1H 00H: START-Kommando —> Übergang zu ONLINE wird vorbereitet
  • A2H 00H: STX-Kommando —> Schreibmaschine wird “Drucker”, Zustand “ONLINE”, Übertragung von Druckbefehlen kann beginnen
  • A3H 00H: ETX-Kommando —> DatenĂŒbertragung wird unterbrochen und auf Fortsetzung gewartet
  • A4H 00H: ENQ-Kommando —> Schreibmaschine soll Zustand melden

Durch Senden dieser Kommandos kann man nun vom Computer aus zwischen den verschiedenen ZustĂ€nden umschalten, wobei die Reihenfolge der verschiedenen Befehle nicht willkĂŒrlich festgelegt werden kann, sondern genau eingehalten werden muß:

  • Umschalten OFFLINE —> ONLINE:

A0H 00H
A1H 00H
A4H 00H
A2H 00H

  • Umschalten ONLINE —> OFFLINE:

A3H 00H A0H 00H.

Je nach Schreibmaschinentyp und AusfĂŒhrungsstand befindet sich auf der Schreibmaschinentastatur eine spezielle Taste mit der Aufschrift “ONL” sowie zugehöriger LED. Bei anderen Varianten (z.B. SE 325 oder Gabriele 9009 neuesten AusfĂŒhrungsstandes) wurde die Taste zwar weggelassen, ihre Funktion jedoch durch Kombination anderer Tasten nachgebildet (vergleichen Sie hierzu bitte die Bedienungsanleitung der Schreibmaschine).

Funktionell macht diese Taste (oder die entsprechende Tastenkombination) nichts anderes, als die Schreibmaschine zu veranlassen, einen entsprechenden Tastencode (ONL-Taste = 01H) an die Interfacebox bzw. in unserem Fall an den Computer zu schicken. Es ist dann am GegenĂŒber, die Schreibmaschine durch obengenannte Befehlssequenz auf ONLINE zu schalten. FĂŒr das ZurĂŒckschalten in den OFFLINE-Zustand von der Schreibmaschinentastatur aus gibt es ebenfalls eine Tastenkombination, die je nach Schreibmaschinentyp unterschiedlich ist (z.B. CE-Taste bei SE325, MOD+ONL bei “alten” Gabriele 9009 und SE 310). Auch hier sei auf die entsprechenden Bedienungsanleitungen verwiesen.

Wie wir gesehen haben, muß die Umschaltung zwischen den verschiedenen BetriebszustĂ€nden stets vom Computer aus gesteuert werden. Dies kann im einfachsten Fall dadurch geschehen, daß man ein Programm startet, das nach der Konfiguration der Schnittstellenparameter (Baudrate etc.) einfach die obengenannte Befehlssequenz zur Schreibmaschine schickt. Komfortabler kann man es gestalten, wenn man eine Interruptroutine im Speicher des ATARI ST installiert, die dann angesprungen wird, wenn die Schreibmaschine eine Meldung gesendet hat. Nach Dekodierung dieser Meldung wird entweder in das ONLINE-oder das OFFLINE-Programm verzweigt. Dieser Trick erlaubt es, den Betriebszustand quasi an der Schreibmaschine einzustellen, obwohl die eigentliche Steuerintelligenz vom Computer ausgeht.

Druckerspezifische Codes

Wenn man die Schreibmaschine nun endlich in den ONLINE-Zustand gebracht hat, steht sie als Drucker zur VerfĂŒgung. Wie bereits einleitend erwĂ€hnt, ist es allerdings nicht möglich, jetzt die zu druckenden Zeichen einfach in ASCII-Code zu schicken. Vielmehr versteht die Schreibmaschine nur Befehlscodes, die sehr druckernah aufgebaut sind, wobei auch hier jeder Befehl aus zwei zusammengehörenden Bytes besteht. Nachfolgend möchte ich die verschiedenen Codes zusammenfassend auflisten:

- **direkte BewegungsausfĂŒhrung** entweder horizontal durch Bewegung des Schlittens (Carriage Return) oder vertikal durch Drehen der Schreibwalze (Linefeed).
  1. BYTE Bit 0 —-> )
    Bit 1 —> )> höherwertiges Byte fĂŒr Angabe der Bewegungsstrecke
    Bit 2 —> )> in 1/120"- bzw. l/96"-Schritten
    Bit 3 —> )
    Bit 4 —> “0” fĂŒr Horizontalbewegung, “1” fĂŒr Vertikalbewegung
    Bit 5 —> “0” fĂŒr rechts/vorwĂ€rts, “1” fĂŒr links/ rĂŒckwĂ€rts
    Bit 6 —> “1” fĂŒr Befehlscode
    Bit 7 —> “1” fĂŒr Befehlscode

  2. BYTE Bit 0 —>)
    Bit 1 ->)
    Bit 2 —>)
    Bit 3 —>)> niederwertiges Byte fĂŒr Angabe der Bewegungsstrecke
    Bit 4 —> )> in 1/120"- bzw. l/96"-Schritten
    Bit 5 —> )
    Bit 6 —> )
    Bit 7 —> )

  • Grundstellung/Reset veranlaßt einen Grundstellungslauf der verschiedenen Schrittmotoren (z.B. der Druckschlitten bewegt sich auf Grundposition-Nullgrad am linken Maschinenrand).
  1. BYTE Bit 0 —> “0”
    Bit 1 — >“1”
    Bit 2 —> “0” Bit 3 —> “0”
    Bit 4 —> “0”
    Bit 5 —> “0”
    Bit 6 —> “0”
    Bit 7 —> “1”
  2. BYTE Bit 0—>“1”
    Bit 1 —> “1” fĂŒr Grundstellungslauf des Schlittenmotors
    Bit 2 —> “1” fĂŒr Grundstellungslauf des Typenradmotors
    Bit 3 —> “1” fĂŒr Grundstellungslauf des Farbbandmotors
    Bit 4 —> “0” Bit 5 —> “0”
    Bit 6 —> “0”
    Bit 7 —> “0”
  • Horizontalschrittdefinition legt die Anzahl von 1/120"-Schritten fest, die der Druckschlitten jedesmal nach dem Zeichenausdruck ausfĂŒhrt (Schreibteilung)
  1. BYTE Bit 0— >“0”
    Bit 1 —> “0”
    Bit 2 —> “0”
    Bit 3 —> “0”
    Bit 4 —> “0”
    Bit 5 —> “0”
    Bit 6 —> “0”
    Bit 7 —> “1”
  2. BYTE Bit 0 —> )
    Bit 1 —> )
    Bit 2 —> )
    Bit 3 —> )> Übergabe der gewĂŒnschten Schrittzahl (zwischen
    Bit 4 —> )> 0 und 255 Schritten einstellbar)
    Bit 5 —> )
    Bit 6 —> )
    Bit 7 —> )
  • Schreibzeichen legt das zu druckende Zeichen fest. Definiert werden mĂŒssen hierbei der Typenradcode sowie die spezifische AbschlagsstĂ€rke.
  1. BYTE Bit 0 —>)
    Bit 1 —> )
    Bit 2 —> )
    Bit 3 —> )> Typenradcode (Speichennummer)
    Bit 4 —> )
    Bit 5 —> )
    Bit 6 —> )
    Bit 7 —> “0”
  2. BYTE Bit 0 —> )
    Bit 1 —>)
    Bit 2 —>)
    Bit 3 —> )> AbschlagsstĂ€rke
    Bit 4 —> )
    Bit 5 —> )
    Bit 6 —> “0” fĂŒr Bewegung nach rechts, “ 1" fĂŒr Bewegung nach links
    Bit 7 —> “0” fĂŒr UnterdrĂŒckung der anschließenden Horizontalbewegung
  • Space (Leerschritt) erlaubt eine “kleine” Schlittenbewegung nach rechts. Wird als Schrittzahl der Wert “0” ĂŒbergeben, erfolgt eine Bewegung entsprechend der eingestellten Schreibteilung.
  1. BYTE Bit 0—>“1”
    Bit 1 —> “1”
    Bit 2 —> “0”
    Bit 3 —> “0”
    Bit 4 —> “0”
    Bit 5 —> “0”
    Bit 6 —> “0”
    Bit 7 —> “1”
  2. BYTE Bit 0 —> )
    Bit 1 —> )
    Bit 2 —> )
    Bit 3 —> )> Übergabe der gewĂŒnschten Anzahl
    Bit 4 —> )> von 1/120"-Schritten
    Bit 5 —> )
    Bit 6 —> )
    Bit 7 —>)
  • Backspace bildet das GegenstĂŒck zu Space und veranlaßt eine Schlittenbewegung nach links
  1. BYTE Bit 0 —> “0”
    Bit 1 —> “0”
    Bit 2 —> “1”
    Bit 3 —> “0”
    Bit 4 —> “0”
    Bit 5 —> “0”
    Bit 6 -> “0”
    Bit 7 —> “1”

  2. BYTE Bit 0 —> )
    Bit 1 —> )
    Bit 2 —> )
    Bit 3 —> )> Übergabe der gewĂŒnschten Anzahl
    Bit 4 —> )> von 1/120"-Schritten
    Bit 5 —> )
    Bit 6 —> )
    Bit 7 —> )

Mit den oben aufgelisteten Befehls-Sequenzen kann die Schreibmaschine alle denkbaren Druckerfunktionen ausfĂŒhren. Zu beachten ist jedoch, daß alle “Intelligenz" vom Computer ausgehen muß und die Schreibmaschine sich auf die AusfĂŒhrung der empfangenen Druckbefehle beschrĂ€nkt. Der Computer muß sich beim “normalen" Drucken beispielsweise merken, auf welcher Position der Druckschlitten steht, damit dieser bei einem Carriage-Return mit der richtigen Anzahl von Schritten nach links bewegt wird. Lediglich fĂŒr die Horizontalbewegung nach dem Abschlag eines Zeichens besitzt die Schreibmaschine eine gewisse SelbstĂ€ndigkeit: Man definiert durch Angabe der Variablen “X” in der Befehlssequenz 83H + X die Anzahl der 1/ 120"-Schritte, die die Schreibmaschine dann nach jedem Zeichenabdruck selbstĂ€ndig ausfĂŒhrt und legt somit die Schreibteilung fest (X=12 —> Teilung 10/Elite oder X=10 —> Teilung 12/ Pica).

Die an der Schreibmaschine eingestellten und durch LEDs auf der Tastatur angezeigten Parameter wie Zeilenabstand, Schreibteilung und AbschlagsstÀrke sind im Druckerbetrieb unwirksam.

Zwischenbilanz

Mit den aufgefĂŒhrten Daten bzw. Informationen ist es nun möglich, die Schreibmaschine in den Zustand ONLINE zu schalten, und ĂŒber die entsprechenden Schrittmotoren alle denkbaren Aktionen zu realisieren. Um die graue Theorie mit etwas praktischem Leben zu erfĂŒllen, habe ich ein kleines Demonstrationsprogramm in GFA-BASIC erstellt, das die bisher besprochenen Funktionen in sinnvoller Kombination einsetzt. Das Programm ist als Anregung fĂŒr weitergehende Experimente gedacht und kann natĂŒrlich beliebig ergĂ€nzt und modifiziert werden. Da man ĂŒber die Schreibwalze eine vertikale und ĂŒber den Druckschlitten eine horizontale Bewegung steuern kann, wĂ€re es beispielsweise denkbar, durch Befestigung eines Stiftes am Druckkopf einen Plotter nachzubilden. Der Stift kann dann in 1/120“ bzw. 1/96 “ Schritten frei ĂŒber das Papier bewegt werden.

In der nĂ€chsten Ausgabe werden wir dann ein Programm vorstellen, das die heute vorgestellten Befehlssequenzen zu einer leistungsfĂ€higen Emulation der TA-Interfacebox zusammenfĂŒgt.

' ************************************************** ' * DEMOPROGRAMM fĂŒr Ansteuerung der Gabriele 9609 * ' * ĂŒber serielle Schnittstelle * ' * * ' * Copyright ST-Computer - Ausgabe 7-1988 * ' ************************************************** ' Zuerst alle störenden 0.24-Interrupts ausschalten Dummy=Xbios(26,1) Dummy=Xbios(26,10) Dummy=Xbios(26,12) Dummy=Xbios(26,9) Dummy=Xbios(26,2) Dummy=Xbios(26,ll) ' ' Schnittstelle auf 4800 Baud, 1 Start- und 1 Stopbit ' 8 Datenbits und kein Parity-Bit einstellen !! ' Dummy=Xbios(15,2,2,-1.-1.-1,-1) ' ' Schreibmaschine auf Online schalten Gosub Online Print "Die Maschine ist ONLINE" ' auf Eingabe warten Print Input "Bitte Return-Taste drĂŒcken ",A$ ' 500 Einzel-Schritte zu 1/120 inch nach rechts fahren For R=1 To 500 Gosub Micro_step Print "Die Maschine steht jetzt auf Position Nr. ";R;" !!" Next R ' Print ' 500 Einzel-Schritte zu 1/120 inch nach links fahren For R=500 To 200 Step -1 Zeichen=&H84 Gosub Schr Zeichen=1 Gosub Schr Print "Die Maschine steht jetzt auf Position Nr. ";R;" !!" Next R Print ' ' Jetzt ein paar direkte BewegungsausfĂŒhrungen ' Zuerst 1000 Schritte (1/120 inch) nach rechts als Absolutbewegung ' Grundcode fĂŒr horiz. Bewegung nach rechts in Zeichen Zeichen=&HC0 Schrittzahl=1000 Gosub Dir_bewegung Print "Ich habe den Schlitten jetzt um 1000/120 Zoll nach rechts bewegt!" Print Gosub Delay3 ' ' jetzt 750 Schritt (1/96 inch) nach unten als Absolutbewegung ' Grundcode fĂŒr wert. Bewegung nach unten in Zeichen Zeichen=&HD0 Schrittzahl=750 Gosub Dir_bewegung Print "Ich habe das Papier jetzt um 750/96 Zoll nach unten bewegt!" Print Gosub Delay3 ' ' jetzt 800 Schritte (1/120 inch) nach links als Absolutbewegung ' Grundcode fĂŒr horiz. Bewegung nach links in Zeichen Zeichen=&HE0 Schrittzahl=800 Gosub Dir_bewegung Print "Ich habe den Schlitten jetzt um 800/120 Zoll nach links bewegt!" Print Gosub Delay3 ' ' jetzt 750 Schritte (1/960 inch) nach oben als Absolutbewegung ' Grundcode fĂŒr wert. Bewegung nach oben in Zeichen Zeichen=&HF0 Schrittzahl=750 Gosub Dir_bewegung Print "Ich habe das Papier jetzt um 750/96 Zoll nach oben bewegt!" Print Gosub Delay3 ' ' Print Input "Bitte Return-Taste drĂŒcken ",A$ ' Jetzt Schreibteilunng definieren Schreibteilung=12 Gosub Def_teilung ' ' Jetzt 10 Zeichen drucken For Schleife=1 To 50 Tr_code=65 Print "Ich drucke jetzt ein Zeichen ab !!!!!!!" Gosub Drucken Gosub Delay2 Gosub Delay Next Schleife Schrittzahl=50*120/Schreibteilung Gosub Cr_lf Print Input "Bitte Return-Taste drĂŒcken",S$ ' ' Jetzt 10 Zeichen in Fettschrift drucken Schreibteilung=13.333 Gosub Def_teilung For Schleife=1 To 50 Tr_code=65 Print "Ich drucke jetzt ein Zeichen in Fettschrift !!" Gosub Drucken_fett Gosub Delay2 Gosub Micro_step Gosub Delay2 Gosub Drucken Gosub Delay2 Next Schleife Schrittzahl=50#120/Schreibteilung Gosub Cr_lf ' Print Input "Bitte Return-Taste drĂŒcken",Z$ Gosub Offline Print "OFFLINE" Restore 5top ' ' Procedure Les Aux=Peek(&HFFFA2B) Erg=Peek(&HFFFA2F) Return ' Procedure Schr Gosub Delay Do Stat=Peek(&HFFFA0) Exit If 5tat=0 Print "muß warten !!!!!!!!!!!!!!!!!" Loop Spoke &HFFFA2F,Zeichen Return ' Procedure Delay For Del=0 To 200 Next Del Return ' Procedure Delay2 For Del=0 To 1000 Next Del Return ' Procedure Delay3 For Del=0 To 10000 Next Del Return ' Procedure Online Nochmal: Flag=1 Do Read Zeichen Exit If Zeichen=&HFF Merk=Zeichen Gosub Schr Gosub Delay Gosub Les Print Hex$(Merk),Hex$(Erg) If Erg=&HA4 Flag=1 Endif Loop Data &a0,0,&a1,0,&a4,0,&a2,0,&ff Restore Return ' Procedure Drucken 'hier wird ein Zeichen ausgedruckt Zeichen=Tr_code And &H7F ' Typenradcode uebertragen Gosub Schr Zeichen=&H17 Or &H80 ' Richtungserkennung und Abschlagstaerke uebertragen Gosub Schr Return Procedure Drucken_fett ' hier wird ein Zeichen ausgedruckt Zeichen=Tr_code And &H7F ' Typenradcode uebertragen Gosub Schr Zeichen=&HF ' Bewegungsunterdrueckung und Abschlagstaerke uebertragen Gosub Schr Return ' Procedure Dir_bewegung ' befehlscode steht in Variable "Zeichen" ' Schrittzahl steht in Variable "Schrittzahl" Msb=Int(Schrittzahl/256) Lsb=Schrittzahl-Msb*256 Zeichen=Zeichen Or Msb Gosub Schr Zeichen=Lsb Gosub Schr Return ' Procedure Def_teilung Zeichen=&H80 Gosub Schr Zeichen=Int(120/Schreibteilung) Gosub Schr Return ' Procedure Cr_lf Zeichen=&HE0 Gosub Dir_bewegung Schrittzahl=16 Zeichen=&HD0 Gosub Dir_bewegung Return ' ' Procedure Offline Do Read Zeichen Exit If Zeichen=0 Merk=Zeichen Nochmal1: Gosub Schr Gosub Delay Zeichen=0 Gosub Schr Gosub Delay Gosub Les For L=0 To 10 Gosub Delay Next L Loop Data &a3,&a0,0 Return ' Procedure Micro_step Zeichen=&H83 Gosub Schr Zeichen=1 Gosub Schr Return ÂŽ

StĂŒckliste fĂŒr Gabriele 9009-Interface

Kondensatoren 2 x 10ÎŒF / 15V (Tantal)
2 x 4,7ÎŒF / 15V (Tantal)
1 x 8-pol. DIN-Stecker (Schreibmaschine)
1 x 25-pol. Sub-D-Buchse (Serieller Port ATARI ST) 1 x IC MAX 232

Wilfried Keller