35C3 Vorspannmusik Herald: Wer von euch im Publikum kennt noch den Bildschirmtext? Bitte mal aufzeigen! Und wer von euch kennt noch den BTX-Hack vom CCC? Sehr schön, wir haben hier also ein Fachpublikum sitzen für einen Fachvortrag. Und der Vortragende, das ist Christian Berger. Christian Berger ist Elektroingenieur der Nachrichtentechnik und das aus Leidenschaft, und seine besondere Vorliebe gilt antiken Technologien, wie etwa dem Bildschirmtext. Und in diesem Vortrag wird er euch gleich erklären, wie das ganze damals funktioniert hat, und was für Aspekte dieser Technologie man vielleicht für einen Webservice wiederverwenden kann. Einen herzlichen Applaus bitte für Christian Berger. Applaus Christian: So also guten Morgen erstmal! Der Vortrag ist zugegeben etwas radikaler, er geht von den Grundlagen aus, getreu dem Motto Refreshing Memories beschreibe ich hierbei quasi die Dinge, die nicht in den Standarddokumenten drin stehen, so dass man mal die Grundlagen hat. Ich kann da aber bisher schneller darüber eingehen. Also erstmal die absoluten Grundlagen. Binäre Daten: man immer zwei Zustände, 1 und 0. Die werden dann irgendwie darstellt. Bei BTX in dem Fall da das traditionell über ein FSK-Modem geht, wird es über eine Tonhöhe, also über die Frequenz von dem Ton beschrieben. Und da gibt's zwei Kanäle. Der eine Kanal, der Forward-Kanal, der hat 1200 Bits pro Sekunde und der Backward-Kanal hat 75 Bits pro Sekunde. Um da jetzt genau zu sagen, wann gilt der Zustand, verwendet man bei BTX die asynchrone Datenübertragung, sprich man lässt es quasi immer im Zustand 1, und wenn man was schicken will, wechselt man in den Zustand 0, und das ist quasi der Beginn des sog. Startbits, und man weiß dann, wann die nächsten Bits anfangen und enden. Und somit kann man eben z. B. 8 Bits übertragen bei BTX, und dann ein Stoppbit übertragen, so dass die Hardware auch noch feststellen kann, ob nicht vielleicht irgendwie ein Fehler passiert ist, und auch Zeit hat, um es weiter zu verarbeiten. Damit wir das effizienter schreiben können, tun wir einfach vier Bits in ein Hexadezimalzeichen. Dass ist auch wichtig, wenn man die Standards verstehen möchte, da ist es nämlich immer quasi in Vier-Bit-Gruppen beziehungsweise Hexadezimalzahlen untergliedert, damit man es versteht. Man möchte jetzt natürlich nicht nur Zahlen oder einzelne Bits übertragen, sondern Buchstaben oder Texte. Dafür gibt es den ASCII-Code, der hier in den Spalten 2 bis 7 druckbare Zeichen hat, also Buchstaben, Zahlen, Sonderzeichen; und hier in den ersten beiden Spalten links spezielle Steuerzeichen, die besondere Bedeutung haben und eben je nach Standard, der dann drüber liegt, unterschiedlich benutzt werden. Bei BTX wird z. B. schon mal direkt über der Modemschicht eine Fehlerkorrektur gemacht. Sprich man überträgt die Daten, bzw. man teilt die Daten in Blöcke ein, setzt dann davor ein STX-Zeichen, dahinter ein ETX-Zeichen, so dass man weiß, wo der beginnt und endet. Dann überträgt man eine Prüfsumme und das Terminal bestätigt dass dann. Die Idee dahinter ist: wenn bei der Übertragung ein Fehler passiert, dann kann das Terminal sagen: NAK, da ist ein Fehler passiert. Dann kann der Zentralrechner quasi die Daten noch mal schicken. Und somit kriegt man auch über schlechtere Verbindungen eine fehlerfreie Verbindung. Das ist vor allen Dingen jetzt auch bei VoIP wichtig, weil da kann es manchmal sein, dass wenn der Takt vom ATA und der Takt vom Zentralrechner auseinanderdriften, dann sind irgendwann mal zu wenig oder zu viele Samples drin, und dann muss er entweder Stille einfügen oder Samples wegwerfen, und das gibt natürlich dann Bitfehler. Und deswegen ist es heutzutage relativ wichtig dass das drin ist. Zur Not geht es im LAN auch ohne, aber es ist schon besser mit. Dann die grundlegende Sache: manche kennen ja vielleicht so Web Services, so traditionelle, bzw. das World Wide Web. Da ist es so: da wird ein Dokument komplett übertragen und dann durch den Client dargestellt. Ein Terminal hingegen hat eine ganz andere, hat einen ganz anderen Gedanken dahinter, man hat quasi ein Dokument, zum Beispiel traditionell ein Blatt Papier, und man schickt dann Befehle an das Terminal, quasi z. B. das Zeichen "A", und das Terminal druckt dann auf dieses Dokument ein "A". Dadurch ist es sehr einfach, Änderungen an dem Dokument durchzuführen. Das ist für Anwendungen sehr praktisch. Kann man damit sehr leicht machen, während man im Web z. B. die komplette HTML-Seite nochmal übertragen müsste - nach der reinen Lehre - auch wenn man jetzt irgendwie nur ein Zeichen ändern wollte. Jetzt wie schaut dieses Dokument aus? Als man ursprünglich begonnen hat mit der Idee Bildschirmtext zu machen, hat man - war RAM noch extrem teuer. Deswegen hat man sich überlegt, nimmt man doch 7 Bit pro Zeichen, das geht dann, da gab's schon entsprechende Chips, die genügend Speicher hatten. Und man wollte aber trotzdem farbige Grafiken haben, bzw. farbigen Text. Deswegen hat man sich hierbei überlegt, man sieht hier die Wörter, und dazwischen sind Steuerzeichen. Jedes Steuerzeichen belegt einen Platz im Bildschirmspeicher bzw. eine Zeichenposition. Da man de facto eh jetzt ein Wort vielleicht in einer Farbe haben möchte, oder z. B. ein Wort in doppelter Höhe oder blinkend machen möchte - Blinken sieht man jetzt natürlich nicht - ist es keine große Einschränkung und das ist tatsächlich auch das, was im Videotext auch heute noch verwendet wird. Ursprünglich war auch der Gedanke, dass man an den schon vorhandenen Videotext- Dekoder im Fernsehgerät quasi noch einen Mikroprozessor und ein Modem dranhängt, um damit dann Bildschirmtext zu machen, was natürlich die Kosten und die Verbreitung enorm beflügelt hätte. Minitel macht es meines Wissens nach auch so, also mit dem einfacheren Verfahren. Aber man hat festgestellt, also gut, bei Videotext muss man quasi immer die komplette Seite übertragen. Das ist natürlich jetzt, wenn man nur 1200 Bits pro Sekunde hat, eine relativ mühselige Sache. Deswegen gibt's Cursor-Steuerzeichen. Es gibt da immer einen gedachten Cursor. den kann man bewegen, in dem Fall nach links, rechts, oben, unten. Man kann die Bildschirm komplett löschen. Man kann ganz nach links gehen auf der Zeile und man kann zu einer bestimmten Position gehen. Damit kann man sehr effizient dann eben bestimmte Bereiche vom Bildschirm aktualisieren, ohne den Rest zu ändern. Aber jetzt kamen plötzlich die 80er Jahre auf. Arbeitsspeicher war relativ, er ist billiger geworden und es war absehbar, dass Arbeitsspeicher billiger wird, das heißt man hat sich dann leisten können nicht nur 7 Bit pro Zeichen zu verwenden, sondern 32 Bit. Damit kann man dann für jedes Zeichen einzeln die Farbe bestimmen, auch die Hintergrundfarbe. Man kann benutzerdefinierte Zeichen machen, also extra nochmal Zeichen, die man beliebig definieren kann, um Grafiken zu machen. Man kann auch die Größe einstellen. Dann kam auch die Laser Disk auf, so als ewig futuristisches Medium. Man dachte sich damals, das man vielleicht einen Laser-Disk-Player an den Bildschirmtextdecoder anschließt, und wenn man dann im Versand, also im $versandhaus bestellt, kriegt man anstelle vom Katalog eine Laser Disk, die legt man ein. Man wählt sich dann in BTX ein und sieht dann quasi die Preise und die Produktbeschreibungen, die kommen über die Telefonleitung, aber die Bilder im Hintergrund kommen quasi von der Laser Disc. Oder die nächste Stufe dann wenn der Glasfaserausbau Mitte der 90er Jahre fertig ist... Gelächter Applaus Ja, damals war man noch optimistisch und damals gab es auch noch keinen Schwarz-Schilling. Damals, also, dann war eben auch der Gedanke, dass man vielleicht sogar komplette Hintergrund-Videos überträgt. Weil es war damals schon dafür ausgelegt, dass man Video überträgt mit 280 Megabit downstream, 140 Megabit upstream, und da kann man natürlich ein Videosignal einfach übertragen, das dann von der Zentrale kommt. Deswegen wollte man da mehr machen, und hat da auch ziemlich viel dann reingestopft und auch ziemlich viel in die Standards gemacht. Man möchte da jetzt mehr Zeichen darstellen, man möchte nicht bloß einen deutschen Zeichensatz haben, oder einen amerikanischen, sondern man möchte eigentlich Texte in allen europäischen Sprachen darstellen können. An chinesischer oder sowas hat damals noch niemand gedacht. Deswegen möchte man mehr als die 96 Zeichen vom ASCII-Code darstellen. Deswegen hat man sich überlegt, den Zeichenvorrat von 256 Zeichen, das sind ja 96 beim ASCII-Code als druckbare Zeichen definiert, dass man nochmal ein gleiches Fenster daneben macht, quasi mit dem höchstwertigen Bit gesetzt. Somit hat man zwei Fenster, in denen Zeichensätze quasi einblenden konnte. Sprich man sagt dann z. B. Single Shift 2, dann wird hierbei das nächste Zeichen aus dem Zeichensatz G2 gewählt. Wenn ich jetzt also ein "$" haben möchte, schicke ich Single Shift 2 und den entsprechenden Code für das Dollarzeichen dann. Weiß ich jetzt nicht auswendig, aber es müsste eine Ziffer sein. Und da gibt es auch die Möglichkeit das als Locking Shift zu machen, dann bleibt es an der Stelle drin, oder nur als Single Shift. Und diese Zeichen hier, die so grau hinterlegt ist - ich weiß nicht, sieht man das? Nö, das sieht man ganz leicht - auf jeden Fall von - bis hier, das ist das letzte - die sind quasi Akzente. Man hat damals gesagt, Single Shift G2, dann das Zeichen und dann "A", da er ein "Ä" gedruckt, z. B. Damit kann man eben sich viel sparen, muss nicht so viel Zeichencodes machen, und vor allen Dingen, wenn ein Terminal jetzt kein "Ä" kann, dann kann es immer noch "A" drucken, und das ist lesbar. Es so weit ist es eigentlich noch ziemlich so, wie auch die üblichen VT100-Terminals, die auf unseren Rechnern als Emulation heute noch laufen. Aber wie macht man jetzt da Bild und Ton? Man hat sich damals auch schon überlegt, vielleicht direkt über den digitalen Kanal Bild und Ton zu machen, deswegen hat man sich überlegt dass man dann noch mal ein gedachtes Protokoll darüber schickt. Sprich man hat hierbei das Zeichen 1F, Unit Separator, und hier unten ist das was wir vorher schon gesehen haben, quasi der Sprung des Cursors zu einer bestimmten Position und das alles hier oben sind im Prinzip ungültige Positionen. Das heißt, ein sorgfältig produzierter Decoder würde sich dann quasi da abschalten und dann erst wieder sich einschalten wenn er wieder irgendwo in den Bildbereich springt. Was man darüber aber machen kann sind Zusatzfunktionen. Zum Beispiel also - es gibt hierbei die Möglichkeit - ich weiß nicht, ob das irgend jemand benutzt hat - dass das Terminal sich selbst meldet bzw. das man anfragen kann, was denn das Terminal kann. Es gibt da die User Defined Characters, die im Bildschirmtext intensiv genutzt wurden. Damit kann man dann Grafiken machen. Die Zeichen sind standardmäßig in zwölf mal zehn Pixel, was auf Heimcomputern ein bißchen ein Problem war. Also auf dem C64 hat man dass nicht gut darstellen können. Man hat aber auch niedrigere Auflösungen nehmen können, um mehr Farben - da gab es alle Spielarten. Man hat die Palette neu definieren können: man hatte quasi 4x8 Farben zur Verfügung und die konnte man beliebig auswählen aus einer Palette von 4096 Farben. Also richtig schöne Farbgrafiken damit machen. Man kann hier mit Define Format kann man - bin ich mir jetzt gerade nicht sicher - aber Timing Control, damit kann man Delays machen, weil wenn man jetzt eine schnellere Verbindung hat, z. B. ISDN, dann möchte man eventuell beim Bildaufbau mal kurz warten und anhalten und dann weiter machen. Man kann auch die Bildschirmgröße sogar einstellen, das ist tatsächlich im Standard vorgesehen, im Prinzip beliebig groß. Man würde dann halt hierbei anstelle von einem Zeichen mehrere Zeichen hernehmen, wenn die Bildgröße jetzt größer ist als hier quasi vorgesehen ist. Ich glaub, das Limit ist irgendwo - das sind normalerweise alphabetische Zeichen hier. Und hier sind die Features, die in Deutschland nicht eingesetzt worden sind. Also das ist Geometriedaten, Vektorgrafiken in 2D und 3D. Das österreichische System MUPID hat 2D-Grafik unterstützt, 3D weiß ich nicht ob es irgendjemand unterstützt hat. Und hier Photographic Pixel und Table Data, das ist quasi so eine Art Proto-JPEG, mit dem man dann Hintergrundgrafiken darstellen kann. Die Idee dahinter war man hat quasi mehrere Ebenen - mehrere Bildebenen hintereinander und immer wenn die vorherige transparent ist, wird die dahinterliegende angezeigt. Und es gab auch - wobei das ich glaub nicht ganz definiert war - die Möglichkeit Sound zu übertragen in so 80er-Jahre Codecs, die dann so 720 Kilobit pro Sekunde gebraucht haben für gute Qualität - in Mono, mit denen man heute auch im Prinzip dann OPUS machen könnte, wenn man neue Standards machen würde. Telesoftware und Transparente Daten ist mehr oder weniger selbst erklärend. Hier sind die Standards, wo die ganzen Details definiert sind. Es gibt hier auch schöne Bücher dazu. Das Buch hier z. B. hat die Codesequenzen drin. Und hier sind auch noch zwei Websites. Und ich möchte noch Philipp Maier und Michael Steil noch danken dafür dass - die haben quasi die Software geschrieben, die über der Link-Layer- Schicht läuft auf den Terminals beim Vintage Computing drüben. Und hier sind noch meine Kontaktdaten. Herald: Ja vielen herzlichen Dank, einen großartigen Applaus würde ich sagen! Applaus Herald: Da wir eben schon herausgefunden haben, dass wir hier ein Fachpublikum vor uns sitzen haben, würde ich gerne darum bitten, Fragen zu stellen. Wir haben jetzt noch 3, 4 Minuten Zeit für Fragen. Das heißt, der eine oder andere kann jetzt das loswerden, was er immer schon mal fragen wollte. Frage: In der Ankündigung hast du geschrieben, dass du planst, das irgendwie jetzt wieder aufzubauen. BTX ist ja tot, die Serverhardware ist wahrscheinlich komplett verschrottet worden, da gibt es nichts mehr, aber man könnte quasi die Servertechnik emulieren, neu bauen. Christian: Genau! Natürlich, wir haben tatsächlich auch im Vintage Computing die Servertechnik emuliert. Was auch noch der Gedanke ist: die Clients werden jetzt auch immer älter und immer kaputter. Man kann natürlich so was auch wunderbar in ein Badge bringen, und dann hat man den Vorteil, man muss nicht mehr irgendwie die Entwicklungsumgebung der Badge haben, sondern man kann einfach den kleinen Serverdienst starten irgendwo auf einem Raspberry Pi, der irgendwo rum steht, und dann mit einer kleinen Zehnertastatur, weil mehr braucht man für BTX für die Bedienung nicht, dann Dienste nutzen, dass wir darüber quasi dann interaktive Dienste haben kann, ohne dass man gleich eben sich einarbeiten muss in die Badge. Frage: Du hattest gesagt dass es Pläne gab für Hintergrundbilder von Laser Disc, gab es denn da überhaupt schon - oder oder über Glasfaser - gab es denn da überhaupt schon entsprechende Dateiformate? Also Laser - also für Bilder weiß es nicht, bei Videos war es ja so, Laser Disk ist ja ein analoges Videoverfahren... Christian: genau Frage: ... wie wäre das mit Video, mit Bildern gewesen? Christian: Also es gab - mit Laser Disk hätte man einfach ein Standbild genommen, das kann Laser Disc, und bei - also in Singapur soll angeblich der Datenkanal von der Zentrale über Funk gegangen sein und da war das dann quasi so ein JPEG-Format, das ist im Standard definiert, das ist ungefähr JPEG. Herald: Und damit sind wir am Ende von diesem Talk! Vielen Dank für eure Aufmerksamkeit, für eure Fragen und dir Christian ganz herzlichen Dank für diesen super Vortrag! Einen herzlichen Applaus noch mal! Applaus Abspannmusik Untertitel erstellt von c3subtitles.de im Jahr 2019. Mach mit und hilf uns!