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

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:

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:

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

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:

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

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):

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ß:

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

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 —> )

  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”
  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 —> )
  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
  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 —>)
  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
Aus: ST-Computer 07 / 1988, Seite 126

Links

Copyright-Bestimmungen: siehe Über diese Seite