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).
-
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
-
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).
- 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â
- 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)
- 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â
- 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.
- BYTE Bit 0 â>)
Bit 1 â> )
Bit 2 â> )
Bit 3 â> )> Typenradcode (Speichennummer)
Bit 4 â> )
Bit 5 â> )
Bit 6 â> )
Bit 7 â> â0â
- 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.
- 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â
- 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
-
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â
-
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