Fri, 26 Dec 2025 00:00:00 +0100
buecher, c, ddr, programmieren, rezension

Computer in der DDR

Dieses Jahr zu Weihnachten schickte mir ein Freund das Buch Von Robotron bis Poly-Play von René Meyer. Da meine ersten Kontakte mit Computern in die 1970er Jahre in der DDR fielen, fesselte es mich sofort und Heiligabend dauerte bei mir bis etwa 3:30 Uhr. Scheinbar hatte auch mein ehemaliger Mathematikdozent an der TH Leipzig, der später Professor im Bereich Informatik war und inzwischen emeritiert ist, Anteil am Entstehen des Buches, wie ich der Danksagung (S.8) entnehmen konnte.

Meine erste Begegnung mit Computern in den 1970er Jahren hatte ich bei einem Matheförderkurs während der Ferien im Landmaschinenbau Halberstadt. Das Programm wurde von einem Lochband eingelesen, für die Ein- und Ausgabe diente ein Fernschreiber. Für uns wurde eine Variante des Nim-Spiels geladen, ich hatte keine Chance, weil ich das Spiel nicht kannte. Im Förderkurs des Folgejahres hatte ich mich ausgiebig vorbereitet, eine Strategie und entsprechende Startzahlen gewählt, so dass diesmal der Computer keine Chance hatte.

Damit war mein Interesse an Computern geweckt, aber lange Zeit bestand für mich keine Aussicht, häufiger an welcher heranzukommen. Weil ich auch an Elektronik interessiert war, hatte ich Bauelemente für eines der Computerprojekte gesammelt, die im Buch beschrieben sind, aber nie alles zusammenbekommen. Auch wären meine selbstgefertigten Platinen aus dieser Zeit sicher nicht geeignet gewesen.

In der Lehre zum Facharbeiter für Nachrichtentechnik von 1979-1981 kamen Computer nicht vor, allerdings lernten wir ähnliche Relais zu bestücken und justieren, wie sie seinerzeit Konrad Zuse in den Z3 und Z4 Rechnern verwendete. Das erfuhr ich aber erst viel später, als ich einen Nachbau im Museum für Kommunikation Berlin sah.

Erst 1985, mit Beginn des Ingenieurstudiums an der TH Leipzig, kam ich häufiger und gegen Ende des Studiums ständig mit Computern zusammmen. Dabei hatte ich mir zunächst ein Buch mit Logarithmentafeln gekauft, weil ein geeigneter Taschenrechner, wie zum Beispiel der MR 609 (S.80ff), zwar seit Mai 1985 an Schüler der siebenten Klasse verkauft wurde, aber noch nicht frei im Handel verfügbar war. Etwas später erwarb ich für viel Geld im An- und Verkauf einen ZX80 - um wenigstens etwas mit Computern zu machen. Über einen Westkontakt meiner Mutter kam ich dann auch an einen für das Ingenieurstudium geeigneten Taschenrechner. Etwa ab 1986/1987 hatten wir im Rechnerkabinett Gelegenheit mit PC 1715 (S.186) unsere im Informatikunterricht erworbenen theoretischen Pascalkenntnisse mit Turbo-Pascal praktisch auszuprobieren.

Später kam ich als Hilfsassistent an der Sektion Naturwissenschaften an einen Schneider PC 1512, den wir unter anderem als Entwicklungsrechner für Arbeiten mit U881-Prozessoren verwendeten.

U881 - U886 waren Varianten eines Nachbaus des Zilog Z8 Prozessors. Der U883 wurde beispielsweise beim Jugend+Technik Selbstbauprojekt verwendet. Außerdem waren Prozessoren dieser Reihe in seriellen Computerterminals, in Tankstellenzapfsäulen und in unserer 1988 gekauften Waschmaschine verbaut, die uns bis weit nach 2000 gute Dienste leistete.

Es gab für diese Prozessorreihe einen Emulator, ein Gerät mit zwei dieser Prozessoren, von denen einer über Adapterkabel direkt mit selbst entwickelten Schaltungen verbunden werden konnte, während der zweite den ersten steuerte und ihm das Programm zur Verfügung stellte. Ich hatte selbst einige dieser Emulatoren während des Studiums bestückt und zusammengelötet, einer davon wurde dann Teil unserer Entwicklungsumgebung.

Es gab allerdings noch ein paar Probleme zu lösen, bis wir damit am Schneider PC selbst entwickelte Programme ausprobieren konnten.

So war ursprünglich vorgesehen, dass der Emulator an einem P8000 Rechner (S.187) zwischen Hauptrechner und seriellem Terminal angeschlossen wurde. Dafür hatte der Emulator zwei serielle Schnittstellen und verschiedene Betriebsmodi. Unser Schneider PC hatte jedoch nur eine serielle Schnittstelle.

Mit meiner Kenntnis der Hardware und später auch der Software - ich bekam einen etwa daumendicken Ausdruck des Steuerprogramms vom Emulator auf Endlospapier - konnte ich mit ein paar Dioden und Widerständen zunächst mit den zwei seriellen Schnittstellen des Emulators über die eine Schnittstelle des Schneider PCs kommunizieren. Ein Turbo-Pascal-Programm, dass die verschiedenen Betriebsmodi des Emulators berücksichtigte, erlaubte uns dann sowohl den Emulator über die eine Schnittstelle interaktiv zu bedienen, als auch Programme über seine andere Schnittstelle bereitzustellen.

Nun brauchten wir nur noch etwas um unsere eigenen Programme zu schreiben.

Inzwischen hatte ich nach Turbo Pascal auch Turbo C für den Schneider PC bekommen.

Und dann half mir, wie auch Harald Nitsche die Deutsche Bücherei (S.140), die ebenso wie die Deutsche Bibliothek in Frankfurt/M. sämtliche deutschsprachige Literatur sammelte. Dort fand ich nicht nur die c't - die ich übrigens noch heute lese - sondern auch jede Menge technische Bücher, darunter eines, dass den Selbstbau eines Assemblers und Linkers für den Prozessor 6502 in C beschrieb.

Das Buch Einchipmikrorechner von Heiko Kieser und Mario Bankel, welches ich mir damals gekauft hatte, beschreibt unter anderem auch den vollständigen Befehlssatz der U881-Prozessorfamile.

Mit diesen drei Zutaten gelang es mir, einen Assembler für den Prozessor zu schreiben, und unsere Software-Entwicklungsumgebung war komplett.

Für ein Projekt mit Tankstellenzapfsäulen, die einen Prozessor der U881-Familie enthielten, schrieb ich Anfang der 90er Jahre einen Reassembler, der mir erlaubte, den ausgelesenen ROM-Code der Zapfsäule in ein Assemblerprogramm zu übersetzen und dieses dann für die Kommunikation mit der Zapfsäule zu analysieren.

Später erzählte mir jemand, nachdem er erfahren hatte, dass der Assembler von mir war, dass dieser einen "unerklärlichen" Fehler hatte. Immer wenn der Hexcode 0x10 ausgegeben wurde, fügte das Programm davor 0x13 ein. Aus dem Programmcode konnten sie nicht zu erkennen, woran das lag. Natürlich war ich erfreut, dass mein Programm auch andere nützlich fanden.

Der Fehler war subtil und lag an einer Eigenheit der fopen() Funktion von C-Programmen. Unter UNIX, der Umgebung in der die Programmiersprache C entstand, bestanden die Zeilenendezeichen von Textdateien aus dem Code 0x10. Bei MS-DOS sind es zwei Zeichen: 0x13 gefolgt 0x10. Damit man sich beim Schreiben eines Programmes keine Gedanken machen muss, für welches der Systeme es übersetzt wird, fügt die Standardbibliothek der Laufzeitumgebung automatisch das richtige Zeilenendezeichen ein, wenn man das Zeichen für NL (0x10) ausgibt. Und das ist bei MS-DOS die Folge 0x13 0x10. Um dieses Verhalten abzustellen, muss man bei fopen() die Option "wb" (binary) statt nur "w" angeben. Das fiel mir noch während des Gesprächs ein und beim nächsten Treffen übergab ich das korrigierte Programm.

1990 nahm ich dann ebenfalls das Angebot der Firma Borland (S.259) an, und lizensierte Turbo C kostenlos. Später erwarb ich noch einige Updates, so dass es sich auch für diese Firma lohnte.

Weil aber lange Zeit keine 32-bit Version von Borland C/C++ kam und ich überdies von MS-DOS auf Linux wechselte, stieg ich im Laufe der 1990er Jahre auf GNU CC um. Aber das ist eine andere Geschichte.

Eine richtige Rezension ist das nun nicht geworden, eher eine Ergänzung um meine eigenen Erfahrungen. Das Buch hat ein wenig vom Charme der alten DDR-Computerliteratur, wer sich einen ersten Überblick über den Stand der Informatik bilden möchte oder einfach nur die Erinnerung an die alten Zeiten auffrischen will findet sicher gefallen daran.