Zwei mal drei macht vier …
… und drei macht neun!
So war zu mindestens das Ergebnis der Rechnung wenn man Pippi Langstrumpf Glauben schenkte.
Dass andere, allen voran ein CoProzessor (FPU), eventuell auf ein anderes Ergebnis kommen, ist hier nur eine unwichtige Randnotiz.
Aber ich finde ja, dass 8 Bit völlig genügen, um Chaos im Leben anzurichten oder auch ein wenig Ordnung rein zu bringen. Kommt immer drauf an auf welcher Seite man sich gerade befindet….
Aber eines hat diese solide und erfahrende Technik ja immer: Rechenoperationen sind schon eine kleine Herausforderung. Zumal man von der heutigen Technologie schon ein wenig verwöhnt ist. Denn gerade in der Zahlenwelt hört die Welt nach 8 Bit nicht einfach auf zu existieren.
Aber da war doch mal was mit Co-Prozessoren für die 8086/8088-Welt die man (für damals sauviel Geld) nachrüsten konnte. Die eine oder andere Software setzte auch einen solchen Prozessor voraus, allen voran AutoCAD. Aber auch da gab es bereits Softwarelösung mit dem 8087-Emulator wenn man sich keinen Co-Prozessor leisten konnte.
In einem alten Siemens Schaltungsbuch bin ich dann beim Schmökern auf einen SAB 8231 gestoßen. Nach ein paar weiteren Recherchen, vor allem im S100-Umfeld (CompuPro) und auch einer Apple II-Erweiterungskarte, fand ich ein paar Schaltungsideen und Anregungen, woraus dann eine fragwürdige Idee entstand: würde sowas auch für den MFA funktionieren?
Denn bei Rechenoperationen ist das MAT als auch das SP1-Basic bzw. dessen Tiny-Basic-Unterbau, auf reine 16 Bit Integer beschränkt. Routinen für Fließkommazahlen gibt es für verschiedene 8-Bit-Prozessoren zwar auch, doch viele diese Bibliotheken sind schon tief in der Ecke „aufwändig“ verwurzelt.
OK, Idee ist im Kopf platziert, dann kann es ja mal los gehen … ein paar Tage immer wieder mal drüber nachdenken, den einen oder anderen Schaltplan überfliegen und weiter an der Idee brüten. Doch ein Problem bleibt: erst mal einen 8231 bekommen, denn die klassischen Dealer haben das Zeug nicht mehr im Portfolio. Bleibt also nur noch Ebay. Uhps, nicht so richtig günstig, aber was soll’s, der Spaß ist es wert.
Nach ein paar Wochen lag nun dieser unscheinbare Chip aus den USA auf dem Tisch und die eine oder andere Doku daneben.
Das ganze erst mal dekorativ auf das Breadboard genagelt und mit einer Hand voll Drahtbrücken zu einem kleinen Chaoskunstwerk verfeinert.
Nachdem nun dieser Kabelverhau vollendet war, noch einmal drüber schauen, um eventuelle Fehler auszuschließen. Denn bei diesem Teil wird immerhin mit 5V und 12V gearbeitet. Fehlerhafte Leitungsverbindungen machen sich da echt nicht gut.
Nun noch die Anschlüsse an den MFA legen, und los gehts. Einschalten… es raucht nichts und der MFA verhält sich normal. Auch das Oszilloskop hat keine größeren Einwände bei den einzelnen Signalen, alles so oder so ähnlich wie erwartet.
In der bisher gefunden Doku war nun eine kleine Routine mit Testbefehlen um die Zahl Pi aus diesem kleinen Haufen Silzium im Keramikmantel zu locken:
$1A auf den Steuerport geben und den Datenport auslesen: $02 $C9 $0F $DA.
Wow, das Teil scheint zu funktionieren. Ich hatte aus der Schulzeit Pi zwar etwas anders in Erinnerung, aber das sind doch mittlerweile alles unwichtige Randbereiche… 😉
Gleich die nächste Testroutine ausprobieren: Zwei Werte in den Datenstack geben und die gewünschte Operation ins Steuerregister hinterherwerfen:
Datenstack ausgelesen und wer hätte es gedacht: $30 und $40 macht ziemlich genau $70
Der Prototyp scheint ja offensichtlich (wieder erwarten) zu funktionieren, denn insgeheim habe ich mit einer aufwändigen Fehlersuche gerechnet… Aufgrund des ersten Schaltungsentwurfes ging es nun direkt an die Leiterplatte und noch die eine oder andere Erweiterung des Schaltungsentwurfes. Eine Anzeige der abgeschlossenen Rechenoperation wäre doch auch ganz nett.
Das ist nun aktuell der Stand der Entwicklung:
So sieht aktuell die dazu passende Leiterplatte aus:
Was auch immer zu dieser durchgeknallten Idee führte, sie scheint zu funktionieren und könnte den MFA zu einem unerwarteten Leistungsschub verhelfen. Denn neben den relativ einfach anzuwendenden Rechenoperation im 32Bit Integer- oder Floatpoint-Umfeld des CoProzessors 8231, sehen die bisher gefundenen Unterroutinen und Bibliotheken aus dem 8085-Umfeld doch echt alt (und langsam) aus. Eventuell kann man die FPU-Karte ja auch im CP/M-Umfeld einsetzen, aber meine rudimentäre CP/M-Kenntnisse von damals sind mittlerweile leider völlig veraltet.
Kurzer Schaltungsüberblick:
- Adressselektion auf 7 Bit
- Ready-Leitung mit Germaniumdiode an den MFA-Bus (zur gleichzeitigen Nutzung mit BUS-Signalgeber und Floppy-Baugruppe) – per Lötbrücke deaktivierbar
- LED-Anzeige des Ready-Signals beim Ende einer Rechenoperation
(Anzeige wird beim nächsten Steuerbefehl bzw. Reset gelöscht) - LED-Anzeige bei einem Zugriff auf den FPU (sieht irgendwie wichtiger aus wenn da was blinkt …)
- Interrupt bei Ende einer Rechenoperation, per Jumper einstellbar
- Auswahl des Interrupt-Signalverhaltens (Pulse/Dauerhaft)
- Auswahl des END-Verhaltens (Pulse/Signal)
Zusätzlich ist auf der Platine noch Platz für einen Spannungswandler und separaten Taktgenerator vorgesehen. Dies ermöglicht z.B. den MFA nur mit einer 5V-Spannungsversorgung zu betreiben, denn normalerweise werden die 12-Volt-Pegel nicht immer zwingend benötigt. Denn die nächste durchgeknallte Idee ist schon am entstehen…. 😉