Changeset 214 in t29-www
- Timestamp:
- Nov 3, 2010, 7:00:20 PM (13 years ago)
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
de/entwicklungsprojekte.shtm
r212 r214 15 15 16 16 <!--#include virtual="/de/inc/head.inc.shtm" --> 17 <meta name="keywords" lang="de" content="" /> 18 <meta name="t29.Id" content="$Id$" /> 19 <meta name="t29.date" content="04.10.2009" /> 17 <meta name="t29.SVN" content="$Id$" /> 20 18 </head> 21 19 <body> … … 30 28 <ul> 31 29 <li>Lochkarten vom PC ausstanzen</li> 32 <li>Einen Anelex Drucker an einen Bull Gamma 10 Computer anschließen</li>33 30 <li>Einen Lochkartenleser/stanzer "IBM 1442" an einen PC anschließen.</li> 34 31 </ul> 35 <br/>36 32 37 33 38 34 <h3>Kommunikation zwischen Lochstreifengeräten und PC</h3> 39 35 40 36 <p> Möchte man Lochstreifendateien versenden oder abändern, so ist das Einlesen von Lochstreifen in den Speicher eines PC unabdingbar. Umgekehrt ist es notwendig, veränderte oder per E-Mail erhaltene Dateien auf Lochstreifen auszustanzen, so dass diese auf historischen Computern "laufen" können.<br> 41 37 Das Ziel des "<b>Paper Tape Projects</b>" ist es, Lochstreifen mit heutigen Computern einlesen, "bearbeiten" und ausstanzen zu können. Dazu wurden vergleichsweise neue Lochstreifengeräte verwendet, die bereits über eine parallele Schnittstelle (Centronics) angesprochen werden, auf der sie auf TTL-Niveau kommunizieren (hier: Lochstreifenleser Ghielmetti FER 201, Lochstreifenstanzer FACIT 4070). Leider sind diese Geräte aber noch nicht neu genug, um dem Centronics-Quasi-Standard der 1970er-Jahre zu entsprechen (erst 1994 als IEEE-1284 standardisiert). Deswegen kann man nicht einfach ein gewöhnliches paralleles Druckerkabel verwenden, um einen PC mit dem Lochstreifengerät zu verbinden.</p> … … 57 53 Weitere Details zu diesem Projekt mit umfassenden Hintergrundinformationen gibt es auf der englischsprachigen Homepage, <a class="go" href="http://dev.technikum29.de/projects/wiki/PaperTapeProject">The Paper Tape Project</a>. Alle Quelltexte wurden unter einer Open Source-Lizenz veröffentlicht und können im <a href="http://dev.technikum29.de/projects/browser/paper-tape-project/trunk">technikum29.de Subversion-Repositorium</a> eingesehen werden. 58 54 </p> 59 <br/> 55 60 56 61 57 <h3>Einlesen von Lochkarten auf den PC</h3> … … 74 70 <br/>Für den Computer haben wir den <i>Punch Card Editor</i> geschrieben, ein grafisches Programm, welches die Lochkarten vom Mikrocontroller entgegen nimmt und grafisch aufbereitet. Erst dieses Programm kann auch mit den einschlägigen Textkodierungen (IBMs H9-Code, Bull-Code) zwischen binären Lochkarten und ASCII-Text übersetzen. Auf diese Weise können eingelesene Kartenstapel bearbeitet und abgespeichert werden, um etwa ihren Empfänger per Mail auf der anderen Seite des Globus zu erreichen. Natürlich bietet das komfortable Programm auch die notwendige Infrastruktur, um Lochkarten später auszustanzen. An dieser Stelle können wir die Früchte des Einsatzes vom Mikrocontroller ernten – das Programm läuft auf allen verbreiteten Plattformen/Betriebssystemen (Microsoft Windows, GNU/Linux, Apple OS X, usw.).</p> 75 71 76 <p>Für weitere Details zu diesem Projekt befasst sich die englischsprachige Homepage, <a class="go" href="http://dev.technikum29.de/projects/wiki/PunchCardProject">The Punch Card Project</a>. Alle Quelltexte wurden unter einer Open Source-Lizenz veröffentlicht und können im <a href="http://dev.technikum29.de/projects/browser/punch-card-project/trunk">technikum29.de Subversion-Repositorium</a> eingesehen werden. 77 <br/>Für technisch Interessierte haben wir die Publikation <a href="http://dev.technikum29.de/projects/raw-attachment/wiki/Papers/Lochkartenverarbeitung%20per%20Computer.pdf" class="go">Lochkartenverarbeitung per Computer</a> veröffentlicht (26 Seiten), die interessante Details der Implementierung, Modellierung von Lochkarten auf Mikrocontroller und Computer, Umsetzung des Protokolls, uvm. erläutert.</p><br> 72 <p>Mit weiteren Details zu diesem Projekt befasst sich die englischsprachige Homepage, <a class="go" href="http://dev.technikum29.de/projects/wiki/PunchCardProject">The Punch Card Project</a>. Alle Quelltexte wurden unter einer Open Source-Lizenz veröffentlicht und können im <a href="http://dev.technikum29.de/projects/browser/punch-card-project/trunk">technikum29.de Subversion-Repositorium</a> eingesehen werden. 73 <br/>Für technisch Interessierte haben wir die Publikation <a href="http://dev.technikum29.de/projects/raw-attachment/wiki/Papers/Lochkartenverarbeitung%20per%20Computer.pdf" class="go">Lochkartenverarbeitung per Computer</a> veröffentlicht (26 Seiten), die interessante Details der Implementierung, Modellierung von Lochkarten auf Mikrocontroller und Computer, Umsetzung des Protokolls, uvm. erläutert.</p> 74 78 75 79 76 <h3>Anpassung eines ANELEX Druckers an einen BULL-Computer</h3> 80 77 81 78 <p>Dieses Projekt besteht aus dem anspruchsvollen Vorhaben, einen Rechner (Mitte der 1960er Jahre), zu dem der eigentliche Drucker defekt und unvollständig ist, mit einem völlig anderem Drucker aus der gleichen Zeit auszustatten. Was auf den ersten Blick recht einfach erscheint, ist in der Realität ein außerordentlich kompliziertes Unterfangen. Im Gegensatz zu den Geräten ab den 90er-Jahren war man noch meilenweit von standardisierten Schnittstellen entfernt.<br> 82 Ein Interface muss also her, eine transparent agierende unidirektionale Übersetzung von Computer zu Drucker. Dabei ist einiges zu übersetzen: Der GAMMA 10 (G10) arbeitet nicht nur mit völlig anderen (negativen) logischen Pegeln, sondern hat auch eine gänzlich andere Vorstellung davon, wie man eine 120 Zeichen lange Zeile in einen Drucker überträgt, als der anzuschließende Anelex-Zeilendrucker. Die Druckdaten werden bei der G10 im Rechner selbst abgespeichert, während sie beim Anelex Drucker eben dort gespeichert werden. Dass beide Geräte unterschiedliche Zeichensätze verwenden, ist daneben ein verschwindend einfaches Problem.<br>79 Ein Interface muss also her, eine transparent agierende unidirektionale Übersetzung von Computer zu Drucker. Dabei ist einiges zu tun: Der GAMMA 10 (G10) arbeitet nicht nur mit völlig anderen (negativen) logischen Pegeln, sondern hat auch eine gänzlich andere Vorstellung davon, wie man eine 120 Zeichen lange Zeile in einen Drucker überträgt, als der anzuschließende Anelex-Zeilendrucker. Die Druckdaten werden bei der G10 im Rechner selbst abgespeichert, während sie beim Anelex Drucker eben dort gespeichert werden. Dass beide Geräte unterschiedliche Zeichensätze verwenden, ist daneben ein verschwindend einfaches Problem.<br> 83 80 Wie bereits im Lochkartenprojekt haben wir uns auch diesmal für Mikrocontroller entschieden, die einen sehr guten Kompromiss aus Flexibilität, Geschwindigkeit, Programmierbarkeit und zuletzt auch Preis bieten.<br> 84 Offensichtlich lässt sich das Problem in zwei Teilprobleme unterteilen, die einzeln für sich gelöst werden können. Dabei kümmert sich ein dezidierter Mikrocontroller um die Kommunikation mit dem Computer, übersetzt also die Ausgaben z.B. nach ASCII, während wir in einem zweiten, unabhängigen Mikrocontroller-Projekt daran arbeiten, den Drucker mit Eingaben zu füttern, ihn also von einem PC aus bedienen zu können.</p><br><br>81 Offensichtlich lässt sich das Problem in zwei Teilprobleme unterteilen, die einzeln für sich gelöst werden können. Im ersten Teilprojekt kümmert sich ein dezidierter Mikrocontroller um die Kommunikation mit dem Computer, übersetzt also die Druckausgaben nach ASCII, während wir in einem zweiten, unabhängigen Mikrocontroller-Projekt daran arbeiten, den Drucker mit Eingaben zu füttern, die zunächst von einem PC kommen.</p> 85 82 86 < b>Teil 1: Kommunikation zwischen Anelex Drucker und PC</b><br><br>83 <h4>Teil 1: Kommunikation zwischen Anelex Drucker und PC</h4> 87 84 88 <p>Der Anelex-Drucker ist vergleichsweise einfach aufgebaut die 120 Sechs-Bit-Zeichen einer Zeile werden parallel interruptgesteuert in den Drucker geladen, anschließend wird die Zeile gedruckt. Zeilenvorschübe werden, im Gegensatz zum G10-Computer, in den Zeichenstrom kodiert. Zu Beginn einer jeden Zeile steht, ob und gegebenenfalls wieviel Zeilenvorschübe auszuführen sind. Dadurch konnte man mehrere Zeilenvorschübe auf einen Schlag machen, wodurch man sich einen Zugewinn an Geschwindigkeit versprach. Zusätzlich sind die Ziffern auf der Druckwalze doppelt enthalten, sodass Zahlen in der doppelten Geschwindigkeit gedruckt werden können. <br>89 Die Schwierigkeit entsteht auch beim Anelex-Projekt dadurch, dass die Unterlagen nur unvollständig in niederländischer Sprache existieren. <br>90 Die Arbeitsweise des ersten Mikrocontrollers ist im Grunde genommenziemlich einfach und folgt einer strikten Zustandsabfolge: Zunächst wird eine Zeile per RS232 in einen Ringpuffer eingelesen. Diese wird dann Zeichen für Zeichen parallel an den Drucker übergeben. Nach diesem Vorgang wird der Druckbefehl gestartet und der Drucker benötigt die nächsten 30ms zum Drucken. In dieser Zeit wird die RS232-Flusskontrolle wieder freigeschaltet und in bester Zeitausnutzung empfängt der nun unbeschäftigte Mikrocontroller Daten vom Computer (bzw. später dem anderem Mikrocontroller). Diese klassische Interfacetechnik wird in der Umsetzung insofern interessant, als dass sämtliche Timings empirisch erprobt werden mussten. <br>91 Theoretisch ist es mit unserem 20Mhz-Mikrocontroller und geeignet schneller Baud-Rate problemlos möglich, den Drucker in seiner historisch superlativen [damals weltbesten] Geschwindigkeit auszureizen. Verbesserungspotential besteht etwa auch darin, mehrere Zeilen per Lookahead in eine Zeilenvorschubsanweisung zusammenzufassen. Heutige Standardzeichensätze kodieren stets nur einen Zeilenvorschub auf einmal. Aber auch die G10 kann einen Vierfachzeilenvorschub mit einem Befehl ausdrucken. Tiefer führende Funktionen wie die damals weit verbreiteten Formularbänder für vordefinierte absolute Zeilensprünge werden wir freilich nicht implementieren.92 Es sei zum Abschluss angemerkt, dass wir dank der Zwischenübersetzung zu heute geläufigem ASCII sowie standardkonformem RS-232 jede beliebige Hardware an den Drucker anschließen können. Einen Anfang macht der gute alte PC, der mit Terminal, Figlet- und ASCII-Art-Generator in unglaublicher Geschwindigkeit in Echtzeit generierte Textmassen auf Papier bringen kann.</p> <br><br>85 <p>Der Anelex-Drucker ist sehr einfach aufgebaut die 120 Sechs-Bit-Zeichen einer Zeile werden parallel interruptgesteuert in den Drucker geladen, anschließend wird die Zeile gedruckt. Zeilenvorschübe werden, im Gegensatz zum G10-Computer, in den Zeichenstrom kodiert. Zu Beginn einer jeden Zeile steht, wieviel Zeilenvorschübe auszuführen sind. Dadurch konnte man mehrere Zeilenvorschübe auf einen Schlag machen, wodurch man sich einen Zugewinn an Geschwindigkeit versprach. Zusätzlich sind die Ziffern auf der Druckwalze doppelt enthalten, sodass Zahlen in der doppelten Geschwindigkeit gedruckt werden können. <br> 86 Die Schwierigkeit entsteht auch beim Anelex-Projekt erst dadurch, dass die Unterlagen nur unvollständig in niederländischer Sprache existieren. <br> 87 Die Arbeitsweise des ersten Mikrocontrollers ist ziemlich einfach und folgt einer strikten Zustandsabfolge: Zunächst wird eine Zeile per RS232 in einen Ringpuffer eingelesen. Diese wird dann Zeichen für Zeichen parallel an den Drucker übergeben. Nach diesem Vorgang wird der Druckbefehl gestartet und der Drucker benötigt die nächsten 30ms zum Drucken. In dieser Zeit wird die RS232-Flusskontrolle wieder freigeschaltet und in bester Zeitausnutzung empfängt der nun unbeschäftigte Mikrocontroller Daten vom Computer (bzw. später dem anderem Mikrocontroller). Diese klassische Interfacetechnik wird in der Umsetzung insofern interessant, als dass sämtliche Timings empirisch erprobt werden mussten. <br> 88 Theoretisch ist es mit unserem 20Mhz-Mikrocontroller und geeignet schneller Baud-Rate problemlos möglich, den Drucker in seiner damals weltbesten Geschwindigkeit auszureizen. Verbesserungspotential besteht etwa auch darin, mehrere Zeilen per Lookahead in eine Zeilenvorschubsanweisung zusammenzufassen, denn heutige Standardzeichensätze kodieren stets nur einen Zeilenvorschub in ein Zeichen. Aber auch die G10 kann einen Vierfachzeilenvorschub mit einem Befehl ausdrucken. Tiefer führende Funktionen wie die damals weit verbreiteten Formularbänder für vordefinierte absolute Zeilensprünge werden wir freilich nicht implementieren. 89 Es sei zum Abschluss angemerkt, dass wir dank der Zwischenübersetzung zu heute geläufigem ASCII sowie standardkonformem RS-232 jede beliebige Hardware an den Drucker anschließen können. Einen Anfang macht der gute alte PC, der mit Terminal, Figlet- und ASCII-Art-Generator in unglaublicher Geschwindigkeit in Echtzeit generierte Textmassen auf Papier bringen kann.</p> 93 90 94 < b>Teil 2: Kommunikation des Bull-Gamma10-Rechners mit dem PC</b><br><br>91 <h4>Teil 2: Kommunikation des Bull-Gamma10-Rechners mit dem PC</h4> 95 92 96 <p>Dieses Teilprojekt ist wegen der hardwarenahen Implementierung der BULL-Druckerkommunikation das weitaus kompliziertere, dabei bilden der original-Drucker und der Computer eine eng verflochtene Einheit.</p> 93 <p>Dieses Teilprojekt ist wegen der hardwarenahen Implementierung der BULL-Druckerkommunikation das weitaus kompliziertere, denn der Original-Drucker und der Gamma10-Computer bilden eine eng verflochtene Einheit.</p> 94 97 95 <div class="desc-left"> 98 <img src="/shared/photos/rechnertechnik/drucktrommel.jpg" width="366" height="275" alt="Druckertrommel mit Kodierscheibe" /> 99 <p class="bildtext" style="width:366px;">Bild 1: Ausgebaute Trommel mit Kodierscheibe. Die optische Abtastung ist hier nicht zu sehen. Gewicht der Trommel: Ca. 50 Kg</p></div> 96 <img src="/shared/photos/rechnertechnik/drucktrommel.jpg" width="366" height="275" alt="Druckertrommel mit Kodierscheibe" /> 97 <p class="bildtext" style="width:366px;">Bild 1: Ausgebaute Trommel mit Kodierscheibe. Die optische Abtastung ist hier nicht zu sehen. Gewicht der Trommel: Ca. 50 Kg</p> 98 </div> 100 99 100 <p>Die ursprüngliche Kommunikation lief keineswegs zeilenweise und unidirektional ab, sondern war ein reger zeichenweiser Dialog zwischen Drucker und Computer: 101 <br>Im Original-Trommeldrucker der G10 rotiert ständig die Trommel, sodass zu jedem Zeitpunkt immer eine komplette Zeile mit einem Buchstaben gedruckt werden könnte. Auf der mitrotierenden Kodierscheibe wird dieser Buchstabe als 6bit-Binärcode ständig optisch abgegriffen und dem G10-Computer übermittelt. Dieser scannt daraufhin seinen Zeilenspeicher durch und sendet dem Drucker in einem seriellen Bitstream fuer jede der 120 Zeichenpositionen, ob das aktive Zeichen an der Position gedruckt werden soll oder nicht. Eine einzige komplette Zeile wird während einer ganzen Trommelumdrehung sukzessive mit den entsprechenden Zeichen aufgefüllt.</p> 101 102 102 <p>Die Kommunikation läuft etwa wie folgt ab:<br> 103 Der original Trommeldurcker der G10 überträgt die Zeichen, die gerade an der Druckposition vor den Druckhämmerchen stehen an den Computer. In einer Zeile steht dabei immer nur eine Zeichensorte. Das Zeichen wird durch die optische Abtastung einer mitrotierenden Kodierscheibe als Binärcode erzeugt und dem G10 Computer übermittelt (Bild 1). Dieser scannt seinen Druckspeicher, der zeilenweise angelegt ist, durch und übermittelt wiederum dem Drucker an welchen Positionen das Zeichen zu drucken ist. Eine komplette Zeile wird während einer ganzen Trommelumdrehung nach und nach mit entsprechenden Zeichen aufgefüllt.<br> 104 Der zweite Mikrocontroller simuliert bei dieser bidirektionalen Kommunikation den original G10 Drucker. Bei einer Druckgeschwindigkeit von 300 Zeilen pro Minute bleiben dem Controller nur einige Mikrosekunden pro 7-Bit-Zeichen als Übertragungszeit. Dieser Hochgeschwindigkeitstransport des Bitstreams muss synchron verarbeitet und in einem geläufigen Zeichensatz (ASCII) per RS232 Schnittstelle an den PC übertragen werden. Damit sind die im G10 stehenden Druckinformationen auch auf dem Bildschirm des PC sichtbar. Das weitgehend unbekannte Timing brachte dabei einen hohen experimentellen Arbeitsaufwand. 103 <p>Der Mikrocontroller simuliert bei dieser bidirektionalen Kommunikation den Originaldrucker. Bei einer Druckgeschwindigkeit von 300 Zeilen pro Minute bleiben dem Controller nur einige Mikrosekunden pro 7-Bit-Zeichen als Übertragungszeit. Dieser Hochgeschwindigkeitstransport des Bitstreams muss synchron verarbeitet werden und kann dann, übersetzt nach ASCII, per RS232-Schnittstelle an den PC (später den Anelex-Mikrocontroller) übertragen werden. Das weitgehend unbekannte Timing bringt dabei einen hohen experimentellen Arbeitsaufwand. 105 104 Das Wissen über diese komplizierte Datenübertragung konnten wir zu allem Überfluss keinen Manuals entnehmen, sondern mussten es anhand von Reverse Engineering, also Nachkonstruktion der Übertragungslogik, aus den französischsprachigen Schaltplänen rekonstruieren. Hier gebührt der Dank den ehemaligen BULL-Fachkräften und engagierten Mitarbeitern im Museum Herr Naumann und Herr Balz.<br> 106 Die Pegelübersetzung zwischen Standard-TTL (Log 0 = 0V, Log 1 = +5V) und invertiertem geshiftetem Gamma 10-Pegel (Log 0 = 0V, Log 1 = -5V) haben wir in einer selbst entworfenen Mosfet-Schaltung für alle 30 Datenleitungen realisiert. (Wird fortgesetzt)</p> 105 Die Pegelübersetzung zwischen Standard-TTL (falsch = 0V, wahr = +5V) und invertiertem geshiftetem Gamma 10-Pegel (falsch = 0V, wahr = -5V) haben wir in einer selbst entworfenen Mosfet-Schaltung für alle 30 Datenleitungen realisiert.</p> 106 107 <p><i>Das Anelex-Gamma10-Projekt ist in aktiver Entwicklung; die Beschreibung wird fortgesetzt</i></p> 108 109 <p>Weitere Details werden auf der englischsprachigen Homepage, <a href="http://dev.technikum29.de/projects/wiki/BullAnalexProject" class="go">The Bull Anelex Project</a>, veröffentlicht. Dort werden mit zunehmendem Fortschritt auch Schaltpläne und die Quelltexte (Open Source) für Interessenten einsehbar sein.</p> 107 110 108 111 </div><!-- content --> -
shared/css/fresh.css
r209 r214 826 826 } 827 827 828 #content h2, #content h3 {828 #content h2, #content h3, #content h4 { 829 829 /* Seit 04.01.2010: Neues Ueberschriftenlayout. Soll aber nur 830 830 auf Homepage genutzt werden, nicht etwa auf dev. oder so...! */ … … 838 838 /* Und das gleiche auch fuer Unter-Ueberschriften */ 839 839 font-size: 140%; 840 margin: 2em 0 0.3em; 841 } 842 843 #content h4 { 844 font-weight: bold; 845 font-size: 100%; 846 border-bottom: 1px solid #aaa; 847 margin: 2.3em 0 1em; 840 848 } 841 849
Note: See TracChangeset
for help on using the changeset viewer.