Der BCS-3 ist ein kleiner Einplatinencomputer für TV-Anschluss, entwickelt 1984 von Dipl.-Math. Eckhard Schiller. Er wurde in der DDR-Technikzeitschrift "Radio Fernsehen Elektronik" (rfe) vorgestellt, und in weiteren Artikeln wurden Anpassungen und Ergänzungen veröffentlicht. Mehr dazu findet sich auch auf der Homepage von VolkerP.
Etliche Bastler haben diesen Computer nachgebaut (und teils weiterentwickelt), so auch ich:
Ansicht mit erster Tastatur |
Platine Oberseite |
Platine Unterseite (Drahtverhau!) |
Neue Tastatur mit eigenem Controller |
Ich wollte mir auch Ende der 80er einen BCS-3 bauen, aber scheiterte damals an der Nicht-Beschaffbarkeit der wichtigsten Teile. Ich hatte mich schon sehr viel mit dem Artikel in der rfe beschäftigt, ich hätte den Schaltplan aus dem Gedächtnis komplett aufzeichen können :-) Später waren dann andere (tatsächlich erhältliche) Computer für mich wichtiger (Commodore VC-20, XT/AT etc.) und ich hatte den Selbstbau verworfen. Aber dann bin ich vor einigen Monaten wieder über den Artikel gestolpert - und wollte es mit den heutzutage erhältlichen Bauteilen doch noch mal probieren. Ich habe also auf einer Euroformat-Lochrasterkarte (160 mm * 100 mm) tatsächlich einen BCS-3 aufgebaut, so nahe wie möglich am Original. Also einen "Drahtverhau-Computer"!
Ich musste/wollte allerdings ein paar Anpassungen vornehmen, teils wegen Nichtbeschaffbarkeit :
Weil die erste Tastatur aus einzelnen Tastern mit rundem Tastenkopf sehr wenig ergonomisch und laut ist, und wie das Original ein sehr unübliches Layout aufweist
(alle Zeichen außer Buchstaben und Zahlen sind nur per Umschalttaste erreichbar), habe ich nun eine bessere angebunden.
Dazu habe ich mich an dem Nachbau von HeikoS
orientiert und den BCS-3 so umgerüstet, dass er parallele 7 bzw. 8 Bit einliest (statt wie im Original von Eckhard Schiller selbst eine Matrix aus 10*4 Tasten abzufragen).
Ich hatte allerdings noch eine recht kleine, passive Notebook-Tastatur mit ca. 80 Tasten und britischem Layout liegen, die ich hierfür als passend erachtete (Umlaute und viele Sonderzeichen und -funktionen würden ohnehin nicht funktionieren). Daher wollte ich diese statt einer PS/2-Tastatur mit über 100 Tasten verwenden. Als Tastaturcontroller kommt ein ATMEGA 328 zum Einsatz, nachdem zuerst ein Arduino UNO3 als Prototyp zur Entwicklung zum Einsatz kam. Die Spalten der Matrix werden über einen Dekoder (binär zu 1-aus-16) angesteuert, und die Zeilen der Matrix werden über 8 Portpins ausgelesen. Die Ausgabe des Zeichens geschieht direkt als ASCII-Code auf dem Port B des Controllers, wobei auch PB6 und PB7 verfügbar sind (interner Oszillator genutzt).
Im Arduino-Sketch BCS3_keyb80.ino ist zu sehen, wie die Abfrage der Matrix, Umwandlung in ein Zeichen per Belegungsmatrix und die parallele Ausgabe erfolgt. Eine Anpassung an eigene Tastaturlayouts kann durch Änderung der zwei Matrixinhalte (mit bzw. ohne Umschaltung) erfolgen. Auch die Festlegung, welche Pins am Controller zur Ein- und Ausgabe verwendet werden, lassen sich anpassen.
Oben sieht man das Bild der Tastatur mit dem Controller, hier noch auf Breadboard und mit USB-Seriell-Adapter zur Programmierung des Controllers per Arduino-IDE. Somit hat der BCS-3 jetzt mehr Rechenleistung im Tastaturcontroller als im Hauptprozessor :-)
VolkerP hat auf seiner Homepage auch die vorhandene Software zum BCS-3 aufgeführt;
manche Versionen der Betriebssoftware BASIC-SE bzw. S/P-Basic wie die letzten sind auch oim Quelltext verfügbar. Da mich auch die früheren Versionen interessierten,
habe ich diese mit Hilfe des Disassemblers dZ80 aus den vorhandenen Binärdateien für SE 3.1 und 3.2 sowie durch Vergleiche mit dem Assembler-Quelltext
für SE 3.3 rekonstruiert.
Diese kann man hier einsehen:
SE 3.1 mit 29 Zeichen pro Zeile
SE 3.1 mit 40 Zeichen pro Zeile
SE 3.2 mit 29 Zeichen pro Zeile
Für SE 3.3 mit 29 Zeichen pro Zeile habe ich eine Variante mit Parallel-Tastaturanschluss gebaut:
SE 3.3 29, Parallel
Für SE 3.1 existiert auch ein Monitorprogramm namens MC-Edit (siehe Artikel "Ergänzungen für BASIC-Heimcomputer BCS-3" aus rfe 1/1989), das jedoch nur als Binärfile verfügbar ist. Davon habe ich auch ein (größtenteils kommentiertes)
Disassemblat angefertigt, auch wenn darin noch nicht alle Unterroutinen klar sind. Der Quelltext dafür assembliert auch wieder identisch zum Original.
MC-Edit für SE 3.1
Diesen gibt es auch angepasst für BASIC-SE 3.3:
MC-Edit für SE 3.3
Als Assembler habe ich den ZASM genutzt, weil dieser auch für andere BS als Windows verfügbar ist. Um den Arnold-Assembler zu nutzen, sind im Quelltext nur kleine Änderungen zu Beginn der Dateien nötig: