Changeset 214 in t29-www


Ignore:
Timestamp:
Nov 3, 2010, 7:00:20 PM (13 years ago)
Author:
sven
Message:

Entwicklungsprojekte: Text verbessert (Tippfehler, unverständliche Formulierung, Formatierung, Links).
h4-Stil eingeführt.

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • de/entwicklungsprojekte.shtm

    r212 r214  
    1515
    1616    <!--#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$" />
    2018</head>
    2119<body>
     
    3028<ul>
    3129  <li>Lochkarten vom PC ausstanzen</li>
    32   <li>Einen Anelex Drucker an einen Bull Gamma 10 Computer anschließen</li>
    3330  <li>Einen Lochkartenleser/stanzer "IBM 1442" an einen PC anschließen.</li>
    3431</ul>
    35 <br/>
    3632
    37          
     33
    3834<h3>Kommunikation zwischen Lochstreifengeräten und PC</h3>
    39          
     35
    4036<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>
    4137Das 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>
     
    5753Weitere 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.
    5854</p>
    59 <br/>
     55
    6056
    6157<h3>Einlesen von Lochkarten auf den PC</h3>
     
    7470<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 &ndash; das Programm läuft auf allen verbreiteten Plattformen/Betriebssystemen (Microsoft Windows, GNU/Linux, Apple OS X, usw.).</p>
    7571
    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
    7875
    7976<h3>Anpassung eines ANELEX Druckers an einen BULL-Computer</h3>
    8077
    8178<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>
     79Ein 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>
    8380Wie 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>
     81Offensichtlich 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>
    8582 
    86 <b>Teil 1: Kommunikation zwischen Anelex Drucker und PC</b><br><br>
     83<h4>Teil 1: Kommunikation zwischen Anelex Drucker und PC</h4>
    8784
    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, so dass 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 genommen 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>
    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>
     86Die Schwierigkeit entsteht auch beim Anelex-Projekt erst dadurch, dass die Unterlagen nur unvollständig in niederländischer Sprache existieren. <br>
     87Die 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>
     88Theoretisch 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.
     89Es 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>
    9390
    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>
    9592
    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
    9795<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>
    10099
     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>
    101102
    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.
    105104Das 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>
     105Die 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>
    107110
    108111</div><!-- content -->
  • shared/css/fresh.css

    r209 r214  
    826826}
    827827
    828 #content h2, #content h3 {
     828#content h2, #content h3, #content h4 {
    829829    /* Seit 04.01.2010: Neues Ueberschriftenlayout. Soll aber nur
    830830       auf Homepage genutzt werden, nicht etwa auf dev. oder so...! */
     
    838838    /* Und das gleiche auch fuer Unter-Ueberschriften */
    839839    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;
    840848}
    841849
Note: See TracChangeset for help on using the changeset viewer.
© 2008 - 2013 technikum29 • Sven Köppel • Some rights reserved
Powered by Trac
Expect where otherwise noted, content on this site is licensed under a Creative Commons 3.0 License